mirror of
https://github.com/revanced/revanced-patches.git
synced 2025-12-08 02:13:55 +01:00
Compare commits
91 Commits
v5.7.2-dev
...
v5.10.0-de
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d5551923fc | ||
|
|
f844a1cd76 | ||
|
|
a7e3277cc1 | ||
|
|
6fa2deea69 | ||
|
|
dcca2a3697 | ||
|
|
018160fd9c | ||
|
|
680252967e | ||
|
|
e79eba81d9 | ||
|
|
a73db03671 | ||
|
|
055ad04281 | ||
|
|
aaeee4a895 | ||
|
|
654b339f66 | ||
|
|
64cdce28a6 | ||
|
|
d01b9a67c5 | ||
|
|
a72404eeab | ||
|
|
3ff104528e | ||
|
|
76bbd7ed2f | ||
|
|
2fdf0f85c1 | ||
|
|
1d12c4156d | ||
|
|
c43050dce8 | ||
|
|
8104bbd7d7 | ||
|
|
8487888e6b | ||
|
|
6721a284cd | ||
|
|
6cde702854 | ||
|
|
7c8efcaf41 | ||
|
|
350ee02e3b | ||
|
|
df2d070a43 | ||
|
|
8167aaccc8 | ||
|
|
f4989ed0a5 | ||
|
|
8f5a0531bc | ||
|
|
622554de14 | ||
|
|
66e330ffe6 | ||
|
|
2afcd3d63d | ||
|
|
80d7c78cf6 | ||
|
|
d85bcc3c16 | ||
|
|
21368ea696 | ||
|
|
e687d3ed37 | ||
|
|
064b859d39 | ||
|
|
89882ddaf8 | ||
|
|
41881ba161 | ||
|
|
0615990138 | ||
|
|
70532313db | ||
|
|
e5e897de77 | ||
|
|
1e57ce9658 | ||
|
|
fcad0ab5bb | ||
|
|
91471eccf9 | ||
|
|
d559f016c6 | ||
|
|
5a82d26f03 | ||
|
|
e2eae499d9 | ||
|
|
64919d6443 | ||
|
|
c6ffaf86ae | ||
|
|
3ee99b7bf1 | ||
|
|
6f9bf4873f | ||
|
|
29a73089a3 | ||
|
|
74ef1841eb | ||
|
|
0c544d28e3 | ||
|
|
b1e5b99b44 | ||
|
|
7b90baadb5 | ||
|
|
4a6f3c8555 | ||
|
|
e7c6943ca7 | ||
|
|
ae1b987c0d | ||
|
|
9496438da1 | ||
|
|
fa51631ea6 | ||
|
|
8bf7108001 | ||
|
|
030eece04a | ||
|
|
30009b723d | ||
|
|
53b25ea7e9 | ||
|
|
189e1c90c4 | ||
|
|
f01603b3f3 | ||
|
|
3db5651e5c | ||
|
|
f3c4d6fd64 | ||
|
|
29dbc9ffbf | ||
|
|
fa4aa54f0c | ||
|
|
1d89ada07f | ||
|
|
8c529abad5 | ||
|
|
4ade7c7329 | ||
|
|
f35247a872 | ||
|
|
4de768febf | ||
|
|
1a5c86db93 | ||
|
|
dbba795468 | ||
|
|
0a9320551d | ||
|
|
9fac1614e7 | ||
|
|
2de3523c59 | ||
|
|
ad1e40b130 | ||
|
|
094a6aa6de | ||
|
|
a14e03e4bb | ||
|
|
6f40b6d30f | ||
|
|
1711e1c39d | ||
|
|
25372828d1 | ||
|
|
f58245c6cd | ||
|
|
87e1c7f4c8 |
3
.github/workflows/pull_strings.yml
vendored
3
.github/workflows/pull_strings.yml
vendored
@@ -16,8 +16,9 @@ jobs:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
ref: dev
|
||||
fetch-depth: 0
|
||||
clean: true
|
||||
|
||||
- name: Pull strings
|
||||
uses: crowdin/github-action@v2
|
||||
|
||||
259
CHANGELOG.md
259
CHANGELOG.md
@@ -1,3 +1,262 @@
|
||||
# [5.10.0-dev.10](https://github.com/ReVanced/revanced-patches/compare/v5.10.0-dev.9...v5.10.0-dev.10) (2025-01-29)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **YouTube - Hide ads:** Hide new types of tablet ads ([574bcc8](https://github.com/ReVanced/revanced-patches/commit/574bcc844746b7445ec3e93b47daceafefad85e7))
|
||||
|
||||
# [5.10.0-dev.9](https://github.com/ReVanced/revanced-patches/compare/v5.10.0-dev.8...v5.10.0-dev.9) (2025-01-29)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **SwissId - Play integrity Removal:** Add recommended app version ([#4370](https://github.com/ReVanced/revanced-patches/issues/4370)) ([d8ed474](https://github.com/ReVanced/revanced-patches/commit/d8ed474b165f094fdedc32caaae1f82ebc99eb3d))
|
||||
|
||||
# [5.10.0-dev.8](https://github.com/ReVanced/revanced-patches/compare/v5.10.0-dev.7...v5.10.0-dev.8) (2025-01-29)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **YouTube - Spoof video streams:** Update settings side effects summary text ([#4369](https://github.com/ReVanced/revanced-patches/issues/4369)) ([e5b3aa1](https://github.com/ReVanced/revanced-patches/commit/e5b3aa1cc6a2465cb006487d528de888bc7cd430))
|
||||
|
||||
# [5.10.0-dev.7](https://github.com/ReVanced/revanced-patches/compare/v5.10.0-dev.6...v5.10.0-dev.7) (2025-01-29)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **YouTube - Hide ads:** fix 'Hide the Visit store button on channel pages' not working ([#4364](https://github.com/ReVanced/revanced-patches/issues/4364)) ([9d63ea9](https://github.com/ReVanced/revanced-patches/commit/9d63ea9a10ab5128ce18a1f53a946e84550da258))
|
||||
|
||||
# [5.10.0-dev.6](https://github.com/ReVanced/revanced-patches/compare/v5.10.0-dev.5...v5.10.0-dev.6) (2025-01-29)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **YouTube - Hide Ads:** Hide end screen store banner without leaving empty space ([#4367](https://github.com/ReVanced/revanced-patches/issues/4367)) ([7e68390](https://github.com/ReVanced/revanced-patches/commit/7e683906418434dd4e2104337d73a2292415c615))
|
||||
|
||||
# [5.10.0-dev.5](https://github.com/ReVanced/revanced-patches/compare/v5.10.0-dev.4...v5.10.0-dev.5) (2025-01-27)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **YouTube - Hide video description components:** Use correct string key names ([0f28c2b](https://github.com/ReVanced/revanced-patches/commit/0f28c2b44c0051ea7ab3136433b84c73321cf5bd))
|
||||
|
||||
# [5.10.0-dev.4](https://github.com/ReVanced/revanced-patches/compare/v5.10.0-dev.3...v5.10.0-dev.4) (2025-01-27)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **YouTube - Hide video description components:** Add `Hide How this content was made section` ([#4355](https://github.com/ReVanced/revanced-patches/issues/4355)) ([68ec54e](https://github.com/ReVanced/revanced-patches/commit/68ec54ef850ae8d6461dd0ef2846e6efbb59e482))
|
||||
|
||||
# [5.10.0-dev.3](https://github.com/ReVanced/revanced-patches/compare/v5.10.0-dev.2...v5.10.0-dev.3) (2025-01-27)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **YouTube - Hide ads:** Add `Hide end screen store banner` ([#4351](https://github.com/ReVanced/revanced-patches/issues/4351)) ([5505087](https://github.com/ReVanced/revanced-patches/commit/55050878028fed82b0f583a9f7ba06b8f267f8ec))
|
||||
|
||||
# [5.10.0-dev.2](https://github.com/ReVanced/revanced-patches/compare/v5.10.0-dev.1...v5.10.0-dev.2) (2025-01-25)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **YouTube:** Add patch `Disable HDR video` ([#4347](https://github.com/ReVanced/revanced-patches/issues/4347)) ([0528f7c](https://github.com/ReVanced/revanced-patches/commit/0528f7cad856a2b1347e41944167b0583fc4a3d9))
|
||||
|
||||
# [5.10.0-dev.1](https://github.com/ReVanced/revanced-patches/compare/v5.9.1-dev.4...v5.10.0-dev.1) (2025-01-23)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **YouTube - Theme:** Add option to use custom seekbar accent color ([#4337](https://github.com/ReVanced/revanced-patches/issues/4337)) ([952b4fc](https://github.com/ReVanced/revanced-patches/commit/952b4fc4c9291e1a3e71437b503857763c973dd4))
|
||||
|
||||
## [5.9.1-dev.4](https://github.com/ReVanced/revanced-patches/compare/v5.9.1-dev.3...v5.9.1-dev.4) (2025-01-22)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **YouTube - Hide layout components:** Hide new kind of community post ([#4341](https://github.com/ReVanced/revanced-patches/issues/4341)) ([02685c4](https://github.com/ReVanced/revanced-patches/commit/02685c4567aca55f22d45dc238a7d1f0ea264143))
|
||||
|
||||
## [5.9.1-dev.3](https://github.com/ReVanced/revanced-patches/compare/v5.9.1-dev.2...v5.9.1-dev.3) (2025-01-22)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **YouTube - Hide seekbar:** Do not hide player seekbar if hide feed seekbar is enabled ([#4333](https://github.com/ReVanced/revanced-patches/issues/4333)) ([f5cf6f2](https://github.com/ReVanced/revanced-patches/commit/f5cf6f2a445492d33815a9772f49deac2d70eba9))
|
||||
|
||||
## [5.9.1-dev.2](https://github.com/ReVanced/revanced-patches/compare/v5.9.1-dev.1...v5.9.1-dev.2) (2025-01-22)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **YouTube - Theme:** Fix 19.25 - 19.45 patch error ([5b47a5f](https://github.com/ReVanced/revanced-patches/commit/5b47a5f0f6299daaae209341064fd85f16ca18a6))
|
||||
|
||||
## [5.9.1-dev.1](https://github.com/ReVanced/revanced-patches/compare/v5.9.0...v5.9.1-dev.1) (2025-01-21)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **YouTube - Theme:** Replace custom seekbar gradient colors instead of disabling ([#4329](https://github.com/ReVanced/revanced-patches/issues/4329)) ([f03da98](https://github.com/ReVanced/revanced-patches/commit/f03da983051021e0c372557a5354d5d967409564))
|
||||
|
||||
# [5.9.0](https://github.com/ReVanced/revanced-patches/compare/v5.8.1...v5.9.0) (2025-01-20)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **YouTube - Spoof video streams:** Resolve playback issues after changing from cellular to wifi ([#4277](https://github.com/ReVanced/revanced-patches/issues/4277)) ([e93e1c8](https://github.com/ReVanced/revanced-patches/commit/e93e1c8ec3367e941034e9c4e3725ec1db429a60))
|
||||
* **YouTube - Spoof video streams:** Update client user-agent ([#4304](https://github.com/ReVanced/revanced-patches/issues/4304)) ([7917871](https://github.com/ReVanced/revanced-patches/commit/7917871f510b6b805370ef98a0cf8a4e2df0e900))
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **YouTube - Hide feed components:** Handle new type of surveys ([#4295](https://github.com/ReVanced/revanced-patches/issues/4295)) ([c770e03](https://github.com/ReVanced/revanced-patches/commit/c770e03f3801367cb531af860fbdfa43dca89af0))
|
||||
* **YouTube - Playback speed:** Add option to change 2x tap and hold speed ([#4307](https://github.com/ReVanced/revanced-patches/issues/4307)) ([02fb26e](https://github.com/ReVanced/revanced-patches/commit/02fb26e9458fb8635d497e6e78f964055244d738))
|
||||
* **YouTube - Settings:** Add option to use new Cairo settings menus ([#4305](https://github.com/ReVanced/revanced-patches/issues/4305)) ([7b8a2a2](https://github.com/ReVanced/revanced-patches/commit/7b8a2a2721ab5351f8c0251401aceddf0c5327df))
|
||||
|
||||
# [5.9.0-dev.4](https://github.com/ReVanced/revanced-patches/compare/v5.9.0-dev.3...v5.9.0-dev.4) (2025-01-20)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **YouTube - Spoof video streams:** Update client user-agent ([#4304](https://github.com/ReVanced/revanced-patches/issues/4304)) ([7917871](https://github.com/ReVanced/revanced-patches/commit/7917871f510b6b805370ef98a0cf8a4e2df0e900))
|
||||
|
||||
# [5.9.0-dev.3](https://github.com/ReVanced/revanced-patches/compare/v5.9.0-dev.2...v5.9.0-dev.3) (2025-01-19)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **YouTube - Settings:** Add option to use new Cairo settings menus ([#4305](https://github.com/ReVanced/revanced-patches/issues/4305)) ([7b8a2a2](https://github.com/ReVanced/revanced-patches/commit/7b8a2a2721ab5351f8c0251401aceddf0c5327df))
|
||||
|
||||
# [5.9.0-dev.2](https://github.com/ReVanced/revanced-patches/compare/v5.9.0-dev.1...v5.9.0-dev.2) (2025-01-18)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **YouTube - Playback speed:** Add option to change 2x tap and hold speed ([#4307](https://github.com/ReVanced/revanced-patches/issues/4307)) ([02fb26e](https://github.com/ReVanced/revanced-patches/commit/02fb26e9458fb8635d497e6e78f964055244d738))
|
||||
|
||||
# [5.9.0-dev.1](https://github.com/ReVanced/revanced-patches/compare/v5.8.2-dev.1...v5.9.0-dev.1) (2025-01-17)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **YouTube - Hide feed components:** Handle new type of surveys ([#4295](https://github.com/ReVanced/revanced-patches/issues/4295)) ([c770e03](https://github.com/ReVanced/revanced-patches/commit/c770e03f3801367cb531af860fbdfa43dca89af0))
|
||||
|
||||
## [5.8.2-dev.1](https://github.com/ReVanced/revanced-patches/compare/v5.8.1...v5.8.2-dev.1) (2025-01-09)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **YouTube - Spoof video streams:** Resolve playback issues after changing from cellular to wifi ([#4277](https://github.com/ReVanced/revanced-patches/issues/4277)) ([e93e1c8](https://github.com/ReVanced/revanced-patches/commit/e93e1c8ec3367e941034e9c4e3725ec1db429a60))
|
||||
|
||||
## [5.8.1](https://github.com/ReVanced/revanced-patches/compare/v5.8.0...v5.8.1) (2025-01-07)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **YouTube - Spoof video streams:** Add 'Android Creator' ([#4262](https://github.com/ReVanced/revanced-patches/issues/4262)) ([0479dd2](https://github.com/ReVanced/revanced-patches/commit/0479dd265e09b0accdf6ff6b00c8e938dc5b96c7))
|
||||
|
||||
## [5.8.1-dev.1](https://github.com/ReVanced/revanced-patches/compare/v5.8.0...v5.8.1-dev.1) (2025-01-06)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **YouTube - Spoof video streams:** Add 'Android Creator' ([#4262](https://github.com/ReVanced/revanced-patches/issues/4262)) ([0479dd2](https://github.com/ReVanced/revanced-patches/commit/0479dd265e09b0accdf6ff6b00c8e938dc5b96c7))
|
||||
|
||||
# [5.8.0](https://github.com/ReVanced/revanced-patches/compare/v5.7.2...v5.8.0) (2024-12-30)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **GmsCore support:** Do not show battery optimization error on Android Automotive devices (Google built-in) ([#4218](https://github.com/ReVanced/revanced-patches/issues/4218)) ([d6e389c](https://github.com/ReVanced/revanced-patches/commit/d6e389cc43bc40724f032b230f70048276349a19))
|
||||
* **YouTube - Exit fullscreen mode:** Exit fullscreen mode of first video opened after cold start ([be5cf2e](https://github.com/ReVanced/revanced-patches/commit/be5cf2e834d87d51b5d3061d46bd7154d6306787))
|
||||
* **YouTube - Force original audio:** If stream spoofing to Android then show a summary text why force audio is not available ([#4220](https://github.com/ReVanced/revanced-patches/issues/4220)) ([029aee8](https://github.com/ReVanced/revanced-patches/commit/029aee8023f096413fc80a2c583b4fe55ecb10ac))
|
||||
* **YouTube - Spoof video streams:** Ignore harmless error toast if hide ads is disabled ([c3423bb](https://github.com/ReVanced/revanced-patches/commit/c3423bb9e531cfa52f6d28e0b98bbe8ab8684c30))
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **Swipe controls:** Add option to enable/disable fullscreen swipe to next video ([#4222](https://github.com/ReVanced/revanced-patches/issues/4222)) ([119092f](https://github.com/ReVanced/revanced-patches/commit/119092fafa4129849246df15fe8076ed3b491b85))
|
||||
* **YouTube - Hide Shorts components:** Add option to hide Shorts in watch history ([#4214](https://github.com/ReVanced/revanced-patches/issues/4214)) ([19c2742](https://github.com/ReVanced/revanced-patches/commit/19c2742aa367367c77bb50ddad6f8a20fef8ea0a))
|
||||
* **YouTube - Spoof app version:** Add 'Restore old navigation and toolbar icons' ([f84e459](https://github.com/ReVanced/revanced-patches/commit/f84e459d3d54b3001586796ab4e114ebadf09043))
|
||||
* **YouTube:** Add `Change form factor` patch ([#4217](https://github.com/ReVanced/revanced-patches/issues/4217)) ([644ac5b](https://github.com/ReVanced/revanced-patches/commit/644ac5baa68b209a32300149a2efa009b776f9a7))
|
||||
* **YouTube:** Add `Exit fullscreen mode` patch ([#4223](https://github.com/ReVanced/revanced-patches/issues/4223)) ([bb5d03b](https://github.com/ReVanced/revanced-patches/commit/bb5d03bd89a3f932c77e4e9de90174c374933688))
|
||||
* **YouTube:** Add in app option to select a preferred language for ReVanced specific text ([#4231](https://github.com/ReVanced/revanced-patches/issues/4231)) ([3932af3](https://github.com/ReVanced/revanced-patches/commit/3932af397ae89a0b30191cd870bd6cddb7a078db))
|
||||
|
||||
# [5.8.0-dev.8](https://github.com/ReVanced/revanced-patches/compare/v5.8.0-dev.7...v5.8.0-dev.8) (2024-12-28)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **YouTube:** Add in app option to select a preferred language for ReVanced specific text ([#4231](https://github.com/ReVanced/revanced-patches/issues/4231)) ([3932af3](https://github.com/ReVanced/revanced-patches/commit/3932af397ae89a0b30191cd870bd6cddb7a078db))
|
||||
|
||||
# [5.8.0-dev.7](https://github.com/ReVanced/revanced-patches/compare/v5.8.0-dev.6...v5.8.0-dev.7) (2024-12-27)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **YouTube - Spoof video streams:** Ignore harmless error toast if hide ads is disabled ([c3423bb](https://github.com/ReVanced/revanced-patches/commit/c3423bb9e531cfa52f6d28e0b98bbe8ab8684c30))
|
||||
|
||||
# [5.8.0-dev.6](https://github.com/ReVanced/revanced-patches/compare/v5.8.0-dev.5...v5.8.0-dev.6) (2024-12-27)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **YouTube - Exit fullscreen mode:** Exit fullscreen mode of first video opened after cold start ([be5cf2e](https://github.com/ReVanced/revanced-patches/commit/be5cf2e834d87d51b5d3061d46bd7154d6306787))
|
||||
|
||||
# [5.8.0-dev.5](https://github.com/ReVanced/revanced-patches/compare/v5.8.0-dev.4...v5.8.0-dev.5) (2024-12-27)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **YouTube:** Add `Change form factor` patch ([#4217](https://github.com/ReVanced/revanced-patches/issues/4217)) ([644ac5b](https://github.com/ReVanced/revanced-patches/commit/644ac5baa68b209a32300149a2efa009b776f9a7))
|
||||
|
||||
# [5.8.0-dev.4](https://github.com/ReVanced/revanced-patches/compare/v5.8.0-dev.3...v5.8.0-dev.4) (2024-12-27)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **GmsCore support:** Do not show battery optimization error on Android Automotive devices (Google built-in) ([#4218](https://github.com/ReVanced/revanced-patches/issues/4218)) ([d6e389c](https://github.com/ReVanced/revanced-patches/commit/d6e389cc43bc40724f032b230f70048276349a19))
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **Swipe controls:** Add option to enable/disable fullscreen swipe to next video ([#4222](https://github.com/ReVanced/revanced-patches/issues/4222)) ([119092f](https://github.com/ReVanced/revanced-patches/commit/119092fafa4129849246df15fe8076ed3b491b85))
|
||||
* **YouTube:** Add `Exit fullscreen mode` patch ([#4223](https://github.com/ReVanced/revanced-patches/issues/4223)) ([bb5d03b](https://github.com/ReVanced/revanced-patches/commit/bb5d03bd89a3f932c77e4e9de90174c374933688))
|
||||
|
||||
# [5.8.0-dev.3](https://github.com/ReVanced/revanced-patches/compare/v5.8.0-dev.2...v5.8.0-dev.3) (2024-12-26)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **YouTube - Force original audio:** If stream spoofing to Android then show a summary text why force audio is not available ([#4220](https://github.com/ReVanced/revanced-patches/issues/4220)) ([029aee8](https://github.com/ReVanced/revanced-patches/commit/029aee8023f096413fc80a2c583b4fe55ecb10ac))
|
||||
|
||||
# [5.8.0-dev.2](https://github.com/ReVanced/revanced-patches/compare/v5.8.0-dev.1...v5.8.0-dev.2) (2024-12-24)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **YouTube - Spoof app version:** Add 'Restore old navigation and toolbar icons' ([f84e459](https://github.com/ReVanced/revanced-patches/commit/f84e459d3d54b3001586796ab4e114ebadf09043))
|
||||
|
||||
# [5.8.0-dev.1](https://github.com/ReVanced/revanced-patches/compare/v5.7.2...v5.8.0-dev.1) (2024-12-24)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **YouTube - Hide Shorts components:** Add option to hide Shorts in watch history ([#4214](https://github.com/ReVanced/revanced-patches/issues/4214)) ([19c2742](https://github.com/ReVanced/revanced-patches/commit/19c2742aa367367c77bb50ddad6f8a20fef8ea0a))
|
||||
|
||||
## [5.7.2](https://github.com/ReVanced/revanced-patches/compare/v5.7.1...v5.7.2) (2024-12-24)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **YouTube - Hide layout components:** Don't hide Shorts channel bar when toggling for video player ([9af6412](https://github.com/ReVanced/revanced-patches/commit/9af6412d92ec31e612eaabba6578453da0fc61d6))
|
||||
* **YouTube - Spoof video streams:** Add iOS TV client, restore iOS 'force AVC', show client type in stats for nerds ([#4202](https://github.com/ReVanced/revanced-patches/issues/4202)) ([ab29f80](https://github.com/ReVanced/revanced-patches/commit/ab29f808a9f55b5ab0055533c1a6de549b0631a6))
|
||||
|
||||
## [5.7.2-dev.2](https://github.com/ReVanced/revanced-patches/compare/v5.7.2-dev.1...v5.7.2-dev.2) (2024-12-23)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **YouTube - Hide layout components:** Don't hide Shorts channel bar when toggling for video player ([9af6412](https://github.com/ReVanced/revanced-patches/commit/9af6412d92ec31e612eaabba6578453da0fc61d6))
|
||||
|
||||
## [5.7.2-dev.1](https://github.com/ReVanced/revanced-patches/compare/v5.7.1...v5.7.2-dev.1) (2024-12-23)
|
||||
|
||||
|
||||
|
||||
@@ -106,7 +106,11 @@ public class GmsCoreSupport {
|
||||
}
|
||||
|
||||
// Check if GmsCore is whitelisted from battery optimizations.
|
||||
if (batteryOptimizationsEnabled(context)) {
|
||||
if (isAndroidAutomotive(context)) {
|
||||
// Ignore Android Automotive devices (Google built-in),
|
||||
// as there is no way to disable battery optimizations.
|
||||
Logger.printDebug(() -> "Device is Android Automotive");
|
||||
} else if (batteryOptimizationsEnabled(context)) {
|
||||
Logger.printInfo(() -> "GmsCore is not whitelisted from battery optimizations");
|
||||
|
||||
showBatteryOptimizationDialog(context,
|
||||
@@ -147,6 +151,10 @@ public class GmsCoreSupport {
|
||||
return !powerManager.isIgnoringBatteryOptimizations(GMS_CORE_PACKAGE_NAME);
|
||||
}
|
||||
|
||||
private static boolean isAndroidAutomotive(Context context) {
|
||||
return context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_AUTOMOTIVE);
|
||||
}
|
||||
|
||||
private static String getGmsCoreDownload() {
|
||||
final var vendorGroupId = getGmsCoreVendorGroupId();
|
||||
//noinspection SwitchStatementWithTooFewBranches
|
||||
|
||||
@@ -40,13 +40,15 @@ import java.util.concurrent.SynchronousQueue;
|
||||
import java.util.concurrent.ThreadPoolExecutor;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
import app.revanced.extension.shared.settings.AppLanguage;
|
||||
import app.revanced.extension.shared.settings.BaseSettings;
|
||||
import app.revanced.extension.shared.settings.BooleanSetting;
|
||||
import app.revanced.extension.shared.settings.preference.ReVancedAboutPreference;
|
||||
|
||||
public class Utils {
|
||||
|
||||
@SuppressLint("StaticFieldLeak")
|
||||
private static Context context;
|
||||
private static volatile Context context;
|
||||
|
||||
private static String versionName;
|
||||
private static String applicationLabel;
|
||||
@@ -360,7 +362,17 @@ public class Utils {
|
||||
}
|
||||
|
||||
public static void setContext(Context appContext) {
|
||||
// Must initially set context as the language settings needs it.
|
||||
context = appContext;
|
||||
|
||||
AppLanguage language = BaseSettings.REVANCED_LANGUAGE.get();
|
||||
if (language != AppLanguage.DEFAULT) {
|
||||
// Create a new context with the desired language.
|
||||
Configuration config = appContext.getResources().getConfiguration();
|
||||
config.setLocale(language.getLocale());
|
||||
context = appContext.createConfigurationContext(config);
|
||||
}
|
||||
|
||||
// In some apps like TikTok, the Setting classes can load in weird orders due to cyclic class dependencies.
|
||||
// Calling the regular printDebug method here can cause a Settings context null pointer exception,
|
||||
// even though the context is already set before the call.
|
||||
@@ -523,6 +535,11 @@ public class Utils {
|
||||
return currentNightMode == Configuration.UI_MODE_NIGHT_YES;
|
||||
}
|
||||
|
||||
public static boolean isLandscapeOrientation() {
|
||||
final int orientation = context.getResources().getConfiguration().orientation;
|
||||
return orientation == Configuration.ORIENTATION_LANDSCAPE;
|
||||
}
|
||||
|
||||
/**
|
||||
* Automatically logs any exceptions the runnable throws.
|
||||
*
|
||||
@@ -595,7 +612,7 @@ public class Utils {
|
||||
|| networkType == NetworkType.OTHER;
|
||||
}
|
||||
|
||||
@SuppressLint("MissingPermission") // permission already included in YouTube
|
||||
@SuppressLint({"MissingPermission", "deprecation"}) // Permission already included in YouTube.
|
||||
public static NetworkType getNetworkType() {
|
||||
Context networkContext = getContext();
|
||||
if (networkContext == null) {
|
||||
@@ -705,8 +722,8 @@ public class Utils {
|
||||
Preference preference = group.getPreference(i);
|
||||
|
||||
final Sort preferenceSort;
|
||||
if (preference instanceof PreferenceGroup) {
|
||||
sortPreferenceGroups((PreferenceGroup) preference);
|
||||
if (preference instanceof PreferenceGroup subGroup) {
|
||||
sortPreferenceGroups(subGroup);
|
||||
preferenceSort = groupSort; // Sort value for groups is for it's content, not itself.
|
||||
} else {
|
||||
// Allow individual preferences to set a key sorting.
|
||||
@@ -760,8 +777,8 @@ public class Utils {
|
||||
return;
|
||||
}
|
||||
|
||||
String deviceLanguage = Utils.getContext().getResources().getConfiguration().locale.getLanguage();
|
||||
if (deviceLanguage.equals("en")) {
|
||||
String revancedLocale = Utils.getContext().getResources().getConfiguration().locale.getLanguage();
|
||||
if (revancedLocale.equals(Locale.ENGLISH.getLanguage())) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -769,8 +786,8 @@ public class Utils {
|
||||
Preference pref = group.getPreference(i);
|
||||
pref.setSingleLineTitle(false);
|
||||
|
||||
if (pref instanceof PreferenceGroup) {
|
||||
setPreferenceTitlesToMultiLineIfNeeded((PreferenceGroup) pref);
|
||||
if (pref instanceof PreferenceGroup subGroup) {
|
||||
setPreferenceTitlesToMultiLineIfNeeded(subGroup);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
package app.revanced.extension.shared.spoof;
|
||||
package app.revanced.extension.shared.settings;
|
||||
|
||||
import java.util.Locale;
|
||||
|
||||
public enum AudioStreamLanguage {
|
||||
public enum AppLanguage {
|
||||
/**
|
||||
* The current app language.
|
||||
*/
|
||||
@@ -34,7 +34,7 @@ public enum AudioStreamLanguage {
|
||||
GL,
|
||||
GU,
|
||||
HI,
|
||||
HE, // App uses obsolete 'IW' and 'HE' is modern ISO code.
|
||||
HE, // App uses obsolete 'IW' and not the modern 'HE' ISO code.
|
||||
HR,
|
||||
HU,
|
||||
HY,
|
||||
@@ -87,7 +87,7 @@ public enum AudioStreamLanguage {
|
||||
|
||||
private final String language;
|
||||
|
||||
AudioStreamLanguage() {
|
||||
AppLanguage() {
|
||||
language = name().toLowerCase(Locale.US);
|
||||
}
|
||||
|
||||
@@ -103,4 +103,12 @@ public enum AudioStreamLanguage {
|
||||
|
||||
return language;
|
||||
}
|
||||
|
||||
public Locale getLocale() {
|
||||
if (this == DEFAULT) {
|
||||
return Locale.getDefault();
|
||||
}
|
||||
|
||||
return Locale.forLanguageTag(language);
|
||||
}
|
||||
}
|
||||
@@ -6,7 +6,6 @@ import static app.revanced.extension.shared.settings.Setting.parent;
|
||||
import static app.revanced.extension.shared.spoof.SpoofVideoStreamsPatch.AudioStreamLanguageOverrideAvailability;
|
||||
import static app.revanced.extension.shared.spoof.SpoofVideoStreamsPatch.SpoofiOSAvailability;
|
||||
|
||||
import app.revanced.extension.shared.spoof.AudioStreamLanguage;
|
||||
import app.revanced.extension.shared.spoof.ClientType;
|
||||
|
||||
/**
|
||||
@@ -22,9 +21,11 @@ public class BaseSettings {
|
||||
|
||||
public static final IntegerSetting CHECK_ENVIRONMENT_WARNINGS_ISSUED = new IntegerSetting("revanced_check_environment_warnings_issued", 0, true, false);
|
||||
|
||||
public static final EnumSetting<AppLanguage> REVANCED_LANGUAGE = new EnumSetting<>("revanced_language", AppLanguage.DEFAULT, true, "revanced_language_user_dialog_message");
|
||||
|
||||
public static final BooleanSetting SPOOF_VIDEO_STREAMS = new BooleanSetting("revanced_spoof_video_streams", TRUE, true, "revanced_spoof_video_streams_user_dialog_message");
|
||||
public static final EnumSetting<AudioStreamLanguage> SPOOF_VIDEO_STREAMS_LANGUAGE = new EnumSetting<>("revanced_spoof_video_streams_language", AudioStreamLanguage.DEFAULT, new AudioStreamLanguageOverrideAvailability());
|
||||
public static final BooleanSetting SPOOF_STREAMING_DATA_STATS_FOR_NERDS = new BooleanSetting("revanced_spoof_streaming_data_stats_for_nerds", TRUE);
|
||||
public static final EnumSetting<AppLanguage> SPOOF_VIDEO_STREAMS_LANGUAGE = new EnumSetting<>("revanced_spoof_video_streams_language", AppLanguage.DEFAULT, new AudioStreamLanguageOverrideAvailability());
|
||||
public static final BooleanSetting SPOOF_STREAMING_DATA_STATS_FOR_NERDS = new BooleanSetting("revanced_spoof_streaming_data_stats_for_nerds", TRUE, parent(SPOOF_VIDEO_STREAMS));
|
||||
public static final BooleanSetting SPOOF_VIDEO_STREAMS_IOS_FORCE_AVC = new BooleanSetting("revanced_spoof_video_streams_ios_force_avc", FALSE, true,
|
||||
"revanced_spoof_video_streams_ios_force_avc_user_dialog_message", new SpoofiOSAvailability());
|
||||
// Client type must be last spoof setting due to cyclic references.
|
||||
|
||||
@@ -153,7 +153,6 @@ public abstract class Setting<T> {
|
||||
|
||||
/**
|
||||
* Confirmation message to display, if the user tries to change the setting from the default value.
|
||||
* Currently this works only for Boolean setting types.
|
||||
*/
|
||||
@Nullable
|
||||
public final StringRef userDialogMessage;
|
||||
@@ -244,6 +243,7 @@ public abstract class Setting<T> {
|
||||
*
|
||||
* This method will be deleted in the future.
|
||||
*/
|
||||
@SuppressWarnings("rawtypes")
|
||||
public static void migrateFromOldPreferences(@NonNull SharedPrefCategory oldPrefs, @NonNull Setting setting, String settingKey) {
|
||||
if (!oldPrefs.preferences.contains(settingKey)) {
|
||||
return; // Nothing to do.
|
||||
@@ -419,6 +419,7 @@ public abstract class Setting<T> {
|
||||
|
||||
boolean rebootSettingChanged = false;
|
||||
int numberOfSettingsImported = 0;
|
||||
//noinspection rawtypes
|
||||
for (Setting setting : SETTINGS) {
|
||||
String key = setting.getImportExportKey();
|
||||
if (json.has(key)) {
|
||||
|
||||
@@ -42,7 +42,7 @@ public abstract class AbstractPreferenceFragment extends PreferenceFragment {
|
||||
|
||||
private final SharedPreferences.OnSharedPreferenceChangeListener listener = (sharedPreferences, str) -> {
|
||||
try {
|
||||
Setting<?> setting = Setting.getSettingFromPath(str);
|
||||
Setting<?> setting = Setting.getSettingFromPath(Objects.requireNonNull(str));
|
||||
if (setting == null) {
|
||||
return;
|
||||
}
|
||||
@@ -52,23 +52,21 @@ public abstract class AbstractPreferenceFragment extends PreferenceFragment {
|
||||
}
|
||||
Logger.printDebug(() -> "Preference changed: " + setting.key);
|
||||
|
||||
// Apply 'Setting <- Preference', unless during importing when it needs to be 'Setting -> Preference'.
|
||||
updatePreference(pref, setting, true, settingImportInProgress);
|
||||
// Update any other preference availability that may now be different.
|
||||
updateUIAvailability();
|
||||
|
||||
if (settingImportInProgress) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!showingUserDialogMessage) {
|
||||
if (setting.userDialogMessage != null && ((SwitchPreference) pref).isChecked() != (Boolean) setting.defaultValue) {
|
||||
showSettingUserDialogConfirmation((SwitchPreference) pref, (BooleanSetting) setting);
|
||||
if (!settingImportInProgress && !showingUserDialogMessage) {
|
||||
if (setting.userDialogMessage != null && !prefIsSetToDefault(pref, setting)) {
|
||||
// Do not change the setting yet, to allow preserving whatever
|
||||
// list/text value was previously set if it needs to be reverted.
|
||||
showSettingUserDialogConfirmation(pref, setting);
|
||||
return;
|
||||
} else if (setting.rebootApp) {
|
||||
showRestartDialog(getContext());
|
||||
}
|
||||
}
|
||||
|
||||
// Apply 'Setting <- Preference', unless during importing when it needs to be 'Setting -> Preference'.
|
||||
updatePreference(pref, setting, true, settingImportInProgress);
|
||||
// Update any other preference availability that may now be different.
|
||||
updateUIAvailability();
|
||||
} catch (Exception ex) {
|
||||
Logger.printException(() -> "OnSharedPreferenceChangeListener failure", ex);
|
||||
}
|
||||
@@ -92,7 +90,7 @@ public abstract class AbstractPreferenceFragment extends PreferenceFragment {
|
||||
Utils.setPreferenceTitlesToMultiLineIfNeeded(screen);
|
||||
}
|
||||
|
||||
private void showSettingUserDialogConfirmation(SwitchPreference switchPref, BooleanSetting setting) {
|
||||
private void showSettingUserDialogConfirmation(Preference pref, Setting<?> setting) {
|
||||
Utils.verifyOnMainThread();
|
||||
|
||||
final var context = getContext();
|
||||
@@ -104,12 +102,19 @@ public abstract class AbstractPreferenceFragment extends PreferenceFragment {
|
||||
.setTitle(confirmDialogTitle)
|
||||
.setMessage(Objects.requireNonNull(setting.userDialogMessage).toString())
|
||||
.setPositiveButton(android.R.string.ok, (dialog, id) -> {
|
||||
// User confirmed, save to the Setting.
|
||||
updatePreference(pref, setting, true, false);
|
||||
|
||||
// Update availability of other preferences that may be changed.
|
||||
updateUIAvailability();
|
||||
|
||||
if (setting.rebootApp) {
|
||||
showRestartDialog(context);
|
||||
}
|
||||
})
|
||||
.setNegativeButton(android.R.string.cancel, (dialog, id) -> {
|
||||
switchPref.setChecked(setting.defaultValue); // Recursive call that resets the Setting value.
|
||||
// Restore whatever the setting was before the change.
|
||||
updatePreference(pref, setting, true, true);
|
||||
})
|
||||
.setOnDismissListener(dialog -> {
|
||||
showingUserDialogMessage = false;
|
||||
@@ -132,6 +137,24 @@ public abstract class AbstractPreferenceFragment extends PreferenceFragment {
|
||||
updatePreferenceScreen(getPreferenceScreen(), false, false);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return If the preference is currently set to the default value of the Setting.
|
||||
*/
|
||||
protected boolean prefIsSetToDefault(Preference pref, Setting<?> setting) {
|
||||
if (pref instanceof SwitchPreference switchPref) {
|
||||
return switchPref.isChecked() == (Boolean) setting.defaultValue;
|
||||
}
|
||||
if (pref instanceof EditTextPreference editPreference) {
|
||||
return editPreference.getText().equals(setting.defaultValue.toString());
|
||||
}
|
||||
if (pref instanceof ListPreference listPref) {
|
||||
return listPref.getValue().equals(setting.defaultValue.toString());
|
||||
}
|
||||
|
||||
throw new IllegalStateException("Must override method to handle "
|
||||
+ "preference type: " + pref.getClass());
|
||||
}
|
||||
|
||||
/**
|
||||
* Syncs all UI Preferences to any {@link Setting} they represent.
|
||||
*/
|
||||
@@ -170,23 +193,20 @@ public abstract class AbstractPreferenceFragment extends PreferenceFragment {
|
||||
protected void syncSettingWithPreference(@NonNull Preference pref,
|
||||
@NonNull Setting<?> setting,
|
||||
boolean applySettingToPreference) {
|
||||
if (pref instanceof SwitchPreference) {
|
||||
SwitchPreference switchPref = (SwitchPreference) pref;
|
||||
if (pref instanceof SwitchPreference switchPref) {
|
||||
BooleanSetting boolSetting = (BooleanSetting) setting;
|
||||
if (applySettingToPreference) {
|
||||
switchPref.setChecked(boolSetting.get());
|
||||
} else {
|
||||
BooleanSetting.privateSetValue(boolSetting, switchPref.isChecked());
|
||||
}
|
||||
} else if (pref instanceof EditTextPreference) {
|
||||
EditTextPreference editPreference = (EditTextPreference) pref;
|
||||
} else if (pref instanceof EditTextPreference editPreference) {
|
||||
if (applySettingToPreference) {
|
||||
editPreference.setText(setting.get().toString());
|
||||
} else {
|
||||
Setting.privateSetValueFromString(setting, editPreference.getText());
|
||||
}
|
||||
} else if (pref instanceof ListPreference) {
|
||||
ListPreference listPref = (ListPreference) pref;
|
||||
} else if (pref instanceof ListPreference listPref) {
|
||||
if (applySettingToPreference) {
|
||||
listPref.setValue(setting.get().toString());
|
||||
} else {
|
||||
|
||||
@@ -4,6 +4,10 @@ import android.os.Build;
|
||||
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import java.util.Locale;
|
||||
import java.util.Objects;
|
||||
|
||||
import app.revanced.extension.shared.Logger;
|
||||
import app.revanced.extension.shared.settings.BaseSettings;
|
||||
|
||||
public enum ClientType {
|
||||
@@ -11,56 +15,99 @@ public enum ClientType {
|
||||
ANDROID_VR_NO_AUTH(
|
||||
28,
|
||||
"ANDROID_VR",
|
||||
"com.google.android.apps.youtube.vr.oculus",
|
||||
"Oculus",
|
||||
"Quest 3",
|
||||
"Android",
|
||||
"12",
|
||||
"com.google.android.apps.youtube.vr.oculus/1.56.21 (Linux; U; Android 12; GB) gzip",
|
||||
"32", // Android 12.1
|
||||
"1.56.21",
|
||||
// Android 12.1
|
||||
"32",
|
||||
"SQ3A.220605.009.A1",
|
||||
"132.0.6808.3",
|
||||
"1.61.48",
|
||||
false,
|
||||
false,
|
||||
"Android VR No auth"
|
||||
),
|
||||
// Chromecast with Google TV 4K.
|
||||
// https://dumps.tadiphone.dev/dumps/google/kirkwood
|
||||
ANDROID_UNPLUGGED(
|
||||
29,
|
||||
"ANDROID_UNPLUGGED",
|
||||
"com.google.android.apps.youtube.unplugged",
|
||||
"Google",
|
||||
"Google TV Streamer",
|
||||
"Android",
|
||||
"14",
|
||||
"com.google.android.apps.youtube.unplugged/8.49.0 (Linux; U; Android 14; GB) gzip",
|
||||
"34",
|
||||
"UTT3.240625.001.K5",
|
||||
"132.0.6808.3",
|
||||
"8.49.0",
|
||||
true,
|
||||
true,
|
||||
"Android TV"
|
||||
),
|
||||
// Cannot play livestreams and lacks HDR, but can play videos with music and labeled "for children".
|
||||
// Google Pixel 9 Pro Fold
|
||||
// https://dumps.tadiphone.dev/dumps/google/barbet
|
||||
ANDROID_CREATOR(
|
||||
14,
|
||||
"ANDROID_CREATOR",
|
||||
"com.google.android.apps.youtube.creator",
|
||||
"Google",
|
||||
"Pixel 9 Pro Fold",
|
||||
"Android",
|
||||
"15",
|
||||
"35",
|
||||
"AP3A.241005.015.A2",
|
||||
"132.0.6779.0",
|
||||
"23.47.101",
|
||||
true,
|
||||
true,
|
||||
"Android Creator"
|
||||
),
|
||||
ANDROID_VR(
|
||||
ANDROID_VR_NO_AUTH.id,
|
||||
ANDROID_VR_NO_AUTH.clientName,
|
||||
ANDROID_VR_NO_AUTH.packageName,
|
||||
ANDROID_VR_NO_AUTH.deviceMake,
|
||||
ANDROID_VR_NO_AUTH.deviceModel,
|
||||
ANDROID_VR_NO_AUTH.osName,
|
||||
ANDROID_VR_NO_AUTH.osVersion,
|
||||
ANDROID_VR_NO_AUTH.userAgent,
|
||||
ANDROID_VR_NO_AUTH.androidSdkVersion,
|
||||
ANDROID_VR_NO_AUTH.buildId,
|
||||
ANDROID_VR_NO_AUTH.cronetVersion,
|
||||
ANDROID_VR_NO_AUTH.clientVersion,
|
||||
ANDROID_VR_NO_AUTH.requiresAuth,
|
||||
true,
|
||||
"Android VR"
|
||||
),
|
||||
IOS_UNPLUGGED(33,
|
||||
IOS_UNPLUGGED(
|
||||
33,
|
||||
"IOS_UNPLUGGED",
|
||||
"com.google.ios.youtubeunplugged",
|
||||
"Apple",
|
||||
forceAVC()
|
||||
? "iPhone12,5" // 11 Pro Max (last device with iOS 13)
|
||||
: "iPhone16,2", // 15 Pro Max
|
||||
// iOS 13 and earlier uses only AVC. 14+ adds VP9 and AV1.
|
||||
// 11 Pro Max (last device with iOS 13)
|
||||
? "iPhone12,5"
|
||||
// 15 Pro Max
|
||||
: "iPhone16,2",
|
||||
"iOS",
|
||||
forceAVC()
|
||||
? "13.7.17H35" // Last release of iOS 13.
|
||||
: "18.1.1.22B91",
|
||||
forceAVC()
|
||||
? "com.google.ios.youtubeunplugged/6.45 (iPhone; U; CPU iOS 13_7 like Mac OS X)"
|
||||
: "com.google.ios.youtubeunplugged/8.33 (iPhone; U; CPU iOS 18_1_1 like Mac OS X)",
|
||||
// iOS 13 and earlier uses only AVC. 14+ adds VP9 and AV1.
|
||||
? "13.7.17H35"
|
||||
: "18.2.22C152",
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
// Version number should be a valid iOS release.
|
||||
// https://www.ipa4fun.com/history/152043/
|
||||
// Some newer versions can also force AVC,
|
||||
// but 6.45 is the last version that supports iOS 13.
|
||||
forceAVC()
|
||||
// Some newer versions can also force AVC,
|
||||
// but 6.45 is the last version that supports iOS 13.
|
||||
? "6.45"
|
||||
: "8.33",
|
||||
: "8.49",
|
||||
true,
|
||||
true,
|
||||
forceAVC()
|
||||
? "iOS TV Force AVC"
|
||||
@@ -80,20 +127,35 @@ public enum ClientType {
|
||||
public final String clientName;
|
||||
|
||||
/**
|
||||
* Device model, equivalent to {@link Build#MODEL} (System property: ro.product.model)
|
||||
* App package name.
|
||||
*/
|
||||
public final String deviceModel;
|
||||
|
||||
/**
|
||||
* Device OS version.
|
||||
*/
|
||||
public final String osVersion;
|
||||
private final String packageName;
|
||||
|
||||
/**
|
||||
* Player user-agent.
|
||||
*/
|
||||
public final String userAgent;
|
||||
|
||||
/**
|
||||
* Device model, equivalent to {@link Build#MANUFACTURER} (System property: ro.product.vendor.manufacturer)
|
||||
*/
|
||||
public final String deviceMake;
|
||||
|
||||
/**
|
||||
* Device model, equivalent to {@link Build#MODEL} (System property: ro.product.vendor.model)
|
||||
*/
|
||||
public final String deviceModel;
|
||||
|
||||
/**
|
||||
* Device OS name.
|
||||
*/
|
||||
public final String osName;
|
||||
|
||||
/**
|
||||
* Device OS version.
|
||||
*/
|
||||
public final String osVersion;
|
||||
|
||||
/**
|
||||
* Android SDK version, equivalent to {@link Build.VERSION#SDK} (System property: ro.build.version.sdk)
|
||||
* Field is null if not applicable.
|
||||
@@ -101,39 +163,97 @@ public enum ClientType {
|
||||
@Nullable
|
||||
public final String androidSdkVersion;
|
||||
|
||||
/**
|
||||
* Android build id, equivalent to {@link Build#ID}.
|
||||
* Field is null if not applicable.
|
||||
*/
|
||||
@Nullable
|
||||
private final String buildId;
|
||||
|
||||
/**
|
||||
* Cronet release version, as found in decompiled client apk.
|
||||
* Field is null if not applicable.
|
||||
*/
|
||||
@Nullable
|
||||
private final String cronetVersion;
|
||||
|
||||
/**
|
||||
* App version.
|
||||
*/
|
||||
public final String clientVersion;
|
||||
|
||||
/**
|
||||
* If the client can access the API logged in.
|
||||
* If this client requires authentication and does not work
|
||||
* if logged out or in incognito mode.
|
||||
*/
|
||||
public final boolean canLogin;
|
||||
public final boolean requiresAuth;
|
||||
|
||||
/**
|
||||
* If the client should use authentication if available.
|
||||
*/
|
||||
public final boolean useAuth;
|
||||
|
||||
/**
|
||||
* Friendly name displayed in stats for nerds.
|
||||
*/
|
||||
public final String friendlyName;
|
||||
|
||||
@SuppressWarnings("ConstantLocale")
|
||||
ClientType(int id,
|
||||
String clientName,
|
||||
String packageName,
|
||||
String deviceMake,
|
||||
String deviceModel,
|
||||
String osName,
|
||||
String osVersion,
|
||||
String userAgent,
|
||||
@Nullable String androidSdkVersion,
|
||||
@Nullable String buildId,
|
||||
@Nullable String cronetVersion,
|
||||
String clientVersion,
|
||||
boolean canLogin,
|
||||
boolean requiresAuth,
|
||||
boolean useAuth,
|
||||
String friendlyName) {
|
||||
this.id = id;
|
||||
this.clientName = clientName;
|
||||
this.packageName = packageName;
|
||||
this.deviceMake = deviceMake;
|
||||
this.deviceModel = deviceModel;
|
||||
this.osName = osName;
|
||||
this.osVersion = osVersion;
|
||||
this.userAgent = userAgent;
|
||||
this.androidSdkVersion = androidSdkVersion;
|
||||
this.buildId = buildId;
|
||||
this.cronetVersion = cronetVersion;
|
||||
this.clientVersion = clientVersion;
|
||||
this.canLogin = canLogin;
|
||||
this.requiresAuth = requiresAuth;
|
||||
this.useAuth = useAuth;
|
||||
this.friendlyName = friendlyName;
|
||||
|
||||
Locale defaultLocale = Locale.getDefault();
|
||||
if (androidSdkVersion == null) {
|
||||
// Convert version from '18.2.22C152' into '18_2_22'
|
||||
String userAgentOsVersion = osVersion
|
||||
.replaceAll("(\\d+\\.\\d+\\.\\d+).*", "$1")
|
||||
.replace(".", "_");
|
||||
// https://github.com/mitmproxy/mitmproxy/issues/4836
|
||||
this.userAgent = String.format("%s/%s (%s; U; CPU iOS %s like Mac OS X; %s)",
|
||||
packageName,
|
||||
clientVersion,
|
||||
deviceModel,
|
||||
userAgentOsVersion,
|
||||
defaultLocale
|
||||
);
|
||||
} else {
|
||||
this.userAgent = String.format("%s/%s (Linux; U; Android %s; %s; %s; Build/%s; Cronet/%s)",
|
||||
packageName,
|
||||
clientVersion,
|
||||
osVersion,
|
||||
defaultLocale,
|
||||
deviceModel,
|
||||
Objects.requireNonNull(buildId),
|
||||
Objects.requireNonNull(cronetVersion)
|
||||
);
|
||||
}
|
||||
Logger.printDebug(() -> "userAgent: " + this.userAgent);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -34,6 +34,12 @@ public class SpoofVideoStreamsPatch {
|
||||
return false; // Modified during patching.
|
||||
}
|
||||
|
||||
public static boolean notSpoofingToAndroid() {
|
||||
return !isPatchIncluded()
|
||||
|| !BaseSettings.SPOOF_VIDEO_STREAMS.get()
|
||||
|| BaseSettings.SPOOF_VIDEO_STREAMS_CLIENT_TYPE.get() == ClientType.IOS_UNPLUGGED;
|
||||
}
|
||||
|
||||
/**
|
||||
* Injection point.
|
||||
* Blocks /get_watch requests by returning an unreachable URI.
|
||||
@@ -71,9 +77,9 @@ public class SpoofVideoStreamsPatch {
|
||||
String path = originalUri.getPath();
|
||||
|
||||
if (path != null && path.contains("initplayback")) {
|
||||
Logger.printDebug(() -> "Blocking 'initplayback' by returning unreachable url");
|
||||
Logger.printDebug(() -> "Blocking 'initplayback' by clearing query");
|
||||
|
||||
return UNREACHABLE_HOST_URI_STRING;
|
||||
return originalUri.buildUpon().clearQuery().build().toString();
|
||||
}
|
||||
} catch (Exception ex) {
|
||||
Logger.printException(() -> "blockInitPlaybackRequest failure", ex);
|
||||
@@ -109,20 +115,27 @@ public class SpoofVideoStreamsPatch {
|
||||
try {
|
||||
Uri uri = Uri.parse(url);
|
||||
String path = uri.getPath();
|
||||
if (path == null || !path.contains("player")) {
|
||||
return;
|
||||
}
|
||||
|
||||
// 'get_drm_license' has no video id and appears to happen when waiting for a paid video to start.
|
||||
// 'heartbeat' has no video id and appears to be only after playback has started.
|
||||
// 'refresh' has no video id and appears to happen when waiting for a livestream to start.
|
||||
if (path != null && path.contains("player") && !path.contains("heartbeat")
|
||||
&& !path.contains("refresh")) {
|
||||
String id = uri.getQueryParameter("id");
|
||||
if (id == null) {
|
||||
Logger.printException(() -> "Ignoring request that has no video id." +
|
||||
" Url: " + url + " headers: " + requestHeaders);
|
||||
return;
|
||||
}
|
||||
|
||||
StreamingDataRequest.fetchRequest(id, requestHeaders);
|
||||
// 'ad_break' has no video id.
|
||||
if (path.contains("get_drm_license") || path.contains("heartbeat")
|
||||
|| path.contains("refresh") || path.contains("ad_break")) {
|
||||
Logger.printDebug(() -> "Ignoring path: " + path);
|
||||
return;
|
||||
}
|
||||
|
||||
String id = uri.getQueryParameter("id");
|
||||
if (id == null) {
|
||||
Logger.printException(() -> "Ignoring request with no id: " + url);
|
||||
return;
|
||||
}
|
||||
|
||||
StreamingDataRequest.fetchRequest(id, requestHeaders);
|
||||
} catch (Exception ex) {
|
||||
Logger.printException(() -> "buildRequest failure", ex);
|
||||
}
|
||||
@@ -206,23 +219,11 @@ public class SpoofVideoStreamsPatch {
|
||||
return videoFormat;
|
||||
}
|
||||
|
||||
public static final class NotSpoofingAndroidAvailability implements Setting.Availability {
|
||||
@Override
|
||||
public boolean isAvailable() {
|
||||
if (SpoofVideoStreamsPatch.isPatchIncluded()) {
|
||||
return !BaseSettings.SPOOF_VIDEO_STREAMS.get()
|
||||
|| BaseSettings.SPOOF_VIDEO_STREAMS_CLIENT_TYPE.get() == ClientType.IOS_UNPLUGGED;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
public static final class AudioStreamLanguageOverrideAvailability implements Setting.Availability {
|
||||
@Override
|
||||
public boolean isAvailable() {
|
||||
return !BaseSettings.SPOOF_VIDEO_STREAMS.get()
|
||||
|| BaseSettings.SPOOF_VIDEO_STREAMS_CLIENT_TYPE.get() == ClientType.ANDROID_VR_NO_AUTH;
|
||||
return BaseSettings.SPOOF_VIDEO_STREAMS.get()
|
||||
&& BaseSettings.SPOOF_VIDEO_STREAMS_CLIENT_TYPE.get() == ClientType.ANDROID_VR_NO_AUTH;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -5,12 +5,12 @@ import org.json.JSONObject;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.net.HttpURLConnection;
|
||||
import java.util.Locale;
|
||||
|
||||
import app.revanced.extension.shared.Logger;
|
||||
import app.revanced.extension.shared.requests.Requester;
|
||||
import app.revanced.extension.shared.requests.Route;
|
||||
import app.revanced.extension.shared.settings.BaseSettings;
|
||||
import app.revanced.extension.shared.spoof.AudioStreamLanguage;
|
||||
import app.revanced.extension.shared.spoof.ClientType;
|
||||
|
||||
final class PlayerRoutes {
|
||||
@@ -31,7 +31,7 @@ final class PlayerRoutes {
|
||||
private PlayerRoutes() {
|
||||
}
|
||||
|
||||
static String createInnertubeBody(ClientType clientType) {
|
||||
static String createInnertubeBody(ClientType clientType, String videoId) {
|
||||
JSONObject innerTubeBody = new JSONObject();
|
||||
|
||||
try {
|
||||
@@ -42,25 +42,28 @@ final class PlayerRoutes {
|
||||
// but if this is a fall over client it will set the language even though
|
||||
// the audio language is not selectable in the UI.
|
||||
ClientType userSelectedClient = BaseSettings.SPOOF_VIDEO_STREAMS_CLIENT_TYPE.get();
|
||||
AudioStreamLanguage language = userSelectedClient == ClientType.ANDROID_VR_NO_AUTH
|
||||
? BaseSettings.SPOOF_VIDEO_STREAMS_LANGUAGE.get()
|
||||
: AudioStreamLanguage.DEFAULT;
|
||||
Locale streamLocale = userSelectedClient == ClientType.ANDROID_VR_NO_AUTH
|
||||
? BaseSettings.SPOOF_VIDEO_STREAMS_LANGUAGE.get().getLocale()
|
||||
: Locale.getDefault();
|
||||
|
||||
JSONObject client = new JSONObject();
|
||||
client.put("hl", language.getLanguage());
|
||||
client.put("deviceMake", clientType.deviceMake);
|
||||
client.put("deviceModel", clientType.deviceModel);
|
||||
client.put("clientName", clientType.clientName);
|
||||
client.put("clientVersion", clientType.clientVersion);
|
||||
client.put("deviceModel", clientType.deviceModel);
|
||||
client.put("osName", clientType.osName);
|
||||
client.put("osVersion", clientType.osVersion);
|
||||
if (clientType.androidSdkVersion != null) {
|
||||
client.put("androidSdkVersion", clientType.androidSdkVersion);
|
||||
}
|
||||
client.put("hl", streamLocale.getLanguage());
|
||||
client.put("gl", streamLocale.getCountry());
|
||||
context.put("client", client);
|
||||
|
||||
innerTubeBody.put("context", context);
|
||||
innerTubeBody.put("contentCheckOk", true);
|
||||
innerTubeBody.put("racyCheckOk", true);
|
||||
innerTubeBody.put("videoId", "%s");
|
||||
innerTubeBody.put("videoId", videoId);
|
||||
} catch (JSONException e) {
|
||||
Logger.printException(() -> "Failed to create innerTubeBody", e);
|
||||
}
|
||||
@@ -76,6 +79,9 @@ final class PlayerRoutes {
|
||||
|
||||
connection.setRequestProperty("Content-Type", "application/json");
|
||||
connection.setRequestProperty("User-Agent", clientType.userAgent);
|
||||
// Not a typo. "Client-Name" uses the client type id.
|
||||
connection.setRequestProperty("X-YouTube-Client-Name", String.valueOf(clientType.id));
|
||||
connection.setRequestProperty("X-YouTube-Client-Version", clientType.clientVersion);
|
||||
|
||||
connection.setUseCaches(false);
|
||||
connection.setDoOutput(true);
|
||||
|
||||
@@ -120,7 +120,8 @@ public class StreamingDataRequest {
|
||||
}
|
||||
|
||||
@Nullable
|
||||
private static HttpURLConnection send(ClientType clientType, String videoId,
|
||||
private static HttpURLConnection send(ClientType clientType,
|
||||
String videoId,
|
||||
Map<String, String> playerHeaders,
|
||||
boolean showErrorToasts) {
|
||||
Objects.requireNonNull(clientType);
|
||||
@@ -128,21 +129,24 @@ public class StreamingDataRequest {
|
||||
Objects.requireNonNull(playerHeaders);
|
||||
|
||||
final long startTime = System.currentTimeMillis();
|
||||
Logger.printDebug(() -> "Fetching video streams for: " + videoId + " using client: " + clientType);
|
||||
|
||||
try {
|
||||
HttpURLConnection connection = PlayerRoutes.getPlayerResponseConnectionFromRoute(GET_STREAMING_DATA, clientType);
|
||||
connection.setConnectTimeout(HTTP_TIMEOUT_MILLISECONDS);
|
||||
connection.setReadTimeout(HTTP_TIMEOUT_MILLISECONDS);
|
||||
|
||||
boolean authHeadersIncludes = false;
|
||||
|
||||
for (String key : REQUEST_HEADER_KEYS) {
|
||||
String value = playerHeaders.get(key);
|
||||
|
||||
if (value != null) {
|
||||
if (key.equals(AUTHORIZATION_HEADER)) {
|
||||
if (!clientType.canLogin) {
|
||||
if (!clientType.useAuth) {
|
||||
Logger.printDebug(() -> "Not including request header: " + key);
|
||||
continue;
|
||||
}
|
||||
authHeadersIncludes = true;
|
||||
}
|
||||
|
||||
Logger.printDebug(() -> "Including request header: " + key);
|
||||
@@ -150,7 +154,15 @@ public class StreamingDataRequest {
|
||||
}
|
||||
}
|
||||
|
||||
String innerTubeBody = String.format(PlayerRoutes.createInnertubeBody(clientType), videoId);
|
||||
if (!authHeadersIncludes && clientType.requiresAuth) {
|
||||
Logger.printDebug(() -> "Skipping client since user is not logged in: " + clientType
|
||||
+ " videoId: " + videoId);
|
||||
return null;
|
||||
}
|
||||
|
||||
Logger.printDebug(() -> "Fetching video streams for: " + videoId + " using client: " + clientType);
|
||||
|
||||
String innerTubeBody = PlayerRoutes.createInnertubeBody(clientType, videoId);
|
||||
byte[] requestBody = innerTubeBody.getBytes(StandardCharsets.UTF_8);
|
||||
connection.setFixedLengthStreamingMode(requestBody.length);
|
||||
connection.getOutputStream().write(requestBody);
|
||||
@@ -182,7 +194,7 @@ public class StreamingDataRequest {
|
||||
// Retry with different client if empty response body is received.
|
||||
int i = 0;
|
||||
for (ClientType clientType : CLIENT_ORDER_TO_USE) {
|
||||
// Show an error if the last client type fails, or if the debug is enabled then show for all attempts.
|
||||
// Show an error if the last client type fails, or if debug is enabled then show for all attempts.
|
||||
final boolean showErrorToast = (++i == CLIENT_ORDER_TO_USE.length) || debugEnabled;
|
||||
|
||||
HttpURLConnection connection = send(clientType, videoId, playerHeaders, showErrorToast);
|
||||
@@ -191,8 +203,8 @@ public class StreamingDataRequest {
|
||||
// gzip encoding doesn't response with content length (-1),
|
||||
// but empty response body does.
|
||||
if (connection.getContentLength() == 0) {
|
||||
if (BaseSettings.DEBUG.get()) {
|
||||
Logger.printException(() -> "Ignoring empty client: " + clientType);
|
||||
if (BaseSettings.DEBUG.get() && BaseSettings.DEBUG_TOAST_ON_ERROR.get()) {
|
||||
Utils.showToastShort("Ignoring empty spoof stream client: " + clientType);
|
||||
}
|
||||
} else {
|
||||
try (InputStream inputStream = new BufferedInputStream(connection.getInputStream());
|
||||
|
||||
@@ -90,4 +90,12 @@ public class ThemeHelper {
|
||||
public static int getForegroundColor() {
|
||||
return isDarkTheme() ? getLightThemeColor() : getDarkThemeColor();
|
||||
}
|
||||
|
||||
public static int getToolbarBackgroundColor() {
|
||||
final String colorName = isDarkTheme()
|
||||
? "yt_black3"
|
||||
: "yt_white1";
|
||||
|
||||
return getColorInt(colorName);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -176,14 +176,13 @@ public final class AlternativeThumbnailsPatch {
|
||||
// Unknown tab, treat as the home tab;
|
||||
return homeOption;
|
||||
}
|
||||
if (selectedNavButton == NavigationButton.HOME) {
|
||||
return homeOption;
|
||||
}
|
||||
if (selectedNavButton == NavigationButton.SUBSCRIPTIONS || selectedNavButton == NavigationButton.NOTIFICATIONS) {
|
||||
return subscriptionsOption;
|
||||
}
|
||||
// A library tab variant is active.
|
||||
return libraryOption;
|
||||
|
||||
return switch (selectedNavButton) {
|
||||
case SUBSCRIPTIONS, NOTIFICATIONS -> subscriptionsOption;
|
||||
case LIBRARY -> libraryOption;
|
||||
// Home or explore tab.
|
||||
default -> homeOption;
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -0,0 +1,54 @@
|
||||
package app.revanced.extension.youtube.patches;
|
||||
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import app.revanced.extension.shared.Utils;
|
||||
import app.revanced.extension.youtube.settings.Settings;
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
public class ChangeFormFactorPatch {
|
||||
|
||||
public enum FormFactor {
|
||||
/**
|
||||
* Unmodified, and same as un-patched.
|
||||
*/
|
||||
DEFAULT(null),
|
||||
/**
|
||||
* <pre>
|
||||
* Some changes include:
|
||||
* - Explore tab is present.
|
||||
* - watch history is missing.
|
||||
* - feed thumbnails fade in.
|
||||
*/
|
||||
UNKNOWN(0),
|
||||
SMALL(1),
|
||||
LARGE(2),
|
||||
/**
|
||||
* Cars with 'Google built-in'.
|
||||
* Layout seems identical to {@link #UNKNOWN}
|
||||
* even when using an Android Automotive device.
|
||||
*/
|
||||
AUTOMOTIVE(3),
|
||||
WEARABLE(4);
|
||||
|
||||
@Nullable
|
||||
final Integer formFactorType;
|
||||
|
||||
FormFactor(@Nullable Integer formFactorType) {
|
||||
this.formFactorType = formFactorType;
|
||||
}
|
||||
}
|
||||
|
||||
@Nullable
|
||||
private static final Integer FORM_FACTOR_TYPE = Settings.CHANGE_FORM_FACTOR.get().formFactorType;
|
||||
|
||||
/**
|
||||
* Injection point.
|
||||
*/
|
||||
public static int getFormFactor(int original) {
|
||||
return FORM_FACTOR_TYPE == null
|
||||
? original
|
||||
: FORM_FACTOR_TYPE;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
package app.revanced.extension.youtube.patches;
|
||||
|
||||
import app.revanced.extension.youtube.settings.Settings;
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
public class DisableHdrPatch {
|
||||
|
||||
/**
|
||||
* Injection point.
|
||||
*/
|
||||
public static boolean disableHDRVideo() {
|
||||
return !Settings.DISABLE_HDR_VIDEO.get();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,14 +9,23 @@ import app.revanced.extension.shared.settings.BaseSettings;
|
||||
@SuppressWarnings("unused")
|
||||
public final class EnableDebuggingPatch {
|
||||
|
||||
private static final ConcurrentMap<Long, Boolean> featureFlags
|
||||
= new ConcurrentHashMap<>(300, 0.75f, 1);
|
||||
/**
|
||||
* Only log if debugging is enabled on startup.
|
||||
* This prevents enabling debugging
|
||||
* while the app is running then failing to restart
|
||||
* resulting in an incomplete log.
|
||||
*/
|
||||
private static final boolean LOG_FEATURE_FLAGS = BaseSettings.DEBUG.get();
|
||||
|
||||
private static final ConcurrentMap<Long, Boolean> featureFlags = LOG_FEATURE_FLAGS
|
||||
? new ConcurrentHashMap<>(800, 0.5f, 1)
|
||||
: null;
|
||||
|
||||
/**
|
||||
* Injection point.
|
||||
*/
|
||||
public static boolean isBooleanFeatureFlagEnabled(boolean value, long flag) {
|
||||
if (value && BaseSettings.DEBUG.get()) {
|
||||
if (LOG_FEATURE_FLAGS && value) {
|
||||
if (featureFlags.putIfAbsent(flag, true) == null) {
|
||||
Logger.printDebug(() -> "boolean feature is enabled: " + flag);
|
||||
}
|
||||
@@ -29,7 +38,7 @@ public final class EnableDebuggingPatch {
|
||||
* Injection point.
|
||||
*/
|
||||
public static double isDoubleFeatureFlagEnabled(double value, long flag, double defaultValue) {
|
||||
if (defaultValue != value && BaseSettings.DEBUG.get()) {
|
||||
if (LOG_FEATURE_FLAGS && defaultValue != value) {
|
||||
if (featureFlags.putIfAbsent(flag, true) == null) {
|
||||
// Align the log outputs to make post processing easier.
|
||||
Logger.printDebug(() -> " double feature is enabled: " + flag
|
||||
@@ -44,7 +53,7 @@ public final class EnableDebuggingPatch {
|
||||
* Injection point.
|
||||
*/
|
||||
public static long isLongFeatureFlagEnabled(long value, long flag, long defaultValue) {
|
||||
if (defaultValue != value && BaseSettings.DEBUG.get()) {
|
||||
if (LOG_FEATURE_FLAGS && defaultValue != value) {
|
||||
if (featureFlags.putIfAbsent(flag, true) == null) {
|
||||
Logger.printDebug(() -> " long feature is enabled: " + flag
|
||||
+ " value: " + value + (defaultValue == 0 ? "" : " default: " + defaultValue));
|
||||
@@ -58,7 +67,7 @@ public final class EnableDebuggingPatch {
|
||||
* Injection point.
|
||||
*/
|
||||
public static String isStringFeatureFlagEnabled(String value, long flag, String defaultValue) {
|
||||
if (BaseSettings.DEBUG.get() && !defaultValue.equals(value)) {
|
||||
if (LOG_FEATURE_FLAGS && !defaultValue.equals(value)) {
|
||||
if (featureFlags.putIfAbsent(flag, true) == null) {
|
||||
Logger.printDebug(() -> " string feature is enabled: " + flag
|
||||
+ " value: " + value + (defaultValue.isEmpty() ? "" : " default: " + defaultValue));
|
||||
|
||||
@@ -0,0 +1,63 @@
|
||||
package app.revanced.extension.youtube.patches;
|
||||
|
||||
import android.widget.ImageView;
|
||||
|
||||
import app.revanced.extension.shared.Logger;
|
||||
import app.revanced.extension.shared.Utils;
|
||||
import app.revanced.extension.youtube.settings.Settings;
|
||||
import app.revanced.extension.youtube.shared.PlayerType;
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
public class ExitFullscreenPatch {
|
||||
|
||||
public enum FullscreenMode {
|
||||
DISABLED,
|
||||
PORTRAIT,
|
||||
LANDSCAPE,
|
||||
PORTRAIT_LANDSCAPE,
|
||||
}
|
||||
|
||||
/**
|
||||
* Injection point.
|
||||
*/
|
||||
public static void endOfVideoReached() {
|
||||
try {
|
||||
FullscreenMode mode = Settings.EXIT_FULLSCREEN.get();
|
||||
if (mode == FullscreenMode.DISABLED) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (PlayerType.getCurrent() == PlayerType.WATCH_WHILE_FULLSCREEN) {
|
||||
if (mode != FullscreenMode.PORTRAIT_LANDSCAPE) {
|
||||
if (Utils.isLandscapeOrientation()) {
|
||||
if (mode == FullscreenMode.PORTRAIT) {
|
||||
return;
|
||||
}
|
||||
} else if (mode == FullscreenMode.LANDSCAPE) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// If the user cold launches the app and plays a video but does not
|
||||
// tap to show the overlay controls, the fullscreen button is not
|
||||
// set because the overlay controls are not attached.
|
||||
// To fix this, push the perform click to the back fo the main thread,
|
||||
// and by then the overlay controls will be visible since the video is now finished.
|
||||
Utils.runOnMainThread(() -> {
|
||||
ImageView button = PlayerControlsPatch.fullscreenButtonRef.get();
|
||||
if (button == null) {
|
||||
Logger.printDebug(() -> "Fullscreen button is null, cannot click");
|
||||
} else {
|
||||
Logger.printDebug(() -> "Clicking fullscreen button");
|
||||
final boolean soundEffectsEnabled = button.isSoundEffectsEnabled();
|
||||
button.setSoundEffectsEnabled(false);
|
||||
button.performClick();
|
||||
button.setSoundEffectsEnabled(soundEffectsEnabled);
|
||||
}
|
||||
});
|
||||
}
|
||||
} catch (Exception ex) {
|
||||
Logger.printException(() -> "endOfVideoReached failure", ex);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,8 @@
|
||||
package app.revanced.extension.youtube.patches;
|
||||
|
||||
import app.revanced.extension.shared.Logger;
|
||||
import app.revanced.extension.shared.settings.Setting;
|
||||
import app.revanced.extension.shared.spoof.SpoofVideoStreamsPatch;
|
||||
import app.revanced.extension.youtube.settings.Settings;
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
@@ -8,6 +10,20 @@ public class ForceOriginalAudioPatch {
|
||||
|
||||
private static final String DEFAULT_AUDIO_TRACKS_SUFFIX = ".4";
|
||||
|
||||
/**
|
||||
* If the conditions to use this patch were present when the app launched.
|
||||
*/
|
||||
public static boolean PATCH_AVAILABLE = SpoofVideoStreamsPatch.notSpoofingToAndroid();
|
||||
|
||||
public static final class ForceOriginalAudioAvailability implements Setting.Availability {
|
||||
@Override
|
||||
public boolean isAvailable() {
|
||||
// Check conditions of launch and now. Otherwise if spoofing is changed
|
||||
// without a restart the setting will show as available when it's not.
|
||||
return PATCH_AVAILABLE && SpoofVideoStreamsPatch.notSpoofingToAndroid();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Injection point.
|
||||
*/
|
||||
|
||||
@@ -4,15 +4,30 @@ import android.view.View;
|
||||
import android.view.ViewTreeObserver;
|
||||
import android.widget.ImageView;
|
||||
|
||||
import java.lang.ref.WeakReference;
|
||||
|
||||
import app.revanced.extension.shared.Logger;
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
public class PlayerControlsPatch {
|
||||
|
||||
public static WeakReference<ImageView> fullscreenButtonRef = new WeakReference<>(null);
|
||||
|
||||
private static boolean fullscreenButtonVisibilityCallbacksExist() {
|
||||
return false; // Modified during patching if needed.
|
||||
}
|
||||
|
||||
/**
|
||||
* Injection point.
|
||||
*/
|
||||
public static void setFullscreenCloseButton(ImageView imageButton) {
|
||||
fullscreenButtonRef = new WeakReference<>(imageButton);
|
||||
Logger.printDebug(() -> "Fullscreen button set");
|
||||
|
||||
if (!fullscreenButtonVisibilityCallbacksExist()) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Add a global listener, since the protected method
|
||||
// View#onVisibilityChanged() does not have any call backs.
|
||||
imageButton.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
|
||||
@@ -39,7 +54,7 @@ public class PlayerControlsPatch {
|
||||
}
|
||||
|
||||
// noinspection EmptyMethod
|
||||
public static void fullscreenButtonVisibilityChanged(boolean isVisible) {
|
||||
private static void fullscreenButtonVisibilityChanged(boolean isVisible) {
|
||||
// Code added during patching.
|
||||
}
|
||||
|
||||
|
||||
@@ -1,16 +0,0 @@
|
||||
package app.revanced.extension.youtube.patches;
|
||||
|
||||
import app.revanced.extension.youtube.settings.Settings;
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
public final class TabletLayoutPatch {
|
||||
|
||||
private static final boolean TABLET_LAYOUT_ENABLED = Settings.TABLET_LAYOUT.get();
|
||||
|
||||
/**
|
||||
* Injection point.
|
||||
*/
|
||||
public static boolean getTabletLayoutEnabled() {
|
||||
return TABLET_LAYOUT_ENABLED;
|
||||
}
|
||||
}
|
||||
@@ -5,10 +5,13 @@ import app.revanced.extension.youtube.settings.Settings;
|
||||
@SuppressWarnings("unused")
|
||||
public class VideoAdsPatch {
|
||||
|
||||
// Used by app.revanced.patches.youtube.ad.general.video.patch.VideoAdsPatch
|
||||
// depends on Whitelist patch (still needs to be written)
|
||||
private static final boolean SHOW_VIDEO_ADS = !Settings.HIDE_VIDEO_ADS.get();
|
||||
|
||||
/**
|
||||
* Injection point.
|
||||
*/
|
||||
public static boolean shouldShowAds() {
|
||||
return !Settings.HIDE_VIDEO_ADS.get(); // TODO && Whitelist.shouldShowAds();
|
||||
return SHOW_VIDEO_ADS;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -8,10 +8,12 @@ import android.view.View;
|
||||
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import app.revanced.extension.youtube.settings.Settings;
|
||||
import java.util.List;
|
||||
|
||||
import app.revanced.extension.shared.Logger;
|
||||
import app.revanced.extension.shared.Utils;
|
||||
import app.revanced.extension.youtube.StringTrieSearch;
|
||||
import app.revanced.extension.youtube.settings.Settings;
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
public final class AdsFilter extends Filter {
|
||||
@@ -22,6 +24,11 @@ public final class AdsFilter extends Filter {
|
||||
|
||||
// endregion
|
||||
|
||||
// https://encrypted-tbn0.gstatic.com/shopping?q=abc
|
||||
private static final String STORE_BANNER_DOMAIN = "gstatic.com/shopping";
|
||||
private static final boolean HIDE_END_SCREEN_STORE_BANNER =
|
||||
Settings.HIDE_END_SCREEN_STORE_BANNER.get();
|
||||
|
||||
private final StringTrieSearch exceptions = new StringTrieSearch();
|
||||
|
||||
private final StringFilterGroup playerShoppingShelf;
|
||||
@@ -66,7 +73,9 @@ public final class AdsFilter extends Filter {
|
||||
"full_width_square_image_layout",
|
||||
"video_display_button_group_layout",
|
||||
"landscape_image_wide_button_layout",
|
||||
"video_display_carousel_button_group_layout"
|
||||
"video_display_carousel_button_group_layout",
|
||||
"compact_landscape_image_layout", // Tablet layout search results.
|
||||
"text_image_no_button_layout" // Tablet layout search results.
|
||||
);
|
||||
|
||||
final var generalAds = new StringFilterGroup(
|
||||
@@ -112,23 +121,24 @@ public final class AdsFilter extends Filter {
|
||||
"expandable_list"
|
||||
);
|
||||
|
||||
channelProfile = new StringFilterGroup(
|
||||
null,
|
||||
"channel_profile.eml"
|
||||
);
|
||||
|
||||
playerShoppingShelf = new StringFilterGroup(
|
||||
null,
|
||||
Settings.HIDE_PLAYER_STORE_SHELF,
|
||||
"horizontal_shelf.eml"
|
||||
);
|
||||
|
||||
playerShoppingShelfBuffer = new ByteArrayFilterGroup(
|
||||
Settings.HIDE_PLAYER_STORE_SHELF,
|
||||
null,
|
||||
"shopping_item_card_list.eml"
|
||||
);
|
||||
|
||||
visitStoreButton = new ByteArrayFilterGroup(
|
||||
channelProfile = new StringFilterGroup(
|
||||
Settings.HIDE_VISIT_STORE_BUTTON,
|
||||
"channel_profile.eml",
|
||||
"page_header.eml"
|
||||
);
|
||||
|
||||
visitStoreButton = new ByteArrayFilterGroup(
|
||||
null,
|
||||
"header_store_button"
|
||||
);
|
||||
|
||||
@@ -172,6 +182,11 @@ public final class AdsFilter extends Filter {
|
||||
return false;
|
||||
}
|
||||
|
||||
// Check for the index because of likelihood of false positives.
|
||||
if (matchedGroup == shoppingLinks && contentIndex != 0) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (exceptions.matches(path))
|
||||
return false;
|
||||
|
||||
@@ -188,13 +203,25 @@ public final class AdsFilter extends Filter {
|
||||
return false;
|
||||
}
|
||||
|
||||
// Check for the index because of likelihood of false positives.
|
||||
if (matchedGroup == shoppingLinks && contentIndex != 0)
|
||||
return false;
|
||||
|
||||
return super.isFiltered(identifier, path, protobufBufferArray, matchedGroup, contentType, contentIndex);
|
||||
}
|
||||
|
||||
/**
|
||||
* Injection point.
|
||||
*
|
||||
* @param elementsList List of components of the end screen container.
|
||||
* @param protobufList Component (ProtobufList).
|
||||
*/
|
||||
public static void hideEndScreenStoreBanner(List<Object> elementsList, Object protobufList) {
|
||||
if (HIDE_END_SCREEN_STORE_BANNER && protobufList.toString().contains(STORE_BANNER_DOMAIN)) {
|
||||
Logger.printDebug(() -> "Hiding store banner");
|
||||
return;
|
||||
}
|
||||
|
||||
elementsList.add(protobufList);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Hide the view, which shows ads in the homepage.
|
||||
*
|
||||
|
||||
@@ -45,6 +45,11 @@ final class DescriptionComponentsFilter extends Filter {
|
||||
"transcript_section"
|
||||
);
|
||||
|
||||
final StringFilterGroup howThisWasMadeSection = new StringFilterGroup(
|
||||
Settings.HIDE_HOW_THIS_WAS_MADE_SECTION,
|
||||
"how_this_was_made_section"
|
||||
);
|
||||
|
||||
macroMarkersCarousel = new StringFilterGroup(
|
||||
null,
|
||||
"macro_markers_carousel.eml"
|
||||
@@ -64,6 +69,7 @@ final class DescriptionComponentsFilter extends Filter {
|
||||
addPathCallbacks(
|
||||
attributesSection,
|
||||
infoCardsSection,
|
||||
howThisWasMadeSection,
|
||||
podcastSection,
|
||||
transcriptSection,
|
||||
macroMarkersCarousel
|
||||
|
||||
@@ -528,14 +528,13 @@ final class KeywordContentFilter extends Filter {
|
||||
if (selectedNavButton == null) {
|
||||
return hideHome; // Unknown tab, treat the same as home.
|
||||
}
|
||||
if (selectedNavButton == NavigationButton.HOME) {
|
||||
return hideHome;
|
||||
}
|
||||
if (selectedNavButton == NavigationButton.SUBSCRIPTIONS) {
|
||||
return hideSubscriptions;
|
||||
}
|
||||
// User is in the Library or Notifications tab.
|
||||
return false;
|
||||
|
||||
return switch (selectedNavButton) {
|
||||
case HOME, EXPLORE -> hideHome;
|
||||
case SUBSCRIPTIONS -> hideSubscriptions;
|
||||
// User is in the Library or notifications.
|
||||
default -> false;
|
||||
};
|
||||
}
|
||||
|
||||
private void updateStats(boolean videoWasHidden, @Nullable String keyword) {
|
||||
|
||||
@@ -80,7 +80,8 @@ public final class LayoutComponentsFilter extends Filter {
|
||||
"images_post_root_slim.eml",
|
||||
"text_post_root_slim.eml",
|
||||
"post_base_wrapper_slim.eml",
|
||||
"poll_post_root.eml"
|
||||
"poll_post_root.eml",
|
||||
"videos_post_root.eml"
|
||||
);
|
||||
|
||||
final var communityGuidelines = new StringFilterGroup(
|
||||
@@ -106,7 +107,8 @@ public final class LayoutComponentsFilter extends Filter {
|
||||
inFeedSurvey = new StringFilterGroup(
|
||||
Settings.HIDE_FEED_SURVEY,
|
||||
"in_feed_survey",
|
||||
"slimline_survey"
|
||||
"slimline_survey",
|
||||
"feed_nudge"
|
||||
);
|
||||
|
||||
final var medicalPanel = new StringFilterGroup(
|
||||
@@ -161,9 +163,9 @@ public final class LayoutComponentsFilter extends Filter {
|
||||
"inline_expander"
|
||||
);
|
||||
|
||||
final var channelBar = new StringFilterGroup(
|
||||
final var compactChannelBar = new StringFilterGroup(
|
||||
Settings.HIDE_CHANNEL_BAR,
|
||||
"channel_bar"
|
||||
"compact_channel_bar"
|
||||
);
|
||||
|
||||
final var relatedVideos = new StringFilterGroup(
|
||||
@@ -252,7 +254,7 @@ public final class LayoutComponentsFilter extends Filter {
|
||||
inFeedSurvey,
|
||||
notifyMe,
|
||||
likeSubscribeGlow,
|
||||
channelBar,
|
||||
compactChannelBar,
|
||||
communityPosts,
|
||||
paidPromotion,
|
||||
searchResultVideo,
|
||||
|
||||
@@ -297,7 +297,7 @@ public final class ShortsFilter extends Filter {
|
||||
if (matchedGroup == suggestedAction) {
|
||||
// Skip searching the buffer if all suggested actions are set to hidden.
|
||||
// This has a secondary effect of hiding all new un-identified actions
|
||||
// under the assumption that the user wants all actions hidden.
|
||||
// under the assumption that the user wants all suggestions hidden.
|
||||
if (isEverySuggestedActionFilterEnabled()) {
|
||||
return super.isFiltered(path, identifier, protobufBufferArray, matchedGroup, contentType, contentIndex);
|
||||
}
|
||||
@@ -324,19 +324,22 @@ public final class ShortsFilter extends Filter {
|
||||
}
|
||||
|
||||
private static boolean shouldHideShortsFeedItems() {
|
||||
// Known issue if hide home is on but at least one other hide is off:
|
||||
//
|
||||
// Shorts suggestions will load in the background if a video is opened and
|
||||
// immediately minimized before any suggestions are loaded.
|
||||
// In this state the player type will show minimized, which cannot
|
||||
// distinguish between Shorts suggestions loading in the player and between
|
||||
// scrolling thru search/home/subscription tabs while a player is minimized.
|
||||
final boolean hideHome = Settings.HIDE_SHORTS_HOME.get();
|
||||
final boolean hideSubscriptions = Settings.HIDE_SHORTS_SUBSCRIPTIONS.get();
|
||||
final boolean hideSearch = Settings.HIDE_SHORTS_SEARCH.get();
|
||||
final boolean hideHistory = Settings.HIDE_SHORTS_HISTORY.get();
|
||||
|
||||
if (hideHome && hideSubscriptions && hideSearch) {
|
||||
// Shorts suggestions can load in the background if a video is opened and
|
||||
// then immediately minimized before any suggestions are loaded.
|
||||
// In this state the player type will show minimized, which makes it not possible to
|
||||
// distinguish between Shorts suggestions loading in the player and between
|
||||
// scrolling thru search/home/subscription tabs while a player is minimized.
|
||||
//
|
||||
// To avoid this situation for users that never want to show Shorts (all hide Shorts options are enabled)
|
||||
// then hide all Shorts everywhere including the Library history and Library playlists.
|
||||
if (!hideHome && !hideSubscriptions && !hideSearch && !hideHistory) {
|
||||
return false;
|
||||
}
|
||||
if (hideHome && hideSubscriptions && hideSearch && hideHistory) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -352,24 +355,29 @@ public final class ShortsFilter extends Filter {
|
||||
}
|
||||
|
||||
// Avoid checking navigation button status if all other Shorts should show.
|
||||
if (!hideHome && !hideSubscriptions) {
|
||||
if (!hideHome && !hideSubscriptions && !hideHistory) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// Check navigation absolutely last since the check may block this thread.
|
||||
NavigationButton selectedNavButton = NavigationButton.getSelectedNavigationButton();
|
||||
if (selectedNavButton == null) {
|
||||
return hideHome; // Unknown tab, treat the same as home.
|
||||
}
|
||||
if (selectedNavButton == NavigationButton.HOME) {
|
||||
return hideHome;
|
||||
}
|
||||
if (selectedNavButton == NavigationButton.SUBSCRIPTIONS) {
|
||||
return hideSubscriptions;
|
||||
}
|
||||
// User must be in the library tab. Don't hide the history or any playlists here.
|
||||
return false;
|
||||
|
||||
return switch (selectedNavButton) {
|
||||
case HOME, EXPLORE -> hideHome;
|
||||
case SUBSCRIPTIONS -> hideSubscriptions;
|
||||
case LIBRARY -> hideHistory;
|
||||
default -> false;
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Injection point. Only used if patching older than 19.03.
|
||||
* This hook may be obsolete even for old versions
|
||||
* as they now use a litho layout like newer versions.
|
||||
*/
|
||||
public static void hideShortsShelf(final View shortsShelfView) {
|
||||
if (shouldHideShortsFeedItems()) {
|
||||
Utils.hideViewByLayoutParams(shortsShelfView);
|
||||
|
||||
@@ -32,6 +32,11 @@ public class CustomPlaybackSpeedPatch {
|
||||
*/
|
||||
public static final float PLAYBACK_SPEED_MAXIMUM = 8;
|
||||
|
||||
/**
|
||||
* Tap and hold speed.
|
||||
*/
|
||||
private static final float TAP_AND_HOLD_SPEED;
|
||||
|
||||
/**
|
||||
* Custom playback speeds.
|
||||
*/
|
||||
@@ -48,12 +53,27 @@ public class CustomPlaybackSpeedPatch {
|
||||
private static String[] preferenceListEntries, preferenceListEntryValues;
|
||||
|
||||
static {
|
||||
final float holdSpeed = Settings.SPEED_TAP_AND_HOLD.get();
|
||||
if (holdSpeed > 0 && holdSpeed <= PLAYBACK_SPEED_MAXIMUM) {
|
||||
TAP_AND_HOLD_SPEED = holdSpeed;
|
||||
} else {
|
||||
showInvalidCustomSpeedToast();
|
||||
Settings.SPEED_TAP_AND_HOLD.resetToDefault();
|
||||
TAP_AND_HOLD_SPEED = Settings.SPEED_TAP_AND_HOLD.get();
|
||||
}
|
||||
|
||||
loadCustomSpeeds();
|
||||
}
|
||||
|
||||
private static void resetCustomSpeeds(@NonNull String toastMessage) {
|
||||
Utils.showToastLong(toastMessage);
|
||||
Settings.CUSTOM_PLAYBACK_SPEEDS.resetToDefault();
|
||||
/**
|
||||
* Injection point.
|
||||
*/
|
||||
public static float tapAndHoldSpeed() {
|
||||
return TAP_AND_HOLD_SPEED;
|
||||
}
|
||||
|
||||
private static void showInvalidCustomSpeedToast() {
|
||||
Utils.showToastLong(str("revanced_custom_playback_speeds_invalid", PLAYBACK_SPEED_MAXIMUM));
|
||||
}
|
||||
|
||||
private static void loadCustomSpeeds() {
|
||||
@@ -74,17 +94,18 @@ public class CustomPlaybackSpeedPatch {
|
||||
}
|
||||
|
||||
if (speedFloat >= PLAYBACK_SPEED_MAXIMUM) {
|
||||
resetCustomSpeeds(str("revanced_custom_playback_speeds_invalid", PLAYBACK_SPEED_MAXIMUM));
|
||||
showInvalidCustomSpeedToast();
|
||||
Settings.CUSTOM_PLAYBACK_SPEEDS.resetToDefault();
|
||||
loadCustomSpeeds();
|
||||
return;
|
||||
}
|
||||
|
||||
customPlaybackSpeeds[i] = speedFloat;
|
||||
i++;
|
||||
customPlaybackSpeeds[i++] = speedFloat;
|
||||
}
|
||||
} catch (Exception ex) {
|
||||
Logger.printInfo(() -> "parse error", ex);
|
||||
resetCustomSpeeds(str("revanced_custom_playback_speeds_parse_exception"));
|
||||
Utils.showToastLong(str("revanced_custom_playback_speeds_parse_exception"));
|
||||
Settings.CUSTOM_PLAYBACK_SPEEDS.resetToDefault();
|
||||
loadCustomSpeeds();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -18,6 +18,8 @@ public final class SeekbarColorPatch {
|
||||
|
||||
private static final boolean SEEKBAR_CUSTOM_COLOR_ENABLED = Settings.SEEKBAR_CUSTOM_COLOR.get();
|
||||
|
||||
private static final boolean HIDE_SEEKBAR_THUMBNAIL_ENABLED = Settings.HIDE_SEEKBAR_THUMBNAIL.get();
|
||||
|
||||
/**
|
||||
* Default color of the litho seekbar.
|
||||
* Differs slightly from the default custom seekbar color setting.
|
||||
@@ -25,14 +27,19 @@ public final class SeekbarColorPatch {
|
||||
private static final int ORIGINAL_SEEKBAR_COLOR = 0xFFFF0000;
|
||||
|
||||
/**
|
||||
* Default colors of the gradient seekbar.
|
||||
* Feed default colors of the gradient seekbar.
|
||||
*/
|
||||
private static final int[] ORIGINAL_SEEKBAR_GRADIENT_COLORS = { 0xFFFF0033, 0xFFFF2791 };
|
||||
private static final int[] FEED_ORIGINAL_SEEKBAR_GRADIENT_COLORS = { 0xFFFF0033, 0xFFFF2791 };
|
||||
|
||||
/**
|
||||
* Default positions of the gradient seekbar.
|
||||
* Feed default positions of the gradient seekbar.
|
||||
*/
|
||||
private static final float[] ORIGINAL_SEEKBAR_GRADIENT_POSITIONS = { 0.8f, 1.0f };
|
||||
private static final float[] FEED_ORIGINAL_SEEKBAR_GRADIENT_POSITIONS = { 0.8f, 1.0f };
|
||||
|
||||
/**
|
||||
* Empty seekbar gradient, if hide seekbar in feed is enabled.
|
||||
*/
|
||||
private static final int[] HIDDEN_SEEKBAR_GRADIENT_COLORS = { 0x0, 0x0 };
|
||||
|
||||
/**
|
||||
* Default YouTube seekbar color brightness.
|
||||
@@ -41,16 +48,21 @@ public final class SeekbarColorPatch {
|
||||
|
||||
/**
|
||||
* If {@link Settings#SEEKBAR_CUSTOM_COLOR} is enabled,
|
||||
* this is the color value of {@link Settings#SEEKBAR_CUSTOM_COLOR_VALUE}.
|
||||
* this is the color value of {@link Settings#SEEKBAR_CUSTOM_COLOR_PRIMARY}.
|
||||
* Otherwise this is {@link #ORIGINAL_SEEKBAR_COLOR}.
|
||||
*/
|
||||
private static int seekbarColor = ORIGINAL_SEEKBAR_COLOR;
|
||||
private static int customSeekbarColor = ORIGINAL_SEEKBAR_COLOR;
|
||||
|
||||
/**
|
||||
* Custom seekbar hue, saturation, and brightness values.
|
||||
*/
|
||||
private static final float[] customSeekbarColorHSV = new float[3];
|
||||
|
||||
/**
|
||||
* Custom seekbar color, used for linear gradient replacements.
|
||||
*/
|
||||
private static final int[] customSeekbarColorGradient = new int[2];
|
||||
|
||||
static {
|
||||
float[] hsv = new float[3];
|
||||
Color.colorToHSV(ORIGINAL_SEEKBAR_COLOR, hsv);
|
||||
@@ -63,26 +75,22 @@ public final class SeekbarColorPatch {
|
||||
|
||||
private static void loadCustomSeekbarColor() {
|
||||
try {
|
||||
seekbarColor = Color.parseColor(Settings.SEEKBAR_CUSTOM_COLOR_VALUE.get());
|
||||
Color.colorToHSV(seekbarColor, customSeekbarColorHSV);
|
||||
customSeekbarColor = Color.parseColor(Settings.SEEKBAR_CUSTOM_COLOR_PRIMARY.get());
|
||||
Color.colorToHSV(customSeekbarColor, customSeekbarColorHSV);
|
||||
|
||||
customSeekbarColorGradient[0] = customSeekbarColor;
|
||||
customSeekbarColorGradient[1] = Color.parseColor(Settings.SEEKBAR_CUSTOM_COLOR_ACCENT.get());
|
||||
} catch (Exception ex) {
|
||||
Utils.showToastShort(str("revanced_seekbar_custom_color_invalid"));
|
||||
Settings.SEEKBAR_CUSTOM_COLOR_VALUE.resetToDefault();
|
||||
Settings.SEEKBAR_CUSTOM_COLOR_PRIMARY.resetToDefault();
|
||||
Settings.SEEKBAR_CUSTOM_COLOR_ACCENT.resetToDefault();
|
||||
|
||||
loadCustomSeekbarColor();
|
||||
}
|
||||
}
|
||||
|
||||
public static int getSeekbarColor() {
|
||||
return seekbarColor;
|
||||
}
|
||||
|
||||
/**
|
||||
* Injection point
|
||||
*/
|
||||
public static boolean playerSeekbarGradientEnabled(boolean original) {
|
||||
if (SEEKBAR_CUSTOM_COLOR_ENABLED) return false;
|
||||
|
||||
return original;
|
||||
return customSeekbarColor;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -126,7 +134,7 @@ public final class SeekbarColorPatch {
|
||||
// Even if the seekbar color xml value is changed to a completely different color (such as green),
|
||||
// a color filter still cannot be selectively applied when the drawable has more than 1 color.
|
||||
try {
|
||||
String seekbarStyle = get9BitStyleIdentifier(seekbarColor);
|
||||
String seekbarStyle = get9BitStyleIdentifier(customSeekbarColor);
|
||||
Logger.printDebug(() -> "Using splash seekbar style: " + seekbarStyle);
|
||||
|
||||
final int styleIdentifierDefault = Utils.getResourceIdentifier(
|
||||
@@ -146,6 +154,13 @@ public final class SeekbarColorPatch {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Injection point.
|
||||
*/
|
||||
public static boolean showWatchHistoryProgressDrawable(boolean original) {
|
||||
return !HIDE_SEEKBAR_THUMBNAIL_ENABLED && original;
|
||||
}
|
||||
|
||||
/**
|
||||
* Injection point.
|
||||
*
|
||||
@@ -156,35 +171,61 @@ public final class SeekbarColorPatch {
|
||||
*/
|
||||
public static int getLithoColor(int colorValue) {
|
||||
if (colorValue == ORIGINAL_SEEKBAR_COLOR) {
|
||||
if (Settings.HIDE_SEEKBAR_THUMBNAIL.get()) {
|
||||
return 0x00000000;
|
||||
if (HIDE_SEEKBAR_THUMBNAIL_ENABLED) {
|
||||
return 0x0;
|
||||
}
|
||||
|
||||
return getSeekbarColorValue(ORIGINAL_SEEKBAR_COLOR);
|
||||
return customSeekbarColor;
|
||||
}
|
||||
|
||||
return colorValue;
|
||||
}
|
||||
|
||||
private static String colorArrayToHex(int[] colors) {
|
||||
final int length = colors.length;
|
||||
StringBuilder builder = new StringBuilder(length * 12);
|
||||
builder.append("[");
|
||||
|
||||
int i = 0;
|
||||
for (int color : colors) {
|
||||
builder.append(String.format("#%X", color));
|
||||
if (++i < length) {
|
||||
builder.append(", ");
|
||||
}
|
||||
}
|
||||
|
||||
builder.append("]");
|
||||
return builder.toString();
|
||||
}
|
||||
|
||||
/**
|
||||
* Injection point.
|
||||
*/
|
||||
public static void setLinearGradient(int[] colors, float[] positions) {
|
||||
final boolean hideSeekbar = Settings.HIDE_SEEKBAR_THUMBNAIL.get();
|
||||
public static int[] getPlayerLinearGradient(int[] original) {
|
||||
return SEEKBAR_CUSTOM_COLOR_ENABLED
|
||||
? customSeekbarColorGradient
|
||||
: original;
|
||||
}
|
||||
|
||||
if (SEEKBAR_CUSTOM_COLOR_ENABLED || hideSeekbar) {
|
||||
/**
|
||||
* Injection point.
|
||||
*/
|
||||
public static int[] getLithoLinearGradient(int[] colors, float[] positions) {
|
||||
if (SEEKBAR_CUSTOM_COLOR_ENABLED || HIDE_SEEKBAR_THUMBNAIL_ENABLED) {
|
||||
// Most litho usage of linear gradients is hooked here,
|
||||
// so must only change if the values are those for the seekbar.
|
||||
if (Arrays.equals(ORIGINAL_SEEKBAR_GRADIENT_COLORS, colors)
|
||||
&& Arrays.equals(ORIGINAL_SEEKBAR_GRADIENT_POSITIONS, positions)) {
|
||||
Arrays.fill(colors, hideSeekbar
|
||||
? 0x00000000
|
||||
: seekbarColor);
|
||||
return;
|
||||
if ((Arrays.equals(FEED_ORIGINAL_SEEKBAR_GRADIENT_COLORS, colors)
|
||||
&& Arrays.equals(FEED_ORIGINAL_SEEKBAR_GRADIENT_POSITIONS, positions))) {
|
||||
return HIDE_SEEKBAR_THUMBNAIL_ENABLED
|
||||
? HIDDEN_SEEKBAR_GRADIENT_COLORS
|
||||
: customSeekbarColorGradient;
|
||||
}
|
||||
|
||||
Logger.printDebug(() -> "Ignoring gradient colors: " + Arrays.toString(colors)
|
||||
Logger.printDebug(() -> "Ignoring gradient colors: " + colorArrayToHex(colors)
|
||||
+ " positions: " + Arrays.toString(positions));
|
||||
}
|
||||
|
||||
return colors;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -198,7 +239,7 @@ public final class SeekbarColorPatch {
|
||||
}
|
||||
|
||||
return colorValue == ORIGINAL_SEEKBAR_COLOR
|
||||
? getSeekbarColorValue(ORIGINAL_SEEKBAR_COLOR)
|
||||
? customSeekbarColor
|
||||
: colorValue;
|
||||
}
|
||||
|
||||
@@ -208,11 +249,9 @@ public final class SeekbarColorPatch {
|
||||
* Overrides color used for the video player seekbar.
|
||||
*/
|
||||
public static int getVideoPlayerSeekbarColor(int originalColor) {
|
||||
if (!SEEKBAR_CUSTOM_COLOR_ENABLED) {
|
||||
return originalColor;
|
||||
}
|
||||
|
||||
return getSeekbarColorValue(originalColor);
|
||||
return SEEKBAR_CUSTOM_COLOR_ENABLED
|
||||
? getSeekbarColorValue(originalColor)
|
||||
: originalColor;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -221,10 +260,6 @@ public final class SeekbarColorPatch {
|
||||
*/
|
||||
private static int getSeekbarColorValue(int originalColor) {
|
||||
try {
|
||||
if (!SEEKBAR_CUSTOM_COLOR_ENABLED || originalColor == seekbarColor) {
|
||||
return originalColor; // nothing to do
|
||||
}
|
||||
|
||||
final int alphaDifference = Color.alpha(originalColor) - Color.alpha(ORIGINAL_SEEKBAR_COLOR);
|
||||
|
||||
// The seekbar uses the same color but different brightness for different situations.
|
||||
@@ -237,7 +272,7 @@ public final class SeekbarColorPatch {
|
||||
hsv[1] = customSeekbarColorHSV[1];
|
||||
hsv[2] = clamp(customSeekbarColorHSV[2] + brightnessDifference, 0, 1);
|
||||
|
||||
final int replacementAlpha = clamp(Color.alpha(seekbarColor) + alphaDifference, 0, 255);
|
||||
final int replacementAlpha = clamp(Color.alpha(customSeekbarColor) + alphaDifference, 0, 255);
|
||||
final int replacementColor = Color.HSVToColor(replacementAlpha, hsv);
|
||||
Logger.printDebug(() -> String.format("Original color: #%08X replacement color: #%08X",
|
||||
originalColor, replacementColor));
|
||||
|
||||
@@ -1,21 +1,30 @@
|
||||
package app.revanced.extension.youtube.settings;
|
||||
|
||||
import static app.revanced.extension.shared.Utils.getResourceIdentifier;
|
||||
|
||||
import android.annotation.SuppressLint;
|
||||
import android.app.Activity;
|
||||
import android.content.Context;
|
||||
import android.os.Build;
|
||||
import android.preference.PreferenceFragment;
|
||||
import android.util.TypedValue;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.ImageButton;
|
||||
import android.widget.TextView;
|
||||
import app.revanced.extension.shared.Logger;
|
||||
import app.revanced.extension.youtube.ThemeHelper;
|
||||
import app.revanced.extension.youtube.settings.preference.ReVancedPreferenceFragment;
|
||||
import app.revanced.extension.youtube.settings.preference.ReturnYouTubeDislikePreferenceFragment;
|
||||
import app.revanced.extension.youtube.settings.preference.SponsorBlockPreferenceFragment;
|
||||
import android.widget.Toolbar;
|
||||
|
||||
import androidx.annotation.RequiresApi;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
import static app.revanced.extension.shared.Utils.getChildView;
|
||||
import static app.revanced.extension.shared.Utils.getResourceIdentifier;
|
||||
import app.revanced.extension.shared.Logger;
|
||||
import app.revanced.extension.shared.Utils;
|
||||
import app.revanced.extension.shared.settings.AppLanguage;
|
||||
import app.revanced.extension.shared.settings.BaseSettings;
|
||||
import app.revanced.extension.youtube.ThemeHelper;
|
||||
import app.revanced.extension.youtube.patches.VersionCheckPatch;
|
||||
import app.revanced.extension.youtube.settings.preference.ReVancedPreferenceFragment;
|
||||
import app.revanced.extension.youtube.settings.preference.ReturnYouTubeDislikePreferenceFragment;
|
||||
import app.revanced.extension.youtube.settings.preference.SponsorBlockPreferenceFragment;
|
||||
|
||||
/**
|
||||
* Hooks LicenseActivity.
|
||||
@@ -25,17 +34,57 @@ import static app.revanced.extension.shared.Utils.getResourceIdentifier;
|
||||
@SuppressWarnings("unused")
|
||||
public class LicenseActivityHook {
|
||||
|
||||
private static ViewGroup.LayoutParams toolbarLayoutParams;
|
||||
|
||||
public static void setToolbarLayoutParams(Toolbar toolbar) {
|
||||
if (toolbarLayoutParams != null) {
|
||||
toolbar.setLayoutParams(toolbarLayoutParams);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Injection point.
|
||||
* Overrides the ReVanced settings language.
|
||||
*/
|
||||
public static Context getAttachBaseContext(Context original) {
|
||||
AppLanguage language = BaseSettings.REVANCED_LANGUAGE.get();
|
||||
if (language == AppLanguage.DEFAULT) {
|
||||
return original;
|
||||
}
|
||||
|
||||
return Utils.getContext();
|
||||
}
|
||||
|
||||
/**
|
||||
* Injection point.
|
||||
*/
|
||||
public static boolean useCairoSettingsFragment(boolean original) {
|
||||
// Early targets have layout issues and it's better to always force off.
|
||||
if (!VersionCheckPatch.IS_19_34_OR_GREATER) {
|
||||
return false;
|
||||
}
|
||||
if (Settings.RESTORE_OLD_SETTINGS_MENUS.get()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// On the first launch of a clean install, forcing the cairo menu can give a
|
||||
// half broken appearance because all the preference icons may not be available yet.
|
||||
// 19.34+ cairo settings are always on, so it doesn't need to be forced anyway.
|
||||
// Cairo setting will show on the next launch of the app.
|
||||
return original;
|
||||
}
|
||||
|
||||
/**
|
||||
* Injection point.
|
||||
* <p>
|
||||
* Hooks LicenseActivity#onCreate in order to inject our own fragment.
|
||||
*/
|
||||
@RequiresApi(api = Build.VERSION_CODES.N)
|
||||
public static void initialize(Activity licenseActivity) {
|
||||
try {
|
||||
ThemeHelper.setActivityTheme(licenseActivity);
|
||||
licenseActivity.setContentView(
|
||||
getResourceIdentifier("revanced_settings_with_toolbar", "layout"));
|
||||
setBackButton(licenseActivity);
|
||||
licenseActivity.setContentView(getResourceIdentifier(
|
||||
"revanced_settings_with_toolbar", "layout"));
|
||||
|
||||
PreferenceFragment fragment;
|
||||
String toolbarTitleResourceName;
|
||||
@@ -58,7 +107,7 @@ public class LicenseActivityHook {
|
||||
return;
|
||||
}
|
||||
|
||||
setToolbarTitle(licenseActivity, toolbarTitleResourceName);
|
||||
createToolbar(licenseActivity, toolbarTitleResourceName);
|
||||
|
||||
//noinspection deprecation
|
||||
licenseActivity.getFragmentManager()
|
||||
@@ -70,28 +119,36 @@ public class LicenseActivityHook {
|
||||
}
|
||||
}
|
||||
|
||||
private static void setToolbarTitle(Activity activity, String toolbarTitleResourceName) {
|
||||
ViewGroup toolbar = activity.findViewById(getToolbarResourceId());
|
||||
TextView toolbarTextView = Objects.requireNonNull(getChildView(toolbar, false,
|
||||
view -> view instanceof TextView));
|
||||
toolbarTextView.setText(getResourceIdentifier(toolbarTitleResourceName, "string"));
|
||||
}
|
||||
|
||||
@RequiresApi(api = Build.VERSION_CODES.N)
|
||||
@SuppressLint("UseCompatLoadingForDrawables")
|
||||
private static void setBackButton(Activity activity) {
|
||||
ViewGroup toolbar = activity.findViewById(getToolbarResourceId());
|
||||
ImageButton imageButton = Objects.requireNonNull(getChildView(toolbar, false,
|
||||
view -> view instanceof ImageButton));
|
||||
imageButton.setImageDrawable(ReVancedPreferenceFragment.getBackButtonDrawable());
|
||||
imageButton.setOnClickListener(view -> activity.onBackPressed());
|
||||
}
|
||||
private static void createToolbar(Activity activity, String toolbarTitleResourceName) {
|
||||
// Replace dummy placeholder toolbar.
|
||||
// This is required to fix submenu title alignment issue with Android ASOP 15+
|
||||
ViewGroup toolBarParent = activity.findViewById(
|
||||
getResourceIdentifier("revanced_toolbar_parent", "id"));
|
||||
ViewGroup dummyToolbar = toolBarParent.findViewById(getResourceIdentifier(
|
||||
"revanced_toolbar", "id"));
|
||||
toolbarLayoutParams = dummyToolbar.getLayoutParams();
|
||||
toolBarParent.removeView(dummyToolbar);
|
||||
|
||||
private static int getToolbarResourceId() {
|
||||
final int toolbarResourceId = getResourceIdentifier("revanced_toolbar", "id");
|
||||
if (toolbarResourceId == 0) {
|
||||
throw new IllegalStateException("Could not find back button resource");
|
||||
Toolbar toolbar = new Toolbar(toolBarParent.getContext());
|
||||
toolbar.setBackgroundColor(ThemeHelper.getToolbarBackgroundColor());
|
||||
toolbar.setNavigationIcon(ReVancedPreferenceFragment.getBackButtonDrawable());
|
||||
toolbar.setNavigationOnClickListener(view -> activity.onBackPressed());
|
||||
toolbar.setTitle(getResourceIdentifier(toolbarTitleResourceName, "string"));
|
||||
|
||||
final int margin = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 16,
|
||||
Utils.getContext().getResources().getDisplayMetrics());
|
||||
toolbar.setTitleMarginStart(margin);
|
||||
toolbar.setTitleMarginEnd(margin);
|
||||
TextView toolbarTextView = Utils.getChildView(toolbar, false,
|
||||
view -> view instanceof TextView);
|
||||
if (toolbarTextView != null) {
|
||||
toolbarTextView.setTextColor(ThemeHelper.getForegroundColor());
|
||||
}
|
||||
return toolbarResourceId;
|
||||
setToolbarLayoutParams(toolbar);
|
||||
|
||||
toolBarParent.addView(toolbar, 0);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -7,8 +7,10 @@ import static app.revanced.extension.shared.settings.Setting.migrateFromOldPrefe
|
||||
import static app.revanced.extension.shared.settings.Setting.migrateOldSettingToNew;
|
||||
import static app.revanced.extension.shared.settings.Setting.parent;
|
||||
import static app.revanced.extension.shared.settings.Setting.parentsAny;
|
||||
import static app.revanced.extension.shared.spoof.SpoofVideoStreamsPatch.NotSpoofingAndroidAvailability;
|
||||
import static app.revanced.extension.youtube.patches.ChangeFormFactorPatch.FormFactor;
|
||||
import static app.revanced.extension.youtube.patches.ChangeStartPagePatch.StartPage;
|
||||
import static app.revanced.extension.youtube.patches.ExitFullscreenPatch.FullscreenMode;
|
||||
import static app.revanced.extension.youtube.patches.ForceOriginalAudioPatch.ForceOriginalAudioAvailability;
|
||||
import static app.revanced.extension.youtube.patches.MiniplayerPatch.MiniplayerHideExpandCloseAvailability;
|
||||
import static app.revanced.extension.youtube.patches.MiniplayerPatch.MiniplayerHorizontalDragAvailability;
|
||||
import static app.revanced.extension.youtube.patches.MiniplayerPatch.MiniplayerType;
|
||||
@@ -25,6 +27,8 @@ import static app.revanced.extension.youtube.sponsorblock.objects.CategoryBehavi
|
||||
import static app.revanced.extension.youtube.sponsorblock.objects.CategoryBehaviour.SKIP_AUTOMATICALLY;
|
||||
import static app.revanced.extension.youtube.sponsorblock.objects.CategoryBehaviour.SKIP_AUTOMATICALLY_ONCE;
|
||||
|
||||
import android.graphics.Color;
|
||||
|
||||
import app.revanced.extension.shared.Logger;
|
||||
import app.revanced.extension.shared.settings.BaseSettings;
|
||||
import app.revanced.extension.shared.settings.BooleanSetting;
|
||||
@@ -43,21 +47,24 @@ import app.revanced.extension.youtube.sponsorblock.SponsorBlockSettings;
|
||||
|
||||
public class Settings extends BaseSettings {
|
||||
// Video
|
||||
public static final BooleanSetting DISABLE_HDR_VIDEO = new BooleanSetting("revanced_disable_hdr_video", FALSE);
|
||||
public static final BooleanSetting RESTORE_OLD_VIDEO_QUALITY_MENU = new BooleanSetting("revanced_restore_old_video_quality_menu", TRUE);
|
||||
public static final BooleanSetting REMEMBER_VIDEO_QUALITY_LAST_SELECTED = new BooleanSetting("revanced_remember_video_quality_last_selected", FALSE);
|
||||
public static final IntegerSetting VIDEO_QUALITY_DEFAULT_WIFI = new IntegerSetting("revanced_video_quality_default_wifi", -2);
|
||||
public static final IntegerSetting VIDEO_QUALITY_DEFAULT_MOBILE = new IntegerSetting("revanced_video_quality_default_mobile", -2);
|
||||
// Speed
|
||||
public static final FloatSetting SPEED_TAP_AND_HOLD = new FloatSetting("revanced_speed_tap_and_hold", 2.0f, true);
|
||||
public static final BooleanSetting REMEMBER_PLAYBACK_SPEED_LAST_SELECTED = new BooleanSetting("revanced_remember_playback_speed_last_selected", FALSE);
|
||||
public static final BooleanSetting CUSTOM_SPEED_MENU = new BooleanSetting("revanced_custom_speed_menu", TRUE);
|
||||
public static final FloatSetting PLAYBACK_SPEED_DEFAULT = new FloatSetting("revanced_playback_speed_default", -2.0f);
|
||||
public static final StringSetting CUSTOM_PLAYBACK_SPEEDS = new StringSetting("revanced_custom_playback_speeds",
|
||||
"0.25\n0.5\n0.75\n0.9\n0.95\n1.0\n1.05\n1.1\n1.25\n1.5\n1.75\n2.0\n3.0\n4.0\n5.0", true);
|
||||
// Audio
|
||||
public static final BooleanSetting FORCE_ORIGINAL_AUDIO = new BooleanSetting("revanced_force_original_audio", FALSE, new NotSpoofingAndroidAvailability());
|
||||
public static final BooleanSetting FORCE_ORIGINAL_AUDIO = new BooleanSetting("revanced_force_original_audio", FALSE, new ForceOriginalAudioAvailability());
|
||||
|
||||
// Ads
|
||||
public static final BooleanSetting HIDE_BUTTONED_ADS = new BooleanSetting("revanced_hide_buttoned_ads", TRUE);
|
||||
public static final BooleanSetting HIDE_END_SCREEN_STORE_BANNER = new BooleanSetting("revanced_hide_end_screen_store_banner", TRUE, true);
|
||||
public static final BooleanSetting HIDE_FULLSCREEN_ADS = new BooleanSetting("revanced_hide_fullscreen_ads", TRUE);
|
||||
public static final BooleanSetting HIDE_GENERAL_ADS = new BooleanSetting("revanced_hide_general_ads", TRUE);
|
||||
public static final BooleanSetting HIDE_GET_PREMIUM = new BooleanSetting("revanced_hide_get_premium", TRUE);
|
||||
@@ -120,6 +127,7 @@ public class Settings extends BaseSettings {
|
||||
public static final BooleanSetting DISABLE_LIKE_SUBSCRIBE_GLOW = new BooleanSetting("revanced_disable_like_subscribe_glow", FALSE);
|
||||
public static final BooleanSetting DISABLE_ROLLING_NUMBER_ANIMATIONS = new BooleanSetting("revanced_disable_rolling_number_animations", FALSE);
|
||||
public static final BooleanSetting DISABLE_SUGGESTED_VIDEO_END_SCREEN = new BooleanSetting("revanced_disable_suggested_video_end_screen", FALSE, true);
|
||||
public static final EnumSetting<FullscreenMode> EXIT_FULLSCREEN = new EnumSetting<>("revanced_exit_fullscreen", FullscreenMode.DISABLED);
|
||||
public static final BooleanSetting HIDE_AUTOPLAY_BUTTON = new BooleanSetting("revanced_hide_autoplay_button", TRUE, true);
|
||||
public static final BooleanSetting HIDE_CAPTIONS_BUTTON = new BooleanSetting("revanced_hide_captions_button", FALSE);
|
||||
public static final BooleanSetting HIDE_CAST_BUTTON = new BooleanSetting("revanced_hide_cast_button", TRUE, true);
|
||||
@@ -139,10 +147,10 @@ public class Settings extends BaseSettings {
|
||||
public static final BooleanSetting HIDE_SUBSCRIBERS_COMMUNITY_GUIDELINES = new BooleanSetting("revanced_hide_subscribers_community_guidelines", TRUE);
|
||||
public static final BooleanSetting HIDE_TIMED_REACTIONS = new BooleanSetting("revanced_hide_timed_reactions", TRUE);
|
||||
public static final BooleanSetting HIDE_VIDEO_CHANNEL_WATERMARK = new BooleanSetting("revanced_hide_channel_watermark", TRUE);
|
||||
public static final BooleanSetting PLAYBACK_SPEED_DIALOG_BUTTON = new BooleanSetting("revanced_playback_speed_dialog_button", FALSE);
|
||||
public static final BooleanSetting PLAYER_POPUP_PANELS = new BooleanSetting("revanced_hide_player_popup_panels", FALSE);
|
||||
public static final IntegerSetting PLAYER_OVERLAY_OPACITY = new IntegerSetting("revanced_player_overlay_opacity", 100, true);
|
||||
public static final BooleanSetting OPEN_VIDEOS_FULLSCREEN_PORTRAIT = new BooleanSetting("revanced_open_videos_fullscreen_portrait", FALSE);
|
||||
public static final BooleanSetting PLAYBACK_SPEED_DIALOG_BUTTON = new BooleanSetting("revanced_playback_speed_dialog_button", FALSE);
|
||||
public static final IntegerSetting PLAYER_OVERLAY_OPACITY = new IntegerSetting("revanced_player_overlay_opacity", 100, true);
|
||||
public static final BooleanSetting PLAYER_POPUP_PANELS = new BooleanSetting("revanced_hide_player_popup_panels", FALSE);
|
||||
// Miniplayer
|
||||
public static final EnumSetting<MiniplayerType> MINIPLAYER_TYPE = new EnumSetting<>("revanced_miniplayer_type", MiniplayerType.DEFAULT, true);
|
||||
private static final Availability MINIPLAYER_ANY_MODERN = MINIPLAYER_TYPE.availability(MODERN_1, MODERN_2, MODERN_3, MODERN_4);
|
||||
@@ -171,6 +179,7 @@ public class Settings extends BaseSettings {
|
||||
// Description
|
||||
public static final BooleanSetting HIDE_ATTRIBUTES_SECTION = new BooleanSetting("revanced_hide_attributes_section", FALSE);
|
||||
public static final BooleanSetting HIDE_CHAPTERS_SECTION = new BooleanSetting("revanced_hide_chapters_section", TRUE);
|
||||
public static final BooleanSetting HIDE_HOW_THIS_WAS_MADE_SECTION = new BooleanSetting("revanced_hide_how_this_was_made_section", FALSE);
|
||||
public static final BooleanSetting HIDE_INFO_CARDS_SECTION = new BooleanSetting("revanced_hide_info_cards_section", TRUE);
|
||||
public static final BooleanSetting HIDE_KEY_CONCEPTS_SECTION = new BooleanSetting("revanced_hide_key_concepts_section", FALSE);
|
||||
public static final BooleanSetting HIDE_PODCAST_SECTION = new BooleanSetting("revanced_hide_podcast_section", TRUE);
|
||||
@@ -200,15 +209,16 @@ public class Settings extends BaseSettings {
|
||||
public static final BooleanSetting HIDE_PLAYER_FLYOUT_WATCH_IN_VR = new BooleanSetting("revanced_hide_player_flyout_watch_in_vr", TRUE);
|
||||
|
||||
// General layout
|
||||
public static final BooleanSetting RESTORE_OLD_SETTINGS_MENUS = new BooleanSetting("revanced_restore_old_settings_menus", FALSE, true);
|
||||
public static final EnumSetting<FormFactor> CHANGE_FORM_FACTOR = new EnumSetting<>("revanced_change_form_factor", FormFactor.DEFAULT, true, "revanced_change_form_factor_user_dialog_message");
|
||||
public static final BooleanSetting BYPASS_IMAGE_REGION_RESTRICTIONS = new BooleanSetting("revanced_bypass_image_region_restrictions", FALSE, true);
|
||||
public static final BooleanSetting GRADIENT_LOADING_SCREEN = new BooleanSetting("revanced_gradient_loading_screen", FALSE, true);
|
||||
public static final BooleanSetting REMOVE_VIEWER_DISCRETION_DIALOG = new BooleanSetting("revanced_remove_viewer_discretion_dialog", FALSE,
|
||||
"revanced_remove_viewer_discretion_dialog_user_dialog_message");
|
||||
public static final BooleanSetting SPOOF_APP_VERSION = new BooleanSetting("revanced_spoof_app_version", FALSE, true, "revanced_spoof_app_version_user_dialog_message");
|
||||
public static final BooleanSetting TABLET_LAYOUT = new BooleanSetting("revanced_tablet_layout", FALSE, true, "revanced_tablet_layout_user_dialog_message");
|
||||
public static final BooleanSetting WIDE_SEARCHBAR = new BooleanSetting("revanced_wide_searchbar", FALSE, true);
|
||||
public static final EnumSetting<StartPage> CHANGE_START_PAGE = new EnumSetting<>("revanced_change_start_page", StartPage.DEFAULT, true);
|
||||
public static final StringSetting SPOOF_APP_VERSION_TARGET = new StringSetting("revanced_spoof_app_version_target", IS_19_17_OR_GREATER ? "19.35.36" : "17.33.42", true, parent(SPOOF_APP_VERSION));
|
||||
public static final StringSetting SPOOF_APP_VERSION_TARGET = new StringSetting("revanced_spoof_app_version_target", IS_19_17_OR_GREATER ? "19.26.42" : "17.33.42", true, parent(SPOOF_APP_VERSION));
|
||||
// Custom filter
|
||||
public static final BooleanSetting CUSTOM_FILTER = new BooleanSetting("revanced_custom_filter", FALSE);
|
||||
public static final StringSetting CUSTOM_FILTER_STRINGS = new StringSetting("revanced_custom_filter_strings", "", true, parent(CUSTOM_FILTER));
|
||||
@@ -233,6 +243,7 @@ public class Settings extends BaseSettings {
|
||||
public static final BooleanSetting HIDE_SHORTS_FULL_VIDEO_LINK_LABEL = new BooleanSetting("revanced_hide_shorts_full_video_link_label", FALSE);
|
||||
public static final BooleanSetting HIDE_SHORTS_GREEN_SCREEN_BUTTON = new BooleanSetting("revanced_hide_shorts_green_screen_button", TRUE);
|
||||
public static final BooleanSetting HIDE_SHORTS_HASHTAG_BUTTON = new BooleanSetting("revanced_hide_shorts_hashtag_button", TRUE);
|
||||
public static final BooleanSetting HIDE_SHORTS_HISTORY = new BooleanSetting("revanced_hide_shorts_history", FALSE);
|
||||
public static final BooleanSetting HIDE_SHORTS_HOME = new BooleanSetting("revanced_hide_shorts_home", FALSE);
|
||||
public static final BooleanSetting HIDE_SHORTS_INFO_PANEL = new BooleanSetting("revanced_hide_shorts_info_panel", TRUE);
|
||||
public static final BooleanSetting HIDE_SHORTS_JOIN_BUTTON = new BooleanSetting("revanced_hide_shorts_join_button", TRUE);
|
||||
@@ -261,18 +272,19 @@ public class Settings extends BaseSettings {
|
||||
public static final BooleanSetting SHORTS_AUTOPLAY_BACKGROUND = new BooleanSetting("revanced_shorts_autoplay_background", TRUE);
|
||||
|
||||
// Seekbar
|
||||
|
||||
public static final BooleanSetting DISABLE_PRECISE_SEEKING_GESTURE = new BooleanSetting("revanced_disable_precise_seeking_gesture", TRUE);
|
||||
public static final BooleanSetting DISABLE_PRECISE_SEEKING_GESTURE = new BooleanSetting("revanced_disable_precise_seeking_gesture", FALSE);
|
||||
public static final BooleanSetting HIDE_SEEKBAR = new BooleanSetting("revanced_hide_seekbar", FALSE, true);
|
||||
public static final BooleanSetting HIDE_SEEKBAR_THUMBNAIL = new BooleanSetting("revanced_hide_seekbar_thumbnail", FALSE);
|
||||
public static final BooleanSetting HIDE_SEEKBAR_THUMBNAIL = new BooleanSetting("revanced_hide_seekbar_thumbnail", FALSE, true);
|
||||
public static final BooleanSetting HIDE_TIMESTAMP = new BooleanSetting("revanced_hide_timestamp", FALSE);
|
||||
public static final BooleanSetting RESTORE_OLD_SEEKBAR_THUMBNAILS = new BooleanSetting("revanced_restore_old_seekbar_thumbnails", TRUE);
|
||||
public static final BooleanSetting SEEKBAR_CUSTOM_COLOR = new BooleanSetting("revanced_seekbar_custom_color", FALSE, true);
|
||||
public static final BooleanSetting SEEKBAR_TAPPING = new BooleanSetting("revanced_seekbar_tapping", TRUE);
|
||||
public static final BooleanSetting SEEKBAR_TAPPING = new BooleanSetting("revanced_seekbar_tapping", FALSE);
|
||||
public static final BooleanSetting SEEKBAR_THUMBNAILS_HIGH_QUALITY = new BooleanSetting("revanced_seekbar_thumbnails_high_quality", FALSE, true,
|
||||
"revanced_seekbar_thumbnails_high_quality_dialog_message", new SeekbarThumbnailsHighQualityAvailability());
|
||||
public static final BooleanSetting SLIDE_TO_SEEK = new BooleanSetting("revanced_slide_to_seek", FALSE, true);
|
||||
public static final StringSetting SEEKBAR_CUSTOM_COLOR_VALUE = new StringSetting("revanced_seekbar_custom_color_value", "#FF0033", true, parent(SEEKBAR_CUSTOM_COLOR));
|
||||
public static final BooleanSetting SEEKBAR_CUSTOM_COLOR = new BooleanSetting("revanced_seekbar_custom_color", FALSE, true);
|
||||
private static final StringSetting DEPRECATED_SEEKBAR_CUSTOM_COLOR_PRIMARY = new StringSetting("revanced_seekbar_custom_color_value", "#FF0033");
|
||||
public static final StringSetting SEEKBAR_CUSTOM_COLOR_PRIMARY = new StringSetting("revanced_seekbar_custom_color_primary", "#FF0033", true, parent(SEEKBAR_CUSTOM_COLOR));
|
||||
public static final StringSetting SEEKBAR_CUSTOM_COLOR_ACCENT = new StringSetting("revanced_seekbar_custom_color_accent", "#FF2791", true, parent(SEEKBAR_CUSTOM_COLOR));
|
||||
|
||||
// Misc
|
||||
public static final BooleanSetting ANNOUNCEMENTS = new BooleanSetting("revanced_announcements", TRUE);
|
||||
@@ -293,8 +305,9 @@ public class Settings extends BaseSettings {
|
||||
public static final BooleanSetting DEBUG_PROTOBUFFER = new BooleanSetting("revanced_debug_protobuffer", FALSE, parent(BaseSettings.DEBUG));
|
||||
|
||||
// Swipe controls
|
||||
public static final BooleanSetting SWIPE_BRIGHTNESS = new BooleanSetting("revanced_swipe_brightness", TRUE);
|
||||
public static final BooleanSetting SWIPE_VOLUME = new BooleanSetting("revanced_swipe_volume", TRUE);
|
||||
public static final BooleanSetting SWIPE_CHANGE_VIDEO = new BooleanSetting("revanced_swipe_change_video", FALSE, true);
|
||||
public static final BooleanSetting SWIPE_BRIGHTNESS = new BooleanSetting("revanced_swipe_brightness", FALSE);
|
||||
public static final BooleanSetting SWIPE_VOLUME = new BooleanSetting("revanced_swipe_volume", FALSE);
|
||||
public static final BooleanSetting SWIPE_PRESS_TO_ENGAGE = new BooleanSetting("revanced_swipe_press_to_engage", FALSE, true,
|
||||
parentsAny(SWIPE_BRIGHTNESS, SWIPE_VOLUME));
|
||||
public static final BooleanSetting SWIPE_HAPTIC_FEEDBACK = new BooleanSetting("revanced_swipe_haptic_feedback", TRUE, true,
|
||||
@@ -399,6 +412,30 @@ public class Settings extends BaseSettings {
|
||||
MINIPLAYER_TYPE.save(MINIMAL);
|
||||
}
|
||||
|
||||
// Migrate old single color seekbar with a slightly brighter accent color based on the primary.
|
||||
// Eventually delete this logic.
|
||||
if (!DEPRECATED_SEEKBAR_CUSTOM_COLOR_PRIMARY.isSetToDefault()) {
|
||||
try {
|
||||
String oldPrimaryColorString = DEPRECATED_SEEKBAR_CUSTOM_COLOR_PRIMARY.get();
|
||||
final int oldPrimaryColor = Color.parseColor(oldPrimaryColorString);
|
||||
SEEKBAR_CUSTOM_COLOR_PRIMARY.save(oldPrimaryColorString);
|
||||
|
||||
final float brightnessScale = 1.3f;
|
||||
final int accentColor = Color.argb(
|
||||
0, // Save without alpha channel.
|
||||
Math.min(255, (int) (brightnessScale * Color.red(oldPrimaryColor))),
|
||||
Math.min(255, (int) (brightnessScale * Color.green(oldPrimaryColor))),
|
||||
Math.min(255, (int) (brightnessScale * Color.blue(oldPrimaryColor)))
|
||||
);
|
||||
|
||||
SEEKBAR_CUSTOM_COLOR_ACCENT.save(String.format("#%06X", accentColor));
|
||||
} catch (Exception ex) {
|
||||
Logger.printException(() -> "Could not parse old seekbar color", ex);
|
||||
}
|
||||
|
||||
DEPRECATED_SEEKBAR_CUSTOM_COLOR_PRIMARY.resetToDefault();
|
||||
}
|
||||
|
||||
// endregion
|
||||
|
||||
// region SB import/export callbacks
|
||||
|
||||
@@ -0,0 +1,36 @@
|
||||
package app.revanced.extension.youtube.settings.preference;
|
||||
|
||||
import static app.revanced.extension.shared.StringRef.str;
|
||||
|
||||
import android.content.Context;
|
||||
import android.preference.SwitchPreference;
|
||||
import android.util.AttributeSet;
|
||||
|
||||
import app.revanced.extension.youtube.patches.ForceOriginalAudioPatch;
|
||||
|
||||
@SuppressWarnings({"deprecation", "unused"})
|
||||
public class ForceOriginalAudioSwitchPreference extends SwitchPreference {
|
||||
|
||||
{
|
||||
if (!ForceOriginalAudioPatch.PATCH_AVAILABLE) {
|
||||
// Show why force audio is not available.
|
||||
String summary = str("revanced_force_original_audio_not_available");
|
||||
setSummary(summary);
|
||||
setSummaryOn(summary);
|
||||
setSummaryOff(summary);
|
||||
}
|
||||
}
|
||||
|
||||
public ForceOriginalAudioSwitchPreference(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
|
||||
super(context, attrs, defStyleAttr, defStyleRes);
|
||||
}
|
||||
public ForceOriginalAudioSwitchPreference(Context context, AttributeSet attrs, int defStyleAttr) {
|
||||
super(context, attrs, defStyleAttr);
|
||||
}
|
||||
public ForceOriginalAudioSwitchPreference(Context context, AttributeSet attrs) {
|
||||
super(context, attrs);
|
||||
}
|
||||
public ForceOriginalAudioSwitchPreference(Context context) {
|
||||
super(context);
|
||||
}
|
||||
}
|
||||
@@ -25,9 +25,12 @@ import java.util.List;
|
||||
|
||||
import app.revanced.extension.shared.Logger;
|
||||
import app.revanced.extension.shared.Utils;
|
||||
import app.revanced.extension.shared.settings.BaseSettings;
|
||||
import app.revanced.extension.shared.settings.EnumSetting;
|
||||
import app.revanced.extension.shared.settings.preference.AbstractPreferenceFragment;
|
||||
import app.revanced.extension.youtube.ThemeHelper;
|
||||
import app.revanced.extension.youtube.patches.playback.speed.CustomPlaybackSpeedPatch;
|
||||
import app.revanced.extension.youtube.settings.LicenseActivityHook;
|
||||
import app.revanced.extension.youtube.settings.Settings;
|
||||
|
||||
/**
|
||||
@@ -109,15 +112,20 @@ public class ReVancedPreferenceFragment extends AbstractPreferenceFragment {
|
||||
CustomPlaybackSpeedPatch.initializeListPreference(playbackPreference);
|
||||
}
|
||||
|
||||
preference = findPreference(Settings.SPOOF_VIDEO_STREAMS_LANGUAGE.key);
|
||||
if (preference instanceof ListPreference languagePreference) {
|
||||
sortListPreferenceByValues(languagePreference, 1);
|
||||
}
|
||||
sortPreferenceListMenu(Settings.SPOOF_VIDEO_STREAMS_LANGUAGE);
|
||||
sortPreferenceListMenu(BaseSettings.REVANCED_LANGUAGE);
|
||||
} catch (Exception ex) {
|
||||
Logger.printException(() -> "initialize failure", ex);
|
||||
}
|
||||
}
|
||||
|
||||
private void sortPreferenceListMenu(EnumSetting<?> setting) {
|
||||
Preference preference = findPreference(setting.key);
|
||||
if (preference instanceof ListPreference languagePreference) {
|
||||
sortListPreferenceByValues(languagePreference, 1);
|
||||
}
|
||||
}
|
||||
|
||||
private void setPreferenceScreenToolbar(PreferenceScreen parentScreen) {
|
||||
for (int i = 0, preferenceCount = parentScreen.getPreferenceCount(); i < preferenceCount; i++) {
|
||||
Preference childPreference = parentScreen.getPreference(i);
|
||||
@@ -133,9 +141,6 @@ public class ReVancedPreferenceFragment extends AbstractPreferenceFragment {
|
||||
.getParent();
|
||||
|
||||
// Fix required for Android 15 and YT 19.45+
|
||||
// FIXME:
|
||||
// On Android 15 the text layout is not aligned the same as the parent
|
||||
// screen and it looks a little off. Otherwise this works.
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
|
||||
rootView.setOnApplyWindowInsetsListener((v, insets) -> {
|
||||
Insets statusInsets = insets.getInsets(WindowInsets.Type.statusBars());
|
||||
@@ -162,6 +167,8 @@ public class ReVancedPreferenceFragment extends AbstractPreferenceFragment {
|
||||
toolbarTextView.setTextColor(ThemeHelper.getForegroundColor());
|
||||
}
|
||||
|
||||
LicenseActivityHook.setToolbarLayoutParams(toolbar);
|
||||
|
||||
rootView.addView(toolbar, 0);
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -81,7 +81,17 @@ public class SpoofStreamingDataSideEffectsPreference extends Preference {
|
||||
(clientType == ClientType.IOS_UNPLUGGED
|
||||
? "ios_tv"
|
||||
: "android");
|
||||
setTitle(str(key + "_title"));
|
||||
setSummary(str(key + "_summary"));
|
||||
String title = str(key + "_title");
|
||||
String summary = str(key + "_summary");
|
||||
|
||||
// Android VR supports AV1 but all other clients do not.
|
||||
if (clientType != ClientType.ANDROID_VR && clientType != ClientType.ANDROID_VR_NO_AUTH) {
|
||||
summary += '\n' + str("revanced_spoof_video_streams_about_no_av1");
|
||||
}
|
||||
|
||||
summary += '\n' + str("revanced_spoof_video_streams_about_kids_videos");
|
||||
|
||||
setTitle(title);
|
||||
setSummary(summary);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,12 +3,15 @@ package app.revanced.extension.youtube.shared;
|
||||
import static app.revanced.extension.youtube.shared.NavigationBar.NavigationButton.CREATE;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.os.Build;
|
||||
import android.view.View;
|
||||
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.annotation.RequiresApi;
|
||||
|
||||
import java.lang.ref.WeakReference;
|
||||
import java.util.Arrays;
|
||||
import java.util.EnumMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.WeakHashMap;
|
||||
@@ -54,20 +57,21 @@ public final class NavigationBar {
|
||||
* How long to wait for the set nav button latch to be released. Maximum wait time must
|
||||
* be as small as possible while still allowing enough time for the nav bar to update.
|
||||
*
|
||||
* YT calls it's back button handlers out of order,
|
||||
* and litho starts filtering before the navigation bar is updated.
|
||||
* YT calls it's back button handlers out of order, and litho starts filtering before the
|
||||
* navigation bar is updated. Fixing this situation and not needlessly waiting requires
|
||||
* somehow detecting if a back button key/gesture will not change the active tab.
|
||||
*
|
||||
* Fixing this situation and not needlessly waiting requires somehow
|
||||
* detecting if a back button key-press will cause a tab change.
|
||||
* On average the time between pressing the back button and the first litho event is
|
||||
* about 10-20ms. Waiting up to 75-150ms should be enough time to handle normal use cases
|
||||
* and not be noticeable, since YT typically takes 100-200ms (or more) to update the view.
|
||||
*
|
||||
* Typically after pressing the back button, the time between the first litho event and
|
||||
* when the nav button is updated is about 10-20ms. Using 50-100ms here should be enough time
|
||||
* and not noticeable, since YT typically takes 100-200ms (or more) to update the view anyways.
|
||||
* This delay is only noticeable when the device back button/gesture will not
|
||||
* change the current navigation tab, such as backing out of the watch history.
|
||||
*
|
||||
* This issue can also be avoided on a patch by patch basis, by avoiding calls to
|
||||
* {@link NavigationButton#getSelectedNavigationButton()} unless absolutely necessary.
|
||||
*/
|
||||
private static final long LATCH_AWAIT_TIMEOUT_MILLISECONDS = 75;
|
||||
private static final long LATCH_AWAIT_TIMEOUT_MILLISECONDS = 120;
|
||||
|
||||
/**
|
||||
* Used as a workaround to fix the issue of YT calling back button handlers out of order.
|
||||
@@ -113,7 +117,8 @@ public final class NavigationBar {
|
||||
// The latch is released from the main thread, and waiting from the main thread will always timeout.
|
||||
// This situation has only been observed when navigating out of a submenu and not changing tabs.
|
||||
// and for that use case the nav bar does not change so it's safe to return here.
|
||||
Logger.printDebug(() -> "Cannot block main thread waiting for nav button. Using last known navbar button status.");
|
||||
Logger.printDebug(() -> "Cannot block main thread waiting for nav button. " +
|
||||
"Using last known navbar button status.");
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -131,7 +136,9 @@ public final class NavigationBar {
|
||||
Logger.printDebug(() -> "Latch wait timed out");
|
||||
|
||||
} catch (InterruptedException ex) {
|
||||
Logger.printException(() -> "Latch wait interrupted failure", ex); // Will never happen.
|
||||
// Calling YouTube thread was interrupted.
|
||||
Logger.printException(() -> "Latch wait interrupted", ex);
|
||||
Thread.currentThread().interrupt(); // Restore interrupt status flag.
|
||||
}
|
||||
}
|
||||
|
||||
@@ -238,6 +245,30 @@ public final class NavigationBar {
|
||||
// Code is added during patching.
|
||||
}
|
||||
|
||||
/**
|
||||
* Use the bundled non cairo filled icon instead of a custom icon.
|
||||
* Use the old non cairo filled icon, which is almost identical to
|
||||
* the what would be the filled cairo icon.
|
||||
*/
|
||||
private static final int fillBellCairoBlack = Utils.getResourceIdentifier(
|
||||
"yt_fill_bell_black_24", "drawable");
|
||||
|
||||
/**
|
||||
* Injection point.
|
||||
* Fixes missing drawable.
|
||||
*/
|
||||
@RequiresApi(api = Build.VERSION_CODES.N)
|
||||
@SuppressWarnings({"unchecked", "rawtypes"})
|
||||
public static void setCairoNotificationFilledIcon(EnumMap enumMap, Enum tabActivityCairo) {
|
||||
if (fillBellCairoBlack != 0) {
|
||||
// Show a popup informing this fix is no longer needed to those who might care.
|
||||
if (BaseSettings.DEBUG.get() && enumMap.containsKey(tabActivityCairo)) {
|
||||
Logger.printException(() -> "YouTube fixed the cairo notification icons");
|
||||
}
|
||||
enumMap.putIfAbsent(tabActivityCairo, fillBellCairoBlack);
|
||||
}
|
||||
}
|
||||
|
||||
public enum NavigationButton {
|
||||
HOME("PIVOT_HOME", "TAB_HOME_CAIRO"),
|
||||
SHORTS("TAB_SHORTS", "TAB_SHORTS_CAIRO"),
|
||||
@@ -246,6 +277,10 @@ public final class NavigationBar {
|
||||
* This tab will never be in a selected state, even if the create video UI is on screen.
|
||||
*/
|
||||
CREATE("CREATION_TAB_LARGE", "CREATION_TAB_LARGE_CAIRO"),
|
||||
/**
|
||||
* Only shown to automotive layout.
|
||||
*/
|
||||
EXPLORE("TAB_EXPLORE"),
|
||||
SUBSCRIPTIONS("PIVOT_SUBSCRIPTIONS", "TAB_SUBSCRIPTIONS_CAIRO"),
|
||||
/**
|
||||
* Notifications tab. Only present when
|
||||
@@ -283,8 +318,8 @@ public final class NavigationBar {
|
||||
*
|
||||
* All code calling this method should handle a null return value.
|
||||
*
|
||||
* <b>Due to issues with how YT processes physical back button events,
|
||||
* this patch uses workarounds that can cause this method to take up to 75ms
|
||||
* <b>Due to issues with how YT processes physical back button/gesture events,
|
||||
* this patch uses workarounds that can cause this method to take up to 120ms
|
||||
* if the device back button was recently pressed.</b>
|
||||
*
|
||||
* @return The active navigation tab.
|
||||
|
||||
@@ -73,7 +73,7 @@ enum class PlayerType {
|
||||
onChange(currentPlayerType)
|
||||
}
|
||||
|
||||
@Volatile // value is read/write from different threads
|
||||
@Volatile // Read/write from different threads.
|
||||
private var currentPlayerType = NONE
|
||||
|
||||
/**
|
||||
|
||||
@@ -46,6 +46,7 @@ enum class VideoState {
|
||||
currentVideoState = value
|
||||
}
|
||||
|
||||
@Volatile // Read/write from different threads.
|
||||
private var currentVideoState: VideoState? = null
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,6 +8,7 @@ import android.view.MotionEvent
|
||||
import android.view.ViewGroup
|
||||
import app.revanced.extension.shared.Logger.printDebug
|
||||
import app.revanced.extension.shared.Logger.printException
|
||||
import app.revanced.extension.youtube.settings.Settings
|
||||
import app.revanced.extension.youtube.shared.PlayerType
|
||||
import app.revanced.extension.youtube.swipecontrols.controller.AudioVolumeController
|
||||
import app.revanced.extension.youtube.swipecontrols.controller.ScreenBrightnessController
|
||||
@@ -232,5 +233,12 @@ class SwipeControlsHostActivity : Activity() {
|
||||
@JvmStatic
|
||||
var currentHost: WeakReference<SwipeControlsHostActivity> = WeakReference(null)
|
||||
private set
|
||||
|
||||
/**
|
||||
* Injection point.
|
||||
*/
|
||||
@Suppress("unused")
|
||||
@JvmStatic
|
||||
fun allowSwipeChangeVideo(original: Boolean): Boolean = Settings.SWIPE_CHANGE_VIDEO.get()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +0,0 @@
|
||||
package com.google.protos.youtube.api.innertube;
|
||||
|
||||
public class InnertubeContext$ClientInfo {
|
||||
public int r;
|
||||
}
|
||||
@@ -3,4 +3,4 @@ org.gradle.jvmargs = -Xms512M -Xmx2048M
|
||||
org.gradle.parallel = true
|
||||
android.useAndroidX = true
|
||||
kotlin.code.style = official
|
||||
version = 5.7.2-dev.1
|
||||
version = 5.10.0-dev.10
|
||||
|
||||
@@ -461,10 +461,6 @@ public final class app/revanced/patches/reddit/customclients/joeyforreddit/detec
|
||||
public static final fun getDisablePiracyDetectionPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
||||
}
|
||||
|
||||
public final class app/revanced/patches/reddit/customclients/redditisfun/api/FingerprintsKt {
|
||||
public static final fun baseClientIdFingerprint (Ljava/lang/String;)Lapp/revanced/patcher/Fingerprint;
|
||||
}
|
||||
|
||||
public final class app/revanced/patches/reddit/customclients/redditisfun/api/SpoofClientPatchKt {
|
||||
public static final fun getSpoofClientPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
||||
}
|
||||
@@ -548,7 +544,6 @@ public final class app/revanced/patches/shared/misc/checks/BaseCheckEnvironmentP
|
||||
}
|
||||
|
||||
public final class app/revanced/patches/shared/misc/extension/ExtensionHook {
|
||||
public final fun getFingerprint ()Lapp/revanced/patcher/Fingerprint;
|
||||
public final fun invoke (Lapp/revanced/patcher/patch/BytecodePatchContext;Ljava/lang/String;)V
|
||||
}
|
||||
|
||||
@@ -608,16 +603,19 @@ public final class app/revanced/patches/shared/misc/mapping/ResourceMappingPatch
|
||||
}
|
||||
|
||||
public final class app/revanced/patches/shared/misc/settings/SettingsPatchKt {
|
||||
public static final fun settingsPatch (Ljava/util/List;Ljava/util/Set;)Lapp/revanced/patcher/patch/ResourcePatch;
|
||||
public static final fun settingsPatch (Lkotlin/Pair;Ljava/util/Set;)Lapp/revanced/patcher/patch/ResourcePatch;
|
||||
public static synthetic fun settingsPatch$default (Lkotlin/Pair;Ljava/util/Set;ILjava/lang/Object;)Lapp/revanced/patcher/patch/ResourcePatch;
|
||||
public static synthetic fun settingsPatch$default (Ljava/util/List;Ljava/util/Set;ILjava/lang/Object;)Lapp/revanced/patcher/patch/ResourcePatch;
|
||||
}
|
||||
|
||||
public abstract class app/revanced/patches/shared/misc/settings/preference/BasePreference {
|
||||
public static final field Companion Lapp/revanced/patches/shared/misc/settings/preference/BasePreference$Companion;
|
||||
public fun <init> (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
|
||||
public synthetic fun <init> (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
|
||||
public fun <init> (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
|
||||
public synthetic fun <init> (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
|
||||
public fun equals (Ljava/lang/Object;)Z
|
||||
public final fun getIcon ()Ljava/lang/String;
|
||||
public final fun getKey ()Ljava/lang/String;
|
||||
public final fun getLayout ()Ljava/lang/String;
|
||||
public final fun getSummaryKey ()Ljava/lang/String;
|
||||
public final fun getTag ()Ljava/lang/String;
|
||||
public final fun getTitleKey ()Ljava/lang/String;
|
||||
@@ -640,17 +638,19 @@ public abstract class app/revanced/patches/shared/misc/settings/preference/BaseP
|
||||
|
||||
public abstract class app/revanced/patches/shared/misc/settings/preference/BasePreferenceScreen$BasePreferenceCollection {
|
||||
public fun <init> ()V
|
||||
public fun <init> (Ljava/lang/String;Ljava/lang/String;Ljava/util/Set;)V
|
||||
public synthetic fun <init> (Ljava/lang/String;Ljava/lang/String;Ljava/util/Set;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
|
||||
public fun <init> (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/Set;)V
|
||||
public synthetic fun <init> (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/Set;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
|
||||
public final fun getIcon ()Ljava/lang/String;
|
||||
public final fun getKey ()Ljava/lang/String;
|
||||
public final fun getLayout ()Ljava/lang/String;
|
||||
public final fun getPreferences ()Ljava/util/Set;
|
||||
public final fun getTitleKey ()Ljava/lang/String;
|
||||
public abstract fun transform ()Lapp/revanced/patches/shared/misc/settings/preference/BasePreference;
|
||||
}
|
||||
|
||||
public class app/revanced/patches/shared/misc/settings/preference/BasePreferenceScreen$Screen : app/revanced/patches/shared/misc/settings/preference/BasePreferenceScreen$BasePreferenceCollection {
|
||||
public fun <init> (Lapp/revanced/patches/shared/misc/settings/preference/BasePreferenceScreen;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/Set;Ljava/util/Set;Lapp/revanced/patches/shared/misc/settings/preference/PreferenceScreenPreference$Sorting;)V
|
||||
public synthetic fun <init> (Lapp/revanced/patches/shared/misc/settings/preference/BasePreferenceScreen;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/Set;Ljava/util/Set;Lapp/revanced/patches/shared/misc/settings/preference/PreferenceScreenPreference$Sorting;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
|
||||
public fun <init> (Lapp/revanced/patches/shared/misc/settings/preference/BasePreferenceScreen;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/Set;Ljava/util/Set;Lapp/revanced/patches/shared/misc/settings/preference/PreferenceScreenPreference$Sorting;)V
|
||||
public synthetic fun <init> (Lapp/revanced/patches/shared/misc/settings/preference/BasePreferenceScreen;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/Set;Ljava/util/Set;Lapp/revanced/patches/shared/misc/settings/preference/PreferenceScreenPreference$Sorting;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
|
||||
public final fun addPreferences ([Lapp/revanced/patches/shared/misc/settings/preference/BasePreference;)V
|
||||
public final fun getCategories ()Ljava/util/Set;
|
||||
public synthetic fun transform ()Lapp/revanced/patches/shared/misc/settings/preference/BasePreference;
|
||||
@@ -658,8 +658,8 @@ public class app/revanced/patches/shared/misc/settings/preference/BasePreference
|
||||
}
|
||||
|
||||
public class app/revanced/patches/shared/misc/settings/preference/BasePreferenceScreen$Screen$Category : app/revanced/patches/shared/misc/settings/preference/BasePreferenceScreen$BasePreferenceCollection {
|
||||
public fun <init> (Lapp/revanced/patches/shared/misc/settings/preference/BasePreferenceScreen$Screen;Ljava/lang/String;Ljava/lang/String;Ljava/util/Set;)V
|
||||
public synthetic fun <init> (Lapp/revanced/patches/shared/misc/settings/preference/BasePreferenceScreen$Screen;Ljava/lang/String;Ljava/lang/String;Ljava/util/Set;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
|
||||
public fun <init> (Lapp/revanced/patches/shared/misc/settings/preference/BasePreferenceScreen$Screen;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/Set;)V
|
||||
public synthetic fun <init> (Lapp/revanced/patches/shared/misc/settings/preference/BasePreferenceScreen$Screen;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/Set;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
|
||||
public final fun addPreferences ([Lapp/revanced/patches/shared/misc/settings/preference/BasePreference;)V
|
||||
public synthetic fun transform ()Lapp/revanced/patches/shared/misc/settings/preference/BasePreference;
|
||||
public fun transform ()Lapp/revanced/patches/shared/misc/settings/preference/PreferenceCategory;
|
||||
@@ -667,6 +667,7 @@ public class app/revanced/patches/shared/misc/settings/preference/BasePreference
|
||||
|
||||
public final class app/revanced/patches/shared/misc/settings/preference/InputType : java/lang/Enum {
|
||||
public static final field NUMBER Lapp/revanced/patches/shared/misc/settings/preference/InputType;
|
||||
public static final field NUMBER_DECIMAL Lapp/revanced/patches/shared/misc/settings/preference/InputType;
|
||||
public static final field TEXT Lapp/revanced/patches/shared/misc/settings/preference/InputType;
|
||||
public static final field TEXT_CAP_CHARACTERS Lapp/revanced/patches/shared/misc/settings/preference/InputType;
|
||||
public static final field TEXT_MULTI_LINE Lapp/revanced/patches/shared/misc/settings/preference/InputType;
|
||||
@@ -677,8 +678,8 @@ public final class app/revanced/patches/shared/misc/settings/preference/InputTyp
|
||||
}
|
||||
|
||||
public final class app/revanced/patches/shared/misc/settings/preference/IntentPreference : app/revanced/patches/shared/misc/settings/preference/BasePreference {
|
||||
public fun <init> (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lapp/revanced/patches/shared/misc/settings/preference/IntentPreference$Intent;)V
|
||||
public synthetic fun <init> (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lapp/revanced/patches/shared/misc/settings/preference/IntentPreference$Intent;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
|
||||
public fun <init> (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lapp/revanced/patches/shared/misc/settings/preference/IntentPreference$Intent;)V
|
||||
public synthetic fun <init> (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lapp/revanced/patches/shared/misc/settings/preference/IntentPreference$Intent;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
|
||||
public fun equals (Ljava/lang/Object;)Z
|
||||
public final fun getIntent ()Lapp/revanced/patches/shared/misc/settings/preference/IntentPreference$Intent;
|
||||
public fun hashCode ()I
|
||||
@@ -698,8 +699,8 @@ public final class app/revanced/patches/shared/misc/settings/preference/ListPref
|
||||
public fun <init> ()V
|
||||
public fun <init> (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lapp/revanced/util/resource/ArrayResource;Lapp/revanced/util/resource/ArrayResource;)V
|
||||
public synthetic fun <init> (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lapp/revanced/util/resource/ArrayResource;Lapp/revanced/util/resource/ArrayResource;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
|
||||
public fun <init> (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
|
||||
public synthetic fun <init> (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
|
||||
public fun <init> (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
|
||||
public synthetic fun <init> (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
|
||||
public final fun getEntries ()Lapp/revanced/util/resource/ArrayResource;
|
||||
public final fun getEntriesKey ()Ljava/lang/String;
|
||||
public final fun getEntryValues ()Lapp/revanced/util/resource/ArrayResource;
|
||||
@@ -708,22 +709,22 @@ public final class app/revanced/patches/shared/misc/settings/preference/ListPref
|
||||
}
|
||||
|
||||
public final class app/revanced/patches/shared/misc/settings/preference/NonInteractivePreference : app/revanced/patches/shared/misc/settings/preference/BasePreference {
|
||||
public fun <init> (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Z)V
|
||||
public synthetic fun <init> (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ZILkotlin/jvm/internal/DefaultConstructorMarker;)V
|
||||
public fun <init> (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Z)V
|
||||
public synthetic fun <init> (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ZILkotlin/jvm/internal/DefaultConstructorMarker;)V
|
||||
public final fun getSelectable ()Z
|
||||
public fun serialize (Lorg/w3c/dom/Document;Lkotlin/jvm/functions/Function1;)Lorg/w3c/dom/Element;
|
||||
}
|
||||
|
||||
public class app/revanced/patches/shared/misc/settings/preference/PreferenceCategory : app/revanced/patches/shared/misc/settings/preference/BasePreference {
|
||||
public fun <init> (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/Set;)V
|
||||
public synthetic fun <init> (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/Set;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
|
||||
public fun <init> (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lapp/revanced/patches/shared/misc/settings/preference/PreferenceScreenPreference$Sorting;Ljava/lang/String;Ljava/util/Set;)V
|
||||
public synthetic fun <init> (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lapp/revanced/patches/shared/misc/settings/preference/PreferenceScreenPreference$Sorting;Ljava/lang/String;Ljava/util/Set;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
|
||||
public final fun getPreferences ()Ljava/util/Set;
|
||||
public fun serialize (Lorg/w3c/dom/Document;Lkotlin/jvm/functions/Function1;)Lorg/w3c/dom/Element;
|
||||
}
|
||||
|
||||
public class app/revanced/patches/shared/misc/settings/preference/PreferenceScreenPreference : app/revanced/patches/shared/misc/settings/preference/BasePreference {
|
||||
public fun <init> (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lapp/revanced/patches/shared/misc/settings/preference/PreferenceScreenPreference$Sorting;Ljava/lang/String;Ljava/util/Set;)V
|
||||
public synthetic fun <init> (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lapp/revanced/patches/shared/misc/settings/preference/PreferenceScreenPreference$Sorting;Ljava/lang/String;Ljava/util/Set;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
|
||||
public fun <init> (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lapp/revanced/patches/shared/misc/settings/preference/PreferenceScreenPreference$Sorting;Ljava/lang/String;Ljava/util/Set;)V
|
||||
public synthetic fun <init> (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lapp/revanced/patches/shared/misc/settings/preference/PreferenceScreenPreference$Sorting;Ljava/lang/String;Ljava/util/Set;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
|
||||
public final fun getPreferences ()Ljava/util/Set;
|
||||
public fun serialize (Lorg/w3c/dom/Document;Lkotlin/jvm/functions/Function1;)Lorg/w3c/dom/Element;
|
||||
}
|
||||
@@ -732,6 +733,7 @@ public final class app/revanced/patches/shared/misc/settings/preference/Preferen
|
||||
public static final field BY_KEY Lapp/revanced/patches/shared/misc/settings/preference/PreferenceScreenPreference$Sorting;
|
||||
public static final field BY_TITLE Lapp/revanced/patches/shared/misc/settings/preference/PreferenceScreenPreference$Sorting;
|
||||
public static final field UNSORTED Lapp/revanced/patches/shared/misc/settings/preference/PreferenceScreenPreference$Sorting;
|
||||
public final fun appendSortType (Ljava/lang/String;)Ljava/lang/String;
|
||||
public static fun getEntries ()Lkotlin/enums/EnumEntries;
|
||||
public final fun getKeySuffix ()Ljava/lang/String;
|
||||
public static fun valueOf (Ljava/lang/String;)Lapp/revanced/patches/shared/misc/settings/preference/PreferenceScreenPreference$Sorting;
|
||||
@@ -750,8 +752,8 @@ public final class app/revanced/patches/shared/misc/settings/preference/SummaryT
|
||||
|
||||
public final class app/revanced/patches/shared/misc/settings/preference/SwitchPreference : app/revanced/patches/shared/misc/settings/preference/BasePreference {
|
||||
public fun <init> ()V
|
||||
public fun <init> (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
|
||||
public synthetic fun <init> (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
|
||||
public fun <init> (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
|
||||
public synthetic fun <init> (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
|
||||
public final fun getSummaryOffKey ()Ljava/lang/String;
|
||||
public final fun getSummaryOnKey ()Ljava/lang/String;
|
||||
public fun serialize (Lorg/w3c/dom/Document;Lkotlin/jvm/functions/Function1;)Lorg/w3c/dom/Element;
|
||||
@@ -759,8 +761,8 @@ public final class app/revanced/patches/shared/misc/settings/preference/SwitchPr
|
||||
|
||||
public final class app/revanced/patches/shared/misc/settings/preference/TextPreference : app/revanced/patches/shared/misc/settings/preference/BasePreference {
|
||||
public fun <init> ()V
|
||||
public fun <init> (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lapp/revanced/patches/shared/misc/settings/preference/InputType;)V
|
||||
public synthetic fun <init> (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lapp/revanced/patches/shared/misc/settings/preference/InputType;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
|
||||
public fun <init> (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lapp/revanced/patches/shared/misc/settings/preference/InputType;)V
|
||||
public synthetic fun <init> (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lapp/revanced/patches/shared/misc/settings/preference/InputType;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
|
||||
public final fun getInputType ()Lapp/revanced/patches/shared/misc/settings/preference/InputType;
|
||||
public fun serialize (Lorg/w3c/dom/Document;Lkotlin/jvm/functions/Function1;)Lorg/w3c/dom/Element;
|
||||
}
|
||||
@@ -1106,6 +1108,10 @@ public final class app/revanced/patches/youtube/layout/buttons/overlay/HidePlaye
|
||||
public static final fun getHidePlayerOverlayButtonsPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
||||
}
|
||||
|
||||
public final class app/revanced/patches/youtube/layout/formfactor/ChangeFormFactorPatchKt {
|
||||
public static final fun getChangeFormFactorPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
||||
}
|
||||
|
||||
public final class app/revanced/patches/youtube/layout/hide/endscreencards/HideEndscreenCardsPatchKt {
|
||||
public static final fun getHideEndscreenCardsPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
||||
}
|
||||
@@ -1235,7 +1241,6 @@ public final class app/revanced/patches/youtube/layout/startupshortsreset/Disabl
|
||||
}
|
||||
|
||||
public final class app/revanced/patches/youtube/layout/tablet/EnableTabletLayoutPatchKt {
|
||||
public static final field EXTENSION_CLASS_DESCRIPTOR Ljava/lang/String;
|
||||
public static final fun getEnableTabletLayoutPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
||||
}
|
||||
|
||||
@@ -1268,10 +1273,6 @@ public final class app/revanced/patches/youtube/misc/backgroundplayback/Backgrou
|
||||
public static final fun getBackgroundPlaybackPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
||||
}
|
||||
|
||||
public final class app/revanced/patches/youtube/misc/check/CheckEnvironmentPatchKt {
|
||||
public static final fun getCheckEnvironmentPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
||||
}
|
||||
|
||||
public final class app/revanced/patches/youtube/misc/debugging/EnableDebuggingPatchKt {
|
||||
public static final fun getEnableDebuggingPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
||||
}
|
||||
@@ -1364,6 +1365,7 @@ public final class app/revanced/patches/youtube/misc/playservice/VersionCheckPat
|
||||
public static final fun is_19_43_or_greater ()Z
|
||||
public static final fun is_19_46_or_greater ()Z
|
||||
public static final fun is_19_47_or_greater ()Z
|
||||
public static final fun is_19_49_or_greater ()Z
|
||||
}
|
||||
|
||||
public final class app/revanced/patches/youtube/misc/privacy/RemoveTrackingQueryParameterPatchKt {
|
||||
@@ -1408,14 +1410,14 @@ public final class app/revanced/patches/youtube/misc/zoomhaptics/ZoomHapticsPatc
|
||||
public static final fun getZoomHapticsPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
||||
}
|
||||
|
||||
public final class app/revanced/patches/youtube/shared/FingerprintsKt {
|
||||
public static final fun getRollingNumberTextViewAnimationUpdateFingerprint ()Lapp/revanced/patcher/Fingerprint;
|
||||
}
|
||||
|
||||
public final class app/revanced/patches/youtube/video/audio/ForceOriginalAudioPatchKt {
|
||||
public static final fun getForceOriginalAudioPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
||||
}
|
||||
|
||||
public final class app/revanced/patches/youtube/video/hdr/DisableHdrPatchKt {
|
||||
public static final fun getDisableHdrPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
||||
}
|
||||
|
||||
public final class app/revanced/patches/youtube/video/information/VideoInformationPatchKt {
|
||||
public static final fun getVideoInformationPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
||||
public static final fun userSelectedPlaybackSpeedHook (Ljava/lang/String;Ljava/lang/String;)V
|
||||
@@ -1457,10 +1459,6 @@ public final class app/revanced/patches/youtube/video/speed/button/PlaybackSpeed
|
||||
public static final fun getPlaybackSpeedButtonPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
||||
}
|
||||
|
||||
public final class app/revanced/patches/youtube/video/speed/custom/CustomPlaybackSpeedPatchKt {
|
||||
public static final fun getSpeedUnavailableId ()J
|
||||
}
|
||||
|
||||
public final class app/revanced/patches/youtube/video/videoid/VideoIdPatchKt {
|
||||
public static final fun getVideoIdPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
||||
public static final fun hookBackgroundPlayVideoId (Ljava/lang/String;)V
|
||||
|
||||
@@ -4,7 +4,7 @@ import app.revanced.patcher.fingerprint
|
||||
import com.android.tools.smali.dexlib2.AccessFlags
|
||||
import com.android.tools.smali.dexlib2.Opcode
|
||||
|
||||
fun baseClientIdFingerprint(string: String) = fingerprint {
|
||||
internal fun baseClientIdFingerprint(string: String) = fingerprint {
|
||||
strings("yyOCBp.RHJhDKd", string)
|
||||
}
|
||||
|
||||
|
||||
@@ -92,7 +92,7 @@ fun sharedExtensionPatch(
|
||||
}
|
||||
|
||||
class ExtensionHook internal constructor(
|
||||
val fingerprint: Fingerprint,
|
||||
private val fingerprint: Fingerprint,
|
||||
private val insertIndexResolver: ((Method) -> Int),
|
||||
private val contextRegisterResolver: (Method) -> String,
|
||||
) {
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package app.revanced.patches.shared.misc.settings
|
||||
|
||||
import app.revanced.patcher.patch.PatchException
|
||||
import app.revanced.patcher.patch.resourcePatch
|
||||
import app.revanced.patches.all.misc.resources.addResource
|
||||
import app.revanced.patches.all.misc.resources.addResources
|
||||
@@ -12,15 +13,22 @@ import app.revanced.util.getNode
|
||||
import app.revanced.util.insertFirst
|
||||
import org.w3c.dom.Node
|
||||
|
||||
// TODO: Delete this on next major version bump.
|
||||
@Deprecated("Use non deprecated settings patch function")
|
||||
fun settingsPatch (
|
||||
rootPreference: Pair<IntentPreference, String>,
|
||||
preferences: Set<BasePreference>,
|
||||
) = settingsPatch(listOf(rootPreference), preferences)
|
||||
|
||||
/**
|
||||
* A resource patch that adds settings to a settings fragment.
|
||||
*
|
||||
* @param rootPreference A pair of an intent preference and the name of the fragment file to add it to.
|
||||
* If null, no preference will be added.
|
||||
* @param rootPreferences List of intent preferences and the name of the fragment file to add it to.
|
||||
* File names that do not exist are ignored and not processed.
|
||||
* @param preferences A set of preferences to add to the ReVanced fragment.
|
||||
*/
|
||||
fun settingsPatch(
|
||||
rootPreference: Pair<IntentPreference, String>? = null,
|
||||
fun settingsPatch (
|
||||
rootPreferences: List<Pair<BasePreference, String>>? = null,
|
||||
preferences: Set<BasePreference>,
|
||||
) = resourcePatch {
|
||||
dependsOn(addResourcesPatch)
|
||||
@@ -46,10 +54,20 @@ fun settingsPatch(
|
||||
}
|
||||
|
||||
// Add the root preference to an existing fragment if needed.
|
||||
rootPreference?.let { (intentPreference, fragment) ->
|
||||
document("res/xml/$fragment.xml").use { document ->
|
||||
document.getNode("PreferenceScreen").addPreference(intentPreference, true)
|
||||
rootPreferences?.let {
|
||||
var modified = false
|
||||
|
||||
it.forEach { (intent, fileName) ->
|
||||
val preferenceFileName = "res/xml/$fileName.xml"
|
||||
if (get(preferenceFileName).exists()) {
|
||||
document(preferenceFileName).use { document ->
|
||||
document.getNode("PreferenceScreen").addPreference(intent, true)
|
||||
}
|
||||
modified = true
|
||||
}
|
||||
}
|
||||
|
||||
if (!modified) throw PatchException("No declared preference files exists: $rootPreferences")
|
||||
}
|
||||
|
||||
// Add all preferences to the ReVanced fragment.
|
||||
|
||||
@@ -9,6 +9,8 @@ import org.w3c.dom.Element
|
||||
*
|
||||
* @param key The key of the preference. If null, other parameters must be specified.
|
||||
* @param titleKey The key of the preference title.
|
||||
* @param icon The preference icon resource name.
|
||||
* @param layout Layout declaration.
|
||||
* @param summaryKey The key of the preference summary.
|
||||
* @param tag The tag or full class name of the preference.
|
||||
*/
|
||||
@@ -17,6 +19,8 @@ abstract class BasePreference(
|
||||
val key: String? = null,
|
||||
val titleKey: String = "${key}_title",
|
||||
val summaryKey: String? = "${key}_summary",
|
||||
val icon: String? = null,
|
||||
val layout: String? = null,
|
||||
val tag: String
|
||||
) {
|
||||
/**
|
||||
@@ -33,6 +37,11 @@ abstract class BasePreference(
|
||||
key?.let { setAttribute("android:key", it) }
|
||||
setAttribute("android:title", "@string/${titleKey}")
|
||||
summaryKey?.let { addSummary(it) }
|
||||
icon?.let {
|
||||
setAttribute("android:icon", it)
|
||||
setAttribute("app:iconSpaceReserved", "true")
|
||||
}
|
||||
layout?.let { setAttribute("android:layout", layout) }
|
||||
}
|
||||
|
||||
override fun hashCode(): Int {
|
||||
|
||||
@@ -24,16 +24,20 @@ abstract class BasePreferenceScreen(
|
||||
key: String? = null,
|
||||
titleKey: String = "${key}_title",
|
||||
private val summaryKey: String? = "${key}_summary",
|
||||
icon: String? = null,
|
||||
layout: String? = null,
|
||||
preferences: MutableSet<BasePreference> = mutableSetOf(),
|
||||
val categories: MutableSet<Category> = mutableSetOf(),
|
||||
private val sorting: Sorting = Sorting.BY_TITLE,
|
||||
) : BasePreferenceCollection(key, titleKey, preferences) {
|
||||
) : BasePreferenceCollection(key, titleKey, icon, layout, preferences) {
|
||||
|
||||
override fun transform(): PreferenceScreenPreference {
|
||||
return PreferenceScreenPreference(
|
||||
key,
|
||||
titleKey,
|
||||
summaryKey,
|
||||
icon,
|
||||
layout,
|
||||
sorting,
|
||||
// Screens and preferences are sorted at runtime by extension code,
|
||||
// so title sorting uses the localized language in use.
|
||||
@@ -56,12 +60,17 @@ abstract class BasePreferenceScreen(
|
||||
open inner class Category(
|
||||
key: String? = null,
|
||||
titleKey: String = "${key}_title",
|
||||
icon: String? = null,
|
||||
layout: String? = null,
|
||||
preferences: MutableSet<BasePreference> = mutableSetOf(),
|
||||
) : BasePreferenceCollection(key, titleKey, preferences) {
|
||||
) : BasePreferenceCollection(key, titleKey, icon, layout, preferences) {
|
||||
override fun transform(): PreferenceCategory {
|
||||
return PreferenceCategory(
|
||||
key,
|
||||
titleKey,
|
||||
icon,
|
||||
layout,
|
||||
sorting,
|
||||
preferences = preferences,
|
||||
)
|
||||
}
|
||||
@@ -82,6 +91,8 @@ abstract class BasePreferenceScreen(
|
||||
abstract class BasePreferenceCollection(
|
||||
val key: String? = null,
|
||||
val titleKey: String = "${key}_title",
|
||||
val icon: String? = null,
|
||||
val layout: String? = null,
|
||||
val preferences: MutableSet<BasePreference> = mutableSetOf(),
|
||||
) {
|
||||
abstract fun transform(): BasePreference
|
||||
|
||||
@@ -5,4 +5,5 @@ enum class InputType(val type: String) {
|
||||
TEXT_CAP_CHARACTERS("textCapCharacters"),
|
||||
TEXT_MULTI_LINE("textMultiLine"),
|
||||
NUMBER("number"),
|
||||
NUMBER_DECIMAL("numberDecimal"),
|
||||
}
|
||||
@@ -9,6 +9,8 @@ import org.w3c.dom.Document
|
||||
* @param key Optional preference key.
|
||||
* @param titleKey The preference title key.
|
||||
* @param summaryKey The preference summary key.
|
||||
* @param icon The preference icon resource name.
|
||||
* @param layout Layout declaration.
|
||||
* @param tag The preference tag.
|
||||
* @param intent The intent to open.
|
||||
*/
|
||||
@@ -16,9 +18,11 @@ class IntentPreference(
|
||||
key: String? = null,
|
||||
titleKey: String = "${key}_title",
|
||||
summaryKey: String? = "${key}_summary",
|
||||
icon: String? = null,
|
||||
layout: String? = null,
|
||||
tag: String = "Preference",
|
||||
val intent: Intent,
|
||||
) : BasePreference(key, titleKey, summaryKey, tag) {
|
||||
) : BasePreference(key, titleKey, summaryKey, icon, layout, tag) {
|
||||
|
||||
override fun serialize(ownerDocument: Document, resourceCallback: (BaseResource) -> Unit) =
|
||||
super.serialize(ownerDocument, resourceCallback).apply {
|
||||
|
||||
@@ -10,6 +10,8 @@ import org.w3c.dom.Document
|
||||
* @param key The preference key. If null, other parameters must be specified.
|
||||
* @param titleKey The preference title key.
|
||||
* @param summaryKey The preference summary key.
|
||||
* @param icon The preference icon resource name.
|
||||
* @param layout Layout declaration.
|
||||
* @param tag The preference tag.
|
||||
* @param entriesKey The entries array key.
|
||||
* @param entryValuesKey The entry values array key.
|
||||
@@ -19,10 +21,12 @@ class ListPreference(
|
||||
key: String? = null,
|
||||
titleKey: String = "${key}_title",
|
||||
summaryKey: String? = "${key}_summary",
|
||||
icon: String? = null,
|
||||
layout: String? = null,
|
||||
tag: String = "ListPreference",
|
||||
val entriesKey: String? = "${key}_entries",
|
||||
val entryValuesKey: String? = "${key}_entry_values"
|
||||
) : BasePreference(key, titleKey, summaryKey, tag) {
|
||||
) : BasePreference(key, titleKey, summaryKey, icon, layout, tag) {
|
||||
var entries: ArrayResource? = null
|
||||
private set
|
||||
var entryValues: ArrayResource? = null
|
||||
|
||||
@@ -10,6 +10,8 @@ import org.w3c.dom.Document
|
||||
*
|
||||
* @param key The preference key.
|
||||
* @param summaryKey The preference summary key.
|
||||
* @param icon The preference icon resource name.
|
||||
* @param layout Layout declaration.
|
||||
* @param tag The tag or full class name of the preference.
|
||||
* @param selectable If the preference is selectable and responds to tap events.
|
||||
*/
|
||||
@@ -18,9 +20,11 @@ class NonInteractivePreference(
|
||||
key: String,
|
||||
titleKey: String = "${key}_title",
|
||||
summaryKey: String? = "${key}_summary",
|
||||
icon: String? = null,
|
||||
layout: String? = null,
|
||||
tag: String = "Preference",
|
||||
val selectable: Boolean = false,
|
||||
) : BasePreference(key, titleKey, summaryKey, tag) {
|
||||
) : BasePreference(key, titleKey, summaryKey, icon, layout, tag) {
|
||||
override fun serialize(ownerDocument: Document, resourceCallback: (BaseResource) -> Unit) =
|
||||
super.serialize(ownerDocument, resourceCallback).apply {
|
||||
setAttribute("android:selectable", selectable.toString())
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package app.revanced.patches.shared.misc.settings.preference
|
||||
|
||||
import app.revanced.patches.shared.misc.settings.preference.PreferenceScreenPreference.Sorting
|
||||
import app.revanced.util.resource.BaseResource
|
||||
import org.w3c.dom.Document
|
||||
|
||||
@@ -8,6 +9,8 @@ import org.w3c.dom.Document
|
||||
*
|
||||
* @param key The key of the preference. If null, other parameters must be specified.
|
||||
* @param titleKey The key of the preference title.
|
||||
* @param icon The preference icon resource name.
|
||||
* @param layout Layout declaration.
|
||||
* @param tag The tag or full class name of the preference.
|
||||
* @param preferences The preferences in this category.
|
||||
*/
|
||||
@@ -15,9 +18,12 @@ import org.w3c.dom.Document
|
||||
open class PreferenceCategory(
|
||||
key: String? = null,
|
||||
titleKey: String = "${key}_title",
|
||||
icon: String? = null,
|
||||
layout: String? = null,
|
||||
sorting: Sorting = Sorting.BY_TITLE,
|
||||
tag: String = "PreferenceCategory",
|
||||
val preferences: Set<BasePreference>
|
||||
) : BasePreference(key, titleKey, null, tag) {
|
||||
) : BasePreference(sorting.appendSortType(key), titleKey, null, icon, layout, tag) {
|
||||
|
||||
override fun serialize(ownerDocument: Document, resourceCallback: (BaseResource) -> Unit) =
|
||||
super.serialize(ownerDocument, resourceCallback).apply {
|
||||
|
||||
@@ -9,6 +9,8 @@ import org.w3c.dom.Document
|
||||
* @param key The key of the preference. If null, other parameters must be specified.
|
||||
* @param titleKey The key of the preference title.
|
||||
* @param summaryKey The key of the preference summary.
|
||||
* @param icon The preference icon resource name.
|
||||
* @param layout Layout declaration.
|
||||
* @param sorting Sorting to use. If the sorting is not [Sorting.UNSORTED],
|
||||
* then the key parameter will be modified to include the sort type.
|
||||
* @param tag The tag or full class name of the preference.
|
||||
@@ -19,6 +21,8 @@ open class PreferenceScreenPreference(
|
||||
key: String? = null,
|
||||
titleKey: String = "${key}_title",
|
||||
summaryKey: String? = "${key}_summary",
|
||||
icon: String? = null,
|
||||
layout: String? = null,
|
||||
sorting: Sorting = Sorting.BY_TITLE,
|
||||
tag: String = "PreferenceScreen",
|
||||
val preferences: Set<BasePreference>,
|
||||
@@ -28,7 +32,7 @@ open class PreferenceScreenPreference(
|
||||
// or adding new attributes to the attrs.xml file.
|
||||
// Since the key value is not currently used by the extensions,
|
||||
// for now it's much simpler to modify the key to include the sort parameter.
|
||||
) : BasePreference(if (sorting == Sorting.UNSORTED) key else (key + sorting.keySuffix), titleKey, summaryKey, tag) {
|
||||
) : BasePreference(sorting.appendSortType(key), titleKey, summaryKey, icon, layout, tag) {
|
||||
override fun serialize(ownerDocument: Document, resourceCallback: (BaseResource) -> Unit) =
|
||||
super.serialize(ownerDocument, resourceCallback).apply {
|
||||
preferences.forEach {
|
||||
@@ -53,6 +57,16 @@ open class PreferenceScreenPreference(
|
||||
/**
|
||||
* Unspecified sorting.
|
||||
*/
|
||||
UNSORTED("_sort_by_unsorted"),
|
||||
UNSORTED("_sort_by_unsorted");
|
||||
|
||||
/**
|
||||
* @return The key with this sort type appended to to the end,
|
||||
* or if key is null then null is returned.
|
||||
*/
|
||||
fun appendSortType(key: String?): String? {
|
||||
if (key == null) return null
|
||||
if (this == UNSORTED) return key
|
||||
return key + keySuffix
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,6 +8,8 @@ import org.w3c.dom.Document
|
||||
*
|
||||
* @param key The preference key. If null, other parameters must be specified.
|
||||
* @param titleKey The preference title key.
|
||||
* @param icon The preference icon resource name.
|
||||
* @param layout Layout declaration.
|
||||
* @param tag The preference tag.
|
||||
* @param summaryOnKey The preference summary-on key.
|
||||
* @param summaryOffKey The preference summary-off key.
|
||||
@@ -17,9 +19,11 @@ class SwitchPreference(
|
||||
key: String? = null,
|
||||
titleKey: String = "${key}_title",
|
||||
tag: String = "SwitchPreference",
|
||||
icon: String? = null,
|
||||
layout: String? = null,
|
||||
val summaryOnKey: String = "${key}_summary_on",
|
||||
val summaryOffKey: String = "${key}_summary_off"
|
||||
) : BasePreference(key, titleKey, null, tag) {
|
||||
) : BasePreference(key, titleKey, null, icon, layout, tag) {
|
||||
override fun serialize(ownerDocument: Document, resourceCallback: (BaseResource) -> Unit) =
|
||||
super.serialize(ownerDocument, resourceCallback).apply {
|
||||
addSummary(summaryOnKey, SummaryType.ON)
|
||||
|
||||
@@ -9,6 +9,8 @@ import org.w3c.dom.Document
|
||||
* @param key The preference key. If null, other parameters must be specified.
|
||||
* @param titleKey The preference title key.
|
||||
* @param summaryKey The preference summary key.
|
||||
* @param icon The preference icon resource name.
|
||||
* @param layout Layout declaration.
|
||||
* @param tag The preference tag.
|
||||
* @param inputType The preference input type.
|
||||
*/
|
||||
@@ -17,9 +19,11 @@ class TextPreference(
|
||||
key: String? = null,
|
||||
titleKey: String = "${key}_title",
|
||||
summaryKey: String? = "${key}_summary",
|
||||
icon: String? = null,
|
||||
layout: String? = null,
|
||||
tag: String = "app.revanced.extension.shared.settings.preference.ResettableEditTextPreference",
|
||||
val inputType: InputType = InputType.TEXT
|
||||
) : BasePreference(key, titleKey, summaryKey, tag) {
|
||||
) : BasePreference(key, titleKey, summaryKey, icon, layout, tag) {
|
||||
|
||||
override fun serialize(ownerDocument: Document, resourceCallback: (BaseResource) -> Unit) =
|
||||
super.serialize(ownerDocument, resourceCallback).apply {
|
||||
|
||||
@@ -15,7 +15,7 @@ val removeGooglePlayIntegrityCheckPatch = bytecodePatch(
|
||||
description = "Removes the Google Play Integrity check. With this it's possible to use SwissID on custom ROMS." +
|
||||
"If the device is rooted, root permissions must be hidden from the app.",
|
||||
) {
|
||||
compatibleWith("com.swisssign.swissid.mobile")
|
||||
compatibleWith("com.swisssign.swissid.mobile"("5.2.9"))
|
||||
|
||||
execute {
|
||||
checkIntegrityFingerprint.method.addInstructions(
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
package app.revanced.patches.youtube.ad.general
|
||||
|
||||
import app.revanced.patcher.fingerprint
|
||||
import app.revanced.util.containsLiteralInstruction
|
||||
import app.revanced.util.getReference
|
||||
import app.revanced.util.indexOfFirstInstructionReversed
|
||||
import com.android.tools.smali.dexlib2.AccessFlags
|
||||
import com.android.tools.smali.dexlib2.iface.Method
|
||||
import com.android.tools.smali.dexlib2.iface.reference.MethodReference
|
||||
|
||||
internal val fullScreenEngagementAdContainerFingerprint = fingerprint {
|
||||
accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL)
|
||||
returns("V")
|
||||
parameters()
|
||||
custom { method, _ ->
|
||||
method.containsLiteralInstruction(fullScreenEngagementAdContainer)
|
||||
&& indexOfAddListInstruction(method) >= 0
|
||||
}
|
||||
}
|
||||
|
||||
internal fun indexOfAddListInstruction(method: Method) =
|
||||
method.indexOfFirstInstructionReversed {
|
||||
getReference<MethodReference>()?.name == "add"
|
||||
}
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
package app.revanced.patches.youtube.ad.general
|
||||
|
||||
import app.revanced.patcher.extensions.InstructionExtensions.getInstruction
|
||||
import app.revanced.patcher.extensions.InstructionExtensions.replaceInstruction
|
||||
import app.revanced.patcher.patch.bytecodePatch
|
||||
import app.revanced.patcher.patch.resourcePatch
|
||||
import app.revanced.patches.all.misc.resources.addResources
|
||||
@@ -18,11 +20,16 @@ import app.revanced.patches.youtube.misc.settings.settingsPatch
|
||||
import app.revanced.util.findMutableMethodOf
|
||||
import app.revanced.util.injectHideViewCall
|
||||
import com.android.tools.smali.dexlib2.Opcode
|
||||
import com.android.tools.smali.dexlib2.iface.instruction.FiveRegisterInstruction
|
||||
import com.android.tools.smali.dexlib2.iface.instruction.formats.Instruction31i
|
||||
import com.android.tools.smali.dexlib2.iface.instruction.formats.Instruction35c
|
||||
|
||||
internal var adAttributionId = -1L
|
||||
private set
|
||||
internal var fullScreenEngagementAdContainer = -1L
|
||||
private set
|
||||
|
||||
private const val EXTENSION_CLASS_DESCRIPTOR = "Lapp/revanced/extension/youtube/patches/components/AdsFilter;"
|
||||
|
||||
private val hideAdsResourcePatch = resourcePatch {
|
||||
dependsOn(
|
||||
@@ -37,6 +44,7 @@ private val hideAdsResourcePatch = resourcePatch {
|
||||
|
||||
PreferenceScreen.ADS.addPreferences(
|
||||
SwitchPreference("revanced_hide_general_ads"),
|
||||
SwitchPreference("revanced_hide_end_screen_store_banner"),
|
||||
SwitchPreference("revanced_hide_fullscreen_ads"),
|
||||
SwitchPreference("revanced_hide_buttoned_ads"),
|
||||
SwitchPreference("revanced_hide_paid_promotion_label"),
|
||||
@@ -52,6 +60,7 @@ private val hideAdsResourcePatch = resourcePatch {
|
||||
addLithoFilter("Lapp/revanced/extension/youtube/patches/components/AdsFilter;")
|
||||
|
||||
adAttributionId = resourceMappings["id", "ad_attribution"]
|
||||
fullScreenEngagementAdContainer = resourceMappings["id", "fullscreen_engagement_ad_container"]
|
||||
}
|
||||
}
|
||||
|
||||
@@ -82,6 +91,23 @@ val hideAdsPatch = bytecodePatch(
|
||||
)
|
||||
|
||||
execute {
|
||||
// Hide end screen store banner
|
||||
|
||||
fullScreenEngagementAdContainerFingerprint.method.apply {
|
||||
val addListIndex = indexOfAddListInstruction(this)
|
||||
val addListInstruction = getInstruction<FiveRegisterInstruction>(addListIndex)
|
||||
val listRegister = addListInstruction.registerC
|
||||
val objectRegister = addListInstruction.registerD
|
||||
|
||||
replaceInstruction(
|
||||
addListIndex,
|
||||
"invoke-static { v$listRegister, v$objectRegister }, $EXTENSION_CLASS_DESCRIPTOR" +
|
||||
"->hideEndScreenStoreBanner(Ljava/util/List;Ljava/lang/Object;)V"
|
||||
)
|
||||
}
|
||||
|
||||
// Hide ad views
|
||||
|
||||
classes.forEach { classDef ->
|
||||
classDef.methods.forEach { method ->
|
||||
with(method.implementation) {
|
||||
@@ -110,7 +136,7 @@ val hideAdsPatch = bytecodePatch(
|
||||
.injectHideViewCall(
|
||||
insertIndex,
|
||||
viewRegister,
|
||||
"Lapp/revanced/extension/youtube/patches/components/AdsFilter;",
|
||||
EXTENSION_CLASS_DESCRIPTOR,
|
||||
"hideAdAttributionView",
|
||||
)
|
||||
}
|
||||
|
||||
@@ -1,12 +1,23 @@
|
||||
package app.revanced.patches.youtube.interaction.swipecontrols
|
||||
|
||||
import app.revanced.patcher.fingerprint
|
||||
import app.revanced.util.literal
|
||||
import com.android.tools.smali.dexlib2.AccessFlags
|
||||
|
||||
internal val swipeControlsHostActivityFingerprint = fingerprint {
|
||||
accessFlags(AccessFlags.PUBLIC, AccessFlags.CONSTRUCTOR)
|
||||
parameters()
|
||||
custom { method, _ ->
|
||||
method.definingClass == "Lapp/revanced/extension/youtube/swipecontrols/SwipeControlsHostActivity;"
|
||||
method.definingClass == EXTENSION_CLASS_DESCRIPTOR
|
||||
}
|
||||
}
|
||||
|
||||
internal const val SWIPE_CHANGE_VIDEO_FEATURE_FLAG = 45631116L
|
||||
|
||||
internal val swipeChangeVideoFingerprint = fingerprint {
|
||||
accessFlags(AccessFlags.PUBLIC, AccessFlags.CONSTRUCTOR)
|
||||
parameters("L")
|
||||
literal {
|
||||
SWIPE_CHANGE_VIDEO_FEATURE_FLAG
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,6 +10,7 @@ import app.revanced.patches.shared.misc.settings.preference.SwitchPreference
|
||||
import app.revanced.patches.shared.misc.settings.preference.TextPreference
|
||||
import app.revanced.patches.youtube.misc.extension.sharedExtensionPatch
|
||||
import app.revanced.patches.youtube.misc.playertype.playerTypeHookPatch
|
||||
import app.revanced.patches.youtube.misc.playservice.is_19_43_or_greater
|
||||
import app.revanced.patches.youtube.misc.settings.PreferenceScreen
|
||||
import app.revanced.patches.youtube.misc.settings.settingsPatch
|
||||
import app.revanced.patches.youtube.shared.mainActivityFingerprint
|
||||
@@ -17,6 +18,8 @@ import app.revanced.util.*
|
||||
import com.android.tools.smali.dexlib2.AccessFlags
|
||||
import com.android.tools.smali.dexlib2.immutable.ImmutableMethod
|
||||
|
||||
internal const val EXTENSION_CLASS_DESCRIPTOR = "Lapp/revanced/extension/youtube/swipecontrols/SwipeControlsHostActivity;"
|
||||
|
||||
private val swipeControlsResourcePatch = resourcePatch {
|
||||
dependsOn(
|
||||
settingsPatch,
|
||||
@@ -26,6 +29,12 @@ private val swipeControlsResourcePatch = resourcePatch {
|
||||
execute {
|
||||
addResources("youtube", "interaction.swipecontrols.swipeControlsResourcePatch")
|
||||
|
||||
if (is_19_43_or_greater) {
|
||||
PreferenceScreen.SWIPE_CONTROLS.addPreferences(
|
||||
SwitchPreference("revanced_swipe_change_video")
|
||||
)
|
||||
}
|
||||
|
||||
PreferenceScreen.SWIPE_CONTROLS.addPreferences(
|
||||
SwitchPreference("revanced_swipe_brightness"),
|
||||
SwitchPreference("revanced_swipe_volume"),
|
||||
@@ -101,5 +110,16 @@ val swipeControlsPatch = bytecodePatch(
|
||||
).toMutable()
|
||||
}
|
||||
}
|
||||
|
||||
// region patch to enable/disable swipe to change video.
|
||||
|
||||
if (is_19_43_or_greater) {
|
||||
swipeChangeVideoFingerprint.method.insertFeatureFlagBooleanOverride(
|
||||
SWIPE_CHANGE_VIDEO_FEATURE_FLAG,
|
||||
"$EXTENSION_CLASS_DESCRIPTOR->allowSwipeChangeVideo(Z)Z"
|
||||
)
|
||||
}
|
||||
|
||||
// endregion
|
||||
}
|
||||
}
|
||||
|
||||
@@ -65,9 +65,12 @@ val navigationButtonsPatch = bytecodePatch(
|
||||
)
|
||||
|
||||
if (is_19_25_or_greater) {
|
||||
preferences += SwitchPreference("revanced_disable_translucent_status_bar")
|
||||
preferences += SwitchPreference("revanced_disable_translucent_navigation_bar_light")
|
||||
preferences += SwitchPreference("revanced_disable_translucent_navigation_bar_dark")
|
||||
|
||||
PreferenceScreen.GENERAL_LAYOUT.addPreferences(
|
||||
SwitchPreference("revanced_disable_translucent_status_bar")
|
||||
)
|
||||
}
|
||||
|
||||
PreferenceScreen.GENERAL_LAYOUT.addPreferences(
|
||||
|
||||
@@ -0,0 +1,75 @@
|
||||
package app.revanced.patches.youtube.layout.formfactor
|
||||
|
||||
import app.revanced.patcher.extensions.InstructionExtensions.addInstructions
|
||||
import app.revanced.patcher.extensions.InstructionExtensions.getInstruction
|
||||
import app.revanced.patcher.patch.bytecodePatch
|
||||
import app.revanced.patches.all.misc.resources.addResources
|
||||
import app.revanced.patches.all.misc.resources.addResourcesPatch
|
||||
import app.revanced.patches.shared.misc.settings.preference.ListPreference
|
||||
import app.revanced.patches.youtube.misc.extension.sharedExtensionPatch
|
||||
import app.revanced.patches.youtube.misc.settings.PreferenceScreen
|
||||
import app.revanced.patches.youtube.misc.settings.settingsPatch
|
||||
import app.revanced.util.getReference
|
||||
import app.revanced.util.indexOfFirstInstructionOrThrow
|
||||
import com.android.tools.smali.dexlib2.Opcode
|
||||
import com.android.tools.smali.dexlib2.iface.instruction.TwoRegisterInstruction
|
||||
import com.android.tools.smali.dexlib2.iface.reference.FieldReference
|
||||
|
||||
internal const val EXTENSION_CLASS_DESCRIPTOR = "Lapp/revanced/extension/youtube/patches/ChangeFormFactorPatch;"
|
||||
|
||||
@Suppress("unused")
|
||||
val changeFormFactorPatch = bytecodePatch(
|
||||
name = "Change form factor",
|
||||
description = "Adds an option to change the UI appearance to a phone, tablet, or automotive device.",
|
||||
) {
|
||||
dependsOn(
|
||||
sharedExtensionPatch,
|
||||
settingsPatch,
|
||||
addResourcesPatch,
|
||||
)
|
||||
|
||||
compatibleWith(
|
||||
"com.google.android.youtube"(
|
||||
"18.38.44",
|
||||
"18.49.37",
|
||||
"19.16.39",
|
||||
"19.25.37",
|
||||
"19.34.42",
|
||||
"19.43.41",
|
||||
"19.45.38",
|
||||
"19.46.42",
|
||||
"19.47.53",
|
||||
),
|
||||
)
|
||||
|
||||
execute {
|
||||
addResources("youtube", "layout.formfactor.changeFormFactorPatch")
|
||||
|
||||
PreferenceScreen.GENERAL_LAYOUT.addPreferences(
|
||||
ListPreference(
|
||||
"revanced_change_form_factor",
|
||||
summaryKey = null,
|
||||
)
|
||||
)
|
||||
|
||||
createPlayerRequestBodyWithModelFingerprint.method.apply {
|
||||
val formFactorEnumClass = formFactorEnumConstructorFingerprint.originalClassDef.type
|
||||
|
||||
val index = indexOfFirstInstructionOrThrow {
|
||||
val reference = getReference<FieldReference>()
|
||||
opcode == Opcode.IGET &&
|
||||
reference?.definingClass == formFactorEnumClass &&
|
||||
reference.type == "I"
|
||||
}
|
||||
val register = getInstruction<TwoRegisterInstruction>(index).registerA
|
||||
|
||||
addInstructions(
|
||||
index + 1,
|
||||
"""
|
||||
invoke-static { v$register }, $EXTENSION_CLASS_DESCRIPTOR->getFormFactor(I)I
|
||||
move-result v$register
|
||||
"""
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,49 @@
|
||||
package app.revanced.patches.youtube.layout.formfactor
|
||||
|
||||
import app.revanced.patcher.fingerprint
|
||||
import app.revanced.util.getReference
|
||||
import app.revanced.util.indexOfFirstInstruction
|
||||
import com.android.tools.smali.dexlib2.AccessFlags
|
||||
import com.android.tools.smali.dexlib2.Opcode
|
||||
import com.android.tools.smali.dexlib2.iface.Method
|
||||
import com.android.tools.smali.dexlib2.iface.reference.FieldReference
|
||||
|
||||
internal val formFactorEnumConstructorFingerprint = fingerprint {
|
||||
accessFlags(AccessFlags.STATIC, AccessFlags.CONSTRUCTOR)
|
||||
strings(
|
||||
"UNKNOWN_FORM_FACTOR",
|
||||
"SMALL_FORM_FACTOR",
|
||||
"LARGE_FORM_FACTOR",
|
||||
"AUTOMOTIVE_FORM_FACTOR"
|
||||
)
|
||||
}
|
||||
|
||||
internal val createPlayerRequestBodyWithModelFingerprint = fingerprint {
|
||||
accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL)
|
||||
returns("L")
|
||||
parameters()
|
||||
opcodes(Opcode.OR_INT_LIT16)
|
||||
custom { method, _ ->
|
||||
method.indexOfModelInstruction() >= 0 &&
|
||||
method.indexOfReleaseInstruction() >= 0
|
||||
}
|
||||
}
|
||||
|
||||
private fun Method.indexOfModelInstruction() =
|
||||
indexOfFirstInstruction {
|
||||
val reference = getReference<FieldReference>()
|
||||
|
||||
reference?.definingClass == "Landroid/os/Build;" &&
|
||||
reference.name == "MODEL" &&
|
||||
reference.type == "Ljava/lang/String;"
|
||||
}
|
||||
|
||||
internal fun Method.indexOfReleaseInstruction(): Int =
|
||||
indexOfFirstInstruction {
|
||||
val reference = getReference<FieldReference>()
|
||||
|
||||
reference?.definingClass == "Landroid/os/Build${'$'}VERSION;" &&
|
||||
reference.name == "RELEASE" &&
|
||||
reference.type == "Ljava/lang/String;"
|
||||
}
|
||||
|
||||
@@ -147,6 +147,7 @@ val hideLayoutComponentsPatch = bytecodePatch(
|
||||
SwitchPreference("revanced_hide_attributes_section"),
|
||||
SwitchPreference("revanced_hide_chapters_section"),
|
||||
SwitchPreference("revanced_hide_info_cards_section"),
|
||||
SwitchPreference("revanced_hide_how_this_was_made_section"),
|
||||
SwitchPreference("revanced_hide_key_concepts_section"),
|
||||
SwitchPreference("revanced_hide_podcast_section"),
|
||||
SwitchPreference("revanced_hide_transcript_section"),
|
||||
|
||||
@@ -71,6 +71,7 @@ private val hideShortsComponentsResourcePatch = resourcePatch {
|
||||
SwitchPreference("revanced_hide_shorts_home"),
|
||||
SwitchPreference("revanced_hide_shorts_subscriptions"),
|
||||
SwitchPreference("revanced_hide_shorts_search"),
|
||||
SwitchPreference("revanced_hide_shorts_history"),
|
||||
|
||||
PreferenceScreenPreference(
|
||||
key = "revanced_shorts_player_screen",
|
||||
|
||||
@@ -0,0 +1,67 @@
|
||||
package app.revanced.patches.youtube.layout.player.fullscreen
|
||||
|
||||
import app.revanced.patcher.patch.bytecodePatch
|
||||
import app.revanced.patches.all.misc.resources.addResources
|
||||
import app.revanced.patches.all.misc.resources.addResourcesPatch
|
||||
import app.revanced.patches.shared.misc.settings.preference.ListPreference
|
||||
import app.revanced.patches.youtube.misc.extension.sharedExtensionPatch
|
||||
import app.revanced.patches.youtube.misc.playercontrols.playerControlsPatch
|
||||
import app.revanced.patches.youtube.misc.playertype.playerTypeHookPatch
|
||||
import app.revanced.patches.youtube.misc.settings.PreferenceScreen
|
||||
import app.revanced.patches.youtube.misc.settings.settingsPatch
|
||||
import app.revanced.patches.youtube.shared.autoRepeatFingerprint
|
||||
import app.revanced.patches.youtube.shared.autoRepeatParentFingerprint
|
||||
import app.revanced.util.addInstructionsAtControlFlowLabel
|
||||
|
||||
@Suppress("unused")
|
||||
internal val exitFullscreenPatch = bytecodePatch(
|
||||
name = "Exit fullscreen mode",
|
||||
description = "Adds options to automatically exit fullscreen mode when a video reaches the end."
|
||||
) {
|
||||
|
||||
compatibleWith(
|
||||
"com.google.android.youtube"(
|
||||
"18.38.44",
|
||||
"18.49.37",
|
||||
"19.16.39",
|
||||
"19.25.37",
|
||||
"19.34.42",
|
||||
"19.43.41",
|
||||
"19.45.38",
|
||||
"19.46.42",
|
||||
"19.47.53",
|
||||
)
|
||||
)
|
||||
|
||||
dependsOn(
|
||||
sharedExtensionPatch,
|
||||
settingsPatch,
|
||||
addResourcesPatch,
|
||||
playerTypeHookPatch,
|
||||
playerControlsPatch
|
||||
)
|
||||
|
||||
// Cannot declare as top level since this patch is in the same package as
|
||||
// other patches that declare same constant name with internal visibility.
|
||||
@Suppress("LocalVariableName")
|
||||
val EXTENSION_CLASS_DESCRIPTOR =
|
||||
"Lapp/revanced/extension/youtube/patches/ExitFullscreenPatch;"
|
||||
|
||||
execute {
|
||||
addResources("youtube", "layout.player.fullscreen.exitFullscreenPatch")
|
||||
|
||||
PreferenceScreen.PLAYER.addPreferences(
|
||||
ListPreference(
|
||||
"revanced_exit_fullscreen",
|
||||
summaryKey = null,
|
||||
)
|
||||
)
|
||||
|
||||
autoRepeatFingerprint.match(autoRepeatParentFingerprint.originalClassDef).method.apply {
|
||||
addInstructionsAtControlFlowLabel(
|
||||
implementation!!.instructions.lastIndex,
|
||||
"invoke-static {}, $EXTENSION_CLASS_DESCRIPTOR->endOfVideoReached()V",
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -34,13 +34,17 @@ internal val shortsSeekbarColorFingerprint = fingerprint {
|
||||
literal { reelTimeBarPlayedColorId }
|
||||
}
|
||||
|
||||
internal const val PLAYER_SEEKBAR_GRADIENT_FEATURE_FLAG = 45617850L
|
||||
internal val playerSeekbarHandleColorFingerprint = fingerprint {
|
||||
accessFlags(AccessFlags.PUBLIC, AccessFlags.CONSTRUCTOR)
|
||||
parameters("Landroid/content/Context;")
|
||||
literal { ytStaticBrandRedId }
|
||||
}
|
||||
|
||||
internal val playerSeekbarGradientConfigFingerprint = fingerprint {
|
||||
internal val watchHistoryMenuUseProgressDrawableFingerprint = fingerprint {
|
||||
accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL)
|
||||
returns("Z")
|
||||
parameters()
|
||||
literal { PLAYER_SEEKBAR_GRADIENT_FEATURE_FLAG }
|
||||
returns("V")
|
||||
parameters("L")
|
||||
literal { -1712394514 }
|
||||
}
|
||||
|
||||
internal val lithoLinearGradientFingerprint = fingerprint {
|
||||
@@ -49,6 +53,49 @@ internal val lithoLinearGradientFingerprint = fingerprint {
|
||||
parameters("F", "F", "F", "F", "[I", "[F")
|
||||
}
|
||||
|
||||
/**
|
||||
* 19.49+
|
||||
*/
|
||||
internal val playerLinearGradientFingerprint = fingerprint {
|
||||
accessFlags(AccessFlags.PUBLIC, AccessFlags.STATIC)
|
||||
parameters("I", "I", "I", "I", "Landroid/content/Context;", "I")
|
||||
returns("Landroid/graphics/LinearGradient;")
|
||||
opcodes(
|
||||
Opcode.FILLED_NEW_ARRAY,
|
||||
Opcode.MOVE_RESULT_OBJECT
|
||||
)
|
||||
literal { ytYoutubeMagentaColorId }
|
||||
}
|
||||
|
||||
/**
|
||||
* 19.46 - 19.47
|
||||
*/
|
||||
internal val playerLinearGradientLegacy1946Fingerprint = fingerprint {
|
||||
accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL)
|
||||
parameters("I", "I", "I", "I")
|
||||
returns("V")
|
||||
opcodes(
|
||||
Opcode.FILLED_NEW_ARRAY,
|
||||
Opcode.MOVE_RESULT_OBJECT
|
||||
)
|
||||
custom { method, _ ->
|
||||
method.name == "setBounds" && method.containsLiteralInstruction(ytYoutubeMagentaColorId)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 19.25 - 19.45
|
||||
*/
|
||||
internal val playerLinearGradientLegacy1925Fingerprint = fingerprint {
|
||||
accessFlags(AccessFlags.PUBLIC, AccessFlags.CONSTRUCTOR)
|
||||
parameters("Landroid/content/Context;")
|
||||
opcodes(
|
||||
Opcode.FILLED_NEW_ARRAY,
|
||||
Opcode.MOVE_RESULT_OBJECT
|
||||
)
|
||||
literal { ytYoutubeMagentaColorId }
|
||||
}
|
||||
|
||||
internal const val launchScreenLayoutTypeLotteFeatureFlag = 268507948L
|
||||
|
||||
internal val launchScreenLayoutTypeFingerprint = fingerprint {
|
||||
|
||||
@@ -14,7 +14,9 @@ import app.revanced.patches.youtube.layout.theme.lithoColorHookPatch
|
||||
import app.revanced.patches.youtube.layout.theme.lithoColorOverrideHook
|
||||
import app.revanced.patches.youtube.misc.extension.sharedExtensionPatch
|
||||
import app.revanced.patches.youtube.misc.playservice.is_19_25_or_greater
|
||||
import app.revanced.patches.youtube.misc.playservice.is_19_34_or_greater
|
||||
import app.revanced.patches.youtube.misc.playservice.is_19_46_or_greater
|
||||
import app.revanced.patches.youtube.misc.playservice.is_19_49_or_greater
|
||||
import app.revanced.patches.youtube.misc.playservice.versionCheckPatch
|
||||
import app.revanced.patches.youtube.misc.settings.settingsPatch
|
||||
import app.revanced.patches.youtube.shared.mainActivityOnCreateFingerprint
|
||||
@@ -39,6 +41,10 @@ internal var inlineTimeBarColorizedBarPlayedColorDarkId = -1L
|
||||
private set
|
||||
internal var inlineTimeBarPlayedNotHighlightedColorId = -1L
|
||||
private set
|
||||
internal var ytYoutubeMagentaColorId = -1L
|
||||
private set
|
||||
internal var ytStaticBrandRedId = -1L
|
||||
private set
|
||||
|
||||
internal const val splashSeekbarColorAttributeName = "splash_custom_seekbar_color"
|
||||
|
||||
@@ -83,6 +89,15 @@ private val seekbarColorResourcePatch = resourcePatch {
|
||||
return@execute
|
||||
}
|
||||
|
||||
ytYoutubeMagentaColorId = resourceMappings[
|
||||
"color",
|
||||
"yt_youtube_magenta",
|
||||
]
|
||||
ytStaticBrandRedId = resourceMappings[
|
||||
"attr",
|
||||
"ytStaticBrandRed",
|
||||
]
|
||||
|
||||
// Add attribute and styles for splash screen custom color.
|
||||
// Using a style is the only way to selectively change just the seekbar fill color.
|
||||
//
|
||||
@@ -182,28 +197,31 @@ val seekbarColorPatch = bytecodePatch(
|
||||
sharedExtensionPatch,
|
||||
lithoColorHookPatch,
|
||||
seekbarColorResourcePatch,
|
||||
versionCheckPatch
|
||||
)
|
||||
|
||||
execute {
|
||||
fun MutableMethod.addColorChangeInstructions(resourceId: Long) {
|
||||
val registerIndex = indexOfFirstLiteralInstructionOrThrow(resourceId) + 2
|
||||
val colorRegister = getInstruction<OneRegisterInstruction>(registerIndex).registerA
|
||||
fun MutableMethod.addColorChangeInstructions(resourceId: Long, methodName: String) {
|
||||
val index = indexOfFirstLiteralInstructionOrThrow(resourceId)
|
||||
val insertIndex = indexOfFirstInstructionOrThrow(index, Opcode.MOVE_RESULT)
|
||||
val register = getInstruction<OneRegisterInstruction>(insertIndex).registerA
|
||||
|
||||
addInstructions(
|
||||
registerIndex + 1,
|
||||
insertIndex + 1,
|
||||
"""
|
||||
invoke-static { v$register }, $EXTENSION_CLASS_DESCRIPTOR->$methodName(I)I
|
||||
move-result v$register
|
||||
"""
|
||||
invoke-static { v$colorRegister }, $EXTENSION_CLASS_DESCRIPTOR->getVideoPlayerSeekbarColor(I)I
|
||||
move-result v$colorRegister
|
||||
""",
|
||||
)
|
||||
}
|
||||
|
||||
playerSeekbarColorFingerprint.method.apply {
|
||||
addColorChangeInstructions(inlineTimeBarColorizedBarPlayedColorDarkId)
|
||||
addColorChangeInstructions(inlineTimeBarPlayedNotHighlightedColorId)
|
||||
addColorChangeInstructions(inlineTimeBarColorizedBarPlayedColorDarkId, "getVideoPlayerSeekbarColor")
|
||||
addColorChangeInstructions(inlineTimeBarPlayedNotHighlightedColorId, "getVideoPlayerSeekbarColor")
|
||||
}
|
||||
|
||||
shortsSeekbarColorFingerprint.method.apply {
|
||||
addColorChangeInstructions(reelTimeBarPlayedColorId)
|
||||
addColorChangeInstructions(reelTimeBarPlayedColorId, "getVideoPlayerSeekbarColor")
|
||||
}
|
||||
|
||||
setSeekbarClickedColorFingerprint.originalMethod.let {
|
||||
@@ -229,16 +247,63 @@ val seekbarColorPatch = bytecodePatch(
|
||||
|
||||
// 19.25+ changes
|
||||
|
||||
playerSeekbarGradientConfigFingerprint.method.insertFeatureFlagBooleanOverride(
|
||||
PLAYER_SEEKBAR_GRADIENT_FEATURE_FLAG,
|
||||
"$EXTENSION_CLASS_DESCRIPTOR->playerSeekbarGradientEnabled(Z)Z"
|
||||
)
|
||||
playerSeekbarHandleColorFingerprint.method.apply {
|
||||
addColorChangeInstructions(ytStaticBrandRedId, "getVideoPlayerSeekbarColor")
|
||||
}
|
||||
|
||||
lithoLinearGradientFingerprint.method.addInstruction(
|
||||
// If hiding feed seekbar thumbnails, then turn off the cairo gradient
|
||||
// of the watch history menu items as they use the same gradient as the
|
||||
// player and there is no easy way to distinguish which to use a transparent color.
|
||||
if (is_19_34_or_greater) {
|
||||
watchHistoryMenuUseProgressDrawableFingerprint.method.apply {
|
||||
val progressIndex = indexOfFirstInstructionOrThrow {
|
||||
val reference = getReference<MethodReference>()
|
||||
reference?.definingClass == "Landroid/widget/ProgressBar;" && reference.name == "setMax"
|
||||
}
|
||||
val index = indexOfFirstInstructionOrThrow(progressIndex, Opcode.MOVE_RESULT)
|
||||
val register = getInstruction<OneRegisterInstruction>(index).registerA
|
||||
|
||||
addInstructions(
|
||||
index + 1,
|
||||
"""
|
||||
invoke-static { v$register }, $EXTENSION_CLASS_DESCRIPTOR->showWatchHistoryProgressDrawable(Z)Z
|
||||
move-result v$register
|
||||
"""
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
lithoLinearGradientFingerprint.method.addInstructions(
|
||||
0,
|
||||
"invoke-static/range { p4 .. p5 }, $EXTENSION_CLASS_DESCRIPTOR->setLinearGradient([I[F)V"
|
||||
"""
|
||||
invoke-static/range { p4 .. p5 }, $EXTENSION_CLASS_DESCRIPTOR->getLithoLinearGradient([I[F)[I
|
||||
move-result-object p4
|
||||
"""
|
||||
)
|
||||
|
||||
val playerFingerprint =
|
||||
if (is_19_49_or_greater) {
|
||||
playerLinearGradientFingerprint
|
||||
} else if (is_19_46_or_greater) {
|
||||
playerLinearGradientLegacy1946Fingerprint
|
||||
} else {
|
||||
playerLinearGradientLegacy1925Fingerprint
|
||||
}
|
||||
|
||||
playerFingerprint.let {
|
||||
it.method.apply {
|
||||
val index = it.patternMatch!!.endIndex
|
||||
val register = getInstruction<OneRegisterInstruction>(index).registerA
|
||||
|
||||
addInstructions(
|
||||
index + 1,
|
||||
"""
|
||||
invoke-static { v$register }, $EXTENSION_CLASS_DESCRIPTOR->getPlayerLinearGradient([I)[I
|
||||
move-result-object v$register
|
||||
"""
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
// region apply seekbar custom color to splash screen animation.
|
||||
|
||||
|
||||
@@ -1,66 +1,9 @@
|
||||
package app.revanced.patches.youtube.layout.tablet
|
||||
|
||||
import app.revanced.patcher.extensions.InstructionExtensions.addInstructionsWithLabels
|
||||
import app.revanced.patcher.extensions.InstructionExtensions.getInstruction
|
||||
import app.revanced.patcher.extensions.InstructionExtensions.instructions
|
||||
import app.revanced.patcher.patch.bytecodePatch
|
||||
import app.revanced.patcher.util.smali.ExternalLabel
|
||||
import app.revanced.patches.all.misc.resources.addResources
|
||||
import app.revanced.patches.all.misc.resources.addResourcesPatch
|
||||
import app.revanced.patches.shared.misc.settings.preference.SwitchPreference
|
||||
import app.revanced.patches.youtube.misc.extension.sharedExtensionPatch
|
||||
import app.revanced.patches.youtube.misc.settings.PreferenceScreen
|
||||
import app.revanced.patches.youtube.misc.settings.settingsPatch
|
||||
import app.revanced.patches.youtube.layout.formfactor.changeFormFactorPatch
|
||||
|
||||
const val EXTENSION_CLASS_DESCRIPTOR = "Lapp/revanced/extension/youtube/patches/TabletLayoutPatch;"
|
||||
|
||||
val enableTabletLayoutPatch = bytecodePatch(
|
||||
name = "Enable tablet layout",
|
||||
description = "Adds an option to enable tablet layout.",
|
||||
) {
|
||||
dependsOn(
|
||||
sharedExtensionPatch,
|
||||
settingsPatch,
|
||||
addResourcesPatch,
|
||||
)
|
||||
|
||||
compatibleWith(
|
||||
"com.google.android.youtube"(
|
||||
"18.38.44",
|
||||
"18.49.37",
|
||||
"19.16.39",
|
||||
"19.25.37",
|
||||
"19.34.42",
|
||||
"19.43.41",
|
||||
"19.45.38",
|
||||
"19.46.42",
|
||||
"19.47.53",
|
||||
),
|
||||
)
|
||||
|
||||
execute {
|
||||
addResources("youtube", "layout.tablet.enableTabletLayoutPatch")
|
||||
|
||||
PreferenceScreen.GENERAL_LAYOUT.addPreferences(
|
||||
SwitchPreference("revanced_tablet_layout"),
|
||||
)
|
||||
|
||||
getFormFactorFingerprint.method.apply {
|
||||
val returnIsLargeFormFactorIndex = instructions.lastIndex - 4
|
||||
val returnIsLargeFormFactorLabel = getInstruction(returnIsLargeFormFactorIndex)
|
||||
|
||||
addInstructionsWithLabels(
|
||||
0,
|
||||
"""
|
||||
invoke-static { }, $EXTENSION_CLASS_DESCRIPTOR->getTabletLayoutEnabled()Z
|
||||
move-result v0
|
||||
if-nez v0, :is_large_form_factor
|
||||
""",
|
||||
ExternalLabel(
|
||||
"is_large_form_factor",
|
||||
returnIsLargeFormFactorLabel,
|
||||
),
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
@Deprecated("Use 'Change form factor' instead.")
|
||||
val enableTabletLayoutPatch = bytecodePatch {
|
||||
dependsOn(changeFormFactorPatch)
|
||||
}
|
||||
@@ -1,25 +0,0 @@
|
||||
package app.revanced.patches.youtube.layout.tablet
|
||||
|
||||
import com.android.tools.smali.dexlib2.Opcode
|
||||
import com.android.tools.smali.dexlib2.AccessFlags
|
||||
import app.revanced.patcher.fingerprint
|
||||
|
||||
internal val getFormFactorFingerprint = fingerprint {
|
||||
accessFlags(AccessFlags.PUBLIC, AccessFlags.STATIC)
|
||||
returns("L")
|
||||
parameters("Landroid/content/Context;", "Ljava/util/List;")
|
||||
opcodes(
|
||||
Opcode.SGET_OBJECT,
|
||||
Opcode.INVOKE_VIRTUAL,
|
||||
Opcode.MOVE_RESULT_OBJECT,
|
||||
Opcode.INVOKE_VIRTUAL,
|
||||
Opcode.MOVE_RESULT,
|
||||
Opcode.IF_EQZ,
|
||||
Opcode.SGET_OBJECT,
|
||||
Opcode.RETURN_OBJECT,
|
||||
Opcode.INVOKE_STATIC,
|
||||
Opcode.MOVE_RESULT_OBJECT,
|
||||
Opcode.RETURN_OBJECT,
|
||||
)
|
||||
strings("")
|
||||
}
|
||||
@@ -13,6 +13,8 @@ import app.revanced.patches.shared.misc.settings.preference.SwitchPreference
|
||||
import app.revanced.patches.shared.misc.settings.preference.TextPreference
|
||||
import app.revanced.patches.youtube.layout.seekbar.seekbarColorPatch
|
||||
import app.revanced.patches.youtube.misc.extension.sharedExtensionPatch
|
||||
import app.revanced.patches.youtube.misc.playservice.is_19_25_or_greater
|
||||
import app.revanced.patches.youtube.misc.playservice.versionCheckPatch
|
||||
import app.revanced.patches.youtube.misc.settings.PreferenceScreen
|
||||
import app.revanced.patches.youtube.misc.settings.settingsPatch
|
||||
import app.revanced.util.forEachChildElement
|
||||
@@ -71,6 +73,7 @@ val themePatch = bytecodePatch(
|
||||
dependsOn(
|
||||
lithoColorHookPatch,
|
||||
seekbarColorPatch,
|
||||
versionCheckPatch,
|
||||
resourcePatch {
|
||||
dependsOn(
|
||||
settingsPatch,
|
||||
@@ -83,9 +86,15 @@ val themePatch = bytecodePatch(
|
||||
|
||||
PreferenceScreen.SEEKBAR.addPreferences(
|
||||
SwitchPreference("revanced_seekbar_custom_color"),
|
||||
TextPreference("revanced_seekbar_custom_color_value", inputType = InputType.TEXT_CAP_CHARACTERS),
|
||||
TextPreference("revanced_seekbar_custom_color_primary", inputType = InputType.TEXT_CAP_CHARACTERS),
|
||||
)
|
||||
|
||||
if (is_19_25_or_greater) {
|
||||
PreferenceScreen.SEEKBAR.addPreferences(
|
||||
TextPreference("revanced_seekbar_custom_color_accent", inputType = InputType.TEXT_CAP_CHARACTERS),
|
||||
)
|
||||
}
|
||||
|
||||
// Edit theme colors via resources.
|
||||
document("res/values/colors.xml").use { document ->
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ import app.revanced.patches.shared.misc.checks.checkEnvironmentPatch
|
||||
import app.revanced.patches.youtube.misc.extension.sharedExtensionPatch
|
||||
import app.revanced.patches.youtube.shared.mainActivityOnCreateFingerprint
|
||||
|
||||
val checkEnvironmentPatch = checkEnvironmentPatch(
|
||||
internal val checkEnvironmentPatch = checkEnvironmentPatch(
|
||||
mainActivityOnCreateFingerprint = mainActivityOnCreateFingerprint,
|
||||
extensionPatch = sharedExtensionPatch,
|
||||
"com.google.android.youtube",
|
||||
|
||||
@@ -1,47 +0,0 @@
|
||||
package app.revanced.patches.youtube.misc.fix.cairo
|
||||
|
||||
import app.revanced.patcher.extensions.InstructionExtensions.addInstruction
|
||||
import app.revanced.patcher.extensions.InstructionExtensions.getInstruction
|
||||
import app.revanced.patcher.patch.bytecodePatch
|
||||
import app.revanced.patches.youtube.misc.backgroundplayback.backgroundPlaybackPatch
|
||||
import app.revanced.patches.youtube.misc.playservice.is_19_04_or_greater
|
||||
import app.revanced.patches.youtube.misc.playservice.versionCheckPatch
|
||||
import app.revanced.util.indexOfFirstInstructionOrThrow
|
||||
import app.revanced.util.indexOfFirstLiteralInstructionOrThrow
|
||||
import com.android.tools.smali.dexlib2.Opcode
|
||||
import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
|
||||
|
||||
internal val disableCairoSettingsPatch = bytecodePatch(
|
||||
description = "Disables Cairo Fragment from being used.",
|
||||
) {
|
||||
dependsOn(versionCheckPatch)
|
||||
|
||||
execute {
|
||||
if (!is_19_04_or_greater) {
|
||||
return@execute
|
||||
}
|
||||
|
||||
/**
|
||||
* <pre>
|
||||
* Cairo Fragment was added since YouTube v19.04.38.
|
||||
*
|
||||
* Disable this for the following reasons:
|
||||
* 1. [backgroundPlaybackPatch] does not activate the Minimized playback setting of Cairo Fragment.
|
||||
* 2. Some patches do not yet support Cairo Fragments (ie: custom Seekbar color).
|
||||
* 3. Settings preferences added by ReVanced are missing.
|
||||
*
|
||||
* Screenshots of the Cairo Fragment:
|
||||
* <a href="https://github.com/qnblackcat/uYouPlus/issues/1468">uYouPlus#1468</a>.
|
||||
*/
|
||||
cairoFragmentConfigFingerprint.method.apply {
|
||||
val literalIndex = indexOfFirstLiteralInstructionOrThrow(CAIRO_CONFIG_LITERAL_VALUE)
|
||||
val resultIndex = indexOfFirstInstructionOrThrow(literalIndex, Opcode.MOVE_RESULT)
|
||||
val register = getInstruction<OneRegisterInstruction>(resultIndex).registerA
|
||||
|
||||
addInstruction(
|
||||
resultIndex + 1,
|
||||
"const/16 v$register, 0x0",
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,19 +0,0 @@
|
||||
package app.revanced.patches.youtube.misc.fix.cairo
|
||||
|
||||
import app.revanced.patcher.fingerprint
|
||||
import app.revanced.util.literal
|
||||
import com.android.tools.smali.dexlib2.AccessFlags
|
||||
|
||||
/**
|
||||
* Added in YouTube v19.04.38.
|
||||
*
|
||||
* When this value is true, Cairo Fragment is used.
|
||||
* In this case, some of the patches may be broken, so set this value to FALSE.
|
||||
*/
|
||||
internal const val CAIRO_CONFIG_LITERAL_VALUE = 45532100L
|
||||
|
||||
internal val cairoFragmentConfigFingerprint = fingerprint {
|
||||
accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL)
|
||||
returns("Z")
|
||||
literal { CAIRO_CONFIG_LITERAL_VALUE }
|
||||
}
|
||||
@@ -105,3 +105,15 @@ internal val pivotBarConstructorFingerprint = fingerprint {
|
||||
accessFlags(AccessFlags.PUBLIC, AccessFlags.CONSTRUCTOR)
|
||||
strings("com.google.android.apps.youtube.app.endpoint.flags")
|
||||
}
|
||||
|
||||
internal val imageEnumConstructorFingerprint = fingerprint {
|
||||
accessFlags(AccessFlags.STATIC, AccessFlags.CONSTRUCTOR)
|
||||
strings("TAB_ACTIVITY_CAIRO")
|
||||
}
|
||||
|
||||
internal val setEnumMapFingerprint = fingerprint {
|
||||
accessFlags(AccessFlags.PUBLIC, AccessFlags.CONSTRUCTOR)
|
||||
literal {
|
||||
ytFillBellId
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package app.revanced.patches.youtube.misc.navigation
|
||||
|
||||
import app.revanced.patcher.extensions.InstructionExtensions.addInstruction
|
||||
import app.revanced.patcher.extensions.InstructionExtensions.addInstructions
|
||||
import app.revanced.patcher.extensions.InstructionExtensions.getInstruction
|
||||
import app.revanced.patcher.extensions.InstructionExtensions.instructions
|
||||
import app.revanced.patcher.patch.PatchException
|
||||
@@ -12,13 +13,16 @@ import app.revanced.patches.shared.misc.mapping.resourceMappingPatch
|
||||
import app.revanced.patches.shared.misc.mapping.resourceMappings
|
||||
import app.revanced.patches.youtube.misc.extension.sharedExtensionPatch
|
||||
import app.revanced.patches.youtube.misc.playertype.playerTypeHookPatch
|
||||
import app.revanced.patches.youtube.misc.playservice.is_19_35_or_greater
|
||||
import app.revanced.util.getReference
|
||||
import app.revanced.util.indexOfFirstInstructionOrThrow
|
||||
import app.revanced.util.indexOfFirstInstructionReversedOrThrow
|
||||
import app.revanced.util.indexOfFirstLiteralInstructionOrThrow
|
||||
import com.android.tools.smali.dexlib2.Opcode
|
||||
import com.android.tools.smali.dexlib2.iface.instruction.FiveRegisterInstruction
|
||||
import com.android.tools.smali.dexlib2.iface.instruction.Instruction
|
||||
import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
|
||||
import com.android.tools.smali.dexlib2.iface.instruction.ReferenceInstruction
|
||||
import com.android.tools.smali.dexlib2.iface.reference.MethodReference
|
||||
import com.android.tools.smali.dexlib2.util.MethodUtil
|
||||
|
||||
@@ -26,6 +30,8 @@ internal var imageOnlyTabResourceId = -1L
|
||||
private set
|
||||
internal var actionBarSearchResultsViewMicId = -1L
|
||||
private set
|
||||
internal var ytFillBellId = -1L
|
||||
private set
|
||||
|
||||
private val navigationBarHookResourcePatch = resourcePatch {
|
||||
dependsOn(resourceMappingPatch)
|
||||
@@ -33,6 +39,7 @@ private val navigationBarHookResourcePatch = resourcePatch {
|
||||
execute {
|
||||
imageOnlyTabResourceId = resourceMappings["layout", "image_only_tab"]
|
||||
actionBarSearchResultsViewMicId = resourceMappings["layout", "action_bar_search_results_view_mic"]
|
||||
ytFillBellId = resourceMappings["drawable", "yt_fill_bell_black_24"]
|
||||
}
|
||||
}
|
||||
|
||||
@@ -144,6 +151,36 @@ val navigationBarHookPatch = bytecodePatch(description = "Hooks the active navig
|
||||
"(${EXTENSION_NAVIGATION_BUTTON_DESCRIPTOR}Landroid/view/View;)V",
|
||||
)
|
||||
}
|
||||
|
||||
// Fix YT bug of notification tab missing the filled icon.
|
||||
if (is_19_35_or_greater) {
|
||||
val cairoNotificationEnumReference = with(imageEnumConstructorFingerprint) {
|
||||
val stringIndex = stringMatches!!.first().index
|
||||
val cairoNotificationEnumIndex = method.indexOfFirstInstructionOrThrow(stringIndex) {
|
||||
opcode == Opcode.SPUT_OBJECT
|
||||
}
|
||||
method.getInstruction<ReferenceInstruction>(cairoNotificationEnumIndex).reference
|
||||
}
|
||||
|
||||
setEnumMapFingerprint.method.apply {
|
||||
val enumMapIndex = indexOfFirstInstructionReversedOrThrow {
|
||||
val reference = getReference<MethodReference>()
|
||||
opcode == Opcode.INVOKE_VIRTUAL &&
|
||||
reference?.definingClass == "Ljava/util/EnumMap;" &&
|
||||
reference.name == "put" &&
|
||||
reference.parameterTypes.firstOrNull() == "Ljava/lang/Enum;"
|
||||
}
|
||||
val instruction = getInstruction<FiveRegisterInstruction>(enumMapIndex)
|
||||
|
||||
addInstructions(
|
||||
enumMapIndex + 1,
|
||||
"""
|
||||
sget-object v${instruction.registerD}, $cairoNotificationEnumReference
|
||||
invoke-static { v${instruction.registerC}, v${instruction.registerD} }, $EXTENSION_CLASS_DESCRIPTOR->setCairoNotificationFilledIcon(Ljava/util/EnumMap;Ljava/lang/Enum;)V
|
||||
"""
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -12,13 +12,23 @@ internal val playerTopControlsInflateFingerprint = fingerprint {
|
||||
literal { controlsLayoutStub }
|
||||
}
|
||||
|
||||
internal val playerControlsExtensionHookListenersExistFingerprint = fingerprint {
|
||||
accessFlags(AccessFlags.PRIVATE, AccessFlags.STATIC)
|
||||
returns("Z")
|
||||
parameters()
|
||||
custom { methodDef, classDef ->
|
||||
methodDef.name == "fullscreenButtonVisibilityCallbacksExist" &&
|
||||
classDef.type == EXTENSION_CLASS_DESCRIPTOR
|
||||
}
|
||||
}
|
||||
|
||||
internal val playerControlsExtensionHookFingerprint = fingerprint {
|
||||
accessFlags(AccessFlags.PUBLIC, AccessFlags.STATIC)
|
||||
accessFlags(AccessFlags.PRIVATE, AccessFlags.STATIC)
|
||||
returns("V")
|
||||
parameters("Z")
|
||||
custom { methodDef, classDef ->
|
||||
methodDef.name == "fullscreenButtonVisibilityChanged" &&
|
||||
classDef.type == "Lapp/revanced/extension/youtube/patches/PlayerControlsPatch;"
|
||||
classDef.type == EXTENSION_CLASS_DESCRIPTOR
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -189,13 +189,18 @@ fun injectVisibilityCheckCall(descriptor: String) {
|
||||
"invoke-static { p1 , p2 }, $descriptor->changeVisibility(ZZ)V",
|
||||
)
|
||||
|
||||
if (!visibilityImmediateCallbacksExistModified) {
|
||||
visibilityImmediateCallbacksExistModified = true
|
||||
visibilityImmediateCallbacksExistMethod.returnEarly(true)
|
||||
}
|
||||
|
||||
visibilityImmediateMethod.addInstruction(
|
||||
visibilityImmediateInsertIndex++,
|
||||
"invoke-static { p0 }, $descriptor->changeVisibilityImmediate(Z)V",
|
||||
)
|
||||
}
|
||||
|
||||
private const val EXTENSION_CLASS_DESCRIPTOR =
|
||||
internal const val EXTENSION_CLASS_DESCRIPTOR =
|
||||
"Lapp/revanced/extension/youtube/patches/PlayerControlsPatch;"
|
||||
|
||||
private lateinit var inflateTopControlMethod: MutableMethod
|
||||
@@ -209,6 +214,9 @@ private var inflateBottomControlRegister: Int = -1
|
||||
private lateinit var visibilityMethod: MutableMethod
|
||||
private var visibilityInsertIndex: Int = 0
|
||||
|
||||
private var visibilityImmediateCallbacksExistModified = false
|
||||
private lateinit var visibilityImmediateCallbacksExistMethod : MutableMethod
|
||||
|
||||
private lateinit var visibilityImmediateMethod: MutableMethod
|
||||
private var visibilityImmediateInsertIndex: Int = 0
|
||||
|
||||
@@ -266,6 +274,7 @@ val playerControlsPatch = bytecodePatch(
|
||||
)
|
||||
}
|
||||
|
||||
visibilityImmediateCallbacksExistMethod = playerControlsExtensionHookListenersExistFingerprint.method
|
||||
visibilityImmediateMethod = playerControlsExtensionHookFingerprint.method
|
||||
|
||||
// A/B test for a slightly different bottom overlay controls,
|
||||
|
||||
@@ -41,6 +41,8 @@ var is_19_46_or_greater = false
|
||||
private set
|
||||
var is_19_47_or_greater = false
|
||||
private set
|
||||
var is_19_49_or_greater = false
|
||||
private set
|
||||
|
||||
val versionCheckPatch = resourcePatch(
|
||||
description = "Uses the Play Store service version to find the major/minor version of the YouTube target app.",
|
||||
@@ -74,5 +76,6 @@ val versionCheckPatch = resourcePatch(
|
||||
is_19_43_or_greater = 244405000 <= playStoreServicesVersion
|
||||
is_19_46_or_greater = 244705000 <= playStoreServicesVersion
|
||||
is_19_47_or_greater = 244799000 <= playStoreServicesVersion
|
||||
is_19_49_or_greater = 245005000 <= playStoreServicesVersion
|
||||
}
|
||||
}
|
||||
|
||||
@@ -21,3 +21,14 @@ internal val setThemeFingerprint = fingerprint {
|
||||
opcodes(Opcode.RETURN_OBJECT)
|
||||
literal { appearanceStringId }
|
||||
}
|
||||
|
||||
/**
|
||||
* Added in YouTube v19.04.38.
|
||||
*/
|
||||
internal const val CAIRO_CONFIG_LITERAL_VALUE = 45532100L
|
||||
|
||||
internal val cairoFragmentConfigFingerprint = fingerprint {
|
||||
accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL)
|
||||
returns("Z")
|
||||
literal { CAIRO_CONFIG_LITERAL_VALUE }
|
||||
}
|
||||
|
||||
@@ -6,6 +6,7 @@ import app.revanced.patcher.extensions.InstructionExtensions.getInstruction
|
||||
import app.revanced.patcher.extensions.InstructionExtensions.replaceInstruction
|
||||
import app.revanced.patcher.patch.bytecodePatch
|
||||
import app.revanced.patcher.patch.resourcePatch
|
||||
import app.revanced.patcher.util.proxy.mutableTypes.MutableMethod.Companion.toMutable
|
||||
import app.revanced.patches.all.misc.packagename.setOrGetFallbackPackageName
|
||||
import app.revanced.patches.all.misc.resources.addResources
|
||||
import app.revanced.patches.all.misc.resources.addResourcesPatch
|
||||
@@ -17,11 +18,17 @@ import app.revanced.patches.shared.misc.settings.preference.PreferenceScreenPref
|
||||
import app.revanced.patches.shared.misc.settings.settingsPatch
|
||||
import app.revanced.patches.youtube.misc.check.checkEnvironmentPatch
|
||||
import app.revanced.patches.youtube.misc.extension.sharedExtensionPatch
|
||||
import app.revanced.patches.youtube.misc.fix.cairo.disableCairoSettingsPatch
|
||||
import app.revanced.patches.youtube.misc.fix.playbackspeed.fixPlaybackSpeedWhilePlayingPatch
|
||||
import app.revanced.patches.youtube.misc.playservice.is_19_04_or_greater
|
||||
import app.revanced.patches.youtube.misc.playservice.is_19_34_or_greater
|
||||
import app.revanced.patches.youtube.misc.playservice.versionCheckPatch
|
||||
import app.revanced.util.*
|
||||
import com.android.tools.smali.dexlib2.AccessFlags
|
||||
import com.android.tools.smali.dexlib2.Opcode
|
||||
import com.android.tools.smali.dexlib2.builder.MutableMethodImplementation
|
||||
import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
|
||||
import com.android.tools.smali.dexlib2.immutable.ImmutableMethod
|
||||
import com.android.tools.smali.dexlib2.immutable.ImmutableMethodParameter
|
||||
import com.android.tools.smali.dexlib2.util.MethodUtil
|
||||
|
||||
// Used by a fingerprint() from SettingsPatch.
|
||||
@@ -38,13 +45,28 @@ private val settingsResourcePatch = resourcePatch {
|
||||
dependsOn(
|
||||
resourceMappingPatch,
|
||||
settingsPatch(
|
||||
rootPreference = IntentPreference(
|
||||
titleKey = "revanced_settings_title",
|
||||
summaryKey = null,
|
||||
intent = newIntent("revanced_settings_intent"),
|
||||
) to "settings_fragment",
|
||||
preferences,
|
||||
),
|
||||
listOf(
|
||||
IntentPreference(
|
||||
titleKey = "revanced_settings_title",
|
||||
summaryKey = null,
|
||||
intent = newIntent("revanced_settings_intent"),
|
||||
) to "settings_fragment",
|
||||
PreferenceCategory(
|
||||
titleKey = "revanced_settings_title",
|
||||
layout = "@layout/preference_group_title",
|
||||
preferences = setOf(
|
||||
IntentPreference(
|
||||
titleKey = "revanced_settings_submenu_title",
|
||||
summaryKey = null,
|
||||
icon = "@drawable/revanced_settings_icon",
|
||||
layout = "@layout/preference_with_icon",
|
||||
intent = newIntent("revanced_settings_intent"),
|
||||
)
|
||||
)
|
||||
) to "settings_fragment_cairo",
|
||||
),
|
||||
preferences
|
||||
)
|
||||
)
|
||||
|
||||
execute {
|
||||
@@ -52,6 +74,7 @@ private val settingsResourcePatch = resourcePatch {
|
||||
appearanceStringId = resourceMappings["string", "app_theme_appearance_dark"]
|
||||
|
||||
arrayOf(
|
||||
ResourceGroup("drawable", "revanced_settings_icon.xml"),
|
||||
ResourceGroup("layout", "revanced_settings_with_toolbar.xml"),
|
||||
).forEach { resourceGroup ->
|
||||
copyResources("settings", resourceGroup)
|
||||
@@ -74,7 +97,6 @@ private val settingsResourcePatch = resourcePatch {
|
||||
// Remove horizontal divider from the settings Preferences
|
||||
// To better match the appearance of the stock YouTube settings.
|
||||
document("res/values/styles.xml").use { document ->
|
||||
|
||||
arrayOf(
|
||||
"Theme.YouTube.Settings",
|
||||
"Theme.YouTube.Settings.Dark",
|
||||
@@ -94,7 +116,6 @@ private val settingsResourcePatch = resourcePatch {
|
||||
// Some devices freak out if undeclared data is passed to an intent,
|
||||
// and this change appears to fix the issue.
|
||||
document("AndroidManifest.xml").use { document ->
|
||||
|
||||
val licenseElement = document.childNodes.findElementByAttributeValueOrThrow(
|
||||
"android:name",
|
||||
"com.google.android.libraries.social.licenses.LicenseActivity",
|
||||
@@ -118,7 +139,7 @@ val settingsPatch = bytecodePatch(
|
||||
sharedExtensionPatch,
|
||||
settingsResourcePatch,
|
||||
addResourcesPatch,
|
||||
disableCairoSettingsPatch,
|
||||
versionCheckPatch,
|
||||
fixPlaybackSpeedWhilePlayingPatch,
|
||||
// Currently there is no easy way to make a mandatory patch,
|
||||
// so for now this is a dependent of this patch.
|
||||
@@ -142,6 +163,12 @@ val settingsPatch = bytecodePatch(
|
||||
selectable = true,
|
||||
)
|
||||
|
||||
if (is_19_34_or_greater) {
|
||||
PreferenceScreen.GENERAL_LAYOUT.addPreferences(
|
||||
SwitchPreference("revanced_restore_old_settings_menus")
|
||||
)
|
||||
}
|
||||
|
||||
PreferenceScreen.MISC.addPreferences(
|
||||
TextPreference(
|
||||
key = null,
|
||||
@@ -150,6 +177,10 @@ val settingsPatch = bytecodePatch(
|
||||
inputType = InputType.TEXT_MULTI_LINE,
|
||||
tag = "app.revanced.extension.shared.settings.preference.ImportExportPreference",
|
||||
),
|
||||
ListPreference(
|
||||
key = "revanced_language",
|
||||
summaryKey = null
|
||||
)
|
||||
)
|
||||
|
||||
setThemeFingerprint.method.let { setThemeMethod ->
|
||||
@@ -189,6 +220,40 @@ val settingsPatch = bytecodePatch(
|
||||
licenseActivityOnCreateFingerprint.classDef.apply {
|
||||
methods.removeIf { it.name != "onCreate" && !MethodUtil.isConstructor(it) }
|
||||
}
|
||||
|
||||
// Add context override to force a specific settings language.
|
||||
licenseActivityOnCreateFingerprint.classDef.apply {
|
||||
val attachBaseContext = ImmutableMethod(
|
||||
type,
|
||||
"attachBaseContext",
|
||||
listOf(ImmutableMethodParameter("Landroid/content/Context;", null, null)),
|
||||
"V",
|
||||
AccessFlags.PROTECTED.value,
|
||||
null,
|
||||
null,
|
||||
MutableMethodImplementation(3),
|
||||
).toMutable().apply {
|
||||
addInstructions(
|
||||
"""
|
||||
invoke-static { p1 }, $activityHookClassDescriptor->getAttachBaseContext(Landroid/content/Context;)Landroid/content/Context;
|
||||
move-result-object p1
|
||||
invoke-super { p0, p1 }, $superclass->attachBaseContext(Landroid/content/Context;)V
|
||||
return-void
|
||||
"""
|
||||
)
|
||||
}
|
||||
|
||||
methods.add(attachBaseContext)
|
||||
}
|
||||
|
||||
// Add setting to force cairo settings fragment on/off.
|
||||
if (is_19_04_or_greater) {
|
||||
cairoFragmentConfigFingerprint.method.insertFeatureFlagBooleanOverride(
|
||||
CAIRO_CONFIG_LITERAL_VALUE,
|
||||
"$activityHookClassDescriptor->useCairoSettingsFragment(Z)Z"
|
||||
)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
finalize {
|
||||
@@ -224,17 +289,15 @@ object PreferenceScreen : BasePreferenceScreen() {
|
||||
key = "revanced_settings_screen_03_feed",
|
||||
summaryKey = null,
|
||||
)
|
||||
val PLAYER = Screen(
|
||||
key = "revanced_settings_screen_04_player",
|
||||
val GENERAL_LAYOUT = Screen(
|
||||
key = "revanced_settings_screen_04_general",
|
||||
summaryKey = null,
|
||||
)
|
||||
val GENERAL_LAYOUT = Screen(
|
||||
key = "revanced_settings_screen_05_general",
|
||||
val PLAYER = Screen(
|
||||
key = "revanced_settings_screen_05_player",
|
||||
summaryKey = null,
|
||||
)
|
||||
|
||||
// Don't sort, as related preferences are scattered apart.
|
||||
// Can use title sorting after PreferenceCategory support is added.
|
||||
val SHORTS = Screen(
|
||||
key = "revanced_settings_screen_06_shorts",
|
||||
summaryKey = null,
|
||||
|
||||
@@ -47,8 +47,11 @@ val spoofVideoStreamsPatch = spoofVideoStreamsPatch({
|
||||
tag = "app.revanced.extension.youtube.settings.preference.SpoofStreamingDataSideEffectsPreference"
|
||||
),
|
||||
ListPreference(
|
||||
"revanced_spoof_video_streams_language",
|
||||
summaryKey = null
|
||||
key = "revanced_spoof_video_streams_language",
|
||||
summaryKey = null,
|
||||
// Language strings are declared in Setting patch.
|
||||
entriesKey = "revanced_language_entries",
|
||||
entryValuesKey = "revanced_language_entry_values"
|
||||
),
|
||||
SwitchPreference("revanced_spoof_video_streams_ios_force_avc"),
|
||||
SwitchPreference("revanced_spoof_streaming_data_stats_for_nerds"),
|
||||
|
||||
@@ -51,7 +51,7 @@ internal val mainActivityOnCreateFingerprint = fingerprint {
|
||||
}
|
||||
}
|
||||
|
||||
val rollingNumberTextViewAnimationUpdateFingerprint = fingerprint {
|
||||
internal val rollingNumberTextViewAnimationUpdateFingerprint = fingerprint {
|
||||
accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL)
|
||||
returns("V")
|
||||
parameters("Landroid/graphics/Bitmap;")
|
||||
|
||||
@@ -57,7 +57,10 @@ val forceOriginalAudioPatch = bytecodePatch(
|
||||
addResources("youtube", "video.audio.forceOriginalAudioPatch")
|
||||
|
||||
PreferenceScreen.VIDEO.addPreferences(
|
||||
SwitchPreference("revanced_force_original_audio")
|
||||
SwitchPreference(
|
||||
key = "revanced_force_original_audio",
|
||||
tag = "app.revanced.extension.youtube.settings.preference.ForceOriginalAudioSwitchPreference"
|
||||
)
|
||||
)
|
||||
|
||||
fun Method.firstFormatStreamingModelCall(
|
||||
|
||||
@@ -0,0 +1,74 @@
|
||||
package app.revanced.patches.youtube.video.hdr
|
||||
|
||||
import app.revanced.patcher.extensions.InstructionExtensions.addInstructionsWithLabels
|
||||
import app.revanced.patcher.patch.bytecodePatch
|
||||
import app.revanced.patches.all.misc.resources.addResources
|
||||
import app.revanced.patches.all.misc.resources.addResourcesPatch
|
||||
import app.revanced.patches.shared.misc.settings.preference.SwitchPreference
|
||||
import app.revanced.patches.youtube.misc.extension.sharedExtensionPatch
|
||||
import app.revanced.patches.youtube.misc.settings.PreferenceScreen
|
||||
import app.revanced.patches.youtube.misc.settings.settingsPatch
|
||||
import app.revanced.util.getReference
|
||||
import app.revanced.util.indexOfFirstInstructionOrThrow
|
||||
import com.android.tools.smali.dexlib2.iface.reference.MethodReference
|
||||
|
||||
private const val EXTENSION_CLASS_DESCRIPTOR =
|
||||
"Lapp/revanced/extension/youtube/patches/DisableHdrPatch;"
|
||||
|
||||
@Suppress("unused")
|
||||
val disableHdrPatch = bytecodePatch(
|
||||
name = "Disable HDR video",
|
||||
description = "Adds an option to disable video HDR.",
|
||||
) {
|
||||
dependsOn(
|
||||
sharedExtensionPatch,
|
||||
settingsPatch,
|
||||
addResourcesPatch,
|
||||
)
|
||||
|
||||
compatibleWith(
|
||||
"com.google.android.youtube"(
|
||||
"18.38.44",
|
||||
"18.49.37",
|
||||
"19.16.39",
|
||||
"19.25.37",
|
||||
"19.34.42",
|
||||
"19.43.41",
|
||||
"19.45.38",
|
||||
"19.46.42",
|
||||
"19.47.53",
|
||||
),
|
||||
)
|
||||
|
||||
execute {
|
||||
addResources("youtube", "video.hdr.disableHdrPatch")
|
||||
|
||||
PreferenceScreen.VIDEO.addPreferences(
|
||||
SwitchPreference("revanced_disable_hdr_video")
|
||||
)
|
||||
|
||||
hdrCapabilityFingerprint.let {
|
||||
it.originalMethod.apply {
|
||||
val stringIndex = it.stringMatches!!.first().index
|
||||
val navigateIndex = indexOfFirstInstructionOrThrow(stringIndex) {
|
||||
val reference = getReference<MethodReference>()
|
||||
reference?.parameterTypes == listOf("I", "Landroid/view/Display;") &&
|
||||
reference.returnType == "Z"
|
||||
}
|
||||
|
||||
// Modify the HDR lookup method (Method is in the same class as the fingerprint).
|
||||
navigate(this).to(navigateIndex).stop().addInstructionsWithLabels(
|
||||
0,
|
||||
"""
|
||||
invoke-static {}, $EXTENSION_CLASS_DESCRIPTOR->disableHDRVideo()Z
|
||||
move-result v0
|
||||
if-nez v0, :useHdr
|
||||
return v0
|
||||
:useHdr
|
||||
nop
|
||||
"""
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
package app.revanced.patches.youtube.video.hdr
|
||||
|
||||
import app.revanced.patcher.fingerprint
|
||||
import com.android.tools.smali.dexlib2.AccessFlags
|
||||
|
||||
internal val hdrCapabilityFingerprint = fingerprint {
|
||||
accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL)
|
||||
strings(
|
||||
"av1_profile_main_10_hdr_10_plus_supported",
|
||||
"video/av01"
|
||||
)
|
||||
}
|
||||
@@ -17,22 +17,26 @@ import app.revanced.patches.shared.misc.mapping.resourceMappings
|
||||
import app.revanced.patches.shared.misc.settings.preference.InputType
|
||||
import app.revanced.patches.shared.misc.settings.preference.SwitchPreference
|
||||
import app.revanced.patches.shared.misc.settings.preference.TextPreference
|
||||
import app.revanced.patches.youtube.interaction.seekbar.disableFastForwardNoticeFingerprint
|
||||
import app.revanced.patches.youtube.misc.extension.sharedExtensionPatch
|
||||
import app.revanced.patches.youtube.misc.litho.filter.addLithoFilter
|
||||
import app.revanced.patches.youtube.misc.litho.filter.lithoFilterPatch
|
||||
import app.revanced.patches.youtube.misc.playservice.is_19_25_or_greater
|
||||
import app.revanced.patches.youtube.misc.playservice.versionCheckPatch
|
||||
import app.revanced.patches.youtube.misc.recyclerviewtree.hook.addRecyclerViewTreeHook
|
||||
import app.revanced.patches.youtube.misc.recyclerviewtree.hook.recyclerViewTreeHookPatch
|
||||
import app.revanced.patches.youtube.misc.settings.PreferenceScreen
|
||||
import app.revanced.patches.youtube.misc.settings.settingsPatch
|
||||
import app.revanced.util.*
|
||||
import com.android.tools.smali.dexlib2.AccessFlags
|
||||
import com.android.tools.smali.dexlib2.iface.instruction.NarrowLiteralInstruction
|
||||
import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
|
||||
import com.android.tools.smali.dexlib2.iface.reference.FieldReference
|
||||
import com.android.tools.smali.dexlib2.iface.reference.MethodReference
|
||||
import com.android.tools.smali.dexlib2.immutable.ImmutableField
|
||||
|
||||
var speedUnavailableId = -1L
|
||||
internal set
|
||||
internal var speedUnavailableId = -1L
|
||||
private set
|
||||
|
||||
private val customPlaybackSpeedResourcePatch = resourcePatch {
|
||||
dependsOn(resourceMappingPatch)
|
||||
@@ -61,6 +65,7 @@ internal val customPlaybackSpeedPatch = bytecodePatch(
|
||||
recyclerViewTreeHookPatch,
|
||||
customPlaybackSpeedResourcePatch,
|
||||
addResourcesPatch,
|
||||
versionCheckPatch
|
||||
)
|
||||
|
||||
execute {
|
||||
@@ -71,6 +76,12 @@ internal val customPlaybackSpeedPatch = bytecodePatch(
|
||||
TextPreference("revanced_custom_playback_speeds", inputType = InputType.TEXT_MULTI_LINE),
|
||||
)
|
||||
|
||||
if (is_19_25_or_greater) {
|
||||
PreferenceScreen.VIDEO.addPreferences(
|
||||
TextPreference("revanced_speed_tap_and_hold", inputType = InputType.NUMBER_DECIMAL),
|
||||
)
|
||||
}
|
||||
|
||||
// Replace the speeds float array with custom speeds.
|
||||
speedArrayGeneratorFingerprint.method.apply {
|
||||
val sizeCallIndex = indexOfFirstInstructionOrThrow { getReference<MethodReference>()?.name == "size" }
|
||||
@@ -166,5 +177,27 @@ internal val customPlaybackSpeedPatch = bytecodePatch(
|
||||
addLithoFilter(FILTER_CLASS_DESCRIPTOR)
|
||||
|
||||
// endregion
|
||||
|
||||
|
||||
// region Custom tap and hold 2x speed.
|
||||
|
||||
if (is_19_25_or_greater) {
|
||||
disableFastForwardNoticeFingerprint.method.apply {
|
||||
val index = indexOfFirstInstructionOrThrow {
|
||||
(this as? NarrowLiteralInstruction)?.narrowLiteral == 2.0f.toRawBits()
|
||||
}
|
||||
val register = getInstruction<OneRegisterInstruction>(index).registerA
|
||||
|
||||
addInstructions(
|
||||
index + 1,
|
||||
"""
|
||||
invoke-static {}, $EXTENSION_CLASS_DESCRIPTOR->tapAndHoldSpeed()F
|
||||
move-result v$register
|
||||
"""
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
// endregion
|
||||
}
|
||||
}
|
||||
|
||||
@@ -24,31 +24,31 @@ class StringResource(
|
||||
if (value.startsWith('"') && value.endsWith('"')) {
|
||||
// Raw strings allow unescaped single quote but not double quote.
|
||||
if (!value.substring(1, value.length - 1).contains(Regex("(?<!\\\\)[\"]"))) {
|
||||
return this;
|
||||
return this
|
||||
}
|
||||
} else {
|
||||
if (value.contains('\n')) {
|
||||
// Don't throw an exception, otherwise unnoticed mistakes
|
||||
// in Crowdin can cause patching failures.
|
||||
// Incorrectly escaped strings still work but do not display as intended.
|
||||
Logger.getLogger(StringResource.javaClass.name).severe(
|
||||
Logger.getLogger(StringResource.javaClass.name).warning(
|
||||
"String $name is not raw but contains encoded new line characters: $value")
|
||||
}
|
||||
if (!value.contains(Regex("(?<!\\\\)['\"]"))) {
|
||||
return this;
|
||||
return this
|
||||
}
|
||||
}
|
||||
|
||||
Logger.getLogger(StringResource.javaClass.name).severe(
|
||||
Logger.getLogger(StringResource.javaClass.name).warning(
|
||||
"String $name cannot contain unescaped quotes in value: $value")
|
||||
|
||||
return this;
|
||||
return this
|
||||
}
|
||||
|
||||
// if the string is un-formatted, explicitly add the formatted attribute
|
||||
if (!formatted) setAttribute("formatted", "false")
|
||||
|
||||
textContent = value.validateAndroidStringEscaping();
|
||||
textContent = value.validateAndroidStringEscaping()
|
||||
}
|
||||
|
||||
companion object {
|
||||
|
||||
@@ -136,6 +136,8 @@ Second \"item\" text"</string>
|
||||
</patch>
|
||||
<patch id="layout.panels.popup.playerPopupPanelsPatch">
|
||||
</patch>
|
||||
<patch id="layout.player.fullscreen.exitFullscreenPatch">
|
||||
</patch>
|
||||
<patch id="layout.player.fullscreen.openVideosFullscreen">
|
||||
</patch>
|
||||
<patch id="layout.player.overlay.customPlayerOverlayOpacityResourcePatch">
|
||||
@@ -155,6 +157,8 @@ Second \"item\" text"</string>
|
||||
<!-- Toast shown if network connection times out. Translations of this should not be longer than the original English or the text can be clipped and not entirely shown. -->
|
||||
<!-- Shown in the settings preferences, and translations can be any text length. -->
|
||||
</patch>
|
||||
<patch id="layout.formfactor.changeFormFactorPatch">
|
||||
</patch>
|
||||
<patch id="layout.spoofappversion.spoofAppVersionPatch">
|
||||
<!-- It is ideal, but not required, if the text here appears is alphabetically after the text used for 'revanced_spoof_app_version_title'.
|
||||
This is because the 'General layout' menu uses alphabetic sorting, and it functionally works better if the spoof target selector appears below the 'Spoof app version' UI switch -->
|
||||
@@ -168,8 +172,6 @@ Second \"item\" text"</string>
|
||||
</patch>
|
||||
<patch id="layout.shortsautoplay.shortsAutoplayPatch">
|
||||
</patch>
|
||||
<patch id="layout.tablet.enableTabletLayoutPatch">
|
||||
</patch>
|
||||
<patch id="layout.miniplayer.miniplayerPatch">
|
||||
</patch>
|
||||
<patch id="layout.theme.themePatch">
|
||||
@@ -213,11 +215,14 @@ Second \"item\" text"</string>
|
||||
</patch>
|
||||
<patch id="video.speed.remember.rememberPlaybackSpeedPatch">
|
||||
</patch>
|
||||
<patch id="video.hdr.disableHdrPatch">
|
||||
</patch>
|
||||
<patch id="video.videoqualitymenu.restoreOldVideoQualityMenuResourcePatch">
|
||||
</patch>
|
||||
<patch id="interaction.seekbar.enableSlideToSeekPatch">
|
||||
</patch>
|
||||
<patch id="misc.fix.playback.spoofVideoStreamsPatch">
|
||||
<!-- 'no auth' means no authentication -->
|
||||
</patch>
|
||||
</app>
|
||||
<app id="twitch">
|
||||
|
||||
@@ -136,6 +136,8 @@ Second \"item\" text"</string>
|
||||
</patch>
|
||||
<patch id="layout.panels.popup.playerPopupPanelsPatch">
|
||||
</patch>
|
||||
<patch id="layout.player.fullscreen.exitFullscreenPatch">
|
||||
</patch>
|
||||
<patch id="layout.player.fullscreen.openVideosFullscreen">
|
||||
</patch>
|
||||
<patch id="layout.player.overlay.customPlayerOverlayOpacityResourcePatch">
|
||||
@@ -155,6 +157,8 @@ Second \"item\" text"</string>
|
||||
<!-- Toast shown if network connection times out. Translations of this should not be longer than the original English or the text can be clipped and not entirely shown. -->
|
||||
<!-- Shown in the settings preferences, and translations can be any text length. -->
|
||||
</patch>
|
||||
<patch id="layout.formfactor.changeFormFactorPatch">
|
||||
</patch>
|
||||
<patch id="layout.spoofappversion.spoofAppVersionPatch">
|
||||
<!-- It is ideal, but not required, if the text here appears is alphabetically after the text used for 'revanced_spoof_app_version_title'.
|
||||
This is because the 'General layout' menu uses alphabetic sorting, and it functionally works better if the spoof target selector appears below the 'Spoof app version' UI switch -->
|
||||
@@ -168,8 +172,6 @@ Second \"item\" text"</string>
|
||||
</patch>
|
||||
<patch id="layout.shortsautoplay.shortsAutoplayPatch">
|
||||
</patch>
|
||||
<patch id="layout.tablet.enableTabletLayoutPatch">
|
||||
</patch>
|
||||
<patch id="layout.miniplayer.miniplayerPatch">
|
||||
</patch>
|
||||
<patch id="layout.theme.themePatch">
|
||||
@@ -213,11 +215,14 @@ Second \"item\" text"</string>
|
||||
</patch>
|
||||
<patch id="video.speed.remember.rememberPlaybackSpeedPatch">
|
||||
</patch>
|
||||
<patch id="video.hdr.disableHdrPatch">
|
||||
</patch>
|
||||
<patch id="video.videoqualitymenu.restoreOldVideoQualityMenuResourcePatch">
|
||||
</patch>
|
||||
<patch id="interaction.seekbar.enableSlideToSeekPatch">
|
||||
</patch>
|
||||
<patch id="misc.fix.playback.spoofVideoStreamsPatch">
|
||||
<!-- 'no auth' means no authentication -->
|
||||
</patch>
|
||||
</app>
|
||||
<app id="twitch">
|
||||
|
||||
@@ -33,7 +33,7 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_check_environment_not_near_patch_time_invalid">تاريخ إنشاء APK تالف</string>
|
||||
</patch>
|
||||
<patch id="misc.settings.settingsResourcePatch">
|
||||
<string name="revanced_settings_title">ReVanced</string>
|
||||
<string name="revanced_settings_submenu_title">الإعدادات</string>
|
||||
<string name="revanced_settings_confirm_user_dialog_title">هل ترغب في المتابعة؟</string>
|
||||
<string name="revanced_settings_reset">إعادة التعيين</string>
|
||||
<string name="revanced_settings_restart_title">تحديث وإعادة تشغيل</string>
|
||||
@@ -43,6 +43,62 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_settings_import_reset">إعادة تعيين إعدادات ReVanced إلى الوضع الافتراضي</string>
|
||||
<string name="revanced_settings_import_success">تم استيراد %d إعدادات</string>
|
||||
<string name="revanced_settings_import_failure_parse">فشل الاستيراد: %s</string>
|
||||
<string name="revanced_language_title">لغة ReVanced</string>
|
||||
<string name="revanced_language_user_dialog_message">"قد تكون الترجمات لبعض اللغات مفقودة أو غير مكتملة.
|
||||
|
||||
لترجمة لغات جديدة، تفضل بزيارة translate.revanced.app"</string>
|
||||
<string name="revanced_language_DEFAULT">لغة التطبيق</string>
|
||||
<string name="revanced_language_AR">العربية</string>
|
||||
<string name="revanced_language_AZ">Azerbaijani</string>
|
||||
<string name="revanced_language_BG">Bulgarian</string>
|
||||
<string name="revanced_language_BN">Bengali</string>
|
||||
<string name="revanced_language_CA">Catalan</string>
|
||||
<string name="revanced_language_CS">Czech</string>
|
||||
<string name="revanced_language_DA">Danish</string>
|
||||
<string name="revanced_language_DE">German</string>
|
||||
<string name="revanced_language_EL">Greek</string>
|
||||
<string name="revanced_language_EN">English</string>
|
||||
<string name="revanced_language_ES">Spanish</string>
|
||||
<string name="revanced_language_ET">Estonian</string>
|
||||
<string name="revanced_language_FA">فارسى</string>
|
||||
<string name="revanced_language_FI">Finnish</string>
|
||||
<string name="revanced_language_FR">French - Français</string>
|
||||
<string name="revanced_language_GU">Gujarati</string>
|
||||
<string name="revanced_language_HI">Hindi</string>
|
||||
<string name="revanced_language_HR">Croatian</string>
|
||||
<string name="revanced_language_HU">Hungarian</string>
|
||||
<string name="revanced_language_ID">Indonesian</string>
|
||||
<string name="revanced_language_IT">Italian</string>
|
||||
<string name="revanced_language_JA">Japanese</string>
|
||||
<string name="revanced_language_KK">Kazakh</string>
|
||||
<string name="revanced_language_KO">Korean</string>
|
||||
<string name="revanced_language_LT">Lithuanian</string>
|
||||
<string name="revanced_language_LV">Latvian</string>
|
||||
<string name="revanced_language_MK">Macedonian</string>
|
||||
<string name="revanced_language_MN">Mongolian</string>
|
||||
<string name="revanced_language_MR">Marathi</string>
|
||||
<string name="revanced_language_MS">Malay</string>
|
||||
<string name="revanced_language_MY">Burmese</string>
|
||||
<string name="revanced_language_NL">Dutch</string>
|
||||
<string name="revanced_language_OR">Odia</string>
|
||||
<string name="revanced_language_PA">Punjabi</string>
|
||||
<string name="revanced_language_PL">Polish</string>
|
||||
<string name="revanced_language_PT">Portugese</string>
|
||||
<string name="revanced_language_RO">Romanian</string>
|
||||
<string name="revanced_language_RU">Russian - Русский</string>
|
||||
<string name="revanced_language_SK">Slovak</string>
|
||||
<string name="revanced_language_SL">Slovene</string>
|
||||
<string name="revanced_language_SR">Serbian</string>
|
||||
<string name="revanced_language_SV">Swedish</string>
|
||||
<string name="revanced_language_SW">Swahili</string>
|
||||
<string name="revanced_language_TA">Tamil</string>
|
||||
<string name="revanced_language_TE">Telugu</string>
|
||||
<string name="revanced_language_TH">Thai</string>
|
||||
<string name="revanced_language_TR">Turkish</string>
|
||||
<string name="revanced_language_UK">Ukrainian</string>
|
||||
<string name="revanced_language_UR">Urdu</string>
|
||||
<string name="revanced_language_VI">Vietnamese</string>
|
||||
<string name="revanced_language_ZH">Chinese</string>
|
||||
<string name="revanced_pref_import_export_title">استيراد / تصدير</string>
|
||||
<string name="revanced_pref_import_export_summary">استيراد / تصدير إعدادات ReVanced</string>
|
||||
<!-- Settings about dialog. -->
|
||||
@@ -77,12 +133,15 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_settings_screen_01_ads_title">الإعلانات</string>
|
||||
<string name="revanced_settings_screen_02_alt_thumbnails_title">مُصغَّرات فيديو بديلة</string>
|
||||
<string name="revanced_settings_screen_03_feed_title">الموجز</string>
|
||||
<string name="revanced_settings_screen_04_player_title">المشغل</string>
|
||||
<string name="revanced_settings_screen_05_general_title">التصميم العام</string>
|
||||
<string name="revanced_settings_screen_04_general_title">عام</string>
|
||||
<string name="revanced_settings_screen_05_player_title">المشغل</string>
|
||||
<string name="revanced_settings_screen_07_seekbar_title">شريط تقدم الفيديو</string>
|
||||
<string name="revanced_settings_screen_08_swipe_controls_title">التحكم عن طريق إيماءة التمرير</string>
|
||||
<string name="revanced_settings_screen_11_misc_title">إعدادات متنوعة</string>
|
||||
<string name="revanced_settings_screen_11_misc_title">خيارات متنوعة</string>
|
||||
<string name="revanced_settings_screen_12_video_title">الفيديو</string>
|
||||
<string name="revanced_restore_old_settings_menus_title">استعادة قوائم الإعدادات القديمة</string>
|
||||
<string name="revanced_restore_old_settings_menus_summary_on">يتم عرض قوائم الإعدادات القديمة</string>
|
||||
<string name="revanced_restore_old_settings_menus_summary_off">لا يتم عرض قوائم الإعدادات القديمة</string>
|
||||
</patch>
|
||||
<patch id="misc.backgroundplayback.backgroundPlaybackPatch">
|
||||
<string name="revanced_shorts_disable_background_playback_title">تعطيل تشغيل فيديوهات Shorts في الخلفية</string>
|
||||
@@ -109,9 +168,9 @@ Second \"item\" text"</string>
|
||||
لن يتم إعلامك بأي أخطاء غير متوقعة."</string>
|
||||
</patch>
|
||||
<patch id="layout.hide.general.hideLayoutComponentsPatch">
|
||||
<string name="revanced_disable_like_subscribe_glow_title">تعطيل توهج زر أعجبني / اشتراك</string>
|
||||
<string name="revanced_disable_like_subscribe_glow_summary_on">لن يتوهج زر أعجبني واشتراك عند ذكره</string>
|
||||
<string name="revanced_disable_like_subscribe_glow_summary_off">أعجبني واشتراك سوف يتوهج عند الإشارة</string>
|
||||
<string name="revanced_disable_like_subscribe_glow_title">تعطيل توهُّج زِرّي أعجبني واشتراك</string>
|
||||
<string name="revanced_disable_like_subscribe_glow_summary_on">لن يتوهَّج زرّي أعجبني واشتراك عند ذكرهما</string>
|
||||
<string name="revanced_disable_like_subscribe_glow_summary_off">سيتوهَّج زرّي أعجبني واشتراك عند ذكرهما</string>
|
||||
<string name="revanced_hide_album_cards_title">إخفاء بطاقات الألبوم</string>
|
||||
<string name="revanced_hide_album_cards_summary_on">تم إخفاء بطاقات الألبوم</string>
|
||||
<string name="revanced_hide_album_cards_summary_off">يتم عرض بطاقات الألبوم</string>
|
||||
@@ -138,12 +197,12 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_hide_join_membership_button_summary_on">تم إخفاء الزر</string>
|
||||
<string name="revanced_hide_join_membership_button_summary_off">يتم عرض الزر</string>
|
||||
<!-- 'For you' should be translated using the same localized wording YouTube displays. -->
|
||||
<string name="revanced_hide_for_you_shelf_title">إخفاء رف \"من أجلك\" في صفحة القناة</string>
|
||||
<string name="revanced_hide_for_you_shelf_title">إخفاء رف \"لـك\" في صفحة القناة</string>
|
||||
<string name="revanced_hide_for_you_shelf_summary_on">تم إخفاء الرف</string>
|
||||
<string name="revanced_hide_for_you_shelf_summary_off">يتم عرض الرف</string>
|
||||
<!-- 'Notify me' should be translated using the same localized wording YouTube displays.
|
||||
This item appear in the subscription feed for future livestreams or unreleased videos. -->
|
||||
<string name="revanced_hide_notify_me_button_title">إخفاء زر \'نبهني\'</string>
|
||||
<string name="revanced_hide_notify_me_button_title">إخفاء زر \'تنبيهي\'</string>
|
||||
<string name="revanced_hide_notify_me_button_summary_on">تم إخفاء الزر</string>
|
||||
<string name="revanced_hide_notify_me_button_summary_off">يتم عرض الزر</string>
|
||||
<!-- 'People also watch' should be translated using the same localized wording YouTube displays. -->
|
||||
@@ -164,9 +223,9 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_hide_chips_shelf_title">إخفاء رف الشرائح</string>
|
||||
<string name="revanced_hide_chips_shelf_summary_on">تم إخفاء رف الشرائح</string>
|
||||
<string name="revanced_hide_chips_shelf_summary_off">يتم عرض رف الشرائح</string>
|
||||
<string name="revanced_hide_expandable_chip_title">إخفاء الشريحة القابلة للتوسيع تحت مقاطع الفيديو</string>
|
||||
<string name="revanced_hide_expandable_chip_summary_on">تم إخفاء الرقائق القابلة للتوسيع</string>
|
||||
<string name="revanced_hide_expandable_chip_summary_off">يتم عرض الرقائق القابلة للتوسيع</string>
|
||||
<string name="revanced_hide_expandable_chip_title">إخفاء الشريحة القابلة للتوسيع تحت الفيديوهات</string>
|
||||
<string name="revanced_hide_expandable_chip_summary_on">تم إخفاء الشرائح القابلة للتوسيع</string>
|
||||
<string name="revanced_hide_expandable_chip_summary_off">يتم عرض الشرائح القابلة للتوسيع</string>
|
||||
<string name="revanced_hide_community_posts_title">إخفاء مشاركات المجتمع</string>
|
||||
<string name="revanced_hide_community_posts_summary_on">تم إخفاء مشاركات المجتمع</string>
|
||||
<string name="revanced_hide_community_posts_summary_off">يتم عرض مشاركات المجتمع</string>
|
||||
@@ -207,8 +266,8 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_hide_quick_actions_summary_on">تم إخفاء الإجراءات السريعة</string>
|
||||
<string name="revanced_hide_quick_actions_summary_off">يتم عرض الإجراءات السريعة</string>
|
||||
<string name="revanced_hide_related_videos_title">إخفاء الفيديوهات ذات الصلة في الإجراءات السريعة</string>
|
||||
<string name="revanced_hide_related_videos_summary_on">تم إخفاء مقاطع الفيديو ذات الصلة</string>
|
||||
<string name="revanced_hide_related_videos_summary_off">يتم عرض مقاطع الفيديو ذات الصلة</string>
|
||||
<string name="revanced_hide_related_videos_summary_on">تم إخفاء الفيديوهات ذات الصلة</string>
|
||||
<string name="revanced_hide_related_videos_summary_off">يتم عرض الفيديوهات ذات الصلة</string>
|
||||
<string name="revanced_hide_image_shelf_title">إخفاء رفوف الصور في نتائج البحث</string>
|
||||
<string name="revanced_hide_image_shelf_summary_on">تم إخفاء رفوف الصورة</string>
|
||||
<string name="revanced_hide_image_shelf_summary_off">يتم عرض رفوف الصورة</string>
|
||||
@@ -227,6 +286,9 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_hide_chapters_section_title">إخفاء قسم الفصول</string>
|
||||
<string name="revanced_hide_chapters_section_summary_on">تم إخفاء قسم الفصول</string>
|
||||
<string name="revanced_hide_chapters_section_summary_off">يتم عرض قسم الفصول</string>
|
||||
<string name="revanced_hide_how_this_was_made_section_title">إخفاء قسم \"كيف تم إنشاء هذا المحتوى\"</string>
|
||||
<string name="revanced_hide_how_this_was_made_section_summary_on">تم إخفاء قسم \"كيف تم إنشاء هذا المحتوى\"</string>
|
||||
<string name="revanced_hide_how_this_was_made_section_summary_off">يتم عرض قسم \"كيف تم إنشاء هذا المحتوى\"</string>
|
||||
<string name="revanced_hide_podcast_section_title">إخفاء قسم \'استكشاف البودكاست\'</string>
|
||||
<string name="revanced_hide_podcast_section_summary_on">تم إخفاء قسم \"استكشاف البودكاست\"</string>
|
||||
<string name="revanced_hide_podcast_section_summary_off">يتم عرض قسم \"استكشاف البودكاست\"</string>
|
||||
@@ -242,7 +304,7 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_hide_description_components_screen_title">وصف الفيديو</string>
|
||||
<string name="revanced_hide_description_components_screen_summary">إخفاء أو عرض مكونات وصف الفيديو</string>
|
||||
<string name="revanced_hide_filter_bar_screen_title">شريط التصفية</string>
|
||||
<string name="revanced_hide_filter_bar_screen_summary">إخفاء شريط التصفية أو عرضه في الموجز والبحث ومقاطع الفيديو ذات الصلة</string>
|
||||
<string name="revanced_hide_filter_bar_screen_summary">إخفاء شريط التصفية أو عرضه في الموجز والبحث الفيديوهات ذات الصلة</string>
|
||||
<string name="revanced_hide_filter_bar_feed_in_feed_title">إخفاء في الموجز</string>
|
||||
<string name="revanced_hide_filter_bar_feed_in_feed_summary_on">مخفي في الموجز</string>
|
||||
<string name="revanced_hide_filter_bar_feed_in_feed_summary_off">يعرض في الموجز</string>
|
||||
@@ -293,15 +355,15 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_custom_filter_toast_invalid_syntax">فلتر مخصص غير صالح: %s</string>
|
||||
<string name="revanced_hide_keyword_content_screen_title">إخفاء محتوى الكلمات الرئيسية</string>
|
||||
<string name="revanced_hide_keyword_content_screen_summary">إخفاء فيديوهات البحث والموجز باستخدام فلاتر الكلمات المفتاحية</string>
|
||||
<string name="revanced_hide_keyword_content_home_title">إخفاء مقاطع فيديو الصفحة الرئيسية بواسطة الكلمات المفتاحية</string>
|
||||
<string name="revanced_hide_keyword_content_home_summary_on">تتم تصفية مقاطع الفيديو في علامة التبويب \"الصفحة الرئيسية\" حسب الكلمات المفتاحية</string>
|
||||
<string name="revanced_hide_keyword_content_home_summary_off">لا تتم تصفية مقاطع الفيديو في علامة التبويب \"الصفحة الرئيسية\" حسب الكلمات المفتاحية</string>
|
||||
<string name="revanced_hide_keyword_content_subscriptions_title">إخفاء مقاطع الفيديو الخاصة بالاشتراك عن طريق الكلمات المفتاحية</string>
|
||||
<string name="revanced_hide_keyword_content_subscriptions_summary_on">يتم تصفية الفيديوهات في علامة التبويب الاشتراكات حسب الكلمات المفتاحية</string>
|
||||
<string name="revanced_hide_keyword_content_subscriptions_summary_off">لا يتم تصفية الفيديوهات في علامة التبويب الاشتراكات حسب الكلمات المفتاحية</string>
|
||||
<string name="revanced_hide_keyword_content_home_title">إخفاء فيديوهات الصفحة الرئيسية بواسطة الكلمات المفتاحية</string>
|
||||
<string name="revanced_hide_keyword_content_home_summary_on">تتم تصفية الفيديوهات في علامة التبويب \"الصفحة الرئيسية\" حسب الكلمات المفتاحية</string>
|
||||
<string name="revanced_hide_keyword_content_home_summary_off">لا تتم تصفية الفيديوهات في علامة التبويب \"الصفحة الرئيسية\" حسب الكلمات المفتاحية</string>
|
||||
<string name="revanced_hide_keyword_content_search_title">إخفاء نتائج البحث عن طريق الكلمات المفتاحية</string>
|
||||
<string name="revanced_hide_keyword_content_search_summary_on">يتم تصفية نتائج البحث حسب الكلمات المفتاحية</string>
|
||||
<string name="revanced_hide_keyword_content_search_summary_off">لا يتم تصفية نتائج البحث حسب الكلمات المفتاحية</string>
|
||||
<string name="revanced_hide_keyword_content_subscriptions_title">إخفاء الفيديوهات الخاصة بالاشتراك عن طريق الكلمات المفتاحية</string>
|
||||
<string name="revanced_hide_keyword_content_subscriptions_summary_on">يتم تصفية الفيديوهات في علامة التبويب الاشتراكات حسب الكلمات المفتاحية</string>
|
||||
<string name="revanced_hide_keyword_content_subscriptions_summary_off">لا يتم تصفية الفيديوهات في علامة التبويب الاشتراكات حسب الكلمات المفتاحية</string>
|
||||
<string name="revanced_hide_keyword_content_phrases_title">الكلمات المفتاحية المراد إخفاؤها</string>
|
||||
<!-- For localization it is preferred, but not required, if 'LeBlanc' is replaced with a localized name or a familiar word that has upper case letters in the middle of the word.
|
||||
This is because keywords can be in any language, and showing an example in the localized script helps convey this. -->
|
||||
@@ -348,6 +410,9 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_hide_products_banner_title">إخفاء لافتة لعرض المنتجات</string>
|
||||
<string name="revanced_hide_products_banner_summary_on">تم إخفاء البانر</string>
|
||||
<string name="revanced_hide_products_banner_summary_off">يتم عرض البانر</string>
|
||||
<string name="revanced_hide_end_screen_store_banner_title">إخفاء لافتة شاشة المتجر النهائية</string>
|
||||
<string name="revanced_hide_end_screen_store_banner_summary_on">تم إخفاء لافتة المتجر</string>
|
||||
<string name="revanced_hide_end_screen_store_banner_summary_off">يتم عرض لافتة المتجر</string>
|
||||
<string name="revanced_hide_player_store_shelf_title">إخفاء رف مشغل التسوق</string>
|
||||
<string name="revanced_hide_player_store_shelf_summary_on">تم إخفاء رفوف التسوق</string>
|
||||
<string name="revanced_hide_player_store_shelf_summary_off">يتم عرض رفوف التسوق</string>
|
||||
@@ -445,6 +510,9 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_swipe_overlay_background_alpha_summary">قيمة شفافية خلفية واجهة التمرير</string>
|
||||
<string name="revanced_swipe_threshold_title">مقدار حد التمرير</string>
|
||||
<string name="revanced_swipe_threshold_summary">الحد الأدنى من التمرير قبل اكتشاف الإيماءة</string>
|
||||
<string name="revanced_swipe_change_video_title">تمكين إيماءة التمرير لتغيير الفيديو</string>
|
||||
<string name="revanced_swipe_change_video_summary_on">سيؤدي التمرير في وضع ملء الشاشة إلى التغيير للفيديو التالي/السابق</string>
|
||||
<string name="revanced_swipe_change_video_summary_off">لن يؤدي التمرير في وضع ملء الشاشة إلى التغيير للفيديو التالي/السابق</string>
|
||||
</patch>
|
||||
<patch id="layout.autocaptions.autoCaptionsPatch">
|
||||
<string name="revanced_auto_captions_title">تعطيل التَّرْجَمَة التلقائية</string>
|
||||
@@ -516,14 +584,14 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_hide_navigation_button_labels_summary_on">تم إخفاء التسميات</string>
|
||||
<string name="revanced_hide_navigation_button_labels_summary_off">يتم عرض التسميات</string>
|
||||
<string name="revanced_disable_translucent_status_bar_title">تعطيل شريط الحالة الشفاف</string>
|
||||
<string name="revanced_disable_translucent_status_bar_summary_on">شريط الحالة غير معتمة</string>
|
||||
<string name="revanced_disable_translucent_status_bar_summary_off">شريط الحالة غير شفافة أو عميقة</string>
|
||||
<string name="revanced_disable_translucent_navigation_bar_light_title">تعطيل شريط التنقل الشفاف الفاتح</string>
|
||||
<string name="revanced_disable_translucent_navigation_bar_light_summary_on">شريط التنقل في الوضع الفاتح معتم</string>
|
||||
<string name="revanced_disable_translucent_navigation_bar_light_summary_off">يكون شريط التنقل في الوضع الفاتح معتمًا أو نصف شفاف</string>
|
||||
<string name="revanced_disable_translucent_navigation_bar_dark_title">تعطيل الشريط الداكنة</string>
|
||||
<string name="revanced_disable_translucent_navigation_bar_dark_summary_on">شريط التنقل في الوضع الداكن معتم</string>
|
||||
<string name="revanced_disable_translucent_navigation_bar_dark_summary_off">شريط التطبيق المصوري الشفاف غير عميقة أو عميقة</string>
|
||||
<string name="revanced_disable_translucent_status_bar_summary_on">شريط الحالة غير شفاف</string>
|
||||
<string name="revanced_disable_translucent_status_bar_summary_off">شريط الحالة معتم أو شفاف</string>
|
||||
<string name="revanced_disable_translucent_navigation_bar_light_title">تعطيل الشريط الشفاف الفاتح</string>
|
||||
<string name="revanced_disable_translucent_navigation_bar_light_summary_on">شريط التنقل في الوضع الفاتح غير شفاف</string>
|
||||
<string name="revanced_disable_translucent_navigation_bar_light_summary_off">شريط التنقل في الوضع الفاتح معتم او شفاف</string>
|
||||
<string name="revanced_disable_translucent_navigation_bar_dark_title">تعطيل الشريط الشفاف الداكن</string>
|
||||
<string name="revanced_disable_translucent_navigation_bar_dark_summary_on">شريط التنقل في الوضع الداكن غير شفاف</string>
|
||||
<string name="revanced_disable_translucent_navigation_bar_dark_summary_off">شريط التنقل في الوضع الداكن معتم او شفاف</string>
|
||||
</patch>
|
||||
<patch id="layout.hide.player.flyoutmenupanel.hidePlayerFlyoutMenuPatch">
|
||||
<string name="revanced_hide_player_flyout_title">القائمة المنبثقة</string>
|
||||
@@ -628,15 +696,18 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_shorts_player_screen_summary">إخفاء أو عرض المكونات في مشغل Shorts</string>
|
||||
<!-- 'home' should be translated using the same localized wording YouTube displays for the home tab. -->
|
||||
<string name="revanced_hide_shorts_home_title">إخفاء Shorts في موجز الصفحة الرئيسية</string>
|
||||
<string name="revanced_hide_shorts_home_summary_on">تم إخفاء Shorts في موجز الصفحة الرئيسية</string>
|
||||
<string name="revanced_hide_shorts_home_summary_off">يتم عرض Shorts في موجز الصفحة الرئيسية</string>
|
||||
<string name="revanced_hide_shorts_home_summary_on">مخفية في الصفحة الرئيسية والفيديوهات ذات الصلة</string>
|
||||
<string name="revanced_hide_shorts_home_summary_off">تعرض في الصفحة الرئيسية والفيديوهات ذات الصلة</string>
|
||||
<!-- 'subscription' should be translated using the same localized wording YouTube displays for the subscription tab. -->
|
||||
<string name="revanced_hide_shorts_subscriptions_title">إخفاء Shorts في موجز الاشتراكات</string>
|
||||
<string name="revanced_hide_shorts_subscriptions_summary_on">تم إخفاء Shorts في موجز الاشتراكات</string>
|
||||
<string name="revanced_hide_shorts_subscriptions_summary_off">يتم عرض Shorts في موجز الاشتراكات</string>
|
||||
<string name="revanced_hide_shorts_subscriptions_summary_on">مخفية في موجز الاشتراكات</string>
|
||||
<string name="revanced_hide_shorts_subscriptions_summary_off">تعرض في موجز الاشتراكات</string>
|
||||
<string name="revanced_hide_shorts_search_title">إخفاء Shorts في نتائج البحث</string>
|
||||
<string name="revanced_hide_shorts_search_summary_on">تم إخفاء Shorts في نتائج البحث</string>
|
||||
<string name="revanced_hide_shorts_search_summary_off">يتم عرض Shorts في نتائج البحث</string>
|
||||
<string name="revanced_hide_shorts_search_summary_on">مخفية في نتائج البحث</string>
|
||||
<string name="revanced_hide_shorts_search_summary_off">تعرض في نتائج البحث</string>
|
||||
<string name="revanced_hide_shorts_history_title">إخفاء Shorts في سجل المشاهدة</string>
|
||||
<string name="revanced_hide_shorts_history_summary_on">مخفية في سجل المشاهدة</string>
|
||||
<string name="revanced_hide_shorts_history_summary_off">تعرض في سجل المشاهدة</string>
|
||||
<!-- 'join' should be translated using the same localized wording YouTube displays for the button. -->
|
||||
<string name="revanced_hide_shorts_join_button_title">إخفاء زر الانضمام</string>
|
||||
<string name="revanced_hide_shorts_join_button_summary_on">تم إخفاء زر الانضمام</string>
|
||||
@@ -681,7 +752,7 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_hide_shorts_stickers_title">إخفاء الملصقات</string>
|
||||
<string name="revanced_hide_shorts_stickers_summary_on">تم إخفاء الملصقات</string>
|
||||
<string name="revanced_hide_shorts_stickers_summary_off">يتم عرض الملصقات</string>
|
||||
<string name="revanced_hide_shorts_like_fountain_title">إخفاء فوران أعجبني</string>
|
||||
<string name="revanced_hide_shorts_like_fountain_title">إخفاء التأثير الفوّار لـزر أعجبني</string>
|
||||
<string name="revanced_hide_shorts_like_fountain_summary_on">تم إخفاء التأثير الفوّار لـزر أعجبني</string>
|
||||
<string name="revanced_hide_shorts_like_fountain_summary_off">يتم عرض التأثير الفوّار لـزر أعجبني</string>
|
||||
<string name="revanced_hide_shorts_like_button_title">إخفاء زر أعجبني</string>
|
||||
@@ -738,8 +809,15 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_hide_player_popup_panels_summary_on">تم إخفاء لوحات المشغل المنبثقة</string>
|
||||
<string name="revanced_hide_player_popup_panels_summary_off">يتم عرض لوحات المشغل المنبثقة</string>
|
||||
</patch>
|
||||
<patch id="layout.player.fullscreen.exitFullscreenPatch">
|
||||
<string name="revanced_exit_fullscreen_title">الخروج من وضع ملء الشاشة عند انتهاء الفيديو</string>
|
||||
<string name="revanced_exit_fullscreen_entry_1">معطل</string>
|
||||
<string name="revanced_exit_fullscreen_entry_2">بالطول</string>
|
||||
<string name="revanced_exit_fullscreen_entry_3">بالعرض</string>
|
||||
<string name="revanced_exit_fullscreen_entry_4">بالطول والعرض</string>
|
||||
</patch>
|
||||
<patch id="layout.player.fullscreen.openVideosFullscreen">
|
||||
<string name="revanced_open_videos_fullscreen_portrait_title">فتح مقاطع الفيديو في ملء الشاشة</string>
|
||||
<string name="revanced_open_videos_fullscreen_portrait_title">فتح الفيديوهات في ملء الشاشة</string>
|
||||
<string name="revanced_open_videos_fullscreen_portrait_summary_on">يتم فتح الفيديوهات في وضع ملء الشاشة</string>
|
||||
<string name="revanced_open_videos_fullscreen_portrait_summary_off">لا يتم فتح الفيديوهات في وضع ملء الشاشة</string>
|
||||
</patch>
|
||||
@@ -758,12 +836,12 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_ryd_failure_ryd_enabled_while_playing_video_then_user_voted">أعد تحميل الفيديو للتصويت بـ Return YouTube Dislike</string>
|
||||
<string name="revanced_ryd_enable_summary_on">يتم عرض لم يعجبني</string>
|
||||
<string name="revanced_ryd_enable_summary_off">لا يتم عرض لم يعجبني</string>
|
||||
<string name="revanced_ryd_shorts_title">عرض لم يعجني في مقاطع Shorts</string>
|
||||
<string name="revanced_ryd_shorts_summary_on">يتم عرض لم يعجني في مقاطع Shorts</string>
|
||||
<string name="revanced_ryd_shorts_title">عرض لم يعجني في فيديوهات Shorts</string>
|
||||
<string name="revanced_ryd_shorts_summary_on">يتم عرض لم يعجني في فيديوهات Shorts</string>
|
||||
<string name="revanced_ryd_shorts_summary_on_disclaimer">"إبداءات لم يعجبني التي تظهر على فيديوهات Shorts
|
||||
|
||||
التقييد: قد لا تظهر إبداءات لم يعجبني في وضع التصفح المتخفي"</string>
|
||||
<string name="revanced_ryd_shorts_summary_off">تم إخفاء لم يعجني في مقاطع Shorts</string>
|
||||
<string name="revanced_ryd_shorts_summary_off">تم إخفاء لم يعجني في فيديوهات Shorts</string>
|
||||
<string name="revanced_ryd_dislike_percentage_title">لم يعجبني كــ نسبة مئوية</string>
|
||||
<string name="revanced_ryd_dislike_percentage_summary_on">يعرض عدد لم يعجبني كـ نسبة مئوية</string>
|
||||
<string name="revanced_ryd_dislike_percentage_summary_off">يعرض عدد لم يعجبني كـ رَقَم</string>
|
||||
@@ -816,7 +894,7 @@ Second \"item\" text"</string>
|
||||
</patch>
|
||||
<patch id="layout.sponsorblock.sponsorBlockResourcePatch">
|
||||
<string name="revanced_sb_enable_sb">تمكين SponsorBlock</string>
|
||||
<string name="revanced_sb_enable_sb_sum">مانِع الرُعَاة هو نظام جماعي لتخطي الأجزاء المُمِلَّة في مقاطع YouTube</string>
|
||||
<string name="revanced_sb_enable_sb_sum">SponsorBlock مانِع الرُعَاة هو نظام جماعي لتخطي الأجزاء المُمِلَّة في مقاطع YouTube</string>
|
||||
<string name="revanced_sb_appearance_category">المظهر</string>
|
||||
<string name="revanced_sb_enable_voting">عرض زر التصويت</string>
|
||||
<string name="revanced_sb_enable_voting_sum_on">يتم عرض زر التصويت على المقطع</string>
|
||||
@@ -881,7 +959,7 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_sb_segments_sponsor">الراعي</string>
|
||||
<string name="revanced_sb_segments_sponsor_sum">الترويج المدفوع الأجر، والإحالات المدفوعة الأجر والإعلانات المباشرة. ليس للترويج الذاتي أو لصراعات مجانية للقضايا/المبدعين/المواقع الإلكترونية/المنتجات التي يحبون الحصول عليها</string>
|
||||
<string name="revanced_sb_segments_selfpromo">ترويج شخصي/غير مدفوع الأجر</string>
|
||||
<string name="revanced_sb_segments_selfpromo_sum">شبيهة بـ \"الراعي\" باستثناء ما يتعلق بالإعلانات غير المدفوعة الأجر أو الذاتية. ويشمل ذلك أقسام عن السلع أو التبرعات أو المعلومات المتعلقة بمن تعاونوا مع ناشر المحتوى</string>
|
||||
<string name="revanced_sb_segments_selfpromo_sum">مشابهة لـ \"الراعي\" باستثناء ما يتعلق بالإعلانات غير المدفوعة الأجر أو الذاتية. ويشمل ذلك أقسام عن السلع أو التبرعات أو المعلومات المتعلقة بمن تعاونوا مع ناشر المحتوى</string>
|
||||
<string name="revanced_sb_segments_interaction">تذكير بالتفاعل (اشتراك)</string>
|
||||
<string name="revanced_sb_segments_interaction_sum">تذكير قصير للإعجاب أو الاشتراك أو المتابعة في منتصف المحتوى. إذا كانت طويلة أو تتعلق بشيء محدد، فيجب أن تكون خاضعة للترويج الشخصي بدلاً من ذلك</string>
|
||||
<string name="revanced_sb_segments_highlight">الأبرز</string>
|
||||
@@ -895,7 +973,7 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_sb_segments_filler">خارج الموضوع/النكات</string>
|
||||
<string name="revanced_sb_segments_filler_sum">تم إضافة مشاهد ملتقطة خارج الموضوع أو الفكاهة التي ليست مطلوبة لفهم المحتوى الرئيسي للفيديو. لا تتضمن مقاطع توفر تَعبِير أو تفاصيل الخلفية</string>
|
||||
<string name="revanced_sb_segments_nomusic">الموسيقى: مقطع غير موسيقي</string>
|
||||
<string name="revanced_sb_segments_nomusic_sum">فقط للاستخدام في مقاطع الفيديو الموسيقية. أقسام مقاطع الفيديو الموسيقية بدون موسيقى، والتي لم يتم تغطيتها بالفعل من قبل فئة أخرى</string>
|
||||
<string name="revanced_sb_segments_nomusic_sum">فقط للاستخدام في المقاطع الموسيقية. أقسام المقاطع الموسيقية بدون موسيقى، والتي لم يتم تغطيتها بالفعل من قبل فئة أخرى</string>
|
||||
<string name="revanced_sb_skip_button_compact">تخطي</string>
|
||||
<string name="revanced_sb_skip_button_compact_highlight">الأبرز</string>
|
||||
<string name="revanced_sb_skip_button_sponsor">تخطي الراعي</string>
|
||||
@@ -1006,6 +1084,23 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_sb_reset">إعادة التعيين</string>
|
||||
<string name="revanced_sb_about">لمحة</string>
|
||||
<string name="revanced_sb_about_api_sum">يتم توفير البيانات بواسطة SponsorBlock API. انقر هنا لمعرفة المزيد ومشاهدة التنزيلات لمنصات أخرى</string>
|
||||
</patch>
|
||||
<patch id="layout.formfactor.changeFormFactorPatch">
|
||||
<string name="revanced_change_form_factor_title">شكل نموذج التخطيط</string>
|
||||
<string name="revanced_change_form_factor_entry_1">الافتراضي</string>
|
||||
<string name="revanced_change_form_factor_entry_2">الجوّال</string>
|
||||
<string name="revanced_change_form_factor_entry_3">الجهاز اللوحي</string>
|
||||
<string name="revanced_change_form_factor_entry_4">Automotive</string>
|
||||
<string name="revanced_change_form_factor_user_dialog_message">"تتضمن التغييرات:
|
||||
|
||||
تخطيط الجهاز اللوحي
|
||||
• إخفاء منشورات المجتمع
|
||||
|
||||
تخطيط Automotive
|
||||
• إخفاء قائمة سجل المشاهدة
|
||||
• استعادة علامة التبويب \"استكشاف\"
|
||||
• فتح فيديوهات Shorts في المشغل العادي
|
||||
• تنظيم الخلاصة حسب الموضوعات والقناة"</string>
|
||||
</patch>
|
||||
<patch id="layout.spoofappversion.spoofAppVersionPatch">
|
||||
<string name="revanced_spoof_app_version_title">خِداع إصدار التطبيق</string>
|
||||
@@ -1020,6 +1115,7 @@ Second \"item\" text"</string>
|
||||
This is because the 'General layout' menu uses alphabetic sorting, and it functionally works better if the spoof target selector appears below the 'Spoof app version' UI switch -->
|
||||
<string name="revanced_spoof_app_version_target_title">الهدف من تغيير إصدار التطبيق</string>
|
||||
<string name="revanced_spoof_app_version_target_entry_1">19.35.36 - استعادة أيقونات مشغل Shorts القديمة</string>
|
||||
<string name="revanced_spoof_app_version_target_entry_2">19.26.42 - استعادة أيقونات التنقل وشريط الأدوات القديمة</string>
|
||||
<!-- 'RYD' is 'Return YouTube Dislike' -->
|
||||
<string name="revanced_spoof_app_version_target_legacy_entry_1">18.33.40 - استعادة RYD على Shorts بوضع التخفي</string>
|
||||
<string name="revanced_spoof_app_version_target_legacy_entry_2">18.20.39 - استعادة قائمة سرعة الفيديو العريضة & الجودة</string>
|
||||
@@ -1050,10 +1146,10 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_disable_resuming_shorts_player_summary_off">سيتم استئناف تشغيل مشغل Shorts عند بدء تشغيل التطبيق</string>
|
||||
</patch>
|
||||
<patch id="layout.shortsplayer.shortsPlayerTypePatch">
|
||||
<string name="revanced_shorts_player_type_title">فتح مقاطع الـShorts باستخدام</string>
|
||||
<string name="revanced_shorts_player_type_title">فتح فيديوهات Shorts باستخدام</string>
|
||||
<string name="revanced_shorts_player_type_shorts">مشغل Shorts</string>
|
||||
<string name="revanced_shorts_player_type_regular_player">مشغل عادي</string>
|
||||
<string name="revanced_shorts_player_type_regular_player_fullscreen">شاشة كاملة - مشغل عادي</string>
|
||||
<string name="revanced_shorts_player_type_regular_player">المشغل العادي</string>
|
||||
<string name="revanced_shorts_player_type_regular_player_fullscreen">المشغل العادي في وضع ملء الشاشة</string>
|
||||
</patch>
|
||||
<patch id="layout.shortsautoplay.shortsAutoplayPatch">
|
||||
<string name="revanced_shorts_autoplay_title">التشغيل التلقائي لفيديوهات Shorts</string>
|
||||
@@ -1063,12 +1159,6 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_shorts_autoplay_background_summary_on">سيتم تشغيل فيديوهات Shorts تلقائيًا في الخلفية</string>
|
||||
<string name="revanced_shorts_autoplay_background_summary_off">سيتم تكرار فيديوهات Shorts في الخلفية</string>
|
||||
</patch>
|
||||
<patch id="layout.tablet.enableTabletLayoutPatch">
|
||||
<string name="revanced_tablet_layout_title">تمكين تصميم الجهاز اللوحي</string>
|
||||
<string name="revanced_tablet_layout_summary_on">تم تمكين تصميم الجهاز اللوحي</string>
|
||||
<string name="revanced_tablet_layout_summary_off">تم تعطيل تصميم الجهاز اللوحي</string>
|
||||
<string name="revanced_tablet_layout_user_dialog_message">لا تظهر منشورات المجتمع على تخطيطات الجهاز اللوحي</string>
|
||||
</patch>
|
||||
<patch id="layout.miniplayer.miniplayerPatch">
|
||||
<string name="revanced_miniplayer_screen_title">المشغل المصغر</string>
|
||||
<string name="revanced_miniplayer_screen_summary">تغيير نمط المشغل المصغر داخل التطبيق</string>
|
||||
@@ -1129,8 +1219,10 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_seekbar_custom_color_title">تمكين لون شريط تقدم الفيديو المخصص</string>
|
||||
<string name="revanced_seekbar_custom_color_summary_on">يتم عرض لون شريط تقدم الفيديو المخصص</string>
|
||||
<string name="revanced_seekbar_custom_color_summary_off">يتم عرض لون شريط تقدم الفيديو الاصلي</string>
|
||||
<string name="revanced_seekbar_custom_color_value_title">لون شريط تقدم الفيديو المخصص</string>
|
||||
<string name="revanced_seekbar_custom_color_value_summary">لون شريط التقدم</string>
|
||||
<string name="revanced_seekbar_custom_color_primary_title">لون شريط تقدم الفيديو المخصص</string>
|
||||
<string name="revanced_seekbar_custom_color_primary_summary">لون شريط التقدم</string>
|
||||
<string name="revanced_seekbar_custom_color_accent_title">لون مميز لشريط التقدم المخصص</string>
|
||||
<string name="revanced_seekbar_custom_color_accent_summary">اللون المميز لشريط التقدم</string>
|
||||
<string name="revanced_seekbar_custom_color_invalid">لون شريط التقدم غير صالح</string>
|
||||
</patch>
|
||||
<patch id="layout.thumbnails.bypassImageRegionRestrictionsPatch">
|
||||
@@ -1166,7 +1258,7 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_alt_thumbnail_stills_about_title">لقطات الفيديو الثابتة</string>
|
||||
<string name="revanced_alt_thumbnail_stills_about_summary">يتم التقاط اللقطات الثابتة من بداية/وسط/نهاية كل فيديو. هذه الصور مدمجة في YouTube ولا يتم استخدام أي واجهة برمجة تطبيقات خارجية</string>
|
||||
<string name="revanced_alt_thumbnail_stills_fast_title">استخدم اللقطات الثابتة السريعة</string>
|
||||
<string name="revanced_alt_thumbnail_stills_fast_summary_on">استخدام اللقطات متوسطة الجودة. سيتم تحميل المُصغَّرات بشكل أسرع، ولكن البث المباشر و المقاطع التي لم يتم إصدارها أو القديمة جدًا قد تعرض مُصغَّرات فارغة</string>
|
||||
<string name="revanced_alt_thumbnail_stills_fast_summary_on">استخدام اللقطات متوسطة الجودة. سيتم تحميل المُصغَّرات بشكل أسرع، ولكن البث المباشر و الفيديوهات التي لم يتم إصدارها أو القديمة جدًا قد تعرض مُصغَّرات فارغة</string>
|
||||
<string name="revanced_alt_thumbnail_stills_fast_summary_off">استخدام لقطات الفيديو الثابتة بجودة عالية</string>
|
||||
<string name="revanced_alt_thumbnail_stills_time_title">وقت الفيديو لأخذ اللقطات الثابتة منه</string>
|
||||
<string name="revanced_alt_thumbnail_stills_time_entry_1">بداية الفيديو</string>
|
||||
@@ -1232,12 +1324,13 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_force_original_audio_title">فرض الصوت الأصلي</string>
|
||||
<string name="revanced_force_original_audio_summary_on">استخدام الصوت الأصلي</string>
|
||||
<string name="revanced_force_original_audio_summary_off">استخدام الصوت الافتراضي</string>
|
||||
<string name="revanced_force_original_audio_not_available">لاستخدام هذه الميزة، قم بتغيير محاكاة بث المحتوى إلى نوع العميل iOS</string>
|
||||
</patch>
|
||||
<patch id="video.quality.rememberVideoQualityPatch">
|
||||
<!-- Translations should use the same text as revanced_custom_playback_speeds_auto -->
|
||||
<string name="revanced_video_quality_default_entry_1">تلقائي</string>
|
||||
<string name="revanced_remember_video_quality_last_selected_title">تذكر تغييرات جودة الفيديو</string>
|
||||
<string name="revanced_remember_video_quality_last_selected_summary_on">تنطبق تغييرات الجودة على جميع مقاطع الفيديو</string>
|
||||
<string name="revanced_remember_video_quality_last_selected_summary_on">تنطبق تغييرات الجودة على جميع الفيديوهات</string>
|
||||
<string name="revanced_remember_video_quality_last_selected_summary_off">تنطبق تغييرات الجودة على الفيديو الحالي فقط</string>
|
||||
<string name="revanced_video_quality_default_wifi_title">جودة الفيديو الافتراضية على شبكة Wi-Fi</string>
|
||||
<string name="revanced_video_quality_default_mobile_title">جودة الفيديو الافتراضية على شبكة الجوَّال</string>
|
||||
@@ -1259,6 +1352,8 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_custom_playback_speeds_invalid">يجب أن تكون سرعات التشغيل المخصصة أقل من %s</string>
|
||||
<string name="revanced_custom_playback_speeds_parse_exception">سرعة التشغيل المخصصة غير صالحة</string>
|
||||
<string name="revanced_custom_playback_speeds_auto">تلقائي</string>
|
||||
<string name="revanced_speed_tap_and_hold_title">سرعة النقر مع الاستمرار المخصصة</string>
|
||||
<string name="revanced_speed_tap_and_hold_summary">سرعة التشغيل بين 0-8</string>
|
||||
</patch>
|
||||
<patch id="video.speed.remember.rememberPlaybackSpeedPatch">
|
||||
<string name="revanced_remember_playback_speed_last_selected_title">تذكر التغيرات في سرعة التشغيل</string>
|
||||
@@ -1267,6 +1362,11 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_playback_speed_default_title">سرعة التشغيل الافتراضية</string>
|
||||
<string name="revanced_remember_playback_speed_toast">تغيير السرعة الافتراضية إلى: %s</string>
|
||||
</patch>
|
||||
<patch id="video.hdr.disableHdrPatch">
|
||||
<string name="revanced_disable_hdr_video_title">تعطيل فيديو HDR</string>
|
||||
<string name="revanced_disable_hdr_video_summary_on">تم تعطيل فيديو HDR</string>
|
||||
<string name="revanced_disable_hdr_video_summary_off">تم تمكين فيديو HDR</string>
|
||||
</patch>
|
||||
<patch id="video.videoqualitymenu.restoreOldVideoQualityMenuResourcePatch">
|
||||
<string name="revanced_restore_old_video_quality_menu_title">استعادة قائمة جودة الفيديو القديمة</string>
|
||||
<string name="revanced_restore_old_video_quality_menu_summary_on">يتم عرض قائمة جودة الفيديو القديمة</string>
|
||||
@@ -1287,62 +1387,28 @@ Second \"item\" text"</string>
|
||||
قد لا يعمل تشغيل الفيديو"</string>
|
||||
<string name="revanced_spoof_video_streams_user_dialog_message">إيقاف تشغيل هذا الإعداد قد يسبب مشاكل في تشغيل الفيديو.</string>
|
||||
<string name="revanced_spoof_video_streams_client_type_title">العميل الافتراضي</string>
|
||||
<string name="revanced_spoof_video_streams_about_title">آثار جانبية وهمية</string>
|
||||
<string name="revanced_spoof_video_streams_about_summary">"• القائمة الصوتية مفقودة
|
||||
• الصوت الثابت غير متوفر
|
||||
<!-- 'no auth' means no authentication -->
|
||||
<string name="revanced_spoof_video_streams_client_type_android_vr_no_auth">Android VR (بدون مصادقة)</string>
|
||||
<string name="revanced_spoof_video_streams_ios_force_avc_title">فرض iOS AVC (H.264)</string>
|
||||
<string name="revanced_spoof_video_streams_ios_force_avc_summary_on">يتم فرض ترميز فيديو على AVC (H.264)</string>
|
||||
<string name="revanced_spoof_video_streams_ios_force_avc_summary_off">يتم تحديد ترميز الفيديو تلقائيًا</string>
|
||||
<string name="revanced_spoof_video_streams_ios_force_avc_user_dialog_message">"قد يؤدي تمكين هذا إلى تحسين عمر البطارية وإصلاح تقطيع التشغيل.
|
||||
|
||||
AVC لديه حد أقصى للدقة 1080p، لا يتوفر ترميز الصوت Opus، وسوف يستخدم تشغيل الفيديو بيانات إنترنت أكثر من VP9 أو AV1."</string>
|
||||
<string name="revanced_spoof_video_streams_about_ios_tv_title">الآثار الجانبية لمحاكاة هوية iOS</string>
|
||||
<string name="revanced_spoof_video_streams_about_ios_tv_summary">"• قد لا يتم تشغيل الأفلام أو الفيديوهات المدفوعة
|
||||
• مستوى الصوت الثابت غير متوفر
|
||||
• تنتهي الفيديوهات قبل ب 1 ثانية"</string>
|
||||
<string name="revanced_spoof_video_streams_about_android_title">الآثار الجانبية لمحاكاة هوية Android</string>
|
||||
<string name="revanced_spoof_video_streams_about_android_summary">"• قائمة المقطع الصوتي مفقودة
|
||||
• مستوى الصوت الثابت غير متاح
|
||||
• فرض الصوت الأصلي غير متوفر"</string>
|
||||
<string name="revanced_spoof_video_streams_language_title">لغة البث الصوتي الافتراضية</string>
|
||||
<string name="revanced_spoof_video_streams_language_DEFAULT">لغة الحساب</string>
|
||||
<string name="revanced_spoof_video_streams_language_AR">العربية</string>
|
||||
<string name="revanced_spoof_video_streams_language_AZ">Azerbaijani</string>
|
||||
<string name="revanced_spoof_video_streams_language_BG">Bulgarian</string>
|
||||
<string name="revanced_spoof_video_streams_language_BN">Bengali</string>
|
||||
<string name="revanced_spoof_video_streams_language_CA">Catalan</string>
|
||||
<string name="revanced_spoof_video_streams_language_CS">Czech</string>
|
||||
<string name="revanced_spoof_video_streams_language_DA">Danish</string>
|
||||
<string name="revanced_spoof_video_streams_language_DE">German</string>
|
||||
<string name="revanced_spoof_video_streams_language_EL">Greek</string>
|
||||
<string name="revanced_spoof_video_streams_language_EN">English</string>
|
||||
<string name="revanced_spoof_video_streams_language_ES">Spanish</string>
|
||||
<string name="revanced_spoof_video_streams_language_ET">Estonian</string>
|
||||
<string name="revanced_spoof_video_streams_language_FA">فارسى</string>
|
||||
<string name="revanced_spoof_video_streams_language_FI">Finnish</string>
|
||||
<string name="revanced_spoof_video_streams_language_FR">French</string>
|
||||
<string name="revanced_spoof_video_streams_language_GU">Gujarati</string>
|
||||
<string name="revanced_spoof_video_streams_language_HI">Hindi</string>
|
||||
<string name="revanced_spoof_video_streams_language_HR">Croatian</string>
|
||||
<string name="revanced_spoof_video_streams_language_HU">Hungarian</string>
|
||||
<string name="revanced_spoof_video_streams_language_ID"> Indonesian</string>
|
||||
<string name="revanced_spoof_video_streams_language_IT">Italian</string>
|
||||
<string name="revanced_spoof_video_streams_language_JA">Japanese</string>
|
||||
<string name="revanced_spoof_video_streams_language_KK">Kazakh</string>
|
||||
<string name="revanced_spoof_video_streams_language_KO">Korean</string>
|
||||
<string name="revanced_spoof_video_streams_language_LT">Lithuanian</string>
|
||||
<string name="revanced_spoof_video_streams_language_LV">Latvian</string>
|
||||
<string name="revanced_spoof_video_streams_language_MK">Macedonian</string>
|
||||
<string name="revanced_spoof_video_streams_language_MN">Mongolian</string>
|
||||
<string name="revanced_spoof_video_streams_language_MR">Marathi</string>
|
||||
<string name="revanced_spoof_video_streams_language_MS">Malay</string>
|
||||
<string name="revanced_spoof_video_streams_language_MY">Burmese</string>
|
||||
<string name="revanced_spoof_video_streams_language_NL">Dutch</string>
|
||||
<string name="revanced_spoof_video_streams_language_OR">Odia</string>
|
||||
<string name="revanced_spoof_video_streams_language_PA">Punjabi</string>
|
||||
<string name="revanced_spoof_video_streams_language_PL">Polish</string>
|
||||
<string name="revanced_spoof_video_streams_language_RO">Romanian</string>
|
||||
<string name="revanced_spoof_video_streams_language_RU">Russian</string>
|
||||
<string name="revanced_spoof_video_streams_language_SK">Slovak</string>
|
||||
<string name="revanced_spoof_video_streams_language_SL">Slovene</string>
|
||||
<string name="revanced_spoof_video_streams_language_SR">Serbian</string>
|
||||
<string name="revanced_spoof_video_streams_language_SV">Swedish</string>
|
||||
<string name="revanced_spoof_video_streams_language_SW">Swahili</string>
|
||||
<string name="revanced_spoof_video_streams_language_TA">Tamil</string>
|
||||
<string name="revanced_spoof_video_streams_language_TE">Telugu</string>
|
||||
<string name="revanced_spoof_video_streams_language_TH">Thai</string>
|
||||
<string name="revanced_spoof_video_streams_language_TR">Turkish</string>
|
||||
<string name="revanced_spoof_video_streams_language_UK">Ukrainian</string>
|
||||
<string name="revanced_spoof_video_streams_language_UR">Urdu</string>
|
||||
<string name="revanced_spoof_video_streams_language_VI">Vietnamese</string>
|
||||
<string name="revanced_spoof_video_streams_language_ZH">Chinese</string>
|
||||
<string name="revanced_spoof_video_streams_about_no_av1">• لا يوجد ترميز الفيديو AV1</string>
|
||||
<string name="revanced_spoof_video_streams_about_kids_videos">• الفيديوات العربية لا يمكن تشغيل أو في وضع التشغيل أو في حالة الخفية</string>
|
||||
<string name="revanced_spoof_streaming_data_stats_for_nerds_title">عرض في إحصاءات تقنية</string>
|
||||
<string name="revanced_spoof_streaming_data_stats_for_nerds_summary_on">يتم عرض نوع العميل في إحصاءات تقنية</string>
|
||||
<string name="revanced_spoof_streaming_data_stats_for_nerds_summary_off">تم إخفاء نوع العميل في إحصاءات تقنية</string>
|
||||
<string name="revanced_spoof_video_streams_language_title">لغة البث الصوتي الافتراضية للواقع الافتراضي VR</string>
|
||||
</patch>
|
||||
</app>
|
||||
<app id="twitch">
|
||||
|
||||
@@ -136,6 +136,8 @@ Second \"item\" text"</string>
|
||||
</patch>
|
||||
<patch id="layout.panels.popup.playerPopupPanelsPatch">
|
||||
</patch>
|
||||
<patch id="layout.player.fullscreen.exitFullscreenPatch">
|
||||
</patch>
|
||||
<patch id="layout.player.fullscreen.openVideosFullscreen">
|
||||
</patch>
|
||||
<patch id="layout.player.overlay.customPlayerOverlayOpacityResourcePatch">
|
||||
@@ -155,6 +157,8 @@ Second \"item\" text"</string>
|
||||
<!-- Toast shown if network connection times out. Translations of this should not be longer than the original English or the text can be clipped and not entirely shown. -->
|
||||
<!-- Shown in the settings preferences, and translations can be any text length. -->
|
||||
</patch>
|
||||
<patch id="layout.formfactor.changeFormFactorPatch">
|
||||
</patch>
|
||||
<patch id="layout.spoofappversion.spoofAppVersionPatch">
|
||||
<!-- It is ideal, but not required, if the text here appears is alphabetically after the text used for 'revanced_spoof_app_version_title'.
|
||||
This is because the 'General layout' menu uses alphabetic sorting, and it functionally works better if the spoof target selector appears below the 'Spoof app version' UI switch -->
|
||||
@@ -168,8 +172,6 @@ Second \"item\" text"</string>
|
||||
</patch>
|
||||
<patch id="layout.shortsautoplay.shortsAutoplayPatch">
|
||||
</patch>
|
||||
<patch id="layout.tablet.enableTabletLayoutPatch">
|
||||
</patch>
|
||||
<patch id="layout.miniplayer.miniplayerPatch">
|
||||
</patch>
|
||||
<patch id="layout.theme.themePatch">
|
||||
@@ -215,11 +217,14 @@ Second \"item\" text"</string>
|
||||
</patch>
|
||||
<patch id="video.speed.remember.rememberPlaybackSpeedPatch">
|
||||
</patch>
|
||||
<patch id="video.hdr.disableHdrPatch">
|
||||
</patch>
|
||||
<patch id="video.videoqualitymenu.restoreOldVideoQualityMenuResourcePatch">
|
||||
</patch>
|
||||
<patch id="interaction.seekbar.enableSlideToSeekPatch">
|
||||
</patch>
|
||||
<patch id="misc.fix.playback.spoofVideoStreamsPatch">
|
||||
<!-- 'no auth' means no authentication -->
|
||||
</patch>
|
||||
</app>
|
||||
<app id="twitch">
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -22,8 +22,8 @@ Second \"item\" text"</string>
|
||||
<resources>
|
||||
<app id="shared">
|
||||
<patch id="misc.checks.checkEnvironmentPatch">
|
||||
<string name="revanced_check_environment_failed_title">\"Правядзенне праверкі асяроддзя не ўдалося\"</string>
|
||||
<string name="revanced_check_environment_dialog_open_official_source_button">\"Адкрыць афіцыйны вэб-сайт\"</string>
|
||||
<string name="revanced_check_environment_failed_title">Праверкі не пройдзены</string>
|
||||
<string name="revanced_check_environment_dialog_open_official_source_button">Адкрыць афіцыйны вэб-сайт</string>
|
||||
<string name="revanced_check_environment_dialog_ignore_button">Ігнараваць</string>
|
||||
<string name="revanced_check_environment_failed_message"><h5>Гэта дадатак відавочна не з\'яўляецца патчам.</h5><br>Гэта дадатак можа працаваць няправільна, а таксама можа быць <b>небяспечным або нават небяспечным у выкарыстанні</b>.<br><br>Гэтыя праверкі азначаюць, што гэта дадатак было загаддзя перароблена або атрымана ад кагосьці іншага:<br><br><small>%1$s</small><br>Настойліва рэкамендуецца <b>выдаліць гэты дадатак і перарабіць яго самастойна</b>, каб пераканацца, што вы выкарыстоўваеце правераны і бяспечны дадатак.<p><br>Калі ігнараваць, гэта папярэджанне будзе паказана толькі два разы.</string>
|
||||
<string name="revanced_check_environment_not_same_patching_device">Адкарэктавана на іншай прыладзе</string>
|
||||
@@ -33,7 +33,7 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_check_environment_not_near_patch_time_invalid">Дата стварэння APK пашкоджана</string>
|
||||
</patch>
|
||||
<patch id="misc.settings.settingsResourcePatch">
|
||||
<string name="revanced_settings_title">ReVanced</string>
|
||||
<string name="revanced_settings_submenu_title">Налады</string>
|
||||
<string name="revanced_settings_confirm_user_dialog_title">Вы хочаце працягнуць?</string>
|
||||
<string name="revanced_settings_reset">Скінуць</string>
|
||||
<string name="revanced_settings_restart_title">Абнавіце і перазагрузіце</string>
|
||||
@@ -43,6 +43,62 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_settings_import_reset">Налады ReVanced скінуты да стандартных</string>
|
||||
<string name="revanced_settings_import_success">Імпартавана %d налад</string>
|
||||
<string name="revanced_settings_import_failure_parse">Памылка імпарту: %s</string>
|
||||
<string name="revanced_language_title">Мова ReVanced</string>
|
||||
<string name="revanced_language_user_dialog_message">"Пераклады для некаторых моў могуць быць адсутнымі або няпоўнымі.
|
||||
|
||||
Каб дадаць новыя мовы, наведайце translate.revanced.app"</string>
|
||||
<string name="revanced_language_DEFAULT">Мова праграмы</string>
|
||||
<string name="revanced_language_AR">Арабская</string>
|
||||
<string name="revanced_language_AZ">Азербайджанскі</string>
|
||||
<string name="revanced_language_BG">Балгарская</string>
|
||||
<string name="revanced_language_BN">Бенгальская</string>
|
||||
<string name="revanced_language_CA">Каталонская</string>
|
||||
<string name="revanced_language_CS">Чэшскі</string>
|
||||
<string name="revanced_language_DA">Дацкі</string>
|
||||
<string name="revanced_language_DE">Нямецкі</string>
|
||||
<string name="revanced_language_EL">Грэцкі</string>
|
||||
<string name="revanced_language_EN">Англійская</string>
|
||||
<string name="revanced_language_ES">Іспанская</string>
|
||||
<string name="revanced_language_ET">Эстонская</string>
|
||||
<string name="revanced_language_FA">Персідская</string>
|
||||
<string name="revanced_language_FI">Фінская</string>
|
||||
<string name="revanced_language_FR">Французская</string>
|
||||
<string name="revanced_language_GU">Гуджараці</string>
|
||||
<string name="revanced_language_HI">Хіндзі</string>
|
||||
<string name="revanced_language_HR">Харвацкая</string>
|
||||
<string name="revanced_language_HU">Венгерская</string>
|
||||
<string name="revanced_language_ID">Інданезійская</string>
|
||||
<string name="revanced_language_IT">Італьянская</string>
|
||||
<string name="revanced_language_JA">Японская</string>
|
||||
<string name="revanced_language_KK">Казахская</string>
|
||||
<string name="revanced_language_KO">Карэйская</string>
|
||||
<string name="revanced_language_LT">Літоўская</string>
|
||||
<string name="revanced_language_LV">Латышская</string>
|
||||
<string name="revanced_language_MK">Македонская</string>
|
||||
<string name="revanced_language_MN">Мангольская</string>
|
||||
<string name="revanced_language_MR">Малаялам</string>
|
||||
<string name="revanced_language_MS">Малайская</string>
|
||||
<string name="revanced_language_MY">Бірманская</string>
|
||||
<string name="revanced_language_NL">Нідэрландская</string>
|
||||
<string name="revanced_language_OR">Одыя</string>
|
||||
<string name="revanced_language_PA">Пенджабі</string>
|
||||
<string name="revanced_language_PL">Польская</string>
|
||||
<string name="revanced_language_PT">Партугальская</string>
|
||||
<string name="revanced_language_RO">Румынская</string>
|
||||
<string name="revanced_language_RU">Руская</string>
|
||||
<string name="revanced_language_SK">Славацкая</string>
|
||||
<string name="revanced_language_SL">Славенская</string>
|
||||
<string name="revanced_language_SR">Сербская</string>
|
||||
<string name="revanced_language_SV">Шведская</string>
|
||||
<string name="revanced_language_SW">Суахілі</string>
|
||||
<string name="revanced_language_TA">Тамільская</string>
|
||||
<string name="revanced_language_TE">Тэлугу</string>
|
||||
<string name="revanced_language_TH">Тайская</string>
|
||||
<string name="revanced_language_TR">Турецкая</string>
|
||||
<string name="revanced_language_UK">Украінская</string>
|
||||
<string name="revanced_language_UR">Урду</string>
|
||||
<string name="revanced_language_VI">В\'етнамская</string>
|
||||
<string name="revanced_language_ZH">Кітайская</string>
|
||||
<string name="revanced_pref_import_export_title">Імпарт / Экспарт</string>
|
||||
<string name="revanced_pref_import_export_summary">Імпарт / Экспарт налад ReVanced</string>
|
||||
<!-- Settings about dialog. -->
|
||||
@@ -77,13 +133,15 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_settings_screen_01_ads_title">Аб\"явы</string>
|
||||
<string name="revanced_settings_screen_02_alt_thumbnails_title">Альтэрнатыўныя мініяцюры</string>
|
||||
<string name="revanced_settings_screen_03_feed_title">Карміць</string>
|
||||
<string name="revanced_settings_screen_04_player_title">Гулец</string>
|
||||
<string name="revanced_settings_screen_05_general_title">Генеральная планіроўка</string>
|
||||
<string name="revanced_settings_screen_06_shorts_title">Shorts</string>
|
||||
<string name="revanced_settings_screen_04_general_title">Агульнае</string>
|
||||
<string name="revanced_settings_screen_05_player_title">Плэер</string>
|
||||
<string name="revanced_settings_screen_07_seekbar_title">Панэль пошуку</string>
|
||||
<string name="revanced_settings_screen_08_swipe_controls_title">Элементы кіравання пальцам</string>
|
||||
<string name="revanced_settings_screen_11_misc_title">Рознае</string>
|
||||
<string name="revanced_settings_screen_12_video_title">Відэа</string>
|
||||
<string name="revanced_restore_old_settings_menus_title">Аднавіць старое меню налад</string>
|
||||
<string name="revanced_restore_old_settings_menus_summary_on">Старыя меню налад паказваюцца</string>
|
||||
<string name="revanced_restore_old_settings_menus_summary_off">Старыя меню налад не паказваюцца</string>
|
||||
</patch>
|
||||
<patch id="misc.backgroundplayback.backgroundPlaybackPatch">
|
||||
<string name="revanced_shorts_disable_background_playback_title">Адключыць прайграванне Shorts у фонавым</string>
|
||||
@@ -110,9 +168,9 @@ Second \"item\" text"</string>
|
||||
Вы не будзеце атрымліваць апавяшчэнні пра нечаканыя падзеі."</string>
|
||||
</patch>
|
||||
<patch id="layout.hide.general.hideLayoutComponentsPatch">
|
||||
<string name="revanced_disable_like_subscribe_glow_title">Адключыць свячэнне кнопкі \"Падабаецца\" / \"Падпісацца\"</string>
|
||||
<string name="revanced_disable_like_subscribe_glow_summary_on">Кнопка \"Падабаецца\" і \"Падпісацца\" не будуць свяціцца пры згадванні</string>
|
||||
<string name="revanced_disable_like_subscribe_glow_summary_off">Кнопка \"Падабаецца\" і \"Падпісацца\" будуць свяціцца пры згадванні</string>
|
||||
<string name="revanced_disable_like_subscribe_glow_title">Адключыць свецянне кнопак «Мне падабаецца» і «Падпісацца»</string>
|
||||
<string name="revanced_disable_like_subscribe_glow_summary_on">Кнопкі «Падабаецца» і «Падпісацца» не будуць мігцець пры згадванні</string>
|
||||
<string name="revanced_disable_like_subscribe_glow_summary_off">Кнопкі «Падабаецца» і «Падпісацца» будуць мігцець пры згадванні</string>
|
||||
<string name="revanced_hide_album_cards_title">Схаваць карты альбома</string>
|
||||
<string name="revanced_hide_album_cards_summary_on">Карткі альбомаў схаваныя</string>
|
||||
<string name="revanced_hide_album_cards_summary_off">Паказваюцца альбомныя карткі</string>
|
||||
@@ -165,9 +223,9 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_hide_chips_shelf_title">Схавайце паліцу для чыпсаў</string>
|
||||
<string name="revanced_hide_chips_shelf_summary_on">Паліца для чыпсаў схаваная</string>
|
||||
<string name="revanced_hide_chips_shelf_summary_off">Паказана паліца для чыпсаў</string>
|
||||
<string name="revanced_hide_expandable_chip_title">Схаваць пашыраемы чып пад відэа</string>
|
||||
<string name="revanced_hide_expandable_chip_summary_on">Чыпы, якія пашыраюцца, схаваныя</string>
|
||||
<string name="revanced_hide_expandable_chip_summary_off">Паказаны чыпы, якія пашыраюцца</string>
|
||||
<string name="revanced_hide_expandable_chip_title">Схаваць пашыраную картку пад відэа</string>
|
||||
<string name="revanced_hide_expandable_chip_summary_on">Пашыраныя карткі схаваныя</string>
|
||||
<string name="revanced_hide_expandable_chip_summary_off">Пашыраныя карткі паказаныя</string>
|
||||
<string name="revanced_hide_community_posts_title">Схаваць паведамленні ў супольнасці</string>
|
||||
<string name="revanced_hide_community_posts_summary_on">Паведамленні ў супольнасці схаваны</string>
|
||||
<string name="revanced_hide_community_posts_summary_off">Паказваюцца паведамленні ў супольнасці</string>
|
||||
@@ -228,6 +286,9 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_hide_chapters_section_title">Схаваць раздзел \"Раздзелы\"</string>
|
||||
<string name="revanced_hide_chapters_section_summary_on">Раздзел раздзелаў схаваны</string>
|
||||
<string name="revanced_hide_chapters_section_summary_off">Паказваецца раздзел раздзелаў</string>
|
||||
<string name="revanced_hide_how_this_was_made_section_title">Схаваць раздзел «Як быў зроблены гэты кантэнт»</string>
|
||||
<string name="revanced_hide_how_this_was_made_section_summary_on">Раздзел «Як быў зроблены гэты кантэнт» схаваны</string>
|
||||
<string name="revanced_hide_how_this_was_made_section_summary_off">Раздзел «Як быў зроблены гэты кантэнт» паказаны</string>
|
||||
<string name="revanced_hide_podcast_section_title">Схаваць раздзел \"Даследаваць падкаст\"</string>
|
||||
<string name="revanced_hide_podcast_section_summary_on">Раздзел \"Агляд падкаста\" схаваны</string>
|
||||
<string name="revanced_hide_podcast_section_summary_off">Паказаны раздзел \"Агляд падкаста\"</string>
|
||||
@@ -270,7 +331,7 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_hide_comments_preview_comment_title">Схаваць каментарый для папярэдняга прагляду</string>
|
||||
<string name="revanced_hide_comments_preview_comment_summary_on">Каментарый перад праглядам схаваны</string>
|
||||
<string name="revanced_hide_comments_preview_comment_summary_off">Паказваецца папярэдні прагляд каментарыя</string>
|
||||
<string name="revanced_hide_comments_thanks_button_title">Схаваць кнопку падзякі</string>
|
||||
<string name="revanced_hide_comments_thanks_button_title">Схаваць кнопку \"Дзякуй\"\"</string>
|
||||
<string name="revanced_hide_comments_thanks_button_summary_on">Кнопка падзякі схавана</string>
|
||||
<string name="revanced_hide_comments_thanks_button_summary_off">Паказана кнопка падзякі</string>
|
||||
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_title">Схаваць метку часу і кнопкі эмодзі</string>
|
||||
@@ -297,12 +358,12 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_hide_keyword_content_home_title">Схаваць хатняе відэа па ключавых словах</string>
|
||||
<string name="revanced_hide_keyword_content_home_summary_on">Відэа на ўкладцы \"Галоўная\" фільтруюцца па ключавых словах</string>
|
||||
<string name="revanced_hide_keyword_content_home_summary_off">Відэа на ўкладцы \"Галоўная\" не фільтруюцца па ключавых словах</string>
|
||||
<string name="revanced_hide_keyword_content_subscriptions_title">Схаваць відэа з падпіскі па ключавых словах</string>
|
||||
<string name="revanced_hide_keyword_content_subscriptions_summary_on">Відэа ва ўкладцы «Падпіскі» фільтруюцца па ключавых словах</string>
|
||||
<string name="revanced_hide_keyword_content_subscriptions_summary_off">Відэа ва ўкладцы \"Падпіскі\" не фільтруюцца па ключавых словах</string>
|
||||
<string name="revanced_hide_keyword_content_search_title">Схаваць вынікі пошуку па ключавых словах</string>
|
||||
<string name="revanced_hide_keyword_content_search_summary_on">Вынікі пошуку фільтруюцца па ключавых словах</string>
|
||||
<string name="revanced_hide_keyword_content_search_summary_off">Вынікі пошуку не фільтруюцца па ключавых словах</string>
|
||||
<string name="revanced_hide_keyword_content_subscriptions_title">Схаваць відэа з падпіскі па ключавых словах</string>
|
||||
<string name="revanced_hide_keyword_content_subscriptions_summary_on">Відэа ва ўкладцы «Падпіскі» фільтруюцца па ключавых словах</string>
|
||||
<string name="revanced_hide_keyword_content_subscriptions_summary_off">Відэа ва ўкладцы \"Падпіскі\" не фільтруюцца па ключавых словах</string>
|
||||
<string name="revanced_hide_keyword_content_phrases_title">Ключавыя словы, якія трэба схаваць</string>
|
||||
<!-- For localization it is preferred, but not required, if 'LeBlanc' is replaced with a localized name or a familiar word that has upper case letters in the middle of the word.
|
||||
This is because keywords can be in any language, and showing an example in the localized script helps convey this. -->
|
||||
@@ -349,6 +410,9 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_hide_products_banner_title">Схаваць банер для прагляду прадуктаў</string>
|
||||
<string name="revanced_hide_products_banner_summary_on">Банэр схаваны</string>
|
||||
<string name="revanced_hide_products_banner_summary_off">Паказваецца банэр</string>
|
||||
<string name="revanced_hide_end_screen_store_banner_title">Схаваць банер крамы на канчатковым экране</string>
|
||||
<string name="revanced_hide_end_screen_store_banner_summary_on">Банэр крамы схаваны</string>
|
||||
<string name="revanced_hide_end_screen_store_banner_summary_off">Банэр крамы паказаны</string>
|
||||
<string name="revanced_hide_player_store_shelf_title">Схаваць полку крамы прайгравальніка</string>
|
||||
<string name="revanced_hide_player_store_shelf_summary_on">Паліца крамы схавана</string>
|
||||
<string name="revanced_hide_player_store_shelf_summary_off">Паліца крамы паказана</string>
|
||||
@@ -401,7 +465,7 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_external_downloader_summary_on">Кнопка загрузкі паказваецца ў плэеры</string>
|
||||
<string name="revanced_external_downloader_summary_off">Кнопка загрузкі не адлюстроўваецца ў плэеры</string>
|
||||
<!-- 'download action button' should be translated using the same wording as the translation of 'revanced_hide_download_button_title' -->
|
||||
<string name="revanced_external_downloader_action_button_title">Перавызначыць кнопку дзеяння спампоўкі</string>
|
||||
<string name="revanced_external_downloader_action_button_title">Перавызначыць кнопку дзеянні спампоўкі</string>
|
||||
<string name="revanced_external_downloader_action_button_summary_on">Кнопка \"Спампаваць\" адкрывае ваш знешні загрузнік</string>
|
||||
<string name="revanced_external_downloader_action_button_summary_off">Кнопка \"Спампаваць\" адкрывае ўласную праграму загрузкі ў праграме</string>
|
||||
<string name="revanced_external_downloader_name_title">Назва пакета загрузніка</string>
|
||||
@@ -446,6 +510,9 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_swipe_overlay_background_alpha_summary">Бачнасць фону накладання пальцам</string>
|
||||
<string name="revanced_swipe_threshold_title">Парог велічыні пальцам</string>
|
||||
<string name="revanced_swipe_threshold_summary">Велічыня парогавага значэння для правядзення пальцам</string>
|
||||
<string name="revanced_swipe_change_video_title">Уключыць зьмену відэа праз правядзенне пальцам</string>
|
||||
<string name="revanced_swipe_change_video_summary_on">Правядзенне пальцам у рэжыме поўнага экрана зьменіць відэа на наступнае/папярэдняе</string>
|
||||
<string name="revanced_swipe_change_video_summary_off">Правядзенне пальцам у рэжыме поўнага экрана не зьменіць відэа на наступнае/папярэдняе</string>
|
||||
</patch>
|
||||
<patch id="layout.autocaptions.autoCaptionsPatch">
|
||||
<string name="revanced_auto_captions_title">Адключыць аўтаматычныя цітры</string>
|
||||
@@ -585,14 +652,14 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_hide_player_previous_next_buttons_title">Схаваць папярэдні & кнопкі наступнага відэа</string>
|
||||
<string name="revanced_hide_player_previous_next_buttons_summary_on">Кнопкі схаваныя</string>
|
||||
<string name="revanced_hide_player_previous_next_buttons_summary_off">Паказваюцца кнопкі</string>
|
||||
<string name="revanced_hide_cast_button_title">Схаваць кнопку трансляцыі</string>
|
||||
<string name="revanced_hide_cast_button_title">Схаваць кнопку «Трансляцыя»</string>
|
||||
<string name="revanced_hide_cast_button_summary_on">Кнопка Cast схавана</string>
|
||||
<string name="revanced_hide_cast_button_summary_off">Паказана кнопка Cast</string>
|
||||
<!-- This button does not display any text, but 'captions' should be translated using the same wording used as the translation of 'revanced_hide_player_flyout_captions_title' -->
|
||||
<string name="revanced_hide_captions_button_title">Кнопка «Схаваць цітры»</string>
|
||||
<string name="revanced_hide_captions_button_title">Схаваць кнопку «Субцітры»</string>
|
||||
<string name="revanced_hide_captions_button_summary_on">Кнопка субцітраў схавана</string>
|
||||
<string name="revanced_hide_captions_button_summary_off">Паказана кнопка субцітраў</string>
|
||||
<string name="revanced_hide_autoplay_button_title">Схаваць кнопку аўтазапуску</string>
|
||||
<string name="revanced_hide_autoplay_button_title">Схаваць кнопку «Аўтапрайграванне»</string>
|
||||
<string name="revanced_hide_autoplay_button_summary_on">Кнопка аўтазапуску схавана</string>
|
||||
<string name="revanced_hide_autoplay_button_summary_off">Паказана кнопка аўтазапуску</string>
|
||||
</patch>
|
||||
@@ -602,7 +669,7 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_hide_endscreen_cards_summary_off">Паказваюцца карткі канцавога экрана</string>
|
||||
</patch>
|
||||
<patch id="layout.hide.fullscreenambientmode.disableFullscreenAmbientModePatch">
|
||||
<string name="revanced_disable_fullscreen_ambient_mode_title">Адключыць актыўны рэжым у поўнаэкранным рэжыме</string>
|
||||
<string name="revanced_disable_fullscreen_ambient_mode_title">Адключыць рэжым навакольнага асяроддзя ў поўнаэкранным рэжыме</string>
|
||||
<string name="revanced_disable_fullscreen_ambient_mode_summary_on">Навакольны рэжым адключаны</string>
|
||||
<string name="revanced_disable_fullscreen_ambient_mode_summary_off">Неактыўны рэжым уключаны</string>
|
||||
</patch>
|
||||
@@ -629,48 +696,51 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_shorts_player_screen_summary">Схаваць або паказаць кампаненты ў прайгравальніку Shorts</string>
|
||||
<!-- 'home' should be translated using the same localized wording YouTube displays for the home tab. -->
|
||||
<string name="revanced_hide_shorts_home_title">Схаваць шорты ў хатняй стужцы</string>
|
||||
<string name="revanced_hide_shorts_home_summary_on">Shorts у стужцы хатняй старонкі схаваны</string>
|
||||
<string name="revanced_hide_shorts_home_summary_off">Shorts у стужцы хатняй старонкі паказаны</string>
|
||||
<string name="revanced_hide_shorts_home_summary_on">Схаваны ў стужцы і звязаных відэа</string>
|
||||
<string name="revanced_hide_shorts_home_summary_off">Паказаны ў стужцы і звязаных відэа</string>
|
||||
<!-- 'subscription' should be translated using the same localized wording YouTube displays for the subscription tab. -->
|
||||
<string name="revanced_hide_shorts_subscriptions_title">Схаваць Shorts у стужцы падпіскі</string>
|
||||
<string name="revanced_hide_shorts_subscriptions_summary_on">Shorts у стужцы падпіскі схаваны</string>
|
||||
<string name="revanced_hide_shorts_subscriptions_summary_off">Shorts у стужцы падпіскі паказаны</string>
|
||||
<string name="revanced_hide_shorts_subscriptions_summary_on">Схавана ў стужцы падпісак</string>
|
||||
<string name="revanced_hide_shorts_subscriptions_summary_off">Паказана ў стужцы падпісак</string>
|
||||
<string name="revanced_hide_shorts_search_title">Схаваць Shorts у выніках пошуку</string>
|
||||
<string name="revanced_hide_shorts_search_summary_on">Shorts у выніках пошуку схаваны</string>
|
||||
<string name="revanced_hide_shorts_search_summary_off">Shorts у выніках пошуку паказаны</string>
|
||||
<string name="revanced_hide_shorts_search_summary_on">Схаваны ў выніках пошуку</string>
|
||||
<string name="revanced_hide_shorts_search_summary_off">Паказана ў выніках пошуку</string>
|
||||
<string name="revanced_hide_shorts_history_title">Схаваць Shorts з гісторыі праглядаў</string>
|
||||
<string name="revanced_hide_shorts_history_summary_on">Схавана ў гісторыі праглядаў</string>
|
||||
<string name="revanced_hide_shorts_history_summary_off">Паказаны ў гісторыі праглядаў</string>
|
||||
<!-- 'join' should be translated using the same localized wording YouTube displays for the button. -->
|
||||
<string name="revanced_hide_shorts_join_button_title">Схаваць кнопку далучыцца</string>
|
||||
<string name="revanced_hide_shorts_join_button_title">Схаваць кнопку «Далучыцца»</string>
|
||||
<string name="revanced_hide_shorts_join_button_summary_on">Кнопка «Далучыцца» схавана</string>
|
||||
<string name="revanced_hide_shorts_join_button_summary_off">Паказана кнопка «Далучыцца»</string>
|
||||
<!-- 'subscribe' should be translated using the same localized wording YouTube displays for the button. -->
|
||||
<string name="revanced_hide_shorts_subscribe_button_title">Схаваць кнопку падпісацца</string>
|
||||
<string name="revanced_hide_shorts_subscribe_button_title">Схаваць кнопку «Падпісацца»</string>
|
||||
<string name="revanced_hide_shorts_subscribe_button_summary_on">Кнопка \"Падпісацца\" схавана</string>
|
||||
<string name="revanced_hide_shorts_subscribe_button_summary_off">Паказана кнопка «Падпісацца»</string>
|
||||
<string name="revanced_hide_shorts_paused_overlay_buttons_title">Схаваць прыпыненыя кнопкі накладання</string>
|
||||
<string name="revanced_hide_shorts_paused_overlay_buttons_summary_on">Прыпыненыя кнопкі накладання схаваны</string>
|
||||
<string name="revanced_hide_shorts_paused_overlay_buttons_summary_off">Паказваюцца прыпыненыя кнопкі накладання</string>
|
||||
<string name="revanced_hide_shorts_shop_button_title">Схаваць кнопку крамы</string>
|
||||
<string name="revanced_hide_shorts_shop_button_title">Схаваць кнопку «Крама»</string>
|
||||
<string name="revanced_hide_shorts_shop_button_summary_on">Кнопка крамы схавана</string>
|
||||
<string name="revanced_hide_shorts_shop_button_summary_off">Паказваецца кнопка крамы</string>
|
||||
<string name="revanced_hide_shorts_super_thanks_button_title">Схаваць кнопку супердзякуй</string>
|
||||
<string name="revanced_hide_shorts_super_thanks_button_summary_on">Кнопка супердзякуй схавана</string>
|
||||
<string name="revanced_hide_shorts_super_thanks_button_summary_off">Паказана кнопка \"Супер дзякуй\"</string>
|
||||
<string name="revanced_hide_shorts_super_thanks_button_title">Схаваць кнопку «Купіць Super Thanks»</string>
|
||||
<string name="revanced_hide_shorts_super_thanks_button_summary_on">Кнопка Super Thanks схавана</string>
|
||||
<string name="revanced_hide_shorts_super_thanks_button_summary_off">Кнопка Super Thanks паказана</string>
|
||||
<string name="revanced_hide_shorts_tagged_products_title">Схаваць пазначаныя прадукты</string>
|
||||
<string name="revanced_hide_shorts_tagged_products_summary_on">Пазначаныя прадукты схаваны</string>
|
||||
<string name="revanced_hide_shorts_tagged_products_summary_off">Прадукты з тэгамі паказаны</string>
|
||||
<string name="revanced_hide_shorts_location_label_title">Схаваць метку месцазнаходжання</string>
|
||||
<string name="revanced_hide_shorts_location_label_summary_on">Метка месцазнаходжання схавана</string>
|
||||
<string name="revanced_hide_shorts_location_label_summary_off">Паказана метка месцазнаходжання</string>
|
||||
<string name="revanced_hide_shorts_save_sound_button_title">Схаваць кнопку захавання музыкі</string>
|
||||
<string name="revanced_hide_shorts_save_sound_button_title">Схаваць кнопку «Захаваць музыку»</string>
|
||||
<string name="revanced_hide_shorts_save_sound_button_summary_on">Кнопка захавання музыкі схавана</string>
|
||||
<string name="revanced_hide_shorts_save_sound_button_summary_off">Кнопка захавання музыкі паказана</string>
|
||||
<string name="revanced_hide_shorts_use_template_button_title">Схаваць кнопку выкарыстання шаблону</string>
|
||||
<string name="revanced_hide_shorts_use_template_button_title">Схаваць кнопку «Выкарыстаць шаблон»</string>
|
||||
<string name="revanced_hide_shorts_use_template_button_summary_on">Кнопка выкарыстання шаблону схавана</string>
|
||||
<string name="revanced_hide_shorts_use_template_button_summary_off">Кнопка выкарыстання шаблону паказана</string>
|
||||
<string name="revanced_hide_shorts_upcoming_button_title">Схаваць кнопку будучых</string>
|
||||
<string name="revanced_hide_shorts_upcoming_button_title">Схаваць кнопку «Наступныя»</string>
|
||||
<string name="revanced_hide_shorts_upcoming_button_summary_on">Кнопка Будущие ролики скрыта</string>
|
||||
<string name="revanced_hide_shorts_upcoming_button_summary_off">Кнопка Будущие ролики отображается</string>
|
||||
<string name="revanced_hide_shorts_green_screen_button_title">Скрыть кнопку с зелёным экраном Shorts</string>
|
||||
<string name="revanced_hide_shorts_green_screen_button_title">Схаваць кнопку «Зялёны экран»</string>
|
||||
<string name="revanced_hide_shorts_green_screen_button_summary_on">Кнопка с зелёным экраном Shorts скрыта</string>
|
||||
<string name="revanced_hide_shorts_green_screen_button_summary_off">Кнопка с зелёным экраном Shorts отображается</string>
|
||||
<string name="revanced_hide_shorts_hashtag_button_title">Скрыть хештег-кнопку Shorts</string>
|
||||
@@ -682,24 +752,24 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_hide_shorts_stickers_title">Скрыть стикеры</string>
|
||||
<string name="revanced_hide_shorts_stickers_summary_on">Стикеры Shorts скрыты</string>
|
||||
<string name="revanced_hide_shorts_stickers_summary_off">Стикеры Shorts отображаются</string>
|
||||
<string name="revanced_hide_shorts_like_fountain_title">Скрыть всплывающее окно с лайками Shorts</string>
|
||||
<string name="revanced_hide_shorts_like_fountain_title">Схаваць анімацыю кнопкі «Падабаецца»</string>
|
||||
<string name="revanced_hide_shorts_like_fountain_summary_on">Анимация всплывающего окна с лайками Shorts скрыта</string>
|
||||
<string name="revanced_hide_shorts_like_fountain_summary_off">Анимация всплывающего окна с лайками Shorts отображается</string>
|
||||
<string name="revanced_hide_shorts_like_button_title">Схаваць кнопку \"Падабаецца\"</string>
|
||||
<string name="revanced_hide_shorts_like_button_title">Схаваць кнопку «Падабаецца»</string>
|
||||
<string name="revanced_hide_shorts_like_button_summary_on">Кнопка \"Падабаецца\" схавана</string>
|
||||
<string name="revanced_hide_shorts_like_button_summary_off">Паказана кнопка \"Падабаецца\"</string>
|
||||
<string name="revanced_hide_shorts_dislike_button_title">Схаваць кнопку \"не падабаецца\"</string>
|
||||
<string name="revanced_hide_shorts_dislike_button_title">Схаваць кнопку «Не падабаецца»</string>
|
||||
<string name="revanced_hide_shorts_dislike_button_summary_on">Кнопка \"Не падабаецца\" схавана</string>
|
||||
<string name="revanced_hide_shorts_dislike_button_summary_off">Паказана кнопка \"Не падабаецца\"</string>
|
||||
<string name="revanced_hide_shorts_comments_button_title">Кнопка \"Схаваць каментарыі\"</string>
|
||||
<string name="revanced_hide_shorts_comments_button_title">Схаваць кнопку «Каментарыі»</string>
|
||||
<string name="revanced_hide_shorts_comments_button_summary_on">Кнопка каментарыяў схавана</string>
|
||||
<string name="revanced_hide_shorts_comments_button_summary_off">Паказана кнопка каментарыяў</string>
|
||||
<!-- 'remix' should be translated using the same localized wording YouTube displays for the button. -->
|
||||
<string name="revanced_hide_shorts_remix_button_title">Схаваць кнопку рэмікса</string>
|
||||
<string name="revanced_hide_shorts_remix_button_title">Схаваць кнопку «Рэмікс»</string>
|
||||
<string name="revanced_hide_shorts_remix_button_summary_on">Кнопка \"Рэмікс\" схавана</string>
|
||||
<string name="revanced_hide_shorts_remix_button_summary_off">Паказана кнопка \"Рэмікс\"</string>
|
||||
<!-- 'share' should be translated using the same localized wording YouTube displays for the button. -->
|
||||
<string name="revanced_hide_shorts_share_button_title">Схаваць кнопку абагульвання</string>
|
||||
<string name="revanced_hide_shorts_share_button_title">Схаваць кнопку «Падзяліцца»</string>
|
||||
<string name="revanced_hide_shorts_share_button_summary_on">Кнопка \"Падзяліцца\" схавана</string>
|
||||
<string name="revanced_hide_shorts_share_button_summary_off">Паказана кнопка \"Падзяліцца\"</string>
|
||||
<string name="revanced_hide_shorts_info_panel_title">Схаваць інфармацыйную панэль</string>
|
||||
@@ -739,6 +809,13 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_hide_player_popup_panels_summary_on">Усплывальныя панэлі прайгравальніка схаваныя</string>
|
||||
<string name="revanced_hide_player_popup_panels_summary_off">Паказваюцца ўсплывальныя панэлі прайгравальніка</string>
|
||||
</patch>
|
||||
<patch id="layout.player.fullscreen.exitFullscreenPatch">
|
||||
<string name="revanced_exit_fullscreen_title">Выйсці з поўнаэкраннага рэжыму ў канцы відэа</string>
|
||||
<string name="revanced_exit_fullscreen_entry_1">Адключана</string>
|
||||
<string name="revanced_exit_fullscreen_entry_2">Партрэт</string>
|
||||
<string name="revanced_exit_fullscreen_entry_3">Ландшафт</string>
|
||||
<string name="revanced_exit_fullscreen_entry_4">Партрэт і ландшафт</string>
|
||||
</patch>
|
||||
<patch id="layout.player.fullscreen.openVideosFullscreen">
|
||||
<string name="revanced_open_videos_fullscreen_portrait_title">Открывать видео на весь экран в портретном режиме</string>
|
||||
<string name="revanced_open_videos_fullscreen_portrait_summary_on">Видео открываются на весь экран</string>
|
||||
@@ -769,7 +846,7 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_ryd_dislike_percentage_summary_on">Неўпадабанні паказаны ў працэнтах</string>
|
||||
<string name="revanced_ryd_dislike_percentage_summary_off">Неўпадабанні паказаны ў выглядзе колькасці</string>
|
||||
<!-- Translations should use language similar to 'revanced_sb_enable_compact_skip_button' -->
|
||||
<string name="revanced_ryd_compact_layout_title">Кампактная кнопка</string>
|
||||
<string name="revanced_ryd_compact_layout_title">Кампактны дызайн кнопак «Падабаецца» і «Не падабаецца»</string>
|
||||
<string name="revanced_ryd_compact_layout_summary_on">Кнопка \"Падабаецца\" ў стылі мінімальнай шырыні</string>
|
||||
<string name="revanced_ryd_compact_layout_summary_off">Кнопка \"Падабаецца\", аформленая для лепшага выгляду</string>
|
||||
<string name="revanced_ryd_toast_on_connection_error_title">Паказаць тост, калі API недаступны</string>
|
||||
@@ -817,7 +894,7 @@ Second \"item\" text"</string>
|
||||
</patch>
|
||||
<patch id="layout.sponsorblock.sponsorBlockResourcePatch">
|
||||
<string name="revanced_sb_enable_sb">Уключыць SponsorBlock</string>
|
||||
<string name="revanced_sb_enable_sb_sum">SponsorBlock - гэта краўдсорсінгавая сістэма для пропуску раздражняльных частак відэа YouTube</string>
|
||||
<string name="revanced_sb_enable_sb_sum">SponsorBlock — гэта краўдсорсінгавая сістэма, якая дазваляе прапускаць раздражняльныя фрагменты відэа на YouTube</string>
|
||||
<string name="revanced_sb_appearance_category">Паглядзіце</string>
|
||||
<string name="revanced_sb_enable_voting">Паказаць кнопку галасавання</string>
|
||||
<string name="revanced_sb_enable_voting_sum_on">Паказана кнопка сегментнага галасавання</string>
|
||||
@@ -883,7 +960,7 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_sb_segments_sponsor">Спонсар</string>
|
||||
<string name="revanced_sb_segments_sponsor_sum">Платнае прасоўванне, платныя рэфералы і прамая рэклама. Не для самарэкламы або бясплатных выкрыкаў справам/стваральнікам/вэб-сайтам/прадуктам, якія ім падабаюцца</string>
|
||||
<string name="revanced_sb_segments_selfpromo">Неаплатнае/самарэклама</string>
|
||||
<string name="revanced_sb_segments_selfpromo_sum">Падобна \"Спонсару\", за выключэннем неаплатнага або самарэкламы. Уключае раздзелы пра тавары, ахвяраванні або інфармацыю аб тым, з кім яны супрацоўнічалі</string>
|
||||
<string name="revanced_sb_segments_selfpromo_sum">Аналогічна спонсарству, але для неаплачваемай або ўласнай рэкламы. Уключае раздзелы аб таварах, ахвяраваннях або інфармацыі аб тым, з кім яны супрацоўнічалі</string>
|
||||
<string name="revanced_sb_segments_interaction">Напамін аб узаемадзеянні (падпісацца)</string>
|
||||
<string name="revanced_sb_segments_interaction_sum">Кароткі напамін паставіць лайкі, падпісацца або падпісацца на іх у сярэдзіне кантэнту. Калі ён доўгі або прысвечаны нечаму канкрэтнаму, ён павінен адпавядаць самарэкламе</string>
|
||||
<string name="revanced_sb_segments_highlight">Вылучыць</string>
|
||||
@@ -1008,6 +1085,23 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_sb_reset">Скінуць</string>
|
||||
<string name="revanced_sb_about">Пра праграму</string>
|
||||
<string name="revanced_sb_about_api_sum">Дадзеныя прадастаўляюцца API SponsorBlock. Націсніце тут, каб даведацца больш і паглядзець спампоўкі для іншых платформаў</string>
|
||||
</patch>
|
||||
<patch id="layout.formfactor.changeFormFactorPatch">
|
||||
<string name="revanced_change_form_factor_title">Фармат экрана</string>
|
||||
<string name="revanced_change_form_factor_entry_1">Па змаўчанню</string>
|
||||
<string name="revanced_change_form_factor_entry_2">Тэлефон</string>
|
||||
<string name="revanced_change_form_factor_entry_3">Планшэт</string>
|
||||
<string name="revanced_change_form_factor_entry_4">Аўтамабільны</string>
|
||||
<string name="revanced_change_form_factor_user_dialog_message">"Змены ўключаюць:
|
||||
|
||||
Раскладка планшэта
|
||||
• Паведамленні супольнасці схаваны
|
||||
|
||||
Раскладка аўтамабіля
|
||||
• Меню гісторыі праглядаў схавана
|
||||
• Адноўлена ўкладка «Даследаваць»
|
||||
• Ролікі Shorts адкрываюцца ў звычайным прайгравальніку
|
||||
• Стужка арганізавана па тэмах і каналах"</string>
|
||||
</patch>
|
||||
<patch id="layout.spoofappversion.spoofAppVersionPatch">
|
||||
<string name="revanced_spoof_app_version_title">Версія праграмы Spoof</string>
|
||||
@@ -1022,6 +1116,7 @@ Second \"item\" text"</string>
|
||||
This is because the 'General layout' menu uses alphabetic sorting, and it functionally works better if the spoof target selector appears below the 'Spoof app version' UI switch -->
|
||||
<string name="revanced_spoof_app_version_target_title">Падробка мэтавай версіі праграмы</string>
|
||||
<string name="revanced_spoof_app_version_target_entry_1">19.35.36 — Восстановить старые значки плеера Shorts</string>
|
||||
<string name="revanced_spoof_app_version_target_entry_2">19.26.42 - Аднаўленне старых значкоў навігацыі</string>
|
||||
<!-- 'RYD' is 'Return YouTube Dislike' -->
|
||||
<string name="revanced_spoof_app_version_target_legacy_entry_1">18.33.40 - Аднаўленне RYD на Shorts у рэжыме інкогніта</string>
|
||||
<string name="revanced_spoof_app_version_target_legacy_entry_2">18.20.39 - Аднавіць хуткасць шырокага відэа & якаснае меню</string>
|
||||
@@ -1065,12 +1160,6 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_shorts_autoplay_background_summary_on">Shorts в фоновом режиме будут воспроизводиться автоматически</string>
|
||||
<string name="revanced_shorts_autoplay_background_summary_off">Shorts в фоновом режиме будут повторяться</string>
|
||||
</patch>
|
||||
<patch id="layout.tablet.enableTabletLayoutPatch">
|
||||
<string name="revanced_tablet_layout_title">Уключыць макет планшэта</string>
|
||||
<string name="revanced_tablet_layout_summary_on">Макет планшэта ўключаны</string>
|
||||
<string name="revanced_tablet_layout_summary_off">Макет планшэта адключаны</string>
|
||||
<string name="revanced_tablet_layout_user_dialog_message">Паведамленні ў супольнасці не адлюстроўваюцца на планшэце</string>
|
||||
</patch>
|
||||
<patch id="layout.miniplayer.miniplayerPatch">
|
||||
<string name="revanced_miniplayer_screen_title">Міні-плэер</string>
|
||||
<string name="revanced_miniplayer_screen_summary">Змяніце стыль мінімізаванага плэера ў праграме</string>
|
||||
@@ -1131,8 +1220,10 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_seekbar_custom_color_title">Уключыць уласны колер панэлі пошуку</string>
|
||||
<string name="revanced_seekbar_custom_color_summary_on">Паказваецца карыстальніцкі колер панэлі пошуку</string>
|
||||
<string name="revanced_seekbar_custom_color_summary_off">Паказаны зыходны колер панэлі пошуку</string>
|
||||
<string name="revanced_seekbar_custom_color_value_title">Карыстальніцкі колер панэлі пошуку</string>
|
||||
<string name="revanced_seekbar_custom_color_value_summary">Колер панэлі пошуку</string>
|
||||
<string name="revanced_seekbar_custom_color_primary_title">Спецыяльны колер пошуку</string>
|
||||
<string name="revanced_seekbar_custom_color_primary_summary">Колер пошуку</string>
|
||||
<string name="revanced_seekbar_custom_color_accent_title">Спецыяльны акцэнтны колер пошуку</string>
|
||||
<string name="revanced_seekbar_custom_color_accent_summary">Акцэнтны колер пошуку</string>
|
||||
<string name="revanced_seekbar_custom_color_invalid">Неверное значение цвета ползунка прогресса</string>
|
||||
</patch>
|
||||
<patch id="layout.thumbnails.bypassImageRegionRestrictionsPatch">
|
||||
@@ -1234,6 +1325,7 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_force_original_audio_title">Вымушанае арыгінальнае аўдыё</string>
|
||||
<string name="revanced_force_original_audio_summary_on">Выкарыстанне арыгінальнага аўдыё</string>
|
||||
<string name="revanced_force_original_audio_summary_off">Выкарыстанне аўдыё па змаўчанні</string>
|
||||
<string name="revanced_force_original_audio_not_available">Каб выкарыстоўваць гэтую функцыю, зменіце спафінг патоку на тып кліента iOS</string>
|
||||
</patch>
|
||||
<patch id="video.quality.rememberVideoQualityPatch">
|
||||
<!-- Translations should use the same text as revanced_custom_playback_speeds_auto -->
|
||||
@@ -1261,6 +1353,8 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_custom_playback_speeds_invalid">Нестандартныя хуткасці павінны быць менш за %s</string>
|
||||
<string name="revanced_custom_playback_speeds_parse_exception">Несапраўдныя нестандартныя хуткасці прайгравання</string>
|
||||
<string name="revanced_custom_playback_speeds_auto">Аўто</string>
|
||||
<string name="revanced_speed_tap_and_hold_title">Уласны хуткасць націску і ўтрымання</string>
|
||||
<string name="revanced_speed_tap_and_hold_summary">Хуткасць прайгравання між 0-8</string>
|
||||
</patch>
|
||||
<patch id="video.speed.remember.rememberPlaybackSpeedPatch">
|
||||
<string name="revanced_remember_playback_speed_last_selected_title">Запомніце змены хуткасці прайгравання</string>
|
||||
@@ -1269,6 +1363,11 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_playback_speed_default_title">Стандартная хуткасць прайгравання</string>
|
||||
<string name="revanced_remember_playback_speed_toast">Хуткасць па змаўчанні зменена на: %s</string>
|
||||
</patch>
|
||||
<patch id="video.hdr.disableHdrPatch">
|
||||
<string name="revanced_disable_hdr_video_title">Адключыць відэа ў фармаце HDR</string>
|
||||
<string name="revanced_disable_hdr_video_summary_on">Відэа ў фармаце HDR адключана</string>
|
||||
<string name="revanced_disable_hdr_video_summary_off">Відэа ў фармаце HDR уключана</string>
|
||||
</patch>
|
||||
<patch id="video.videoqualitymenu.restoreOldVideoQualityMenuResourcePatch">
|
||||
<string name="revanced_restore_old_video_quality_menu_title">Аднавіць старое меню якасці відэа</string>
|
||||
<string name="revanced_restore_old_video_quality_menu_summary_on">Паказана старое меню якасці відэа</string>
|
||||
@@ -1289,61 +1388,28 @@ Second \"item\" text"</string>
|
||||
Прайграванне відэа можа не працаваць"</string>
|
||||
<string name="revanced_spoof_video_streams_user_dialog_message">Адключэнне гэтай налады можа выклікаць праблемы з прайграваннем відэа.</string>
|
||||
<string name="revanced_spoof_video_streams_client_type_title">Клиент по умолчанию</string>
|
||||
<string name="revanced_spoof_video_streams_about_title">Падробка пабочных эфектаў</string>
|
||||
<string name="revanced_spoof_video_streams_about_summary">"• Аўдыёдарожкі, пазначаныя як арыгінальныя, могуць быць зменены на іншыя
|
||||
• Функцыя \"Стабільная гучнасць\" недаступная"</string>
|
||||
<string name="revanced_spoof_video_streams_language_title">Язык потока аудио по умолчанию</string>
|
||||
<string name="revanced_spoof_video_streams_language_DEFAULT">Мова акаўнта</string>
|
||||
<string name="revanced_spoof_video_streams_language_AR">Арабский</string>
|
||||
<string name="revanced_spoof_video_streams_language_AZ">Азербайджанский</string>
|
||||
<string name="revanced_spoof_video_streams_language_BG">Болгарский</string>
|
||||
<string name="revanced_spoof_video_streams_language_BN">Бенгальский</string>
|
||||
<string name="revanced_spoof_video_streams_language_CA">Каталонский</string>
|
||||
<string name="revanced_spoof_video_streams_language_CS">Чешский</string>
|
||||
<string name="revanced_spoof_video_streams_language_DA">Датский</string>
|
||||
<string name="revanced_spoof_video_streams_language_DE">Немецкий</string>
|
||||
<string name="revanced_spoof_video_streams_language_EL">Греческий</string>
|
||||
<string name="revanced_spoof_video_streams_language_EN">Англійская</string>
|
||||
<string name="revanced_spoof_video_streams_language_ES">Іспанская</string>
|
||||
<string name="revanced_spoof_video_streams_language_ET">Эстонская</string>
|
||||
<string name="revanced_spoof_video_streams_language_FA">Фарсі</string>
|
||||
<string name="revanced_spoof_video_streams_language_FI">Фінская</string>
|
||||
<string name="revanced_spoof_video_streams_language_FR">Французская</string>
|
||||
<string name="revanced_spoof_video_streams_language_GU">Гуяраті</string>
|
||||
<string name="revanced_spoof_video_streams_language_HI">Хянді</string>
|
||||
<string name="revanced_spoof_video_streams_language_HR">Хорватская</string>
|
||||
<string name="revanced_spoof_video_streams_language_HU">Венгерская</string>
|
||||
<string name="revanced_spoof_video_streams_language_ID">Инданезійская</string>
|
||||
<string name="revanced_spoof_video_streams_language_IT">Итальянская</string>
|
||||
<string name="revanced_spoof_video_streams_language_JA">Японская</string>
|
||||
<string name="revanced_spoof_video_streams_language_KK">Казахская</string>
|
||||
<string name="revanced_spoof_video_streams_language_KO">Корэйская</string>
|
||||
<string name="revanced_spoof_video_streams_language_LT">Літоуская</string>
|
||||
<string name="revanced_spoof_video_streams_language_LV">Латышская</string>
|
||||
<string name="revanced_spoof_video_streams_language_MK">Македонская</string>
|
||||
<string name="revanced_spoof_video_streams_language_MN">Монгольская</string>
|
||||
<string name="revanced_spoof_video_streams_language_MR">Маратхі</string>
|
||||
<string name="revanced_spoof_video_streams_language_MS">Малайская</string>
|
||||
<string name="revanced_spoof_video_streams_language_MY">Брыманская</string>
|
||||
<string name="revanced_spoof_video_streams_language_NL">Нідрландский</string>
|
||||
<string name="revanced_spoof_video_streams_language_OR">Орія</string>
|
||||
<string name="revanced_spoof_video_streams_language_PA">Панджабский</string>
|
||||
<string name="revanced_spoof_video_streams_language_PL">Польская</string>
|
||||
<string name="revanced_spoof_video_streams_language_RO">Румынская</string>
|
||||
<string name="revanced_spoof_video_streams_language_RU">Русская</string>
|
||||
<string name="revanced_spoof_video_streams_language_SK">Словацкия</string>
|
||||
<string name="revanced_spoof_video_streams_language_SL">Словенская</string>
|
||||
<string name="revanced_spoof_video_streams_language_SR">Сербская</string>
|
||||
<string name="revanced_spoof_video_streams_language_SV">Швецкая</string>
|
||||
<string name="revanced_spoof_video_streams_language_SW">Суахілі</string>
|
||||
<string name="revanced_spoof_video_streams_language_TA">Тамільская</string>
|
||||
<string name="revanced_spoof_video_streams_language_TE">Тэлугу</string>
|
||||
<string name="revanced_spoof_video_streams_language_TH">Тайская</string>
|
||||
<string name="revanced_spoof_video_streams_language_TR">Турэцкая</string>
|
||||
<string name="revanced_spoof_video_streams_language_UK">Украёнская</string>
|
||||
<string name="revanced_spoof_video_streams_language_UR">Урду</string>
|
||||
<string name="revanced_spoof_video_streams_language_VI">Віетнамская</string>
|
||||
<string name="revanced_spoof_video_streams_language_ZH">Кітайская</string>
|
||||
<!-- 'no auth' means no authentication -->
|
||||
<string name="revanced_spoof_video_streams_client_type_android_vr_no_auth">Android VR (няма аўтэнтыфікацыі)</string>
|
||||
<string name="revanced_spoof_video_streams_ios_force_avc_title">Вымусіць iOS AVC (H.264)</string>
|
||||
<string name="revanced_spoof_video_streams_ios_force_avc_summary_on">Відэакaдэк зафіксаваны ў AVC (H.264)</string>
|
||||
<string name="revanced_spoof_video_streams_ios_force_avc_summary_off">Відэакaдэк вызначаецца аўтаматычна</string>
|
||||
<string name="revanced_spoof_video_streams_ios_force_avc_user_dialog_message">"Уключэнне гэтага можа палепшыць час аўтаномнай працы і выправіць заіканне прайгравання.
|
||||
|
||||
AVC мае максімальнае дазвол 1080p, аўдыёкадэк Opus недаступны, а прайграванне відэа будзе выкарыстоўваць больш інтэрнэт-даных, чым VP9 або AV1."</string>
|
||||
<string name="revanced_spoof_video_streams_about_ios_tv_title">Пабочныя эфекты падробкі iOS</string>
|
||||
<string name="revanced_spoof_video_streams_about_ios_tv_summary">"• Фільмы або платныя відэа могуць не прайгравацца
|
||||
• Стабільная гучнасць недаступная
|
||||
• Відэа заканчваюцца на 1 секунду раней"</string>
|
||||
<string name="revanced_spoof_video_streams_about_android_title">Побічныя эфекты падробкі Android</string>
|
||||
<string name="revanced_spoof_video_streams_about_android_summary">"• Меню гукавой дарожкі адсутнічае
|
||||
• Стабільны гук недаступны
|
||||
• Прымусовае арыгінальнае аўдыё недаступна"</string>
|
||||
<string name="revanced_spoof_video_streams_about_no_av1">• Няма відэакідавання AV1</string>
|
||||
<string name="revanced_spoof_video_streams_about_kids_videos">• Дзіцячыя відэа могуць не прайгравацца ў стане выхаду з акаўнта або ў рэжыме інкогніта</string>
|
||||
<string name="revanced_spoof_streaming_data_stats_for_nerds_title">Паказаць у статыстыцы для спецыялістаў</string>
|
||||
<string name="revanced_spoof_streaming_data_stats_for_nerds_summary_on">Тып кліента адлюстроўваецца ў статыстыцы для спецыялістаў</string>
|
||||
<string name="revanced_spoof_streaming_data_stats_for_nerds_summary_off">Кліент схаваны ў статыстыцы для спецыялістаў</string>
|
||||
<string name="revanced_spoof_video_streams_language_title">Мова гукавой дарожкі па змаўчанні для VR</string>
|
||||
</patch>
|
||||
</app>
|
||||
<app id="twitch">
|
||||
|
||||
@@ -33,7 +33,7 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_check_environment_not_near_patch_time_invalid">Датата на компилация на APK е повредена</string>
|
||||
</patch>
|
||||
<patch id="misc.settings.settingsResourcePatch">
|
||||
<string name="revanced_settings_title">ReVanced</string>
|
||||
<string name="revanced_settings_submenu_title">Настройки</string>
|
||||
<string name="revanced_settings_confirm_user_dialog_title">Искате ли да продължите?</string>
|
||||
<string name="revanced_settings_reset">Възстанови</string>
|
||||
<string name="revanced_settings_restart_title">Рестартирай и опресни</string>
|
||||
@@ -43,6 +43,62 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_settings_import_reset">Настройките на ReVanced бяха нулирани</string>
|
||||
<string name="revanced_settings_import_success">Следните настройки бяха импортирани успешно: %d</string>
|
||||
<string name="revanced_settings_import_failure_parse">Импортирането беше неуспешно: %s</string>
|
||||
<string name="revanced_language_title">Език на ReVanced</string>
|
||||
<string name="revanced_language_user_dialog_message">"Преводите на някои езици може да липсват или да са непълни.
|
||||
|
||||
За да преведете нови езици, посетете translate.revanced.app"</string>
|
||||
<string name="revanced_language_DEFAULT">Език на приложението</string>
|
||||
<string name="revanced_language_AR">арабски</string>
|
||||
<string name="revanced_language_AZ">Азербайджански</string>
|
||||
<string name="revanced_language_BG">български</string>
|
||||
<string name="revanced_language_BN">бенгалски</string>
|
||||
<string name="revanced_language_CA">каталонски</string>
|
||||
<string name="revanced_language_CS">Чешки</string>
|
||||
<string name="revanced_language_DA">Датски</string>
|
||||
<string name="revanced_language_DE">Немски</string>
|
||||
<string name="revanced_language_EL">Гръцки</string>
|
||||
<string name="revanced_language_EN">Английски</string>
|
||||
<string name="revanced_language_ES">Испански</string>
|
||||
<string name="revanced_language_ET">Естонски</string>
|
||||
<string name="revanced_language_FA">Персийски</string>
|
||||
<string name="revanced_language_FI">Финландски</string>
|
||||
<string name="revanced_language_FR">Френски</string>
|
||||
<string name="revanced_language_GU">Гуджарати</string>
|
||||
<string name="revanced_language_HI">Хинди</string>
|
||||
<string name="revanced_language_HR">Хърватски</string>
|
||||
<string name="revanced_language_HU">Унгарски</string>
|
||||
<string name="revanced_language_ID">Индонезийски</string>
|
||||
<string name="revanced_language_IT">Италиански</string>
|
||||
<string name="revanced_language_JA">Японски</string>
|
||||
<string name="revanced_language_KK">Казахски</string>
|
||||
<string name="revanced_language_KO">Корейски</string>
|
||||
<string name="revanced_language_LT">Литовски</string>
|
||||
<string name="revanced_language_LV">Латвийски</string>
|
||||
<string name="revanced_language_MK">Македонски</string>
|
||||
<string name="revanced_language_MN">Монголски</string>
|
||||
<string name="revanced_language_MR">Маратхи</string>
|
||||
<string name="revanced_language_MS">Малайски</string>
|
||||
<string name="revanced_language_MY">Бирмански</string>
|
||||
<string name="revanced_language_NL">Холандски</string>
|
||||
<string name="revanced_language_OR">Одия</string>
|
||||
<string name="revanced_language_PA">Пенджаби</string>
|
||||
<string name="revanced_language_PL">Полски</string>
|
||||
<string name="revanced_language_PT">Португалски</string>
|
||||
<string name="revanced_language_RO">Румънски</string>
|
||||
<string name="revanced_language_RU">Руски</string>
|
||||
<string name="revanced_language_SK">Словашки</string>
|
||||
<string name="revanced_language_SL">Словенски</string>
|
||||
<string name="revanced_language_SR">Сръбски</string>
|
||||
<string name="revanced_language_SV">Шведски</string>
|
||||
<string name="revanced_language_SW">Суахили</string>
|
||||
<string name="revanced_language_TA">Тамилски</string>
|
||||
<string name="revanced_language_TE">Телугу</string>
|
||||
<string name="revanced_language_TH">Тайландски</string>
|
||||
<string name="revanced_language_TR">Турски</string>
|
||||
<string name="revanced_language_UK">Украински</string>
|
||||
<string name="revanced_language_UR">Урду</string>
|
||||
<string name="revanced_language_VI">Виетнамски</string>
|
||||
<string name="revanced_language_ZH">Китайски</string>
|
||||
<string name="revanced_pref_import_export_title">Импортиране / Експортиране</string>
|
||||
<string name="revanced_pref_import_export_summary">Импортиране / Експортиране на ReVanced настройките</string>
|
||||
<!-- Settings about dialog. -->
|
||||
@@ -77,12 +133,15 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_settings_screen_01_ads_title">Реклами</string>
|
||||
<string name="revanced_settings_screen_02_alt_thumbnails_title">Алтернативни миниатюри</string>
|
||||
<string name="revanced_settings_screen_03_feed_title">Поток</string>
|
||||
<string name="revanced_settings_screen_04_player_title">Плейър</string>
|
||||
<string name="revanced_settings_screen_05_general_title">Общо оформление</string>
|
||||
<string name="revanced_settings_screen_04_general_title">Общ</string>
|
||||
<string name="revanced_settings_screen_05_player_title">Плеър</string>
|
||||
<string name="revanced_settings_screen_07_seekbar_title">Лента за прогрес на видеото</string>
|
||||
<string name="revanced_settings_screen_08_swipe_controls_title">Контроли с плъзгане</string>
|
||||
<string name="revanced_settings_screen_11_misc_title">Разни</string>
|
||||
<string name="revanced_settings_screen_12_video_title">Видео</string>
|
||||
<string name="revanced_restore_old_settings_menus_title">Възстановяване на старите менюта за настройки</string>
|
||||
<string name="revanced_restore_old_settings_menus_summary_on">Старите менюта с настройки се показват</string>
|
||||
<string name="revanced_restore_old_settings_menus_summary_off">Старите менюта с настройки не се показват</string>
|
||||
</patch>
|
||||
<patch id="misc.backgroundplayback.backgroundPlaybackPatch">
|
||||
<string name="revanced_shorts_disable_background_playback_title">Възпроизвеждане на Shorts в фонов режим</string>
|
||||
@@ -109,9 +168,9 @@ Second \"item\" text"</string>
|
||||
Няма да бъдете уведомени за неочаквани събития."</string>
|
||||
</patch>
|
||||
<patch id="layout.hide.general.hideLayoutComponentsPatch">
|
||||
<string name="revanced_disable_like_subscribe_glow_title">Деактивирайте подсветката на бутона Харесвам /Абонамент</string>
|
||||
<string name="revanced_disable_like_subscribe_glow_summary_on">Бутоните „Харесвам“ и „Абониране“ няма да светят, когато бъдат натиснати</string>
|
||||
<string name="revanced_disable_like_subscribe_glow_summary_off">Бутоните „Харесвам“ и „Абониране“ ще светят, когато бъдат натиснати</string>
|
||||
<string name="revanced_disable_like_subscribe_glow_title">Деактивиране на светенето на бутон Like и Subscribe</string>
|
||||
<string name="revanced_disable_like_subscribe_glow_summary_on">Бутон Like и Subscribe няма да светят при споменаване</string>
|
||||
<string name="revanced_disable_like_subscribe_glow_summary_off">Бутон Like и Subscribe ще светят при споменаване</string>
|
||||
<string name="revanced_hide_album_cards_title">\"Карти на албумите\"</string>
|
||||
<string name="revanced_hide_album_cards_summary_on">Албумните карти са скрити</string>
|
||||
<string name="revanced_hide_album_cards_summary_off">Албумните карти се показват</string>
|
||||
@@ -164,9 +223,9 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_hide_chips_shelf_title">Скриване на филмовите рафтове</string>
|
||||
<string name="revanced_hide_chips_shelf_summary_on">Рафтът \"Chip\" е скрит</string>
|
||||
<string name="revanced_hide_chips_shelf_summary_off">Рафтовете със снимки се показват</string>
|
||||
<string name="revanced_hide_expandable_chip_title">Скриване на показващи се раздели под видеоклипове</string>
|
||||
<string name="revanced_hide_expandable_chip_summary_on">Падащите менюта са скрити</string>
|
||||
<string name="revanced_hide_expandable_chip_summary_off">Показват се</string>
|
||||
<string name="revanced_hide_expandable_chip_title">Скрий разширяемата карта под видеоклиповете</string>
|
||||
<string name="revanced_hide_expandable_chip_summary_on">Разширяемите карти са скрити</string>
|
||||
<string name="revanced_hide_expandable_chip_summary_off">Разширяемите карти се показват</string>
|
||||
<string name="revanced_hide_community_posts_title">Скриване на публикациите от общността</string>
|
||||
<string name="revanced_hide_community_posts_summary_on">Насоките на общността са скрити</string>
|
||||
<string name="revanced_hide_community_posts_summary_off">Последните публикации са показани</string>
|
||||
@@ -227,6 +286,9 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_hide_chapters_section_title">Скриване на секцията с заглавия</string>
|
||||
<string name="revanced_hide_chapters_section_summary_on">Секцията с заглавия е скрита</string>
|
||||
<string name="revanced_hide_chapters_section_summary_off">Секцията с заглавия се показва</string>
|
||||
<string name="revanced_hide_how_this_was_made_section_title">Скриване на секцията \'Как е създадено това съдържание\'</string>
|
||||
<string name="revanced_hide_how_this_was_made_section_summary_on">Секцията \'Как е създадено това съдържание\' е скрита</string>
|
||||
<string name="revanced_hide_how_this_was_made_section_summary_off">Секцията \'Как е създадено това съдържание\' се показва</string>
|
||||
<string name="revanced_hide_podcast_section_title">Скриване секцията „Разгледайте подкаста“</string>
|
||||
<string name="revanced_hide_podcast_section_summary_on">\"Разгледайте подкаста\" е скрита</string>
|
||||
<string name="revanced_hide_podcast_section_summary_off">\"Разгледайте подкаста\" се показва</string>
|
||||
@@ -269,7 +331,7 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_hide_comments_preview_comment_title">Преглед на коментари</string>
|
||||
<string name="revanced_hide_comments_preview_comment_summary_on">Прегледа на коментари е скрит</string>
|
||||
<string name="revanced_hide_comments_preview_comment_summary_off">Прегледа на коментари се показва</string>
|
||||
<string name="revanced_hide_comments_thanks_button_title">Бутон за благодарност</string>
|
||||
<string name="revanced_hide_comments_thanks_button_title">Скрий бутона за харесване</string>
|
||||
<string name="revanced_hide_comments_thanks_button_summary_on">Бутона за благодарност е скрит</string>
|
||||
<string name="revanced_hide_comments_thanks_button_summary_off">Бутона за благодарност се показва</string>
|
||||
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_title">Бутони в лентата на прогреса и емотикони</string>
|
||||
@@ -296,12 +358,12 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_hide_keyword_content_home_title">Скриване на видеоклипове в началната страница с ключови думи</string>
|
||||
<string name="revanced_hide_keyword_content_home_summary_on">Видеоклиповете в раздела Начало се филтрират с помощта на ключови думи</string>
|
||||
<string name="revanced_hide_keyword_content_home_summary_off">Видеоклиповете в раздела Начало не се филтрират по ключови думи</string>
|
||||
<string name="revanced_hide_keyword_content_subscriptions_title">Скриване на видеоклипове от абонаменти с ключови думи</string>
|
||||
<string name="revanced_hide_keyword_content_subscriptions_summary_on">Видеоклиповете в раздела за абонаменти са са филтрирани с ключови думи</string>
|
||||
<string name="revanced_hide_keyword_content_subscriptions_summary_off">Видеоклиповете в емисията за абонаменти не се филтрират</string>
|
||||
<string name="revanced_hide_keyword_content_search_title">Скриване на резултати от търсения с ключови думи</string>
|
||||
<string name="revanced_hide_keyword_content_search_summary_on">Резултатите от търсенето се филтрират с помощта на ключови думи</string>
|
||||
<string name="revanced_hide_keyword_content_search_summary_off">Резултатите от търсенето не се филтрират по ключови думи</string>
|
||||
<string name="revanced_hide_keyword_content_subscriptions_title">Скриване на видеоклипове от абонаменти с ключови думи</string>
|
||||
<string name="revanced_hide_keyword_content_subscriptions_summary_on">Видеоклиповете в раздела за абонаменти са са филтрирани с ключови думи</string>
|
||||
<string name="revanced_hide_keyword_content_subscriptions_summary_off">Видеоклиповете в емисията за абонаменти не се филтрират</string>
|
||||
<string name="revanced_hide_keyword_content_phrases_title">Ключови думи, които да бъдат скрити</string>
|
||||
<!-- For localization it is preferred, but not required, if 'LeBlanc' is replaced with a localized name or a familiar word that has upper case letters in the middle of the word.
|
||||
This is because keywords can be in any language, and showing an example in the localized script helps convey this. -->
|
||||
@@ -348,6 +410,9 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_hide_products_banner_title">Скриване на банера за показване на продукти</string>
|
||||
<string name="revanced_hide_products_banner_summary_on">Банерът е скрит</string>
|
||||
<string name="revanced_hide_products_banner_summary_off">Банерът е показан</string>
|
||||
<string name="revanced_hide_end_screen_store_banner_title">Скрий банера за реклама в края на екрана</string>
|
||||
<string name="revanced_hide_end_screen_store_banner_summary_on">Банерът на магазина е скрит</string>
|
||||
<string name="revanced_hide_end_screen_store_banner_summary_off">Банерът на магазина се показва</string>
|
||||
<string name="revanced_hide_player_store_shelf_title">Скриване на рафта за пазаруване</string>
|
||||
<string name="revanced_hide_player_store_shelf_summary_on">Рафта за пазаруване е скрит</string>
|
||||
<string name="revanced_hide_player_store_shelf_summary_off">Рафта за пазаруване се показва</string>
|
||||
@@ -400,7 +465,7 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_external_downloader_summary_on">Бутонът за изтегляне е показан в плейъра</string>
|
||||
<string name="revanced_external_downloader_summary_off">Бутонът за изтегляне не е показан в плейъра</string>
|
||||
<!-- 'download action button' should be translated using the same wording as the translation of 'revanced_hide_download_button_title' -->
|
||||
<string name="revanced_external_downloader_action_button_title">Отмяна на бутона за изтегляне</string>
|
||||
<string name="revanced_external_downloader_action_button_title">Заместване на бутона Download</string>
|
||||
<string name="revanced_external_downloader_action_button_summary_on">Бутонът за изтегляне отваря избраното от Вас външно приложение за изтегляне</string>
|
||||
<string name="revanced_external_downloader_action_button_summary_off">Бутонът за изтегляне отваря вграденото приложение за изтегляне</string>
|
||||
<string name="revanced_external_downloader_name_title">Име на пакета на изтеглящото приложение</string>
|
||||
@@ -445,6 +510,9 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_swipe_overlay_background_alpha_summary">Видимостта на фона на плъзгащите контроли.</string>
|
||||
<string name="revanced_swipe_threshold_title">Праг на величината на плъзгане</string>
|
||||
<string name="revanced_swipe_threshold_summary">Праг преди да се осъществи плъзгането</string>
|
||||
<string name="revanced_swipe_change_video_title">Включване на превключване на видеото чрез плъзване</string>
|
||||
<string name="revanced_swipe_change_video_summary_on">Плъзването в режим на цял екран ще превключи към следващото/предишно видео</string>
|
||||
<string name="revanced_swipe_change_video_summary_off">Плъзването в режим на цял екран няма да превключи към следващото/предишно видео</string>
|
||||
</patch>
|
||||
<patch id="layout.autocaptions.autoCaptionsPatch">
|
||||
<string name="revanced_auto_captions_title">Автоматични Субтитри</string>
|
||||
@@ -584,14 +652,14 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_hide_player_previous_next_buttons_title">Бутони за Предишно & Следващо видео</string>
|
||||
<string name="revanced_hide_player_previous_next_buttons_summary_on">Бутоните са скрити</string>
|
||||
<string name="revanced_hide_player_previous_next_buttons_summary_off">Бутоните се показват</string>
|
||||
<string name="revanced_hide_cast_button_title">Бутон за предаване на Тв</string>
|
||||
<string name="revanced_hide_cast_button_title">Скриване на бутона Cast</string>
|
||||
<string name="revanced_hide_cast_button_summary_on">Бутонът за предаване е скрит</string>
|
||||
<string name="revanced_hide_cast_button_summary_off">Бутонът за предаване се показва</string>
|
||||
<!-- This button does not display any text, but 'captions' should be translated using the same wording used as the translation of 'revanced_hide_player_flyout_captions_title' -->
|
||||
<string name="revanced_hide_captions_button_title">Бутона за Субтитри</string>
|
||||
<string name="revanced_hide_captions_button_title">Скриване на бутона Captions</string>
|
||||
<string name="revanced_hide_captions_button_summary_on">Бутона за субтити е скрит</string>
|
||||
<string name="revanced_hide_captions_button_summary_off">Бутона за субтити се показва</string>
|
||||
<string name="revanced_hide_autoplay_button_title">Бутона за авт. изпълнение</string>
|
||||
<string name="revanced_hide_autoplay_button_title">Скриване на бутона Autoplay</string>
|
||||
<string name="revanced_hide_autoplay_button_summary_on">Бутона за авт. изпълнение е скрит</string>
|
||||
<string name="revanced_hide_autoplay_button_summary_off">Бутона за авт. изпълнение се показва</string>
|
||||
</patch>
|
||||
@@ -601,7 +669,7 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_hide_endscreen_cards_summary_off">Препоръките в края се показват</string>
|
||||
</patch>
|
||||
<patch id="layout.hide.fullscreenambientmode.disableFullscreenAmbientModePatch">
|
||||
<string name="revanced_disable_fullscreen_ambient_mode_title">Деактивирайте подсветка около видеото на цял екран</string>
|
||||
<string name="revanced_disable_fullscreen_ambient_mode_title">Деактивиране на Ambient режим в цял екран</string>
|
||||
<string name="revanced_disable_fullscreen_ambient_mode_summary_on">Подсветката в режим на цял екран е деактивирана</string>
|
||||
<string name="revanced_disable_fullscreen_ambient_mode_summary_off">Подсветката в режим на цял екран е активирана</string>
|
||||
</patch>
|
||||
@@ -628,48 +696,51 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_shorts_player_screen_summary">Скриване или показване на компоненти в Shorts плейъра</string>
|
||||
<!-- 'home' should be translated using the same localized wording YouTube displays for the home tab. -->
|
||||
<string name="revanced_hide_shorts_home_title">Скриване на Shorts в началната лента</string>
|
||||
<string name="revanced_hide_shorts_home_summary_on">Shorts в началната лента са скрити</string>
|
||||
<string name="revanced_hide_shorts_home_summary_off">Shorts в началната лента са показани</string>
|
||||
<string name="revanced_hide_shorts_home_summary_on">Скрит в началния канал и свързани видеоклипове</string>
|
||||
<string name="revanced_hide_shorts_home_summary_off">Показан в началния канал и свързани видеоклипове</string>
|
||||
<!-- 'subscription' should be translated using the same localized wording YouTube displays for the subscription tab. -->
|
||||
<string name="revanced_hide_shorts_subscriptions_title">Shorts в раздел „Абонаменти“</string>
|
||||
<string name="revanced_hide_shorts_subscriptions_summary_on">Shorts в раздел „Абонаменти“ са скрити</string>
|
||||
<string name="revanced_hide_shorts_subscriptions_summary_off">Shorts в раздел „Абонаменти“ се показват</string>
|
||||
<string name="revanced_hide_shorts_subscriptions_summary_on">Скрито в абонаментната емисия</string>
|
||||
<string name="revanced_hide_shorts_subscriptions_summary_off">Показано в абонаментната емисия</string>
|
||||
<string name="revanced_hide_shorts_search_title">Shorts в резултатите от търсенето</string>
|
||||
<string name="revanced_hide_shorts_search_summary_on">Shorts в резултатите от търсенето са скрити</string>
|
||||
<string name="revanced_hide_shorts_search_summary_off">Shorts в резултатите от търсенето се показват</string>
|
||||
<string name="revanced_hide_shorts_search_summary_on">Скрити в резултатите от търсенето</string>
|
||||
<string name="revanced_hide_shorts_search_summary_off">Показано в резултатите от търсенето</string>
|
||||
<string name="revanced_hide_shorts_history_title">Скриване на шортите в историята на гледане</string>
|
||||
<string name="revanced_hide_shorts_history_summary_on">Скрито в историята на гледане</string>
|
||||
<string name="revanced_hide_shorts_history_summary_off">Показва се в историята на гледане</string>
|
||||
<!-- 'join' should be translated using the same localized wording YouTube displays for the button. -->
|
||||
<string name="revanced_hide_shorts_join_button_title">Бутон за присъединяване</string>
|
||||
<string name="revanced_hide_shorts_join_button_title">Скриване на бутона Join</string>
|
||||
<string name="revanced_hide_shorts_join_button_summary_on">Бутона за присъединяване е скрит</string>
|
||||
<string name="revanced_hide_shorts_join_button_summary_off">Бутона за присъединяване се показва</string>
|
||||
<!-- 'subscribe' should be translated using the same localized wording YouTube displays for the button. -->
|
||||
<string name="revanced_hide_shorts_subscribe_button_title">Скрийте бутона „Абониране“</string>
|
||||
<string name="revanced_hide_shorts_subscribe_button_title">Скриване на бутона Subscribe</string>
|
||||
<string name="revanced_hide_shorts_subscribe_button_summary_on">Бутонът „Абониране“ е скрит</string>
|
||||
<string name="revanced_hide_shorts_subscribe_button_summary_off">Бутонът „Абониране“ се показва</string>
|
||||
<string name="revanced_hide_shorts_paused_overlay_buttons_title">Показване на бутони при пауза</string>
|
||||
<string name="revanced_hide_shorts_paused_overlay_buttons_summary_on">Бутоните при пауза се скриват</string>
|
||||
<string name="revanced_hide_shorts_paused_overlay_buttons_summary_off">Бутоните при пауза се показват</string>
|
||||
<string name="revanced_hide_shorts_shop_button_title">Скриване на бутона за пазаруване</string>
|
||||
<string name="revanced_hide_shorts_shop_button_title">Скриване на бутона Shop</string>
|
||||
<string name="revanced_hide_shorts_shop_button_summary_on">Бутона за пазаруване е скрит</string>
|
||||
<string name="revanced_hide_shorts_shop_button_summary_off">Бутона за пазаруване се показва</string>
|
||||
<string name="revanced_hide_shorts_super_thanks_button_title">Бутон \"Специални благодарности\"</string>
|
||||
<string name="revanced_hide_shorts_super_thanks_button_summary_on">Бутон \"Специални благодарности\" е скрит</string>
|
||||
<string name="revanced_hide_shorts_super_thanks_button_summary_off">Бутон \"Специални благодарности\" се показва</string>
|
||||
<string name="revanced_hide_shorts_super_thanks_button_title">Скриване на бутона Buy Super Thanks</string>
|
||||
<string name="revanced_hide_shorts_super_thanks_button_summary_on">Бутон Buy Super Thanks е скрит</string>
|
||||
<string name="revanced_hide_shorts_super_thanks_button_summary_off">Бутон Buy Super Thanks се показва</string>
|
||||
<string name="revanced_hide_shorts_tagged_products_title">Скриване на маркираните продукти</string>
|
||||
<string name="revanced_hide_shorts_tagged_products_summary_on">Скрити</string>
|
||||
<string name="revanced_hide_shorts_tagged_products_summary_off">Показват се</string>
|
||||
<string name="revanced_hide_shorts_location_label_title">Етикет за местоположение</string>
|
||||
<string name="revanced_hide_shorts_location_label_summary_on">Етикет за местоположение е скрит</string>
|
||||
<string name="revanced_hide_shorts_location_label_summary_off">Етикет за местоположение се показва</string>
|
||||
<string name="revanced_hide_shorts_save_sound_button_title">Скриване на бутона Запазване на музика</string>
|
||||
<string name="revanced_hide_shorts_save_sound_button_title">Скриване на бутона Save music</string>
|
||||
<string name="revanced_hide_shorts_save_sound_button_summary_on">Бутонът за запазване на музика е скрит</string>
|
||||
<string name="revanced_hide_shorts_save_sound_button_summary_off">Показан е бутонът за запазване на музика</string>
|
||||
<string name="revanced_hide_shorts_use_template_button_title">Бутон за \"Използване на шаблон\"</string>
|
||||
<string name="revanced_hide_shorts_use_template_button_title">Скриване на бутона Use template</string>
|
||||
<string name="revanced_hide_shorts_use_template_button_summary_on">Бутон за \"Използване на шаблон\" е скрит</string>
|
||||
<string name="revanced_hide_shorts_use_template_button_summary_off">Бутон за \"Използване на шаблон\" се показва</string>
|
||||
<string name="revanced_hide_shorts_upcoming_button_title">Бутон \"Предстоящи събития\"</string>
|
||||
<string name="revanced_hide_shorts_upcoming_button_title">Скриване на бутона Upcoming</string>
|
||||
<string name="revanced_hide_shorts_upcoming_button_summary_on">Бутон \"Предстоящи събития\" е скрит</string>
|
||||
<string name="revanced_hide_shorts_upcoming_button_summary_off">Бутон \"Предстоящи събития\" се показва</string>
|
||||
<string name="revanced_hide_shorts_green_screen_button_title">Бутон \"Зелен екран\"</string>
|
||||
<string name="revanced_hide_shorts_green_screen_button_title">Скриване на бутона Green screen</string>
|
||||
<string name="revanced_hide_shorts_green_screen_button_summary_on">Бутон \"Зелен екран\" е скрит</string>
|
||||
<string name="revanced_hide_shorts_green_screen_button_summary_off">Бутон \"Зелен екран\" се показва</string>
|
||||
<string name="revanced_hide_shorts_hashtag_button_title">Скриване на бутона за хаштаг</string>
|
||||
@@ -681,24 +752,24 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_hide_shorts_stickers_title">Скриване на стикери</string>
|
||||
<string name="revanced_hide_shorts_stickers_summary_on">Стикерите са скрити</string>
|
||||
<string name="revanced_hide_shorts_stickers_summary_off">Стикери са показани</string>
|
||||
<string name="revanced_hide_shorts_like_fountain_title">Анимация на бутона \"Харесвам\"</string>
|
||||
<string name="revanced_hide_shorts_like_fountain_title">Скриване на анимацията на Like бутона</string>
|
||||
<string name="revanced_hide_shorts_like_fountain_summary_on">Анимацията на бутона „Харесва ми“ е скрита</string>
|
||||
<string name="revanced_hide_shorts_like_fountain_summary_off">Анимацията на бутона „Харесва ми“ се показва</string>
|
||||
<string name="revanced_hide_shorts_like_button_title">Скриване на бутона за харесване</string>
|
||||
<string name="revanced_hide_shorts_like_button_title">Скриване на бутона Like</string>
|
||||
<string name="revanced_hide_shorts_like_button_summary_on">Бутона за харесване е скрит</string>
|
||||
<string name="revanced_hide_shorts_like_button_summary_off">Бутона за харесване се показва</string>
|
||||
<string name="revanced_hide_shorts_dislike_button_title">Скриване на бутона за нехаресване</string>
|
||||
<string name="revanced_hide_shorts_dislike_button_title">Скриване на бутона Dislike</string>
|
||||
<string name="revanced_hide_shorts_dislike_button_summary_on">Бутона за нехаресване е скрит</string>
|
||||
<string name="revanced_hide_shorts_dislike_button_summary_off">Бутона за нехаресване се показва</string>
|
||||
<string name="revanced_hide_shorts_comments_button_title">Скриване на бутона за коментари</string>
|
||||
<string name="revanced_hide_shorts_comments_button_title">Скриване на бутона Comments</string>
|
||||
<string name="revanced_hide_shorts_comments_button_summary_on">Бутон за коментари е скрит</string>
|
||||
<string name="revanced_hide_shorts_comments_button_summary_off">Бутон за коментари се показва</string>
|
||||
<!-- 'remix' should be translated using the same localized wording YouTube displays for the button. -->
|
||||
<string name="revanced_hide_shorts_remix_button_title">Бутон за ремикс</string>
|
||||
<string name="revanced_hide_shorts_remix_button_title">Скриване на бутона Remix</string>
|
||||
<string name="revanced_hide_shorts_remix_button_summary_on">Бутона за ремикс е скрит</string>
|
||||
<string name="revanced_hide_shorts_remix_button_summary_off">Бутона за ремикс се показва</string>
|
||||
<!-- 'share' should be translated using the same localized wording YouTube displays for the button. -->
|
||||
<string name="revanced_hide_shorts_share_button_title">Бутон за споделяне</string>
|
||||
<string name="revanced_hide_shorts_share_button_title">Скриване на бутона Share</string>
|
||||
<string name="revanced_hide_shorts_share_button_summary_on">Бутона за споделяне е скрит</string>
|
||||
<string name="revanced_hide_shorts_share_button_summary_off">Бутона за споделяне се показва</string>
|
||||
<string name="revanced_hide_shorts_info_panel_title">Информационни панели</string>
|
||||
@@ -738,6 +809,13 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_hide_player_popup_panels_summary_on">Изскачащите панели на плейъра са скрити</string>
|
||||
<string name="revanced_hide_player_popup_panels_summary_off">Изскачащите панели на плейъра се показват</string>
|
||||
</patch>
|
||||
<patch id="layout.player.fullscreen.exitFullscreenPatch">
|
||||
<string name="revanced_exit_fullscreen_title">Изход от режим на цял екран в края на видеото</string>
|
||||
<string name="revanced_exit_fullscreen_entry_1">Деактивирано</string>
|
||||
<string name="revanced_exit_fullscreen_entry_2">Портрет</string>
|
||||
<string name="revanced_exit_fullscreen_entry_3">Пейзаж</string>
|
||||
<string name="revanced_exit_fullscreen_entry_4">Портрет и пейзаж</string>
|
||||
</patch>
|
||||
<patch id="layout.player.fullscreen.openVideosFullscreen">
|
||||
<string name="revanced_open_videos_fullscreen_portrait_title">Отваряне на видеоклипове в портретен режим на цял екран</string>
|
||||
<string name="revanced_open_videos_fullscreen_portrait_summary_on">Видеоклиповете се отварят на цял екран</string>
|
||||
@@ -768,7 +846,7 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_ryd_dislike_percentage_summary_on">Нехаресванията се показват като процент</string>
|
||||
<string name="revanced_ryd_dislike_percentage_summary_off">Нехаресванията се показват като число</string>
|
||||
<!-- Translations should use language similar to 'revanced_sb_enable_compact_skip_button' -->
|
||||
<string name="revanced_ryd_compact_layout_title">Компактен бутон за харесване</string>
|
||||
<string name="revanced_ryd_compact_layout_title">Компактен Like бутон</string>
|
||||
<string name="revanced_ryd_compact_layout_summary_on">Включен компактен бутон \"Харесва ми\"</string>
|
||||
<string name="revanced_ryd_compact_layout_summary_off">Най-добър изглед на бутона за харесване</string>
|
||||
<string name="revanced_ryd_toast_on_connection_error_title">Показване на известие, ако API не е наличен</string>
|
||||
@@ -816,7 +894,7 @@ Second \"item\" text"</string>
|
||||
</patch>
|
||||
<patch id="layout.sponsorblock.sponsorBlockResourcePatch">
|
||||
<string name="revanced_sb_enable_sb">Включване на SponsorBlock</string>
|
||||
<string name="revanced_sb_enable_sb_sum">SponsorBlock е система за прескачане на досадни части и реклами от видеоклиповете в YouTube</string>
|
||||
<string name="revanced_sb_enable_sb_sum">SponsorBlock е система с отворен код за прескачане на досадни части от видеоклипове в YouTube</string>
|
||||
<string name="revanced_sb_appearance_category">Външен вид</string>
|
||||
<string name="revanced_sb_enable_voting">Бутона за гласуване</string>
|
||||
<string name="revanced_sb_enable_voting_sum_on">Бутона за гласуване на част се показва</string>
|
||||
@@ -881,7 +959,7 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_sb_segments_sponsor">Спонсори</string>
|
||||
<string name="revanced_sb_segments_sponsor_sum">Платена промоция, платени препоръки и директни реклами. Не за самореклама или безплатни препоръки за каузи/създатели/уебсайтове/продукти, които се харесват на автора</string>
|
||||
<string name="revanced_sb_segments_selfpromo">Неплатена/Самореклама</string>
|
||||
<string name="revanced_sb_segments_selfpromo_sum">Подобно на „Спонсор“, с изключение на неплатено или самореклама. Включва раздели за стоки, дарения или информация за това с кого са си сътрудничили</string>
|
||||
<string name="revanced_sb_segments_selfpromo_sum">Подобно на Sponsor, но за неплатена или собствена промоция. Включва секции за стоки, дарения или информация за това с кого са си сътрудничили</string>
|
||||
<string name="revanced_sb_segments_interaction">Напомняне за действие (абониране)</string>
|
||||
<string name="revanced_sb_segments_interaction_sum">Кратко напомняне да харесате, абонирате или последвате в средата на съдържанието. Ако е дълго или за нещо конкретно, вместо това трябва да бъде самореклама</string>
|
||||
<string name="revanced_sb_segments_highlight">Акценти</string>
|
||||
@@ -1006,6 +1084,23 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_sb_reset">Възстанови</string>
|
||||
<string name="revanced_sb_about">За програмата</string>
|
||||
<string name="revanced_sb_about_api_sum">Данните са предоставени от SponsorBlock API. Докоснете тук за повече информация и изтеглияния</string>
|
||||
</patch>
|
||||
<patch id="layout.formfactor.changeFormFactorPatch">
|
||||
<string name="revanced_change_form_factor_title">Формат на екрана /Таблет, Телфон, .../</string>
|
||||
<string name="revanced_change_form_factor_entry_1">По подразбиране</string>
|
||||
<string name="revanced_change_form_factor_entry_2">Телефон</string>
|
||||
<string name="revanced_change_form_factor_entry_3">Таблет</string>
|
||||
<string name="revanced_change_form_factor_entry_4">Автомобил</string>
|
||||
<string name="revanced_change_form_factor_user_dialog_message">"Промените включват:
|
||||
|
||||
Оформление за таблет
|
||||
• Публикациите на общността са скрити
|
||||
|
||||
Оформление за автомобил
|
||||
• Менюто „История на гледане“ е скрито
|
||||
• Разделът „Разгледай“ е възстановен
|
||||
• Shorts се отварят в обикновения плейър
|
||||
• Лентата е организирана по теми и канал"</string>
|
||||
</patch>
|
||||
<patch id="layout.spoofappversion.spoofAppVersionPatch">
|
||||
<string name="revanced_spoof_app_version_title">Подлъгване за версията на приложението</string>
|
||||
@@ -1020,6 +1115,7 @@ Second \"item\" text"</string>
|
||||
This is because the 'General layout' menu uses alphabetic sorting, and it functionally works better if the spoof target selector appears below the 'Spoof app version' UI switch -->
|
||||
<string name="revanced_spoof_app_version_target_title">Подлъгване за версията на</string>
|
||||
<string name="revanced_spoof_app_version_target_entry_1">19.35.36 - Възстановете старите икони на Shorts в плейъра</string>
|
||||
<string name="revanced_spoof_app_version_target_entry_2">19.26.42 - Възстановяване на стари икони на навигацията и лентата с инструменти</string>
|
||||
<!-- 'RYD' is 'Return YouTube Dislike' -->
|
||||
<string name="revanced_spoof_app_version_target_legacy_entry_1">18.33.40 - Възстановете RYD в режим „инкогнито“ на Shorts</string>
|
||||
<string name="revanced_spoof_app_version_target_legacy_entry_2">18.20.39 - Възстановяване на видео скорост & в менюто за качество</string>
|
||||
@@ -1063,12 +1159,6 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_shorts_autoplay_background_summary_on">Shorts ще се възпроизвеждат автоматично един след друг във фонов режим</string>
|
||||
<string name="revanced_shorts_autoplay_background_summary_off">Shorts ще се повтори във фонов режим</string>
|
||||
</patch>
|
||||
<patch id="layout.tablet.enableTabletLayoutPatch">
|
||||
<string name="revanced_tablet_layout_title">Включи режим за таблет</string>
|
||||
<string name="revanced_tablet_layout_summary_on">Режим за таблет е вкл.</string>
|
||||
<string name="revanced_tablet_layout_summary_off">Режим за таблет е изкл.</string>
|
||||
<string name="revanced_tablet_layout_user_dialog_message">Публикациите в общността не се показват на оформления за таблет</string>
|
||||
</patch>
|
||||
<patch id="layout.miniplayer.miniplayerPatch">
|
||||
<string name="revanced_miniplayer_screen_title">Минимизиран екран за възпроизвеждане</string>
|
||||
<string name="revanced_miniplayer_screen_summary">Променете стила на минимизирания екран за възпроизвеждане</string>
|
||||
@@ -1129,8 +1219,10 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_seekbar_custom_color_title">Промяна на цвета на индикатора за време</string>
|
||||
<string name="revanced_seekbar_custom_color_summary_on">Показва се персонализиран цвят на лентата за напредък</string>
|
||||
<string name="revanced_seekbar_custom_color_summary_off">Показва се оригиналния цвят на лентата за напредък</string>
|
||||
<string name="revanced_seekbar_custom_color_value_title">Персонализиран цвят на лентата за напредък</string>
|
||||
<string name="revanced_seekbar_custom_color_value_summary">Цветове на лентата за напредък</string>
|
||||
<string name="revanced_seekbar_custom_color_primary_title">Цвят на лентата за търсене по избор</string>
|
||||
<string name="revanced_seekbar_custom_color_primary_summary">Цветът на лентата за търсене</string>
|
||||
<string name="revanced_seekbar_custom_color_accent_title">Цвят на лентата за търсене по избор</string>
|
||||
<string name="revanced_seekbar_custom_color_accent_summary">Цветът на лентата за търсене</string>
|
||||
<string name="revanced_seekbar_custom_color_invalid">Невалидна стойност за цвят на лентата на прогреса</string>
|
||||
</patch>
|
||||
<patch id="layout.thumbnails.bypassImageRegionRestrictionsPatch">
|
||||
@@ -1232,6 +1324,7 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_force_original_audio_title">Принудително оригинално аудио</string>
|
||||
<string name="revanced_force_original_audio_summary_on">Използване на оригинално аудио</string>
|
||||
<string name="revanced_force_original_audio_summary_off">Използване на аудио по подразбиране</string>
|
||||
<string name="revanced_force_original_audio_not_available">За да използвате тази функция, променете имитацията на поточно предаване на тип клиент на iOS</string>
|
||||
</patch>
|
||||
<patch id="video.quality.rememberVideoQualityPatch">
|
||||
<!-- Translations should use the same text as revanced_custom_playback_speeds_auto -->
|
||||
@@ -1259,6 +1352,8 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_custom_playback_speeds_invalid">Персонализираните скорости трябва да са по-малки от %s</string>
|
||||
<string name="revanced_custom_playback_speeds_parse_exception">Невалидни персонализирани скорости на възпроизвеждане</string>
|
||||
<string name="revanced_custom_playback_speeds_auto">Авто</string>
|
||||
<string name="revanced_speed_tap_and_hold_title">Персонализирана скорост при докосване и задържане</string>
|
||||
<string name="revanced_speed_tap_and_hold_summary">Скорост на възпроизвеждане между 0-8</string>
|
||||
</patch>
|
||||
<patch id="video.speed.remember.rememberPlaybackSpeedPatch">
|
||||
<string name="revanced_remember_playback_speed_last_selected_title">Запомни промените в скоростта на възпроизвеждане</string>
|
||||
@@ -1267,6 +1362,11 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_playback_speed_default_title">Скорост на възпроизвеждане по подразбиране</string>
|
||||
<string name="revanced_remember_playback_speed_toast">Скоростта по подразбиране е променена на: %s</string>
|
||||
</patch>
|
||||
<patch id="video.hdr.disableHdrPatch">
|
||||
<string name="revanced_disable_hdr_video_title">Деактивиране на HDR видео</string>
|
||||
<string name="revanced_disable_hdr_video_summary_on">HDR видеото е деактивирано</string>
|
||||
<string name="revanced_disable_hdr_video_summary_off">HDR видеото е активирано</string>
|
||||
</patch>
|
||||
<patch id="video.videoqualitymenu.restoreOldVideoQualityMenuResourcePatch">
|
||||
<string name="revanced_restore_old_video_quality_menu_title">Възстановете старото меню за качество на видеото</string>
|
||||
<string name="revanced_restore_old_video_quality_menu_summary_on">Показва се старото меню за видео качество</string>
|
||||
@@ -1287,62 +1387,28 @@ Second \"item\" text"</string>
|
||||
Възпроизвеждането на видеоклипове може да не работи"</string>
|
||||
<string name="revanced_spoof_video_streams_user_dialog_message">Деактивирането на тази настройка ще доведе до проблеми с възпроизвеждането на видео.</string>
|
||||
<string name="revanced_spoof_video_streams_client_type_title">Клиент по подразбиране</string>
|
||||
<string name="revanced_spoof_video_streams_about_title">Фалшиви странични ефекти</string>
|
||||
<string name="revanced_spoof_video_streams_about_summary">"• Липсва менюто за аудио запис
|
||||
• Не е наличен стабилен звук
|
||||
• Принудително оригинално аудио не е налично"</string>
|
||||
<string name="revanced_spoof_video_streams_language_title">Език по подразбиране на аудио потока</string>
|
||||
<string name="revanced_spoof_video_streams_language_DEFAULT">Език на приложението</string>
|
||||
<string name="revanced_spoof_video_streams_language_AR">Арабски</string>
|
||||
<string name="revanced_spoof_video_streams_language_AZ">Азербайджански</string>
|
||||
<string name="revanced_spoof_video_streams_language_BG">Български</string>
|
||||
<string name="revanced_spoof_video_streams_language_BN">Бенгалски</string>
|
||||
<string name="revanced_spoof_video_streams_language_CA">Каталонски</string>
|
||||
<string name="revanced_spoof_video_streams_language_CS">Чешки</string>
|
||||
<string name="revanced_spoof_video_streams_language_DA">Датски</string>
|
||||
<string name="revanced_spoof_video_streams_language_DE">Немски</string>
|
||||
<string name="revanced_spoof_video_streams_language_EL">Гръцки</string>
|
||||
<string name="revanced_spoof_video_streams_language_EN">Английски</string>
|
||||
<string name="revanced_spoof_video_streams_language_ES">Испански</string>
|
||||
<string name="revanced_spoof_video_streams_language_ET">Естонски</string>
|
||||
<string name="revanced_spoof_video_streams_language_FA">Персийски</string>
|
||||
<string name="revanced_spoof_video_streams_language_FI">Финландски</string>
|
||||
<string name="revanced_spoof_video_streams_language_FR">Френски</string>
|
||||
<string name="revanced_spoof_video_streams_language_GU">Гуджарати</string>
|
||||
<string name="revanced_spoof_video_streams_language_HI">Хинди</string>
|
||||
<string name="revanced_spoof_video_streams_language_HR">Хърватски</string>
|
||||
<string name="revanced_spoof_video_streams_language_HU">Унгарски</string>
|
||||
<string name="revanced_spoof_video_streams_language_ID">Индонезийски</string>
|
||||
<string name="revanced_spoof_video_streams_language_IT">Италиански</string>
|
||||
<string name="revanced_spoof_video_streams_language_JA">Японски</string>
|
||||
<string name="revanced_spoof_video_streams_language_KK">Казахски</string>
|
||||
<string name="revanced_spoof_video_streams_language_KO">Корейски</string>
|
||||
<string name="revanced_spoof_video_streams_language_LT">Литовски</string>
|
||||
<string name="revanced_spoof_video_streams_language_LV">Латвийски</string>
|
||||
<string name="revanced_spoof_video_streams_language_MK">Македонски</string>
|
||||
<string name="revanced_spoof_video_streams_language_MN">Монголски</string>
|
||||
<string name="revanced_spoof_video_streams_language_MR">Маратхи</string>
|
||||
<string name="revanced_spoof_video_streams_language_MS">Малайски</string>
|
||||
<string name="revanced_spoof_video_streams_language_MY">Бирмански</string>
|
||||
<string name="revanced_spoof_video_streams_language_NL">Холандски</string>
|
||||
<string name="revanced_spoof_video_streams_language_OR">Ория</string>
|
||||
<string name="revanced_spoof_video_streams_language_PA">Пенджабски</string>
|
||||
<string name="revanced_spoof_video_streams_language_PL">Полски</string>
|
||||
<string name="revanced_spoof_video_streams_language_RO">Румънски</string>
|
||||
<string name="revanced_spoof_video_streams_language_RU">Руски</string>
|
||||
<string name="revanced_spoof_video_streams_language_SK">Словашки</string>
|
||||
<string name="revanced_spoof_video_streams_language_SL">Словенски</string>
|
||||
<string name="revanced_spoof_video_streams_language_SR">Сръбски</string>
|
||||
<string name="revanced_spoof_video_streams_language_SV">Шведски</string>
|
||||
<string name="revanced_spoof_video_streams_language_SW">Суахили</string>
|
||||
<string name="revanced_spoof_video_streams_language_TA">Тамилски</string>
|
||||
<string name="revanced_spoof_video_streams_language_TE">Телугу</string>
|
||||
<string name="revanced_spoof_video_streams_language_TH">Тайландски</string>
|
||||
<string name="revanced_spoof_video_streams_language_TR">Турски</string>
|
||||
<string name="revanced_spoof_video_streams_language_UK">Украински</string>
|
||||
<string name="revanced_spoof_video_streams_language_UR">Урду</string>
|
||||
<string name="revanced_spoof_video_streams_language_VI">Виетнамски</string>
|
||||
<string name="revanced_spoof_video_streams_language_ZH">Китайски</string>
|
||||
<!-- 'no auth' means no authentication -->
|
||||
<string name="revanced_spoof_video_streams_client_type_android_vr_no_auth">Android VR (bez avtorizaciq)</string>
|
||||
<string name="revanced_spoof_video_streams_ios_force_avc_title">Принудително използване на AVC (H.264) на iOS</string>
|
||||
<string name="revanced_spoof_video_streams_ios_force_avc_summary_on">Видео кодекът е принудително зададен на AVC (H.264)</string>
|
||||
<string name="revanced_spoof_video_streams_ios_force_avc_summary_off">Видео кодекът се определя автоматично</string>
|
||||
<string name="revanced_spoof_video_streams_ios_force_avc_user_dialog_message">"Включването на това може да подобри живота на батерията и да поправи заекването при възпроизвеждане.
|
||||
|
||||
AVC има максимална резолюция от 1080p, Opus аудио кодек не е наличен и възпроизвеждането на видео ще използва повече интернет данни от VP9 или AV1."</string>
|
||||
<string name="revanced_spoof_video_streams_about_ios_tv_title">Ефекти на измамата в iOS</string>
|
||||
<string name="revanced_spoof_video_streams_about_ios_tv_summary">"• Филми или платени видеоклипове може да не се възпроизвеждат
|
||||
• Стабилен звук не е наличен
|
||||
• Видеоклиповете завършват 1 секунда по-рано"</string>
|
||||
<string name="revanced_spoof_video_streams_about_android_title">Strani4ni efekti na fal6ivoto predstavqne na Android</string>
|
||||
<string name="revanced_spoof_video_streams_about_android_summary">"• Lipsva menju za audio pisti
|
||||
• Ne e nali4na stabilna glasnost
|
||||
• Ne e nali4na forsirana originalna audio pista"</string>
|
||||
<string name="revanced_spoof_video_streams_about_no_av1">• Без AV1 видео кодек</string>
|
||||
<string name="revanced_spoof_video_streams_about_kids_videos">• Детските видеоклипове може да не се възпроизвеждат, когато сте излезли от профила си или в режим \"инкогнито\"</string>
|
||||
<string name="revanced_spoof_streaming_data_stats_for_nerds_title">Poka6i v Statistiki za nerds</string>
|
||||
<string name="revanced_spoof_streaming_data_stats_for_nerds_summary_on">Tipът na klienta se poka6va v Statistiki za nerds</string>
|
||||
<string name="revanced_spoof_streaming_data_stats_for_nerds_summary_off">Klientът e skriт v Statistiki za nerds</string>
|
||||
<string name="revanced_spoof_video_streams_language_title">Ezik po подразбиране za audio potok v VR</string>
|
||||
</patch>
|
||||
</app>
|
||||
<app id="twitch">
|
||||
|
||||
@@ -33,7 +33,7 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_check_environment_not_near_patch_time_invalid">APK তৈরির তারিখ ত্রুটিপূর্ণ</string>
|
||||
</patch>
|
||||
<patch id="misc.settings.settingsResourcePatch">
|
||||
<string name="revanced_settings_title">ReVanced</string>
|
||||
<string name="revanced_settings_submenu_title">সেটিংস</string>
|
||||
<string name="revanced_settings_confirm_user_dialog_title">আপনি কি এগিয়ে যেতে ইচ্ছুক?</string>
|
||||
<string name="revanced_settings_reset">আবার সেট করুন</string>
|
||||
<string name="revanced_settings_restart_title">রিফ্রেশ করুন এবং আবার চালু করুন</string>
|
||||
@@ -43,6 +43,62 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_settings_import_reset">ReVanced সেটিং ডিফল্ট সেট করা হয়েছে</string>
|
||||
<string name="revanced_settings_import_success">%d সেটিং আমদানি হয়েছে</string>
|
||||
<string name="revanced_settings_import_failure_parse">আমদানি করা যায়নি: %s</string>
|
||||
<string name="revanced_language_title">ReVanced ভাষা</string>
|
||||
<string name="revanced_language_user_dialog_message">"কিছু ভাষার জন্য অনুবাদ অনুপস্থিত বা অসম্পূর্ণ হতে পারে।
|
||||
|
||||
নতুন ভাষা অনুবাদ করতে translate.revanced.app দেখুন"</string>
|
||||
<string name="revanced_language_DEFAULT">অ্যাপ্লিকেশনের ভাষা</string>
|
||||
<string name="revanced_language_AR">আরবি</string>
|
||||
<string name="revanced_language_AZ">আজারবাইজানি</string>
|
||||
<string name="revanced_language_BG">বুলগেরিয়ান</string>
|
||||
<string name="revanced_language_BN">বাংলা</string>
|
||||
<string name="revanced_language_CA">কাতালান</string>
|
||||
<string name="revanced_language_CS">চেক</string>
|
||||
<string name="revanced_language_DA">ড্যানিশ</string>
|
||||
<string name="revanced_language_DE">জার্মান</string>
|
||||
<string name="revanced_language_EL">গ্রিক</string>
|
||||
<string name="revanced_language_EN">ইংরেজি</string>
|
||||
<string name="revanced_language_ES">স্প্যানিশ</string>
|
||||
<string name="revanced_language_ET">এস্তোনিয়ান</string>
|
||||
<string name="revanced_language_FA">ফার্সি</string>
|
||||
<string name="revanced_language_FI">ফিনিশ</string>
|
||||
<string name="revanced_language_FR">ফরাসি</string>
|
||||
<string name="revanced_language_GU">গুজরাটি</string>
|
||||
<string name="revanced_language_HI">হিন্দি</string>
|
||||
<string name="revanced_language_HR">ক্রোয়েশীয়</string>
|
||||
<string name="revanced_language_HU">হাঙ্গেরিয়ান</string>
|
||||
<string name="revanced_language_ID">ইন্দোনেশিয়ান</string>
|
||||
<string name="revanced_language_IT">ইতালীয়</string>
|
||||
<string name="revanced_language_JA">জাপানি</string>
|
||||
<string name="revanced_language_KK">কাজাখ</string>
|
||||
<string name="revanced_language_KO">কোরিয়ান</string>
|
||||
<string name="revanced_language_LT">লিথুয়ানিয়ান</string>
|
||||
<string name="revanced_language_LV">লাতভিয়ান</string>
|
||||
<string name="revanced_language_MK">ম্যাসেডোনিয়ান</string>
|
||||
<string name="revanced_language_MN">মঙ্গোলীয়</string>
|
||||
<string name="revanced_language_MR">মারাঠি</string>
|
||||
<string name="revanced_language_MS">মালয়</string>
|
||||
<string name="revanced_language_MY">বর্মি</string>
|
||||
<string name="revanced_language_NL">ডাচ</string>
|
||||
<string name="revanced_language_OR">ওড়িয়া</string>
|
||||
<string name="revanced_language_PA">পাঞ্জাবি</string>
|
||||
<string name="revanced_language_PL">পোলিশ</string>
|
||||
<string name="revanced_language_PT">পর্তুগিজ</string>
|
||||
<string name="revanced_language_RO">রোমানীয়</string>
|
||||
<string name="revanced_language_RU">রুশ</string>
|
||||
<string name="revanced_language_SK">স্লোভাক</string>
|
||||
<string name="revanced_language_SL">স্লোভেন</string>
|
||||
<string name="revanced_language_SR">সার্বিয়ান</string>
|
||||
<string name="revanced_language_SV">সুইডিশ</string>
|
||||
<string name="revanced_language_SW">সোয়াহিলি</string>
|
||||
<string name="revanced_language_TA">তামিল</string>
|
||||
<string name="revanced_language_TE">তেলুগু</string>
|
||||
<string name="revanced_language_TH">থাই</string>
|
||||
<string name="revanced_language_TR">তুর্কি</string>
|
||||
<string name="revanced_language_UK">ইউক্রেনীয়</string>
|
||||
<string name="revanced_language_UR">উর্দু</string>
|
||||
<string name="revanced_language_VI">ভিয়েতনামী</string>
|
||||
<string name="revanced_language_ZH">চাইনিজ</string>
|
||||
<string name="revanced_pref_import_export_title">আমদানি এবং রপ্তানি</string>
|
||||
<string name="revanced_pref_import_export_summary">ReVanced সেটিং আমদানি বা রপ্তানি করুন</string>
|
||||
<!-- Settings about dialog. -->
|
||||
@@ -77,13 +133,15 @@ MicroG-এর জন্য ব্যাটারি অপ্টিমাইজ
|
||||
<string name="revanced_settings_screen_01_ads_title">বিজ্ঞাপন</string>
|
||||
<string name="revanced_settings_screen_02_alt_thumbnails_title">বিকল্প থাম্বনেইল</string>
|
||||
<string name="revanced_settings_screen_03_feed_title">ফিড</string>
|
||||
<string name="revanced_settings_screen_04_player_title">প্লেয়ার</string>
|
||||
<string name="revanced_settings_screen_05_general_title">সাধারণ লে-আউট</string>
|
||||
<string name="revanced_settings_screen_06_shorts_title">Shorts</string>
|
||||
<string name="revanced_settings_screen_04_general_title">সাধারণ</string>
|
||||
<string name="revanced_settings_screen_05_player_title">প্লেয়ার</string>
|
||||
<string name="revanced_settings_screen_07_seekbar_title">সিকবার</string>
|
||||
<string name="revanced_settings_screen_08_swipe_controls_title">সোয়াইপ কন্ট্রোল</string>
|
||||
<string name="revanced_settings_screen_11_misc_title">বিবিধ</string>
|
||||
<string name="revanced_settings_screen_12_video_title">ভিডিও</string>
|
||||
<string name="revanced_restore_old_settings_menus_title">পুরানো সেটিংস মেনু পুনরুদ্ধার করুন</string>
|
||||
<string name="revanced_restore_old_settings_menus_summary_on">পুরাতন সেটিংস মেনু দেখানো হচ্ছে</string>
|
||||
<string name="revanced_restore_old_settings_menus_summary_off">পুরাতন সেটিংস মেনু দেখানো হচ্ছে না</string>
|
||||
</patch>
|
||||
<patch id="misc.backgroundplayback.backgroundPlaybackPatch">
|
||||
<string name="revanced_shorts_disable_background_playback_title">Shorts ব্যাকগ্রাউন্ড প্লে অক্ষম করুন</string>
|
||||
@@ -110,9 +168,9 @@ MicroG-এর জন্য ব্যাটারি অপ্টিমাইজ
|
||||
আপনি কোনও অপ্রত্যাশিত ঘটনার বিষয়ে অবহিত হবেন না।"</string>
|
||||
</patch>
|
||||
<patch id="layout.hide.general.hideLayoutComponentsPatch">
|
||||
<string name="revanced_disable_like_subscribe_glow_title">পছন্দ / সদস্যতা বোতামের উজ্জ্বলতা নিষ্ক্রিয় করুন</string>
|
||||
<string name="revanced_disable_like_subscribe_glow_summary_on">পছন্দ এবং সদস্যতা বোতাম যখন উল্লেখ করা হবে উজ্জ্বলতা দিবে না</string>
|
||||
<string name="revanced_disable_like_subscribe_glow_summary_off">পছন্দ এবং সদস্যতা বোতাম যখন উল্লেখ করা হবে উজ্জ্বলতা দিবে</string>
|
||||
<string name="revanced_disable_like_subscribe_glow_title">সক্রিয়করন বোতাম গ্লো বন্ধ করুন</string>
|
||||
<string name="revanced_disable_like_subscribe_glow_summary_on">উল্লেখ করলে সক্রিয়করন এবং সাবস্ক্রাইব বোতাম উজ্জ্বল হবে না</string>
|
||||
<string name="revanced_disable_like_subscribe_glow_summary_off">উল্লেখ করলে সক্রিয়করন এবং সাবস্ক্রাইব বোতাম উজ্জ্বল হবে</string>
|
||||
<string name="revanced_hide_album_cards_title">অ্যালবাম কার্ড লুকান</string>
|
||||
<string name="revanced_hide_album_cards_summary_on">অ্যালবাম কার্ড লুকিয়ে রয়েছে</string>
|
||||
<string name="revanced_hide_album_cards_summary_off">অ্যালবাম কার্ড প্রদর্শিত হয়েছে</string>
|
||||
@@ -165,9 +223,9 @@ MicroG-এর জন্য ব্যাটারি অপ্টিমাইজ
|
||||
<string name="revanced_hide_chips_shelf_title">চিপ শেলপ লুকান</string>
|
||||
<string name="revanced_hide_chips_shelf_summary_on">চিপ শেলপ লুকিয়ে রয়েছে</string>
|
||||
<string name="revanced_hide_chips_shelf_summary_off">চিপ শেলপ প্রদর্শিত হয়েছে</string>
|
||||
<string name="revanced_hide_expandable_chip_title">ভিডিওর নিচের সম্প্রসারণযোগ্য চিপস লুকান</string>
|
||||
<string name="revanced_hide_expandable_chip_summary_on">সম্প্রসারণযোগ্য চিপস লুকিয়ে রয়েছে</string>
|
||||
<string name="revanced_hide_expandable_chip_summary_off">সম্প্রসারণযোগ্য চিপস প্রদর্শিত হয়েছে</string>
|
||||
<string name="revanced_hide_expandable_chip_title">ভিডিওর নীচে সম্প্রসারণযোগ্য কার্ড লুকান</string>
|
||||
<string name="revanced_hide_expandable_chip_summary_on">সম্প্রসারণযোগ্য কার্ডগুলি লুকানো আছে</string>
|
||||
<string name="revanced_hide_expandable_chip_summary_off">সম্প্রসারণযোগ্য কার্ডগুলি প্রদর্শিত হচ্ছে</string>
|
||||
<string name="revanced_hide_community_posts_title">সম্প্রদায় পোস্ট লুকান</string>
|
||||
<string name="revanced_hide_community_posts_summary_on">সম্প্রদায় পোস্ট লুকিয়ে রয়েছে</string>
|
||||
<string name="revanced_hide_community_posts_summary_off">সম্প্রদায় পোস্ট প্রদর্শিত হয়েছে</string>
|
||||
@@ -228,6 +286,9 @@ MicroG-এর জন্য ব্যাটারি অপ্টিমাইজ
|
||||
<string name="revanced_hide_chapters_section_title">চ্যাপ্টার বিভাগ লুকান</string>
|
||||
<string name="revanced_hide_chapters_section_summary_on">চ্যাপ্টার বিভাগ লুকিয়ে রয়েছে</string>
|
||||
<string name="revanced_hide_chapters_section_summary_off">চ্যাপ্টার বিভাগ প্রদর্শিত হয়েছে</string>
|
||||
<string name="revanced_hide_how_this_was_made_section_title">\'এই কীভাবে তৈরি হল কনটেন্ট\' সেকশনটি লুকান</string>
|
||||
<string name="revanced_hide_how_this_was_made_section_summary_on">\'এই কীভাবে তৈরি হল কনটেন্ট\' সেকশনটি লুকানো আছে</string>
|
||||
<string name="revanced_hide_how_this_was_made_section_summary_off">\'এই কীভাবে তৈরি হল কনটেন্ট\' সেকশনটি প্রদর্শিত হচ্ছে</string>
|
||||
<string name="revanced_hide_podcast_section_title">‘পডকাস্ট বিভাগ লুকান’</string>
|
||||
<string name="revanced_hide_podcast_section_summary_on">‘পডকাস্ট বিভাগ’ লুকানো আছে</string>
|
||||
<string name="revanced_hide_podcast_section_summary_off">‘পডকাস্ট বিভাগ’ প্রদর্শিত হয়েছে</string>
|
||||
@@ -270,7 +331,7 @@ MicroG-এর জন্য ব্যাটারি অপ্টিমাইজ
|
||||
<string name="revanced_hide_comments_preview_comment_title">মন্তব্যের পূর্বরূপ লুকান</string>
|
||||
<string name="revanced_hide_comments_preview_comment_summary_on">মন্তব্যের পূর্বরূপ লুকিয়ে রয়েছে</string>
|
||||
<string name="revanced_hide_comments_preview_comment_summary_off">মন্তব্যের পূর্বরূপ প্রদর্শিত হয়েছে</string>
|
||||
<string name="revanced_hide_comments_thanks_button_title">ধন্যবাদ বোতাম লুকান</string>
|
||||
<string name="revanced_hide_comments_thanks_button_title">ধন্যবাদ বাটন লুকান</string>
|
||||
<string name="revanced_hide_comments_thanks_button_summary_on">ধন্যবাদ বোতাম লুকিয়ে রয়েছে</string>
|
||||
<string name="revanced_hide_comments_thanks_button_summary_off">ধন্যবাদ বোতাম প্রদর্শিত হয়েছে</string>
|
||||
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_title">টাইমস্ট্যাম্প ও ইমোজি বোতাম লুকান</string>
|
||||
@@ -297,12 +358,12 @@ MicroG-এর জন্য ব্যাটারি অপ্টিমাইজ
|
||||
<string name="revanced_hide_keyword_content_home_title">কীওয়ার্ড ব্যবহার করে প্রধান পাতার ভিডিও লুকান</string>
|
||||
<string name="revanced_hide_keyword_content_home_summary_on">প্রধান পাতার ভিডিও কীওয়ার্ড দ্বারা ফিল্টার করা হয়েছে</string>
|
||||
<string name="revanced_hide_keyword_content_home_summary_off">প্রধান পাতার ভিডিও কীওয়ার্ড দ্বারা ফিল্টার করা হয়নি</string>
|
||||
<string name="revanced_hide_keyword_content_subscriptions_title">কীওয়ার্ড ব্যবহার করে সাবস্ক্রিপশন ভিডিও লুকান</string>
|
||||
<string name="revanced_hide_keyword_content_subscriptions_summary_on">সাবস্ক্রিপশন পাতার ভিডিও কীওয়ার্ড দ্বারা ফিল্টার করা হয়েছে</string>
|
||||
<string name="revanced_hide_keyword_content_subscriptions_summary_off">সাবস্ক্রিপশন পাতার ভিডিও কীওয়ার্ড দ্বারা ফিল্টার করা হয়নি</string>
|
||||
<string name="revanced_hide_keyword_content_search_title">কীওয়ার্ড ব্যবহার করে অনুসন্ধান ফলাফল লুকান</string>
|
||||
<string name="revanced_hide_keyword_content_search_summary_on">অনুসন্ধান ফলাফল কীওয়ার্ড দ্বারা ফিল্টার করা হয়েছে</string>
|
||||
<string name="revanced_hide_keyword_content_search_summary_off">অনুসন্ধান ফলাফল কীওয়ার্ড দ্বারা ফিল্টার করা হয়নি</string>
|
||||
<string name="revanced_hide_keyword_content_subscriptions_title">কীওয়ার্ড ব্যবহার করে সাবস্ক্রিপশন ভিডিও লুকান</string>
|
||||
<string name="revanced_hide_keyword_content_subscriptions_summary_on">সাবস্ক্রিপশন পাতার ভিডিও কীওয়ার্ড দ্বারা ফিল্টার করা হয়েছে</string>
|
||||
<string name="revanced_hide_keyword_content_subscriptions_summary_off">সাবস্ক্রিপশন পাতার ভিডিও কীওয়ার্ড দ্বারা ফিল্টার করা হয়নি</string>
|
||||
<string name="revanced_hide_keyword_content_phrases_title">লুকানোর জন্য কীওয়ার্ড</string>
|
||||
<!-- For localization it is preferred, but not required, if 'LeBlanc' is replaced with a localized name or a familiar word that has upper case letters in the middle of the word.
|
||||
This is because keywords can be in any language, and showing an example in the localized script helps convey this. -->
|
||||
@@ -349,6 +410,9 @@ MicroG-এর জন্য ব্যাটারি অপ্টিমাইজ
|
||||
<string name="revanced_hide_products_banner_title">প্রোডাক্ট দেখার ব্যানার লুকান</string>
|
||||
<string name="revanced_hide_products_banner_summary_on">ব্যানার লুকিয়ে রয়েছে</string>
|
||||
<string name="revanced_hide_products_banner_summary_off">ব্যানার প্রদর্শিত হয়েছে</string>
|
||||
<string name="revanced_hide_end_screen_store_banner_title">শেষ পর্দার স্টোর ব্যানার লুকান</string>
|
||||
<string name="revanced_hide_end_screen_store_banner_summary_on">স্টোর ব্যানারটি লুকানো আছে</string>
|
||||
<string name="revanced_hide_end_screen_store_banner_summary_off">স্টোর ব্যানারটি প্রদর্শন করা হবে</string>
|
||||
<string name="revanced_hide_player_store_shelf_title">প্লেয়ার শপিং শেলফ লুকান</string>
|
||||
<string name="revanced_hide_player_store_shelf_summary_on">শপিং শেলফ লুকানো আছে</string>
|
||||
<string name="revanced_hide_player_store_shelf_summary_off">শপিং শেলফ দেখানো হচ্ছে</string>
|
||||
@@ -401,7 +465,7 @@ MicroG-এর জন্য ব্যাটারি অপ্টিমাইজ
|
||||
<string name="revanced_external_downloader_summary_on">প্লেয়ারে ডাউনলোড বোতাম প্রদর্শিত হয়েছে</string>
|
||||
<string name="revanced_external_downloader_summary_off">প্লেয়ারে ডাউনলোড বোতাম প্রদর্শিত হয়নি</string>
|
||||
<!-- 'download action button' should be translated using the same wording as the translation of 'revanced_hide_download_button_title' -->
|
||||
<string name="revanced_external_downloader_action_button_title">ডাউনলোড অ্যাকশন বোতাম ওভাররাইড করুন</string>
|
||||
<string name="revanced_external_downloader_action_button_title">ডাউনলোড অ্যাকশন বোতামটি ওভাররাইড করুন</string>
|
||||
<string name="revanced_external_downloader_action_button_summary_on">ডাউনলোড বোতামটি আপনার বাহিরের ডাউনলোডার খুলবে</string>
|
||||
<string name="revanced_external_downloader_action_button_summary_off">ডাউনলোড বোতামটি নেটিভ ইন-অ্যাপ ডাউনলোডার খুলবে</string>
|
||||
<string name="revanced_external_downloader_name_title">ডাউনলোডারের প্যাকেজ নাম</string>
|
||||
@@ -446,6 +510,9 @@ MicroG-এর জন্য ব্যাটারি অপ্টিমাইজ
|
||||
<string name="revanced_swipe_overlay_background_alpha_summary">সোয়াইপ ওভারলে ব্যাকগ্রাউন্ডের দৃশ্যমানতা</string>
|
||||
<string name="revanced_swipe_threshold_title">সোয়াইপ থ্রেশহোল্ড এর মাত্রা</string>
|
||||
<string name="revanced_swipe_threshold_summary">সোয়াইপ করার থ্রেশহোল্ডের পরিমাণ</string>
|
||||
<string name="revanced_swipe_change_video_title">ভিডিও পরিবর্তন করতে সোয়াইপ করে সক্ষম করুন</string>
|
||||
<string name="revanced_swipe_change_video_summary_on">ফুলস্ক্রিন মোডে সোয়াইপ করলে পরবর্তী/পূর্ববর্তী ভিডিওতে পরিবর্তন হবে</string>
|
||||
<string name="revanced_swipe_change_video_summary_off">ফুলস্ক্রিন মোডে সোয়াইপ করলে পরবর্তী /পূর্ববর্তী ভিডিওতে পরিবর্তন হবে না</string>
|
||||
</patch>
|
||||
<patch id="layout.autocaptions.autoCaptionsPatch">
|
||||
<string name="revanced_auto_captions_title">স্বয়ংক্রিয় ক্যাপশন বন্ধ করুন</string>
|
||||
@@ -585,14 +652,14 @@ MicroG-এর জন্য ব্যাটারি অপ্টিমাইজ
|
||||
<string name="revanced_hide_player_previous_next_buttons_title">পূর্ববর্তী লুকান & পরবর্তী ভিডিও বোতাম</string>
|
||||
<string name="revanced_hide_player_previous_next_buttons_summary_on">বোতাম লুকানো হয়</string>
|
||||
<string name="revanced_hide_player_previous_next_buttons_summary_off">বোতাম দেখানো হয়</string>
|
||||
<string name="revanced_hide_cast_button_title">কাস্ট বাটন লুকান</string>
|
||||
<string name="revanced_hide_cast_button_title">কাস্ট বোতামটি লুকান</string>
|
||||
<string name="revanced_hide_cast_button_summary_on">কাস্ট বাটন লুকিয়ে রয়েছে</string>
|
||||
<string name="revanced_hide_cast_button_summary_off">কাস্ট বাটন প্রদর্শিত হয়েছে</string>
|
||||
<!-- This button does not display any text, but 'captions' should be translated using the same wording used as the translation of 'revanced_hide_player_flyout_captions_title' -->
|
||||
<string name="revanced_hide_captions_button_title">ক্যাপশন বোতাম লুকান</string>
|
||||
<string name="revanced_hide_captions_button_title">ক্যাপশন বোতামটি লুকান</string>
|
||||
<string name="revanced_hide_captions_button_summary_on">ক্যাপশন বোতাম লুকানো আছে</string>
|
||||
<string name="revanced_hide_captions_button_summary_off">ক্যাপশন বোতাম দেখানো হচ্ছে</string>
|
||||
<string name="revanced_hide_autoplay_button_title">autoplay বোতাম লুকান</string>
|
||||
<string name="revanced_hide_autoplay_button_title">অটোপ্লে বোতামটি লুকান</string>
|
||||
<string name="revanced_hide_autoplay_button_summary_on">autoplay বোতাম লুকানো আছে</string>
|
||||
<string name="revanced_hide_autoplay_button_summary_off">autoplay বোতাম দেখানো হচ্ছে</string>
|
||||
</patch>
|
||||
@@ -602,7 +669,7 @@ MicroG-এর জন্য ব্যাটারি অপ্টিমাইজ
|
||||
<string name="revanced_hide_endscreen_cards_summary_off">শেষ স্ক্রীন কার্ড প্রদর্শিত হয়েছে</string>
|
||||
</patch>
|
||||
<patch id="layout.hide.fullscreenambientmode.disableFullscreenAmbientModePatch">
|
||||
<string name="revanced_disable_fullscreen_ambient_mode_title">পূর্ণ স্ক্রীনে অ্যাম্বিয়েন্ট মোড নিষ্ক্রিয় করুন</string>
|
||||
<string name="revanced_disable_fullscreen_ambient_mode_title">ফুলস্ক্রিনে অ্যাম্বিয়েন্ট মোডটি অক্ষম করুন</string>
|
||||
<string name="revanced_disable_fullscreen_ambient_mode_summary_on">অ্যাম্বিয়েন্ট মোড নিষ্ক্রিয় করা হয়েছে</string>
|
||||
<string name="revanced_disable_fullscreen_ambient_mode_summary_off">অ্যাম্বিয়েন্ট মোড সক্রিয় করা হয়েছে</string>
|
||||
</patch>
|
||||
@@ -629,48 +696,51 @@ MicroG-এর জন্য ব্যাটারি অপ্টিমাইজ
|
||||
<string name="revanced_shorts_player_screen_summary">Shorts প্লেয়ারে উপাদান লুকানো বা দেখানো</string>
|
||||
<!-- 'home' should be translated using the same localized wording YouTube displays for the home tab. -->
|
||||
<string name="revanced_hide_shorts_home_title">প্রধান ফিডে Shorts লুকান</string>
|
||||
<string name="revanced_hide_shorts_home_summary_on">প্রধান ফিডে Shorts লুকিয়ে রয়েছে</string>
|
||||
<string name="revanced_hide_shorts_home_summary_off">প্রধান ফিডে Shorts প্রদর্শিত হয়েছে</string>
|
||||
<string name="revanced_hide_shorts_home_summary_on">বাড়ির ফিড এবং সম্পর্কিত ভিডিওতে লুকানো হয়েছে</string>
|
||||
<string name="revanced_hide_shorts_home_summary_off">বাড়ির ফিড এবং সম্পর্কিত ভিডিওতে দেখানো হয়েছে</string>
|
||||
<!-- 'subscription' should be translated using the same localized wording YouTube displays for the subscription tab. -->
|
||||
<string name="revanced_hide_shorts_subscriptions_title">সদস্যতা ফিডে Shorts লুকান</string>
|
||||
<string name="revanced_hide_shorts_subscriptions_summary_on">সদস্যতা ফিডে Shorts লুকিয়ে রয়েছে</string>
|
||||
<string name="revanced_hide_shorts_subscriptions_summary_off">সদস্যতা ফিডে Shorts প্রদর্শিত হয়েছে</string>
|
||||
<string name="revanced_hide_shorts_subscriptions_summary_on">সাবস্ক্রিপশন ফিডে লুকানো আছে</string>
|
||||
<string name="revanced_hide_shorts_subscriptions_summary_off">সাবস্ক্রিপশন ফিডে দেখানো হয়েছে</string>
|
||||
<string name="revanced_hide_shorts_search_title">অনুসন্ধান ফলাফলে Shorts লুকান</string>
|
||||
<string name="revanced_hide_shorts_search_summary_on">অনুসন্ধান ফলাফলে Shorts লুকিয়ে রয়েছে</string>
|
||||
<string name="revanced_hide_shorts_search_summary_off">অনুসন্ধান ফলাফলে Shorts প্রদর্শিত হয়েছে</string>
|
||||
<string name="revanced_hide_shorts_search_summary_on">অনুসন্ধান ফলাফলে লুকানো</string>
|
||||
<string name="revanced_hide_shorts_search_summary_off">সার্চ রেজাল্টে দেখানো হয়েছে</string>
|
||||
<string name="revanced_hide_shorts_history_title">Shortsগুলিকে ওয়াচ ইতিহাসে লুকান</string>
|
||||
<string name="revanced_hide_shorts_history_summary_on">ওয়াচ হিস্ট্রিতে লুকানো</string>
|
||||
<string name="revanced_hide_shorts_history_summary_off">ওয়াচ ইতিহাসে দেখানো</string>
|
||||
<!-- 'join' should be translated using the same localized wording YouTube displays for the button. -->
|
||||
<string name="revanced_hide_shorts_join_button_title">জয়েন করুন বোতাম লুকান</string>
|
||||
<string name="revanced_hide_shorts_join_button_title">সামিল হও বোতামটি লুকান</string>
|
||||
<string name="revanced_hide_shorts_join_button_summary_on">জয়েন করুন বোতাম লুকিয়ে রয়েছে</string>
|
||||
<string name="revanced_hide_shorts_join_button_summary_off">জয়েন করুন বোতাম প্রদর্শিত হয়েছে</string>
|
||||
<!-- 'subscribe' should be translated using the same localized wording YouTube displays for the button. -->
|
||||
<string name="revanced_hide_shorts_subscribe_button_title">সদস্যতা নিন বোতাম লুকান</string>
|
||||
<string name="revanced_hide_shorts_subscribe_button_title">সাবস্ক্রাইব বোতামটি লুকান</string>
|
||||
<string name="revanced_hide_shorts_subscribe_button_summary_on">সদস্যতা নিন বোতাম লুকিয়ে রয়েছে</string>
|
||||
<string name="revanced_hide_shorts_subscribe_button_summary_off">সদস্যতা নিন বোতাম প্রদর্শিত হয়েছে</string>
|
||||
<string name="revanced_hide_shorts_paused_overlay_buttons_title">থেমে থাকা ওভারলে বোতাম লুকান</string>
|
||||
<string name="revanced_hide_shorts_paused_overlay_buttons_summary_on">থেমে থাকা ওভারলে বোতাম লুকিয়ে রয়েছে</string>
|
||||
<string name="revanced_hide_shorts_paused_overlay_buttons_summary_off">থেমে থাকা ওভারলে বোতাম প্রদর্শিত হয়েছে</string>
|
||||
<string name="revanced_hide_shorts_shop_button_title">কেনাকাটা বাটন লুকান</string>
|
||||
<string name="revanced_hide_shorts_shop_button_title">শপ বোতামটি লুকান</string>
|
||||
<string name="revanced_hide_shorts_shop_button_summary_on">কেনাকাটা বোতাম লুকিয়ে রয়েছে</string>
|
||||
<string name="revanced_hide_shorts_shop_button_summary_off">কেনাকাটা বোতাম প্রদর্শিত হয়েছে</string>
|
||||
<string name="revanced_hide_shorts_super_thanks_button_title">সুপার ধন্যবাদ বোতাম লুকান</string>
|
||||
<string name="revanced_hide_shorts_super_thanks_button_summary_on">সুপার ধন্যবাদ বোতাম লুকিয়ে রয়েছে</string>
|
||||
<string name="revanced_hide_shorts_super_thanks_button_summary_off">সুপার ধন্যবাদ বোতাম প্রদর্শিত হয়েছে</string>
|
||||
<string name="revanced_hide_shorts_super_thanks_button_title">সুপার থ্যাঙ্কস বোতামটি লুকান</string>
|
||||
<string name="revanced_hide_shorts_super_thanks_button_summary_on">বোতামটি লুকানো আছে</string>
|
||||
<string name="revanced_hide_shorts_super_thanks_button_summary_off">সুপার থ্যাঙ্কস বোতামটি প্রদর্শিত হচ্ছে</string>
|
||||
<string name="revanced_hide_shorts_tagged_products_title">ট্যাগ করা প্রোডাক্টগুলি লুকান</string>
|
||||
<string name="revanced_hide_shorts_tagged_products_summary_on">ট্যাগ করা প্রোডাক্টগুলি লুকিয়ে রয়েছে</string>
|
||||
<string name="revanced_hide_shorts_tagged_products_summary_off">ট্যাগ করা প্রোডাক্টগুলি প্রদর্শিত হয়েছে</string>
|
||||
<string name="revanced_hide_shorts_location_label_title">অবস্থান লেবেল লুকান</string>
|
||||
<string name="revanced_hide_shorts_location_label_summary_on">অবস্থান লেবেল লুকিয়ে রয়েছে</string>
|
||||
<string name="revanced_hide_shorts_location_label_summary_off">অবস্থান লেবেল প্রদর্শিত হয়েছে</string>
|
||||
<string name="revanced_hide_shorts_save_sound_button_title">সঙ্গীত সেভ করুন বোতাম লুকান</string>
|
||||
<string name="revanced_hide_shorts_save_sound_button_title">সেভ মিউজিক বোতামটি লুকান</string>
|
||||
<string name="revanced_hide_shorts_save_sound_button_summary_on">Save music বোতাম লুকানো আছে</string>
|
||||
<string name="revanced_hide_shorts_save_sound_button_summary_off">Save music বোতাম দেখানো হচ্ছে</string>
|
||||
<string name="revanced_hide_shorts_use_template_button_title">Use template বোতাম লুকান</string>
|
||||
<string name="revanced_hide_shorts_use_template_button_title">টেমপ্লেট ব্যবহার করুন বোতামটি লুকান</string>
|
||||
<string name="revanced_hide_shorts_use_template_button_summary_on">Use template বোতাম লুকানো আছে</string>
|
||||
<string name="revanced_hide_shorts_use_template_button_summary_off">Use template বোতাম দেখানো হচ্ছে</string>
|
||||
<string name="revanced_hide_shorts_upcoming_button_title">Upcoming বোতাম লুকান</string>
|
||||
<string name="revanced_hide_shorts_upcoming_button_title">আসন্ন বোতামটি লুকান</string>
|
||||
<string name="revanced_hide_shorts_upcoming_button_summary_on">আগামী বোতাম লুকানো আছে</string>
|
||||
<string name="revanced_hide_shorts_upcoming_button_summary_off">আগামী বোতাম দেখানো হচ্ছে</string>
|
||||
<string name="revanced_hide_shorts_green_screen_button_title">সবুজ পর্দা বোতাম লুকান</string>
|
||||
<string name="revanced_hide_shorts_green_screen_button_title">গ্রিন স্ক্রিন বোতামটি লুকান</string>
|
||||
<string name="revanced_hide_shorts_green_screen_button_summary_on">সবুজ পর্দা বোতাম লুকানো আছে</string>
|
||||
<string name="revanced_hide_shorts_green_screen_button_summary_off">সবুজ পর্দা বোতাম দেখানো হচ্ছে</string>
|
||||
<string name="revanced_hide_shorts_hashtag_button_title">হ্যাশট্যাগ বোতাম লুকান</string>
|
||||
@@ -682,24 +752,24 @@ MicroG-এর জন্য ব্যাটারি অপ্টিমাইজ
|
||||
<string name="revanced_hide_shorts_stickers_title">স্টিকার লুকান</string>
|
||||
<string name="revanced_hide_shorts_stickers_summary_on">স্টিকার লুকিয়ে রয়েছে</string>
|
||||
<string name="revanced_hide_shorts_stickers_summary_off">স্টিকার প্রদর্শিত হয়েছে</string>
|
||||
<string name="revanced_hide_shorts_like_fountain_title">পছন্দ বোতাম ঝর্ণা লুকান</string>
|
||||
<string name="revanced_hide_shorts_like_fountain_title">লাইক বোতাম ফাউন্টেন অ্যানিমেশনটি লুকান</string>
|
||||
<string name="revanced_hide_shorts_like_fountain_summary_on">পছন্দ বোতাম ঝর্ণা অ্যানিমেশন লুকিয়ে রয়েছে</string>
|
||||
<string name="revanced_hide_shorts_like_fountain_summary_off">পছন্দ বোতাম ঝর্ণা অ্যানিমেশন প্রদর্শিত হয়েছে</string>
|
||||
<string name="revanced_hide_shorts_like_button_title">পছন্দ বোতাম লুকান</string>
|
||||
<string name="revanced_hide_shorts_like_button_title">লাইক বোতামটি লুকান</string>
|
||||
<string name="revanced_hide_shorts_like_button_summary_on">পছন্দ বোতাম লুকিয়ে রয়েছে</string>
|
||||
<string name="revanced_hide_shorts_like_button_summary_off">পছন্দ বোতাম প্রদর্শিত হয়েছে</string>
|
||||
<string name="revanced_hide_shorts_dislike_button_title">অপছন্দ বোতাম লুকান</string>
|
||||
<string name="revanced_hide_shorts_dislike_button_title">ডিসলাইক বোতামটি লুকান</string>
|
||||
<string name="revanced_hide_shorts_dislike_button_summary_on">অপছন্দ বোতাম লুকিয়ে রয়েছে</string>
|
||||
<string name="revanced_hide_shorts_dislike_button_summary_off">অপছন্দ বোতাম প্রদর্শিত হয়েছে</string>
|
||||
<string name="revanced_hide_shorts_comments_button_title">মন্তব্য বোতাম লুকান</string>
|
||||
<string name="revanced_hide_shorts_comments_button_title">কমেন্টস বোতামটি লুকান</string>
|
||||
<string name="revanced_hide_shorts_comments_button_summary_on">মন্তব্য বোতাম লুকিয়ে রয়েছে</string>
|
||||
<string name="revanced_hide_shorts_comments_button_summary_off">মন্তব্য বোতাম প্রদর্শিত হয়েছে</string>
|
||||
<!-- 'remix' should be translated using the same localized wording YouTube displays for the button. -->
|
||||
<string name="revanced_hide_shorts_remix_button_title">রিমিক্স করুন বোতাম লুকান</string>
|
||||
<string name="revanced_hide_shorts_remix_button_title">রিমিক্স বোতামটি লুকান</string>
|
||||
<string name="revanced_hide_shorts_remix_button_summary_on">রিমিক্স করুন বোতাম লুকিয়ে রয়েছে</string>
|
||||
<string name="revanced_hide_shorts_remix_button_summary_off">রিমিক্স করুন বোতাম প্রদর্শিত হয়েছে</string>
|
||||
<!-- 'share' should be translated using the same localized wording YouTube displays for the button. -->
|
||||
<string name="revanced_hide_shorts_share_button_title">শেয়ার করুন বোতাম লুকান</string>
|
||||
<string name="revanced_hide_shorts_share_button_title">শেয়ার বোতামটি লুকান</string>
|
||||
<string name="revanced_hide_shorts_share_button_summary_on">শেয়ার করুন বোতাম লুকিয়ে রয়েছে</string>
|
||||
<string name="revanced_hide_shorts_share_button_summary_off">শেয়ার করুন বোতাম প্রদর্শিত হয়েছে</string>
|
||||
<string name="revanced_hide_shorts_info_panel_title">তথ্য প্যানেল লুকান</string>
|
||||
@@ -739,6 +809,13 @@ MicroG-এর জন্য ব্যাটারি অপ্টিমাইজ
|
||||
<string name="revanced_hide_player_popup_panels_summary_on">প্লেয়ার পপআপ প্যানেলগুলো লুকিয়ে রয়েছে</string>
|
||||
<string name="revanced_hide_player_popup_panels_summary_off">প্লেয়ার পপআপ প্যানেলগুলো প্রদর্শিত হয়েছে</string>
|
||||
</patch>
|
||||
<patch id="layout.player.fullscreen.exitFullscreenPatch">
|
||||
<string name="revanced_exit_fullscreen_title">ভিডিও শেষ হওয়ার সময় পূর্ণ পর্দা মোড থেকে বেরিয়ে যান</string>
|
||||
<string name="revanced_exit_fullscreen_entry_1">নিষ্ক্রিয়</string>
|
||||
<string name="revanced_exit_fullscreen_entry_2">আনুভূমিক</string>
|
||||
<string name="revanced_exit_fullscreen_entry_3">ল্যান্ডস্কেপ</string>
|
||||
<string name="revanced_exit_fullscreen_entry_4">আনুভূমিক এবং ল্যান্ডস্কেপ</string>
|
||||
</patch>
|
||||
<patch id="layout.player.fullscreen.openVideosFullscreen">
|
||||
<string name="revanced_open_videos_fullscreen_portrait_title">পূর্ণ পর্দায় ভিডিও খুলুন</string>
|
||||
<string name="revanced_open_videos_fullscreen_portrait_summary_on">ভিডিও পূর্ণ পর্দায় খুলবে</string>
|
||||
@@ -769,7 +846,7 @@ MicroG-এর জন্য ব্যাটারি অপ্টিমাইজ
|
||||
<string name="revanced_ryd_dislike_percentage_summary_on">অপছন্দগুলো শতাংশ অনুযায়ী প্রদর্শিত হয়েছে</string>
|
||||
<string name="revanced_ryd_dislike_percentage_summary_off">অপছন্দগুলো সংখ্যা অনুযায়ী প্রদর্শিত হয়েছে</string>
|
||||
<!-- Translations should use language similar to 'revanced_sb_enable_compact_skip_button' -->
|
||||
<string name="revanced_ryd_compact_layout_title">সংক্ষিপ্ত পছন্দ বোতাম</string>
|
||||
<string name="revanced_ryd_compact_layout_title">কম্প্যাক্ট লাইক বোতাম</string>
|
||||
<string name="revanced_ryd_compact_layout_summary_on">পছন্দ বোতামটি ন্যূনতম প্রস্থের জন্য সাজানো হয়েছে</string>
|
||||
<string name="revanced_ryd_compact_layout_summary_off">পছন্দ বোতামটি সেরা চেহারার জন্য সাজানো হয়েছে</string>
|
||||
<string name="revanced_ryd_toast_on_connection_error_title">API উপলভ্য না থাকলে একটি টোস্ট দেখান</string>
|
||||
@@ -817,7 +894,7 @@ MicroG-এর জন্য ব্যাটারি অপ্টিমাইজ
|
||||
</patch>
|
||||
<patch id="layout.sponsorblock.sponsorBlockResourcePatch">
|
||||
<string name="revanced_sb_enable_sb">SponsorBlock সক্রিয় করুন</string>
|
||||
<string name="revanced_sb_enable_sb_sum">SponsorBlock হল ইউটিউব ভিডিওতে বিরক্তিকর অংশ গুলো এড়িয়ে যাওয়ার জন্য একটি ক্রাউড-সোর্স পদ্ধতি</string>
|
||||
<string name="revanced_sb_enable_sb_sum">SponsorBlock হল YouTube ভিডিওর বিরক্তিকর অংশগুলি স্কিপ করার জন্য একটি ক্রাউডসোর্সড সিস্টেম</string>
|
||||
<string name="revanced_sb_appearance_category">রূপ</string>
|
||||
<string name="revanced_sb_enable_voting">ভোটিং বাটন দেখান</string>
|
||||
<string name="revanced_sb_enable_voting_sum_on">সেগমেন্ট ভোটিং বাটন প্রদর্শিত রয়েছে</string>
|
||||
@@ -881,7 +958,7 @@ MicroG-এর জন্য ব্যাটারি অপ্টিমাইজ
|
||||
<string name="revanced_sb_segments_sponsor">স্পন্সর</string>
|
||||
<string name="revanced_sb_segments_sponsor_sum">পেইড প্রমোশন, পেইড রেফারেল এবং সরাসরি বিজ্ঞাপন। নিজের পছন্দসই কারণ/স্রষ্টা/ওয়েবসাইট/পণ্যগুলিতে স্ব-প্রচার বা বিনামূল্যে প্রচারের জন্য নয়।</string>
|
||||
<string name="revanced_sb_segments_selfpromo">বিনা অর্থপ্রাপ্ত/স্ব-প্রচার</string>
|
||||
<string name="revanced_sb_segments_selfpromo_sum">\'স্পন্সর\' এর মতো কিন্তু বিনা বেতন বা স্ব-প্রচার ব্যতীত। এর মধ্যে পণ্যদ্রব্য, অনুদান, বা কার সাথে সহযোগিতা করেছে সে সম্পর্কে তথ্য অন্তর্ভুক্ত রয়েছে</string>
|
||||
<string name="revanced_sb_segments_selfpromo_sum">অর্থপ্রদান না করা বা নিজের প্রচার ছাড়া স্পনসরের মতো। পণ্য, অনুদান বা তারা কার সাথে সহযোগিতা করেছে সে সম্পর্কিত বিভাগ অন্তর্ভুক্ত করে</string>
|
||||
<string name="revanced_sb_segments_interaction">কথোপথন অনুস্মারক (সাবস্ক্রাইব)</string>
|
||||
<string name="revanced_sb_segments_interaction_sum">যখন সামগ্রীর মাঝখানে তাদেরকে লাইক, সাবস্ক্রাইব বা ফলো করার জন্য একটি সংক্ষিপ্ত অনুস্মারক থাকে। যদি এটি দীর্ঘ বা নির্দিষ্ট কিছু সম্পর্কে হয় তবে পরিবর্তে এটি স্ব -প্রচারের অধীনে থাকা উচিত</string>
|
||||
<string name="revanced_sb_segments_highlight">লক্ষণীয় করা</string>
|
||||
@@ -1007,6 +1084,23 @@ MicroG-এর জন্য ব্যাটারি অপ্টিমাইজ
|
||||
<string name="revanced_sb_reset">পুনরায় সেট করুন</string>
|
||||
<string name="revanced_sb_about">সম্পর্কিত</string>
|
||||
<string name="revanced_sb_about_api_sum">ডেটা SponsorBlock API দ্বারা সরবরাহ করা হয়। আরও জানতে এবং অন্যান্য প্ল্যাটফর্মের ডাউনলোড দেখতে এখানে ট্যাপ করুন</string>
|
||||
</patch>
|
||||
<patch id="layout.formfactor.changeFormFactorPatch">
|
||||
<string name="revanced_change_form_factor_title">লেআউট ফর্ম ফ্যাক্টর</string>
|
||||
<string name="revanced_change_form_factor_entry_1">ডিফল্ট</string>
|
||||
<string name="revanced_change_form_factor_entry_2">ফোন</string>
|
||||
<string name="revanced_change_form_factor_entry_3">ট্যাবলেট</string>
|
||||
<string name="revanced_change_form_factor_entry_4">স্বয়ংচালিত</string>
|
||||
<string name="revanced_change_form_factor_user_dialog_message">"পরিবর্তনগুলো হল:
|
||||
|
||||
ট্যাবলেট লেআউট
|
||||
• কমিউনিটি পোস্ট গোপন
|
||||
|
||||
স্বয়ংচালিত লেআউট
|
||||
• ঘড়ির ইতিহাস মেনু গোপন
|
||||
• এক্সপ্লোর ট্যাব পুনরুদ্ধার করা হয়েছে
|
||||
• শর্টস নিয়মিত প্লেয়ারে খোলে
|
||||
• ফিড বিষয় এবং চ্যানেল দ্বারা সংগঠিত হয়"</string>
|
||||
</patch>
|
||||
<patch id="layout.spoofappversion.spoofAppVersionPatch">
|
||||
<string name="revanced_spoof_app_version_title">অ্যাপ সংস্করণ স্পুফ করুন</string>
|
||||
@@ -1021,6 +1115,7 @@ MicroG-এর জন্য ব্যাটারি অপ্টিমাইজ
|
||||
This is because the 'General layout' menu uses alphabetic sorting, and it functionally works better if the spoof target selector appears below the 'Spoof app version' UI switch -->
|
||||
<string name="revanced_spoof_app_version_target_title">স্পুফ অ্যাপ সংস্করণ লক্ষ্য</string>
|
||||
<string name="revanced_spoof_app_version_target_entry_1">19.35.36 - পুরনো Shorts প্লেয়ার আইকন পুনরুদ্ধার করুন</string>
|
||||
<string name="revanced_spoof_app_version_target_entry_2">19.26.42 - পুরোনো নেভিগেশন এবং টুলবার আইকন পুনরুদ্ধার করুন</string>
|
||||
<!-- 'RYD' is 'Return YouTube Dislike' -->
|
||||
<string name="revanced_spoof_app_version_target_legacy_entry_1">18.33.40 - ছদ্মবেশি মোডে RYD পুনরুদ্ধার করে</string>
|
||||
<string name="revanced_spoof_app_version_target_legacy_entry_2">18.20.39 - প্রশ্বস্ত ভিডিও স্পিড এবং গুণমান মেনু পুনরুদ্ধার করে</string>
|
||||
@@ -1064,12 +1159,6 @@ MicroG-এর জন্য ব্যাটারি অপ্টিমাইজ
|
||||
<string name="revanced_shorts_autoplay_background_summary_on">পটভূমিতে Shorts অটোপ্লে হবে</string>
|
||||
<string name="revanced_shorts_autoplay_background_summary_off">পটভূমিতে Shorts পুনরাবৃত্তি হবে</string>
|
||||
</patch>
|
||||
<patch id="layout.tablet.enableTabletLayoutPatch">
|
||||
<string name="revanced_tablet_layout_title">ট্যাবলেট লেআউট সক্রিয় করুন</string>
|
||||
<string name="revanced_tablet_layout_summary_on">ট্যাবলেট লেআউট সক্রিয় হয়েছে</string>
|
||||
<string name="revanced_tablet_layout_summary_off">ট্যাবলেট লেআউট নিষ্ক্রিয় হয়েছে</string>
|
||||
<string name="revanced_tablet_layout_user_dialog_message">ট্যাবলেট লেআউটে কমিউনিটি পোস্ট দেখাবে না</string>
|
||||
</patch>
|
||||
<patch id="layout.miniplayer.miniplayerPatch">
|
||||
<string name="revanced_miniplayer_screen_title">মিনিপ্লেয়ার</string>
|
||||
<string name="revanced_miniplayer_screen_summary">অ্যাপের মধ্যকার মিনিমাইজড প্লেয়ার এর ধরণ পরিবর্তন করুন</string>
|
||||
@@ -1130,8 +1219,10 @@ Miniplayer স্ক্রিন থেকে বামে বা ডানে
|
||||
<string name="revanced_seekbar_custom_color_title">সিকবারে নিজস্ব রং সক্রিয় করুন</string>
|
||||
<string name="revanced_seekbar_custom_color_summary_on">সিকবারে নিজস্ব রং প্রদর্শিত হয়েছে</string>
|
||||
<string name="revanced_seekbar_custom_color_summary_off">সিকবারে মূল রং প্রদর্শিত হয়েছে</string>
|
||||
<string name="revanced_seekbar_custom_color_value_title">নিজস্ব সিকবার রং</string>
|
||||
<string name="revanced_seekbar_custom_color_value_summary">সিকবারের রং</string>
|
||||
<string name="revanced_seekbar_custom_color_primary_title">সিলেক্ট কাস্টম সিকবার কালার</string>
|
||||
<string name="revanced_seekbar_custom_color_primary_summary">সিকবারের রঙ</string>
|
||||
<string name="revanced_seekbar_custom_color_accent_title">সিলেক্ট কাস্টম সিকবার এক্সেন্ট কালার</string>
|
||||
<string name="revanced_seekbar_custom_color_accent_summary">সিকবারের এক্সেন্ট রঙ</string>
|
||||
<string name="revanced_seekbar_custom_color_invalid">অবৈধ সিকবার রঙ মান</string>
|
||||
</patch>
|
||||
<patch id="layout.thumbnails.bypassImageRegionRestrictionsPatch">
|
||||
@@ -1154,7 +1245,6 @@ Miniplayer স্ক্রিন থেকে বামে বা ডানে
|
||||
<string name="revanced_alt_thumbnail_options_entry_2">DeArrow এবং মূল থাম্বনেইল</string>
|
||||
<string name="revanced_alt_thumbnail_options_entry_3">DeArrow এবং স্থির ছবি</string>
|
||||
<string name="revanced_alt_thumbnail_options_entry_4">স্থির ছবি</string>
|
||||
<string name="revanced_alt_thumbnail_dearrow_about_title">DeArrow</string>
|
||||
<string name="revanced_alt_thumbnail_dearrow_about_summary">"DeArrow YouTube ভিডিওগুলির জন্য জনগণের উৎস থেকে তৈরি থাম্বনেইল সরবরাহ করে। এই থাম্বনেইলগুলি প্রায়শই YouTube দ্বারা সরবরাহ করা থাম্বনেইলগুলির চেয়ে আরও প্রাসঙ্গিক।
|
||||
|
||||
যদি সক্রিয় করা হয়, তাহলে ভিডিও URLগুলি API সার্ভারে পাঠানো হবে এবং অন্য কোনও ডেটা পাঠানো হবে না। যদি কোনও ভিডিওতে DeArrow থাম্বনেইল না থাকে, তাহলে মূল বা স্থির ক্যাপচার দেখানো হবে
|
||||
@@ -1234,6 +1324,7 @@ DeArrow সম্পর্কে আরও জানতে এখানে ট
|
||||
<string name="revanced_force_original_audio_title">মূল অডিও বলপূর্বক চালু করুন</string>
|
||||
<string name="revanced_force_original_audio_summary_on">মূল অডিও ব্যবহার করছে</string>
|
||||
<string name="revanced_force_original_audio_summary_off">ডিফল্ট অডিও ব্যবহার করছে</string>
|
||||
<string name="revanced_force_original_audio_not_available">এই বৈশিষ্ট্যটি ব্যবহার করার জন্য, iOS ক্লায়েন্ট প্রকারে স্ট্রিম স্পুফিং পরিবর্তন করুন</string>
|
||||
</patch>
|
||||
<patch id="video.quality.rememberVideoQualityPatch">
|
||||
<!-- Translations should use the same text as revanced_custom_playback_speeds_auto -->
|
||||
@@ -1261,6 +1352,8 @@ DeArrow সম্পর্কে আরও জানতে এখানে ট
|
||||
<string name="revanced_custom_playback_speeds_invalid">কাস্টম গতি %s এর চেয়ে কম হতে হবে</string>
|
||||
<string name="revanced_custom_playback_speeds_parse_exception">অবৈধ কাস্টম প্লেব্যাক গতি</string>
|
||||
<string name="revanced_custom_playback_speeds_auto">স্বতস্ফূর্তভাবে</string>
|
||||
<string name="revanced_speed_tap_and_hold_title">কাস্টম ট্যাপ এন্ড হোল্ড স্পিড</string>
|
||||
<string name="revanced_speed_tap_and_hold_summary">০-৮ এর মধ্যে প্লেব্যাক স্পিড</string>
|
||||
</patch>
|
||||
<patch id="video.speed.remember.rememberPlaybackSpeedPatch">
|
||||
<string name="revanced_remember_playback_speed_last_selected_title">প্লেব্যাকের স্পিড পরিবর্তন মনে রাখুন</string>
|
||||
@@ -1269,6 +1362,11 @@ DeArrow সম্পর্কে আরও জানতে এখানে ট
|
||||
<string name="revanced_playback_speed_default_title">প্লেব্যাকের মূল স্পিড</string>
|
||||
<string name="revanced_remember_playback_speed_toast">মূল স্পিড পরিবর্তন হচ্ছে: %s</string>
|
||||
</patch>
|
||||
<patch id="video.hdr.disableHdrPatch">
|
||||
<string name="revanced_disable_hdr_video_title">HDR ভিডিও নিষ্ক্রিয় করুন</string>
|
||||
<string name="revanced_disable_hdr_video_summary_on">HDR ভিডিও নিষ্ক্রিয় করা হয়েছে</string>
|
||||
<string name="revanced_disable_hdr_video_summary_off">HDR ভিডিও সক্রিয় হয়েছে</string>
|
||||
</patch>
|
||||
<patch id="video.videoqualitymenu.restoreOldVideoQualityMenuResourcePatch">
|
||||
<string name="revanced_restore_old_video_quality_menu_title">পুরোনো ভিডিও গুণমান উদ্ধার করুন</string>
|
||||
<string name="revanced_restore_old_video_quality_menu_summary_on">পুরোনো ভিডিও গুণমান মেনু প্রদর্শিত হয়েছে</string>
|
||||
@@ -1289,62 +1387,28 @@ DeArrow সম্পর্কে আরও জানতে এখানে ট
|
||||
ভিডিও প্লেব্যাক কাজ নাও করতে পারে"</string>
|
||||
<string name="revanced_spoof_video_streams_user_dialog_message">এই সেটিংটি বন্ধ করার ফলে ভিডিও প্লেব্যাক ত্রুটি হতে পারে।</string>
|
||||
<string name="revanced_spoof_video_streams_client_type_title">ডিফল্ট ক্লায়েন্ট</string>
|
||||
<string name="revanced_spoof_video_streams_about_title">স্পুফিং এর পার্শ্বপ্রতিক্রিয়া</string>
|
||||
<string name="revanced_spoof_video_streams_about_summary">"• অডিও ট্র্যাক মেনু অনুপস্থিত
|
||||
• স্থিতিশীল ভলিউম উপলব্ধ নয়
|
||||
• জোর করে মূল অডিও উপলব্ধ নয়৷"</string>
|
||||
<string name="revanced_spoof_video_streams_language_title">ডিফল্ট অডিও স্ট্রিম ভাষা</string>
|
||||
<string name="revanced_spoof_video_streams_language_DEFAULT">অ্যাপ ভাষা</string>
|
||||
<string name="revanced_spoof_video_streams_language_AR">আরবি</string>
|
||||
<string name="revanced_spoof_video_streams_language_AZ">আজারবাইজানি</string>
|
||||
<string name="revanced_spoof_video_streams_language_BG">বুলগেরিয়ান</string>
|
||||
<string name="revanced_spoof_video_streams_language_BN">বাংলা</string>
|
||||
<string name="revanced_spoof_video_streams_language_CA">কাতালান</string>
|
||||
<string name="revanced_spoof_video_streams_language_CS">চেক</string>
|
||||
<string name="revanced_spoof_video_streams_language_DA">ডেনিশ</string>
|
||||
<string name="revanced_spoof_video_streams_language_DE">জার্মান</string>
|
||||
<string name="revanced_spoof_video_streams_language_EL">গ্রীক</string>
|
||||
<string name="revanced_spoof_video_streams_language_EN">ইংরেজি</string>
|
||||
<string name="revanced_spoof_video_streams_language_ES">স্প্যানিশ</string>
|
||||
<string name="revanced_spoof_video_streams_language_ET">এস্তোনিয়ান</string>
|
||||
<string name="revanced_spoof_video_streams_language_FA">ফার্সি</string>
|
||||
<string name="revanced_spoof_video_streams_language_FI">ফিনল্যান্ড</string>
|
||||
<string name="revanced_spoof_video_streams_language_FR">ফরাসি</string>
|
||||
<string name="revanced_spoof_video_streams_language_GU">গুজরাটি</string>
|
||||
<string name="revanced_spoof_video_streams_language_HI">হিন্দি</string>
|
||||
<string name="revanced_spoof_video_streams_language_HR">ক্রোয়েশিয়ান</string>
|
||||
<string name="revanced_spoof_video_streams_language_HU">হাঙ্গেরিয়ান</string>
|
||||
<string name="revanced_spoof_video_streams_language_ID">ইন্দোনেশিয়ান</string>
|
||||
<string name="revanced_spoof_video_streams_language_IT">ইতালীয়</string>
|
||||
<string name="revanced_spoof_video_streams_language_JA">জাপানি</string>
|
||||
<string name="revanced_spoof_video_streams_language_KK">কাজাখ</string>
|
||||
<string name="revanced_spoof_video_streams_language_KO">কোরিয়ান</string>
|
||||
<string name="revanced_spoof_video_streams_language_LT">লিথুয়ানিয়ান</string>
|
||||
<string name="revanced_spoof_video_streams_language_LV">লাতভিয়ান</string>
|
||||
<string name="revanced_spoof_video_streams_language_MK">ম্যাসেডোনিয়ান</string>
|
||||
<string name="revanced_spoof_video_streams_language_MN">মঙ্গোলিয়ান</string>
|
||||
<string name="revanced_spoof_video_streams_language_MR">মারাঠি</string>
|
||||
<string name="revanced_spoof_video_streams_language_MS">মালয়</string>
|
||||
<string name="revanced_spoof_video_streams_language_MY">বার্মিজ</string>
|
||||
<string name="revanced_spoof_video_streams_language_NL">ডাচ</string>
|
||||
<string name="revanced_spoof_video_streams_language_OR">ওড়িয়া</string>
|
||||
<string name="revanced_spoof_video_streams_language_PA">পঞ্জাবি</string>
|
||||
<string name="revanced_spoof_video_streams_language_PL">পোলিশ</string>
|
||||
<string name="revanced_spoof_video_streams_language_RO">রোমানীয়</string>
|
||||
<string name="revanced_spoof_video_streams_language_RU">রাশিয়ান</string>
|
||||
<string name="revanced_spoof_video_streams_language_SK">স্লোভাক</string>
|
||||
<string name="revanced_spoof_video_streams_language_SL">স্লোভেনিয়ান</string>
|
||||
<string name="revanced_spoof_video_streams_language_SR">সার্বিয়ান</string>
|
||||
<string name="revanced_spoof_video_streams_language_SV">সুইডিশ</string>
|
||||
<string name="revanced_spoof_video_streams_language_SW">সোয়াহিলি</string>
|
||||
<string name="revanced_spoof_video_streams_language_TA">তামিল</string>
|
||||
<string name="revanced_spoof_video_streams_language_TE">তেলুগু</string>
|
||||
<string name="revanced_spoof_video_streams_language_TH">থাই</string>
|
||||
<string name="revanced_spoof_video_streams_language_TR">তুর্কি</string>
|
||||
<string name="revanced_spoof_video_streams_language_UK">ইউক্রেনীয়</string>
|
||||
<string name="revanced_spoof_video_streams_language_UR">উর্দু</string>
|
||||
<string name="revanced_spoof_video_streams_language_VI">ভিয়েতনামি</string>
|
||||
<string name="revanced_spoof_video_streams_language_ZH">চীনা</string>
|
||||
<!-- 'no auth' means no authentication -->
|
||||
<string name="revanced_spoof_video_streams_client_type_android_vr_no_auth">Android VR (স্বীকৃতি ছাড়া)</string>
|
||||
<string name="revanced_spoof_video_streams_ios_force_avc_title">iOS AVC (H.264) বাধ্যতামূলক করুন</string>
|
||||
<string name="revanced_spoof_video_streams_ios_force_avc_summary_on">ভিডিও কোডেক AVC (H.264) এ বাধ্যতামূলক করা হয়েছে</string>
|
||||
<string name="revanced_spoof_video_streams_ios_force_avc_summary_off">ভিডিও কোডেক স্বয়ংক্রিয়ভাবে নির্ধারিত হয়</string>
|
||||
<string name="revanced_spoof_video_streams_ios_force_avc_user_dialog_message">"এটি সক্ষম করলে ব্যাটারি লাইফ উন্নত হতে পারে এবং প্লেব্যাক স্টাটারিং সমস্যা সমাধান হতে পারে।
|
||||
|
||||
AVC-এর সর্বোচ্চ রেজোলিউশন হল 1080p, Opus অডিও কোডেক পাওয়া যায় না এবং VP9 বা AV1-এর তুলনায় ভিডিও প্লেব্যাকে বেশি ইন্টারনেট ডেটা ব্যবহার করা হবে。"</string>
|
||||
<string name="revanced_spoof_video_streams_about_ios_tv_title">আইওএস স্পুফিংয়ের পার্শ্ব প্রতিক্রিয়া</string>
|
||||
<string name="revanced_spoof_video_streams_about_ios_tv_summary">"• মুভি বা অর্থ প্রদানের ভিডিও চালু নাও হতে পারে
|
||||
• স্থির ভলিউম পাওয়া যায় না
|
||||
• ভিডিওগুলি 1 সেকেন্ড আগে শেষ হয়ে যায়"</string>
|
||||
<string name="revanced_spoof_video_streams_about_android_title">Android স্পুফিংয়ের পার্শ্বপ্রতিক্রিয়া</string>
|
||||
<string name="revanced_spoof_video_streams_about_android_summary">"• অডিও ট্র্যাক মেনু নেই
|
||||
• স্থির ভলিউম পাওয়া যায় না
|
||||
• মূল অডিও জোর করে চালু করা যায় না"</string>
|
||||
<string name="revanced_spoof_video_streams_about_no_av1">• কোনো AV1 ভিডিও কোডেক নেই</string>
|
||||
<string name="revanced_spoof_video_streams_about_kids_videos">• Kids videos may not play when logged out or in incognito mode</string>
|
||||
<string name="revanced_spoof_streaming_data_stats_for_nerds_title">স্ট্যাটস ফর নার্ডসে দেখান</string>
|
||||
<string name="revanced_spoof_streaming_data_stats_for_nerds_summary_on">স্ট্যাটস ফর নার্ডসে ক্লায়েন্ট প্রকার দেখানো হবে</string>
|
||||
<string name="revanced_spoof_streaming_data_stats_for_nerds_summary_off">স্ট্যাটস ফর নার্ডসে ক্লায়েন্ট লুকানো হবে</string>
|
||||
<string name="revanced_spoof_video_streams_language_title">VR ডিফল্ট অডিও স্ট্রিম ভাষা</string>
|
||||
</patch>
|
||||
</app>
|
||||
<app id="twitch">
|
||||
|
||||
@@ -136,6 +136,8 @@ Second \"item\" text"</string>
|
||||
</patch>
|
||||
<patch id="layout.panels.popup.playerPopupPanelsPatch">
|
||||
</patch>
|
||||
<patch id="layout.player.fullscreen.exitFullscreenPatch">
|
||||
</patch>
|
||||
<patch id="layout.player.fullscreen.openVideosFullscreen">
|
||||
</patch>
|
||||
<patch id="layout.player.overlay.customPlayerOverlayOpacityResourcePatch">
|
||||
@@ -155,6 +157,8 @@ Second \"item\" text"</string>
|
||||
<!-- Toast shown if network connection times out. Translations of this should not be longer than the original English or the text can be clipped and not entirely shown. -->
|
||||
<!-- Shown in the settings preferences, and translations can be any text length. -->
|
||||
</patch>
|
||||
<patch id="layout.formfactor.changeFormFactorPatch">
|
||||
</patch>
|
||||
<patch id="layout.spoofappversion.spoofAppVersionPatch">
|
||||
<!-- It is ideal, but not required, if the text here appears is alphabetically after the text used for 'revanced_spoof_app_version_title'.
|
||||
This is because the 'General layout' menu uses alphabetic sorting, and it functionally works better if the spoof target selector appears below the 'Spoof app version' UI switch -->
|
||||
@@ -168,8 +172,6 @@ Second \"item\" text"</string>
|
||||
</patch>
|
||||
<patch id="layout.shortsautoplay.shortsAutoplayPatch">
|
||||
</patch>
|
||||
<patch id="layout.tablet.enableTabletLayoutPatch">
|
||||
</patch>
|
||||
<patch id="layout.miniplayer.miniplayerPatch">
|
||||
</patch>
|
||||
<patch id="layout.theme.themePatch">
|
||||
@@ -213,11 +215,14 @@ Second \"item\" text"</string>
|
||||
</patch>
|
||||
<patch id="video.speed.remember.rememberPlaybackSpeedPatch">
|
||||
</patch>
|
||||
<patch id="video.hdr.disableHdrPatch">
|
||||
</patch>
|
||||
<patch id="video.videoqualitymenu.restoreOldVideoQualityMenuResourcePatch">
|
||||
</patch>
|
||||
<patch id="interaction.seekbar.enableSlideToSeekPatch">
|
||||
</patch>
|
||||
<patch id="misc.fix.playback.spoofVideoStreamsPatch">
|
||||
<!-- 'no auth' means no authentication -->
|
||||
</patch>
|
||||
</app>
|
||||
<app id="twitch">
|
||||
|
||||
@@ -33,7 +33,7 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_check_environment_not_near_patch_time_invalid">La data de creació de l\'APK està corrupta</string>
|
||||
</patch>
|
||||
<patch id="misc.settings.settingsResourcePatch">
|
||||
<string name="revanced_settings_title">ReVanced</string>
|
||||
<string name="revanced_settings_submenu_title">Configuració</string>
|
||||
<string name="revanced_settings_confirm_user_dialog_title">Vols continuar?</string>
|
||||
<string name="revanced_settings_reset">Restablir</string>
|
||||
<string name="revanced_settings_restart_title">Actualitza i reinicia</string>
|
||||
@@ -43,6 +43,62 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_settings_import_reset">La configuració de ReVanced s\'ha restablert als valors predeterminats</string>
|
||||
<string name="revanced_settings_import_success">S\'han importat %d configuracions</string>
|
||||
<string name="revanced_settings_import_failure_parse">No s\'ha pogut importar: %s</string>
|
||||
<string name="revanced_language_title">Llenguatge de ReVanced</string>
|
||||
<string name="revanced_language_user_dialog_message">"Les traduccions per a algunes llengües poden faltar o ser incompletes.
|
||||
|
||||
Per traduir nous idiomes, visiteu translate.revanced.app"</string>
|
||||
<string name="revanced_language_DEFAULT">Llengua de l\'aplicació</string>
|
||||
<string name="revanced_language_AR">Àrab</string>
|
||||
<string name="revanced_language_AZ">Azerbaidjanès</string>
|
||||
<string name="revanced_language_BG">Búlgaro</string>
|
||||
<string name="revanced_language_BN">Bengalí</string>
|
||||
<string name="revanced_language_CA">Català</string>
|
||||
<string name="revanced_language_CS">Txec</string>
|
||||
<string name="revanced_language_DA">Danès</string>
|
||||
<string name="revanced_language_DE">Alemany</string>
|
||||
<string name="revanced_language_EL">Grec</string>
|
||||
<string name="revanced_language_EN">Anglès</string>
|
||||
<string name="revanced_language_ES">Espanyol</string>
|
||||
<string name="revanced_language_ET">Estonià</string>
|
||||
<string name="revanced_language_FA">Persa</string>
|
||||
<string name="revanced_language_FI">Finès</string>
|
||||
<string name="revanced_language_FR">Francès</string>
|
||||
<string name="revanced_language_GU">Gujarati</string>
|
||||
<string name="revanced_language_HI">Hindi</string>
|
||||
<string name="revanced_language_HR">Croat</string>
|
||||
<string name="revanced_language_HU">Hongarès</string>
|
||||
<string name="revanced_language_ID">Indonesi</string>
|
||||
<string name="revanced_language_IT">Italià</string>
|
||||
<string name="revanced_language_JA">Japonès</string>
|
||||
<string name="revanced_language_KK">Kazakhstanès</string>
|
||||
<string name="revanced_language_KO">Coreà</string>
|
||||
<string name="revanced_language_LT">Lituà</string>
|
||||
<string name="revanced_language_LV">Letó</string>
|
||||
<string name="revanced_language_MK">Macedoni</string>
|
||||
<string name="revanced_language_MN">Mongol</string>
|
||||
<string name="revanced_language_MR">Marathi</string>
|
||||
<string name="revanced_language_MS">Malai</string>
|
||||
<string name="revanced_language_MY">Birmà</string>
|
||||
<string name="revanced_language_NL">Neerlandès</string>
|
||||
<string name="revanced_language_OR">Odia</string>
|
||||
<string name="revanced_language_PA">Panjabi</string>
|
||||
<string name="revanced_language_PL">Polonès</string>
|
||||
<string name="revanced_language_PT">Portuguès</string>
|
||||
<string name="revanced_language_RO">Romanès</string>
|
||||
<string name="revanced_language_RU">Rus</string>
|
||||
<string name="revanced_language_SK">Eslovac</string>
|
||||
<string name="revanced_language_SL">Eslovè</string>
|
||||
<string name="revanced_language_SR">Serbi</string>
|
||||
<string name="revanced_language_SV">Suec</string>
|
||||
<string name="revanced_language_SW">Suahili</string>
|
||||
<string name="revanced_language_TA">Tàmil</string>
|
||||
<string name="revanced_language_TE">Telugu</string>
|
||||
<string name="revanced_language_TH">Tailandès</string>
|
||||
<string name="revanced_language_TR">Turc</string>
|
||||
<string name="revanced_language_UK">Ucraïnès</string>
|
||||
<string name="revanced_language_UR">Urdu</string>
|
||||
<string name="revanced_language_VI">Vietnamita</string>
|
||||
<string name="revanced_language_ZH">Xinès</string>
|
||||
<string name="revanced_pref_import_export_title">Importa / Exporta</string>
|
||||
<string name="revanced_pref_import_export_summary">Importa / Exporta els ajustos de ReVanced</string>
|
||||
<!-- Settings about dialog. -->
|
||||
@@ -77,13 +133,15 @@ Toca el botó Continua i permet els canvis d'optimització."</string>
|
||||
<string name="revanced_settings_screen_01_ads_title">Anuncis</string>
|
||||
<string name="revanced_settings_screen_02_alt_thumbnails_title">Miniatures alternatives</string>
|
||||
<string name="revanced_settings_screen_03_feed_title">Canal</string>
|
||||
<string name="revanced_settings_screen_04_player_title">Reproductor</string>
|
||||
<string name="revanced_settings_screen_05_general_title">Disposició general</string>
|
||||
<string name="revanced_settings_screen_06_shorts_title">Shorts</string>
|
||||
<string name="revanced_settings_screen_04_general_title">General</string>
|
||||
<string name="revanced_settings_screen_05_player_title">Reproductor</string>
|
||||
<string name="revanced_settings_screen_07_seekbar_title">Barra de cerca</string>
|
||||
<string name="revanced_settings_screen_08_swipe_controls_title">Controls de gestos</string>
|
||||
<string name="revanced_settings_screen_11_misc_title">Misc</string>
|
||||
<string name="revanced_settings_screen_11_misc_title">Altres</string>
|
||||
<string name="revanced_settings_screen_12_video_title">Vídeo</string>
|
||||
<string name="revanced_restore_old_settings_menus_title">Restaurar els menús de configuració antics</string>
|
||||
<string name="revanced_restore_old_settings_menus_summary_on">Es mostren els menús de configuració antics</string>
|
||||
<string name="revanced_restore_old_settings_menus_summary_off">No es mostren els menús de configuració antics</string>
|
||||
</patch>
|
||||
<patch id="misc.backgroundplayback.backgroundPlaybackPatch">
|
||||
<string name="revanced_shorts_disable_background_playback_title">Desactivar la reproducció en segon pla de Shorts</string>
|
||||
@@ -110,9 +168,9 @@ Toca el botó Continua i permet els canvis d'optimització."</string>
|
||||
No se t'informarà de cap esdeveniment inesperat."</string>
|
||||
</patch>
|
||||
<patch id="layout.hide.general.hideLayoutComponentsPatch">
|
||||
<string name="revanced_disable_like_subscribe_glow_title">Desactiva la resplandor del botó \'m\'agrada\' / \'subscriu-te\'</string>
|
||||
<string name="revanced_disable_like_subscribe_glow_summary_on">El botó \'M\'agrada\' i \'Subscriu-te\' no brillarà quan s\'esmenti</string>
|
||||
<string name="revanced_disable_like_subscribe_glow_summary_off">El botó \'M\'agrada\' i \'Subscriu-te\' brillarà quan s\'esmenti</string>
|
||||
<string name="revanced_disable_like_subscribe_glow_title">Desactiva l\'efecte brillant dels botons M\'agrada i Subscriu-te</string>
|
||||
<string name="revanced_disable_like_subscribe_glow_summary_on">Els botons M\'agrada i Subscriu-te no brillaran quan es mencionin</string>
|
||||
<string name="revanced_disable_like_subscribe_glow_summary_off">Els botons M\'agrada i Subscriu-te brillaran quan es mencionin</string>
|
||||
<string name="revanced_hide_album_cards_title">Amagar les targetes d\'àlbums</string>
|
||||
<string name="revanced_hide_album_cards_summary_on">Les targetes d\'àlbums estan amagades</string>
|
||||
<string name="revanced_hide_album_cards_summary_off">Es mostren les targetes d\'àlbum</string>
|
||||
@@ -165,9 +223,9 @@ No se t'informarà de cap esdeveniment inesperat."</string>
|
||||
<string name="revanced_hide_chips_shelf_title">Oculta prestatge de xip</string>
|
||||
<string name="revanced_hide_chips_shelf_summary_on">El prestatge de xip està amagat</string>
|
||||
<string name="revanced_hide_chips_shelf_summary_off">El prestatge de xip es mostra</string>
|
||||
<string name="revanced_hide_expandable_chip_title">Amaga l\'estella expandible sota els vídeos</string>
|
||||
<string name="revanced_hide_expandable_chip_summary_on">Les estelles expandibles s\'amaguen</string>
|
||||
<string name="revanced_hide_expandable_chip_summary_off">Les estelles expandibles es mostren</string>
|
||||
<string name="revanced_hide_expandable_chip_title">Amaga la targeta desplegable sota els vídeos</string>
|
||||
<string name="revanced_hide_expandable_chip_summary_on">Les targetes desplegables estan amagades</string>
|
||||
<string name="revanced_hide_expandable_chip_summary_off">Les targetes desplegables es mostren</string>
|
||||
<string name="revanced_hide_community_posts_title">Amaga les publicacions de la comunitat</string>
|
||||
<string name="revanced_hide_community_posts_summary_on">Comunitatnya ezkutatzen dira</string>
|
||||
<string name="revanced_hide_community_posts_summary_off">Comunitateak erakusten dira</string>
|
||||
@@ -228,6 +286,9 @@ No se t'informarà de cap esdeveniment inesperat."</string>
|
||||
<string name="revanced_hide_chapters_section_title">Amaga la secció de capítols</string>
|
||||
<string name="revanced_hide_chapters_section_summary_on">La secció de capítols està amagada</string>
|
||||
<string name="revanced_hide_chapters_section_summary_off">La secció de capítols es mostra</string>
|
||||
<string name="revanced_hide_how_this_was_made_section_title">Amaga la secció \'Com s\'ha fet aquest contingut\'</string>
|
||||
<string name="revanced_hide_how_this_was_made_section_summary_on">La secció \'Com s\'ha fet aquest contingut\' està amagada</string>
|
||||
<string name="revanced_hide_how_this_was_made_section_summary_off">La secció \'Com s\'ha fet aquest contingut\' es mostra</string>
|
||||
<string name="revanced_hide_podcast_section_title">Amaga la secció \"Explora el podcast\"</string>
|
||||
<string name="revanced_hide_podcast_section_summary_on">\'Explorar el podcast\' section is hidden</string>
|
||||
<string name="revanced_hide_podcast_section_summary_off">\'Explorar el podcast\' section is shown</string>
|
||||
@@ -270,7 +331,7 @@ No se t'informarà de cap esdeveniment inesperat."</string>
|
||||
<string name="revanced_hide_comments_preview_comment_title">Amaga la vista prèvia del comentari</string>
|
||||
<string name="revanced_hide_comments_preview_comment_summary_on">La vista prèvia del comentari s\'amaga</string>
|
||||
<string name="revanced_hide_comments_preview_comment_summary_off">La vista prèvia del comentari es mostra</string>
|
||||
<string name="revanced_hide_comments_thanks_button_title">Amaga el botó Gràcies</string>
|
||||
<string name="revanced_hide_comments_thanks_button_title">Amaga el botó de Gràcies</string>
|
||||
<string name="revanced_hide_comments_thanks_button_summary_on">El botó Gràcies s\'amaga</string>
|
||||
<string name="revanced_hide_comments_thanks_button_summary_off">El botó Gràcies es mostra</string>
|
||||
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_title">Amaga els botons d\'emojis i marca de temps</string>
|
||||
@@ -297,12 +358,12 @@ Si actualment es mostra un Doodle a la teva regió i aquesta configuració d'ama
|
||||
<string name="revanced_hide_keyword_content_home_title">Oculta vídeos de la pàgina inicial</string>
|
||||
<string name="revanced_hide_keyword_content_home_summary_on">Els vídeos a la pàgina d\'inici es filtren en funció de les paraules clau</string>
|
||||
<string name="revanced_hide_keyword_content_home_summary_off">Els vídeos a la pestanya d\'inici no es filtren per paraules clau</string>
|
||||
<string name="revanced_hide_keyword_content_subscriptions_title">Amaga els vídeos de subscriptor per paraules clau</string>
|
||||
<string name="revanced_hide_keyword_content_subscriptions_summary_on">Els vídeos a la pestanya de subscripcions es filtren per paraules clau</string>
|
||||
<string name="revanced_hide_keyword_content_subscriptions_summary_off">Els vídeos a la pestanya de subscriptors no es filtren per paraules clau</string>
|
||||
<string name="revanced_hide_keyword_content_search_title">Amaga els resultats de la cerca per paraules clau</string>
|
||||
<string name="revanced_hide_keyword_content_search_summary_on">Els resultats de la cerca es filtren per paraules clau</string>
|
||||
<string name="revanced_hide_keyword_content_search_summary_off">Els resultats de la cerca no es filtren per paraules clau</string>
|
||||
<string name="revanced_hide_keyword_content_subscriptions_title">Amaga els vídeos de subscriptor per paraules clau</string>
|
||||
<string name="revanced_hide_keyword_content_subscriptions_summary_on">Els vídeos a la pestanya de subscripcions es filtren per paraules clau</string>
|
||||
<string name="revanced_hide_keyword_content_subscriptions_summary_off">Els vídeos a la pestanya de subscriptors no es filtren per paraules clau</string>
|
||||
<string name="revanced_hide_keyword_content_phrases_title">Paraules clau per amagar</string>
|
||||
<!-- For localization it is preferred, but not required, if 'LeBlanc' is replaced with a localized name or a familiar word that has upper case letters in the middle of the word.
|
||||
This is because keywords can be in any language, and showing an example in the localized script helps convey this. -->
|
||||
@@ -349,6 +410,9 @@ Aquesta funció només està disponible per a dispositius antics"</string>
|
||||
<string name="revanced_hide_products_banner_title">Amaga el bàner per veure productes</string>
|
||||
<string name="revanced_hide_products_banner_summary_on">La pancarta s\'amaga</string>
|
||||
<string name="revanced_hide_products_banner_summary_off">La pancarta es mostra</string>
|
||||
<string name="revanced_hide_end_screen_store_banner_title">Amaga el banner de la botiga a la pantalla final</string>
|
||||
<string name="revanced_hide_end_screen_store_banner_summary_on">El banner de la Botiga està amagat</string>
|
||||
<string name="revanced_hide_end_screen_store_banner_summary_off">Es mostra el banner de la Botiga</string>
|
||||
<string name="revanced_hide_player_store_shelf_title">Amaga la prestatgeria de compres del reproductor</string>
|
||||
<string name="revanced_hide_player_store_shelf_summary_on">La prestatgeria de compres s\'amaga</string>
|
||||
<string name="revanced_hide_player_store_shelf_summary_off">La prestatgeria de compres es mostra</string>
|
||||
@@ -401,7 +465,7 @@ Aquesta funció només està disponible per a dispositius antics"</string>
|
||||
<string name="revanced_external_downloader_summary_on">Botó de descàrrega mostrat al reproductor</string>
|
||||
<string name="revanced_external_downloader_summary_off">El botó de descàrrega no es mostra al reproductor</string>
|
||||
<!-- 'download action button' should be translated using the same wording as the translation of 'revanced_hide_download_button_title' -->
|
||||
<string name="revanced_external_downloader_action_button_title">Substituir el botó d\'acció de descàrrega</string>
|
||||
<string name="revanced_external_downloader_action_button_title">Sobrescriu el botó d\'acció de Desa</string>
|
||||
<string name="revanced_external_downloader_action_button_summary_on">El botó de descàrrega obre el vostre descarregador extern</string>
|
||||
<string name="revanced_external_downloader_action_button_summary_off">El botó de descàrrega obre el descarregador natiu integrat a l\'aplicació</string>
|
||||
<string name="revanced_external_downloader_name_title">Nom del paquet del descarregador</string>
|
||||
@@ -446,6 +510,9 @@ Aquesta funció només està disponible per a dispositius antics"</string>
|
||||
<string name="revanced_swipe_overlay_background_alpha_summary">La visibilitat del fons de la superposició lliscant</string>
|
||||
<string name="revanced_swipe_threshold_title">Llindar de magnitud de lliscament</string>
|
||||
<string name="revanced_swipe_threshold_summary">La quantitat de llindar per a què es produeixi el desplaçament</string>
|
||||
<string name="revanced_swipe_change_video_title">Activa la funció de lliscament per canviar vídeos</string>
|
||||
<string name="revanced_swipe_change_video_summary_on">Lliscar en mode de pantalla completa canviarà al vídeo següent/anterior</string>
|
||||
<string name="revanced_swipe_change_video_summary_off">Lliscar en mode de pantalla completa no canviarà al vídeo següent/anterior</string>
|
||||
</patch>
|
||||
<patch id="layout.autocaptions.autoCaptionsPatch">
|
||||
<string name="revanced_auto_captions_title">Desactiva els subtítols automàtics</string>
|
||||
@@ -585,14 +652,14 @@ Nota: si actives aquesta opció, també s'amaguen els anuncis de vídeo per for
|
||||
<string name="revanced_hide_player_previous_next_buttons_title">Amaga els botons de vídeo anteriors i següents</string>
|
||||
<string name="revanced_hide_player_previous_next_buttons_summary_on">Els botons estan amagats</string>
|
||||
<string name="revanced_hide_player_previous_next_buttons_summary_off">Els botons es mostren</string>
|
||||
<string name="revanced_hide_cast_button_title">Amaga el botó de transmissió</string>
|
||||
<string name="revanced_hide_cast_button_title">Amaga el botó Emet</string>
|
||||
<string name="revanced_hide_cast_button_summary_on">El botó Cast està ocult</string>
|
||||
<string name="revanced_hide_cast_button_summary_off">El botó Cast es mostra</string>
|
||||
<!-- This button does not display any text, but 'captions' should be translated using the same wording used as the translation of 'revanced_hide_player_flyout_captions_title' -->
|
||||
<string name="revanced_hide_captions_button_title">Amaga el botó de subtítols</string>
|
||||
<string name="revanced_hide_captions_button_title">Amaga el botó Sotasignadors</string>
|
||||
<string name="revanced_hide_captions_button_summary_on">El botó de subtítols està ocult</string>
|
||||
<string name="revanced_hide_captions_button_summary_off">El botó de subtítols es mostra</string>
|
||||
<string name="revanced_hide_autoplay_button_title">Amaga el botó de reproducció automàtica</string>
|
||||
<string name="revanced_hide_autoplay_button_title">Amaga el botó Reproducció automàtica</string>
|
||||
<string name="revanced_hide_autoplay_button_summary_on">El botó de reproducció automàtica està ocult</string>
|
||||
<string name="revanced_hide_autoplay_button_summary_off">El botón de reproducción automática se muestra</string>
|
||||
</patch>
|
||||
@@ -602,7 +669,7 @@ Nota: si actives aquesta opció, també s'amaguen els anuncis de vídeo per for
|
||||
<string name="revanced_hide_endscreen_cards_summary_off">Las tarjetas de pantalla final se muestran</string>
|
||||
</patch>
|
||||
<patch id="layout.hide.fullscreenambientmode.disableFullscreenAmbientModePatch">
|
||||
<string name="revanced_disable_fullscreen_ambient_mode_title">Deshabilitar el modo ambiente en pantalla completa</string>
|
||||
<string name="revanced_disable_fullscreen_ambient_mode_title">Desactiva el mode Ambient a pantalla completa</string>
|
||||
<string name="revanced_disable_fullscreen_ambient_mode_summary_on">Modo ambiente desactivado</string>
|
||||
<string name="revanced_disable_fullscreen_ambient_mode_summary_off">Modo ambiente activado</string>
|
||||
</patch>
|
||||
@@ -629,48 +696,51 @@ Nota: si actives aquesta opció, també s'amaguen els anuncis de vídeo per for
|
||||
<string name="revanced_shorts_player_screen_summary">Amaga o mostra components al reproductor de Shorts</string>
|
||||
<!-- 'home' should be translated using the same localized wording YouTube displays for the home tab. -->
|
||||
<string name="revanced_hide_shorts_home_title">Amaga els Shorts al feed d\'inici</string>
|
||||
<string name="revanced_hide_shorts_home_summary_on">Els Shorts al feed d\'inici estan ocults</string>
|
||||
<string name="revanced_hide_shorts_home_summary_off">Els Shorts al feed d\'inici es mostren</string>
|
||||
<string name="revanced_hide_shorts_home_summary_on">Amagat al feed d\'inici i als vídeos relacionats</string>
|
||||
<string name="revanced_hide_shorts_home_summary_off">Es mostra al feed d\'inici i als vídeos relacionats</string>
|
||||
<!-- 'subscription' should be translated using the same localized wording YouTube displays for the subscription tab. -->
|
||||
<string name="revanced_hide_shorts_subscriptions_title">Amaga Shorts al feed de subscripcions</string>
|
||||
<string name="revanced_hide_shorts_subscriptions_summary_on">Els Shorts al feed de subscripcions estan ocults</string>
|
||||
<string name="revanced_hide_shorts_subscriptions_summary_off">Els Shorts al feed de subscripcions es mostren</string>
|
||||
<string name="revanced_hide_shorts_subscriptions_summary_on">Amagat al feed de subscripcions</string>
|
||||
<string name="revanced_hide_shorts_subscriptions_summary_off">Es mostra al feed de subscripcions</string>
|
||||
<string name="revanced_hide_shorts_search_title">Amaga Shorts als resultats de la cerca</string>
|
||||
<string name="revanced_hide_shorts_search_summary_on">Els Shorts als resultats de la cerca estan ocults</string>
|
||||
<string name="revanced_hide_shorts_search_summary_off">Els Shorts als resultats de la cerca es mostren</string>
|
||||
<string name="revanced_hide_shorts_search_summary_on">Ocult als resultats de la cerca</string>
|
||||
<string name="revanced_hide_shorts_search_summary_off">Es mostra als resultats de la cerca</string>
|
||||
<string name="revanced_hide_shorts_history_title">Amaga els curts a l\'historial de visualitzacions</string>
|
||||
<string name="revanced_hide_shorts_history_summary_on">Amagat a l\'historial de visualitzacions</string>
|
||||
<string name="revanced_hide_shorts_history_summary_off">Es mostra a l\'historial de visualitzacions</string>
|
||||
<!-- 'join' should be translated using the same localized wording YouTube displays for the button. -->
|
||||
<string name="revanced_hide_shorts_join_button_title">Amaga el botó d\'unió</string>
|
||||
<string name="revanced_hide_shorts_join_button_title">Amaga el botó Uneix-te\'n</string>
|
||||
<string name="revanced_hide_shorts_join_button_summary_on">El botó d\'unió està ocult</string>
|
||||
<string name="revanced_hide_shorts_join_button_summary_off">El botó d\'unió es mostra</string>
|
||||
<!-- 'subscribe' should be translated using the same localized wording YouTube displays for the button. -->
|
||||
<string name="revanced_hide_shorts_subscribe_button_title">Amaga el botó de subscripció</string>
|
||||
<string name="revanced_hide_shorts_subscribe_button_title">Amaga el botó Subscriu-te</string>
|
||||
<string name="revanced_hide_shorts_subscribe_button_summary_on">El botó de subscripció està ocult</string>
|
||||
<string name="revanced_hide_shorts_subscribe_button_summary_off">El botó de subscripció es mostra</string>
|
||||
<string name="revanced_hide_shorts_paused_overlay_buttons_title">Amaga els botons de la superposició pausada</string>
|
||||
<string name="revanced_hide_shorts_paused_overlay_buttons_summary_on">Els botons de la superposició pausada estan ocults</string>
|
||||
<string name="revanced_hide_shorts_paused_overlay_buttons_summary_off">Els botons de la superposició pausada es mostren</string>
|
||||
<string name="revanced_hide_shorts_shop_button_title">Amaga el botó de la botiga</string>
|
||||
<string name="revanced_hide_shorts_shop_button_title">Amaga el botó Botiga</string>
|
||||
<string name="revanced_hide_shorts_shop_button_summary_on">El botó de la botiga està ocult</string>
|
||||
<string name="revanced_hide_shorts_shop_button_summary_off">El botó de la botiga es mostra</string>
|
||||
<string name="revanced_hide_shorts_super_thanks_button_title">Amaga el botó de superagraïments</string>
|
||||
<string name="revanced_hide_shorts_super_thanks_button_summary_on">El botó de superagraïments està ocult</string>
|
||||
<string name="revanced_hide_shorts_super_thanks_button_summary_off">El botó de superagraïments es mostra</string>
|
||||
<string name="revanced_hide_shorts_super_thanks_button_title">Amaga el botó Compra Super Thanks</string>
|
||||
<string name="revanced_hide_shorts_super_thanks_button_summary_on">El botó Super Thanks està amagat</string>
|
||||
<string name="revanced_hide_shorts_super_thanks_button_summary_off">Es mostra el botó Super Thanks</string>
|
||||
<string name="revanced_hide_shorts_tagged_products_title">Amaga els productes etiquetats</string>
|
||||
<string name="revanced_hide_shorts_tagged_products_summary_on">Els productes etiquetats estan ocults</string>
|
||||
<string name="revanced_hide_shorts_tagged_products_summary_off">Els productes etiquetats es mostren</string>
|
||||
<string name="revanced_hide_shorts_location_label_title">Amaga l\'etiqueta de ubicació</string>
|
||||
<string name="revanced_hide_shorts_location_label_summary_on">L\'etiqueta de ubicació està oculta</string>
|
||||
<string name="revanced_hide_shorts_location_label_summary_off">L\'etiqueta de ubicació es mostra</string>
|
||||
<string name="revanced_hide_shorts_save_sound_button_title">Amaga el botó de desar música</string>
|
||||
<string name="revanced_hide_shorts_save_sound_button_title">Amaga el botó Desa música</string>
|
||||
<string name="revanced_hide_shorts_save_sound_button_summary_on">El botó de desar música està ocult</string>
|
||||
<string name="revanced_hide_shorts_save_sound_button_summary_off">El botó de desar música es mostra</string>
|
||||
<string name="revanced_hide_shorts_use_template_button_title">Amaga el botó d\'ús de la plantilla</string>
|
||||
<string name="revanced_hide_shorts_use_template_button_title">Amaga el botó Usa la plantilla</string>
|
||||
<string name="revanced_hide_shorts_use_template_button_summary_on">El botó d\'ús de la plantilla està ocult</string>
|
||||
<string name="revanced_hide_shorts_use_template_button_summary_off">El botó d\'ús de la plantilla es mostra</string>
|
||||
<string name="revanced_hide_shorts_upcoming_button_title">Amaga el botó de properes</string>
|
||||
<string name="revanced_hide_shorts_upcoming_button_title">Amaga el botó Pròxims continguts</string>
|
||||
<string name="revanced_hide_shorts_upcoming_button_summary_on">El botó \"Pròxim\" està ocult</string>
|
||||
<string name="revanced_hide_shorts_upcoming_button_summary_off">El botó \"Pròxim\" està visible</string>
|
||||
<string name="revanced_hide_shorts_green_screen_button_title">Amagar botó de pantalla verda</string>
|
||||
<string name="revanced_hide_shorts_green_screen_button_title">Amaga el botó Pantalla verda</string>
|
||||
<string name="revanced_hide_shorts_green_screen_button_summary_on">El botó de pantalla verda està ocult</string>
|
||||
<string name="revanced_hide_shorts_green_screen_button_summary_off">El botó de pantalla verda està visible</string>
|
||||
<string name="revanced_hide_shorts_hashtag_button_title">Amagar botó de hashtag</string>
|
||||
@@ -682,24 +752,24 @@ Nota: si actives aquesta opció, també s'amaguen els anuncis de vídeo per for
|
||||
<string name="revanced_hide_shorts_stickers_title">Amagar adhesius</string>
|
||||
<string name="revanced_hide_shorts_stickers_summary_on">Els adhesius estan ocults</string>
|
||||
<string name="revanced_hide_shorts_stickers_summary_off">Els adhesius estan visibles</string>
|
||||
<string name="revanced_hide_shorts_like_fountain_title">Amagar font de \"m\'agrada\"</string>
|
||||
<string name="revanced_hide_shorts_like_fountain_title">Amaga l\'animació de font del botó M\'agrada</string>
|
||||
<string name="revanced_hide_shorts_like_fountain_summary_on">L\'animació de la font del botó \"m\'agrada\" està oculta</string>
|
||||
<string name="revanced_hide_shorts_like_fountain_summary_off">L\'animació de la font del botó \"m\'agrada\" està visible</string>
|
||||
<string name="revanced_hide_shorts_like_button_title">Amagar botó \"m\'agrada\"</string>
|
||||
<string name="revanced_hide_shorts_like_button_title">Amaga el botó M\'agrada</string>
|
||||
<string name="revanced_hide_shorts_like_button_summary_on">El botó \"m\'agrada\" està ocult</string>
|
||||
<string name="revanced_hide_shorts_like_button_summary_off">El botó \"m\'agrada\" està visible</string>
|
||||
<string name="revanced_hide_shorts_dislike_button_title">Amagar botó \"no m\'agrada\"</string>
|
||||
<string name="revanced_hide_shorts_dislike_button_title">Amaga el botó No m\'agrada</string>
|
||||
<string name="revanced_hide_shorts_dislike_button_summary_on">El botó \"no m\'agrada\" està ocult</string>
|
||||
<string name="revanced_hide_shorts_dislike_button_summary_off">El botó \"no m\'agrada\" està visible</string>
|
||||
<string name="revanced_hide_shorts_comments_button_title">Amagar botó de comentaris</string>
|
||||
<string name="revanced_hide_shorts_comments_button_title">Amaga el botó Comentaris</string>
|
||||
<string name="revanced_hide_shorts_comments_button_summary_on">El botó de comentaris està ocult</string>
|
||||
<string name="revanced_hide_shorts_comments_button_summary_off">El botó de comentaris està visible</string>
|
||||
<!-- 'remix' should be translated using the same localized wording YouTube displays for the button. -->
|
||||
<string name="revanced_hide_shorts_remix_button_title">Amagar botó \"remix\"</string>
|
||||
<string name="revanced_hide_shorts_remix_button_title">Amaga el botó Remix</string>
|
||||
<string name="revanced_hide_shorts_remix_button_summary_on">El botó \"remix\" està ocult</string>
|
||||
<string name="revanced_hide_shorts_remix_button_summary_off">El botó \"remix\" està visible</string>
|
||||
<!-- 'share' should be translated using the same localized wording YouTube displays for the button. -->
|
||||
<string name="revanced_hide_shorts_share_button_title">Amagar botó \"compartir\"</string>
|
||||
<string name="revanced_hide_shorts_share_button_title">Amaga el botó Comparteix</string>
|
||||
<string name="revanced_hide_shorts_share_button_summary_on">El botó \"compartir\" està ocult</string>
|
||||
<string name="revanced_hide_shorts_share_button_summary_off">El botó \"compartir\" està visible</string>
|
||||
<string name="revanced_hide_shorts_info_panel_title">Amagar panell d\'informació</string>
|
||||
@@ -739,6 +809,13 @@ Nota: si actives aquesta opció, també s'amaguen els anuncis de vídeo per for
|
||||
<string name="revanced_hide_player_popup_panels_summary_on">Els panells emergents del reproductor estan ocults</string>
|
||||
<string name="revanced_hide_player_popup_panels_summary_off">Els panells emergents del reproductor estan visibles</string>
|
||||
</patch>
|
||||
<patch id="layout.player.fullscreen.exitFullscreenPatch">
|
||||
<string name="revanced_exit_fullscreen_title">Surt del mode de pantalla completa al final del vídeo</string>
|
||||
<string name="revanced_exit_fullscreen_entry_1">Desactivat</string>
|
||||
<string name="revanced_exit_fullscreen_entry_2">Vertical</string>
|
||||
<string name="revanced_exit_fullscreen_entry_3">Horitzontal</string>
|
||||
<string name="revanced_exit_fullscreen_entry_4">Vertical i horitzontal</string>
|
||||
</patch>
|
||||
<patch id="layout.player.fullscreen.openVideosFullscreen">
|
||||
<string name="revanced_open_videos_fullscreen_portrait_title">Obrir vídeos en pantalla completa en format vertical</string>
|
||||
<string name="revanced_open_videos_fullscreen_portrait_summary_on">Els vídeos s\'obren en pantalla completa</string>
|
||||
@@ -769,7 +846,7 @@ Limitació: és possible que els No m'agrades no apareguin en mode d'incògnit"<
|
||||
<string name="revanced_ryd_dislike_percentage_summary_on">Els \"no m\'agrada\" es mostren com a percentatge</string>
|
||||
<string name="revanced_ryd_dislike_percentage_summary_off">Els \"no m\'agrada\" es mostren com a nombre</string>
|
||||
<!-- Translations should use language similar to 'revanced_sb_enable_compact_skip_button' -->
|
||||
<string name="revanced_ryd_compact_layout_title">Botó \"m\'agrada\" compacte</string>
|
||||
<string name="revanced_ryd_compact_layout_title">Botó Compact Like</string>
|
||||
<string name="revanced_ryd_compact_layout_summary_on">Botó \"m\'agrada\" estilitzat per a l\'amplada mínima</string>
|
||||
<string name="revanced_ryd_compact_layout_summary_off">Botó \"m\'agrada\" estilitzat per a la millor aparença</string>
|
||||
<string name="revanced_ryd_toast_on_connection_error_title">Mostrar una \"toast\" si l\'API no està disponible</string>
|
||||
@@ -817,7 +894,7 @@ Aquesta funció funciona millor amb una qualitat de vídeo de 720p o inferior i
|
||||
</patch>
|
||||
<patch id="layout.sponsorblock.sponsorBlockResourcePatch">
|
||||
<string name="revanced_sb_enable_sb">Activar SponsorBlock</string>
|
||||
<string name="revanced_sb_enable_sb_sum">SponsorBlock és un sistema de fonts obertes per saltar parts molestos de vídeos de YouTube</string>
|
||||
<string name="revanced_sb_enable_sb_sum">SponsorBlock és un sistema basat en col·laboració ciutadana per saltar les parts molestes dels vídeos de YouTube</string>
|
||||
<string name="revanced_sb_appearance_category">Aparença</string>
|
||||
<string name="revanced_sb_enable_voting">Mostrar el botó de votació</string>
|
||||
<string name="revanced_sb_enable_voting_sum_on">El botó de votació del segment es mostra</string>
|
||||
@@ -881,7 +958,7 @@ El teu ID d'usuari és com una contrasenya i no l'hauries de compartir mai."</st
|
||||
<string name="revanced_sb_segments_sponsor">Patrocinador</string>
|
||||
<string name="revanced_sb_segments_sponsor_sum">Promoció pagada, referències pagades i anuncis directes. No per a autopromoció o crits gratuïts a causes/creadors/llocs web/productes que els agraden</string>
|
||||
<string name="revanced_sb_segments_selfpromo">Sense pagar/Auto-Promoció</string>
|
||||
<string name="revanced_sb_segments_selfpromo_sum">Similar a \"Sponsor\" excepte per a la promoció no pagada o autopromoció. Inclou seccions sobre mercaderies, donacions o informació sobre amb qui han col·laborat</string>
|
||||
<string name="revanced_sb_segments_selfpromo_sum">Similar a Patrocinador, però per a promoció no pagada o autopromoció. Inclou seccions sobre marxandatge, donacions o informació sobre amb qui han col·laborat</string>
|
||||
<string name="revanced_sb_segments_interaction">Recordatori d\'Interacció (Suscriu-te)</string>
|
||||
<string name="revanced_sb_segments_interaction_sum">Un petit recordatori per agradar, subscriure\'s o seguir-los al mig del contingut. Si és llarg o sobre alguna cosa específica, hauria de ser en comptes d\'això sota la promoció personal</string>
|
||||
<string name="revanced_sb_segments_highlight">Ressaltar</string>
|
||||
@@ -1006,6 +1083,23 @@ Preparat per enviar?"</string>
|
||||
<string name="revanced_sb_reset">Restablir</string>
|
||||
<string name="revanced_sb_about">Quant a</string>
|
||||
<string name="revanced_sb_about_api_sum">Les dades són proporcionades per l\'API de SponsorBlock. Toca aquí per a saber-ne més i veure les descàrregues per a altres plataformes</string>
|
||||
</patch>
|
||||
<patch id="layout.formfactor.changeFormFactorPatch">
|
||||
<string name="revanced_change_form_factor_title">Factor de forma del disseny</string>
|
||||
<string name="revanced_change_form_factor_entry_1">Predeterminat</string>
|
||||
<string name="revanced_change_form_factor_entry_2">Telèfon</string>
|
||||
<string name="revanced_change_form_factor_entry_3">Tauleta</string>
|
||||
<string name="revanced_change_form_factor_entry_4">Automoció</string>
|
||||
<string name="revanced_change_form_factor_user_dialog_message">"Els canvis inclouen:
|
||||
|
||||
Presentació de la tauleta
|
||||
• Les publicacions de la comunitat estan amagades
|
||||
|
||||
Presentació de l'automòbil
|
||||
• El menú d'historial del rellotge està ocult
|
||||
• La pestanya Explora s'ha restaurat
|
||||
• Els Shorts s'obren al reproductor normal
|
||||
• La font d'informació s'organitza per temes i canals"</string>
|
||||
</patch>
|
||||
<patch id="layout.spoofappversion.spoofAppVersionPatch">
|
||||
<string name="revanced_spoof_app_version_title">Falsa la versió de l\'aplicació</string>
|
||||
@@ -1020,6 +1114,7 @@ Si després es desactiva, es recomana esborrar les dades de l'aplicació per evi
|
||||
This is because the 'General layout' menu uses alphabetic sorting, and it functionally works better if the spoof target selector appears below the 'Spoof app version' UI switch -->
|
||||
<string name="revanced_spoof_app_version_target_title">Objectiu de la versió falsa de l\'aplicació</string>
|
||||
<string name="revanced_spoof_app_version_target_entry_1">19.35.36 - Restaura els icones vells del reproductor de Shorts</string>
|
||||
<string name="revanced_spoof_app_version_target_entry_2">26.19.42 - restaura les icones de navegació antigues</string>
|
||||
<!-- 'RYD' is 'Return YouTube Dislike' -->
|
||||
<string name="revanced_spoof_app_version_target_legacy_entry_1">18.33.40 - Restaura RYD al mode d\'incògnit de Shorts</string>
|
||||
<string name="revanced_spoof_app_version_target_legacy_entry_2">18.20.39 - Restaura la velocitat àmplia del vídeo & menú de qualitat</string>
|
||||
@@ -1063,12 +1158,6 @@ Si després es desactiva, es recomana esborrar les dades de l'aplicació per evi
|
||||
<string name="revanced_shorts_autoplay_background_summary_on">La reproducció en segon pla dels Shorts es reproduirà automàticament</string>
|
||||
<string name="revanced_shorts_autoplay_background_summary_off">La reproducció en segon pla dels Shorts es repetirà</string>
|
||||
</patch>
|
||||
<patch id="layout.tablet.enableTabletLayoutPatch">
|
||||
<string name="revanced_tablet_layout_title">Habilita el disseny de tauleta</string>
|
||||
<string name="revanced_tablet_layout_summary_on">El disseny de tauleta està habilitat</string>
|
||||
<string name="revanced_tablet_layout_summary_off">El disseny de tauleta està deshabilitat</string>
|
||||
<string name="revanced_tablet_layout_user_dialog_message">Les publicacions de la comunitat no apareixen en els dissenys de tauleta</string>
|
||||
</patch>
|
||||
<patch id="layout.miniplayer.miniplayerPatch">
|
||||
<string name="revanced_miniplayer_screen_title">Minireproductor</string>
|
||||
<string name="revanced_miniplayer_screen_summary">Canvia l\'estil del reproductor minimitzat a l\'aplicació</string>
|
||||
@@ -1129,8 +1218,10 @@ Desliza para ampliar o cerrar"</string>
|
||||
<string name="revanced_seekbar_custom_color_title">Habilita el color personalitzat de la barra de cerca</string>
|
||||
<string name="revanced_seekbar_custom_color_summary_on">El color personalitzat de la barra de cerca es mostra</string>
|
||||
<string name="revanced_seekbar_custom_color_summary_off">El color original de la barra de cerca es mostra</string>
|
||||
<string name="revanced_seekbar_custom_color_value_title">Color personalitzat de la barra de cerca</string>
|
||||
<string name="revanced_seekbar_custom_color_value_summary">El color de la barra de cerca</string>
|
||||
<string name="revanced_seekbar_custom_color_primary_title">Color personalitzat de la barra de cerca</string>
|
||||
<string name="revanced_seekbar_custom_color_primary_summary">El color de la barra de cerca</string>
|
||||
<string name="revanced_seekbar_custom_color_accent_title">Color d\'accent personalitzat de la barra de cerca</string>
|
||||
<string name="revanced_seekbar_custom_color_accent_summary">El color d\'accent de la barra de cerca</string>
|
||||
<string name="revanced_seekbar_custom_color_invalid">Valor de color de la barra de cerca invàlid</string>
|
||||
</patch>
|
||||
<patch id="layout.thumbnails.bypassImageRegionRestrictionsPatch">
|
||||
@@ -1153,7 +1244,6 @@ Si actives aquesta opció, es poden solucionar les imatges que falten que estan
|
||||
<string name="revanced_alt_thumbnail_options_entry_2">DeArrow & miniatures originals</string>
|
||||
<string name="revanced_alt_thumbnail_options_entry_3">DeArrow & captures estàtiques</string>
|
||||
<string name="revanced_alt_thumbnail_options_entry_4">Captures estàtiques</string>
|
||||
<string name="revanced_alt_thumbnail_dearrow_about_title">DeArrow</string>
|
||||
<string name="revanced_alt_thumbnail_dearrow_about_summary">"DeArrow proporciona miniatures de vídeos de YouTube obtingudes de la col·laboració entre usuaris. Aquestes miniatures solen ser més rellevants que les que proporciona YouTube
|
||||
|
||||
Si s'activa, les URL dels vídeos s'enviaran al servidor de l'API i no s'enviarà cap més dada. Si un vídeo no té miniatures de DeArrow, es mostraran les miniatures originals o les captures de pantalla
|
||||
@@ -1233,6 +1323,7 @@ Si actives aquesta opció, es poden desbloquejar qualitats de vídeo més altes"
|
||||
<string name="revanced_force_original_audio_title">Forçar àudio original</string>
|
||||
<string name="revanced_force_original_audio_summary_on">Utilitzant àudio original</string>
|
||||
<string name="revanced_force_original_audio_summary_off">Utilitzant àudio predeterminat</string>
|
||||
<string name="revanced_force_original_audio_not_available">Per utilitzar aquesta funció, canvia la suplantació de flux al tipus de client iOS</string>
|
||||
</patch>
|
||||
<patch id="video.quality.rememberVideoQualityPatch">
|
||||
<!-- Translations should use the same text as revanced_custom_playback_speeds_auto -->
|
||||
@@ -1260,6 +1351,8 @@ Si actives aquesta opció, es poden desbloquejar qualitats de vídeo més altes"
|
||||
<string name="revanced_custom_playback_speeds_invalid">Les velocitats personalitzades han de ser inferiors a %s</string>
|
||||
<string name="revanced_custom_playback_speeds_parse_exception">Velocitats de reproducció personalitzades no vàlides</string>
|
||||
<string name="revanced_custom_playback_speeds_auto">Automàtic</string>
|
||||
<string name="revanced_speed_tap_and_hold_title">Velocitat personalitzada de mantenir premut</string>
|
||||
<string name="revanced_speed_tap_and_hold_summary">Velocitat de reproducció entre 0 i 8</string>
|
||||
</patch>
|
||||
<patch id="video.speed.remember.rememberPlaybackSpeedPatch">
|
||||
<string name="revanced_remember_playback_speed_last_selected_title">Recorda els canvis de velocitat de reproducció</string>
|
||||
@@ -1268,6 +1361,11 @@ Si actives aquesta opció, es poden desbloquejar qualitats de vídeo més altes"
|
||||
<string name="revanced_playback_speed_default_title">Velocitat de reproducció predeterminada</string>
|
||||
<string name="revanced_remember_playback_speed_toast">S\'ha canviat la velocitat predeterminada a: %s</string>
|
||||
</patch>
|
||||
<patch id="video.hdr.disableHdrPatch">
|
||||
<string name="revanced_disable_hdr_video_title">Desactiva el vídeo HDR</string>
|
||||
<string name="revanced_disable_hdr_video_summary_on">El vídeo HDR està desactivat</string>
|
||||
<string name="revanced_disable_hdr_video_summary_off">El vídeo HDR està activat</string>
|
||||
</patch>
|
||||
<patch id="video.videoqualitymenu.restoreOldVideoQualityMenuResourcePatch">
|
||||
<string name="revanced_restore_old_video_quality_menu_title">Restaura el menú de qualitat de vídeo antic</string>
|
||||
<string name="revanced_restore_old_video_quality_menu_summary_on">El menú de qualitat de vídeo antic es mostra</string>
|
||||
@@ -1288,62 +1386,28 @@ Si actives aquesta opció, es poden desbloquejar qualitats de vídeo més altes"
|
||||
La reproducció de vídeo pot no funcionar"</string>
|
||||
<string name="revanced_spoof_video_streams_user_dialog_message">Desactivar aquesta configuració pot causar problemes de reproducció de vídeo.</string>
|
||||
<string name="revanced_spoof_video_streams_client_type_title">Client predeterminat</string>
|
||||
<string name="revanced_spoof_video_streams_about_title">Efectes secundaris de suplantació</string>
|
||||
<string name="revanced_spoof_video_streams_about_summary">"• Falta el menú de pista d'àudio
|
||||
<!-- 'no auth' means no authentication -->
|
||||
<string name="revanced_spoof_video_streams_client_type_android_vr_no_auth">Android VR (sense autorització)</string>
|
||||
<string name="revanced_spoof_video_streams_ios_force_avc_title">Forza iOS AVC (H.264)</string>
|
||||
<string name="revanced_spoof_video_streams_ios_force_avc_summary_on">El còdec de vídeo es força a AVC (H.264)</string>
|
||||
<string name="revanced_spoof_video_streams_ios_force_avc_summary_off">El còdec de vídeo es determina automàticament.</string>
|
||||
<string name="revanced_spoof_video_streams_ios_force_avc_user_dialog_message">"L'activació d'aquesta opció podria millorar la vida útil de la bateria i resoldre els problemes de reproducció irregular.
|
||||
|
||||
L'AVC té una resolució màxima de 1080p, el còdec d'àudio Opus no està disponible i la reproducció de vídeo utilitzarà més dades d'Internet que VP9 o AV1."</string>
|
||||
<string name="revanced_spoof_video_streams_about_ios_tv_title">Efectes secundaris de suplantació d\'iOS</string>
|
||||
<string name="revanced_spoof_video_streams_about_ios_tv_summary">"• Les pel·lícules o vídeos de pagament poden no reproduir-se
|
||||
• El volum estable no està disponible
|
||||
• Força l'àudio original no està disponible"</string>
|
||||
<string name="revanced_spoof_video_streams_language_title">Idioma de la transmissió d\'àudio per defecte</string>
|
||||
<string name="revanced_spoof_video_streams_language_DEFAULT">Idioma de l\'aplicació</string>
|
||||
<string name="revanced_spoof_video_streams_language_AR">Àrab</string>
|
||||
<string name="revanced_spoof_video_streams_language_AZ">Azerbaidjanès</string>
|
||||
<string name="revanced_spoof_video_streams_language_BG">Búlgar</string>
|
||||
<string name="revanced_spoof_video_streams_language_BN">Bengalí</string>
|
||||
<string name="revanced_spoof_video_streams_language_CA">Català</string>
|
||||
<string name="revanced_spoof_video_streams_language_CS">Txec</string>
|
||||
<string name="revanced_spoof_video_streams_language_DA">Danès</string>
|
||||
<string name="revanced_spoof_video_streams_language_DE">Alemany</string>
|
||||
<string name="revanced_spoof_video_streams_language_EL">Grec</string>
|
||||
<string name="revanced_spoof_video_streams_language_EN">Anglès</string>
|
||||
<string name="revanced_spoof_video_streams_language_ES">Espanyol</string>
|
||||
<string name="revanced_spoof_video_streams_language_ET">Estonià</string>
|
||||
<string name="revanced_spoof_video_streams_language_FA">Persa</string>
|
||||
<string name="revanced_spoof_video_streams_language_FI">Finès</string>
|
||||
<string name="revanced_spoof_video_streams_language_FR">Francès</string>
|
||||
<string name="revanced_spoof_video_streams_language_GU">Gujarati</string>
|
||||
<string name="revanced_spoof_video_streams_language_HI">Hindi</string>
|
||||
<string name="revanced_spoof_video_streams_language_HR">Croat</string>
|
||||
<string name="revanced_spoof_video_streams_language_HU">Hongarès</string>
|
||||
<string name="revanced_spoof_video_streams_language_ID">Indonesi</string>
|
||||
<string name="revanced_spoof_video_streams_language_IT">Italià</string>
|
||||
<string name="revanced_spoof_video_streams_language_JA">Japonès</string>
|
||||
<string name="revanced_spoof_video_streams_language_KK">Kazakhstanès</string>
|
||||
<string name="revanced_spoof_video_streams_language_KO">Coreà</string>
|
||||
<string name="revanced_spoof_video_streams_language_LT">Lituà</string>
|
||||
<string name="revanced_spoof_video_streams_language_LV">Letó</string>
|
||||
<string name="revanced_spoof_video_streams_language_MK">Macedoni</string>
|
||||
<string name="revanced_spoof_video_streams_language_MN">Mongol</string>
|
||||
<string name="revanced_spoof_video_streams_language_MR">Marathi</string>
|
||||
<string name="revanced_spoof_video_streams_language_MS">Malai</string>
|
||||
<string name="revanced_spoof_video_streams_language_MY">Birmano</string>
|
||||
<string name="revanced_spoof_video_streams_language_NL">Neerlandès</string>
|
||||
<string name="revanced_spoof_video_streams_language_OR">Odia</string>
|
||||
<string name="revanced_spoof_video_streams_language_PA">Punjabi</string>
|
||||
<string name="revanced_spoof_video_streams_language_PL">Polonès</string>
|
||||
<string name="revanced_spoof_video_streams_language_RO">Romanès</string>
|
||||
<string name="revanced_spoof_video_streams_language_RU">Rus</string>
|
||||
<string name="revanced_spoof_video_streams_language_SK">Eslovac</string>
|
||||
<string name="revanced_spoof_video_streams_language_SL">Eslovè</string>
|
||||
<string name="revanced_spoof_video_streams_language_SR">Serbi</string>
|
||||
<string name="revanced_spoof_video_streams_language_SV">Suec</string>
|
||||
<string name="revanced_spoof_video_streams_language_SW">Suahili</string>
|
||||
<string name="revanced_spoof_video_streams_language_TA">Tàmils</string>
|
||||
<string name="revanced_spoof_video_streams_language_TE">Telugu</string>
|
||||
<string name="revanced_spoof_video_streams_language_TH">Tailandès</string>
|
||||
<string name="revanced_spoof_video_streams_language_TR">Turc</string>
|
||||
<string name="revanced_spoof_video_streams_language_UK">Ucraïnès</string>
|
||||
<string name="revanced_spoof_video_streams_language_UR">Urdu</string>
|
||||
<string name="revanced_spoof_video_streams_language_VI">Vietnamita</string>
|
||||
<string name="revanced_spoof_video_streams_language_ZH">Xinès</string>
|
||||
• Els vídeos s'aturen 1 segon abans"</string>
|
||||
<string name="revanced_spoof_video_streams_about_android_title">Efectes secundaris de la suplantació d\'Android</string>
|
||||
<string name="revanced_spoof_video_streams_about_android_summary">"• Menú de pistes d'àudio no disponible
|
||||
• El volum estable no està disponible
|
||||
• Forçar l'àudio original no està disponible"</string>
|
||||
<string name="revanced_spoof_video_streams_about_no_av1">• Sense còdec de vídeo AV1</string>
|
||||
<string name="revanced_spoof_video_streams_about_kids_videos">• Els vídeos infantils poden no reproduir-se si s\'ha tancat la sessió o si s\'està en mode d\'incògnit.</string>
|
||||
<string name="revanced_spoof_streaming_data_stats_for_nerds_title">Mostra a l\'apartat \'Dades per a experts\'</string>
|
||||
<string name="revanced_spoof_streaming_data_stats_for_nerds_summary_on">El tipus de client es mostra a l\'apartat \'Dades per a experts\'</string>
|
||||
<string name="revanced_spoof_streaming_data_stats_for_nerds_summary_off">El client s\'amaga a l\'apartat \'Dades per a experts\'</string>
|
||||
<string name="revanced_spoof_video_streams_language_title">Idioma de l\'àudio per defecte a VR</string>
|
||||
</patch>
|
||||
</app>
|
||||
<app id="twitch">
|
||||
@@ -1379,7 +1443,7 @@ La reproducció de vídeo pot no funcionar"</string>
|
||||
</patch>
|
||||
<patch id="debug.debugModePatch">
|
||||
<!-- Twitch specific internal debug mode, and not the same as 'revanced_debug_title' -->
|
||||
<string name="revanced_twitch_debug_mode_title">Activar el mode de depuració de Twitch</string>
|
||||
<string name="revanced_twitch_debug_mode_title">Activa el mode de depuració de Twitch</string>
|
||||
<string name="revanced_twitch_debug_mode_summary_on">El mode de depuració de Twitch està activat (no recomanat)</string>
|
||||
<string name="revanced_twitch_debug_mode_summary_off">El mode de depuració de Twitch està desactivat</string>
|
||||
</patch>
|
||||
|
||||
@@ -33,7 +33,7 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_check_environment_not_near_patch_time_invalid">Datum sestavení souboru APK je poškozeno</string>
|
||||
</patch>
|
||||
<patch id="misc.settings.settingsResourcePatch">
|
||||
<string name="revanced_settings_title">ReVanced</string>
|
||||
<string name="revanced_settings_submenu_title">Nastavení</string>
|
||||
<string name="revanced_settings_confirm_user_dialog_title">Přejete si pokračovat?</string>
|
||||
<string name="revanced_settings_reset">Výchozí</string>
|
||||
<string name="revanced_settings_restart_title">Obnovit a restartovat</string>
|
||||
@@ -43,6 +43,62 @@ Second \"item\" text"</string>
|
||||
<string name="revanced_settings_import_reset">Nastavení ReVanced obnoveno do výchozího stavu</string>
|
||||
<string name="revanced_settings_import_success">Importováno %d nastavení</string>
|
||||
<string name="revanced_settings_import_failure_parse">Importováni selhalo: %s</string>
|
||||
<string name="revanced_language_title">Jazyk ReVanced</string>
|
||||
<string name="revanced_language_user_dialog_message">"Překlady pro některé jazyky mohou chybět nebo být neúplné.
|
||||
|
||||
Nové jazyky přeložíte na translate.revanced.app"</string>
|
||||
<string name="revanced_language_DEFAULT">Jazyk aplikace</string>
|
||||
<string name="revanced_language_AR">Arabština</string>
|
||||
<string name="revanced_language_AZ">Ázerbájdžánština</string>
|
||||
<string name="revanced_language_BG">Bulharština</string>
|
||||
<string name="revanced_language_BN">Bengálština</string>
|
||||
<string name="revanced_language_CA">Katalánština</string>
|
||||
<string name="revanced_language_CS">Čeština</string>
|
||||
<string name="revanced_language_DA">Dánština</string>
|
||||
<string name="revanced_language_DE">Němčina</string>
|
||||
<string name="revanced_language_EL">Řečtina</string>
|
||||
<string name="revanced_language_EN">Angličtina</string>
|
||||
<string name="revanced_language_ES">Španělština</string>
|
||||
<string name="revanced_language_ET">Estonština</string>
|
||||
<string name="revanced_language_FA">Perština</string>
|
||||
<string name="revanced_language_FI">Finština</string>
|
||||
<string name="revanced_language_FR">Francouzština</string>
|
||||
<string name="revanced_language_GU">Gudžarátština</string>
|
||||
<string name="revanced_language_HI">Hindština</string>
|
||||
<string name="revanced_language_HR">Chorvatština</string>
|
||||
<string name="revanced_language_HU">Maďarština</string>
|
||||
<string name="revanced_language_ID">Indonéština</string>
|
||||
<string name="revanced_language_IT">Italština</string>
|
||||
<string name="revanced_language_JA">Japonština</string>
|
||||
<string name="revanced_language_KK">Kazachština</string>
|
||||
<string name="revanced_language_KO">Korejština</string>
|
||||
<string name="revanced_language_LT">Litevština</string>
|
||||
<string name="revanced_language_LV">Lotyština</string>
|
||||
<string name="revanced_language_MK">Makedonština</string>
|
||||
<string name="revanced_language_MN">Mongolština</string>
|
||||
<string name="revanced_language_MR">Maráthština</string>
|
||||
<string name="revanced_language_MS">Malajština</string>
|
||||
<string name="revanced_language_MY">Barmština</string>
|
||||
<string name="revanced_language_NL">Nizozemština</string>
|
||||
<string name="revanced_language_OR">Uríjština</string>
|
||||
<string name="revanced_language_PA">Paňdžábština</string>
|
||||
<string name="revanced_language_PL">Polština</string>
|
||||
<string name="revanced_language_PT">Portugalština</string>
|
||||
<string name="revanced_language_RO">Rumunština</string>
|
||||
<string name="revanced_language_RU">Ruština</string>
|
||||
<string name="revanced_language_SK">Slovenština</string>
|
||||
<string name="revanced_language_SL">Slověnština</string>
|
||||
<string name="revanced_language_SR">Srbština</string>
|
||||
<string name="revanced_language_SV">Švédština</string>
|
||||
<string name="revanced_language_SW">Svahilština</string>
|
||||
<string name="revanced_language_TA">Tamilština</string>
|
||||
<string name="revanced_language_TE">Telugština</string>
|
||||
<string name="revanced_language_TH">Thajština</string>
|
||||
<string name="revanced_language_TR">Turečtina</string>
|
||||
<string name="revanced_language_UK">Ukrajinština</string>
|
||||
<string name="revanced_language_UR">Urdština</string>
|
||||
<string name="revanced_language_VI">Vietnamština</string>
|
||||
<string name="revanced_language_ZH">Čínština</string>
|
||||
<string name="revanced_pref_import_export_title">Importovat / Exportovat</string>
|
||||
<string name="revanced_pref_import_export_summary">Importovat/exportovat nastavení ReVanced</string>
|
||||
<!-- Settings about dialog. -->
|
||||
@@ -77,13 +133,15 @@ Klepněte na tlačítko Pokračovat a povolte změny optimalizace."</string>
|
||||
<string name="revanced_settings_screen_01_ads_title">Reklamy</string>
|
||||
<string name="revanced_settings_screen_02_alt_thumbnails_title">Alternativní náhledy</string>
|
||||
<string name="revanced_settings_screen_03_feed_title">Přísun</string>
|
||||
<string name="revanced_settings_screen_04_player_title">Přehrávač</string>
|
||||
<string name="revanced_settings_screen_05_general_title">Celkové rozložení</string>
|
||||
<string name="revanced_settings_screen_06_shorts_title">Shorts</string>
|
||||
<string name="revanced_settings_screen_04_general_title">Obecné</string>
|
||||
<string name="revanced_settings_screen_05_player_title">Přehrávač</string>
|
||||
<string name="revanced_settings_screen_07_seekbar_title">Lišta</string>
|
||||
<string name="revanced_settings_screen_08_swipe_controls_title">Ovládání gesty</string>
|
||||
<string name="revanced_settings_screen_11_misc_title">Ostatní</string>
|
||||
<string name="revanced_settings_screen_11_misc_title">Různé</string>
|
||||
<string name="revanced_settings_screen_12_video_title">Video</string>
|
||||
<string name="revanced_restore_old_settings_menus_title">Obnovit staré menu nastavení</string>
|
||||
<string name="revanced_restore_old_settings_menus_summary_on">Staré menu nastavení se zobrazují</string>
|
||||
<string name="revanced_restore_old_settings_menus_summary_off">Staré menu nastavení se nezobrazují</string>
|
||||
</patch>
|
||||
<patch id="misc.backgroundplayback.backgroundPlaybackPatch">
|
||||
<string name="revanced_shorts_disable_background_playback_title">Zakázat automatické přehrávání Shorts v pozadí</string>
|
||||
@@ -110,9 +168,9 @@ Klepněte na tlačítko Pokračovat a povolte změny optimalizace."</string>
|
||||
Nebudete informováni o žádné neočekávané události."</string>
|
||||
</patch>
|
||||
<patch id="layout.hide.general.hideLayoutComponentsPatch">
|
||||
<string name="revanced_disable_like_subscribe_glow_title">Deaktivace osvětlení tlačítka \"Líbí se\"/\"Odebírat\"</string>
|
||||
<string name="revanced_disable_like_subscribe_glow_summary_on">Tlačítko \"Like a přihlaš se\" nebude svítit, když se zmíní</string>
|
||||
<string name="revanced_disable_like_subscribe_glow_summary_off">Tlačítko \"Like a přihlaš se\" bude svítit, když se zmíní</string>
|
||||
<string name="revanced_disable_like_subscribe_glow_title">Deaktivovat zvýraznění tlačítek Like a Subscribe</string>
|
||||
<string name="revanced_disable_like_subscribe_glow_summary_on">Tlačítka Like a Subscribe po zmínce nebudou zvýrazněna</string>
|
||||
<string name="revanced_disable_like_subscribe_glow_summary_off">Tlačítka Like a Subscribe po zmínce budou zvýrazněna</string>
|
||||
<string name="revanced_hide_album_cards_title">Skrýt karty alb</string>
|
||||
<string name="revanced_hide_album_cards_summary_on">Karty alb jsou skryté</string>
|
||||
<string name="revanced_hide_album_cards_summary_off">Karty alb jsou zobrazeny</string>
|
||||
@@ -165,9 +223,9 @@ Nebudete informováni o žádné neočekávané události."</string>
|
||||
<string name="revanced_hide_chips_shelf_title">Skryť police \"Ďalsej videá\"</string>
|
||||
<string name="revanced_hide_chips_shelf_summary_on">Police \"Další videá\" sa nezobrazuje</string>
|
||||
<string name="revanced_hide_chips_shelf_summary_off">Zobrazuje sa polícia \"Další videá\"</string>
|
||||
<string name="revanced_hide_expandable_chip_title">Skryť rozbaľovací čip pod videami</string>
|
||||
<string name="revanced_hide_expandable_chip_summary_on">Rozbaľovacie čipy sa nezobrazujú</string>
|
||||
<string name="revanced_hide_expandable_chip_summary_off">Rozšiřitelné čipy jsou zobrazeny</string>
|
||||
<string name="revanced_hide_expandable_chip_title">Skrýt rozbalovací kartu pod videy</string>
|
||||
<string name="revanced_hide_expandable_chip_summary_on">Rozbalovací karty jsou skryty</string>
|
||||
<string name="revanced_hide_expandable_chip_summary_off">Rozbalovací karty se zobrazují</string>
|
||||
<string name="revanced_hide_community_posts_title">Skrýt příspěvky komunity</string>
|
||||
<string name="revanced_hide_community_posts_summary_on">Příspěvky komunity jsou skryté</string>
|
||||
<string name="revanced_hide_community_posts_summary_off">Příspěvky komunity jsou zobrazeny</string>
|
||||
@@ -228,6 +286,9 @@ Nebudete informováni o žádné neočekávané události."</string>
|
||||
<string name="revanced_hide_chapters_section_title">Skryj sekcję Rozdziały</string>
|
||||
<string name="revanced_hide_chapters_section_summary_on">Sekcja Rozdziały jest ukryta</string>
|
||||
<string name="revanced_hide_chapters_section_summary_off">Sekcja Rozdziały jest widoczna</string>
|
||||
<string name="revanced_hide_how_this_was_made_section_title">Skrýt sekci „Jak vznikl tento obsah“</string>
|
||||
<string name="revanced_hide_how_this_was_made_section_summary_on">Sekce „Jak vznikl tento obsah“ je skrytá</string>
|
||||
<string name="revanced_hide_how_this_was_made_section_summary_off">Sekce „Jak vznikl tento obsah“ je zobrazena</string>
|
||||
<string name="revanced_hide_podcast_section_title">Ukryj sekcję \'Odkryj podcast\'</string>
|
||||
<string name="revanced_hide_podcast_section_summary_on">Sekcja \'Odkryj podcast\' jest ukryta</string>
|
||||
<string name="revanced_hide_podcast_section_summary_off">Sekcja \'Odkryj podcast\' jest widoczna</string>
|
||||
@@ -270,7 +331,7 @@ Nebudete informováni o žádné neočekávané události."</string>
|
||||
<string name="revanced_hide_comments_preview_comment_title">Skrýt náhled komentáře</string>
|
||||
<string name="revanced_hide_comments_preview_comment_summary_on">Náhled komentáře je skryt</string>
|
||||
<string name="revanced_hide_comments_preview_comment_summary_off">Náhled komentáře je zobrazen</string>
|
||||
<string name="revanced_hide_comments_thanks_button_title">Skrýt tlačítko poděkování</string>
|
||||
<string name="revanced_hide_comments_thanks_button_title">Skrýt tlačítko děk」、「</string>
|
||||
<string name="revanced_hide_comments_thanks_button_summary_on">Tlačítko poděkování je skryto</string>
|
||||
<string name="revanced_hide_comments_thanks_button_summary_off">Tlačítko poděkování je zobrazeno</string>
|
||||
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_title">Skrýt tlačítka s časovými údaji a emoji</string>
|
||||
@@ -297,12 +358,12 @@ Pokud se Doodle v současné době zobrazuje ve vaší oblasti a toto nastavení
|
||||
<string name="revanced_hide_keyword_content_home_title">Skrýt domácí videa podle klíčových slov</string>
|
||||
<string name="revanced_hide_keyword_content_home_summary_on">Videa na kartě domov jsou filtrována podle klíčových slov</string>
|
||||
<string name="revanced_hide_keyword_content_home_summary_off">Videa na kartě domov nejsou filtrována podle klíčových slov</string>
|
||||
<string name="revanced_hide_keyword_content_subscriptions_title">Skrýt videa z odběrů podle klíčových slov</string>
|
||||
<string name="revanced_hide_keyword_content_subscriptions_summary_on">Videa na kartě odběrů jsou filtrována podle klíčových slov</string>
|
||||
<string name="revanced_hide_keyword_content_subscriptions_summary_off">Videa na kartě odběrů nejsou filtrována podle klíčových slov</string>
|
||||
<string name="revanced_hide_keyword_content_search_title">Skrýt výsledky vyhledávání podle klíčových slov</string>
|
||||
<string name="revanced_hide_keyword_content_search_summary_on">Výsledky vyhledávání jsou filtrovány podle klíčových slov</string>
|
||||
<string name="revanced_hide_keyword_content_search_summary_off">Výsledky vyhledávání nejsou filtrovány podle klíčových slov</string>
|
||||
<string name="revanced_hide_keyword_content_subscriptions_title">Skrýt videa z odběrů podle klíčových slov</string>
|
||||
<string name="revanced_hide_keyword_content_subscriptions_summary_on">Videa na kartě odběrů jsou filtrována podle klíčových slov</string>
|
||||
<string name="revanced_hide_keyword_content_subscriptions_summary_off">Videa na kartě odběrů nejsou filtrována podle klíčových slov</string>
|
||||
<string name="revanced_hide_keyword_content_phrases_title">Klíčová slova ke skrytí</string>
|
||||
<!-- For localization it is preferred, but not required, if 'LeBlanc' is replaced with a localized name or a familiar word that has upper case letters in the middle of the word.
|
||||
This is because keywords can be in any language, and showing an example in the localized script helps convey this. -->
|
||||
@@ -349,6 +410,9 @@ Tato funkce je dostupná pouze pro starší zařízení"</string>
|
||||
<string name="revanced_hide_products_banner_title">Skrýt banner pro prohlížení produktů</string>
|
||||
<string name="revanced_hide_products_banner_summary_on">Banner je skryt</string>
|
||||
<string name="revanced_hide_products_banner_summary_off">Banner je zobrazen</string>
|
||||
<string name="revanced_hide_end_screen_store_banner_title">Skrýt koncový banner obchodu</string>
|
||||
<string name="revanced_hide_end_screen_store_banner_summary_on">Banner obchodu je skrytý</string>
|
||||
<string name="revanced_hide_end_screen_store_banner_summary_off">Banner obchodu je zobrazen</string>
|
||||
<string name="revanced_hide_player_store_shelf_title">Skrýt nákupní polici přehrávače</string>
|
||||
<string name="revanced_hide_player_store_shelf_summary_on">Nákupní police je skryta</string>
|
||||
<string name="revanced_hide_player_store_shelf_summary_off">Nákupní police je zobrazena</string>
|
||||
@@ -401,7 +465,7 @@ Tato funkce je dostupná pouze pro starší zařízení"</string>
|
||||
<string name="revanced_external_downloader_summary_on">Tlačítko pro stahování se zobrazuje v přehrávači</string>
|
||||
<string name="revanced_external_downloader_summary_off">Tlačítko pro stahování se v přehrávači nezobrazuje</string>
|
||||
<!-- 'download action button' should be translated using the same wording as the translation of 'revanced_hide_download_button_title' -->
|
||||
<string name="revanced_external_downloader_action_button_title">Tlačítko pro stahování akcí</string>
|
||||
<string name="revanced_external_downloader_action_button_title">Přepsat tlačítko akce Stahování</string>
|
||||
<string name="revanced_external_downloader_action_button_summary_on">Tlačítko pro stahování otevře váš externí stahovač</string>
|
||||
<string name="revanced_external_downloader_action_button_summary_off">Tlačítko pro stahování otevře nativní stahovač v aplikaci</string>
|
||||
<string name="revanced_external_downloader_name_title">Název balíčku stahovače</string>
|
||||
@@ -446,6 +510,9 @@ Tato funkce je dostupná pouze pro starší zařízení"</string>
|
||||
<string name="revanced_swipe_overlay_background_alpha_summary">Viditelnost pozadí překrytí gesta</string>
|
||||
<string name="revanced_swipe_threshold_title">Práh vynucení gesta</string>
|
||||
<string name="revanced_swipe_threshold_summary">Velikost prahu pro provedení gesta</string>
|
||||
<string name="revanced_swipe_change_video_title">Povolit přejetí prstem pro změnu videa</string>
|
||||
<string name="revanced_swipe_change_video_summary_on">Přejetí prstem v režimu celé obrazovky změní video na další/předchozí</string>
|
||||
<string name="revanced_swipe_change_video_summary_off">Přejetí prstem v režimu celé obrazovky nebude video měnit na další/předchozí</string>
|
||||
</patch>
|
||||
<patch id="layout.autocaptions.autoCaptionsPatch">
|
||||
<string name="revanced_auto_captions_title">Zakázat automatické titulky</string>
|
||||
@@ -585,14 +652,14 @@ Poznámka: Povolení této funkce také vynuceně skryje video reklamy"</string>
|
||||
<string name="revanced_hide_player_previous_next_buttons_title">Skrýt tlačítka pro předchozí a další video</string>
|
||||
<string name="revanced_hide_player_previous_next_buttons_summary_on">Tlačítka jsou skryta</string>
|
||||
<string name="revanced_hide_player_previous_next_buttons_summary_off">Tlačítka jsou zobrazena</string>
|
||||
<string name="revanced_hide_cast_button_title">Skrýt tlačítko pro odesílání</string>
|
||||
<string name="revanced_hide_cast_button_title">Skrýt tlačítko Odeslat</string>
|
||||
<string name="revanced_hide_cast_button_summary_on">Tlačítko pro odesílání je skryto</string>
|
||||
<string name="revanced_hide_cast_button_summary_off">Tlačítko vysílání je viditelné</string>
|
||||
<!-- This button does not display any text, but 'captions' should be translated using the same wording used as the translation of 'revanced_hide_player_flyout_captions_title' -->
|
||||
<string name="revanced_hide_captions_button_title">Skrýt tlačítko titulků</string>
|
||||
<string name="revanced_hide_captions_button_title">Skrýt tlačítko Titulky</string>
|
||||
<string name="revanced_hide_captions_button_summary_on">Tlačítko titulků je skryto</string>
|
||||
<string name="revanced_hide_captions_button_summary_off">Tlačítko titulků je zobrazeno</string>
|
||||
<string name="revanced_hide_autoplay_button_title">Skrýt tlačítko automatického přehrávání</string>
|
||||
<string name="revanced_hide_autoplay_button_title">Skrýt tlačítko Automatické přehrávání</string>
|
||||
<string name="revanced_hide_autoplay_button_summary_on">Tlačítko automatického přehrávání je skryto</string>
|
||||
<string name="revanced_hide_autoplay_button_summary_off">Tlačítko automatického přehrávání je zobrazeno</string>
|
||||
</patch>
|
||||
@@ -602,7 +669,7 @@ Poznámka: Povolení této funkce také vynuceně skryje video reklamy"</string>
|
||||
<string name="revanced_hide_endscreen_cards_summary_off">Karty s informacemi o videu jsou zobrazeny</string>
|
||||
</patch>
|
||||
<patch id="layout.hide.fullscreenambientmode.disableFullscreenAmbientModePatch">
|
||||
<string name="revanced_disable_fullscreen_ambient_mode_title">Zakázat Režim Ambient v celoobrazovkovém režimu</string>
|
||||
<string name="revanced_disable_fullscreen_ambient_mode_title">Deaktivovat okolní režim v celoobrazovkovém režimu</string>
|
||||
<string name="revanced_disable_fullscreen_ambient_mode_summary_on">Režim Ambient je zakázán</string>
|
||||
<string name="revanced_disable_fullscreen_ambient_mode_summary_off">Režim Ambient je povolen</string>
|
||||
</patch>
|
||||
@@ -629,15 +696,18 @@ Poznámka: Povolení této funkce také vynuceně skryje video reklamy"</string>
|
||||
<string name="revanced_shorts_player_screen_summary">Skrýt nebo zobrazit komponenty v přehrávači Shorts</string>
|
||||
<!-- 'home' should be translated using the same localized wording YouTube displays for the home tab. -->
|
||||
<string name="revanced_hide_shorts_home_title">Skrýt Shorts v Domů</string>
|
||||
<string name="revanced_hide_shorts_home_summary_on">Shorts jsou schovány v Domů</string>
|
||||
<string name="revanced_hide_shorts_home_summary_off">Shorts jsou zobrazeny v Domů</string>
|
||||
<string name="revanced_hide_shorts_home_summary_on">Skryto v domovskom kanáli a súvisiacich videách</string>
|
||||
<string name="revanced_hide_shorts_home_summary_off">Zobrazené v domovskom kanáli a súvisiacich videách</string>
|
||||
<!-- 'subscription' should be translated using the same localized wording YouTube displays for the subscription tab. -->
|
||||
<string name="revanced_hide_shorts_subscriptions_title">Schovat Shorts v odběrovém feedu</string>
|
||||
<string name="revanced_hide_shorts_subscriptions_summary_on">Shorts jsou v odběrovém feedu schovány</string>
|
||||
<string name="revanced_hide_shorts_subscriptions_summary_off">Shorts jsou v odběrovém feedu zobazeny</string>
|
||||
<string name="revanced_hide_shorts_subscriptions_summary_on">Skryté v odběrech</string>
|
||||
<string name="revanced_hide_shorts_subscriptions_summary_off">Zobrazeno v odběrech</string>
|
||||
<string name="revanced_hide_shorts_search_title">Skrýt Shorts ve výsledcích vyhledávání</string>
|
||||
<string name="revanced_hide_shorts_search_summary_on">Shorts jsou ve výsledcích vyhledávání skryté</string>
|
||||
<string name="revanced_hide_shorts_search_summary_off">Shorts jsou ve výsledcích vyhledávání viditelné</string>
|
||||
<string name="revanced_hide_shorts_search_summary_on">Skryté ve výsledcích vyhledávání</string>
|
||||
<string name="revanced_hide_shorts_search_summary_off">Zobrazeno ve výsledcích vyhledávání</string>
|
||||
<string name="revanced_hide_shorts_history_title">Skrýt Shorts z historie sledování</string>
|
||||
<string name="revanced_hide_shorts_history_summary_on">Skryté v historii sledování</string>
|
||||
<string name="revanced_hide_shorts_history_summary_off">Zobrazené v historii sledování</string>
|
||||
<!-- 'join' should be translated using the same localized wording YouTube displays for the button. -->
|
||||
<string name="revanced_hide_shorts_join_button_title">Skrýt tlačítko Připojit se</string>
|
||||
<string name="revanced_hide_shorts_join_button_summary_on">Tlačítko Připojit se je skryto</string>
|
||||
@@ -649,10 +719,10 @@ Poznámka: Povolení této funkce také vynuceně skryje video reklamy"</string>
|
||||
<string name="revanced_hide_shorts_paused_overlay_buttons_title">Skrýt tlačítka pozastaveného překrytí</string>
|
||||
<string name="revanced_hide_shorts_paused_overlay_buttons_summary_on">Tlačítka pozastaveného překrytí jsou skrytá</string>
|
||||
<string name="revanced_hide_shorts_paused_overlay_buttons_summary_off">Tlačítka pozastaveného překrytí jsou zobrazena</string>
|
||||
<string name="revanced_hide_shorts_shop_button_title">Skrýt tlačítko obchodu</string>
|
||||
<string name="revanced_hide_shorts_shop_button_title">Skrýt tlačítko Obchod</string>
|
||||
<string name="revanced_hide_shorts_shop_button_summary_on">Tlačítko obchodu je skryté</string>
|
||||
<string name="revanced_hide_shorts_shop_button_summary_off">Tlačítko obchodu je zobrazeno</string>
|
||||
<string name="revanced_hide_shorts_super_thanks_button_title">Skrýt tlačítko Super Thanks</string>
|
||||
<string name="revanced_hide_shorts_super_thanks_button_title">Skrýt tlačítko Koupit Super Thanks</string>
|
||||
<string name="revanced_hide_shorts_super_thanks_button_summary_on">Tlačítko Super Thanks je skryté</string>
|
||||
<string name="revanced_hide_shorts_super_thanks_button_summary_off">Tlačítko Super Thanks je zobrazeno</string>
|
||||
<string name="revanced_hide_shorts_tagged_products_title">Skrýt označené produkty</string>
|
||||
@@ -670,7 +740,7 @@ Poznámka: Povolení této funkce také vynuceně skryje video reklamy"</string>
|
||||
<string name="revanced_hide_shorts_upcoming_button_title">Skrýt tlačítko Nadcházející</string>
|
||||
<string name="revanced_hide_shorts_upcoming_button_summary_on">Tlačítko \"Další\" je skryté</string>
|
||||
<string name="revanced_hide_shorts_upcoming_button_summary_off">Tlačítko \"Další\" je zobrazeno</string>
|
||||
<string name="revanced_hide_shorts_green_screen_button_title">Skrýt tlačítko zelené obrazovky</string>
|
||||
<string name="revanced_hide_shorts_green_screen_button_title">Skrýt tlačítko Zelená obrazovka</string>
|
||||
<string name="revanced_hide_shorts_green_screen_button_summary_on">Tlačítko zelené obrazovky je skryté</string>
|
||||
<string name="revanced_hide_shorts_green_screen_button_summary_off">Tlačítko zelené obrazovky je zobrazeno</string>
|
||||
<string name="revanced_hide_shorts_hashtag_button_title">Skrýt tlačítko hashtagů</string>
|
||||
@@ -682,24 +752,24 @@ Poznámka: Povolení této funkce také vynuceně skryje video reklamy"</string>
|
||||
<string name="revanced_hide_shorts_stickers_title">Skrýt nálepky</string>
|
||||
<string name="revanced_hide_shorts_stickers_summary_on">Nálepky jsou skryté</string>
|
||||
<string name="revanced_hide_shorts_stickers_summary_off">Nálepky jsou zobrazeny</string>
|
||||
<string name="revanced_hide_shorts_like_fountain_title">Skrýt fontánu lajků</string>
|
||||
<string name="revanced_hide_shorts_like_fountain_title">Skrýt animaci s fontánou u tlačítka To se mi líbí</string>
|
||||
<string name="revanced_hide_shorts_like_fountain_summary_on">Animace fontány tlačítka lajku je skrytá</string>
|
||||
<string name="revanced_hide_shorts_like_fountain_summary_off">Animace fontány tlačítka lajku je zobrazena</string>
|
||||
<string name="revanced_hide_shorts_like_button_title">Skrýt tlačítko lajku</string>
|
||||
<string name="revanced_hide_shorts_like_button_title">Skrýt tlačítko To se mi líbí</string>
|
||||
<string name="revanced_hide_shorts_like_button_summary_on">Tlačítko lajku je skryté</string>
|
||||
<string name="revanced_hide_shorts_like_button_summary_off">Tlačítko lajku je zobrazeno</string>
|
||||
<string name="revanced_hide_shorts_dislike_button_title">Skrýt tlačítko nelíbí se</string>
|
||||
<string name="revanced_hide_shorts_dislike_button_title">Skrýt tlačítko Nelíbí se mi to</string>
|
||||
<string name="revanced_hide_shorts_dislike_button_summary_on">Tlačítko nelíbí se je skryté</string>
|
||||
<string name="revanced_hide_shorts_dislike_button_summary_off">Tlačítko nelíbí se je zobrazeno</string>
|
||||
<string name="revanced_hide_shorts_comments_button_title">Skrýt tlačítko komentářů</string>
|
||||
<string name="revanced_hide_shorts_comments_button_title">Skrýt tlačítko Komentáře</string>
|
||||
<string name="revanced_hide_shorts_comments_button_summary_on">Tlačítko komentářů je skryté</string>
|
||||
<string name="revanced_hide_shorts_comments_button_summary_off">Tlačítko komentářů je zobrazeno</string>
|
||||
<!-- 'remix' should be translated using the same localized wording YouTube displays for the button. -->
|
||||
<string name="revanced_hide_shorts_remix_button_title">Skrýt tlačítko remixu</string>
|
||||
<string name="revanced_hide_shorts_remix_button_title">Skrýt tlačítko Remix</string>
|
||||
<string name="revanced_hide_shorts_remix_button_summary_on">Tlačítko remixu je skryté</string>
|
||||
<string name="revanced_hide_shorts_remix_button_summary_off">Tlačítko remixu je zobrazeno</string>
|
||||
<!-- 'share' should be translated using the same localized wording YouTube displays for the button. -->
|
||||
<string name="revanced_hide_shorts_share_button_title">Skrýt tlačítko sdílení</string>
|
||||
<string name="revanced_hide_shorts_share_button_title">Skrýt tlačítko Sdílet</string>
|
||||
<string name="revanced_hide_shorts_share_button_summary_on">Tlačítko sdílení je skryté</string>
|
||||
<string name="revanced_hide_shorts_share_button_summary_off">Tlačítko sdílení je zobrazeno</string>
|
||||
<string name="revanced_hide_shorts_info_panel_title">Skrýt informační panel</string>
|
||||
@@ -739,6 +809,13 @@ Poznámka: Povolení této funkce také vynuceně skryje video reklamy"</string>
|
||||
<string name="revanced_hide_player_popup_panels_summary_on">Vyskakovací panely přehrávače jsou skryté</string>
|
||||
<string name="revanced_hide_player_popup_panels_summary_off">Vyskakovací panely přehrávače jsou zobrazeny</string>
|
||||
</patch>
|
||||
<patch id="layout.player.fullscreen.exitFullscreenPatch">
|
||||
<string name="revanced_exit_fullscreen_title">Ukončete režim celé obrazovky na konci videa</string>
|
||||
<string name="revanced_exit_fullscreen_entry_1">Zakázáno</string>
|
||||
<string name="revanced_exit_fullscreen_entry_2">Na výšku</string>
|
||||
<string name="revanced_exit_fullscreen_entry_3">Na šířku</string>
|
||||
<string name="revanced_exit_fullscreen_entry_4">Na výšku i na šířku</string>
|
||||
</patch>
|
||||
<patch id="layout.player.fullscreen.openVideosFullscreen">
|
||||
<string name="revanced_open_videos_fullscreen_portrait_title">Otevřít videa v režimu na celou obrazovku na výšku</string>
|
||||
<string name="revanced_open_videos_fullscreen_portrait_summary_on">Videa se otevírají na celou obrazovku</string>
|
||||
@@ -769,7 +846,7 @@ Omezení: Nelíbí se se nemusí zobrazit v režimu inkognito"</string>
|
||||
<string name="revanced_ryd_dislike_percentage_summary_on">Nelíbí se se zobrazují v procentech</string>
|
||||
<string name="revanced_ryd_dislike_percentage_summary_off">Nelíbí se se zobrazují jako číslo</string>
|
||||
<!-- Translations should use language similar to 'revanced_sb_enable_compact_skip_button' -->
|
||||
<string name="revanced_ryd_compact_layout_title">Kompaktní tlačítko lajku</string>
|
||||
<string name="revanced_ryd_compact_layout_title">Kompaktní tlačítko To se mi líbí</string>
|
||||
<string name="revanced_ryd_compact_layout_summary_on">Tlačítko lajku stylizované pro minimální šířku</string>
|
||||
<string name="revanced_ryd_compact_layout_summary_off">Tlačítko lajku stylizované pro nejlepší vzhled</string>
|
||||
<string name="revanced_ryd_toast_on_connection_error_title">Zobrazit toast, pokud API není dostupné</string>
|
||||
@@ -817,7 +894,7 @@ Tato funkce funguje nejlépe s kvalitou videa 720p nebo nižší a při použit
|
||||
</patch>
|
||||
<patch id="layout.sponsorblock.sponsorBlockResourcePatch">
|
||||
<string name="revanced_sb_enable_sb">Povolit SponsorBlock</string>
|
||||
<string name="revanced_sb_enable_sb_sum">SponsorBlock je systém s crowdsourcingem pro přeskakování otravných částí videí na YouTube</string>
|
||||
<string name="revanced_sb_enable_sb_sum">SponsorBlock je systém s participací komunity pro přeskakování otravných částí videí na YouTube</string>
|
||||
<string name="revanced_sb_appearance_category">Vzhled</string>
|
||||
<string name="revanced_sb_enable_voting">Zobrazit tlačítko pro hlasování</string>
|
||||
<string name="revanced_sb_enable_voting_sum_on">Tlačítko pro hlasování segmentu je zobrazeno</string>
|
||||
@@ -881,7 +958,7 @@ Vaše ID uživatele je jako heslo a nikdy by nemělo být sdíleno."</string>
|
||||
<string name="revanced_sb_segments_sponsor">Sponzor</string>
|
||||
<string name="revanced_sb_segments_sponsor_sum">Placená propagace, placené doporučení a přímá reklama. Ne pro autopropagace nebo bezplatné shout-outy k důvodům/tvůrcům/webovým stránkám/produktům, které se jim líbí</string>
|
||||
<string name="revanced_sb_segments_selfpromo">Nezpoplatněná/Vlastní propagace</string>
|
||||
<string name="revanced_sb_segments_selfpromo_sum">Podobné jako \"Sponzor\", ale pro nezpoplatněnou nebo vlastní propagaci. Zahrnuje sekce o zboží, darech nebo informace o tom, s kým spolupracovali</string>
|
||||
<string name="revanced_sb_segments_selfpromo_sum">Podobné jako sponzor, ale bez placené nebo vlastní propagace. Zahrnuje sekce o zboží, darech nebo informacích o tom, s kým spolupracovali</string>
|
||||
<string name="revanced_sb_segments_interaction">Připomenutí interakce (Odebírat)</string>
|
||||
<string name="revanced_sb_segments_interaction_sum">Krátké připomenutí, aby se vám líbilo, odebírali jste nebo je sledovali uprostřed obsahu. Pokud je to dlouhé nebo se týká něčeho specifického, mělo by být místo toho pod vlastní propagací</string>
|
||||
<string name="revanced_sb_segments_highlight">Zvýraznění</string>
|
||||
@@ -1006,6 +1083,23 @@ Jste připraveni k odeslání?"</string>
|
||||
<string name="revanced_sb_reset">Výchozí</string>
|
||||
<string name="revanced_sb_about">O aplikaci</string>
|
||||
<string name="revanced_sb_about_api_sum">Data poskytuje rozhraní API SponsorBlock. Klepněte zde, abyste se dozvěděli více a zobrazili si soubory ke stažení pro další platformy</string>
|
||||
</patch>
|
||||
<patch id="layout.formfactor.changeFormFactorPatch">
|
||||
<string name="revanced_change_form_factor_title">Rozvržení formuláře</string>
|
||||
<string name="revanced_change_form_factor_entry_1">Výchozí</string>
|
||||
<string name="revanced_change_form_factor_entry_2">Telefon</string>
|
||||
<string name="revanced_change_form_factor_entry_3">Tablet</string>
|
||||
<string name="revanced_change_form_factor_entry_4">Automobilový</string>
|
||||
<string name="revanced_change_form_factor_user_dialog_message">"Změny zahrnují:
|
||||
|
||||
Rozložení tabletu
|
||||
• Příspěvky komunity jsou skryté
|
||||
|
||||
Rozložení automobilu
|
||||
• Menu historie sledování je skryté
|
||||
• Karta Prozkoumat je obnovena
|
||||
• Shorts se otevírají v běžném přehrávači
|
||||
• Kanál je organizován podle témat a kanálu"</string>
|
||||
</patch>
|
||||
<patch id="layout.spoofappversion.spoofAppVersionPatch">
|
||||
<string name="revanced_spoof_app_version_title">Napodobit verzi aplikace</string>
|
||||
@@ -1020,6 +1114,7 @@ Pokud bude později vypnuta, doporučujeme vymazat data aplikace, aby se zabrán
|
||||
This is because the 'General layout' menu uses alphabetic sorting, and it functionally works better if the spoof target selector appears below the 'Spoof app version' UI switch -->
|
||||
<string name="revanced_spoof_app_version_target_title">Cíl napodobení verze aplikace</string>
|
||||
<string name="revanced_spoof_app_version_target_entry_1">19.35.36 - Obnovuje staré ikony Shorts přehrávače</string>
|
||||
<string name="revanced_spoof_app_version_target_entry_2">19.26.42 - Obnovit ikony staré navigace a panelu nástrojů</string>
|
||||
<!-- 'RYD' is 'Return YouTube Dislike' -->
|
||||
<string name="revanced_spoof_app_version_target_legacy_entry_1">18.33.40 - Obnovení RYD v režimu inkognito Shorts</string>
|
||||
<string name="revanced_spoof_app_version_target_legacy_entry_2">18.20.39 - Obnovení široké nabídky rychlosti a kvality videa</string>
|
||||
@@ -1063,12 +1158,6 @@ Pokud bude později vypnuta, doporučujeme vymazat data aplikace, aby se zabrán
|
||||
<string name="revanced_shorts_autoplay_background_summary_on">Přehrávání Shorts v pozadí se bude automaticky přehrávat</string>
|
||||
<string name="revanced_shorts_autoplay_background_summary_off">Přehrávání Shorts v pozadí se bude opakovat</string>
|
||||
</patch>
|
||||
<patch id="layout.tablet.enableTabletLayoutPatch">
|
||||
<string name="revanced_tablet_layout_title">Povolit rozvržení tabletu</string>
|
||||
<string name="revanced_tablet_layout_summary_on">Rozvržení tabletu je povoleno</string>
|
||||
<string name="revanced_tablet_layout_summary_off">Rozvržení tabletu je zakázáno</string>
|
||||
<string name="revanced_tablet_layout_user_dialog_message">Příspěvky komunity se v rozvržení tabletu nezobrazují</string>
|
||||
</patch>
|
||||
<patch id="layout.miniplayer.miniplayerPatch">
|
||||
<string name="revanced_miniplayer_screen_title">Mini přehrávač</string>
|
||||
<string name="revanced_miniplayer_screen_summary">Změnit styl minimalizovaného přehrávače v aplikaci</string>
|
||||
@@ -1129,8 +1218,10 @@ Přejeďte prstem pro rozbalení nebo zavření"</string>
|
||||
<string name="revanced_seekbar_custom_color_title">Povolit vlastní barvu posuvníku</string>
|
||||
<string name="revanced_seekbar_custom_color_summary_on">Vlasní barva posuvníku je zobrazena</string>
|
||||
<string name="revanced_seekbar_custom_color_summary_off">Původní barva posuvníku je zobrazena</string>
|
||||
<string name="revanced_seekbar_custom_color_value_title">Vlastní barva posuvníku</string>
|
||||
<string name="revanced_seekbar_custom_color_value_summary">Barva posuvníku</string>
|
||||
<string name="revanced_seekbar_custom_color_primary_title">Vlastní barva posuvníku</string>
|
||||
<string name="revanced_seekbar_custom_color_primary_summary">Barva posuvníku</string>
|
||||
<string name="revanced_seekbar_custom_color_accent_title">Vlastní zvýrazněná barva posuvníku</string>
|
||||
<string name="revanced_seekbar_custom_color_accent_summary">Zvýrazněná barva posuvníku</string>
|
||||
<string name="revanced_seekbar_custom_color_invalid">Neplatná hodnota barvy posuvníku</string>
|
||||
</patch>
|
||||
<patch id="layout.thumbnails.bypassImageRegionRestrictionsPatch">
|
||||
@@ -1232,6 +1323,7 @@ Povolením této funkce lze odemknout vyšší kvality videa"</string>
|
||||
<string name="revanced_force_original_audio_title">Vynutit původní zvuk</string>
|
||||
<string name="revanced_force_original_audio_summary_on">Používání původního zvuku</string>
|
||||
<string name="revanced_force_original_audio_summary_off">Používání výchozího zvuku</string>
|
||||
<string name="revanced_force_original_audio_not_available">Pro použití této funkce změňte typ klienta streamu na iOS</string>
|
||||
</patch>
|
||||
<patch id="video.quality.rememberVideoQualityPatch">
|
||||
<!-- Translations should use the same text as revanced_custom_playback_speeds_auto -->
|
||||
@@ -1259,6 +1351,8 @@ Povolením této funkce lze odemknout vyšší kvality videa"</string>
|
||||
<string name="revanced_custom_playback_speeds_invalid">Vlastní rychlosti musí být menší než %s</string>
|
||||
<string name="revanced_custom_playback_speeds_parse_exception">Neplatné vlastní rychlosti přehrávání</string>
|
||||
<string name="revanced_custom_playback_speeds_auto">Automaticky</string>
|
||||
<string name="revanced_speed_tap_and_hold_title">Vlastní rychlost stisknutí a podržení</string>
|
||||
<string name="revanced_speed_tap_and_hold_summary">Rychlost přehrávání 0 až 8</string>
|
||||
</patch>
|
||||
<patch id="video.speed.remember.rememberPlaybackSpeedPatch">
|
||||
<string name="revanced_remember_playback_speed_last_selected_title">Pamatovat si změny rychlosti přehrávání</string>
|
||||
@@ -1267,6 +1361,11 @@ Povolením této funkce lze odemknout vyšší kvality videa"</string>
|
||||
<string name="revanced_playback_speed_default_title">Výchozí rychlost přehrávání</string>
|
||||
<string name="revanced_remember_playback_speed_toast">Výchozí rychlost změněna na: %s</string>
|
||||
</patch>
|
||||
<patch id="video.hdr.disableHdrPatch">
|
||||
<string name="revanced_disable_hdr_video_title">Vypnout HDR video</string>
|
||||
<string name="revanced_disable_hdr_video_summary_on">HDR video je vypnuté.</string>
|
||||
<string name="revanced_disable_hdr_video_summary_off">HDR video je zapnuté.</string>
|
||||
</patch>
|
||||
<patch id="video.videoqualitymenu.restoreOldVideoQualityMenuResourcePatch">
|
||||
<string name="revanced_restore_old_video_quality_menu_title">Obnovit staré menu kvality videa</string>
|
||||
<string name="revanced_restore_old_video_quality_menu_summary_on">Staré menu kvality videa se zobrazuje</string>
|
||||
@@ -1287,62 +1386,28 @@ Povolením této funkce lze odemknout vyšší kvality videa"</string>
|
||||
Přehrávání videa nemusí fungovat"</string>
|
||||
<string name="revanced_spoof_video_streams_user_dialog_message">Vypnutí tohoto nastavení může způsobit problémy s přehráváním videa.</string>
|
||||
<string name="revanced_spoof_video_streams_client_type_title">Výchozí klient</string>
|
||||
<string name="revanced_spoof_video_streams_about_title">Napodobování vedlejších účinků</string>
|
||||
<string name="revanced_spoof_video_streams_about_summary">"• Chybí nabídka zvukových stop
|
||||
<!-- 'no auth' means no authentication -->
|
||||
<string name="revanced_spoof_video_streams_client_type_android_vr_no_auth">Android VR (bez ověření)</string>
|
||||
<string name="revanced_spoof_video_streams_ios_force_avc_title">Vynucení kodeku iOS AVC (H.264)</string>
|
||||
<string name="revanced_spoof_video_streams_ios_force_avc_summary_on">Kodek videa je vynucen na AVC (H.264)</string>
|
||||
<string name="revanced_spoof_video_streams_ios_force_avc_summary_off">Kodek videa je určen automaticky</string>
|
||||
<string name="revanced_spoof_video_streams_ios_force_avc_user_dialog_message">"Povolení této funkce může zlepšit výdrž baterie a opravit sekání videa.
|
||||
|
||||
AVC má maximální rozlišení 1080p, zvukový kodek Opus není dostupný a přehrávání videa bude používat více dat než VP9 nebo AV1."</string>
|
||||
<string name="revanced_spoof_video_streams_about_ios_tv_title">iOS spoofing vedlejší účinky</string>
|
||||
<string name="revanced_spoof_video_streams_about_ios_tv_summary">"• Filmy nebo placená videa se nemusí přehrávat
|
||||
• Stabilní hlasitost není k dispozici
|
||||
• Videa končí o 1 sekundu dříve"</string>
|
||||
<string name="revanced_spoof_video_streams_about_android_title">Vedlejší účinky spoofingu Androidu</string>
|
||||
<string name="revanced_spoof_video_streams_about_android_summary">"• Chybí nabídka zvukových stop
|
||||
• Není k dispozici stabilní hlasitost
|
||||
• Není k dispozici vynucení originálního zvuku"</string>
|
||||
<string name="revanced_spoof_video_streams_language_title">Výchozí jazyk zvukového streamu</string>
|
||||
<string name="revanced_spoof_video_streams_language_DEFAULT">Jazyk účtu</string>
|
||||
<string name="revanced_spoof_video_streams_language_AR">Arabsky</string>
|
||||
<string name="revanced_spoof_video_streams_language_AZ">Ázerbájdžánsky</string>
|
||||
<string name="revanced_spoof_video_streams_language_BG">Bulharsky</string>
|
||||
<string name="revanced_spoof_video_streams_language_BN">Bengálsky</string>
|
||||
<string name="revanced_spoof_video_streams_language_CA">Katalánsky</string>
|
||||
<string name="revanced_spoof_video_streams_language_CS">Česky</string>
|
||||
<string name="revanced_spoof_video_streams_language_DA">Dánsky</string>
|
||||
<string name="revanced_spoof_video_streams_language_DE">Německy</string>
|
||||
<string name="revanced_spoof_video_streams_language_EL">Řecky</string>
|
||||
<string name="revanced_spoof_video_streams_language_EN">Angličtina</string>
|
||||
<string name="revanced_spoof_video_streams_language_ES">Španělsky</string>
|
||||
<string name="revanced_spoof_video_streams_language_ET">Estonsky</string>
|
||||
<string name="revanced_spoof_video_streams_language_FA">Peršsky</string>
|
||||
<string name="revanced_spoof_video_streams_language_FI">Finský</string>
|
||||
<string name="revanced_spoof_video_streams_language_FR">Francouzština</string>
|
||||
<string name="revanced_spoof_video_streams_language_GU">Gudžarátština</string>
|
||||
<string name="revanced_spoof_video_streams_language_HI">Hindština</string>
|
||||
<string name="revanced_spoof_video_streams_language_HR">Chorvatština</string>
|
||||
<string name="revanced_spoof_video_streams_language_HU">Maďarština</string>
|
||||
<string name="revanced_spoof_video_streams_language_ID">Indonéština</string>
|
||||
<string name="revanced_spoof_video_streams_language_IT">Italština</string>
|
||||
<string name="revanced_spoof_video_streams_language_JA">Japonština</string>
|
||||
<string name="revanced_spoof_video_streams_language_KK">Kazaština</string>
|
||||
<string name="revanced_spoof_video_streams_language_KO">Korejština</string>
|
||||
<string name="revanced_spoof_video_streams_language_LT">Litevština</string>
|
||||
<string name="revanced_spoof_video_streams_language_LV">Lotyština</string>
|
||||
<string name="revanced_spoof_video_streams_language_MK">Makedonština</string>
|
||||
<string name="revanced_spoof_video_streams_language_MN">Mongolština</string>
|
||||
<string name="revanced_spoof_video_streams_language_MR">Maráthština</string>
|
||||
<string name="revanced_spoof_video_streams_language_MS">Malajština</string>
|
||||
<string name="revanced_spoof_video_streams_language_MY">Barmánština</string>
|
||||
<string name="revanced_spoof_video_streams_language_NL">Nizozemština</string>
|
||||
<string name="revanced_spoof_video_streams_language_OR">Odijština</string>
|
||||
<string name="revanced_spoof_video_streams_language_PA">Paňdžábština</string>
|
||||
<string name="revanced_spoof_video_streams_language_PL">Polština</string>
|
||||
<string name="revanced_spoof_video_streams_language_RO">Rumunština</string>
|
||||
<string name="revanced_spoof_video_streams_language_RU">Ruština</string>
|
||||
<string name="revanced_spoof_video_streams_language_SK">Slovenština</string>
|
||||
<string name="revanced_spoof_video_streams_language_SL">Slovinština</string>
|
||||
<string name="revanced_spoof_video_streams_language_SR">Srbština</string>
|
||||
<string name="revanced_spoof_video_streams_language_SV">Švédština</string>
|
||||
<string name="revanced_spoof_video_streams_language_SW">Svahilština</string>
|
||||
<string name="revanced_spoof_video_streams_language_TA">Tamilština</string>
|
||||
<string name="revanced_spoof_video_streams_language_TE">Telugu</string>
|
||||
<string name="revanced_spoof_video_streams_language_TH">Thajština</string>
|
||||
<string name="revanced_spoof_video_streams_language_TR">Turečtina</string>
|
||||
<string name="revanced_spoof_video_streams_language_UK">Ukrajinština</string>
|
||||
<string name="revanced_spoof_video_streams_language_UR">Urdu</string>
|
||||
<string name="revanced_spoof_video_streams_language_VI">Vietnamština</string>
|
||||
<string name="revanced_spoof_video_streams_language_ZH">Čínština</string>
|
||||
• Není k dispozici možnost vynucení originálního zvuku"</string>
|
||||
<string name="revanced_spoof_video_streams_about_no_av1">• Žádný video kodek AV1</string>
|
||||
<string name="revanced_spoof_video_streams_about_kids_videos">• Dětská videa se nemusí přehrávat, když jste odhlášení nebo v anonymním režimu</string>
|
||||
<string name="revanced_spoof_streaming_data_stats_for_nerds_title">Zobrazit ve statistikách pro nadšence</string>
|
||||
<string name="revanced_spoof_streaming_data_stats_for_nerds_summary_on">Typ klienta se zobrazuje ve statistikách pro nadšence</string>
|
||||
<string name="revanced_spoof_streaming_data_stats_for_nerds_summary_off">Klient je skrytý ve statistikách pro nadšence</string>
|
||||
<string name="revanced_spoof_video_streams_language_title">Výchozí jazyk zvukového streamu ve VR</string>
|
||||
</patch>
|
||||
</app>
|
||||
<app id="twitch">
|
||||
|
||||
@@ -23,51 +23,107 @@ Second \"item\" text"</string>
|
||||
<app id="shared">
|
||||
<patch id="misc.checks.checkEnvironmentPatch">
|
||||
<string name="revanced_check_environment_failed_title">Kontrol mislykkedes</string>
|
||||
<string name="revanced_check_environment_dialog_open_official_source_button">Åbn officielle hjemmeside</string>
|
||||
<string name="revanced_check_environment_dialog_open_official_source_button">Åbn officiel hjemmeside</string>
|
||||
<string name="revanced_check_environment_dialog_ignore_button">Ignorer</string>
|
||||
<string name="revanced_check_environment_failed_message"><h5>Denne app ser ikke ud til at være lappet af dig.</h5><br>Denne app fungerer muligvis ikke korrekt, <b>kan være skadeligt eller endda farligt at bruge</b>.<br><br>Disse kontroller antyder, at denne app er pre-lappet eller opnået fra en anden:<br><br><small>%1$s</small><br>Det anbefales kraftigt at <b>afinstallere denne app og lappe den selv</b> for at sikre, at du bruger en valideret og sikker app.<p><br>Hvis ignoreret, vil denne advarsel kun blive vist to gange.</string>
|
||||
<string name="revanced_check_environment_failed_message"><h5>Denne app ser ikke ud til at være blevet patcht af dig.</h5><br>Denne app fungerer muligvis ikke korrekt, og den <b style=\"color: red;\">kan være skadelig eller endda farlig at bruge.</b><br><br>Disse kontroller indikerer, at denne app er for-patched eller erhvervet fra en anden person:<br><br><small>%1$s</small><br>Det anbefales kraftigt at <b style=\"color: blue;\">afinstallere denne app og patche den selv</b> for at sikre, at du bruger en valideret og sikker app.<p><br>Hvis det ignoreres, vises denne advarsel kun to gange.</string>
|
||||
<string name="revanced_check_environment_not_same_patching_device">Rettet på en anden enhed</string>
|
||||
<string name="revanced_check_environment_manager_not_expected_installer">Ikke installeret af ReVanced Manager</string>
|
||||
<string name="revanced_check_environment_not_near_patch_time">Patched mere end 10 minutter siden</string>
|
||||
<string name="revanced_check_environment_not_near_patch_time_days">Patched %s dage siden</string>
|
||||
<string name="revanced_check_environment_not_near_patch_time_days">Patched for %s dage siden</string>
|
||||
<string name="revanced_check_environment_not_near_patch_time_invalid">APK byggedato er ødelagt</string>
|
||||
</patch>
|
||||
<patch id="misc.settings.settingsResourcePatch">
|
||||
<string name="revanced_settings_title">ReVanced</string>
|
||||
<string name="revanced_settings_submenu_title">Indstillinger</string>
|
||||
<string name="revanced_settings_confirm_user_dialog_title">Ønsker du at fortsætte?</string>
|
||||
<string name="revanced_settings_reset">Nulstil</string>
|
||||
<string name="revanced_settings_restart_title">Opdater og genstart</string>
|
||||
<string name="revanced_settings_restart">Genstart</string>
|
||||
<string name="revanced_settings_import">Importér</string>
|
||||
<string name="revanced_settings_import_copy">Kopiér</string>
|
||||
<string name="revanced_settings_import_reset">ReVanced indstillinger nulstillet til standard</string>
|
||||
<string name="revanced_settings_import_success">Importerede %d indstillinger</string>
|
||||
<string name="revanced_settings_import">Importer</string>
|
||||
<string name="revanced_settings_import_copy">Kopier</string>
|
||||
<string name="revanced_settings_import_reset">ReVanced-indstillinger nulstillet til standard</string>
|
||||
<string name="revanced_settings_import_success">%d indstillinger importeret</string>
|
||||
<string name="revanced_settings_import_failure_parse">Import mislykkedes: %s</string>
|
||||
<string name="revanced_pref_import_export_title">Import / Eksport</string>
|
||||
<string name="revanced_pref_import_export_summary">Importer / Eksport ReVanced indstillinger</string>
|
||||
<string name="revanced_language_title">ReVanced-sprog</string>
|
||||
<string name="revanced_language_user_dialog_message">"Oversættelser for nogle sprog mangler muligvis eller er ufuldstændige.
|
||||
|
||||
For at oversætte til nye sprog skal du besøge translate.revanced.app"</string>
|
||||
<string name="revanced_language_DEFAULT">App-sprog</string>
|
||||
<string name="revanced_language_AR">Arabisk</string>
|
||||
<string name="revanced_language_AZ">Aserbajdsjansk</string>
|
||||
<string name="revanced_language_BG">Bulgarsk</string>
|
||||
<string name="revanced_language_BN">Bengalsk</string>
|
||||
<string name="revanced_language_CA">Catalansk</string>
|
||||
<string name="revanced_language_CS">Tjekkisk</string>
|
||||
<string name="revanced_language_DA">Dansk</string>
|
||||
<string name="revanced_language_DE">Tysk</string>
|
||||
<string name="revanced_language_EL">Græsk</string>
|
||||
<string name="revanced_language_EN">Engelsk</string>
|
||||
<string name="revanced_language_ES">Spansk</string>
|
||||
<string name="revanced_language_ET">Estisk</string>
|
||||
<string name="revanced_language_FA">Persisk</string>
|
||||
<string name="revanced_language_FI">Finsk</string>
|
||||
<string name="revanced_language_FR">Fransk</string>
|
||||
<string name="revanced_language_GU">Gujarati</string>
|
||||
<string name="revanced_language_HI">Hindi</string>
|
||||
<string name="revanced_language_HR">Kroatisk</string>
|
||||
<string name="revanced_language_HU">Ungarsk</string>
|
||||
<string name="revanced_language_ID">Indonesisk</string>
|
||||
<string name="revanced_language_IT">Italiensk</string>
|
||||
<string name="revanced_language_JA">Japansk</string>
|
||||
<string name="revanced_language_KK">Kasakhisk</string>
|
||||
<string name="revanced_language_KO">Koreansk</string>
|
||||
<string name="revanced_language_LT">Litauisk</string>
|
||||
<string name="revanced_language_LV">Lettisk</string>
|
||||
<string name="revanced_language_MK">Makedonsk</string>
|
||||
<string name="revanced_language_MN">Mongolsk</string>
|
||||
<string name="revanced_language_MR">Marathi</string>
|
||||
<string name="revanced_language_MS">Malaysisk</string>
|
||||
<string name="revanced_language_MY">Burmesisk</string>
|
||||
<string name="revanced_language_NL">Hollandsk</string>
|
||||
<string name="revanced_language_OR">Odia</string>
|
||||
<string name="revanced_language_PA">Punjabi</string>
|
||||
<string name="revanced_language_PL">Polsk</string>
|
||||
<string name="revanced_language_PT">Portugisisk</string>
|
||||
<string name="revanced_language_RO">Rumænsk</string>
|
||||
<string name="revanced_language_RU">Russisk</string>
|
||||
<string name="revanced_language_SK">Slovakisk</string>
|
||||
<string name="revanced_language_SL">Slovensk</string>
|
||||
<string name="revanced_language_SR">Serbisk</string>
|
||||
<string name="revanced_language_SV">Svensk</string>
|
||||
<string name="revanced_language_SW">Swahili</string>
|
||||
<string name="revanced_language_TA">Tamil</string>
|
||||
<string name="revanced_language_TE">Telugu</string>
|
||||
<string name="revanced_language_TH">Thai</string>
|
||||
<string name="revanced_language_TR">Tyrkisk</string>
|
||||
<string name="revanced_language_UK">Ukrainisk</string>
|
||||
<string name="revanced_language_UR">Urdu</string>
|
||||
<string name="revanced_language_VI">Vietnamesisk</string>
|
||||
<string name="revanced_language_ZH">Kinesisk</string>
|
||||
<string name="revanced_pref_import_export_title">Importér/Eksportér</string>
|
||||
<string name="revanced_pref_import_export_summary">Importér/Eksportér ReVanced-indstillinger</string>
|
||||
<!-- Settings about dialog. -->
|
||||
<string name="revanced_settings_about_links_body">Du bruger ReVanced Patches version <i>%s</i></string>
|
||||
<string name="revanced_settings_about_links_dev_header">Bemærkning</string>
|
||||
<string name="revanced_settings_about_links_dev_body">Denne version er en pre-release og du kan opleve uventede problemer</string>
|
||||
<string name="revanced_settings_about_links_body">Du bruger ReVanced-patches version <i>%s</i></string>
|
||||
<string name="revanced_settings_about_links_dev_header">Bemærk</string>
|
||||
<string name="revanced_settings_about_links_dev_body">Denne version er en pre-release, og du kan opleve uventede problemer</string>
|
||||
<string name="revanced_settings_about_links_header">Officielle links</string>
|
||||
<!-- NOTE: the about strings above are duplicated in the TikTok about screen code,
|
||||
and changes made here must also be made there. -->
|
||||
</patch>
|
||||
<patch id="misc.gms.gmsCoreSupportResourcePatch">
|
||||
<!-- Translations of this should not be longer than the original English text, otherwise the text can be clipped and not entirely shown. -->
|
||||
<string name="gms_core_toast_not_installed_message">MicroG GmsCore er ikke installeret. Installér den.</string>
|
||||
<string name="gms_core_dialog_title">Behov for handling</string>
|
||||
<string name="gms_core_toast_not_installed_message">MicroG GmsCore er ikke installeret. Installer det.</string>
|
||||
<string name="gms_core_dialog_title">Handling påkrævet</string>
|
||||
<string name="gms_core_dialog_not_whitelisted_not_allowed_in_background_message">"MicroG GmsCore har ikke tilladelse til at køre i baggrunden.
|
||||
|
||||
Følg guiden \"Dræb ikke min app\" for din telefon, og følg vejledningen for din MicroG-installation.
|
||||
Følg \"Dræb ikke min app\"-vejledningen til din telefon, og anvend instruktionerne på din MicroG-installation.
|
||||
|
||||
Dette er påkrævet, for at appen kan fungere."</string>
|
||||
Dette er påkrævet for, at appen fungerer."</string>
|
||||
<string name="gms_core_dialog_open_website_text">Åbn hjemmeside</string>
|
||||
<string name="gms_core_dialog_not_whitelisted_using_battery_optimizations_message">"MicroG GmsCores batterioptimering skal deaktiveres for at forhindre problemer.
|
||||
<string name="gms_core_dialog_not_whitelisted_using_battery_optimizations_message">"MicroG GmsCore-batterioptimeringer skal deaktiveres for at forhindre problemer.
|
||||
|
||||
Deaktivering af batterioptimering for MicroG vil ikke påvirke batteriforbruget negativt.
|
||||
Deaktivering af batterioptimeringer for MicroG vil ikke påvirke batteriforbruget negativt.
|
||||
|
||||
Tryk på fortsætknappen, og tillad ændringer af optimering."</string>
|
||||
Tap på knappen Fortsæt, og tillad optimeringsændringer."</string>
|
||||
<string name="gms_core_dialog_continue_text">Fortsæt</string>
|
||||
</patch>
|
||||
</app>
|
||||
@@ -75,99 +131,101 @@ Tryk på fortsætknappen, og tillad ændringer af optimering."</string>
|
||||
<patch id="misc.settings.settingsPatch">
|
||||
<string name="revanced_settings_screen_00_about_title">Om</string>
|
||||
<string name="revanced_settings_screen_01_ads_title">Annoncer</string>
|
||||
<string name="revanced_settings_screen_02_alt_thumbnails_title">Alternative miniaturer</string>
|
||||
<string name="revanced_settings_screen_03_feed_title">Fodring</string>
|
||||
<string name="revanced_settings_screen_04_player_title">Spiller</string>
|
||||
<string name="revanced_settings_screen_05_general_title">Generelt layout</string>
|
||||
<string name="revanced_settings_screen_06_shorts_title">Shorts</string>
|
||||
<string name="revanced_settings_screen_07_seekbar_title">Søgebjælke</string>
|
||||
<string name="revanced_settings_screen_08_swipe_controls_title">Stryg kontrolelementer</string>
|
||||
<string name="revanced_settings_screen_02_alt_thumbnails_title">Alternative miniaturebilleder</string>
|
||||
<string name="revanced_settings_screen_03_feed_title">Feed</string>
|
||||
<string name="revanced_settings_screen_04_general_title">Generelt</string>
|
||||
<string name="revanced_settings_screen_05_player_title">Afspiller</string>
|
||||
<string name="revanced_settings_screen_07_seekbar_title">Søg i videon</string>
|
||||
<string name="revanced_settings_screen_08_swipe_controls_title">Strygekontroller</string>
|
||||
<string name="revanced_settings_screen_11_misc_title">Diverse</string>
|
||||
<string name="revanced_settings_screen_12_video_title">Videoer</string>
|
||||
<string name="revanced_settings_screen_12_video_title">Video</string>
|
||||
<string name="revanced_restore_old_settings_menus_title">Gendan gamle indstillingsmenuer</string>
|
||||
<string name="revanced_restore_old_settings_menus_summary_on">Gamle indstillingsmenuer er vist</string>
|
||||
<string name="revanced_restore_old_settings_menus_summary_off">Gamle indstillingsmenuer er ikke vist</string>
|
||||
</patch>
|
||||
<patch id="misc.backgroundplayback.backgroundPlaybackPatch">
|
||||
<string name="revanced_shorts_disable_background_playback_title">Deaktiver afspilning af Shorts i baggrunden</string>
|
||||
<string name="revanced_shorts_disable_background_playback_summary_on">Afspilning af Shorts i baggrunden er deaktiveret</string>
|
||||
<string name="revanced_shorts_disable_background_playback_summary_off">Afspilning af Shorts i baggrunden er aktiveret</string>
|
||||
<string name="revanced_shorts_disable_background_playback_title">Deaktiver baggrundsafspilning af Shorts</string>
|
||||
<string name="revanced_shorts_disable_background_playback_summary_on">Baggrundsafspilning af Shorts er deaktiveret</string>
|
||||
<string name="revanced_shorts_disable_background_playback_summary_off">Baggrundsafspilning af Shorts er aktiveret</string>
|
||||
</patch>
|
||||
<patch id="misc.debugging.enableDebuggingPatch">
|
||||
<string name="revanced_debug_screen_title">Fejlfinding</string>
|
||||
<string name="revanced_debug_screen_summary">Aktiver eller deaktiver fejlfindingsindstillinger</string>
|
||||
<string name="revanced_debug_title">Debug logning</string>
|
||||
<string name="revanced_debug_summary_on">Debug logs er aktiveret</string>
|
||||
<string name="revanced_debug_summary_off">Debug logs er deaktiveret</string>
|
||||
<string name="revanced_debug_protobuffer_title">Log protokol buffer</string>
|
||||
<string name="revanced_debug_protobuffer_summary_on">Debug logs indeholder proto buffer</string>
|
||||
<string name="revanced_debug_protobuffer_summary_off">Debug logs indeholder ikke proto buffer</string>
|
||||
<string name="revanced_debug_stacktrace_title">Log stak spor</string>
|
||||
<string name="revanced_debug_stacktrace_summary_on">Debug logs omfatter stack trace</string>
|
||||
<string name="revanced_debug_stacktrace_summary_off">Debug logs indeholder ikke stack trace</string>
|
||||
<string name="revanced_debug_toast_on_error_title">Vis toast på ReVanced fejl</string>
|
||||
<string name="revanced_debug_toast_on_error_summary_on">Toast vist, hvis der opstår fejl</string>
|
||||
<string name="revanced_debug_toast_on_error_summary_off">Toast ikke vist, hvis der opstår fejl</string>
|
||||
<string name="revanced_debug_toast_on_error_user_dialog_message">"Deaktivering af fejl-toasts skjuler alle ReVanced-fejlmeddelelser.
|
||||
<string name="revanced_debug_screen_summary">Aktivér eller deaktiver fejlfindingsindstillinger</string>
|
||||
<string name="revanced_debug_title">Fejlfindingslogning</string>
|
||||
<string name="revanced_debug_summary_on">Fejlfindingslogge er aktiveret</string>
|
||||
<string name="revanced_debug_summary_off">Fejlfindingslogge er deaktiveret</string>
|
||||
<string name="revanced_debug_protobuffer_title">Logprotokolbuffer</string>
|
||||
<string name="revanced_debug_protobuffer_summary_on">Fejlfindingslogge inkluderer protobuffer</string>
|
||||
<string name="revanced_debug_protobuffer_summary_off">Fejlfindingslogge inkluderer ikke protobuffer</string>
|
||||
<string name="revanced_debug_stacktrace_title">Logstakspor</string>
|
||||
<string name="revanced_debug_stacktrace_summary_on">Fejlfindingslogge inkluderer stakspor</string>
|
||||
<string name="revanced_debug_stacktrace_summary_off">Fejlfindingslogge inkluderer ikke stakspor</string>
|
||||
<string name="revanced_debug_toast_on_error_title">Vis toastbesked ved ReVanced-fejl</string>
|
||||
<string name="revanced_debug_toast_on_error_summary_on">Toast vist, hvis der opstår en fejl</string>
|
||||
<string name="revanced_debug_toast_on_error_summary_off">Toast vises ikke, hvis der opstår en fejl</string>
|
||||
<string name="revanced_debug_toast_on_error_user_dialog_message">"Hvis du deaktiverer fejl-toasts, skjules alle ReVanced-fejlmeddelelser.
|
||||
|
||||
Du vil ikke blive underrettet om uventede hændelser."</string>
|
||||
Du modtager ikke notifikationer om uventede hændelser."</string>
|
||||
</patch>
|
||||
<patch id="layout.hide.general.hideLayoutComponentsPatch">
|
||||
<string name="revanced_disable_like_subscribe_glow_title">Deaktivér som / abonnér knap glow</string>
|
||||
<string name="revanced_disable_like_subscribe_glow_summary_on">Ligesom og abonnér knap vil ikke gløde når nævnt</string>
|
||||
<string name="revanced_disable_like_subscribe_glow_summary_off">Ligesom og abonnér knappen vil gløde, når nævnt</string>
|
||||
<string name="revanced_disable_like_subscribe_glow_title">Deaktiver lykke- og abonnér-knappens glød</string>
|
||||
<string name="revanced_disable_like_subscribe_glow_summary_on">Lykke- og abonnér-knappen gløder ikke, når den nævnes</string>
|
||||
<string name="revanced_disable_like_subscribe_glow_summary_off">Lykke- og abonnér-knappen gløder, når den nævnes</string>
|
||||
<string name="revanced_hide_album_cards_title">Skjul albumkort</string>
|
||||
<string name="revanced_hide_album_cards_summary_on">Albumkort er skjult</string>
|
||||
<string name="revanced_hide_album_cards_summary_off">Albumkort vises</string>
|
||||
<string name="revanced_hide_crowdfunding_box_title">Skjul crowdfunding boks</string>
|
||||
<string name="revanced_hide_crowdfunding_box_summary_on">Crowdfunding boks er skjult</string>
|
||||
<string name="revanced_hide_crowdfunding_box_summary_off">Crowdfunding boks er vist</string>
|
||||
<string name="revanced_hide_floating_microphone_button_title">Skjul flydende mikrofon knap</string>
|
||||
<string name="revanced_hide_floating_microphone_button_summary_on">Mikrofon knap skjult</string>
|
||||
<string name="revanced_hide_floating_microphone_button_summary_off">Mikrofon knap vist</string>
|
||||
<string name="revanced_hide_crowdfunding_box_title">Skjul crowdfunding-boks</string>
|
||||
<string name="revanced_hide_crowdfunding_box_summary_on">Crowdfunding-boks er skjult</string>
|
||||
<string name="revanced_hide_crowdfunding_box_summary_off">Crowdfunding-boks er vist</string>
|
||||
<string name="revanced_hide_floating_microphone_button_title">Skjul flydende mikrofonknap</string>
|
||||
<string name="revanced_hide_floating_microphone_button_summary_on">Mikrofonknap er skjult</string>
|
||||
<string name="revanced_hide_floating_microphone_button_summary_off">Mikrofonknap er vist</string>
|
||||
<string name="revanced_hide_channel_watermark_title">Skjul kanalvandmærke</string>
|
||||
<string name="revanced_hide_channel_watermark_summary_on">Vandmærke er skjult</string>
|
||||
<string name="revanced_hide_channel_watermark_summary_off">Vandmærke er vist</string>
|
||||
<string name="revanced_hide_horizontal_shelves_title">Skjul vandrette hylder</string>
|
||||
<string name="revanced_hide_horizontal_shelves_summary_on">"Hylder er skjult, f.eks.:
|
||||
• Nye nyheder
|
||||
• Se videre
|
||||
• Seneste nyheder
|
||||
• Fortsæt med at se
|
||||
• Udforsk flere kanaler
|
||||
• Indkøb
|
||||
• Se det igen"</string>
|
||||
• Shopping
|
||||
• Se igen"</string>
|
||||
<string name="revanced_hide_horizontal_shelves_summary_off">Hylder er vist</string>
|
||||
<!-- 'Join' should be translated using the same localized wording YouTube displays.
|
||||
This appears in the video player for certain videos. -->
|
||||
<string name="revanced_hide_join_membership_button_title">Skjul \'Tilmeld\' knap</string>
|
||||
<string name="revanced_hide_join_membership_button_summary_on">Knap er skjult</string>
|
||||
<string name="revanced_hide_join_membership_button_summary_off">Knap vises</string>
|
||||
<string name="revanced_hide_join_membership_button_title">Skjul knappen \'Tilmeld\'</string>
|
||||
<string name="revanced_hide_join_membership_button_summary_on">Knappen er skjult</string>
|
||||
<string name="revanced_hide_join_membership_button_summary_off">Knappen er vist</string>
|
||||
<!-- 'For you' should be translated using the same localized wording YouTube displays. -->
|
||||
<string name="revanced_hide_for_you_shelf_title">Skjul \'For dig\' hylde på kanalsiden</string>
|
||||
<string name="revanced_hide_for_you_shelf_summary_on">Hylden er skjult</string>
|
||||
<string name="revanced_hide_for_you_shelf_title">Skjul hylden \'Til dig\' på kanalsiden</string>
|
||||
<string name="revanced_hide_for_you_shelf_summary_on">Hylde er skjult</string>
|
||||
<string name="revanced_hide_for_you_shelf_summary_off">Hylde er vist</string>
|
||||
<!-- 'Notify me' should be translated using the same localized wording YouTube displays.
|
||||
This item appear in the subscription feed for future livestreams or unreleased videos. -->
|
||||
<string name="revanced_hide_notify_me_button_title">Skjul knappen \'Meddel mig\'</string>
|
||||
<string name="revanced_hide_notify_me_button_summary_on">Knap er skjult</string>
|
||||
<string name="revanced_hide_notify_me_button_summary_off">Knap vises</string>
|
||||
<string name="revanced_hide_notify_me_button_title">Skjul knappen \'Underret mig\'</string>
|
||||
<string name="revanced_hide_notify_me_button_summary_on">Knappen er skjult</string>
|
||||
<string name="revanced_hide_notify_me_button_summary_off">Knappen er vist</string>
|
||||
<!-- 'People also watch' should be translated using the same localized wording YouTube displays. -->
|
||||
<string name="revanced_hide_search_result_recommendations_title">Skjul \'Folk kiggede også på\' anbefalinger</string>
|
||||
<string name="revanced_hide_search_result_recommendations_title">Skjul anbefalingerne \'Andre så også\'</string>
|
||||
<string name="revanced_hide_search_result_recommendations_summary_on">Anbefalinger er skjult</string>
|
||||
<string name="revanced_hide_search_result_recommendations_summary_off">Anbefalinger er vist</string>
|
||||
<string name="revanced_hide_search_result_recommendations_summary_off">Anbefalinger vises</string>
|
||||
<!-- 'Show more' should be translated with the same localized wording that YouTube displays.
|
||||
This button usually appears when searching for a YT creator. -->
|
||||
<string name="revanced_hide_show_more_button_title">Skjul \'Vis mere\'-knap</string>
|
||||
<string name="revanced_hide_show_more_button_summary_on">Knap er skjult</string>
|
||||
<string name="revanced_hide_show_more_button_summary_off">Knap vises</string>
|
||||
<string name="revanced_hide_timed_reactions_title">Skjul tidsrelaterede reaktioner</string>
|
||||
<string name="revanced_hide_timed_reactions_summary_on">Tidsbegrænsede reaktioner er skjult</string>
|
||||
<string name="revanced_hide_timed_reactions_summary_off">Tidsbegrænsede reaktioner er vist</string>
|
||||
<string name="revanced_hide_show_more_button_title">Skjul knappen \'Vis mere\'</string>
|
||||
<string name="revanced_hide_show_more_button_summary_on">Knappen er skjult</string>
|
||||
<string name="revanced_hide_show_more_button_summary_off">Knappen er vist</string>
|
||||
<string name="revanced_hide_timed_reactions_title">Skjul tidsreaktioner</string>
|
||||
<string name="revanced_hide_timed_reactions_summary_on">Tidsreaktioner skjules</string>
|
||||
<string name="revanced_hide_timed_reactions_summary_off">Tidsreaktioner vises</string>
|
||||
<string name="revanced_hide_channel_guidelines_title">Skjul kanalretningslinjer</string>
|
||||
<string name="revanced_hide_channel_guidelines_summary_on">Kanalretningslinjer er skjult</string>
|
||||
<string name="revanced_hide_channel_guidelines_summary_off">Kanalretningslinjer er vist</string>
|
||||
<string name="revanced_hide_chips_shelf_title">Skjul chips hylde</string>
|
||||
<string name="revanced_hide_chips_shelf_summary_on">Chips hylde er skjult</string>
|
||||
<string name="revanced_hide_chips_shelf_summary_off">Chips hylde er vist</string>
|
||||
<string name="revanced_hide_expandable_chip_title">Skjul udvidelig chip under videoer</string>
|
||||
<string name="revanced_hide_expandable_chip_summary_on">Kan udvides chips er skjult</string>
|
||||
<string name="revanced_hide_expandable_chip_summary_off">Udvidede jetoner vises</string>
|
||||
<string name="revanced_hide_expandable_chip_title">Skjul udvidelige kort under videoer</string>
|
||||
<string name="revanced_hide_expandable_chip_summary_on">Udvidelige kort er skjult</string>
|
||||
<string name="revanced_hide_expandable_chip_summary_off">Udvidelige kort er vist</string>
|
||||
<string name="revanced_hide_community_posts_title">Skjul fællesskabs indlæg</string>
|
||||
<string name="revanced_hide_community_posts_summary_on">Fællesskabs indlæg er skjult</string>
|
||||
<string name="revanced_hide_community_posts_summary_off">Fællesskabs indlæg er vist</string>
|
||||
@@ -228,6 +286,9 @@ Du vil ikke blive underrettet om uventede hændelser."</string>
|
||||
<string name="revanced_hide_chapters_section_title">Skjul kapitler afsnit</string>
|
||||
<string name="revanced_hide_chapters_section_summary_on">Kapitler sektion er skjult</string>
|
||||
<string name="revanced_hide_chapters_section_summary_off">Kapitel afsnit er vist</string>
|
||||
<string name="revanced_hide_how_this_was_made_section_title">Skjul sektionen \"Sådan blev dette indhold lavet\"</string>
|
||||
<string name="revanced_hide_how_this_was_made_section_summary_on">Sektionen \"Sådan blev dette indhold lavet\" er skjult</string>
|
||||
<string name="revanced_hide_how_this_was_made_section_summary_off">Sektionen \"Sådan blev dette indhold lavet\" vises</string>
|
||||
<string name="revanced_hide_podcast_section_title">Skjul \'Udforsk podcast\'-sektionen</string>
|
||||
<string name="revanced_hide_podcast_section_summary_on">\'Udforsk podcast\' sektionen er skjult</string>
|
||||
<string name="revanced_hide_podcast_section_summary_off">\'Udforsk podcast\' sektionen vises</string>
|
||||
@@ -270,7 +331,7 @@ Du vil ikke blive underrettet om uventede hændelser."</string>
|
||||
<string name="revanced_hide_comments_preview_comment_title">Skjul forhåndsvisning kommentar</string>
|
||||
<string name="revanced_hide_comments_preview_comment_summary_on">Forhåndsvisning kommentar er skjult</string>
|
||||
<string name="revanced_hide_comments_preview_comment_summary_off">Forhåndsvis kommentar er vist</string>
|
||||
<string name="revanced_hide_comments_thanks_button_title">Skjul tasteknap</string>
|
||||
<string name="revanced_hide_comments_thanks_button_title">Skjul \"Tak\"-knap</string>
|
||||
<string name="revanced_hide_comments_thanks_button_summary_on">Tak knappen er skjult</string>
|
||||
<string name="revanced_hide_comments_thanks_button_summary_off">Tak knappen er vist</string>
|
||||
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_title">Skjul tidsstempel og emoji knapper</string>
|
||||
@@ -297,12 +358,12 @@ Hvis et Doodle vises i øjeblikket i din region, og denne skjuleindstilling er a
|
||||
<string name="revanced_hide_keyword_content_home_title">Skjul hjemmevideoer med søgeord</string>
|
||||
<string name="revanced_hide_keyword_content_home_summary_on">Videoer i fanen hjemme filtreres af søgeord</string>
|
||||
<string name="revanced_hide_keyword_content_home_summary_off">Videoer i fanen Hjem er ikke filtreret af søgeord</string>
|
||||
<string name="revanced_hide_keyword_content_subscriptions_title">Skjul abonnementsvideoer med søgeord</string>
|
||||
<string name="revanced_hide_keyword_content_subscriptions_summary_on">Videoer i fanen Abonnementer filtreres af søgeord</string>
|
||||
<string name="revanced_hide_keyword_content_subscriptions_summary_off">Videoer i fanen Abonnementer filtreres ikke af søgeord</string>
|
||||
<string name="revanced_hide_keyword_content_search_title">Skjul søgeresultater efter søgeord</string>
|
||||
<string name="revanced_hide_keyword_content_search_summary_on">Søgeresultater filtreres af søgeord</string>
|
||||
<string name="revanced_hide_keyword_content_search_summary_off">Søgeresultater filtreres ikke af søgeord</string>
|
||||
<string name="revanced_hide_keyword_content_subscriptions_title">Skjul abonnementsvideoer med søgeord</string>
|
||||
<string name="revanced_hide_keyword_content_subscriptions_summary_on">Videoer i fanen Abonnementer filtreres af søgeord</string>
|
||||
<string name="revanced_hide_keyword_content_subscriptions_summary_off">Videoer i fanen Abonnementer filtreres ikke af søgeord</string>
|
||||
<string name="revanced_hide_keyword_content_phrases_title">Nøgleord at skjule</string>
|
||||
<!-- For localization it is preferred, but not required, if 'LeBlanc' is replaced with a localized name or a familiar word that has upper case letters in the middle of the word.
|
||||
This is because keywords can be in any language, and showing an example in the localized script helps convey this. -->
|
||||
@@ -349,6 +410,9 @@ Denne funktion er kun tilgængelig for ældre enheder"</string>
|
||||
<string name="revanced_hide_products_banner_title">Skjul banner for at se produkter</string>
|
||||
<string name="revanced_hide_products_banner_summary_on">Banner er skjult</string>
|
||||
<string name="revanced_hide_products_banner_summary_off">Banner er vist</string>
|
||||
<string name="revanced_hide_end_screen_store_banner_title">Skjul banner fra butikken på slutskærmen</string>
|
||||
<string name="revanced_hide_end_screen_store_banner_summary_on">Gem banner skjult</string>
|
||||
<string name="revanced_hide_end_screen_store_banner_summary_off">Gem banner vises</string>
|
||||
<string name="revanced_hide_player_store_shelf_title">Skjul spillerens indkøbshylde</string>
|
||||
<string name="revanced_hide_player_store_shelf_summary_on">Shopping hylde er skjult</string>
|
||||
<string name="revanced_hide_player_store_shelf_summary_off">Shopping hylde er vist</string>
|
||||
@@ -401,7 +465,7 @@ Denne funktion er kun tilgængelig for ældre enheder"</string>
|
||||
<string name="revanced_external_downloader_summary_on">Download-knap vist i afspilleren</string>
|
||||
<string name="revanced_external_downloader_summary_off">Download-knappen vises ikke i afspilleren</string>
|
||||
<!-- 'download action button' should be translated using the same wording as the translation of 'revanced_hide_download_button_title' -->
|
||||
<string name="revanced_external_downloader_action_button_title">Tilsidesæt download-handlingsknap</string>
|
||||
<string name="revanced_external_downloader_action_button_title">Overskriv knappen Download-handling</string>
|
||||
<string name="revanced_external_downloader_action_button_summary_on">Download-knappen åbner din eksterne downloader</string>
|
||||
<string name="revanced_external_downloader_action_button_summary_off">Download-knappen åbner den indfødte in-app downloader</string>
|
||||
<string name="revanced_external_downloader_name_title">Downloader pakkenavn</string>
|
||||
@@ -446,6 +510,9 @@ Denne funktion er kun tilgængelig for ældre enheder"</string>
|
||||
<string name="revanced_swipe_overlay_background_alpha_summary">Synligheden af swipe overlay baggrund</string>
|
||||
<string name="revanced_swipe_threshold_title">Stryg størrelse tærskel</string>
|
||||
<string name="revanced_swipe_threshold_summary">Beløbet for tærskelværdi for stryg der skal ske</string>
|
||||
<string name="revanced_swipe_change_video_title">Aktivér swipe for at skifte videoer</string>
|
||||
<string name="revanced_swipe_change_video_summary_on">Strygning i fuldskærmstilstand vil ændre til den næste/forrige video</string>
|
||||
<string name="revanced_swipe_change_video_summary_off">Strygning i fuldskærmstilstand vil ikke ændre til den næste/forrige video</string>
|
||||
</patch>
|
||||
<patch id="layout.autocaptions.autoCaptionsPatch">
|
||||
<string name="revanced_auto_captions_title">Deaktivér auto-billedtekster</string>
|
||||
@@ -585,14 +652,14 @@ Bemærk: Aktivering af dette skjuler også videoannoncer"</string>
|
||||
<string name="revanced_hide_player_previous_next_buttons_title">Skjul forrige & næste video knapper</string>
|
||||
<string name="revanced_hide_player_previous_next_buttons_summary_on">Knapper er skjult</string>
|
||||
<string name="revanced_hide_player_previous_next_buttons_summary_off">Knapper vises</string>
|
||||
<string name="revanced_hide_cast_button_title">Skjul cast-knap</string>
|
||||
<string name="revanced_hide_cast_button_title">Skjul Cast-knappen</string>
|
||||
<string name="revanced_hide_cast_button_summary_on">Cast-knappen er skjult</string>
|
||||
<string name="revanced_hide_cast_button_summary_off">Cast knap er vist</string>
|
||||
<!-- This button does not display any text, but 'captions' should be translated using the same wording used as the translation of 'revanced_hide_player_flyout_captions_title' -->
|
||||
<string name="revanced_hide_captions_button_title">Skjul billedtekst knap</string>
|
||||
<string name="revanced_hide_captions_button_title">Skjul undertekstknappen</string>
|
||||
<string name="revanced_hide_captions_button_summary_on">Undertekster knappen er skjult</string>
|
||||
<string name="revanced_hide_captions_button_summary_off">Underskriftsknappen vises</string>
|
||||
<string name="revanced_hide_autoplay_button_title">Skjul autoplay knap</string>
|
||||
<string name="revanced_hide_autoplay_button_title">Skjul knappen Automatisk afspilning</string>
|
||||
<string name="revanced_hide_autoplay_button_summary_on">Automatisk spil-knap er skjult</string>
|
||||
<string name="revanced_hide_autoplay_button_summary_off">Automatisk afspilningsknap vises</string>
|
||||
</patch>
|
||||
@@ -602,7 +669,7 @@ Bemærk: Aktivering af dette skjuler også videoannoncer"</string>
|
||||
<string name="revanced_hide_endscreen_cards_summary_off">Kort til slutskærm vises</string>
|
||||
</patch>
|
||||
<patch id="layout.hide.fullscreenambientmode.disableFullscreenAmbientModePatch">
|
||||
<string name="revanced_disable_fullscreen_ambient_mode_title">Deaktivér omgivende tilstand i fuld skærm</string>
|
||||
<string name="revanced_disable_fullscreen_ambient_mode_title">Deaktiver Ambient-tilstand i fuldskærm</string>
|
||||
<string name="revanced_disable_fullscreen_ambient_mode_summary_on">Omgivelsestilstand deaktiveret</string>
|
||||
<string name="revanced_disable_fullscreen_ambient_mode_summary_off">Omgivelsestilstand aktiveret</string>
|
||||
</patch>
|
||||
@@ -629,48 +696,51 @@ Bemærk: Aktivering af dette skjuler også videoannoncer"</string>
|
||||
<string name="revanced_shorts_player_screen_summary">Skjul eller vis komponenter i Shorts-afspilleren</string>
|
||||
<!-- 'home' should be translated using the same localized wording YouTube displays for the home tab. -->
|
||||
<string name="revanced_hide_shorts_home_title">Skjul Shorts i hjemmefeed</string>
|
||||
<string name="revanced_hide_shorts_home_summary_on">Shorts i hjemmet feed er skjult</string>
|
||||
<string name="revanced_hide_shorts_home_summary_off">Shorts i hjemmet feed er vist</string>
|
||||
<string name="revanced_hide_shorts_home_summary_on">Skjult i startsiden og relaterede videoer</string>
|
||||
<string name="revanced_hide_shorts_home_summary_off">Vises i startsiden og relaterede videoer</string>
|
||||
<!-- 'subscription' should be translated using the same localized wording YouTube displays for the subscription tab. -->
|
||||
<string name="revanced_hide_shorts_subscriptions_title">Skjul Shorts i abonnementsfeed</string>
|
||||
<string name="revanced_hide_shorts_subscriptions_summary_on">Shorts i abonnementsfeed er skjult</string>
|
||||
<string name="revanced_hide_shorts_subscriptions_summary_off">Shorts i abonnementsfeed vises</string>
|
||||
<string name="revanced_hide_shorts_subscriptions_summary_on">Skjult i abonnementsfeedet</string>
|
||||
<string name="revanced_hide_shorts_subscriptions_summary_off">Vises i abonnementsfeedet</string>
|
||||
<string name="revanced_hide_shorts_search_title">Skjul Shorts i søgeresultater</string>
|
||||
<string name="revanced_hide_shorts_search_summary_on">Shorts i søgeresultater er skjult</string>
|
||||
<string name="revanced_hide_shorts_search_summary_off">Korte i søgeresultater vises</string>
|
||||
<string name="revanced_hide_shorts_search_summary_on">Skjult i søgeresultater</string>
|
||||
<string name="revanced_hide_shorts_search_summary_off">Vises i søgeresultater</string>
|
||||
<string name="revanced_hide_shorts_history_title">Skjul shorts i historik</string>
|
||||
<string name="revanced_hide_shorts_history_summary_on">Skjult i historikken</string>
|
||||
<string name="revanced_hide_shorts_history_summary_off">Vises i historik</string>
|
||||
<!-- 'join' should be translated using the same localized wording YouTube displays for the button. -->
|
||||
<string name="revanced_hide_shorts_join_button_title">Skjul tilmeldingsknap</string>
|
||||
<string name="revanced_hide_shorts_join_button_title">Skjul knappen Deltag</string>
|
||||
<string name="revanced_hide_shorts_join_button_summary_on">Deltag-knappen er skjult</string>
|
||||
<string name="revanced_hide_shorts_join_button_summary_off">Tilmeldingsknappen vises</string>
|
||||
<!-- 'subscribe' should be translated using the same localized wording YouTube displays for the button. -->
|
||||
<string name="revanced_hide_shorts_subscribe_button_title">Skjul abonnentknap</string>
|
||||
<string name="revanced_hide_shorts_subscribe_button_title">Skjul knappen Abonner</string>
|
||||
<string name="revanced_hide_shorts_subscribe_button_summary_on">Abonnement knappen er skjult</string>
|
||||
<string name="revanced_hide_shorts_subscribe_button_summary_off">Knappen Abonnér vises</string>
|
||||
<string name="revanced_hide_shorts_paused_overlay_buttons_title">Skjul overlay knapper på pause</string>
|
||||
<string name="revanced_hide_shorts_paused_overlay_buttons_summary_on">Overlay-knapper på pause er skjult</string>
|
||||
<string name="revanced_hide_shorts_paused_overlay_buttons_summary_off">Overlay-knapper på pause vises</string>
|
||||
<string name="revanced_hide_shorts_shop_button_title">Skjul butiksknap</string>
|
||||
<string name="revanced_hide_shorts_shop_button_title">Skjul knappen Shop</string>
|
||||
<string name="revanced_hide_shorts_shop_button_summary_on">Butiksknap er skjult</string>
|
||||
<string name="revanced_hide_shorts_shop_button_summary_off">Butiksknappen er vist</string>
|
||||
<string name="revanced_hide_shorts_super_thanks_button_title">Skjul super tak knap</string>
|
||||
<string name="revanced_hide_shorts_super_thanks_button_summary_on">Super tak knappen er skjult</string>
|
||||
<string name="revanced_hide_shorts_super_thanks_button_summary_off">Super tak knappen er vist</string>
|
||||
<string name="revanced_hide_shorts_super_thanks_button_title">Skjul knappen Køb Super Thanks</string>
|
||||
<string name="revanced_hide_shorts_super_thanks_button_summary_on">Knappen Super Thanks er skjult</string>
|
||||
<string name="revanced_hide_shorts_super_thanks_button_summary_off">Knappen Super Thanks vises</string>
|
||||
<string name="revanced_hide_shorts_tagged_products_title">Skjul taggede varer</string>
|
||||
<string name="revanced_hide_shorts_tagged_products_summary_on">Tagged produkter er skjult</string>
|
||||
<string name="revanced_hide_shorts_tagged_products_summary_off">Tagged produkter er vist</string>
|
||||
<string name="revanced_hide_shorts_location_label_title">Skjul placeringsetiket</string>
|
||||
<string name="revanced_hide_shorts_location_label_summary_on">Placeringsetiket er skjult</string>
|
||||
<string name="revanced_hide_shorts_location_label_summary_off">Placeringsetiket er vist</string>
|
||||
<string name="revanced_hide_shorts_save_sound_button_title">Skjul gem musik knap</string>
|
||||
<string name="revanced_hide_shorts_save_sound_button_title">Skjul knappen Gem musik</string>
|
||||
<string name="revanced_hide_shorts_save_sound_button_summary_on">Gem musik knap er skjult</string>
|
||||
<string name="revanced_hide_shorts_save_sound_button_summary_off">Gem musik knap er vist</string>
|
||||
<string name="revanced_hide_shorts_use_template_button_title">Skjul brug skabelon knap</string>
|
||||
<string name="revanced_hide_shorts_use_template_button_title">Skjul knappen Brug skabelon</string>
|
||||
<string name="revanced_hide_shorts_use_template_button_summary_on">Brug skabelon knappen er skjult</string>
|
||||
<string name="revanced_hide_shorts_use_template_button_summary_off">Brug skabelon knappen er vist</string>
|
||||
<string name="revanced_hide_shorts_upcoming_button_title">Skjul kommende knap</string>
|
||||
<string name="revanced_hide_shorts_upcoming_button_title">Skjul knappen Kommende</string>
|
||||
<string name="revanced_hide_shorts_upcoming_button_summary_on">Kommende knap er skjult</string>
|
||||
<string name="revanced_hide_shorts_upcoming_button_summary_off">Kommende knap vises</string>
|
||||
<string name="revanced_hide_shorts_green_screen_button_title">Skjul grøn skærm knap</string>
|
||||
<string name="revanced_hide_shorts_green_screen_button_title">Skjul knappen Grøn skærm</string>
|
||||
<string name="revanced_hide_shorts_green_screen_button_summary_on">Grøn skærmknap er skjult</string>
|
||||
<string name="revanced_hide_shorts_green_screen_button_summary_off">Grøn skærmknap vises</string>
|
||||
<string name="revanced_hide_shorts_hashtag_button_title">Skjul hashtag knap</string>
|
||||
@@ -682,24 +752,24 @@ Bemærk: Aktivering af dette skjuler også videoannoncer"</string>
|
||||
<string name="revanced_hide_shorts_stickers_title">Skjul klistermærker</string>
|
||||
<string name="revanced_hide_shorts_stickers_summary_on">Klistermærker er skjult</string>
|
||||
<string name="revanced_hide_shorts_stickers_summary_off">Klistermærker vises</string>
|
||||
<string name="revanced_hide_shorts_like_fountain_title">Skjul som springvand</string>
|
||||
<string name="revanced_hide_shorts_like_fountain_title">Skjul knap for springvand-animation af like-knap</string>
|
||||
<string name="revanced_hide_shorts_like_fountain_summary_on">Ligesom knap springvand animation er skjult</string>
|
||||
<string name="revanced_hide_shorts_like_fountain_summary_off">Animation af springvand vises som knap</string>
|
||||
<string name="revanced_hide_shorts_like_button_title">Skjul lignende knap</string>
|
||||
<string name="revanced_hide_shorts_like_button_title">Skjul knappen Like</string>
|
||||
<string name="revanced_hide_shorts_like_button_summary_on">Ligesom knappen er skjult</string>
|
||||
<string name="revanced_hide_shorts_like_button_summary_off">Lideknap vises</string>
|
||||
<string name="revanced_hide_shorts_dislike_button_title">Skjul dislike-knap</string>
|
||||
<string name="revanced_hide_shorts_dislike_button_title">Skjul knappen Dislike</string>
|
||||
<string name="revanced_hide_shorts_dislike_button_summary_on">Dislike knap er skjult</string>
|
||||
<string name="revanced_hide_shorts_dislike_button_summary_off">Dislike knappen er vist</string>
|
||||
<string name="revanced_hide_shorts_comments_button_title">Skjul kommentar-knap</string>
|
||||
<string name="revanced_hide_shorts_comments_button_title">Skjul knappen Kommentarer</string>
|
||||
<string name="revanced_hide_shorts_comments_button_summary_on">Knappen Kommentarer er skjult</string>
|
||||
<string name="revanced_hide_shorts_comments_button_summary_off">Knappen Kommentarer vises</string>
|
||||
<!-- 'remix' should be translated using the same localized wording YouTube displays for the button. -->
|
||||
<string name="revanced_hide_shorts_remix_button_title">Skjul remix-knap</string>
|
||||
<string name="revanced_hide_shorts_remix_button_title">Skjul knappen Remix</string>
|
||||
<string name="revanced_hide_shorts_remix_button_summary_on">Remix knap er skjult</string>
|
||||
<string name="revanced_hide_shorts_remix_button_summary_off">Remix knap vises</string>
|
||||
<!-- 'share' should be translated using the same localized wording YouTube displays for the button. -->
|
||||
<string name="revanced_hide_shorts_share_button_title">Skjul delingsknap</string>
|
||||
<string name="revanced_hide_shorts_share_button_title">Skjul knappen Del</string>
|
||||
<string name="revanced_hide_shorts_share_button_summary_on">Deleknappen er skjult</string>
|
||||
<string name="revanced_hide_shorts_share_button_summary_off">Deleknappen vises</string>
|
||||
<string name="revanced_hide_shorts_info_panel_title">Skjul infopanel</string>
|
||||
@@ -739,6 +809,13 @@ Bemærk: Aktivering af dette skjuler også videoannoncer"</string>
|
||||
<string name="revanced_hide_player_popup_panels_summary_on">Spiller popup paneler er skjult</string>
|
||||
<string name="revanced_hide_player_popup_panels_summary_off">Spiller popup paneler vises</string>
|
||||
</patch>
|
||||
<patch id="layout.player.fullscreen.exitFullscreenPatch">
|
||||
<string name="revanced_exit_fullscreen_title">Afslut fuldskærmstilstand ved videoens afslutning</string>
|
||||
<string name="revanced_exit_fullscreen_entry_1">Deaktiveret</string>
|
||||
<string name="revanced_exit_fullscreen_entry_2">Portræt</string>
|
||||
<string name="revanced_exit_fullscreen_entry_3">Landskab</string>
|
||||
<string name="revanced_exit_fullscreen_entry_4">Portræt og landskab</string>
|
||||
</patch>
|
||||
<patch id="layout.player.fullscreen.openVideosFullscreen">
|
||||
<string name="revanced_open_videos_fullscreen_portrait_title">Åbn videoer i fuldskærm portræt</string>
|
||||
<string name="revanced_open_videos_fullscreen_portrait_summary_on">Videoer åbne fuld skærm</string>
|
||||
@@ -769,7 +846,7 @@ Begrænsning: Dislikes vises muligvis ikke i inkognitotilstand"</string>
|
||||
<string name="revanced_ryd_dislike_percentage_summary_on">Dislikationer vist som procent</string>
|
||||
<string name="revanced_ryd_dislike_percentage_summary_off">Dislikationer vist som nummer</string>
|
||||
<!-- Translations should use language similar to 'revanced_sb_enable_compact_skip_button' -->
|
||||
<string name="revanced_ryd_compact_layout_title">Kompakt lignende knap</string>
|
||||
<string name="revanced_ryd_compact_layout_title">Kompakt like-knap</string>
|
||||
<string name="revanced_ryd_compact_layout_summary_on">Lideknap stylet for mindste bredde</string>
|
||||
<string name="revanced_ryd_compact_layout_summary_off">Ligesom knap stylet for bedste udseende</string>
|
||||
<string name="revanced_ryd_toast_on_connection_error_title">Vis en toast hvis API ikke er tilgængelig</string>
|
||||
@@ -817,7 +894,7 @@ Denne funktion fungerer bedst med en videokvalitet på 720p eller lavere og ved
|
||||
</patch>
|
||||
<patch id="layout.sponsorblock.sponsorBlockResourcePatch">
|
||||
<string name="revanced_sb_enable_sb">Aktiver SponsorBloker</string>
|
||||
<string name="revanced_sb_enable_sb_sum">SponsorBlock er et crowd-sourcet system til at springe irriterende dele af YouTube-videoer over</string>
|
||||
<string name="revanced_sb_enable_sb_sum">SponsorBlock er et crowdsourcet system, der springer irriterende dele af YouTube-videoer over</string>
|
||||
<string name="revanced_sb_appearance_category">Udseende</string>
|
||||
<string name="revanced_sb_enable_voting">Vis afstemningsknap</string>
|
||||
<string name="revanced_sb_enable_voting_sum_on">Segmentafstemningsknap vises</string>
|
||||
@@ -882,7 +959,7 @@ Dit bruger-id er som en adgangskode, og det må aldrig deles.
|
||||
<string name="revanced_sb_segments_sponsor">Sponsor</string>
|
||||
<string name="revanced_sb_segments_sponsor_sum">Betalt kampagne, betalte henvisninger og direkte reklamer. Ikke for selvpromoverende eller gratis råb til årsager/skabere/websteder/produkter, de kan lide</string>
|
||||
<string name="revanced_sb_segments_selfpromo">Ubetalt/Self Promotion</string>
|
||||
<string name="revanced_sb_segments_selfpromo_sum">Svarende til \'Sponsor\' bortset fra ubetalt eller self promotion. Inkluderer sektioner om merchandise, donationer, eller oplysninger om, hvem de har samarbejdet med</string>
|
||||
<string name="revanced_sb_segments_selfpromo_sum">Ligner Sponsor, men omfatter ikke ubetalt eller selvreklame. Indeholder sektioner om merchandise, donationer eller oplysninger om, hvem de har samarbejdet med</string>
|
||||
<string name="revanced_sb_segments_interaction">Interaktion Påmindelse (Abonner)</string>
|
||||
<string name="revanced_sb_segments_interaction_sum">En kort påmindelse om at lide, abonnere eller følge dem midt i indholdet. Hvis den er lang eller om noget specifik, bør den i stedet være under selvforfremmelse</string>
|
||||
<string name="revanced_sb_segments_highlight">Fremhæv</string>
|
||||
@@ -1007,6 +1084,23 @@ Er du klar til at indsende?"</string>
|
||||
<string name="revanced_sb_reset">Nulstil</string>
|
||||
<string name="revanced_sb_about">Om</string>
|
||||
<string name="revanced_sb_about_api_sum">Data leveres af SponsorBlock API. Tryk her for at få flere oplysninger og se downloads til andre platforme</string>
|
||||
</patch>
|
||||
<patch id="layout.formfactor.changeFormFactorPatch">
|
||||
<string name="revanced_change_form_factor_title">Layout-formfaktor</string>
|
||||
<string name="revanced_change_form_factor_entry_1">Standard</string>
|
||||
<string name="revanced_change_form_factor_entry_2">Telefon</string>
|
||||
<string name="revanced_change_form_factor_entry_3">Tablet</string>
|
||||
<string name="revanced_change_form_factor_entry_4">Bil</string>
|
||||
<string name="revanced_change_form_factor_user_dialog_message">"Ændringer omfatter:
|
||||
|
||||
Tabletlayout
|
||||
• Fællesindlæg er skjult
|
||||
|
||||
Bil layout
|
||||
• Se historik-menuen er skjult
|
||||
• Udforsk-fanen er gendannet
|
||||
• Shorts åbnes i den almindelige afspiller
|
||||
• Feedet er organiseret efter emner og kanal"</string>
|
||||
</patch>
|
||||
<patch id="layout.spoofappversion.spoofAppVersionPatch">
|
||||
<string name="revanced_spoof_app_version_title">Spoof app-version</string>
|
||||
@@ -1021,6 +1115,7 @@ Hvis det senere slås fra, anbefales det at rydde app-dataene for at forhindre U
|
||||
This is because the 'General layout' menu uses alphabetic sorting, and it functionally works better if the spoof target selector appears below the 'Spoof app version' UI switch -->
|
||||
<string name="revanced_spoof_app_version_target_title">Spoof app version mål</string>
|
||||
<string name="revanced_spoof_app_version_target_entry_1">19.35.36 - Gendan gamle Shorts player ikoner</string>
|
||||
<string name="revanced_spoof_app_version_target_entry_2">19.26.42 - Gendan gamle navigations- og værktøjslinjeikoner</string>
|
||||
<!-- 'RYD' is 'Return YouTube Dislike' -->
|
||||
<string name="revanced_spoof_app_version_target_legacy_entry_1">18.33.40 - Gendan RYD på Shorts inkognitotilstand</string>
|
||||
<string name="revanced_spoof_app_version_target_legacy_entry_2">18.20.39 - Gendan bred video hastighed & kvalitet menu</string>
|
||||
@@ -1064,12 +1159,6 @@ Hvis det senere slås fra, anbefales det at rydde app-dataene for at forhindre U
|
||||
<string name="revanced_shorts_autoplay_background_summary_on">Shorts i baggrunden afspilles automatisk</string>
|
||||
<string name="revanced_shorts_autoplay_background_summary_off">Shorts i baggrunden gentages</string>
|
||||
</patch>
|
||||
<patch id="layout.tablet.enableTabletLayoutPatch">
|
||||
<string name="revanced_tablet_layout_title">Aktivér tabletlayout</string>
|
||||
<string name="revanced_tablet_layout_summary_on">Tablet layout er aktiveret</string>
|
||||
<string name="revanced_tablet_layout_summary_off">Tablet layout er deaktiveret</string>
|
||||
<string name="revanced_tablet_layout_user_dialog_message">Fællesskabsindlæg vises ikke på tabletlayouts</string>
|
||||
</patch>
|
||||
<patch id="layout.miniplayer.miniplayerPatch">
|
||||
<string name="revanced_miniplayer_screen_title">Mini-afspiller</string>
|
||||
<string name="revanced_miniplayer_screen_summary">Ændre stilen for den i app minimeret afspiller</string>
|
||||
@@ -1130,8 +1219,10 @@ Stryg for at udvide eller lukke"</string>
|
||||
<string name="revanced_seekbar_custom_color_title">Aktivér brugerdefineret søgelinjefarve</string>
|
||||
<string name="revanced_seekbar_custom_color_summary_on">Brugerdefineret søgelinje farve vises</string>
|
||||
<string name="revanced_seekbar_custom_color_summary_off">Original søgelinje farve vises</string>
|
||||
<string name="revanced_seekbar_custom_color_value_title">Brugerdefineret søgelinje farve</string>
|
||||
<string name="revanced_seekbar_custom_color_value_summary">Farven på den søgende bar</string>
|
||||
<string name="revanced_seekbar_custom_color_primary_title">Brugerdefineret farve på søgelinje</string>
|
||||
<string name="revanced_seekbar_custom_color_primary_summary">Farven på søgelinjen</string>
|
||||
<string name="revanced_seekbar_custom_color_accent_title">Brugerdefineret accentfarve på søgelinje</string>
|
||||
<string name="revanced_seekbar_custom_color_accent_summary">Søgelinjens accentfarve</string>
|
||||
<string name="revanced_seekbar_custom_color_invalid">Ugyldig søgelinje farveværdi</string>
|
||||
</patch>
|
||||
<patch id="layout.thumbnails.bypassImageRegionRestrictionsPatch">
|
||||
@@ -1178,7 +1269,7 @@ Tryk her for at lære mere om DeArrow"</string>
|
||||
<string name="revanced_alt_thumbnail_dearrow_error_generic">DeArrow midlertidigt ikke tilgængelig</string>
|
||||
</patch>
|
||||
<patch id="misc.announcements.announcementsPatch">
|
||||
<string name="revanced_announcements_title">Vis annonceringer</string>
|
||||
<string name="revanced_announcements_title">Vis ReVanced meddelelser</string>
|
||||
<string name="revanced_announcements_summary_on">Meddelelser vises ved opstart</string>
|
||||
<string name="revanced_announcements_summary_off">Meddelelser vises ikke ved opstart</string>
|
||||
<string name="revanced_announcements_enabled_summary">Vis meddelelser ved opstart</string>
|
||||
@@ -1233,6 +1324,7 @@ Aktivering af dette kan låse op for højere videokvalitet"</string>
|
||||
<string name="revanced_force_original_audio_title">Tving original lyd</string>
|
||||
<string name="revanced_force_original_audio_summary_on">Brug original lyd</string>
|
||||
<string name="revanced_force_original_audio_summary_off">Brug standard lyd</string>
|
||||
<string name="revanced_force_original_audio_not_available">Tilføj musik til denne historie</string>
|
||||
</patch>
|
||||
<patch id="video.quality.rememberVideoQualityPatch">
|
||||
<!-- Translations should use the same text as revanced_custom_playback_speeds_auto -->
|
||||
@@ -1260,6 +1352,8 @@ Aktivering af dette kan låse op for højere videokvalitet"</string>
|
||||
<string name="revanced_custom_playback_speeds_invalid">Brugerdefinerede hastigheder skal være mindre end %s</string>
|
||||
<string name="revanced_custom_playback_speeds_parse_exception">Ugyldige brugerdefinerede afspilningshastigheder</string>
|
||||
<string name="revanced_custom_playback_speeds_auto">Automatisk</string>
|
||||
<string name="revanced_speed_tap_and_hold_title">Brugerdefineret hastighed, når du holder den nede</string>
|
||||
<string name="revanced_speed_tap_and_hold_summary">Afspilningshastighed mellem 0-8</string>
|
||||
</patch>
|
||||
<patch id="video.speed.remember.rememberPlaybackSpeedPatch">
|
||||
<string name="revanced_remember_playback_speed_last_selected_title">Husk ændringer i afspilningshastighed</string>
|
||||
@@ -1268,6 +1362,11 @@ Aktivering af dette kan låse op for højere videokvalitet"</string>
|
||||
<string name="revanced_playback_speed_default_title">Standard afspilningshastighed</string>
|
||||
<string name="revanced_remember_playback_speed_toast">Ændrede standardhastighed til: %s</string>
|
||||
</patch>
|
||||
<patch id="video.hdr.disableHdrPatch">
|
||||
<string name="revanced_disable_hdr_video_title">Deaktiver HDR-video</string>
|
||||
<string name="revanced_disable_hdr_video_summary_on">HDR-video er deaktiveret</string>
|
||||
<string name="revanced_disable_hdr_video_summary_off">HDR-video er aktiveret</string>
|
||||
</patch>
|
||||
<patch id="video.videoqualitymenu.restoreOldVideoQualityMenuResourcePatch">
|
||||
<string name="revanced_restore_old_video_quality_menu_title">Gendan gamle video kvalitet menu</string>
|
||||
<string name="revanced_restore_old_video_quality_menu_summary_on">Gammel videokvalitetsmenu vises</string>
|
||||
@@ -1288,58 +1387,26 @@ Aktivering af dette kan låse op for højere videokvalitet"</string>
|
||||
Videoafspilning virker muligvis ikke"</string>
|
||||
<string name="revanced_spoof_video_streams_user_dialog_message">At slå denne indstilling fra kan forårsage problemer med videoafspilning.</string>
|
||||
<string name="revanced_spoof_video_streams_client_type_title">Standard klient</string>
|
||||
<string name="revanced_spoof_video_streams_about_title">Overskrivning af bivirkninger</string>
|
||||
<string name="revanced_spoof_video_streams_language_title">Standard lyd-stream sprog</string>
|
||||
<string name="revanced_spoof_video_streams_language_AR">Arabisk</string>
|
||||
<string name="revanced_spoof_video_streams_language_AZ">Aserbajdsjansk</string>
|
||||
<string name="revanced_spoof_video_streams_language_BG">Bulgarsk</string>
|
||||
<string name="revanced_spoof_video_streams_language_BN">Bengalsk</string>
|
||||
<string name="revanced_spoof_video_streams_language_CA">Catalansk</string>
|
||||
<string name="revanced_spoof_video_streams_language_CS">Tjekkisk</string>
|
||||
<string name="revanced_spoof_video_streams_language_DA">Dansk</string>
|
||||
<string name="revanced_spoof_video_streams_language_DE">Tysk</string>
|
||||
<string name="revanced_spoof_video_streams_language_EL">Græsk</string>
|
||||
<string name="revanced_spoof_video_streams_language_EN">Engelsk</string>
|
||||
<string name="revanced_spoof_video_streams_language_ES">Spansk</string>
|
||||
<string name="revanced_spoof_video_streams_language_ET">Estisk</string>
|
||||
<string name="revanced_spoof_video_streams_language_FA">Persisk</string>
|
||||
<string name="revanced_spoof_video_streams_language_FI">Finsk</string>
|
||||
<string name="revanced_spoof_video_streams_language_FR">Fransk</string>
|
||||
<string name="revanced_spoof_video_streams_language_GU">Gujarati</string>
|
||||
<string name="revanced_spoof_video_streams_language_HI">Hindi</string>
|
||||
<string name="revanced_spoof_video_streams_language_HR">Kroatisk</string>
|
||||
<string name="revanced_spoof_video_streams_language_HU">Ungarsk</string>
|
||||
<string name="revanced_spoof_video_streams_language_ID">Indonesisk</string>
|
||||
<string name="revanced_spoof_video_streams_language_IT">Italiensk</string>
|
||||
<string name="revanced_spoof_video_streams_language_JA">Japansk</string>
|
||||
<string name="revanced_spoof_video_streams_language_KK">Kasakhisk</string>
|
||||
<string name="revanced_spoof_video_streams_language_KO">Koreansk</string>
|
||||
<string name="revanced_spoof_video_streams_language_LT">Litauisk</string>
|
||||
<string name="revanced_spoof_video_streams_language_LV">Lettisk</string>
|
||||
<string name="revanced_spoof_video_streams_language_MK">Makedonsk</string>
|
||||
<string name="revanced_spoof_video_streams_language_MN">Mongolsk</string>
|
||||
<string name="revanced_spoof_video_streams_language_MR">Marathisk</string>
|
||||
<string name="revanced_spoof_video_streams_language_MS">Malaysisk</string>
|
||||
<string name="revanced_spoof_video_streams_language_MY">Burmesisk</string>
|
||||
<string name="revanced_spoof_video_streams_language_NL">Hollandsk</string>
|
||||
<string name="revanced_spoof_video_streams_language_OR">Odia</string>
|
||||
<string name="revanced_spoof_video_streams_language_PA">Punjabi</string>
|
||||
<string name="revanced_spoof_video_streams_language_PL">Polsk</string>
|
||||
<string name="revanced_spoof_video_streams_language_RO">Rumænsk</string>
|
||||
<string name="revanced_spoof_video_streams_language_RU">Russisk</string>
|
||||
<string name="revanced_spoof_video_streams_language_SK">Slovakisk</string>
|
||||
<string name="revanced_spoof_video_streams_language_SL">Slovensk</string>
|
||||
<string name="revanced_spoof_video_streams_language_SR">Serbisk</string>
|
||||
<string name="revanced_spoof_video_streams_language_SV">Svensk</string>
|
||||
<string name="revanced_spoof_video_streams_language_SW">Swahili</string>
|
||||
<string name="revanced_spoof_video_streams_language_TA">Tamil</string>
|
||||
<string name="revanced_spoof_video_streams_language_TE">Telugu</string>
|
||||
<string name="revanced_spoof_video_streams_language_TH">Thailandsk</string>
|
||||
<string name="revanced_spoof_video_streams_language_TR">Tyrkisk</string>
|
||||
<string name="revanced_spoof_video_streams_language_UK">Ukrainsk</string>
|
||||
<string name="revanced_spoof_video_streams_language_UR">Urdu</string>
|
||||
<string name="revanced_spoof_video_streams_language_VI">Vietnamesisk</string>
|
||||
<string name="revanced_spoof_video_streams_language_ZH">Kinesisk</string>
|
||||
<!-- 'no auth' means no authentication -->
|
||||
<string name="revanced_spoof_video_streams_client_type_android_vr_no_auth">Android VR (ingen godkendelse)</string>
|
||||
<string name="revanced_spoof_video_streams_ios_force_avc_title">Forceer iOS AVC (H.264)</string>
|
||||
<string name="revanced_spoof_video_streams_ios_force_avc_summary_on">Videokodec er tvunget til AVC (H.264)</string>
|
||||
<string name="revanced_spoof_video_streams_ios_force_avc_summary_off">Videokodec bestemmes automatisk</string>
|
||||
<string name="revanced_spoof_video_streams_ios_force_avc_user_dialog_message">"Aktivering af dette kan forbedre batterilevetiden og rette afspilningshakken.\n\nAVC har en maksimal opløsning på 1080p, Opus-lydkodec er ikke tilgængelig, og videoafspilning vil bruge mere internetdata end VP9 eller AV1."</string>
|
||||
<string name="revanced_spoof_video_streams_about_ios_tv_title">iOS-spoofing kan have følgende bivirkninger</string>
|
||||
<string name="revanced_spoof_video_streams_about_ios_tv_summary">"• Film eller betalte videoer afspilles muligvis ikke
|
||||
• Stabil lydstyrke er ikke tilgængelig
|
||||
• Videoer slutter 1 sekund for tidligt"</string>
|
||||
<string name="revanced_spoof_video_streams_about_android_title">Bivirkninger ved Android-spoofing</string>
|
||||
<string name="revanced_spoof_video_streams_about_android_summary">"• Lydspormenu mangler
|
||||
• Stabil lydstyrke er ikke tilgængelig
|
||||
• Gennemtving original lyd er ikke tilgængelig"</string>
|
||||
<string name="revanced_spoof_video_streams_about_no_av1">• Intet AV1-videokodek</string>
|
||||
<string name="revanced_spoof_video_streams_about_kids_videos">• Videoer til børn afspilles muligvis ikke, når du er logget ud eller i inkognitotilstand</string>
|
||||
<string name="revanced_spoof_streaming_data_stats_for_nerds_title">Vis i Statistik for nørder</string>
|
||||
<string name="revanced_spoof_streaming_data_stats_for_nerds_summary_on">Klienttypen vises i Statistik for nørder</string>
|
||||
<string name="revanced_spoof_streaming_data_stats_for_nerds_summary_off">Klienten er skjult i Statistik for nørder</string>
|
||||
<string name="revanced_spoof_video_streams_language_title">VR-standardsprog for lydstrømme</string>
|
||||
</patch>
|
||||
</app>
|
||||
<app id="twitch">
|
||||
|
||||
@@ -23,63 +23,125 @@ Second \"item\" text"</string>
|
||||
<app id="shared">
|
||||
<patch id="misc.checks.checkEnvironmentPatch">
|
||||
<string name="revanced_check_environment_failed_title">Überprüfung fehlgeschlagen</string>
|
||||
<string name="revanced_check_environment_dialog_open_official_source_button">Offizielle Webseite öffnen</string>
|
||||
<string name="revanced_check_environment_dialog_open_official_source_button">Offizielle Webseite ö_ffnen</string>
|
||||
<string name="revanced_check_environment_dialog_ignore_button">Ignorieren</string>
|
||||
<string name="revanced_check_environment_failed_message"><h5>Diese App wurde offenbar nicht von Ihnen gepatcht.</h5><br>Diese App funktioniert möglicherweise nicht richtig, <b>könnte schädlich oder sogar gefährlich in der Verwendung sein</b>.< br><br>Diese Prüfungen deuten darauf hin, dass diese App vorab gepatcht wurde oder von jemandem bezogen wurde sonst:<br><br><small>%1$s</small><br>Es wird dringend empfohlen, <b>diese App zu deinstallieren und selbst zu patchen</b> um sicherzustellen, dass Sie eine validierte und sichere App verwenden.<p><br>Wenn Sie diese Warnung ignorieren, wird sie nur zweimal angezeigt.</string>
|
||||
<string name="revanced_check_environment_failed_message"><h5>Diese App scheint nicht durch Sie gepatcht worden zu sein.</h5><br>Diese App funktioniert möglicherweise nicht korrekt, <b>könnte schädlich oder sogar gefährlich sein.</b><br><br>Diese Prüfungen weisen darauf hin, dass diese App bereits gepatcht ist oder von jemand anderem bezogen wurde:<br><br><small>%1$s</small><br>Es wird dringend empfohlen, diese App zu <b>deinstallieren und selbst zu patchen</b>, um sicherzustellen, dass Sie eine geprüfte und sichere App verwenden.<p><br>Wenn Sie es ignorieren, wird diese Warnung nur noch zweimal angezeigt.</string>
|
||||
<string name="revanced_check_environment_not_same_patching_device">Auf einem anderen Gerät gepatcht</string>
|
||||
<string name="revanced_check_environment_manager_not_expected_installer">Nicht von ReVanced Manager installiert</string>
|
||||
<string name="revanced_check_environment_manager_not_expected_installer">Nicht durch ReVanced Manager installiert</string>
|
||||
<string name="revanced_check_environment_not_near_patch_time">Vor mehr als 10 Minuten gepatcht</string>
|
||||
<string name="revanced_check_environment_not_near_patch_time_days">Vor %s Tagen gepatcht</string>
|
||||
<string name="revanced_check_environment_not_near_patch_time_invalid">APK-Erstellungsdatum ist beschädigt</string>
|
||||
</patch>
|
||||
<patch id="misc.settings.settingsResourcePatch">
|
||||
<string name="revanced_settings_title">ReVanced</string>
|
||||
<string name="revanced_settings_confirm_user_dialog_title">Möchtest du fortfahren?</string>
|
||||
<string name="revanced_settings_submenu_title">Einstellungen</string>
|
||||
<string name="revanced_settings_confirm_user_dialog_title">Möchten Sie fortfahren?</string>
|
||||
<string name="revanced_settings_reset">Zurücksetzen</string>
|
||||
<string name="revanced_settings_restart_title">Aktualisieren und neu starten</string>
|
||||
<string name="revanced_settings_restart">Neustarten</string>
|
||||
<string name="revanced_settings_restart_title">Aktualisieren und Neustart</string>
|
||||
<string name="revanced_settings_restart">Neustart</string>
|
||||
<string name="revanced_settings_import">Importieren</string>
|
||||
<string name="revanced_settings_import_copy">Kopieren</string>
|
||||
<string name="revanced_settings_import_reset">ReVanced Einstellungen auf Standard zurückgesetzt</string>
|
||||
<string name="revanced_settings_import_reset">ReVanced-Einstellungen auf Standardwerte zurückgesetzt</string>
|
||||
<string name="revanced_settings_import_success">%d Einstellungen importiert</string>
|
||||
<string name="revanced_settings_import_failure_parse">Import fehlgeschlagen: %s</string>
|
||||
<string name="revanced_pref_import_export_title">Importieren / Exportieren</string>
|
||||
<string name="revanced_pref_import_export_summary">ReVanced Einstellungen importieren / exportieren</string>
|
||||
<string name="revanced_language_title">ReVanced-Sprache</string>
|
||||
<string name="revanced_language_user_dialog_message">"Übersetzungen für einige Sprachen fehlen möglicherweise oder sind unvollständig.
|
||||
|
||||
Um neue Sprachen zu übersetzen, besuchen Sie translate.revanced.app"</string>
|
||||
<string name="revanced_language_DEFAULT">App-Sprache</string>
|
||||
<string name="revanced_language_AR">Arabisch</string>
|
||||
<string name="revanced_language_AZ">Aserbaidschanisch</string>
|
||||
<string name="revanced_language_BG">Bulgarisch</string>
|
||||
<string name="revanced_language_BN">Bengali</string>
|
||||
<string name="revanced_language_CA">Katalanisch</string>
|
||||
<string name="revanced_language_CS">Tschechisch</string>
|
||||
<string name="revanced_language_DA">Dänisch</string>
|
||||
<string name="revanced_language_DE">Deutsch</string>
|
||||
<string name="revanced_language_EL">Griechisch</string>
|
||||
<string name="revanced_language_EN">Englisch</string>
|
||||
<string name="revanced_language_ES">Spanisch</string>
|
||||
<string name="revanced_language_ET">Estnisch</string>
|
||||
<string name="revanced_language_FA">Persisch</string>
|
||||
<string name="revanced_language_FI">Finnisch</string>
|
||||
<string name="revanced_language_FR">Französisch</string>
|
||||
<string name="revanced_language_GU">Gujarati</string>
|
||||
<string name="revanced_language_HI">Hindi</string>
|
||||
<string name="revanced_language_HR">Kroatisch</string>
|
||||
<string name="revanced_language_HU">Ungarisch</string>
|
||||
<string name="revanced_language_ID">Indonesisch</string>
|
||||
<string name="revanced_language_IT">Italienisch</string>
|
||||
<string name="revanced_language_JA">Japanisch</string>
|
||||
<string name="revanced_language_KK">Kasachisch</string>
|
||||
<string name="revanced_language_KO">Koreanisch</string>
|
||||
<string name="revanced_language_LT">Litauisch</string>
|
||||
<string name="revanced_language_LV">Lettisch</string>
|
||||
<string name="revanced_language_MK">Mazedonisch</string>
|
||||
<string name="revanced_language_MN">Mongolisch</string>
|
||||
<string name="revanced_language_MR">Marathi</string>
|
||||
<string name="revanced_language_MS">Malaiisch</string>
|
||||
<string name="revanced_language_MY">Burmesisch</string>
|
||||
<string name="revanced_language_NL">Niederländisch</string>
|
||||
<string name="revanced_language_OR">Odia</string>
|
||||
<string name="revanced_language_PA">Pandschabi</string>
|
||||
<string name="revanced_language_PL">Polnisch</string>
|
||||
<string name="revanced_language_PT">Portugiesisch</string>
|
||||
<string name="revanced_language_RO">Rumänisch</string>
|
||||
<string name="revanced_language_RU">Russisch</string>
|
||||
<string name="revanced_language_SK">Slovakisch</string>
|
||||
<string name="revanced_language_SL">Slowenisch</string>
|
||||
<string name="revanced_language_SR">Serbisch</string>
|
||||
<string name="revanced_language_SV">Schwedisch</string>
|
||||
<string name="revanced_language_SW">Suaheli</string>
|
||||
<string name="revanced_language_TA">Tamilisch</string>
|
||||
<string name="revanced_language_TE">Telugu</string>
|
||||
<string name="revanced_language_TH">Thai</string>
|
||||
<string name="revanced_language_TR">Türkisch</string>
|
||||
<string name="revanced_language_UK">Ukrainisch</string>
|
||||
<string name="revanced_language_UR">Urdu</string>
|
||||
<string name="revanced_language_VI">Vietnamesisch</string>
|
||||
<string name="revanced_language_ZH">Chinesisch</string>
|
||||
<string name="revanced_pref_import_export_title">Import/Export</string>
|
||||
<string name="revanced_pref_import_export_summary">ReVanced-Einstellungen importieren/exportieren</string>
|
||||
<!-- Settings about dialog. -->
|
||||
<string name="revanced_settings_about_links_body">Du verwendest ReVanced Patches Version <i>%s</i></string>
|
||||
<string name="revanced_settings_about_links_dev_header">Notiz</string>
|
||||
<string name="revanced_settings_about_links_dev_body">Diese Version ist eine Vorabversion und du könntest unerwartete Probleme haben</string>
|
||||
<string name="revanced_settings_about_links_body">Sie verwenden ReVanced-Patches Version <i>%s</i></string>
|
||||
<string name="revanced_settings_about_links_dev_header">Anmerkung</string>
|
||||
<string name="revanced_settings_about_links_dev_body">Diese Version ist eine Vorabversion und Sie können auf unerwartete Probleme stoßen</string>
|
||||
<string name="revanced_settings_about_links_header">Offizielle Links</string>
|
||||
<!-- NOTE: the about strings above are duplicated in the TikTok about screen code,
|
||||
and changes made here must also be made there. -->
|
||||
</patch>
|
||||
<patch id="misc.gms.gmsCoreSupportResourcePatch">
|
||||
<!-- Translations of this should not be longer than the original English text, otherwise the text can be clipped and not entirely shown. -->
|
||||
<string name="gms_core_toast_not_installed_message">MicroG GmsCore ist nicht installiert. Installiers.</string>
|
||||
<string name="gms_core_dialog_title">Aktion notwendig</string>
|
||||
<string name="gms_core_toast_not_installed_message">MicroG GmsCore ist nicht installiert. Installieren Sie es.</string>
|
||||
<string name="gms_core_dialog_title">Aktion benötigt</string>
|
||||
<string name="gms_core_dialog_not_whitelisted_not_allowed_in_background_message">"MicroG GmsCore hat keine Berechtigung, im Hintergrund zu laufen.
|
||||
Folgen Sie der Anleitung \"Meine App nicht beenden\" für Ihr Telefon und wenden Sie die Anweisungen auf Ihre MicroG-Installation an.
|
||||
|
||||
Befolgen Sie die Anleitung \"Keine App-Tötung\" für Ihr Telefon und wenden Sie die Anweisungen auf Ihre MicroG-Installation an.
|
||||
|
||||
Dies ist erforderlich, damit die App funktioniert."</string>
|
||||
<string name="gms_core_dialog_open_website_text">Webseite öffnen</string>
|
||||
<string name="gms_core_dialog_not_whitelisted_using_battery_optimizations_message">"Die Batterieoptimierung von MicroG GmsCore muss deaktiviert werden, um Probleme zu vermeiden.
|
||||
Die Deaktivierung der Batterieoptimierung für MicroG hat keinen negativen Einfluss auf den Batterieverbrauch.
|
||||
Tippen Sie auf die Schaltfläche \"Fortfahren\" und erlauben Sie die Optimierungsänderungen."</string>
|
||||
<string name="gms_core_dialog_open_website_text">Website &ouml_ffnen</string>
|
||||
<string name="gms_core_dialog_not_whitelisted_using_battery_optimizations_message">"Die Akkuoptimierung für MicroG GmsCore muss deaktiviert werden, um Probleme zu vermeiden.
|
||||
|
||||
Das Deaktivieren der Akkuoptimierung für MicroG wirkt sich nicht negativ auf die Akkunutzung aus.
|
||||
|
||||
Tippen Sie auf die Schaltfläche Weiter und erlauben Sie Optimierungsänderungen."</string>
|
||||
<string name="gms_core_dialog_continue_text">Weiter</string>
|
||||
</patch>
|
||||
</app>
|
||||
<app id="youtube">
|
||||
<patch id="misc.settings.settingsPatch">
|
||||
<string name="revanced_settings_screen_00_about_title">Über</string>
|
||||
<string name="revanced_settings_screen_00_about_title">Über</string>
|
||||
<string name="revanced_settings_screen_01_ads_title">Werbung</string>
|
||||
<string name="revanced_settings_screen_02_alt_thumbnails_title">Alternative Thumbnails</string>
|
||||
<string name="revanced_settings_screen_02_alt_thumbnails_title">Alternative Miniaturbilder</string>
|
||||
<string name="revanced_settings_screen_03_feed_title">Feed</string>
|
||||
<string name="revanced_settings_screen_04_player_title">Player</string>
|
||||
<string name="revanced_settings_screen_05_general_title">Generelles Layout</string>
|
||||
<string name="revanced_settings_screen_06_shorts_title">Shorts</string>
|
||||
<string name="revanced_settings_screen_07_seekbar_title">Suchleiste</string>
|
||||
<string name="revanced_settings_screen_08_swipe_controls_title">Wischgesten</string>
|
||||
<string name="revanced_settings_screen_11_misc_title">Sonstiges</string>
|
||||
<string name="revanced_settings_screen_04_general_title">Allgemein</string>
|
||||
<string name="revanced_settings_screen_05_player_title">Player</string>
|
||||
<string name="revanced_settings_screen_07_seekbar_title">Fortschrittsbalken</string>
|
||||
<string name="revanced_settings_screen_08_swipe_controls_title">Wischsteuerung</string>
|
||||
<string name="revanced_settings_screen_11_misc_title">Verschiedenes</string>
|
||||
<string name="revanced_settings_screen_12_video_title">Video</string>
|
||||
<string name="revanced_restore_old_settings_menus_title">Alte Einstellungsmenüs wiederherstellen</string>
|
||||
<string name="revanced_restore_old_settings_menus_summary_on">Alte Einstellungsmenüs werden angezeigt</string>
|
||||
<string name="revanced_restore_old_settings_menus_summary_off">Alte Einstellungsmenüs werden nicht angezeigt</string>
|
||||
</patch>
|
||||
<patch id="misc.backgroundplayback.backgroundPlaybackPatch">
|
||||
<string name="revanced_shorts_disable_background_playback_title">Shorts-Hintergrundwiedergabe deaktivieren</string>
|
||||
@@ -87,27 +149,28 @@ Tippen Sie auf die Schaltfläche \"Fortfahren\" und erlauben Sie die Optimierung
|
||||
<string name="revanced_shorts_disable_background_playback_summary_off">Shorts-Hintergrundwiedergabe ist aktiviert</string>
|
||||
</patch>
|
||||
<patch id="misc.debugging.enableDebuggingPatch">
|
||||
<string name="revanced_debug_screen_title">Fehlerbehebung</string>
|
||||
<string name="revanced_debug_screen_summary">Debug-Optionen aktivieren oder deaktivieren</string>
|
||||
<string name="revanced_debug_title">Debug-Logging</string>
|
||||
<string name="revanced_debug_summary_on">Debug-Logs sind aktiviert</string>
|
||||
<string name="revanced_debug_summary_off">Debug-Logs sind deaktiviert</string>
|
||||
<string name="revanced_debug_protobuffer_title">Logprotokollpuffer</string>
|
||||
<string name="revanced_debug_protobuffer_summary_on">Debug-Logs beinhalten Proto-Puffer</string>
|
||||
<string name="revanced_debug_protobuffer_summary_off">Debug-Logs enthalten keinen Proto-Puffer</string>
|
||||
<string name="revanced_debug_stacktrace_title">Stack-Traces loggen</string>
|
||||
<string name="revanced_debug_stacktrace_summary_on">Debug-Logs enthalten Stack-Traces</string>
|
||||
<string name="revanced_debug_screen_title">Debugging</string>
|
||||
<string name="revanced_debug_screen_summary">Aktiviert oder deaktiviert Debugging-Optionen</string>
|
||||
<string name="revanced_debug_title">Debug-Protokollierung</string>
|
||||
<string name="revanced_debug_summary_on">Debug-Protokolle sind aktiviert</string>
|
||||
<string name="revanced_debug_summary_off">Debug-Protokolle sind deaktiviert</string>
|
||||
<string name="revanced_debug_protobuffer_title">Protokollpuffer protokollieren</string>
|
||||
<string name="revanced_debug_protobuffer_summary_on">Debug-Protokolle enthalten Protokollpuffer</string>
|
||||
<string name="revanced_debug_protobuffer_summary_off">Debug-Protokolle enthalten kein Protokollpuffer</string>
|
||||
<string name="revanced_debug_stacktrace_title">Stacktraces protokollieren</string>
|
||||
<string name="revanced_debug_stacktrace_summary_on">Debug-Protokolle enthalten Stacktrace</string>
|
||||
<string name="revanced_debug_stacktrace_summary_off">Debug-Logs enthalten keine Stack-Traces</string>
|
||||
<string name="revanced_debug_toast_on_error_title">Toast bei ReVanced Fehler anzeigen</string>
|
||||
<string name="revanced_debug_toast_on_error_summary_on">Toast wird angezeigt, wenn ein Fehler auftritt</string>
|
||||
<string name="revanced_debug_toast_on_error_summary_off">Toast wird nicht angezeigt, wenn ein Fehler auftritt</string>
|
||||
<string name="revanced_debug_toast_on_error_user_dialog_message">"Das Ausschalten von Fehler-Toasts blendet alle Benachrichtigungen über Fehler in ReVanced aus.
|
||||
|
||||
Sie werden nicht über unerwartete Ereignisse informiert."</string>
|
||||
</patch>
|
||||
<patch id="layout.hide.general.hideLayoutComponentsPatch">
|
||||
<string name="revanced_disable_like_subscribe_glow_title">Deaktiviere das Like / Abonnieren Button aufleuchten</string>
|
||||
<string name="revanced_disable_like_subscribe_glow_summary_on">\"Gefällt mir\" und \"Abonnieren\"-Button wird nicht aufleuchten, wenn er erwähnt wird</string>
|
||||
<string name="revanced_disable_like_subscribe_glow_summary_off">\"Gefällt mir\" und \"Abonnieren\"-Button wird aufleuchten, wenn er erwähnt wird</string>
|
||||
<string name="revanced_disable_like_subscribe_glow_title">Like und Subscribe Button leuchten nicht mehr, wenn sie erwähnt werden</string>
|
||||
<string name="revanced_disable_like_subscribe_glow_summary_on">Like- und Subscribe-Button leuchten nicht, wenn sie erwähnt werden</string>
|
||||
<string name="revanced_disable_like_subscribe_glow_summary_off">Like- und Subscribe-Button leuchten, wenn sie erwähnt werden</string>
|
||||
<string name="revanced_hide_album_cards_title">Albumkarten ausblenden</string>
|
||||
<string name="revanced_hide_album_cards_summary_on">Albumkarten sind ausgeblendet</string>
|
||||
<string name="revanced_hide_album_cards_summary_off">Albumkarten werden angezeigt</string>
|
||||
@@ -139,7 +202,7 @@ Sie werden nicht über unerwartete Ereignisse informiert."</string>
|
||||
<string name="revanced_hide_for_you_shelf_summary_off">Reihe wird angezeigt</string>
|
||||
<!-- 'Notify me' should be translated using the same localized wording YouTube displays.
|
||||
This item appear in the subscription feed for future livestreams or unreleased videos. -->
|
||||
<string name="revanced_hide_notify_me_button_title">\"Benachrichtigungen\"-Button ausblenden</string>
|
||||
<string name="revanced_hide_notify_me_button_title">\'Benachrichtigungen\' Button ausblenden</string>
|
||||
<string name="revanced_hide_notify_me_button_summary_on">Button ist ausgeblendet</string>
|
||||
<string name="revanced_hide_notify_me_button_summary_off">Button wird angezeigt</string>
|
||||
<!-- 'People also watch' should be translated using the same localized wording YouTube displays. -->
|
||||
@@ -148,7 +211,7 @@ Sie werden nicht über unerwartete Ereignisse informiert."</string>
|
||||
<string name="revanced_hide_search_result_recommendations_summary_off">Empfehlungen werden angezeigt</string>
|
||||
<!-- 'Show more' should be translated with the same localized wording that YouTube displays.
|
||||
This button usually appears when searching for a YT creator. -->
|
||||
<string name="revanced_hide_show_more_button_title">\'Mehr anzeigen\'-Button ausblenden</string>
|
||||
<string name="revanced_hide_show_more_button_title">\'Mehr anzeigen\' Button ausblenden</string>
|
||||
<string name="revanced_hide_show_more_button_summary_on">Button ist ausgeblendet</string>
|
||||
<string name="revanced_hide_show_more_button_summary_off">Button wird angezeigt</string>
|
||||
<string name="revanced_hide_timed_reactions_title">Zeitliche Reaktionen ausblenden</string>
|
||||
@@ -160,9 +223,9 @@ Sie werden nicht über unerwartete Ereignisse informiert."</string>
|
||||
<string name="revanced_hide_chips_shelf_title">Chips ausblenden</string>
|
||||
<string name="revanced_hide_chips_shelf_summary_on">Chips sind ausgeblendet</string>
|
||||
<string name="revanced_hide_chips_shelf_summary_off">Chips werden angezeigt</string>
|
||||
<string name="revanced_hide_expandable_chip_title">Erweiterbaren Sektions-Chip unter Videos ausblenden</string>
|
||||
<string name="revanced_hide_expandable_chip_summary_on">Erweiterbare Chips sind ausgeblendet</string>
|
||||
<string name="revanced_hide_expandable_chip_summary_off">Erweiterbare Chips werden angezeigt</string>
|
||||
<string name="revanced_hide_expandable_chip_title">Erweiterbare Karten unter Videos ausblenden</string>
|
||||
<string name="revanced_hide_expandable_chip_summary_on">Erweiterbare Karten sind ausgeblendet</string>
|
||||
<string name="revanced_hide_expandable_chip_summary_off">Erweiterbare Karten werden angezeigt</string>
|
||||
<string name="revanced_hide_community_posts_title">Community-Beiträge ausblenden</string>
|
||||
<string name="revanced_hide_community_posts_summary_on">Community-Beiträge sind ausgeblendet</string>
|
||||
<string name="revanced_hide_community_posts_summary_off">Gemeinschaftsbeiträge werden angezeigt</string>
|
||||
@@ -223,6 +286,9 @@ Sie werden nicht über unerwartete Ereignisse informiert."</string>
|
||||
<string name="revanced_hide_chapters_section_title">Kapitel ausblenden</string>
|
||||
<string name="revanced_hide_chapters_section_summary_on">Kapitel ist ausgeblendet</string>
|
||||
<string name="revanced_hide_chapters_section_summary_off">Kapitel wird angezeigt</string>
|
||||
<string name="revanced_hide_how_this_was_made_section_title">\'Wie dieser Inhalt erstellt wurde\'-Bereich ausblenden</string>
|
||||
<string name="revanced_hide_how_this_was_made_section_summary_on">\'Wie dieser Inhalt erstellt wurde\'-Bereich wird ausgeblendet</string>
|
||||
<string name="revanced_hide_how_this_was_made_section_summary_off">\'Wie dieser Inhalt erstellt wurde\'-Bereich wird angezeigt</string>
|
||||
<string name="revanced_hide_podcast_section_title">Blende den \'Erkunde den Podcast\' Abschnitt aus</string>
|
||||
<string name="revanced_hide_podcast_section_summary_on">\'Erkunde den Podcast\' Abschnitt ist ausgeblendet</string>
|
||||
<string name="revanced_hide_podcast_section_summary_off">Abschnitt \'Erkunde den Podcast\' wird angezeigt</string>
|
||||
@@ -265,7 +331,7 @@ Sie werden nicht über unerwartete Ereignisse informiert."</string>
|
||||
<string name="revanced_hide_comments_preview_comment_title">Vorschaukommentar ausblenden</string>
|
||||
<string name="revanced_hide_comments_preview_comment_summary_on">Vorschaukommentar ist ausgeblendet</string>
|
||||
<string name="revanced_hide_comments_preview_comment_summary_off">Vorschau des Kommentars wird angezeigt</string>
|
||||
<string name="revanced_hide_comments_thanks_button_title">Dankeschön ausblenden</string>
|
||||
<string name="revanced_hide_comments_thanks_button_title">Schließe die Dankeschön-Schaltfläche aus</string>
|
||||
<string name="revanced_hide_comments_thanks_button_summary_on">Dankeschön-Taste ist ausgeblendet</string>
|
||||
<string name="revanced_hide_comments_thanks_button_summary_off">Dankeschön Button wird angezeigt</string>
|
||||
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_title">Zeitstempel und Emoji-Tasten ausblenden</string>
|
||||
@@ -291,12 +357,12 @@ Wenn ein Doodle zurzeit in Ihrer Region angezeigt wird und diese Einstellung zum
|
||||
<string name="revanced_hide_keyword_content_home_title">Home-Videos nach Schlüsselwörtern ausblenden</string>
|
||||
<string name="revanced_hide_keyword_content_home_summary_on">Videos im Home-Tab werden nach Schlüsselwörtern gefiltert</string>
|
||||
<string name="revanced_hide_keyword_content_home_summary_off">Videos im Home-Tab werden nicht nach Schlüsselwörtern gefiltert</string>
|
||||
<string name="revanced_hide_keyword_content_subscriptions_title">Abonnement-Videos mit Schlüsselwörtern ausblenden</string>
|
||||
<string name="revanced_hide_keyword_content_subscriptions_summary_on">Videos auf der Registerkarte Abonnements werden nach Schlüsselwörtern gefiltert</string>
|
||||
<string name="revanced_hide_keyword_content_subscriptions_summary_off">Videos auf der Registerkarte Abonnements werden nicht nach Schlüsselwörtern gefiltert</string>
|
||||
<string name="revanced_hide_keyword_content_search_title">Suchergebnisse mit Schlüsselwörtern ausblenden</string>
|
||||
<string name="revanced_hide_keyword_content_search_summary_on">Suchergebnisse werden nach Schlüsselwörtern gefiltert</string>
|
||||
<string name="revanced_hide_keyword_content_search_summary_off">Suchergebnisse werden nicht nach Schlüsselwörtern gefiltert</string>
|
||||
<string name="revanced_hide_keyword_content_subscriptions_title">Abonnement-Videos mit Schlüsselwörtern ausblenden</string>
|
||||
<string name="revanced_hide_keyword_content_subscriptions_summary_on">Videos auf der Registerkarte Abonnements werden nach Schlüsselwörtern gefiltert</string>
|
||||
<string name="revanced_hide_keyword_content_subscriptions_summary_off">Videos auf der Registerkarte Abonnements werden nicht nach Schlüsselwörtern gefiltert</string>
|
||||
<string name="revanced_hide_keyword_content_phrases_title">Zu versteckende Stichwörter</string>
|
||||
<!-- For localization it is preferred, but not required, if 'LeBlanc' is replaced with a localized name or a familiar word that has upper case letters in the middle of the word.
|
||||
This is because keywords can be in any language, and showing an example in the localized script helps convey this. -->
|
||||
@@ -343,6 +409,9 @@ Diese Funktion ist nur für ältere Geräte verfügbar"</string>
|
||||
<string name="revanced_hide_products_banner_title">Banner ausblenden, um Produkte anzuzeigen</string>
|
||||
<string name="revanced_hide_products_banner_summary_on">Banner ist ausgeblendet</string>
|
||||
<string name="revanced_hide_products_banner_summary_off">Banner wird angezeigt</string>
|
||||
<string name="revanced_hide_end_screen_store_banner_title">Endbild-Banner ausblenden</string>
|
||||
<string name="revanced_hide_end_screen_store_banner_summary_on">Store-Banner wird ausgeblendet</string>
|
||||
<string name="revanced_hide_end_screen_store_banner_summary_off">Store-Banner wird angezeigt</string>
|
||||
<string name="revanced_hide_player_store_shelf_title">Spieler-Einkaufsregal ausblenden</string>
|
||||
<string name="revanced_hide_player_store_shelf_summary_on">Einkaufsregal ist ausgeblendet</string>
|
||||
<string name="revanced_hide_player_store_shelf_summary_off">Einkaufsregal wird angezeigt</string>
|
||||
@@ -395,7 +464,7 @@ Diese Funktion ist nur für ältere Geräte verfügbar"</string>
|
||||
<string name="revanced_external_downloader_summary_on">Download-Button im Player angezeigt</string>
|
||||
<string name="revanced_external_downloader_summary_off">Download-Button nicht im Player angezeigt</string>
|
||||
<!-- 'download action button' should be translated using the same wording as the translation of 'revanced_hide_download_button_title' -->
|
||||
<string name="revanced_external_downloader_action_button_title">Download-Schaltfläche überschreiben</string>
|
||||
<string name="revanced_external_downloader_action_button_title">Download-Aktionsknopf überschreiben</string>
|
||||
<string name="revanced_external_downloader_action_button_summary_on">Download-Button öffnet den externen Downloader</string>
|
||||
<string name="revanced_external_downloader_action_button_summary_off">Download-Button öffnet den nativen In-App-Downloader</string>
|
||||
<string name="revanced_external_downloader_name_title">Paketname des Downloaders</string>
|
||||
@@ -440,6 +509,9 @@ Diese Funktion ist nur für ältere Geräte verfügbar"</string>
|
||||
<string name="revanced_swipe_overlay_background_alpha_summary">Die Sichtbarkeit des Wischüberlagerhintergrunds</string>
|
||||
<string name="revanced_swipe_threshold_title">Wischgrößenschwelle</string>
|
||||
<string name="revanced_swipe_threshold_summary">Der Schwellenwert für Wischen</string>
|
||||
<string name="revanced_swipe_change_video_title">Mit Wischen wechseln Sie zu den Videos</string>
|
||||
<string name="revanced_swipe_change_video_summary_on">Im Vollbildmodus wischen, um zum nächsten/vorherigen Video zu wechseln</string>
|
||||
<string name="revanced_swipe_change_video_summary_off">Im Vollbildmodus wischen, um nicht zum nächsten/vorherigen Video zu wechseln</string>
|
||||
</patch>
|
||||
<patch id="layout.autocaptions.autoCaptionsPatch">
|
||||
<string name="revanced_auto_captions_title">Autounterschriften deaktivieren</string>
|
||||
@@ -583,10 +655,10 @@ Hinweis: Durch Aktivieren dieser Option wird auch die Videowerbung zwangsweise a
|
||||
<string name="revanced_hide_cast_button_summary_on">Der Cast button ist ausgeblendet</string>
|
||||
<string name="revanced_hide_cast_button_summary_off">Der Cast button wird angezeigt</string>
|
||||
<!-- This button does not display any text, but 'captions' should be translated using the same wording used as the translation of 'revanced_hide_player_flyout_captions_title' -->
|
||||
<string name="revanced_hide_captions_button_title">Beschriftungstaste ausblenden</string>
|
||||
<string name="revanced_hide_captions_button_title">Untertitel-Button ausblenden</string>
|
||||
<string name="revanced_hide_captions_button_summary_on">Beschriftungs-Button ist ausgeblendet</string>
|
||||
<string name="revanced_hide_captions_button_summary_off">Schaltfläche für Untertitel wird angezeigt</string>
|
||||
<string name="revanced_hide_autoplay_button_title">Verstecke Autoplay-Schaltfläche</string>
|
||||
<string name="revanced_hide_autoplay_button_title">Autoplay-Button ausblenden</string>
|
||||
<string name="revanced_hide_autoplay_button_summary_on">Autoplay Button ist ausgeblendet</string>
|
||||
<string name="revanced_hide_autoplay_button_summary_off">Autoplay Button wird angezeigt</string>
|
||||
</patch>
|
||||
@@ -623,21 +695,24 @@ Hinweis: Durch Aktivieren dieser Option wird auch die Videowerbung zwangsweise a
|
||||
<string name="revanced_shorts_player_screen_summary">Komponenten im Shorts Spieler ausblenden oder anzeigen</string>
|
||||
<!-- 'home' should be translated using the same localized wording YouTube displays for the home tab. -->
|
||||
<string name="revanced_hide_shorts_home_title">Shorts im Home Feed ausblenden</string>
|
||||
<string name="revanced_hide_shorts_home_summary_on">Shorts im Home Feed sind ausgeblendet</string>
|
||||
<string name="revanced_hide_shorts_home_summary_off">Shorts im Home Feed werden angezeigt</string>
|
||||
<string name="revanced_hide_shorts_home_summary_on">Im Startbild- und Info-Feed sowie in zugehörigen Videos ausgeblendet</string>
|
||||
<string name="revanced_hide_shorts_home_summary_off">Im Startbild- und Info-Feed sowie in zugehörigen Videos eingeblendet</string>
|
||||
<!-- 'subscription' should be translated using the same localized wording YouTube displays for the subscription tab. -->
|
||||
<string name="revanced_hide_shorts_subscriptions_title">Shorts im Abonnement-Feed ausblenden</string>
|
||||
<string name="revanced_hide_shorts_subscriptions_summary_on">Shorts im Abonnement-Feed sind ausgeblendet</string>
|
||||
<string name="revanced_hide_shorts_subscriptions_summary_off">Shorts im Abonnement-Feed werden angezeigt</string>
|
||||
<string name="revanced_hide_shorts_subscriptions_summary_on">In der Abo-Feed versteckt</string>
|
||||
<string name="revanced_hide_shorts_subscriptions_summary_off">In der Abo-Feed angezeigt</string>
|
||||
<string name="revanced_hide_shorts_search_title">Shorts in den Suchergebnissen ausblenden</string>
|
||||
<string name="revanced_hide_shorts_search_summary_on">Shorts in den Suchergebnissen sind ausgeblendet</string>
|
||||
<string name="revanced_hide_shorts_search_summary_off">Shorts in den Suchergebnissen werden angezeigt</string>
|
||||
<string name="revanced_hide_shorts_search_summary_on">In Suchergebnissen versteckt</string>
|
||||
<string name="revanced_hide_shorts_search_summary_off">In den Suchergebnissen angezeigt</string>
|
||||
<string name="revanced_hide_shorts_history_title">Shorts im Verlauf verstecken</string>
|
||||
<string name="revanced_hide_shorts_history_summary_on">Im Verlauf versteckt</string>
|
||||
<string name="revanced_hide_shorts_history_summary_off">Im Verlauf angezeigt</string>
|
||||
<!-- 'join' should be translated using the same localized wording YouTube displays for the button. -->
|
||||
<string name="revanced_hide_shorts_join_button_title">Beitritts-Button ausblenden</string>
|
||||
<string name="revanced_hide_shorts_join_button_title">\'Beitreten\'-Button ausblenden</string>
|
||||
<string name="revanced_hide_shorts_join_button_summary_on">Join Button ist ausgeblendet</string>
|
||||
<string name="revanced_hide_shorts_join_button_summary_off">Schaltfläche beitreten wird angezeigt</string>
|
||||
<!-- 'subscribe' should be translated using the same localized wording YouTube displays for the button. -->
|
||||
<string name="revanced_hide_shorts_subscribe_button_title">Abonnement-Button ausblenden</string>
|
||||
<string name="revanced_hide_shorts_subscribe_button_title">\'Abonnieren\'-Button ausblenden</string>
|
||||
<string name="revanced_hide_shorts_subscribe_button_summary_on">Abonnieren Button ist ausgeblendet</string>
|
||||
<string name="revanced_hide_shorts_subscribe_button_summary_off">Abonnieren Button wird angezeigt</string>
|
||||
<string name="revanced_hide_shorts_paused_overlay_buttons_title">Pausierte Overlay-Tasten ausblenden</string>
|
||||
@@ -646,25 +721,25 @@ Hinweis: Durch Aktivieren dieser Option wird auch die Videowerbung zwangsweise a
|
||||
<string name="revanced_hide_shorts_shop_button_title">Shop-Button ausblenden</string>
|
||||
<string name="revanced_hide_shorts_shop_button_summary_on">Shop-Button ist ausgeblendet</string>
|
||||
<string name="revanced_hide_shorts_shop_button_summary_off">Shop-Button wird angezeigt</string>
|
||||
<string name="revanced_hide_shorts_super_thanks_button_title">Super-Dankeschön Button ausblenden</string>
|
||||
<string name="revanced_hide_shorts_super_thanks_button_summary_on">Super-Danke Button ist ausgeblendet</string>
|
||||
<string name="revanced_hide_shorts_super_thanks_button_summary_off">Super-Dankeschön Button wird angezeigt</string>
|
||||
<string name="revanced_hide_shorts_super_thanks_button_title">\'Super Thanks\'-Button ausblenden</string>
|
||||
<string name="revanced_hide_shorts_super_thanks_button_summary_on">\'Super Thanks\'-Button ist ausgeblendet</string>
|
||||
<string name="revanced_hide_shorts_super_thanks_button_summary_off">\'Super Thanks\'-Button wird angezeigt</string>
|
||||
<string name="revanced_hide_shorts_tagged_products_title">Markierte Artikel ausblenden</string>
|
||||
<string name="revanced_hide_shorts_tagged_products_summary_on">Markierte Produkte sind ausgeblendet</string>
|
||||
<string name="revanced_hide_shorts_tagged_products_summary_off">Markierte Produkte werden angezeigt</string>
|
||||
<string name="revanced_hide_shorts_location_label_title">Standortbezeichnung ausblenden</string>
|
||||
<string name="revanced_hide_shorts_location_label_summary_on">Ortsbezeichnung ist ausgeblendet</string>
|
||||
<string name="revanced_hide_shorts_location_label_summary_off">Ortsbezeichnung wird angezeigt</string>
|
||||
<string name="revanced_hide_shorts_save_sound_button_title">Musikspeichern-Button ausblenden</string>
|
||||
<string name="revanced_hide_shorts_save_sound_button_title">\'Musik speichern\'-Button ausblenden</string>
|
||||
<string name="revanced_hide_shorts_save_sound_button_summary_on">Musikspeicher Button ist ausgeblendet</string>
|
||||
<string name="revanced_hide_shorts_save_sound_button_summary_off">Musikspeicher Button wird angezeigt</string>
|
||||
<string name="revanced_hide_shorts_use_template_button_title">Template-Schaltfläche ausblenden</string>
|
||||
<string name="revanced_hide_shorts_use_template_button_title">\'Vorlage verwenden\'-Button ausblenden</string>
|
||||
<string name="revanced_hide_shorts_use_template_button_summary_on">Template-Schaltfläche verwenden ist ausgeblendet</string>
|
||||
<string name="revanced_hide_shorts_use_template_button_summary_off">Template-Schaltfläche verwenden wird angezeigt</string>
|
||||
<string name="revanced_hide_shorts_upcoming_button_title">Anstehende Schaltfläche ausblenden</string>
|
||||
<string name="revanced_hide_shorts_upcoming_button_title">\'Demnächst\'-Button ausblenden</string>
|
||||
<string name="revanced_hide_shorts_upcoming_button_summary_on">Kommender Button ist ausgeblendet</string>
|
||||
<string name="revanced_hide_shorts_upcoming_button_summary_off">Kommende Schaltfläche wird angezeigt</string>
|
||||
<string name="revanced_hide_shorts_green_screen_button_title">grüne Bildschirmschaltfläche ausblenden</string>
|
||||
<string name="revanced_hide_shorts_green_screen_button_title">Green-Screen-Button ausblenden</string>
|
||||
<string name="revanced_hide_shorts_green_screen_button_summary_on">Grünbildschirm-Taste ist ausgeblendet</string>
|
||||
<string name="revanced_hide_shorts_green_screen_button_summary_off">Grünbildschirm-Taste wird angezeigt</string>
|
||||
<string name="revanced_hide_shorts_hashtag_button_title">Hashtag Button ausblenden</string>
|
||||
@@ -676,24 +751,24 @@ Hinweis: Durch Aktivieren dieser Option wird auch die Videowerbung zwangsweise a
|
||||
<string name="revanced_hide_shorts_stickers_title">Sticker ausblenden</string>
|
||||
<string name="revanced_hide_shorts_stickers_summary_on">Sticker sind versteckt</string>
|
||||
<string name="revanced_hide_shorts_stickers_summary_off">Sticker werden angezeigt</string>
|
||||
<string name="revanced_hide_shorts_like_fountain_title">Verstecke wie Fontäne</string>
|
||||
<string name="revanced_hide_shorts_like_fountain_title">\'Like\'-Button-Fontäne ausblenden</string>
|
||||
<string name="revanced_hide_shorts_like_fountain_summary_on">Wie Knopf Fontänen-Animation ist ausgeblendet</string>
|
||||
<string name="revanced_hide_shorts_like_fountain_summary_off">Wie Button Fontänen-Animation wird angezeigt</string>
|
||||
<string name="revanced_hide_shorts_like_button_title">Verstecke \"Gefällt mir\" Button</string>
|
||||
<string name="revanced_hide_shorts_like_button_title">\'Like\'-Button ausblenden</string>
|
||||
<string name="revanced_hide_shorts_like_button_summary_on">\"Gefällt mir\" Button ist ausgeblendet</string>
|
||||
<string name="revanced_hide_shorts_like_button_summary_off">\"Gefällt mir\" Button wird angezeigt</string>
|
||||
<string name="revanced_hide_shorts_dislike_button_title">Verstecke \"Gefällt mir nicht\" Button</string>
|
||||
<string name="revanced_hide_shorts_dislike_button_title">\'Dislike\'-Button ausblenden</string>
|
||||
<string name="revanced_hide_shorts_dislike_button_summary_on">\"Gefällt mir nicht\" Button ist ausgeblendet</string>
|
||||
<string name="revanced_hide_shorts_dislike_button_summary_off">\"Gefällt mir nicht\" Button wird angezeigt</string>
|
||||
<string name="revanced_hide_shorts_comments_button_title">Kommentar-Button ausblenden</string>
|
||||
<string name="revanced_hide_shorts_comments_button_summary_on">Kommentar-Button ist ausgeblendet</string>
|
||||
<string name="revanced_hide_shorts_comments_button_summary_off">Kommentar-Button wird angezeigt</string>
|
||||
<!-- 'remix' should be translated using the same localized wording YouTube displays for the button. -->
|
||||
<string name="revanced_hide_shorts_remix_button_title">Remix-Button ausblenden</string>
|
||||
<string name="revanced_hide_shorts_remix_button_title">\'Remix\'-Button ausblenden</string>
|
||||
<string name="revanced_hide_shorts_remix_button_summary_on">Remix Button ist ausgeblendet</string>
|
||||
<string name="revanced_hide_shorts_remix_button_summary_off">Remix-Taste wird angezeigt</string>
|
||||
<!-- 'share' should be translated using the same localized wording YouTube displays for the button. -->
|
||||
<string name="revanced_hide_shorts_share_button_title">Teilen-Schaltfläche ausblenden</string>
|
||||
<string name="revanced_hide_shorts_share_button_title">\'Teilen\'-Button ausblenden</string>
|
||||
<string name="revanced_hide_shorts_share_button_summary_on">Teilen-Schaltfläche ist ausgeblendet</string>
|
||||
<string name="revanced_hide_shorts_share_button_summary_off">Teilen-Schaltfläche wird angezeigt</string>
|
||||
<string name="revanced_hide_shorts_info_panel_title">Info-Panel ausblenden</string>
|
||||
@@ -733,6 +808,13 @@ Hinweis: Durch Aktivieren dieser Option wird auch die Videowerbung zwangsweise a
|
||||
<string name="revanced_hide_player_popup_panels_summary_on">Player-Popup-Fenster sind ausgeblendet</string>
|
||||
<string name="revanced_hide_player_popup_panels_summary_off">Player-Popup-Fenster werden angezeigt</string>
|
||||
</patch>
|
||||
<patch id="layout.player.fullscreen.exitFullscreenPatch">
|
||||
<string name="revanced_exit_fullscreen_title">Beenden Sie den Vollbildmodus am Ende des Videos</string>
|
||||
<string name="revanced_exit_fullscreen_entry_1">Deaktiviert</string>
|
||||
<string name="revanced_exit_fullscreen_entry_2">Hochformat</string>
|
||||
<string name="revanced_exit_fullscreen_entry_3">Querformat</string>
|
||||
<string name="revanced_exit_fullscreen_entry_4">Hoch- und Querformat</string>
|
||||
</patch>
|
||||
<patch id="layout.player.fullscreen.openVideosFullscreen">
|
||||
<string name="revanced_open_videos_fullscreen_portrait_title">Videos im Vollbild-Hochformat öffnen</string>
|
||||
<string name="revanced_open_videos_fullscreen_portrait_summary_on">Videos im Vollbild öffnen</string>
|
||||
@@ -763,7 +845,7 @@ Einschränkung: Dislikes werden möglicherweise nicht im Inkognito-Modus angezei
|
||||
<string name="revanced_ryd_dislike_percentage_summary_on">Dislikes als Prozentsatz angezeigt</string>
|
||||
<string name="revanced_ryd_dislike_percentage_summary_off">Dislikes als Nummer angezeigt</string>
|
||||
<!-- Translations should use language similar to 'revanced_sb_enable_compact_skip_button' -->
|
||||
<string name="revanced_ryd_compact_layout_title">Kompakter \"Gefällt mir\" Button</string>
|
||||
<string name="revanced_ryd_compact_layout_title">Kompakter Like-Button</string>
|
||||
<string name="revanced_ryd_compact_layout_summary_on">\"Gefällt mir\" Button für minimale Breite</string>
|
||||
<string name="revanced_ryd_compact_layout_summary_off">\"Gefällt mir\" Button für das beste Aussehen</string>
|
||||
<string name="revanced_ryd_toast_on_connection_error_title">Einen Toast anzeigen, wenn die API nicht verfügbar ist</string>
|
||||
@@ -811,7 +893,7 @@ Diese Funktion funktioniert am besten mit einer Videoqualität von 720p oder nie
|
||||
</patch>
|
||||
<patch id="layout.sponsorblock.sponsorBlockResourcePatch">
|
||||
<string name="revanced_sb_enable_sb">SponsorBlock aktivieren</string>
|
||||
<string name="revanced_sb_enable_sb_sum">SponsorBlock ist ein Crowd-Source-System, um nervige Teile von YouTube-Videos zu überspringen</string>
|
||||
<string name="revanced_sb_enable_sb_sum">SponsorBlock ist ein Crowdsourcing-System zum Überspringen von nervigen Teilen von YouTube-Videos</string>
|
||||
<string name="revanced_sb_appearance_category">Darstellung</string>
|
||||
<string name="revanced_sb_enable_voting">Stimmen-Button anzeigen</string>
|
||||
<string name="revanced_sb_enable_voting_sum_on">Segmentstimmen Button wird angezeigt</string>
|
||||
@@ -876,7 +958,7 @@ Ihre Benutzer-ID ist wie ein Passwort und sollte niemals weitergegeben werden.
|
||||
<string name="revanced_sb_segments_sponsor">Sponsor</string>
|
||||
<string name="revanced_sb_segments_sponsor_sum">Bezahlte Förderung, bezahlte Empfehlungen und direkte Werbung. Nicht für Selbstwerbung oder kostenlose Shoutouts an Ursachen/Webseiten/Produkte, die ihnen gefallen</string>
|
||||
<string name="revanced_sb_segments_selfpromo">Unbezahlt/Eigenwerbung</string>
|
||||
<string name="revanced_sb_segments_selfpromo_sum">Ähnlich wie bei \"Sponsor\" mit Ausnahme von unbezahlter oder Selbstbeförderung. Enthält Abschnitte über Waren, Spenden oder Informationen darüber, mit wem sie zusammengearbeitet haben</string>
|
||||
<string name="revanced_sb_segments_selfpromo_sum">Ähnlich wie Sponsor, jedoch für unbezahlte oder Eigenwerbung. Enthält Abschnitte über Merchandise, Spenden oder Informationen darüber, mit wem sie zusammengearbeitet haben</string>
|
||||
<string name="revanced_sb_segments_interaction">Interaktionserinnerung (Abonnieren)</string>
|
||||
<string name="revanced_sb_segments_interaction_sum">Eine kurze Erinnerung, sie in der Mitte des Inhalts zu zitieren, zu abonnieren oder zu verfolgen. Wenn es lang ist oder etwas Konkretes ist, sollte es stattdessen unter Selbstförderung stehen</string>
|
||||
<string name="revanced_sb_segments_highlight">Hervorheben</string>
|
||||
@@ -1001,6 +1083,23 @@ Bereit zum Einreichen?"</string>
|
||||
<string name="revanced_sb_reset">Zurücksetzen</string>
|
||||
<string name="revanced_sb_about">Über</string>
|
||||
<string name="revanced_sb_about_api_sum">Daten werden von der SponsorBlock API bereitgestellt. Tippe hier, um mehr zu erfahren und Downloads für andere Plattformen zu sehen</string>
|
||||
</patch>
|
||||
<patch id="layout.formfactor.changeFormFactorPatch">
|
||||
<string name="revanced_change_form_factor_title">Anordnungsformfactor</string>
|
||||
<string name="revanced_change_form_factor_entry_1">Standard</string>
|
||||
<string name="revanced_change_form_factor_entry_2">Telefon</string>
|
||||
<string name="revanced_change_form_factor_entry_3">Tablets</string>
|
||||
<string name="revanced_change_form_factor_entry_4">Automobil</string>
|
||||
<string name="revanced_change_form_factor_user_dialog_message">"Änderungen umfassen:
|
||||
|
||||
Tablet-Layout
|
||||
• Community-Beiträge werden ausgeblendet
|
||||
|
||||
Auto-Layout
|
||||
• Der Verlaufsmenü ist ausgeblendet
|
||||
• Der Explore-Tab wird wiederhergestellt
|
||||
• Shorts werden im regulären Player geöffnet
|
||||
• Der Feed ist nach Themen und Kanälen organisiert"</string>
|
||||
</patch>
|
||||
<patch id="layout.spoofappversion.spoofAppVersionPatch">
|
||||
<string name="revanced_spoof_app_version_title">Spoof-App-Version</string>
|
||||
@@ -1015,6 +1114,7 @@ Wenn Sie die Funktion später deaktivieren, wird empfohlen, die App-Daten zu lö
|
||||
This is because the 'General layout' menu uses alphabetic sorting, and it functionally works better if the spoof target selector appears below the 'Spoof app version' UI switch -->
|
||||
<string name="revanced_spoof_app_version_target_title">Spoof-App-Versionsziel</string>
|
||||
<string name="revanced_spoof_app_version_target_entry_1">19.35.36 - Alte Shorts Spielersymbole wiederherstellen</string>
|
||||
<string name="revanced_spoof_app_version_target_entry_2">19.26.42 - Alte Navigations- und Toolbar-Symbole wiederherstellen</string>
|
||||
<!-- 'RYD' is 'Return YouTube Dislike' -->
|
||||
<string name="revanced_spoof_app_version_target_legacy_entry_1">18.33.40 - RYD auf Shorts Inkognito-Modus wiederherstellen</string>
|
||||
<string name="revanced_spoof_app_version_target_legacy_entry_2">18.20.39 - Wiederherstellen der breiten Videogeschwindigkeit & Qualitätsmenü</string>
|
||||
@@ -1058,14 +1158,8 @@ Wenn Sie die Funktion später deaktivieren, wird empfohlen, die App-Daten zu lö
|
||||
<string name="revanced_shorts_autoplay_background_summary_on">Shorts-Hintergrund spielen wird automatisch abgespielt</string>
|
||||
<string name="revanced_shorts_autoplay_background_summary_off">Shorts-Hintergrundwiedergabe wiederholt sich</string>
|
||||
</patch>
|
||||
<patch id="layout.tablet.enableTabletLayoutPatch">
|
||||
<string name="revanced_tablet_layout_title">Tablet Layout aktivieren</string>
|
||||
<string name="revanced_tablet_layout_summary_on">Tablet Layout ist aktiviert</string>
|
||||
<string name="revanced_tablet_layout_summary_off">Tablet Layout ist deaktiviert</string>
|
||||
<string name="revanced_tablet_layout_user_dialog_message">Community-Beiträge werden nicht auf Tablet Layouts angezeigt</string>
|
||||
</patch>
|
||||
<patch id="layout.miniplayer.miniplayerPatch">
|
||||
<string name="revanced_miniplayer_screen_title">Miniplayer</string>
|
||||
<string name="revanced_miniplayer_screen_title">Minispieler</string>
|
||||
<string name="revanced_miniplayer_screen_summary">Ändere den Stil des in App minimierten Players</string>
|
||||
<string name="revanced_miniplayer_type_title">Minispielertyp</string>
|
||||
<string name="revanced_miniplayer_type_entry_0">Deaktiviert</string>
|
||||
@@ -1124,8 +1218,10 @@ Wischen Sie, um zu erweitern oder zu schließen"</string>
|
||||
<string name="revanced_seekbar_custom_color_title">Eigene Suchleistenfarbe aktivieren</string>
|
||||
<string name="revanced_seekbar_custom_color_summary_on">Angepasste Suchleistenfarbe wird angezeigt</string>
|
||||
<string name="revanced_seekbar_custom_color_summary_off">Originalfarbe der Suchleiste wird angezeigt</string>
|
||||
<string name="revanced_seekbar_custom_color_value_title">Farbe der Suchleiste</string>
|
||||
<string name="revanced_seekbar_custom_color_value_summary">Die Farbe der Suchleiste</string>
|
||||
<string name="revanced_seekbar_custom_color_primary_title">Farbliche Anpassung der Fortschrittsanzeige</string>
|
||||
<string name="revanced_seekbar_custom_color_primary_summary">Die Farbe der Fortschrittsanzeige</string>
|
||||
<string name="revanced_seekbar_custom_color_accent_title">Farbliche Anpassung des Fortschrittsanzeige-Akzents</string>
|
||||
<string name="revanced_seekbar_custom_color_accent_summary">Die Akzentfarbe der Fortschrittsanzeige</string>
|
||||
<string name="revanced_seekbar_custom_color_invalid">Ungültiger Suchleisten-Farbwert</string>
|
||||
</patch>
|
||||
<patch id="layout.thumbnails.bypassImageRegionRestrictionsPatch">
|
||||
@@ -1227,6 +1323,7 @@ Durch Aktivieren dieser Option können höhere Videoqualitäten freigeschaltet w
|
||||
<string name="revanced_force_original_audio_title">Original Audio erzwingen</string>
|
||||
<string name="revanced_force_original_audio_summary_on">Originales Audio verwenden</string>
|
||||
<string name="revanced_force_original_audio_summary_off">Standardaudio verwenden</string>
|
||||
<string name="revanced_force_original_audio_not_available">Um diese Funktion zu nutzen, ändern Sie das Stream-Spoofing auf den iOS-Clienttyp.</string>
|
||||
</patch>
|
||||
<patch id="video.quality.rememberVideoQualityPatch">
|
||||
<!-- Translations should use the same text as revanced_custom_playback_speeds_auto -->
|
||||
@@ -1254,6 +1351,8 @@ Durch Aktivieren dieser Option können höhere Videoqualitäten freigeschaltet w
|
||||
<string name="revanced_custom_playback_speeds_invalid">Benutzerdefinierte Geschwindigkeiten müssen kleiner als %s sein</string>
|
||||
<string name="revanced_custom_playback_speeds_parse_exception">Ungültige benutzerdefinierte Wiedergabegeschwindigkeiten</string>
|
||||
<string name="revanced_custom_playback_speeds_auto">Autom</string>
|
||||
<string name="revanced_speed_tap_and_hold_title">Benutzerdefinierte Geschwindigkeit bei Tippen und Halten</string>
|
||||
<string name="revanced_speed_tap_and_hold_summary">Abspielgeschwindigkeit zwischen 0-8x</string>
|
||||
</patch>
|
||||
<patch id="video.speed.remember.rememberPlaybackSpeedPatch">
|
||||
<string name="revanced_remember_playback_speed_last_selected_title">Änderungen der Wiedergabegeschwindigkeit merken</string>
|
||||
@@ -1262,6 +1361,11 @@ Durch Aktivieren dieser Option können höhere Videoqualitäten freigeschaltet w
|
||||
<string name="revanced_playback_speed_default_title">Standard Wiedergabegeschwindigkeit</string>
|
||||
<string name="revanced_remember_playback_speed_toast">Standardgeschwindigkeit geändert zu: %s</string>
|
||||
</patch>
|
||||
<patch id="video.hdr.disableHdrPatch">
|
||||
<string name="revanced_disable_hdr_video_title">Deaktiviere HDR-Video</string>
|
||||
<string name="revanced_disable_hdr_video_summary_on">HDR-Video ist deaktiviert</string>
|
||||
<string name="revanced_disable_hdr_video_summary_off">HDR-Video ist aktiviert</string>
|
||||
</patch>
|
||||
<patch id="video.videoqualitymenu.restoreOldVideoQualityMenuResourcePatch">
|
||||
<string name="revanced_restore_old_video_quality_menu_title">Altes Videoqualitätsmenü wiederherstellen</string>
|
||||
<string name="revanced_restore_old_video_quality_menu_summary_on">Altes Video-Qualitätsmenü wird angezeigt</string>
|
||||
@@ -1282,62 +1386,28 @@ Durch Aktivieren dieser Option können höhere Videoqualitäten freigeschaltet w
|
||||
Die Videowiedergabe funktioniert möglicherweise nicht"</string>
|
||||
<string name="revanced_spoof_video_streams_user_dialog_message">Das Deaktivieren dieser Einstellung kann zu Videowiedergabeproblemen führen.</string>
|
||||
<string name="revanced_spoof_video_streams_client_type_title">Standard-Client</string>
|
||||
<string name="revanced_spoof_video_streams_about_title">Spoofing-Nebenwirkungen</string>
|
||||
<string name="revanced_spoof_video_streams_about_summary">"• Audiospurmenü fehlt
|
||||
<!-- 'no auth' means no authentication -->
|
||||
<string name="revanced_spoof_video_streams_client_type_android_vr_no_auth">Android VR (ohne Authentifizierung)</string>
|
||||
<string name="revanced_spoof_video_streams_ios_force_avc_title">iOS AVC (H.264) erzwingen</string>
|
||||
<string name="revanced_spoof_video_streams_ios_force_avc_summary_on">Der Videocodec ist auf AVC (H.264) erzwungen.</string>
|
||||
<string name="revanced_spoof_video_streams_ios_force_avc_summary_off">Der Videocodec wird automatisch bestimmt.</string>
|
||||
<string name="revanced_spoof_video_streams_ios_force_avc_user_dialog_message">"Aktivieren Sie dies, um die Akkulaufzeit zu verbessern und Ruckeln bei der Wiedergabe zu beheben.
|
||||
|
||||
AVC hat eine maximale Auflösung von 1080p, Opus-Audiocodec ist nicht verfügbar und die Videowiedergabe verbraucht mehr Internetdaten als VP9 oder AV1."</string>
|
||||
<string name="revanced_spoof_video_streams_about_ios_tv_title">iOS-Spoofing-Nebenwirkungen</string>
|
||||
<string name="revanced_spoof_video_streams_about_ios_tv_summary">"• Filme oder kostenpflichtige Videos können möglicherweise nicht abgespielt werden
|
||||
• Eine stabile Lautstärke ist nicht verfügbar
|
||||
• \"Originalton erzwingen\" ist nicht verfügbar"</string>
|
||||
<string name="revanced_spoof_video_streams_language_title">Standard Audio Streamsprache</string>
|
||||
<string name="revanced_spoof_video_streams_language_DEFAULT">App-Sprache</string>
|
||||
<string name="revanced_spoof_video_streams_language_AR">Arabisch</string>
|
||||
<string name="revanced_spoof_video_streams_language_AZ">Aserbaidschan</string>
|
||||
<string name="revanced_spoof_video_streams_language_BG">Bulgarisch</string>
|
||||
<string name="revanced_spoof_video_streams_language_BN">Bengalisch</string>
|
||||
<string name="revanced_spoof_video_streams_language_CA">Katalanisch</string>
|
||||
<string name="revanced_spoof_video_streams_language_CS">Tschechisch</string>
|
||||
<string name="revanced_spoof_video_streams_language_DA">Dänisch</string>
|
||||
<string name="revanced_spoof_video_streams_language_DE">Deutsch</string>
|
||||
<string name="revanced_spoof_video_streams_language_EL">Griechisch</string>
|
||||
<string name="revanced_spoof_video_streams_language_EN">Englisch</string>
|
||||
<string name="revanced_spoof_video_streams_language_ES">Spanisch</string>
|
||||
<string name="revanced_spoof_video_streams_language_ET">Estnisch</string>
|
||||
<string name="revanced_spoof_video_streams_language_FA">Persisch</string>
|
||||
<string name="revanced_spoof_video_streams_language_FI">Finnisch</string>
|
||||
<string name="revanced_spoof_video_streams_language_FR">Französisch</string>
|
||||
<string name="revanced_spoof_video_streams_language_GU">Gujarati</string>
|
||||
<string name="revanced_spoof_video_streams_language_HI">Hannah</string>
|
||||
<string name="revanced_spoof_video_streams_language_HR">Kroatisch</string>
|
||||
<string name="revanced_spoof_video_streams_language_HU">Ungarisch</string>
|
||||
<string name="revanced_spoof_video_streams_language_ID">Indonesisch</string>
|
||||
<string name="revanced_spoof_video_streams_language_IT">Italienisch</string>
|
||||
<string name="revanced_spoof_video_streams_language_JA">Japanisch</string>
|
||||
<string name="revanced_spoof_video_streams_language_KK">Kasachisch</string>
|
||||
<string name="revanced_spoof_video_streams_language_KO">Koreanisch</string>
|
||||
<string name="revanced_spoof_video_streams_language_LT">Litauisch</string>
|
||||
<string name="revanced_spoof_video_streams_language_LV">Lettisch</string>
|
||||
<string name="revanced_spoof_video_streams_language_MK">Makedonisch</string>
|
||||
<string name="revanced_spoof_video_streams_language_MN">Mongolisch</string>
|
||||
<string name="revanced_spoof_video_streams_language_MR">Marathi</string>
|
||||
<string name="revanced_spoof_video_streams_language_MS">Malaiisch</string>
|
||||
<string name="revanced_spoof_video_streams_language_MY">Burmesisch</string>
|
||||
<string name="revanced_spoof_video_streams_language_NL">Niederländisch</string>
|
||||
<string name="revanced_spoof_video_streams_language_OR">Odia</string>
|
||||
<string name="revanced_spoof_video_streams_language_PA">Pandschabi</string>
|
||||
<string name="revanced_spoof_video_streams_language_PL">Polnisch</string>
|
||||
<string name="revanced_spoof_video_streams_language_RO">Rumänisch</string>
|
||||
<string name="revanced_spoof_video_streams_language_RU">Russisch</string>
|
||||
<string name="revanced_spoof_video_streams_language_SK">Slowakisch</string>
|
||||
<string name="revanced_spoof_video_streams_language_SL">Slowenisch</string>
|
||||
<string name="revanced_spoof_video_streams_language_SR">Serbisch</string>
|
||||
<string name="revanced_spoof_video_streams_language_SV">Schwedisch</string>
|
||||
<string name="revanced_spoof_video_streams_language_SW">Suaheli</string>
|
||||
<string name="revanced_spoof_video_streams_language_TA">Tamilisch</string>
|
||||
<string name="revanced_spoof_video_streams_language_TE">Telugu</string>
|
||||
<string name="revanced_spoof_video_streams_language_TH">Thailändisch</string>
|
||||
<string name="revanced_spoof_video_streams_language_TR">Türkisch</string>
|
||||
<string name="revanced_spoof_video_streams_language_UK">Ukrainische</string>
|
||||
<string name="revanced_spoof_video_streams_language_UR">Urdu</string>
|
||||
<string name="revanced_spoof_video_streams_language_VI">Vietnamesisch</string>
|
||||
<string name="revanced_spoof_video_streams_language_ZH">Chinesisch</string>
|
||||
• Videos enden 1 Sekunde zu früh"</string>
|
||||
<string name="revanced_spoof_video_streams_about_android_title">Android-Spoofing-Nebenwirkungen</string>
|
||||
<string name="revanced_spoof_video_streams_about_android_summary">"• Audiospur-Menü fehlt
|
||||
• Stabile Lautstärke ist nicht verfügbar
|
||||
• Original-Audio erzwingen ist nicht verfügbar"</string>
|
||||
<string name="revanced_spoof_video_streams_about_no_av1">• Kein AV1-Videocodec</string>
|
||||
<string name="revanced_spoof_video_streams_about_kids_videos">• Kinder-Videos werden möglicherweise nicht abgespielt, wenn du abgemeldet bist oder den Inkognito-Modus verwendest.</string>
|
||||
<string name="revanced_spoof_streaming_data_stats_for_nerds_title">In Statistiken für Nerds anzeigen</string>
|
||||
<string name="revanced_spoof_streaming_data_stats_for_nerds_summary_on">Der Client-Typ wird in den Statistiken für Nerds angezeigt</string>
|
||||
<string name="revanced_spoof_streaming_data_stats_for_nerds_summary_off">Der Client wird in den Statistiken für Nerds ausgeblendet</string>
|
||||
<string name="revanced_spoof_video_streams_language_title">Standard-Audiostreamsprache für VR</string>
|
||||
</patch>
|
||||
</app>
|
||||
<app id="twitch">
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user