Compare commits

...

63 Commits

Author SHA1 Message Date
semantic-release-bot
4c44982cde chore: Release v5.5.0-dev.3 [skip ci]
# [5.5.0-dev.3](https://github.com/ReVanced/revanced-patches/compare/v5.5.0-dev.2...v5.5.0-dev.3) (2024-12-16)

### Features

* **YouTube - Hide feed components:** Remove obsolete `Hide search result shelf header` option ([#4134](https://github.com/ReVanced/revanced-patches/issues/4134)) ([a7aab9a](a7aab9aeca))
2024-12-16 18:18:23 +00:00
ILoveOpenSourceApplications
a7aab9aeca feat(YouTube - Hide feed components): Remove obsolete Hide search result shelf header option (#4134) 2024-12-16 19:15:22 +01:00
semantic-release-bot
7a8486f562 chore: Release v5.5.0-dev.2 [skip ci]
# [5.5.0-dev.2](https://github.com/ReVanced/revanced-patches/compare/v5.5.0-dev.1...v5.5.0-dev.2) (2024-12-16)

### Bug Fixes

* **YouTube Music:** Add `Spoof client patch` to fix playback ([#4132](https://github.com/ReVanced/revanced-patches/issues/4132)) ([ccb6a7f](ccb6a7f161))
2024-12-16 18:10:37 +00:00
oSumAtrIX
ccb6a7f161 fix(YouTube Music): Add Spoof client patch to fix playback (#4132) 2024-12-16 19:07:37 +01:00
LisoUseInAIKyrios
c792edfb77 chore: fix typo 2024-12-15 17:06:36 +04:00
semantic-release-bot
339cd6cc70 chore: Release v5.5.0-dev.1 [skip ci]
# [5.5.0-dev.1](https://github.com/ReVanced/revanced-patches/compare/v5.4.1-dev.1...v5.5.0-dev.1) (2024-12-15)

### Features

* **YouTube:** Add `Force original audio` patch ([#4122](https://github.com/ReVanced/revanced-patches/issues/4122)) ([68304fd](68304fd96a))
2024-12-15 12:55:13 +00:00
LisoUseInAIKyrios
68304fd96a feat(YouTube): Add Force original audio patch (#4122) 2024-12-15 16:51:34 +04:00
semantic-release-bot
4033048c9b chore: Release v5.4.1-dev.1 [skip ci]
## [5.4.1-dev.1](https://github.com/ReVanced/revanced-patches/compare/v5.4.0...v5.4.1-dev.1) (2024-12-14)

### Bug Fixes

* **Twitch:** Change recommended target to the latest app version ([9525137](9525137800))
2024-12-14 20:18:28 +00:00
LisoUseInAIKyrios
9525137800 fix(Twitch): Change recommended target to the latest app version 2024-12-15 00:15:00 +04:00
semantic-release-bot
0cf05fa2b0 chore: Release v5.4.0 [skip ci]
# [5.4.0](https://github.com/ReVanced/revanced-patches/compare/v5.3.0...v5.4.0) (2024-12-14)

### Bug Fixes

* **GmsCore support:** Adjust presentation of battery optimization dialog  ([#4091](https://github.com/ReVanced/revanced-patches/issues/4091)) ([2062660](2062660d60))
* **TikTok - Settings:** Use correct colors for dark mode ([#4087](https://github.com/ReVanced/revanced-patches/issues/4087)) ([18f1884](18f18849f3))
* **TikTok - SIM Spoof:** Change patch to default off to fix login ([#4084](https://github.com/ReVanced/revanced-patches/issues/4084)) ([3c47bff](3c47bfff1a))
* **YouTube - Hide ads:** Hide new type of featured promotions ([#4113](https://github.com/ReVanced/revanced-patches/issues/4113)) ([c348b10](c348b10a35))
* **YouTube - Spoof video streams:** Fix error toast that is sometimes shown ([#4090](https://github.com/ReVanced/revanced-patches/issues/4090)) ([3ec2577](3ec25778eb))
* **YouTube - Spoof video streams:** Resolve playback of age restricted videos ([#4096](https://github.com/ReVanced/revanced-patches/issues/4096)) ([32be03c](32be03c28d))
* **YouTube Music - Bypass certificate checks:** Add a recommended target version ([#4104](https://github.com/ReVanced/revanced-patches/issues/4104)) ([11216cd](11216cd942))
* **YouTube Music - Spoof video streams:** Disable stable volume ([#4097](https://github.com/ReVanced/revanced-patches/issues/4097)) ([78c5118](78c51182f2))

### Features

* Add Internal data documents provider patch ([#3830](https://github.com/ReVanced/revanced-patches/issues/3830)) ([89c45af](89c45afcc6))
* **Change package name:** Add options to change provider and permission package names to handle installation conflicts ([c44a4af](c44a4af406))
* **Twitch:** Make patches compatible with latest versions ([#4099](https://github.com/ReVanced/revanced-patches/issues/4099)) ([b217ca9](b217ca9f9d))
* **YouTube - Comments:** Add `Hide 'Chat summary'` ([#4110](https://github.com/ReVanced/revanced-patches/issues/4110)) ([8d06a4a](8d06a4a8ad))
2024-12-14 07:40:53 +00:00
oSumAtrIX
a9bfaf44e2 chore: Merge branch dev to main (#4078) 2024-12-14 08:37:30 +01:00
semantic-release-bot
7b08051371 chore: Release v5.4.0-dev.11 [skip ci]
# [5.4.0-dev.11](https://github.com/ReVanced/revanced-patches/compare/v5.4.0-dev.10...v5.4.0-dev.11) (2024-12-14)

### Features

* **Twitch:** Make patches compatible with latest versions ([#4099](https://github.com/ReVanced/revanced-patches/issues/4099)) ([b217ca9](b217ca9f9d))
2024-12-14 07:36:35 +00:00
oSumAtrIX
b217ca9f9d feat(Twitch): Make patches compatible with latest versions (#4099) 2024-12-14 08:33:27 +01:00
github-actions[bot]
9482092579 chore: Sync translations (#4116) 2024-12-14 11:18:19 +04:00
semantic-release-bot
134c2e52bd chore: Release v5.4.0-dev.10 [skip ci]
# [5.4.0-dev.10](https://github.com/ReVanced/revanced-patches/compare/v5.4.0-dev.9...v5.4.0-dev.10) (2024-12-13)

### Bug Fixes

* **YouTube - Hide ads:** Hide new type of featured promotions ([#4113](https://github.com/ReVanced/revanced-patches/issues/4113)) ([c348b10](c348b10a35))
2024-12-13 21:36:09 +00:00
ILoveOpenSourceApplications
c348b10a35 fix(YouTube - Hide ads): Hide new type of featured promotions (#4113) 2024-12-14 01:33:25 +04:00
github-actions[bot]
9a9ec7ef18 chore: Sync translations (#4114) 2024-12-14 01:32:59 +04:00
oSumAtrIX
e746507339 ci: Upload PR build artifact 2024-12-12 23:17:44 +01:00
oSumAtrIX
862ca077db ci: Only build relevant project 2024-12-12 23:17:09 +01:00
semantic-release-bot
138d43b34b chore: Release v5.4.0-dev.9 [skip ci]
# [5.4.0-dev.9](https://github.com/ReVanced/revanced-patches/compare/v5.4.0-dev.8...v5.4.0-dev.9) (2024-12-12)

### Features

* **YouTube - Comments:** Add `Hide 'Chat summary'` ([#4110](https://github.com/ReVanced/revanced-patches/issues/4110)) ([8d06a4a](8d06a4a8ad))
2024-12-12 18:42:30 +00:00
ILoveOpenSourceApplications
8d06a4a8ad feat(YouTube - Comments): Add Hide 'Chat summary' (#4110) 2024-12-12 22:39:08 +04:00
github-actions[bot]
d7ca7c1733 chore: Sync translations (#4105) 2024-12-12 19:01:48 +04:00
LisoUseInAIKyrios
8e0b7db82a refactor: Use raw string resources (#4109) 2024-12-12 17:01:16 +04:00
semantic-release-bot
b9d7867cee chore: Release v5.4.0-dev.8 [skip ci]
# [5.4.0-dev.8](https://github.com/ReVanced/revanced-patches/compare/v5.4.0-dev.7...v5.4.0-dev.8) (2024-12-11)

### Bug Fixes

* **YouTube Music - Bypass certificate checks:** Add a recommended target version ([#4104](https://github.com/ReVanced/revanced-patches/issues/4104)) ([11216cd](11216cd942))
2024-12-11 20:04:06 +00:00
LisoUseInAIKyrios
11216cd942 fix(YouTube Music - Bypass certificate checks): Add a recommended target version (#4104) 2024-12-11 21:00:32 +01:00
LisoUseInAIKyrios
b163e5f64d chore(YouTube): Simplify strings for translations 2024-12-11 17:54:17 +04:00
semantic-release-bot
5c2bbd0671 chore: Release v5.4.0-dev.7 [skip ci]
# [5.4.0-dev.7](https://github.com/ReVanced/revanced-patches/compare/v5.4.0-dev.6...v5.4.0-dev.7) (2024-12-10)

### Bug Fixes

* **GmsCore support:** Adjust presentation of battery optimization dialog  ([#4091](https://github.com/ReVanced/revanced-patches/issues/4091)) ([2062660](2062660d60))
2024-12-10 21:47:35 +00:00
LisoUseInAIKyrios
2062660d60 fix(GmsCore support): Adjust presentation of battery optimization dialog (#4091)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2024-12-11 01:43:57 +04:00
semantic-release-bot
2d9f08a08e chore: Release v5.4.0-dev.6 [skip ci]
# [5.4.0-dev.6](https://github.com/ReVanced/revanced-patches/compare/v5.4.0-dev.5...v5.4.0-dev.6) (2024-12-10)

### Bug Fixes

* **YouTube Music - Spoof video streams:** Disable stable volume ([#4097](https://github.com/ReVanced/revanced-patches/issues/4097)) ([78c5118](78c51182f2))
2024-12-10 21:08:47 +00:00
LisoUseInAIKyrios
78c51182f2 fix(YouTube Music - Spoof video streams): Disable stable volume (#4097) 2024-12-11 01:04:48 +04:00
semantic-release-bot
feac2ab439 chore: Release v5.4.0-dev.5 [skip ci]
# [5.4.0-dev.5](https://github.com/ReVanced/revanced-patches/compare/v5.4.0-dev.4...v5.4.0-dev.5) (2024-12-10)

### Bug Fixes

* **YouTube - Spoof video streams:** Resolve playback of age restricted videos ([#4096](https://github.com/ReVanced/revanced-patches/issues/4096)) ([32be03c](32be03c28d))
2024-12-10 20:46:59 +00:00
LisoUseInAIKyrios
32be03c28d fix(YouTube - Spoof video streams): Resolve playback of age restricted videos (#4096) 2024-12-11 00:42:56 +04:00
github-actions[bot]
6a345eee37 chore: Sync translations (#4093) 2024-12-10 21:26:57 +04:00
LisoUseInAIKyrios
61be7731e3 refactor(YouTube - Spoof streaming data): Add more debug logging 2024-12-10 21:12:38 +04:00
semantic-release-bot
8295356f88 chore: Release v5.4.0-dev.4 [skip ci]
# [5.4.0-dev.4](https://github.com/ReVanced/revanced-patches/compare/v5.4.0-dev.3...v5.4.0-dev.4) (2024-12-10)

### Bug Fixes

* **YouTube - Spoof video streams:** Fix error toast that is sometimes shown ([#4090](https://github.com/ReVanced/revanced-patches/issues/4090)) ([3ec2577](3ec25778eb))
2024-12-10 16:30:47 +00:00
LisoUseInAIKyrios
3ec25778eb fix(YouTube - Spoof video streams): Fix error toast that is sometimes shown (#4090) 2024-12-10 20:27:22 +04:00
LisoUseInAIKyrios
3faf0ac160 refactor(YouTube Music): Show error toast if GmsCore Support is included with root installation 2024-12-10 15:15:02 +04:00
LisoUseInAIKyrios
3ff559878b refactor(YouTube - Miniplayer): Use 'Default' language to describe unpatched Miniplayer type 2024-12-10 03:13:39 +04:00
LisoUseInAIKyrios
ed9c78da1e chore(YouTube - Spoof video streams): Improve error logging 2024-12-10 02:56:40 +04:00
semantic-release-bot
eefb59020e chore: Release v5.4.0-dev.3 [skip ci]
# [5.4.0-dev.3](https://github.com/ReVanced/revanced-patches/compare/v5.4.0-dev.2...v5.4.0-dev.3) (2024-12-09)

### Bug Fixes

* **TikTok - Settings:** Use correct colors for dark mode ([#4087](https://github.com/ReVanced/revanced-patches/issues/4087)) ([18f1884](18f18849f3))
2024-12-09 20:50:09 +00:00
LisoUseInAIKyrios
18f18849f3 fix(TikTok - Settings): Use correct colors for dark mode (#4087) 2024-12-10 00:46:53 +04:00
semantic-release-bot
b172c38284 chore: Release v5.4.0-dev.2 [skip ci]
# [5.4.0-dev.2](https://github.com/ReVanced/revanced-patches/compare/v5.4.0-dev.1...v5.4.0-dev.2) (2024-12-09)

### Bug Fixes

* **TikTok - SIM Spoof:** Change patch to default off to fix login ([#4084](https://github.com/ReVanced/revanced-patches/issues/4084)) ([3c47bff](3c47bfff1a))

### Features

* Add Internal data documents provider patch ([#3830](https://github.com/ReVanced/revanced-patches/issues/3830)) ([89c45af](89c45afcc6))
2024-12-09 17:52:14 +00:00
github-actions[bot]
5b15602896 chore: Sync translations (#4085) 2024-12-09 21:49:37 +04:00
Tim Schneeberger
89c45afcc6 feat: Add Internal data documents provider patch (#3830)
Co-authored-by: LisoUseInAIKyrios <118716522+LisoUseInAIKyrios@users.noreply.github.com>
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2024-12-09 18:46:31 +01:00
LisoUseInAIKyrios
3c47bfff1a fix(TikTok - SIM Spoof): Change patch to default off to fix login (#4084) 2024-12-09 18:45:42 +01:00
semantic-release-bot
6af8e1b625 chore: Release v5.4.0-dev.1 [skip ci]
# [5.4.0-dev.1](https://github.com/ReVanced/revanced-patches/compare/v5.3.0...v5.4.0-dev.1) (2024-12-09)

### Features

* **Change package name:** Add options to change provider and permission package names to handle installation conflicts ([c44a4af](c44a4af406))
2024-12-09 06:55:58 +00:00
1fexd
c44a4af406 feat(Change package name): Add options to change provider and permission package names to handle installation conflicts
Co-authored-by: LisoUseInAIKyrios <118716522+LisoUseInAIKyrios@users.noreply.github.com>
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2024-12-09 07:53:05 +01:00
semantic-release-bot
cb857b0fce chore: Release v5.3.0 [skip ci]
# [5.3.0](https://github.com/ReVanced/revanced-patches/compare/v5.2.3...v5.3.0) (2024-12-09)

### Bug Fixes

* **Change package name:** Prevent applying the patch to known incompatible apps ([#3943](https://github.com/ReVanced/revanced-patches/issues/3943)) ([b04a11a](b04a11a885))
* **Reddit:** Fix patches by using correct extension class ([95d56b1](95d56b1529))
* **Sync for Reddit:** Fix patches by using correct extension name ([5ae76f4](5ae76f4df8))
* **Twitter:** Merge correct extension by depending on correct extension patch ([35594d0](35594d0a20))
* **YouTube - Spoof video streams:** Add missing preferred language preference to the settings ([6462fb8](6462fb8cba))
* **YouTube - Spoof video streams:** Enable opus codec by updating iOS client version ([#4063](https://github.com/ReVanced/revanced-patches/issues/4063)) ([d1ae1f1](d1ae1f1da7))
* **YouTube - Spoof video streams:** Update `Force AVC` client data ([#4064](https://github.com/ReVanced/revanced-patches/issues/4064)) ([4a88f65](4a88f650c2))
* **YouTube Music - Permanent shuffle:** Remove obsolete and non functional patch ([#4073](https://github.com/ReVanced/revanced-patches/issues/4073)) ([4983e02](4983e021f9))

### Features

* **Nyx:** Remove broken `Unlock pro` patch ([87fe83a](87fe83aacf))
* **YouTube - Spoof video streams:** Allow picking a default audio language track ([#4050](https://github.com/ReVanced/revanced-patches/issues/4050)) ([538ed6d](538ed6d876))
* **YouTube Music:** Add `Spoof video streams` patch to fix playback ([#4065](https://github.com/ReVanced/revanced-patches/issues/4065)) ([cf4456c](cf4456c2ba))
* **YouTube:** Add `Open videos fullscreen` patch ([#4069](https://github.com/ReVanced/revanced-patches/issues/4069)) ([bee917f](bee917f4ed))
2024-12-09 06:10:59 +00:00
oSumAtrIX
e0322afbf0 chore: Merge branch dev to main (#4060) 2024-12-09 07:06:49 +01:00
semantic-release-bot
5f02f583be chore: Release v5.3.0-dev.7 [skip ci]
# [5.3.0-dev.7](https://github.com/ReVanced/revanced-patches/compare/v5.3.0-dev.6...v5.3.0-dev.7) (2024-12-09)

### Bug Fixes

* **YouTube - Spoof video streams:** Add missing preferred language preference to the settings ([6462fb8](6462fb8cba))
2024-12-09 02:23:18 +00:00
LisoUseInAIKyrios
6462fb8cba fix(YouTube - Spoof video streams): Add missing preferred language preference to the settings 2024-12-09 06:19:49 +04:00
github-actions[bot]
f9dcce927e chore: Sync translations (#4076) 2024-12-09 06:19:26 +04:00
github-actions[bot]
69f9ab8345 chore: Sync translations (#4075) 2024-12-09 05:15:29 +04:00
semantic-release-bot
dd400ac2a0 chore: Release v5.3.0-dev.6 [skip ci]
# [5.3.0-dev.6](https://github.com/ReVanced/revanced-patches/compare/v5.3.0-dev.5...v5.3.0-dev.6) (2024-12-09)

### Features

* **YouTube - Spoof video streams:** Allow picking a default audio language track ([#4050](https://github.com/ReVanced/revanced-patches/issues/4050)) ([538ed6d](538ed6d876))
2024-12-09 01:14:21 +00:00
LisoUseInAIKyrios
538ed6d876 feat(YouTube - Spoof video streams): Allow picking a default audio language track (#4050) 2024-12-09 05:11:00 +04:00
semantic-release-bot
5ff94dc34a chore: Release v5.3.0-dev.5 [skip ci]
# [5.3.0-dev.5](https://github.com/ReVanced/revanced-patches/compare/v5.3.0-dev.4...v5.3.0-dev.5) (2024-12-09)

### Bug Fixes

* **Change package name:** Prevent applying the patch to known incompatible apps ([#3943](https://github.com/ReVanced/revanced-patches/issues/3943)) ([b04a11a](b04a11a885))
* **YouTube Music - Permanent shuffle:** Remove obsolete and non functional patch ([#4073](https://github.com/ReVanced/revanced-patches/issues/4073)) ([4983e02](4983e021f9))

### Features

* **YouTube:** Add `Open videos fullscreen` patch ([#4069](https://github.com/ReVanced/revanced-patches/issues/4069)) ([bee917f](bee917f4ed))
2024-12-09 00:50:48 +00:00
LisoUseInAIKyrios
b04a11a885 fix(Change package name): Prevent applying the patch to known incompatible apps (#3943) 2024-12-09 04:46:47 +04:00
LisoUseInAIKyrios
4983e021f9 fix(YouTube Music - Permanent shuffle): Remove obsolete and non functional patch (#4073) 2024-12-09 04:44:12 +04:00
LisoUseInAIKyrios
bee917f4ed feat(YouTube): Add Open videos fullscreen patch (#4069)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2024-12-09 04:43:20 +04:00
semantic-release-bot
c94376bc4c chore: Release v5.3.0-dev.4 [skip ci]
# [5.3.0-dev.4](https://github.com/ReVanced/revanced-patches/compare/v5.3.0-dev.3...v5.3.0-dev.4) (2024-12-09)

### Features

* **Nyx:** Remove broken `Unlock pro` patch ([87fe83a](87fe83aacf))
2024-12-09 00:36:16 +00:00
oSumAtrIX
87fe83aacf feat(Nyx): Remove broken Unlock pro patch 2024-12-09 01:32:41 +01:00
semantic-release-bot
92d282e963 chore: Release v5.3.0-dev.3 [skip ci]
# [5.3.0-dev.3](https://github.com/ReVanced/revanced-patches/compare/v5.3.0-dev.2...v5.3.0-dev.3) (2024-12-09)

### Bug Fixes

* **YouTube - Spoof video streams:** Update `Force AVC` client data ([#4064](https://github.com/ReVanced/revanced-patches/issues/4064)) ([4a88f65](4a88f650c2))
2024-12-09 00:16:04 +00:00
LisoUseInAIKyrios
4a88f650c2 fix(YouTube - Spoof video streams): Update Force AVC client data (#4064) 2024-12-09 04:12:36 +04:00
158 changed files with 21877 additions and 7418 deletions

View File

@@ -28,4 +28,10 @@ jobs:
- name: Build
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: ./gradlew build --no-daemon
run: ./gradlew :patches:buildAndroid --no-daemon
- name: Upload artifacts
uses: actions/upload-artifact@v4
with:
name: revanced-patches
path: patches/build/libs

View File

@@ -35,7 +35,7 @@ jobs:
- name: Build
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: ./gradlew build clean
run: ./gradlew :patches:buildAndroid clean
- name: Setup Node.js
uses: actions/setup-node@v4

View File

@@ -1,3 +1,198 @@
# [5.5.0-dev.3](https://github.com/ReVanced/revanced-patches/compare/v5.5.0-dev.2...v5.5.0-dev.3) (2024-12-16)
### Features
* **YouTube - Hide feed components:** Remove obsolete `Hide search result shelf header` option ([#4134](https://github.com/ReVanced/revanced-patches/issues/4134)) ([c71443a](https://github.com/ReVanced/revanced-patches/commit/c71443a08883ab10ef2553213c03b00e7c580a43))
# [5.5.0-dev.2](https://github.com/ReVanced/revanced-patches/compare/v5.5.0-dev.1...v5.5.0-dev.2) (2024-12-16)
### Bug Fixes
* **YouTube Music:** Add `Spoof client patch` to fix playback ([#4132](https://github.com/ReVanced/revanced-patches/issues/4132)) ([b092508](https://github.com/ReVanced/revanced-patches/commit/b0925088e8b41636e285cb234593d545604ce461))
# [5.5.0-dev.1](https://github.com/ReVanced/revanced-patches/compare/v5.4.1-dev.1...v5.5.0-dev.1) (2024-12-15)
### Features
* **YouTube:** Add `Force original audio` patch ([#4122](https://github.com/ReVanced/revanced-patches/issues/4122)) ([f4aa440](https://github.com/ReVanced/revanced-patches/commit/f4aa4406080b91f01d623e54b11b99ea849ddcdf))
## [5.4.1-dev.1](https://github.com/ReVanced/revanced-patches/compare/v5.4.0...v5.4.1-dev.1) (2024-12-14)
### Bug Fixes
* **Twitch:** Change recommended target to the latest app version ([fb32972](https://github.com/ReVanced/revanced-patches/commit/fb32972f4de92dac1fc5d73f56a392a671c4e94b))
# [5.4.0](https://github.com/ReVanced/revanced-patches/compare/v5.3.0...v5.4.0) (2024-12-14)
### Bug Fixes
* **GmsCore support:** Adjust presentation of battery optimization dialog ([#4091](https://github.com/ReVanced/revanced-patches/issues/4091)) ([5d8fc1b](https://github.com/ReVanced/revanced-patches/commit/5d8fc1bcd4e453298cfac086cdbdf279612bfb63))
* **TikTok - Settings:** Use correct colors for dark mode ([#4087](https://github.com/ReVanced/revanced-patches/issues/4087)) ([6bd22ff](https://github.com/ReVanced/revanced-patches/commit/6bd22ffa7e8af4d8f5d2d3b1711bd92c44b4e4aa))
* **TikTok - SIM Spoof:** Change patch to default off to fix login ([#4084](https://github.com/ReVanced/revanced-patches/issues/4084)) ([f4659a3](https://github.com/ReVanced/revanced-patches/commit/f4659a328eaf600e1e5f02a66fa2af4b6d8dc7c1))
* **YouTube - Hide ads:** Hide new type of featured promotions ([#4113](https://github.com/ReVanced/revanced-patches/issues/4113)) ([13c7592](https://github.com/ReVanced/revanced-patches/commit/13c7592b21defd27e3a7aa9b219ffc0247bb5914))
* **YouTube - Spoof video streams:** Fix error toast that is sometimes shown ([#4090](https://github.com/ReVanced/revanced-patches/issues/4090)) ([4c46cb2](https://github.com/ReVanced/revanced-patches/commit/4c46cb27a02c6f29626cd769b6a8e825645d5b16))
* **YouTube - Spoof video streams:** Resolve playback of age restricted videos ([#4096](https://github.com/ReVanced/revanced-patches/issues/4096)) ([839a404](https://github.com/ReVanced/revanced-patches/commit/839a4045f1bb1759d89047834e0b7695781e82a3))
* **YouTube Music - Bypass certificate checks:** Add a recommended target version ([#4104](https://github.com/ReVanced/revanced-patches/issues/4104)) ([17a5a6c](https://github.com/ReVanced/revanced-patches/commit/17a5a6c1691b0c23f601d3355b72f122c2bd5dcb))
* **YouTube Music - Spoof video streams:** Disable stable volume ([#4097](https://github.com/ReVanced/revanced-patches/issues/4097)) ([16bb9df](https://github.com/ReVanced/revanced-patches/commit/16bb9dfc299612f3922724c136878606987ab132))
### Features
* Add Internal data documents provider patch ([#3830](https://github.com/ReVanced/revanced-patches/issues/3830)) ([cb22f65](https://github.com/ReVanced/revanced-patches/commit/cb22f652ed678d81ffda9ece659b3971225d6931))
* **Change package name:** Add options to change provider and permission package names to handle installation conflicts ([75c740c](https://github.com/ReVanced/revanced-patches/commit/75c740c6ba2e0c62e567f7dc90cdad368fc4f372))
* **Twitch:** Make patches compatible with latest versions ([#4099](https://github.com/ReVanced/revanced-patches/issues/4099)) ([eecfbb7](https://github.com/ReVanced/revanced-patches/commit/eecfbb7122a9072e55e687f2c003f63108654888))
* **YouTube - Comments:** Add `Hide 'Chat summary'` ([#4110](https://github.com/ReVanced/revanced-patches/issues/4110)) ([269493c](https://github.com/ReVanced/revanced-patches/commit/269493cd198604f1438ea2850fb68fe900d0e56f))
# [5.4.0-dev.11](https://github.com/ReVanced/revanced-patches/compare/v5.4.0-dev.10...v5.4.0-dev.11) (2024-12-14)
### Features
* **Twitch:** Make patches compatible with latest versions ([#4099](https://github.com/ReVanced/revanced-patches/issues/4099)) ([eecfbb7](https://github.com/ReVanced/revanced-patches/commit/eecfbb7122a9072e55e687f2c003f63108654888))
# [5.4.0-dev.10](https://github.com/ReVanced/revanced-patches/compare/v5.4.0-dev.9...v5.4.0-dev.10) (2024-12-13)
### Bug Fixes
* **YouTube - Hide ads:** Hide new type of featured promotions ([#4113](https://github.com/ReVanced/revanced-patches/issues/4113)) ([13c7592](https://github.com/ReVanced/revanced-patches/commit/13c7592b21defd27e3a7aa9b219ffc0247bb5914))
# [5.4.0-dev.9](https://github.com/ReVanced/revanced-patches/compare/v5.4.0-dev.8...v5.4.0-dev.9) (2024-12-12)
### Features
* **YouTube - Comments:** Add `Hide 'Chat summary'` ([#4110](https://github.com/ReVanced/revanced-patches/issues/4110)) ([269493c](https://github.com/ReVanced/revanced-patches/commit/269493cd198604f1438ea2850fb68fe900d0e56f))
# [5.4.0-dev.8](https://github.com/ReVanced/revanced-patches/compare/v5.4.0-dev.7...v5.4.0-dev.8) (2024-12-11)
### Bug Fixes
* **YouTube Music - Bypass certificate checks:** Add a recommended target version ([#4104](https://github.com/ReVanced/revanced-patches/issues/4104)) ([17a5a6c](https://github.com/ReVanced/revanced-patches/commit/17a5a6c1691b0c23f601d3355b72f122c2bd5dcb))
# [5.4.0-dev.7](https://github.com/ReVanced/revanced-patches/compare/v5.4.0-dev.6...v5.4.0-dev.7) (2024-12-10)
### Bug Fixes
* **GmsCore support:** Adjust presentation of battery optimization dialog ([#4091](https://github.com/ReVanced/revanced-patches/issues/4091)) ([5d8fc1b](https://github.com/ReVanced/revanced-patches/commit/5d8fc1bcd4e453298cfac086cdbdf279612bfb63))
# [5.4.0-dev.6](https://github.com/ReVanced/revanced-patches/compare/v5.4.0-dev.5...v5.4.0-dev.6) (2024-12-10)
### Bug Fixes
* **YouTube Music - Spoof video streams:** Disable stable volume ([#4097](https://github.com/ReVanced/revanced-patches/issues/4097)) ([16bb9df](https://github.com/ReVanced/revanced-patches/commit/16bb9dfc299612f3922724c136878606987ab132))
# [5.4.0-dev.5](https://github.com/ReVanced/revanced-patches/compare/v5.4.0-dev.4...v5.4.0-dev.5) (2024-12-10)
### Bug Fixes
* **YouTube - Spoof video streams:** Resolve playback of age restricted videos ([#4096](https://github.com/ReVanced/revanced-patches/issues/4096)) ([839a404](https://github.com/ReVanced/revanced-patches/commit/839a4045f1bb1759d89047834e0b7695781e82a3))
# [5.4.0-dev.4](https://github.com/ReVanced/revanced-patches/compare/v5.4.0-dev.3...v5.4.0-dev.4) (2024-12-10)
### Bug Fixes
* **YouTube - Spoof video streams:** Fix error toast that is sometimes shown ([#4090](https://github.com/ReVanced/revanced-patches/issues/4090)) ([4c46cb2](https://github.com/ReVanced/revanced-patches/commit/4c46cb27a02c6f29626cd769b6a8e825645d5b16))
# [5.4.0-dev.3](https://github.com/ReVanced/revanced-patches/compare/v5.4.0-dev.2...v5.4.0-dev.3) (2024-12-09)
### Bug Fixes
* **TikTok - Settings:** Use correct colors for dark mode ([#4087](https://github.com/ReVanced/revanced-patches/issues/4087)) ([6bd22ff](https://github.com/ReVanced/revanced-patches/commit/6bd22ffa7e8af4d8f5d2d3b1711bd92c44b4e4aa))
# [5.4.0-dev.2](https://github.com/ReVanced/revanced-patches/compare/v5.4.0-dev.1...v5.4.0-dev.2) (2024-12-09)
### Bug Fixes
* **TikTok - SIM Spoof:** Change patch to default off to fix login ([#4084](https://github.com/ReVanced/revanced-patches/issues/4084)) ([f4659a3](https://github.com/ReVanced/revanced-patches/commit/f4659a328eaf600e1e5f02a66fa2af4b6d8dc7c1))
### Features
* Add Internal data documents provider patch ([#3830](https://github.com/ReVanced/revanced-patches/issues/3830)) ([cb22f65](https://github.com/ReVanced/revanced-patches/commit/cb22f652ed678d81ffda9ece659b3971225d6931))
# [5.4.0-dev.1](https://github.com/ReVanced/revanced-patches/compare/v5.3.0...v5.4.0-dev.1) (2024-12-09)
### Features
* **Change package name:** Add options to change provider and permission package names to handle installation conflicts ([75c740c](https://github.com/ReVanced/revanced-patches/commit/75c740c6ba2e0c62e567f7dc90cdad368fc4f372))
# [5.3.0](https://github.com/ReVanced/revanced-patches/compare/v5.2.3...v5.3.0) (2024-12-09)
### Bug Fixes
* **Change package name:** Prevent applying the patch to known incompatible apps ([#3943](https://github.com/ReVanced/revanced-patches/issues/3943)) ([44936e7](https://github.com/ReVanced/revanced-patches/commit/44936e71e846f72f7279950232a5dba37765ceb3))
* **Reddit:** Fix patches by using correct extension class ([70bdc68](https://github.com/ReVanced/revanced-patches/commit/70bdc6840d465399625aa1ae0259f49e72711955))
* **Sync for Reddit:** Fix patches by using correct extension name ([030093e](https://github.com/ReVanced/revanced-patches/commit/030093e913aab3fab43935eedbaeba0f6c0491bb))
* **Twitter:** Merge correct extension by depending on correct extension patch ([8281cf6](https://github.com/ReVanced/revanced-patches/commit/8281cf6a3eead8cc25a277371e0b0ab2be982497))
* **YouTube - Spoof video streams:** Add missing preferred language preference to the settings ([630633c](https://github.com/ReVanced/revanced-patches/commit/630633cf57c65c65e5578046413e17670ae336e8))
* **YouTube - Spoof video streams:** Enable opus codec by updating iOS client version ([#4063](https://github.com/ReVanced/revanced-patches/issues/4063)) ([0af156f](https://github.com/ReVanced/revanced-patches/commit/0af156f18972c5f089af4bb69824968d2a47d18f))
* **YouTube - Spoof video streams:** Update `Force AVC` client data ([#4064](https://github.com/ReVanced/revanced-patches/issues/4064)) ([7d537dd](https://github.com/ReVanced/revanced-patches/commit/7d537ddff4bb5421fa320741275131a66ef5c7bb))
* **YouTube Music - Permanent shuffle:** Remove obsolete and non functional patch ([#4073](https://github.com/ReVanced/revanced-patches/issues/4073)) ([fbc6ab6](https://github.com/ReVanced/revanced-patches/commit/fbc6ab6a357b351f02d4d486ddc2072cf53199c3))
### Features
* **Nyx:** Remove broken `Unlock pro` patch ([1fe8b16](https://github.com/ReVanced/revanced-patches/commit/1fe8b164eab0c4fa80ab2da2581977f5111a2858))
* **YouTube - Spoof video streams:** Allow picking a default audio language track ([#4050](https://github.com/ReVanced/revanced-patches/issues/4050)) ([ede666b](https://github.com/ReVanced/revanced-patches/commit/ede666b5cb64fcbaa1334ad8bef79e2634ced113))
* **YouTube Music:** Add `Spoof video streams` patch to fix playback ([#4065](https://github.com/ReVanced/revanced-patches/issues/4065)) ([cf3116a](https://github.com/ReVanced/revanced-patches/commit/cf3116a7583d09c25c798a85687a056f143656f0))
* **YouTube:** Add `Open videos fullscreen` patch ([#4069](https://github.com/ReVanced/revanced-patches/issues/4069)) ([296d63b](https://github.com/ReVanced/revanced-patches/commit/296d63bd42c338a01efbcb2df702e5822d05a5f1))
# [5.3.0-dev.7](https://github.com/ReVanced/revanced-patches/compare/v5.3.0-dev.6...v5.3.0-dev.7) (2024-12-09)
### Bug Fixes
* **YouTube - Spoof video streams:** Add missing preferred language preference to the settings ([630633c](https://github.com/ReVanced/revanced-patches/commit/630633cf57c65c65e5578046413e17670ae336e8))
# [5.3.0-dev.6](https://github.com/ReVanced/revanced-patches/compare/v5.3.0-dev.5...v5.3.0-dev.6) (2024-12-09)
### Features
* **YouTube - Spoof video streams:** Allow picking a default audio language track ([#4050](https://github.com/ReVanced/revanced-patches/issues/4050)) ([ede666b](https://github.com/ReVanced/revanced-patches/commit/ede666b5cb64fcbaa1334ad8bef79e2634ced113))
# [5.3.0-dev.5](https://github.com/ReVanced/revanced-patches/compare/v5.3.0-dev.4...v5.3.0-dev.5) (2024-12-09)
### Bug Fixes
* **Change package name:** Prevent applying the patch to known incompatible apps ([#3943](https://github.com/ReVanced/revanced-patches/issues/3943)) ([44936e7](https://github.com/ReVanced/revanced-patches/commit/44936e71e846f72f7279950232a5dba37765ceb3))
* **YouTube Music - Permanent shuffle:** Remove obsolete and non functional patch ([#4073](https://github.com/ReVanced/revanced-patches/issues/4073)) ([fbc6ab6](https://github.com/ReVanced/revanced-patches/commit/fbc6ab6a357b351f02d4d486ddc2072cf53199c3))
### Features
* **YouTube:** Add `Open videos fullscreen` patch ([#4069](https://github.com/ReVanced/revanced-patches/issues/4069)) ([296d63b](https://github.com/ReVanced/revanced-patches/commit/296d63bd42c338a01efbcb2df702e5822d05a5f1))
# [5.3.0-dev.4](https://github.com/ReVanced/revanced-patches/compare/v5.3.0-dev.3...v5.3.0-dev.4) (2024-12-09)
### Features
* **Nyx:** Remove broken `Unlock pro` patch ([1fe8b16](https://github.com/ReVanced/revanced-patches/commit/1fe8b164eab0c4fa80ab2da2581977f5111a2858))
# [5.3.0-dev.3](https://github.com/ReVanced/revanced-patches/compare/v5.3.0-dev.2...v5.3.0-dev.3) (2024-12-09)
### Bug Fixes
* **YouTube - Spoof video streams:** Update `Force AVC` client data ([#4064](https://github.com/ReVanced/revanced-patches/issues/4064)) ([7d537dd](https://github.com/ReVanced/revanced-patches/commit/7d537ddff4bb5421fa320741275131a66ef5c7bb))
# [5.3.0-dev.2](https://github.com/ReVanced/revanced-patches/compare/v5.3.0-dev.1...v5.3.0-dev.2) (2024-12-08)

View File

@@ -0,0 +1,3 @@
dependencies {
compileOnly(libs.annotation)
}

View File

@@ -0,0 +1,334 @@
package app.revanced.extension.all.misc.directory.documentsprovider;
import android.content.Context;
import android.content.pm.ApplicationInfo;
import android.content.pm.ProviderInfo;
import android.database.Cursor;
import android.database.MatrixCursor;
import android.os.CancellationSignal;
import android.os.ParcelFileDescriptor;
import android.provider.DocumentsContract;
import android.provider.DocumentsProvider;
import android.system.ErrnoException;
import android.system.Os;
import android.system.StructStat;
import android.util.Log;
import android.webkit.MimeTypeMap;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Objects;
/**
* A DocumentsProvider that allows access to the app's internal data directory.
*/
public class InternalDataDocumentsProvider extends DocumentsProvider {
private static final String[] rootColumns =
{"root_id", "mime_types", "flags", "icon", "title", "summary", "document_id"};
private static final String[] directoryColumns =
{"document_id", "mime_type", "_display_name", "last_modified", "flags",
"_size", "full_path", "lstat_info"};
private static final int S_IFLNK = 0x8000;
private String packageName;
private File dataDirectory;
/**
* Recursively delete a file or directory and all its children.
*
* @param root The file or directory to delete.
* @return True if the file or directory and all its children were successfully deleted.
*/
private static boolean deleteRecursively(File root) {
// If root is a directory, delete all children first
if (root.isDirectory()) {
try {
// Only delete recursively if the directory is not a symlink
if ((Os.lstat(root.getPath()).st_mode & S_IFLNK) != S_IFLNK) {
File[] files = root.listFiles();
if (files != null) {
for (File file : files) {
if (!deleteRecursively(file)) {
return false;
}
}
}
}
} catch (ErrnoException e) {
Log.e("InternalDocumentsProvider", "Failed to lstat " + root.getPath(), e);
}
}
// Delete file or empty directory
return root.delete();
}
/**
* Resolve the MIME type of a file based on its extension.
*
* @param file The file to resolve the MIME type for.
* @return The MIME type of the file.
*/
private static String resolveMimeType(File file) {
if (file.isDirectory()) {
return DocumentsContract.Document.MIME_TYPE_DIR;
}
String name = file.getName();
int indexOfExtDot = name.lastIndexOf('.');
if (indexOfExtDot < 0) {
// No extension
return "application/octet-stream";
}
String extension = name.substring(indexOfExtDot + 1).toLowerCase();
String mimeType = MimeTypeMap.getSingleton().getMimeTypeFromExtension(extension);
return mimeType != null ? mimeType : "application/octet-stream";
}
@Override
public final boolean onCreate() {
return true;
}
@Override
public final void attachInfo(Context context, ProviderInfo providerInfo) {
super.attachInfo(context, providerInfo);
this.packageName = context.getPackageName();
this.dataDirectory = context.getFilesDir().getParentFile();
}
@Override
public final String createDocument(String parentDocumentId, String mimeType, String displayName) throws FileNotFoundException {
File directory = resolveDocumentId(parentDocumentId);
File file = new File(directory, displayName);
// If file already exists, append a number to the name
int i = 2;
while (file.exists()) {
file = new File(directory, displayName + " (" + i + ")");
i++;
}
try {
// Create the file or directory
if (mimeType.equals(DocumentsContract.Document.MIME_TYPE_DIR) ? file.mkdir() : file.createNewFile()) {
// Return the document ID of the new entity
if (!parentDocumentId.endsWith("/")) {
parentDocumentId = parentDocumentId + "/";
}
return parentDocumentId + file.getName();
}
} catch (IOException e) {
// Do nothing. We are throwing a FileNotFoundException later if the file could not be created.
}
throw new FileNotFoundException("Failed to create document in " + parentDocumentId + " with name " + displayName);
}
@Override
public final void deleteDocument(String documentId) throws FileNotFoundException {
File file = resolveDocumentId(documentId);
if (!deleteRecursively(file)) {
throw new FileNotFoundException("Failed to delete document " + documentId);
}
}
@Override
public final String getDocumentType(String documentId) throws FileNotFoundException {
return resolveMimeType(resolveDocumentId(documentId));
}
@Override
public final boolean isChildDocument(String parentDocumentId, String documentId) {
return documentId.startsWith(parentDocumentId);
}
@Override
public final String moveDocument(String sourceDocumentId, String sourceParentDocumentId, String targetParentDocumentId) throws FileNotFoundException {
File source = resolveDocumentId(sourceDocumentId);
File dest = resolveDocumentId(targetParentDocumentId);
File file = new File(dest, source.getName());
if (!file.exists() && source.renameTo(file)) {
// Return the new document ID
if (targetParentDocumentId.endsWith("/")) {
return targetParentDocumentId + file.getName();
}
return targetParentDocumentId + "/" + file.getName();
}
throw new FileNotFoundException("Failed to move document from " + sourceDocumentId + " to " + targetParentDocumentId);
}
@Override
public final ParcelFileDescriptor openDocument(String documentId, String mode, CancellationSignal signal) throws FileNotFoundException {
File file = resolveDocumentId(documentId);
return ParcelFileDescriptor.open(file, ParcelFileDescriptor.parseMode(mode));
}
@Override
public final Cursor queryChildDocuments(String parentDocumentId, String[] projection, String sortOrder) throws FileNotFoundException {
if (parentDocumentId.endsWith("/")) {
parentDocumentId = parentDocumentId.substring(0, parentDocumentId.length() - 1);
}
if (projection == null) {
projection = directoryColumns;
}
MatrixCursor cursor = new MatrixCursor(projection);
File children = resolveDocumentId(parentDocumentId);
// Collect all children
File[] files = children.listFiles();
if (files != null) {
for (File file : files) {
addRowForDocument(cursor, parentDocumentId + "/" + file.getName(), file);
}
}
return cursor;
}
@Override
public final Cursor queryDocument(String documentId, String[] projection) throws FileNotFoundException {
if (projection == null) {
projection = directoryColumns;
}
MatrixCursor cursor = new MatrixCursor(projection);
addRowForDocument(cursor, documentId, null);
return cursor;
}
@Override
public final Cursor queryRoots(String[] projection) {
ApplicationInfo info = Objects.requireNonNull(getContext()).getApplicationInfo();
String appName = info.loadLabel(getContext().getPackageManager()).toString();
if (projection == null) {
projection = rootColumns;
}
MatrixCursor cursor = new MatrixCursor(projection);
MatrixCursor.RowBuilder row = cursor.newRow();
row.add(DocumentsContract.Root.COLUMN_ROOT_ID, this.packageName);
row.add(DocumentsContract.Root.COLUMN_DOCUMENT_ID, this.packageName);
row.add(DocumentsContract.Root.COLUMN_SUMMARY, this.packageName);
row.add(DocumentsContract.Root.COLUMN_FLAGS,
DocumentsContract.Root.FLAG_LOCAL_ONLY |
DocumentsContract.Root.FLAG_SUPPORTS_IS_CHILD);
row.add(DocumentsContract.Root.COLUMN_TITLE, appName);
row.add(DocumentsContract.Root.COLUMN_MIME_TYPES, "*/*");
row.add(DocumentsContract.Root.COLUMN_ICON, info.icon);
return cursor;
}
@Override
public final void removeDocument(String documentId, String parentDocumentId) throws FileNotFoundException {
deleteDocument(documentId);
}
@Override
public final String renameDocument(String documentId, String displayName) throws FileNotFoundException {
File file = resolveDocumentId(documentId);
if (!file.renameTo(new File(file.getParentFile(), displayName))) {
throw new FileNotFoundException("Failed to rename document from " + documentId + " to " + displayName);
}
// Return the new document ID
return documentId.substring(0, documentId.lastIndexOf('/', documentId.length() - 2)) + "/" + displayName;
}
/**
* Resolve a file instance for a given document ID.
*
* @param fullContentPath The document ID to resolve.
* @return File object for the given document ID.
* @throws FileNotFoundException If the document ID is invalid or the file does not exist.
*/
private File resolveDocumentId(String fullContentPath) throws FileNotFoundException {
if (!fullContentPath.startsWith(this.packageName)) {
throw new FileNotFoundException(fullContentPath + " not found");
}
String path = fullContentPath.substring(this.packageName.length());
// Resolve the relative path within /data/data/{PKG}
File file;
if (path.equals("/") || path.isEmpty()) {
file = this.dataDirectory;
} else {
// Remove leading slash
String relativePath = path.substring(1);
file = new File(this.dataDirectory, relativePath);
}
if (!file.exists()) {
throw new FileNotFoundException(fullContentPath + " not found");
}
return file;
}
/**
* Add a row containing all file properties to a MatrixCursor for a given document ID.
*
* @param cursor The cursor to add the row to.
* @param documentId The document ID to add the row for.
* @param file The file to add the row for. If null, the file will be resolved from the document ID.
* @throws FileNotFoundException If the file does not exist.
*/
private void addRowForDocument(MatrixCursor cursor, String documentId, File file) throws FileNotFoundException {
if (file == null) {
file = resolveDocumentId(documentId);
}
int flags = 0;
if (file.isDirectory()) {
// Prefer list view for directories
flags = flags | DocumentsContract.Document.FLAG_DIR_PREFERS_LAST_MODIFIED;
}
if (file.canWrite()) {
if (file.isDirectory()) {
flags = flags | DocumentsContract.Document.FLAG_DIR_SUPPORTS_CREATE;
}
flags = flags | DocumentsContract.Document.FLAG_SUPPORTS_WRITE |
DocumentsContract.Document.FLAG_SUPPORTS_DELETE |
DocumentsContract.Document.FLAG_SUPPORTS_RENAME |
DocumentsContract.Document.FLAG_SUPPORTS_MOVE;
}
MatrixCursor.RowBuilder row = cursor.newRow();
row.add(DocumentsContract.Document.COLUMN_DOCUMENT_ID, documentId);
row.add(DocumentsContract.Document.COLUMN_DISPLAY_NAME, file.getName());
row.add(DocumentsContract.Document.COLUMN_SIZE, file.length());
row.add(DocumentsContract.Document.COLUMN_MIME_TYPE, resolveMimeType(file));
row.add(DocumentsContract.Document.COLUMN_LAST_MODIFIED, file.lastModified());
row.add(DocumentsContract.Document.COLUMN_FLAGS, flags);
// Custom columns
row.add("full_path", file.getAbsolutePath());
// Add lstat column
String path = file.getPath();
try {
StringBuilder sb = new StringBuilder();
StructStat lstat = Os.lstat(path);
sb.append(lstat.st_mode);
sb.append(";");
sb.append(lstat.st_uid);
sb.append(";");
sb.append(lstat.st_gid);
// Append symlink target if it is a symlink
if ((lstat.st_mode & S_IFLNK) == S_IFLNK) {
sb.append(";");
sb.append(Os.readlink(path));
}
row.add("lstat_info", sb.toString());
} catch (Exception ex) {
Log.e("InternalDocumentsProvider", "Failed to get lstat info for " + path, ex);
}
}
}

View File

@@ -0,0 +1 @@
// Do not remove. Necessary for the extension plugin to be applied to the project.

View File

@@ -0,0 +1 @@
<manifest/>

View File

@@ -0,0 +1,27 @@
package app.revanced.extension.music.spoof;
/**
* @noinspection unused
*/
public class SpoofClientPatch {
private static final int CLIENT_TYPE_ID = 26;
private static final String CLIENT_VERSION = "6.21";
private static final String DEVICE_MODEL = "iPhone16,2";
private static final String OS_VERSION = "17.7.2.21H221";
public static int getClientId() {
return CLIENT_TYPE_ID;
}
public static String getClientVersion() {
return CLIENT_VERSION;
}
public static String getClientModel() {
return DEVICE_MODEL;
}
public static String getOsVersion() {
return OS_VERSION;
}
}

View File

@@ -24,7 +24,9 @@ import java.net.URL;
* @noinspection unused
*/
public class GmsCoreSupport {
public static final String ORIGINAL_UNPATCHED_PACKAGE_NAME = "com.google.android.youtube";
private static final String PACKAGE_NAME_YOUTUBE = "com.google.android.youtube";
private static final String PACKAGE_NAME_YOUTUBE_MUSIC = "com.google.android.apps.youtube.music";
private static final String GMS_CORE_PACKAGE_NAME
= getGmsCoreVendorGroupId() + ".android.gms";
private static final Uri GMS_CORE_PROVIDER
@@ -52,17 +54,20 @@ public class GmsCoreSupport {
private static void showBatteryOptimizationDialog(Activity context,
String dialogMessageRef,
String positiveButtonStringRef,
String positiveButtonTextRef,
DialogInterface.OnClickListener onPositiveClickListener) {
// Do not set cancelable to false, to allow using back button to skip the action,
// just in case the check can never be satisfied.
var dialog = new AlertDialog.Builder(context)
.setIconAttribute(android.R.attr.alertDialogIcon)
.setTitle(str("gms_core_dialog_title"))
.setMessage(str(dialogMessageRef))
.setPositiveButton(str(positiveButtonStringRef), onPositiveClickListener)
.create();
Utils.showDialog(context, dialog);
// Use a delay to allow the activity to finish initializing.
// Otherwise, if device is in dark mode the dialog is shown with wrong color scheme.
Utils.runOnMainThreadDelayed(() -> {
// Do not set cancelable to false, to allow using back button to skip the action,
// just in case the battery change can never be satisfied.
var dialog = new AlertDialog.Builder(context)
.setTitle(str("gms_core_dialog_title"))
.setMessage(str(dialogMessageRef))
.setPositiveButton(str(positiveButtonTextRef), onPositiveClickListener)
.create();
Utils.showDialog(context, dialog);
}, 100);
}
/**
@@ -74,7 +79,8 @@ public class GmsCoreSupport {
// Verify the user has not included GmsCore for a root installation.
// GmsCore Support changes the package name, but with a mounted installation
// all manifest changes are ignored and the original package name is used.
if (context.getPackageName().equals(ORIGINAL_UNPATCHED_PACKAGE_NAME)) {
String packageName = context.getPackageName();
if (packageName.equals(PACKAGE_NAME_YOUTUBE) || packageName.equals(PACKAGE_NAME_YOUTUBE_MUSIC)) {
Logger.printInfo(() -> "App is mounted with root, but GmsCore patch was included");
// Cannot use localize text here, since the app will load
// resources from the unpatched app and all patch strings are missing.
@@ -99,7 +105,18 @@ public class GmsCoreSupport {
return;
}
// Check if GmsCore is running in the background.
// Check if GmsCore is whitelisted from battery optimizations.
if (batteryOptimizationsEnabled(context)) {
Logger.printInfo(() -> "GmsCore is not whitelisted from battery optimizations");
showBatteryOptimizationDialog(context,
"gms_core_dialog_not_whitelisted_using_battery_optimizations_message",
"gms_core_dialog_continue_text",
(dialog, id) -> openGmsCoreDisableBatteryOptimizationsIntent(context));
return;
}
// Check if GmsCore is currently running in the background.
try (var client = context.getContentResolver().acquireContentProviderClient(GMS_CORE_PROVIDER)) {
if (client == null) {
Logger.printInfo(() -> "GmsCore is not running in the background");
@@ -108,18 +125,8 @@ public class GmsCoreSupport {
"gms_core_dialog_not_whitelisted_not_allowed_in_background_message",
"gms_core_dialog_open_website_text",
(dialog, id) -> open(DONT_KILL_MY_APP_LINK));
return;
}
}
// Check if GmsCore is whitelisted from battery optimizations.
if (batteryOptimizationsEnabled(context)) {
Logger.printInfo(() -> "GmsCore is not whitelisted from battery optimizations");
showBatteryOptimizationDialog(context,
"gms_core_dialog_not_whitelisted_using_battery_optimizations_message",
"gms_core_dialog_continue_text",
(dialog, id) -> openGmsCoreDisableBatteryOptimizationsIntent(context));
}
} catch (Exception ex) {
Logger.printException(() -> "checkGmsCore failure", ex);
}
@@ -143,12 +150,10 @@ public class GmsCoreSupport {
private static String getGmsCoreDownload() {
final var vendorGroupId = getGmsCoreVendorGroupId();
//noinspection SwitchStatementWithTooFewBranches
switch (vendorGroupId) {
case "app.revanced":
return "https://github.com/revanced/gmscore/releases/latest";
default:
return vendorGroupId + ".android.gms";
}
return switch (vendorGroupId) {
case "app.revanced" -> "https://github.com/revanced/gmscore/releases/latest";
default -> vendorGroupId + ".android.gms";
};
}
// Modified by a patch. Do not touch.

View File

@@ -4,8 +4,10 @@ import android.annotation.SuppressLint;
import android.app.*;
import android.content.Context;
import android.content.Intent;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.res.Configuration;
import android.content.res.Resources;
import android.net.ConnectivityManager;
import android.os.Build;
@@ -47,6 +49,7 @@ public class Utils {
private static Context context;
private static String versionName;
private static String applicationLabel;
private Utils() {
} // utility class
@@ -61,28 +64,30 @@ public class Utils {
return ""; // Value is replaced during patching.
}
private static PackageInfo getPackageInfo() throws PackageManager.NameNotFoundException {
final var packageName = Objects.requireNonNull(getContext()).getPackageName();
PackageManager packageManager = context.getPackageManager();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
return packageManager.getPackageInfo(
packageName,
PackageManager.PackageInfoFlags.of(0)
);
}
return packageManager.getPackageInfo(
packageName,
0
);
}
/**
* @return The version name of the app, such as 19.11.43
*/
public static String getAppVersionName() {
if (versionName == null) {
try {
final var packageName = Objects.requireNonNull(getContext()).getPackageName();
PackageManager packageManager = context.getPackageManager();
PackageInfo packageInfo;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
packageInfo = packageManager.getPackageInfo(
packageName,
PackageManager.PackageInfoFlags.of(0)
);
} else {
packageInfo = packageManager.getPackageInfo(
packageName,
0
);
}
versionName = packageInfo.versionName;
versionName = getPackageInfo().versionName;
} catch (Exception ex) {
Logger.printException(() -> "Failed to get package info", ex);
versionName = "Unknown";
@@ -92,6 +97,19 @@ public class Utils {
return versionName;
}
public static String getApplicationName() {
if (applicationLabel == null) {
try {
ApplicationInfo applicationInfo = getPackageInfo().applicationInfo;
applicationLabel = (String) applicationInfo.loadLabel(context.getPackageManager());
} catch (Exception ex) {
Logger.printException(() -> "Failed to get application name", ex);
applicationLabel = "Unknown";
}
}
return applicationLabel;
}
/**
* Hide a view by setting its layout height and width to 1dp.
@@ -325,7 +343,7 @@ public class Utils {
public static void restartApp(@NonNull Context context) {
String packageName = context.getPackageName();
Intent intent = context.getPackageManager().getLaunchIntentForPackage(packageName);
Intent intent = Objects.requireNonNull(context.getPackageManager().getLaunchIntentForPackage(packageName));
Intent mainIntent = Intent.makeRestartActivityTask(intent.getComponent());
// Required for API 34 and later
// Ref: https://developer.android.com/about/versions/14/behavior-changes-14#safer-intents
@@ -499,6 +517,12 @@ public class Utils {
);
}
public static boolean isDarkModeEnabled(Context context) {
Configuration config = context.getResources().getConfiguration();
final int currentNightMode = config.uiMode & Configuration.UI_MODE_NIGHT_MASK;
return currentNightMode == Configuration.UI_MODE_NIGHT_YES;
}
/**
* Automatically logs any exceptions the runnable throws.
*

View File

@@ -1,11 +1,12 @@
package app.revanced.extension.shared.settings;
import app.revanced.extension.shared.spoof.ClientType;
import app.revanced.extension.shared.spoof.SpoofVideoStreamsPatch;
import static java.lang.Boolean.FALSE;
import static java.lang.Boolean.TRUE;
import static app.revanced.extension.shared.settings.Setting.parent;
import static app.revanced.extension.shared.spoof.SpoofVideoStreamsPatch.SpoofiOSAvailability;
import app.revanced.extension.shared.spoof.AudioStreamLanguage;
import app.revanced.extension.shared.spoof.ClientType;
/**
* Settings shared across multiple apps.
@@ -21,8 +22,9 @@ public class BaseSettings {
public static final IntegerSetting CHECK_ENVIRONMENT_WARNINGS_ISSUED = new IntegerSetting("revanced_check_environment_warnings_issued", 0, true, false);
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 SpoofiOSAvailability());
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 SpoofVideoStreamsPatch.ForceiOSAVCAvailability());
"revanced_spoof_video_streams_ios_force_avc_user_dialog_message", new SpoofiOSAvailability());
public static final EnumSetting<ClientType> SPOOF_VIDEO_STREAMS_CLIENT_TYPE = new EnumSetting<>("revanced_spoof_video_streams_client", ClientType.ANDROID_VR, true, parent(SPOOF_VIDEO_STREAMS));
}

View File

@@ -7,7 +7,6 @@ import app.revanced.extension.shared.Logger;
import app.revanced.extension.shared.StringRef;
import app.revanced.extension.shared.Utils;
import app.revanced.extension.shared.settings.preference.SharedPrefCategory;
import org.jetbrains.annotations.NotNull;
import org.json.JSONException;
import org.json.JSONObject;
@@ -330,7 +329,7 @@ public abstract class Setting<T> {
return value.equals(defaultValue);
}
@NotNull
@NonNull
@Override
public String toString() {
return key + "=" + get();

View File

@@ -54,9 +54,7 @@ public class ReVancedAboutPreference extends Preference {
}
protected boolean isDarkModeEnabled() {
Configuration config = getContext().getResources().getConfiguration();
final int currentNightMode = config.uiMode & Configuration.UI_MODE_NIGHT_MASK;
return currentNightMode == Configuration.UI_MODE_NIGHT_YES;
return Utils.isDarkModeEnabled(getContext());
}
/**

View File

@@ -0,0 +1,113 @@
package app.revanced.extension.shared.spoof;
import java.util.Locale;
public enum AudioStreamLanguage {
/**
* YouTube default.
* Can be the original language or can be app language,
* depending on what YouTube decides to pick as the default.
*/
DEFAULT,
// Language codes found in locale_config.xml
// Region specific variants of Chinese/English/Spanish/French have been removed.
AF,
AM,
AR,
AS,
AZ,
BE,
BG,
BN,
BS,
CA,
CS,
DA,
DE,
EL,
EN,
ES,
ET,
EU,
FA,
FI,
FR,
GL,
GU,
HI,
HE, // App uses obsolete 'IW' and 'HE' is modern ISO code.
HR,
HU,
HY,
ID,
IS,
IT,
JA,
KA,
KK,
KM,
KN,
KO,
KY,
LO,
LT,
LV,
MK,
ML,
MN,
MR,
MS,
MY,
NE,
NL,
NB,
OR,
PA,
PL,
PT_BR,
PT_PT,
RO,
RU,
SI,
SK,
SL,
SQ,
SR,
SV,
SW,
TA,
TE,
TH,
TL,
TR,
UK,
UR,
UZ,
VI,
ZH,
ZU;
private final String iso639_1;
AudioStreamLanguage() {
String name = name();
final int regionSeparatorIndex = name.indexOf('_');
if (regionSeparatorIndex >= 0) {
iso639_1 = name.substring(0, regionSeparatorIndex).toLowerCase(Locale.US)
+ name.substring(regionSeparatorIndex);
} else {
iso639_1 = name().toLowerCase(Locale.US);
}
}
public String getIso639_1() {
// Changing the app language does not force the app to completely restart,
// so the default needs to be the current language and not a static field.
if (this == DEFAULT) {
return Locale.getDefault().toLanguageTag();
}
return iso639_1;
}
}

View File

@@ -1,52 +1,60 @@
package app.revanced.extension.shared.spoof;
import static app.revanced.extension.shared.spoof.DeviceHardwareSupport.allowAV1;
import static app.revanced.extension.shared.spoof.DeviceHardwareSupport.allowVP9;
import android.os.Build;
import androidx.annotation.Nullable;
import app.revanced.extension.shared.settings.BaseSettings;
public enum ClientType {
// Specific purpose for age restricted, or private videos, because the iOS client is not logged in.
// https://dumps.tadiphone.dev/dumps/oculus/eureka
ANDROID_VR(28,
"ANDROID_VR",
"Quest 3",
"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_VR",
true
),
true,
false),
// Specific for kids videos.
IOS(5,
// iPhone 15 supports AV1 hardware decoding.
// Only use if this Android device also has hardware decoding.
allowAV1()
? "iPhone16,2" // 15 Pro Max
: "iPhone11,4", // XS Max
// iOS 14+ forces VP9.
allowVP9()
? "17.5.1.21F90"
: "13.7.17H35",
allowVP9()
? "com.google.ios.youtube/19.47.7 (iPhone; U; CPU iOS 17_5_1 like Mac OS X)"
: "com.google.ios.youtube/19.47.7 (iPhone; U; CPU iOS 13_7 like Mac OS X)",
"IOS",
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.
forceAVC()
? "13.7.17H35" // Last release of iOS 13.
: "17.5.1.21F90",
forceAVC()
? "com.google.ios.youtube/17.40.5 (iPhone; U; CPU iOS 13_7 like Mac OS X)"
: "com.google.ios.youtube/19.47.7 (iPhone; U; CPU iOS 17_5_1 like Mac OS X)",
null,
// Version number should be a valid iOS release.
// https://www.ipa4fun.com/history/185230
"19.47.7",
"IOS",
false
forceAVC()
// Some newer versions can also force AVC,
// but 17.40 is the last version that supports iOS 13.
? "17.40.5"
: "19.47.7",
false,
true
);
private static boolean forceAVC() {
return BaseSettings.SPOOF_VIDEO_STREAMS_IOS_FORCE_AVC.get();
}
/**
* YouTube
* <a href="https://github.com/zerodytrash/YouTube-Internal-Clients?tab=readme-ov-file#clients">client type</a>
*/
public final int id;
public final String clientName;
/**
* Device model, equivalent to {@link Build#MODEL} (System property: ro.product.model)
*/
@@ -69,11 +77,6 @@ public enum ClientType {
@Nullable
public final String androidSdkVersion;
/**
* Client name.
*/
public final String clientName;
/**
* App version.
*/
@@ -84,22 +87,28 @@ public enum ClientType {
*/
public final boolean canLogin;
/**
* If a language code should be used.
*/
public final boolean useLanguageCode;
ClientType(int id,
String clientName,
String deviceModel,
String osVersion,
String userAgent,
@Nullable String androidSdkVersion,
String clientVersion,
String clientName,
boolean canLogin
) {
boolean canLogin,
boolean useLanguageCode) {
this.id = id;
this.clientName = clientName;
this.deviceModel = deviceModel;
this.osVersion = osVersion;
this.userAgent = userAgent;
this.androidSdkVersion = androidSdkVersion;
this.clientVersion = clientVersion;
this.clientName = clientName;
this.canLogin = canLogin;
this.useLanguageCode = useLanguageCode;
}
}

View File

@@ -1,53 +0,0 @@
package app.revanced.extension.shared.spoof;
import android.media.MediaCodecInfo;
import android.media.MediaCodecList;
import android.os.Build;
import app.revanced.extension.shared.Logger;
import app.revanced.extension.shared.settings.BaseSettings;
public class DeviceHardwareSupport {
public static final boolean DEVICE_HAS_HARDWARE_DECODING_VP9;
public static final boolean DEVICE_HAS_HARDWARE_DECODING_AV1;
static {
boolean vp9found = false;
boolean av1found = false;
MediaCodecList codecList = new MediaCodecList(MediaCodecList.ALL_CODECS);
final boolean deviceIsAndroidTenOrLater = Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q;
for (MediaCodecInfo codecInfo : codecList.getCodecInfos()) {
final boolean isHardwareAccelerated = deviceIsAndroidTenOrLater
? codecInfo.isHardwareAccelerated()
: !codecInfo.getName().startsWith("OMX.google"); // Software decoder.
if (isHardwareAccelerated && !codecInfo.isEncoder()) {
for (String type : codecInfo.getSupportedTypes()) {
if (type.equalsIgnoreCase("video/x-vnd.on2.vp9")) {
vp9found = true;
} else if (type.equalsIgnoreCase("video/av01")) {
av1found = true;
}
}
}
}
DEVICE_HAS_HARDWARE_DECODING_VP9 = vp9found;
DEVICE_HAS_HARDWARE_DECODING_AV1 = av1found;
Logger.printDebug(() -> DEVICE_HAS_HARDWARE_DECODING_AV1
? "Device supports AV1 hardware decoding\n"
: "Device does not support AV1 hardware decoding\n"
+ (DEVICE_HAS_HARDWARE_DECODING_VP9
? "Device supports VP9 hardware decoding"
: "Device does not support VP9 hardware decoding"));
}
public static boolean allowVP9() {
return DEVICE_HAS_HARDWARE_DECODING_VP9 && !BaseSettings.SPOOF_VIDEO_STREAMS_IOS_FORCE_AVC.get();
}
public static boolean allowAV1() {
return allowVP9() && DEVICE_HAS_HARDWARE_DECODING_AV1;
}
}

View File

@@ -6,14 +6,12 @@ import androidx.annotation.Nullable;
import java.nio.ByteBuffer;
import java.util.Map;
import java.util.Objects;
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.Setting;
import app.revanced.extension.shared.spoof.requests.StreamingDataRequest;
import app.revanced.extension.shared.settings.BaseSettings;
@SuppressWarnings("unused")
public class SpoofVideoStreamsPatch {
@@ -88,10 +86,19 @@ public class SpoofVideoStreamsPatch {
try {
Uri uri = Uri.parse(url);
String path = uri.getPath();
// 'heartbeat' has no video id and appears to be only after playback has started.
if (path != null && path.contains("player") && !path.contains("heartbeat")) {
String videoId = Objects.requireNonNull(uri.getQueryParameter("id"));
StreamingDataRequest.fetchRequest(videoId, requestHeaders);
// '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);
}
} catch (Exception ex) {
Logger.printException(() -> "buildRequest failure", ex);
@@ -158,10 +165,11 @@ public class SpoofVideoStreamsPatch {
return postData;
}
public static final class ForceiOSAVCAvailability implements Setting.Availability {
public static final class SpoofiOSAvailability implements Setting.Availability {
@Override
public boolean isAvailable() {
return BaseSettings.SPOOF_VIDEO_STREAMS.get() && BaseSettings.SPOOF_VIDEO_STREAMS_CLIENT_TYPE.get() == ClientType.IOS;
return BaseSettings.SPOOF_VIDEO_STREAMS.get()
&& BaseSettings.SPOOF_VIDEO_STREAMS_CLIENT_TYPE.get() == ClientType.IOS;
}
}
}

View File

@@ -7,9 +7,9 @@ import java.io.IOException;
import java.net.HttpURLConnection;
import app.revanced.extension.shared.Logger;
import app.revanced.extension.shared.Utils;
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.ClientType;
final class PlayerRoutes {
@@ -19,15 +19,14 @@ final class PlayerRoutes {
"?fields=streamingData" +
"&alt=proto"
).compile();
private static final String YT_API_URL = "https://youtubei.googleapis.com/youtubei/v1/";
/**
* TCP connection and HTTP read timeout
*/
private static final int CONNECTION_TIMEOUT_MILLISECONDS = 10 * 1000; // 10 Seconds.
private static final String LOCALE_LANGUAGE = Utils.getContext().getResources()
.getConfiguration().locale.getLanguage();
private PlayerRoutes() {
}
@@ -38,9 +37,10 @@ final class PlayerRoutes {
JSONObject context = new JSONObject();
JSONObject client = new JSONObject();
// Required to use correct default audio channel with iOS.
client.put("hl", LOCALE_LANGUAGE);
client.put("clientName", clientType.name());
if (clientType.useLanguageCode) {
client.put("hl", BaseSettings.SPOOF_VIDEO_STREAMS_LANGUAGE.get().getIso639_1());
}
client.put("clientName", clientType.clientName);
client.put("clientVersion", clientType.clientVersion);
client.put("deviceModel", clientType.deviceModel);
client.put("osVersion", clientType.osVersion);

View File

@@ -115,8 +115,7 @@ public class StreamingDataRequest {
Objects.requireNonNull(playerHeaders);
final long startTime = System.currentTimeMillis();
String clientTypeName = clientType.name();
Logger.printDebug(() -> "Fetching video streams for: " + videoId + " using client: " + clientType.name());
Logger.printDebug(() -> "Fetching video streams for: " + videoId + " using client: " + clientType);
try {
HttpURLConnection connection = PlayerRoutes.getPlayerResponseConnectionFromRoute(GET_STREAMING_DATA, clientType);
@@ -124,12 +123,16 @@ public class StreamingDataRequest {
connection.setReadTimeout(HTTP_TIMEOUT_MILLISECONDS);
for (String key : REQUEST_HEADER_KEYS) {
if (!clientType.canLogin && key.equals(AUTHORIZATION_HEADER)) {
continue;
}
String value = playerHeaders.get(key);
if (value != null) {
if (key.equals(AUTHORIZATION_HEADER)) {
if (!clientType.canLogin) {
Logger.printDebug(() -> "Not including request header: " + key);
continue;
}
}
Logger.printDebug(() -> "Including request header: " + key);
connection.setRequestProperty(key, value);
}
}
@@ -142,8 +145,10 @@ public class StreamingDataRequest {
final int responseCode = connection.getResponseCode();
if (responseCode == 200) return connection;
handleConnectionError(clientTypeName + " not available with response code: "
+ responseCode + " message: " + connection.getResponseMessage(),
// This situation likely means the patches are outdated.
// Use a toast message that suggests updating.
handleConnectionError("Playback error (App is outdated?) " + clientType + ": "
+ responseCode + " response: " + connection.getResponseMessage(),
null, showErrorToasts);
} catch (SocketTimeoutException ex) {
handleConnectionError("Connection timeout", ex, showErrorToasts);
@@ -172,17 +177,19 @@ public class StreamingDataRequest {
try {
// gzip encoding doesn't response with content length (-1),
// but empty response body does.
if (connection.getContentLength() != 0) {
try (InputStream inputStream = new BufferedInputStream(connection.getInputStream())) {
try (ByteArrayOutputStream baos = new ByteArrayOutputStream()) {
byte[] buffer = new byte[2048];
int bytesRead;
while ((bytesRead = inputStream.read(buffer)) >= 0) {
baos.write(buffer, 0, bytesRead);
}
if (connection.getContentLength() == 0) {
Logger.printDebug(() -> "Received empty response for video: " + videoId);
} else {
try (InputStream inputStream = new BufferedInputStream(connection.getInputStream());
ByteArrayOutputStream baos = new ByteArrayOutputStream()) {
return ByteBuffer.wrap(baos.toByteArray());
byte[] buffer = new byte[2048];
int bytesRead;
while ((bytesRead = inputStream.read(buffer)) >= 0) {
baos.write(buffer, 0, bytesRead);
}
return ByteBuffer.wrap(baos.toByteArray());
}
}
} catch (IOException ex) {

View File

@@ -1,9 +1,20 @@
package app.revanced.extension.tiktok;
import static app.revanced.extension.shared.Utils.isDarkModeEnabled;
import android.content.Context;
import android.graphics.Color;
import android.view.View;
import android.widget.TextView;
import androidx.annotation.ColorInt;
import app.revanced.extension.shared.settings.StringSetting;
public class Utils {
private static final long[] DEFAULT_MIN_MAX_VALUES = {0L, Long.MAX_VALUE};
// Edit: This could be handled using a custom Setting<Long[]> class
// that saves its value to preferences and JSON using the formatted String created here.
public static long[] parseMinMax(StringSetting setting) {
@@ -20,6 +31,29 @@ public class Utils {
}
setting.save("0-" + Long.MAX_VALUE);
return new long[]{0L, Long.MAX_VALUE};
return DEFAULT_MIN_MAX_VALUES;
}
// Colors picked by hand. These should be replaced with the styled resources TikTok uses.
private static final @ColorInt int TEXT_DARK_MODE_TITLE = Color.WHITE;
private static final @ColorInt int TEXT_DARK_MODE_SUMMARY
= Color.argb(255, 170, 170, 170);
private static final @ColorInt int TEXT_LIGHT_MODE_TITLE = Color.BLACK;
private static final @ColorInt int TEXT_LIGHT_MODE_SUMMARY
= Color.argb(255, 80, 80, 80);
public static void setTitleAndSummaryColor(Context context, View view) {
final boolean darkModeEnabled = isDarkModeEnabled(context);
TextView title = view.findViewById(android.R.id.title);
title.setTextColor(darkModeEnabled
? TEXT_DARK_MODE_TITLE
: TEXT_LIGHT_MODE_TITLE);
TextView summary = view.findViewById(android.R.id.summary);
summary.setTextColor(darkModeEnabled
? TEXT_DARK_MODE_SUMMARY
: TEXT_LIGHT_MODE_SUMMARY);
}
}

View File

@@ -1,17 +1,18 @@
package app.revanced.extension.tiktok.feedfilter;
import app.revanced.extension.tiktok.settings.Settings;
import com.ss.android.ugc.aweme.feed.model.Aweme;
import com.ss.android.ugc.aweme.feed.model.AwemeStatistics;
import static app.revanced.extension.tiktok.Utils.parseMinMax;
import app.revanced.extension.tiktok.Utils;
import app.revanced.extension.tiktok.settings.Settings;
public final class LikeCountFilter implements IFilter {
final long minLike;
final long maxLike;
LikeCountFilter() {
long[] minMax = parseMinMax(Settings.MIN_MAX_LIKES);
long[] minMax = Utils.parseMinMax(Settings.MIN_MAX_LIKES);
minLike = minMax[0];
maxLike = minMax[1];
}

View File

@@ -1,17 +1,17 @@
package app.revanced.extension.tiktok.feedfilter;
import app.revanced.extension.tiktok.Utils;
import app.revanced.extension.tiktok.settings.Settings;
import com.ss.android.ugc.aweme.feed.model.Aweme;
import com.ss.android.ugc.aweme.feed.model.AwemeStatistics;
import static app.revanced.extension.tiktok.Utils.parseMinMax;
public class ViewCountFilter implements IFilter {
final long minView;
final long maxView;
ViewCountFilter() {
long[] minMax = parseMinMax(Settings.MIN_MAX_VIEWS);
long[] minMax = Utils.parseMinMax(Settings.MIN_MAX_VIEWS);
minView = minMax[0];
maxView = minMax[1];
}

View File

@@ -19,7 +19,7 @@ public class Settings extends BaseSettings {
public static final BooleanSetting DOWNLOAD_WATERMARK = new BooleanSetting("down_watermark", TRUE);
public static final BooleanSetting CLEAR_DISPLAY = new BooleanSetting("clear_display", FALSE);
public static final FloatSetting REMEMBERED_SPEED = new FloatSetting("REMEMBERED_SPEED", 1.0f);
public static final BooleanSetting SIM_SPOOF = new BooleanSetting("simspoof", TRUE, true);
public static final BooleanSetting SIM_SPOOF = new BooleanSetting("simspoof", FALSE, true);
public static final StringSetting SIM_SPOOF_ISO = new StringSetting("simspoof_iso", "us");
public static final StringSetting SIMSPOOF_MCCMNC = new StringSetting("simspoof_mccmnc", "310160");
public static final StringSetting SIMSPOOF_OP_NAME = new StringSetting("simspoof_op_name", "T-Mobile");

View File

@@ -16,10 +16,10 @@ import android.widget.RadioButton;
import android.widget.RadioGroup;
import app.revanced.extension.shared.settings.StringSetting;
import app.revanced.extension.tiktok.Utils;
@SuppressWarnings("deprecation")
public class DownloadPathPreference extends DialogPreference {
private final Context context;
private final String[] entryValues = {"DCIM", "Movies", "Pictures"};
private String mValue;
@@ -29,11 +29,10 @@ public class DownloadPathPreference extends DialogPreference {
public DownloadPathPreference(Context context, String title, StringSetting setting) {
super(context);
this.context = context;
this.setTitle(title);
this.setSummary(Environment.getExternalStorageDirectory().getPath() + "/" + setting.get());
this.setKey(setting.key);
this.setValue(setting.get());
setTitle(title);
setSummary(Environment.getExternalStorageDirectory().getPath() + "/" + setting.get());
setKey(setting.key);
setValue(setting.get());
}
public String getValue() {
@@ -59,6 +58,7 @@ public class DownloadPathPreference extends DialogPreference {
childDownloadPath = getValue().substring(getValue().indexOf("/") + 1);
mediaPathIndex = findIndexOf(currentMedia);
Context context = getContext();
LinearLayout dialogView = new LinearLayout(context);
RadioGroup mediaPath = new RadioGroup(context);
mediaPath.setLayoutParams(new RadioGroup.LayoutParams(-1, -2));
@@ -79,12 +79,10 @@ public class DownloadPathPreference extends DialogPreference {
downloadPath.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
@@ -99,6 +97,13 @@ public class DownloadPathPreference extends DialogPreference {
return dialogView;
}
@Override
protected void onBindView(View view) {
super.onBindView(view);
Utils.setTitleAndSummaryColor(getContext(), view);
}
@Override
protected void onPrepareDialogBuilder(AlertDialog.Builder builder) {
builder.setTitle("Download Path");

View File

@@ -2,16 +2,26 @@ package app.revanced.extension.tiktok.settings.preference;
import android.content.Context;
import android.preference.EditTextPreference;
import android.view.View;
import app.revanced.extension.shared.settings.StringSetting;
import app.revanced.extension.tiktok.Utils;
@SuppressWarnings("deprecation")
public class InputTextPreference extends EditTextPreference {
public InputTextPreference(Context context, String title, String summary, StringSetting setting) {
super(context);
this.setTitle(title);
this.setSummary(summary);
this.setKey(setting.key);
this.setText(setting.get());
setTitle(title);
setSummary(summary);
setKey(setting.key);
setText(setting.get());
}
@Override
protected void onBindView(View view) {
super.onBindView(view);
Utils.setTitleAndSummaryColor(getContext(), view);
}
}

View File

@@ -1,5 +1,6 @@
package app.revanced.extension.tiktok.settings.preference;
import android.annotation.SuppressLint;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
@@ -14,11 +15,10 @@ import android.widget.LinearLayout;
import android.widget.TextView;
import app.revanced.extension.shared.settings.StringSetting;
import app.revanced.extension.tiktok.Utils;
@SuppressWarnings("deprecation")
public class RangeValuePreference extends DialogPreference {
private final Context context;
private String minValue;
private String maxValue;
@@ -29,7 +29,6 @@ public class RangeValuePreference extends DialogPreference {
public RangeValuePreference(Context context, String title, String summary, StringSetting setting) {
super(context);
this.context = context;
setTitle(title);
setSummary(summary);
setKey(setting.key);
@@ -53,41 +52,52 @@ public class RangeValuePreference extends DialogPreference {
return mValue;
}
@SuppressLint("SetTextI18n")
@Override
protected View onCreateDialogView() {
minValue = getValue().split("-")[0];
maxValue = getValue().split("-")[1];
Context context = getContext();
LinearLayout dialogView = new LinearLayout(context);
dialogView.setOrientation(LinearLayout.VERTICAL);
// Min view
LinearLayout minView = new LinearLayout(context);
minView.setOrientation(LinearLayout.HORIZONTAL);
dialogView.addView(minView);
TextView min = new TextView(context);
min.setText("Min: ");
minView.addView(min);
EditText minEditText = new EditText(context);
minEditText.setInputType(InputType.TYPE_CLASS_NUMBER);
minEditText.setText(minValue);
minView.addView(minEditText);
dialogView.addView(minView);
// Max view
LinearLayout maxView = new LinearLayout(context);
maxView.setOrientation(LinearLayout.HORIZONTAL);
dialogView.addView(maxView);
TextView max = new TextView(context);
max.setText("Max: ");
maxView.addView(max);
EditText maxEditText = new EditText(context);
maxEditText.setInputType(InputType.TYPE_CLASS_NUMBER);
maxEditText.setText(maxValue);
maxView.addView(maxEditText);
dialogView.addView(maxView);
minEditText.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
@@ -98,12 +108,10 @@ public class RangeValuePreference extends DialogPreference {
maxEditText.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
@@ -111,12 +119,21 @@ public class RangeValuePreference extends DialogPreference {
maxValue = editable.toString();
}
});
return dialogView;
}
@Override
protected void onBindView(View view) {
super.onBindView(view);
Utils.setTitleAndSummaryColor(getContext(), view);
}
@Override
protected void onPrepareDialogBuilder(AlertDialog.Builder builder) {
builder.setPositiveButton(android.R.string.ok, (dialog, which) -> this.onClick(dialog, DialogInterface.BUTTON_POSITIVE));
builder.setPositiveButton(android.R.string.ok, (dialog, which)
-> this.onClick(dialog, DialogInterface.BUTTON_POSITIVE));
builder.setNegativeButton(android.R.string.cancel, null);
}

View File

@@ -18,14 +18,12 @@ import org.jetbrains.annotations.NotNull;
public class ReVancedPreferenceFragment extends AbstractPreferenceFragment {
@Override
protected void syncSettingWithPreference(@NonNull @NotNull Preference pref,
@NonNull @NotNull Setting<?> setting,
protected void syncSettingWithPreference(@NonNull Preference pref,
@NonNull Setting<?> setting,
boolean applySettingToPreference) {
if (pref instanceof RangeValuePreference) {
RangeValuePreference rangeValuePref = (RangeValuePreference) pref;
if (pref instanceof RangeValuePreference rangeValuePref) {
Setting.privateSetValueFromString(setting, rangeValuePref.getValue());
} else if (pref instanceof DownloadPathPreference) {
DownloadPathPreference downloadPathPref = (DownloadPathPreference) pref;
} else if (pref instanceof DownloadPathPreference downloadPathPref) {
Setting.privateSetValueFromString(setting, downloadPathPref.getValue());
} else {
super.syncSettingWithPreference(pref, setting, applySettingToPreference);

View File

@@ -1,13 +1,15 @@
package app.revanced.extension.tiktok.settings.preference;
import android.content.Context;
import android.util.AttributeSet;
import android.view.View;
import java.util.Map;
import app.revanced.extension.shared.Logger;
import app.revanced.extension.shared.settings.preference.ReVancedAboutPreference;
import app.revanced.extension.tiktok.Utils;
@SuppressWarnings("deprecation")
public class ReVancedTikTokAboutPreference extends ReVancedAboutPreference {
/**
@@ -23,22 +25,11 @@ public class ReVancedTikTokAboutPreference extends ReVancedAboutPreference {
"revanced_settings_about_links_header", "Official links"
);
{
//noinspection deprecation
setTitle("About");
}
public ReVancedTikTokAboutPreference(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
}
public ReVancedTikTokAboutPreference(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
public ReVancedTikTokAboutPreference(Context context, AttributeSet attrs) {
super(context, attrs);
}
public ReVancedTikTokAboutPreference(Context context) {
super(context);
setTitle("About");
setSummary("About ReVanced");
}
@Override
@@ -52,4 +43,11 @@ public class ReVancedTikTokAboutPreference extends ReVancedAboutPreference {
return String.format(format, args);
}
@Override
protected void onBindView(View view) {
super.onBindView(view);
Utils.setTitleAndSummaryColor(getContext(), view);
}
}

View File

@@ -2,16 +2,26 @@ package app.revanced.extension.tiktok.settings.preference;
import android.content.Context;
import android.preference.SwitchPreference;
import android.view.View;
import app.revanced.extension.shared.settings.BooleanSetting;
import app.revanced.extension.tiktok.Utils;
@SuppressWarnings("deprecation")
public class TogglePreference extends SwitchPreference {
public TogglePreference(Context context, String title, String summary, BooleanSetting setting) {
super(context);
this.setTitle(title);
this.setSummary(summary);
this.setKey(setting.key);
this.setChecked(setting.get());
setTitle(title);
setSummary(summary);
setKey(setting.key);
setChecked(setting.get());
}
@Override
protected void onBindView(View view) {
super.onBindView(view);
Utils.setTitleAndSummaryColor(getContext(), view);
}
}

View File

@@ -18,7 +18,7 @@ public final class ChangeStartPagePatch {
/**
* Unmodified type, and same as un-patched.
*/
ORIGINAL("", null),
DEFAULT("", null),
/**
* Browse id.

View File

@@ -0,0 +1,41 @@
package app.revanced.extension.youtube.patches;
import app.revanced.extension.shared.Logger;
import app.revanced.extension.youtube.settings.Settings;
@SuppressWarnings("unused")
public class ForceOriginalAudioPatch {
private static final String DEFAULT_AUDIO_TRACKS_IDENTIFIER = "original";
/**
* Injection point.
*/
public static boolean isDefaultAudioStream(boolean isDefault, String audioTrackId, String audioTrackDisplayName) {
try {
if (!Settings.FORCE_ORIGINAL_AUDIO.get()) {
return isDefault;
}
if (audioTrackDisplayName.isEmpty()) {
// Older app targets can have empty audio tracks and these might be placeholders.
// The real audio tracks are called after these.
return isDefault;
}
Logger.printDebug(() -> "default: " + String.format("%-5s", isDefault) + " id: "
+ String.format("%-8s", audioTrackId) + " name:" + audioTrackDisplayName);
final boolean isOriginal = audioTrackDisplayName.contains(DEFAULT_AUDIO_TRACKS_IDENTIFIER);
if (isOriginal) {
Logger.printDebug(() -> "Using audio: " + audioTrackId);
}
return isOriginal;
} catch (Exception ex) {
Logger.printException(() -> "isDefaultAudioStream failure", ex);
}
return isDefault;
}
}

View File

@@ -30,7 +30,7 @@ public final class MiniplayerPatch {
*/
DISABLED(false, null),
/** Unmodified type, and same as un-patched. */
ORIGINAL(null, null),
DEFAULT(null, null),
/**
* Exactly the same as MINIMAL and only here for migration of user settings.
* Eventually this should be deleted.
@@ -182,7 +182,7 @@ public final class MiniplayerPatch {
* effectively disabling the miniplayer.
*/
public static boolean getMiniplayerOnCloseHandler(boolean original) {
return CURRENT_TYPE == ORIGINAL
return CURRENT_TYPE == DEFAULT
? original
: CURRENT_TYPE == DISABLED;
}
@@ -201,7 +201,7 @@ public final class MiniplayerPatch {
* Injection point.
*/
public static boolean getModernMiniplayerOverride(boolean original) {
return CURRENT_TYPE == ORIGINAL
return CURRENT_TYPE == DEFAULT
? original
: CURRENT_TYPE.isModern();
}
@@ -229,7 +229,7 @@ public final class MiniplayerPatch {
* Injection point.
*/
public static boolean getModernFeatureFlagsActiveOverride(boolean original) {
if (CURRENT_TYPE == ORIGINAL) {
if (CURRENT_TYPE == DEFAULT) {
return original;
}
@@ -240,7 +240,7 @@ public final class MiniplayerPatch {
* Injection point.
*/
public static boolean enableMiniplayerDoubleTapAction(boolean original) {
if (CURRENT_TYPE == ORIGINAL) {
if (CURRENT_TYPE == DEFAULT) {
return original;
}
@@ -251,7 +251,7 @@ public final class MiniplayerPatch {
* Injection point.
*/
public static boolean enableMiniplayerDragAndDrop(boolean original) {
if (CURRENT_TYPE == ORIGINAL) {
if (CURRENT_TYPE == DEFAULT) {
return original;
}

View File

@@ -0,0 +1,14 @@
package app.revanced.extension.youtube.patches;
import app.revanced.extension.youtube.settings.Settings;
@SuppressWarnings("unused")
public class OpenVideosFullscreen {
/**
* Injection point.
*/
public static boolean openVideoFullscreenPortrait(boolean original) {
return Settings.OPEN_VIDEOS_FULLSCREEN_PORTRAIT.get();
}
}

View File

@@ -85,7 +85,8 @@ public final class AdsFilter extends Filter {
"composite_concurrent_carousel_layout",
"carousel_headered_layout",
"full_width_portrait_image_layout",
"brand_video_shelf"
"brand_video_shelf",
"brand_video_singleton"
);
final var movieAds = new StringFilterGroup(

View File

@@ -14,6 +14,11 @@ final class CommentsFilter extends Filter {
private final ByteArrayFilterGroup emojiPickerBufferGroup;
public CommentsFilter() {
var chatSummary = new StringFilterGroup(
Settings.HIDE_COMMENTS_CHAT_SUMMARY,
"live_chat_summary_banner.eml"
);
var commentsByMembers = new StringFilterGroup(
Settings.HIDE_COMMENTS_BY_MEMBERS_HEADER,
"sponsorships_comments_header.eml",
@@ -54,6 +59,7 @@ final class CommentsFilter extends Filter {
);
addPathCallbacks(
chatSummary,
commentsByMembers,
comments,
createAShort,

View File

@@ -36,7 +36,6 @@ public final class LayoutComponentsFilter extends Filter {
);
private final StringTrieSearch exceptions = new StringTrieSearch();
private final StringFilterGroup searchResultShelfHeader;
private final StringFilterGroup inFeedSurvey;
private final StringFilterGroup notifyMe;
private final StringFilterGroup expandableMetadata;
@@ -194,11 +193,6 @@ public final class LayoutComponentsFilter extends Filter {
"timed_reaction"
);
searchResultShelfHeader = new StringFilterGroup(
Settings.HIDE_SEARCH_RESULT_SHELF_HEADER,
"shelf_header.eml"
);
notifyMe = new StringFilterGroup(
Settings.HIDE_NOTIFY_ME_BUTTON,
"set_reminder_button"
@@ -324,9 +318,6 @@ public final class LayoutComponentsFilter extends Filter {
return false;
}
// TODO: This also hides the feed Shorts shelf header
if (matchedGroup == searchResultShelfHeader && contentIndex != 0) return false;
if (matchedGroup == horizontalShelves) {
if (contentIndex == 0 && hideShelves()) {
return super.isFiltered(path, identifier, protobufBufferArray, matchedGroup, contentType, contentIndex);

View File

@@ -55,7 +55,7 @@ public class ThemePatch {
/**
* Injection point.
*/
public static boolean gradientLoadingScreenEnabled() {
public static boolean gradientLoadingScreenEnabled(boolean original) {
return GRADIENT_LOADING_SCREEN_ENABLED;
}
}

View File

@@ -52,6 +52,8 @@ public class Settings extends BaseSettings {
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);
// Ads
public static final BooleanSetting HIDE_BUTTONED_ADS = new BooleanSetting("revanced_hide_buttoned_ads", TRUE);
@@ -91,7 +93,6 @@ public class Settings extends BaseSettings {
public static final BooleanSetting HIDE_NOTIFY_ME_BUTTON = new BooleanSetting("revanced_hide_notify_me_button", TRUE);
public static final BooleanSetting HIDE_PLAYABLES = new BooleanSetting("revanced_hide_playables", TRUE);
public static final BooleanSetting HIDE_SEARCH_RESULT_RECOMMENDATIONS = new BooleanSetting("revanced_hide_search_result_recommendations", TRUE);
public static final BooleanSetting HIDE_SEARCH_RESULT_SHELF_HEADER = new BooleanSetting("revanced_hide_search_result_shelf_header", FALSE);
public static final BooleanSetting HIDE_SHOW_MORE_BUTTON = new BooleanSetting("revanced_hide_show_more_button", TRUE, true);
// Alternative thumbnails
public static final EnumSetting<ThumbnailOption> ALT_THUMBNAIL_HOME = new EnumSetting<>("revanced_alt_thumbnail_home", ThumbnailOption.ORIGINAL);
@@ -140,8 +141,9 @@ public class Settings extends BaseSettings {
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);
// Miniplayer
public static final EnumSetting<MiniplayerType> MINIPLAYER_TYPE = new EnumSetting<>("revanced_miniplayer_type", MiniplayerType.ORIGINAL, true);
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);
public static final BooleanSetting MINIPLAYER_DOUBLE_TAP_ACTION = new BooleanSetting("revanced_miniplayer_double_tap_action", TRUE, true, MINIPLAYER_ANY_MODERN);
public static final BooleanSetting MINIPLAYER_DRAG_AND_DROP = new BooleanSetting("revanced_miniplayer_drag_and_drop", TRUE, true, MINIPLAYER_ANY_MODERN);
@@ -158,6 +160,7 @@ public class Settings extends BaseSettings {
public static final StringSetting EXTERNAL_DOWNLOADER_PACKAGE_NAME = new StringSetting("revanced_external_downloader_name",
"org.schabi.newpipe" /* NewPipe */, parentsAny(EXTERNAL_DOWNLOADER, EXTERNAL_DOWNLOADER_ACTION_BUTTON));
// Comments
public static final BooleanSetting HIDE_COMMENTS_CHAT_SUMMARY = new BooleanSetting("revanced_hide_comments_chat_summary", FALSE);
public static final BooleanSetting HIDE_COMMENTS_BY_MEMBERS_HEADER = new BooleanSetting("revanced_hide_comments_by_members_header", FALSE);
public static final BooleanSetting HIDE_COMMENTS_CREATE_A_SHORT_BUTTON = new BooleanSetting("revanced_hide_comments_create_a_short_button", TRUE);
public static final BooleanSetting HIDE_COMMENTS_PREVIEW_COMMENT = new BooleanSetting("revanced_hide_comments_preview_comment", FALSE);
@@ -203,7 +206,7 @@ public class Settings extends BaseSettings {
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.ORIGINAL, 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));
// Custom filter
public static final BooleanSetting CUSTOM_FILTER = new BooleanSetting("revanced_custom_filter", FALSE);

View File

@@ -1,64 +0,0 @@
package app.revanced.extension.youtube.settings.preference;
import static app.revanced.extension.shared.StringRef.str;
import static app.revanced.extension.shared.spoof.DeviceHardwareSupport.DEVICE_HAS_HARDWARE_DECODING_VP9;
import android.content.Context;
import android.preference.SwitchPreference;
import android.util.AttributeSet;
@SuppressWarnings({"unused", "deprecation"})
public class ForceAVCSpoofingPreference extends SwitchPreference {
{
if (!DEVICE_HAS_HARDWARE_DECODING_VP9) {
setSummaryOn(str("revanced_spoof_video_streams_ios_force_avc_no_hardware_vp9_summary_on"));
}
}
public ForceAVCSpoofingPreference(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
}
public ForceAVCSpoofingPreference(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
public ForceAVCSpoofingPreference(Context context, AttributeSet attrs) {
super(context, attrs);
}
public ForceAVCSpoofingPreference(Context context) {
super(context);
}
private void updateUI() {
if (DEVICE_HAS_HARDWARE_DECODING_VP9) {
return;
}
// Temporarily remove the preference key to allow changing this preference without
// causing the settings UI listeners from showing reboot dialogs by the changes made here.
String key = getKey();
setKey(null);
// This setting cannot be changed by the user.
super.setEnabled(false);
super.setChecked(true);
setKey(key);
}
@Override
public void setEnabled(boolean enabled) {
super.setEnabled(enabled);
updateUI();
}
@Override
public void setChecked(boolean checked) {
super.setChecked(checked);
updateUI();
}
}

View File

@@ -10,6 +10,7 @@ import android.os.Build;
import android.preference.ListPreference;
import android.preference.Preference;
import android.preference.PreferenceScreen;
import android.util.Pair;
import android.util.TypedValue;
import android.view.ViewGroup;
import android.view.WindowInsets;
@@ -18,6 +19,10 @@ import android.widget.Toolbar;
import androidx.annotation.RequiresApi;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import app.revanced.extension.shared.Logger;
import app.revanced.extension.shared.Utils;
import app.revanced.extension.shared.settings.preference.AbstractPreferenceFragment;
@@ -41,6 +46,55 @@ public class ReVancedPreferenceFragment extends AbstractPreferenceFragment {
return Utils.getContext().getResources().getDrawable(backButtonResource);
}
/**
* Sorts a preference list by menu entries, but preserves the first value as the first entry.
*
* @noinspection SameParameterValue
*/
private static void sortListPreferenceByValues(ListPreference listPreference, int firstEntriesToPreserve) {
CharSequence[] entries = listPreference.getEntries();
CharSequence[] entryValues = listPreference.getEntryValues();
final int entrySize = entries.length;
if (entrySize != entryValues.length) {
// Xml array declaration has a missing/extra entry.
throw new IllegalStateException();
}
List<Pair<String, String>> firstPairs = new ArrayList<>(firstEntriesToPreserve);
List<Pair<String, String>> pairsToSort = new ArrayList<>(entrySize);
for (int i = 0; i < entrySize; i++) {
Pair<String, String> pair = new Pair<>(entries[i].toString(), entryValues[i].toString());
if (i < firstEntriesToPreserve) {
firstPairs.add(pair);
} else {
pairsToSort.add(pair);
}
}
Collections.sort(pairsToSort, (pair1, pair2) -> pair1.first.compareToIgnoreCase(pair2.first));
CharSequence[] sortedEntries = new CharSequence[entrySize];
CharSequence[] sortedEntryValues = new CharSequence[entrySize];
int i = 0;
for (Pair<String, String> pair : firstPairs) {
sortedEntries[i] = pair.first;
sortedEntryValues[i] = pair.second;
i++;
}
for (Pair<String, String> pair : pairsToSort) {
sortedEntries[i] = pair.first;
sortedEntryValues[i] = pair.second;
i++;
}
listPreference.setEntries(sortedEntries);
listPreference.setEntryValues(sortedEntryValues);
}
@RequiresApi(api = Build.VERSION_CODES.O)
@Override
protected void initialize() {
@@ -50,9 +104,14 @@ public class ReVancedPreferenceFragment extends AbstractPreferenceFragment {
setPreferenceScreenToolbar(getPreferenceScreen());
// If the preference was included, then initialize it based on the available playback speed.
Preference defaultSpeedPreference = findPreference(Settings.PLAYBACK_SPEED_DEFAULT.key);
if (defaultSpeedPreference instanceof ListPreference) {
CustomPlaybackSpeedPatch.initializeListPreference((ListPreference) defaultSpeedPreference);
Preference preference = findPreference(Settings.PLAYBACK_SPEED_DEFAULT.key);
if (preference instanceof ListPreference playbackPreference) {
CustomPlaybackSpeedPatch.initializeListPreference(playbackPreference);
}
preference = findPreference(Settings.SPOOF_VIDEO_STREAMS_LANGUAGE.key);
if (preference instanceof ListPreference languagePreference) {
sortListPreferenceByValues(languagePreference, 1);
}
} catch (Exception ex) {
Logger.printException(() -> "initialize failure", ex);

View File

@@ -0,0 +1,85 @@
package app.revanced.extension.youtube.settings.preference;
import static app.revanced.extension.shared.StringRef.str;
import android.content.Context;
import android.content.SharedPreferences;
import android.preference.Preference;
import android.preference.PreferenceManager;
import android.util.AttributeSet;
import androidx.annotation.Nullable;
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.Setting;
import app.revanced.extension.shared.spoof.ClientType;
@SuppressWarnings({"deprecation", "unused"})
public class SpoofStreamingDataSideEffectsPreference extends Preference {
@Nullable
private ClientType currentClientType;
private final SharedPreferences.OnSharedPreferenceChangeListener listener = (sharedPreferences, str) -> {
// Because this listener may run before the ReVanced settings fragment updates Settings,
// this could show the prior config and not the current.
//
// Push this call to the end of the main run queue,
// so all other listeners are done and Settings is up to date.
Utils.runOnMainThread(this::updateUI);
};
public SpoofStreamingDataSideEffectsPreference(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
}
public SpoofStreamingDataSideEffectsPreference(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
public SpoofStreamingDataSideEffectsPreference(Context context, AttributeSet attrs) {
super(context, attrs);
}
public SpoofStreamingDataSideEffectsPreference(Context context) {
super(context);
}
private void addChangeListener() {
Setting.preferences.preferences.registerOnSharedPreferenceChangeListener(listener);
}
private void removeChangeListener() {
Setting.preferences.preferences.unregisterOnSharedPreferenceChangeListener(listener);
}
@Override
protected void onAttachedToHierarchy(PreferenceManager preferenceManager) {
super.onAttachedToHierarchy(preferenceManager);
updateUI();
addChangeListener();
}
@Override
protected void onPrepareForRemoval() {
super.onPrepareForRemoval();
removeChangeListener();
}
private void updateUI() {
ClientType clientType = BaseSettings.SPOOF_VIDEO_STREAMS_CLIENT_TYPE.get();
if (currentClientType == clientType) {
return;
}
Logger.printDebug(() -> "Updating spoof stream side effects preference");
setEnabled(BaseSettings.SPOOF_VIDEO_STREAMS.get());
String key = "revanced_spoof_video_streams_about_"
+ clientType.name().toLowerCase();
setTitle(str(key + "_title"));
setSummary(str(key + "_summary"));
}
}

View File

@@ -3,4 +3,4 @@ org.gradle.jvmargs = -Xms512M -Xmx2048M
org.gradle.parallel = true
android.useAndroidX = true
kotlin.code.style = official
version = 5.3.0-dev.2
version = 5.5.0-dev.3

View File

@@ -60,6 +60,10 @@ public final class app/revanced/patches/all/misc/directory/ChangeDataDirectoryLo
public static final fun getChangeDataDirectoryLocationPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
}
public final class app/revanced/patches/all/misc/directory/documentsprovider/ExportInternalDataDocumentsProviderPatchKt {
public static final fun getExportInternalDataDocumentsProviderPatch ()Lapp/revanced/patcher/patch/ResourcePatch;
}
public final class app/revanced/patches/all/misc/hex/HexPatchKt {
public static final fun getHexPatch ()Lapp/revanced/patcher/patch/RawResourcePatch;
}
@@ -320,8 +324,12 @@ public final class app/revanced/patches/music/misc/gms/GmsCoreSupportPatchKt {
public static final fun getGmsCoreSupportPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
}
public final class app/revanced/patches/music/misc/spoof/SpoofVideoStreamsPatchKt {
public static final fun getSpoofVideoStreamsPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
public final class app/revanced/patches/music/misc/spoof/SpoofClientPatchKt {
public static final fun getSpoofClientPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
}
public final class app/revanced/patches/music/misc/spoof/UserAgentClientSpoofPatchKt {
public static final fun getUserAgentClientSpoofPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
}
public final class app/revanced/patches/myexpenses/misc/pro/UnlockProPatchKt {
@@ -762,6 +770,10 @@ public final class app/revanced/patches/shared/misc/spoof/SpoofVideoStreamsPatch
public static synthetic fun spoofVideoStreamsPatch$default (Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)Lapp/revanced/patcher/patch/BytecodePatch;
}
public final class app/revanced/patches/shared/misc/spoof/UserAgentClientSpoofPatchKt {
public static final fun userAgentClientSpoofPatch (Ljava/lang/String;)Lapp/revanced/patcher/patch/BytecodePatch;
}
public final class app/revanced/patches/solidexplorer2/functionality/filesize/RemoveFileSizeLimitPatchKt {
public static final fun getRemoveFileSizeLimitPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
}
@@ -1164,6 +1176,10 @@ public final class app/revanced/patches/youtube/layout/player/background/PlayerC
public static final fun getPlayerControlsBackgroundPatch ()Lapp/revanced/patcher/patch/ResourcePatch;
}
public final class app/revanced/patches/youtube/layout/player/fullscreen/OpenVideosFullscreenKt {
public static final fun getOpenVideosFullscreenPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
}
public final class app/revanced/patches/youtube/layout/player/overlay/CustomPlayerOverlayOpacityPatchKt {
public static final fun getCustomPlayerOverlayOpacityPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
}
@@ -1384,6 +1400,10 @@ 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/information/VideoInformationPatchKt {
public static final fun getVideoInformationPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
public static final fun userSelectedPlaybackSpeedHook (Ljava/lang/String;Ljava/lang/String;)V

View File

@@ -1,58 +1,19 @@
package app.revanced.patches.all.misc.directory
import app.revanced.patcher.extensions.InstructionExtensions.getInstruction
import app.revanced.patcher.extensions.InstructionExtensions.replaceInstruction
import app.revanced.patcher.patch.bytecodePatch
import app.revanced.patches.all.misc.transformation.transformInstructionsPatch
import app.revanced.util.getReference
import com.android.tools.smali.dexlib2.iface.instruction.formats.Instruction35c
import com.android.tools.smali.dexlib2.iface.reference.MethodReference
import com.android.tools.smali.dexlib2.immutable.reference.ImmutableMethodReference
import com.android.tools.smali.dexlib2.util.MethodUtil
import app.revanced.patches.all.misc.directory.documentsprovider.exportInternalDataDocumentsProviderPatch
@Suppress("unused")
@Deprecated(
"Superseded by internalDataDocumentsProviderPatch",
ReplaceWith("internalDataDocumentsProviderPatch"),
)
val changeDataDirectoryLocationPatch = bytecodePatch(
name = "Change data directory location",
// name = "Change data directory location",
description = "Changes the data directory in the application from " +
"the app internal storage directory to /sdcard/android/data accessible by root-less devices." +
"Using this patch can cause unexpected issues with some apps.",
use = false,
) {
dependsOn(
transformInstructionsPatch(
filterMap = filter@{ _, _, instruction, instructionIndex ->
val reference = instruction.getReference<MethodReference>() ?: return@filter null
if (!MethodUtil.methodSignaturesMatch(reference, MethodCall.GetDir.reference)) {
return@filter null
}
return@filter instructionIndex
},
transform = { method, index ->
val getDirInstruction = method.getInstruction<Instruction35c>(index)
val contextRegister = getDirInstruction.registerC
val dataRegister = getDirInstruction.registerD
method.replaceInstruction(
index,
"invoke-virtual { v$contextRegister, v$dataRegister }, " +
"Landroid/content/Context;->getExternalFilesDir(Ljava/lang/String;)Ljava/io/File;",
)
},
),
)
}
private enum class MethodCall(
val reference: MethodReference,
) {
GetDir(
ImmutableMethodReference(
"Landroid/content/Context;",
"getDir",
listOf("Ljava/lang/String;", "I"),
"Ljava/io/File;",
),
),
dependsOn(exportInternalDataDocumentsProviderPatch)
}

View File

@@ -0,0 +1,58 @@
package app.revanced.patches.all.misc.directory.documentsprovider
import app.revanced.patcher.patch.bytecodePatch
import app.revanced.patcher.patch.resourcePatch
import app.revanced.util.asSequence
import app.revanced.util.getNode
@Suppress("unused")
val exportInternalDataDocumentsProviderPatch = resourcePatch(
name = "Export internal data documents provider",
description = "Exports a documents provider that grants access to the internal data directory of this app " +
"to file managers and other apps that support the Storage Access Framework.",
use = false,
) {
dependsOn(
bytecodePatch {
extendWith("extensions/all/misc/directory/export-internal-data-documents-provider.rve")
},
)
execute {
val documentsProviderClass =
"app.revanced.extension.all.misc.directory.documentsprovider.InternalDataDocumentsProvider"
document("AndroidManifest.xml").use { document ->
// Check if the provider is already declared
if (document.getElementsByTagName("provider")
.asSequence()
.any { it.attributes.getNamedItem("android:name")?.nodeValue == documentsProviderClass }
) {
return@execute
}
val authority =
document.getNode("manifest").attributes.getNamedItem("package").let {
// Select a URI authority name that is unique to the current app
"${it.nodeValue}.$documentsProviderClass"
}
// Register the documents provider
with(document.getNode("application")) {
document.createElement("provider").apply {
setAttribute("android:name", documentsProviderClass)
setAttribute("android:authorities", authority)
setAttribute("android:exported", "true")
setAttribute("android:grantUriPermissions", "true")
setAttribute("android:permission", "android.permission.MANAGE_DOCUMENTS")
document.createElement("intent-filter").apply {
document.createElement("action").apply {
setAttribute("android:name", "android.content.action.DOCUMENTS_PROVIDER")
}.let(this::appendChild)
}.let(this::appendChild)
}.let(this::appendChild)
}
}
}
}

View File

@@ -1,9 +1,10 @@
package app.revanced.patches.all.misc.packagename
import app.revanced.patcher.patch.Option
import app.revanced.patcher.patch.resourcePatch
import app.revanced.patcher.patch.stringOption
import app.revanced.patcher.patch.*
import app.revanced.util.asSequence
import app.revanced.util.getNode
import org.w3c.dom.Element
import java.util.logging.Logger
lateinit var packageNameOption: Option<String>
@@ -27,7 +28,8 @@ fun setOrGetFallbackPackageName(fallbackPackageName: String): String {
val changePackageNamePatch = resourcePatch(
name = "Change package name",
description = "Appends \".revanced\" to the package name by default. Changing the package name of the app can lead to unexpected issues.",
description = "Appends \".revanced\" to the package name by default. " +
"Changing the package name of the app can lead to unexpected issues.",
use = false,
) {
packageNameOption = stringOption(
@@ -41,20 +43,81 @@ val changePackageNamePatch = resourcePatch(
it == "Default" || it!!.matches(Regex("^[a-z]\\w*(\\.[a-z]\\w*)+\$"))
}
val updatePermissions by booleanOption(
key = "updatePermissions",
default = false,
title = "Update permissions",
description = "Update compatibility receiver permissions. " +
"Enabling this can fix installation errors, but this can also break features in certain apps.",
)
val updateProviders by booleanOption(
key = "updateProviders",
default = false,
title = "Update providers",
description = "Update provider names declared by the app. " +
"Enabling this can fix installation errors, but this can also break features in certain apps.",
)
finalize {
/**
* Apps that are confirmed to not work correctly with this patch.
* This is not an exhaustive list, and is only the apps with
* ReVanced specific patches and are confirmed incompatible with this patch.
*/
val incompatibleAppPackages = setOf(
// Cannot log in, settings menu is broken.
"com.reddit.frontpage",
// Patches and installs but crashes on launch.
"com.duolingo",
"com.twitter.android",
"tv.twitch.android.app",
)
document("AndroidManifest.xml").use { document ->
val manifest = document.getNode("manifest") as Element
val packageName = manifest.getAttribute("package")
if (incompatibleAppPackages.contains(packageName)) {
return@finalize Logger.getLogger(this::class.java.name).severe(
"'$packageName' does not work correctly with \"Change package name\"",
)
}
val replacementPackageName = packageNameOption.value
val newPackageName = if (replacementPackageName != packageNameOption.default) {
replacementPackageName!!
} else {
"$packageName.revanced"
}
val manifest = document.getElementsByTagName("manifest").item(0) as Element
manifest.setAttribute(
"package",
if (replacementPackageName != packageNameOption.default) {
replacementPackageName
} else {
"${manifest.getAttribute("package")}.revanced"
},
)
manifest.setAttribute("package", newPackageName)
if (updatePermissions == true) {
val permissions = manifest.getElementsByTagName("permission").asSequence()
val usesPermissions = manifest.getElementsByTagName("uses-permission").asSequence()
val receiverNotExported = "DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION"
(permissions + usesPermissions)
.map { it as Element }
.filter { it.getAttribute("android:name") == "$packageName.$receiverNotExported" }
.forEach { it.setAttribute("android:name", "$newPackageName.$receiverNotExported") }
}
if (updateProviders == true) {
val providers = manifest.getElementsByTagName("provider").asSequence()
for (node in providers) {
val provider = node as Element
val authorities = provider.getAttribute("android:authorities")
if (!authorities.startsWith("$packageName.")) continue
provider.setAttribute("android:authorities", authorities.replace(packageName, newPackageName))
}
}
}
}
}

View File

@@ -3,9 +3,9 @@ package app.revanced.patches.music.interaction.permanentshuffle
import app.revanced.patcher.extensions.InstructionExtensions.addInstruction
import app.revanced.patcher.patch.bytecodePatch
@Deprecated("This patch no longer works and will be removed in the future.")
@Suppress("unused")
val permanentShufflePatch = bytecodePatch(
name = "Permanent shuffle",
description = "Permanently remember your shuffle preference " +
"even if the playlist ends or another track is played.",
use = false,

View File

@@ -1,22 +1,16 @@
package app.revanced.patches.music.misc.androidauto
import app.revanced.patcher.extensions.InstructionExtensions.addInstructions
import app.revanced.patcher.patch.bytecodePatch
import app.revanced.util.returnEarly
@Suppress("unused")
val bypassCertificateChecksPatch = bytecodePatch(
name = "Bypass certificate checks",
description = "Bypasses certificate checks which prevent YouTube Music from working on Android Auto.",
) {
compatibleWith("com.google.android.apps.youtube.music")
compatibleWith("com.google.android.apps.youtube.music"("7.29.52"))
execute {
checkCertificateFingerprint.method.addInstructions(
0,
"""
const/4 v0, 0x1
return v0
""",
)
checkCertificateFingerprint.method.returnEarly(true)
}
}

View File

@@ -4,5 +4,6 @@ import app.revanced.patches.music.misc.extension.hooks.applicationInitHook
import app.revanced.patches.shared.misc.extension.sharedExtensionPatch
val sharedExtensionPatch = sharedExtensionPatch(
"music",
applicationInitHook,
)

View File

@@ -4,7 +4,7 @@ import app.revanced.patcher.patch.Option
import app.revanced.patches.music.misc.extension.sharedExtensionPatch
import app.revanced.patches.music.misc.gms.Constants.MUSIC_PACKAGE_NAME
import app.revanced.patches.music.misc.gms.Constants.REVANCED_MUSIC_PACKAGE_NAME
import app.revanced.patches.music.misc.spoof.spoofVideoStreamsPatch
import app.revanced.patches.music.misc.spoof.spoofClientPatch
import app.revanced.patches.shared.castContextFetchFingerprint
import app.revanced.patches.shared.misc.gms.gmsCoreSupportPatch
import app.revanced.patches.shared.primeMethodFingerprint
@@ -21,7 +21,7 @@ val gmsCoreSupportPatch = gmsCoreSupportPatch(
extensionPatch = sharedExtensionPatch,
gmsCoreSupportResourcePatchFactory = ::gmsCoreSupportResourcePatch,
) {
dependsOn(spoofVideoStreamsPatch)
dependsOn(spoofClientPatch)
compatibleWith(MUSIC_PACKAGE_NAME)
}

View File

@@ -0,0 +1,39 @@
package app.revanced.patches.music.misc.spoof
import app.revanced.patcher.fingerprint
import com.android.tools.smali.dexlib2.AccessFlags
import com.android.tools.smali.dexlib2.Opcode
internal val playerRequestConstructorFingerprint = fingerprint {
accessFlags(AccessFlags.PUBLIC, AccessFlags.CONSTRUCTOR)
strings("player")
}
/**
* Matches using the class found in [playerRequestConstructorFingerprint].
*/
internal val createPlayerRequestBodyFingerprint = fingerprint {
parameters("L")
returns("V")
opcodes(
Opcode.CHECK_CAST,
Opcode.IGET,
Opcode.AND_INT_LIT16,
)
strings("ms")
}
/**
* Used to get a reference to other clientInfo fields.
*/
internal val setClientInfoFieldsFingerprint = fingerprint {
returns("L")
strings("Google Inc.")
}
/**
* Used to get a reference to the clientInfo and clientInfo.clientVersion field.
*/
internal val setClientInfoClientVersionFingerprint = fingerprint {
strings("10.29")
}

View File

@@ -0,0 +1,105 @@
package app.revanced.patches.music.misc.spoof
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.bytecodePatch
import app.revanced.patcher.util.proxy.mutableTypes.MutableMethod.Companion.toMutable
import app.revanced.patches.music.misc.extension.sharedExtensionPatch
import app.revanced.util.getReference
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.iface.reference.FieldReference
import com.android.tools.smali.dexlib2.iface.reference.TypeReference
import com.android.tools.smali.dexlib2.immutable.ImmutableMethod
import com.android.tools.smali.dexlib2.immutable.ImmutableMethodParameter
internal const val EXTENSION_CLASS_DESCRIPTOR =
"Lapp/revanced/extension/music/spoof/SpoofClientPatch;"
// TODO: Replace this patch with spoofVideoStreamsPatch once possible.
val spoofClientPatch = bytecodePatch(
name = "Spoof client",
description = "Spoofs the client to fix playback.",
) {
compatibleWith("com.google.android.apps.youtube.music")
dependsOn(
sharedExtensionPatch,
// TODO: Add settingsPatch
userAgentClientSpoofPatch,
)
execute {
val playerRequestClass = playerRequestConstructorFingerprint.classDef
val createPlayerRequestBodyMatch = createPlayerRequestBodyFingerprint.match(playerRequestClass)
val clientInfoContainerClass = createPlayerRequestBodyMatch.method
.getInstruction(createPlayerRequestBodyMatch.patternMatch!!.startIndex)
.getReference<TypeReference>()!!.type
val clientInfoField = setClientInfoClientVersionFingerprint.method.instructions.first {
it.opcode == Opcode.IPUT_OBJECT && it.getReference<FieldReference>()!!.definingClass == clientInfoContainerClass
}.getReference<FieldReference>()!!
val setClientInfoFieldInstructions = setClientInfoFieldsFingerprint.method.instructions.filter {
(it.opcode == Opcode.IPUT_OBJECT || it.opcode == Opcode.IPUT) &&
it.getReference<FieldReference>()!!.definingClass == clientInfoField.type
}.map { it.getReference<FieldReference>()!! }
// Offsets are known for the fields in the clientInfo object.
val clientIdField = setClientInfoFieldInstructions[0]
val clientModelField = setClientInfoFieldInstructions[5]
val osVersionField = setClientInfoFieldInstructions[7]
val clientVersionField = setClientInfoClientVersionFingerprint.method
.getInstruction(setClientInfoClientVersionFingerprint.stringMatches!!.first().index + 1)
.getReference<FieldReference>()
// Helper method to spoof the client info.
val spoofClientInfoMethod = ImmutableMethod(
playerRequestClass.type,
"spoofClientInfo",
listOf(ImmutableMethodParameter(clientInfoContainerClass, null, null)),
"V",
AccessFlags.PRIVATE.value or AccessFlags.STATIC.value,
null,
null,
MutableMethodImplementation(3),
).toMutable().also(playerRequestClass.methods::add).apply {
addInstructions(
"""
iget-object v0, p0, $clientInfoField
invoke-static { }, $EXTENSION_CLASS_DESCRIPTOR->getClientId()I
move-result v1
iput v1, v0, $clientIdField
invoke-static { }, $EXTENSION_CLASS_DESCRIPTOR->getClientModel()Ljava/lang/String;
move-result-object v1
iput-object v1, v0, $clientModelField
invoke-static { }, $EXTENSION_CLASS_DESCRIPTOR->getClientVersion()Ljava/lang/String;
move-result-object v1
iput-object v1, v0, $clientVersionField
invoke-static { }, $EXTENSION_CLASS_DESCRIPTOR->getOsVersion()Ljava/lang/String;
move-result-object v1
iput-object v1, v0, $osVersionField
return-void
""",
)
}
createPlayerRequestBodyMatch.method.apply {
val checkCastIndex = createPlayerRequestBodyMatch.patternMatch!!.startIndex
val clientInfoContainerRegister = getInstruction<OneRegisterInstruction>(checkCastIndex).registerA
addInstruction(checkCastIndex + 1, "invoke-static {v$clientInfoContainerRegister}, $spoofClientInfoMethod")
}
}
}

View File

@@ -1,7 +0,0 @@
package app.revanced.patches.music.misc.spoof
import app.revanced.patches.shared.misc.spoof.spoofVideoStreamsPatch
val spoofVideoStreamsPatch = spoofVideoStreamsPatch({
compatibleWith("com.google.android.apps.youtube.music")
})

View File

@@ -0,0 +1,5 @@
package app.revanced.patches.music.misc.spoof
import app.revanced.patches.shared.misc.spoof.userAgentClientSpoofPatch
val userAgentClientSpoofPatch = userAgentClientSpoofPatch("com.google.android.apps.youtube.music")

View File

@@ -3,10 +3,9 @@ package app.revanced.patches.nyx.misc.pro
import app.revanced.patcher.extensions.InstructionExtensions.addInstructions
import app.revanced.patcher.patch.bytecodePatch
@Deprecated("This patch will be removed in the future.")
@Suppress("unused")
val unlockProPatch = bytecodePatch(
name = "Unlock pro",
) {
val unlockProPatch = bytecodePatch {
compatibleWith("com.awedea.nyx")
execute {

View File

@@ -23,7 +23,7 @@ import com.android.tools.smali.dexlib2.iface.reference.MethodReference
import com.android.tools.smali.dexlib2.immutable.ImmutableMethod
import com.android.tools.smali.dexlib2.immutable.ImmutableMethodParameter
private const val EXTENSION_CLASS_DESCRIPTOR =
internal const val EXTENSION_CLASS_DESCRIPTOR =
"Lapp/revanced/extension/shared/spoof/SpoofVideoStreamsPatch;"
fun spoofVideoStreamsPatch(

View File

@@ -0,0 +1,81 @@
package app.revanced.patches.shared.misc.spoof
import app.revanced.patcher.extensions.InstructionExtensions.getInstruction
import app.revanced.patcher.extensions.InstructionExtensions.replaceInstruction
import app.revanced.patches.all.misc.transformation.IMethodCall
import app.revanced.patches.all.misc.transformation.filterMapInstruction35c
import app.revanced.patches.all.misc.transformation.transformInstructionsPatch
import app.revanced.util.getReference
import app.revanced.util.indexOfFirstInstruction
import com.android.tools.smali.dexlib2.Opcode
import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
import com.android.tools.smali.dexlib2.iface.reference.MethodReference
import com.android.tools.smali.dexlib2.iface.reference.StringReference
private const val USER_AGENT_STRING_BUILDER_APPEND_METHOD_REFERENCE =
"Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;"
fun userAgentClientSpoofPatch(originalPackageName: String) = transformInstructionsPatch(
filterMap = { classDef, _, instruction, instructionIndex ->
filterMapInstruction35c<MethodCall>(
"Lapp/revanced/extension",
classDef,
instruction,
instructionIndex,
)
},
transform = transform@{ mutableMethod, entry ->
val (_, _, instructionIndex) = entry
// Replace the result of context.getPackageName(), if it is used in a user agent string.
mutableMethod.apply {
// After context.getPackageName() the result is moved to a register.
val targetRegister = (
getInstruction(instructionIndex + 1)
as? OneRegisterInstruction ?: return@transform
).registerA
// IndexOutOfBoundsException is technically possible here,
// but no such occurrences are present in the app.
val referee = getInstruction(instructionIndex + 2).getReference<MethodReference>()?.toString()
// Only replace string builder usage.
if (referee != USER_AGENT_STRING_BUILDER_APPEND_METHOD_REFERENCE) {
return@transform
}
// Do not change the package name in methods that use resources, or for methods that use GmsCore.
// Changing these package names will result in playback limitations,
// particularly Android VR background audio only playback.
val resourceOrGmsStringInstructionIndex = indexOfFirstInstruction {
val reference = getReference<StringReference>()
opcode == Opcode.CONST_STRING &&
(reference?.string == "android.resource://" || reference?.string == "gcore_")
}
if (resourceOrGmsStringInstructionIndex >= 0) {
return@transform
}
// Overwrite the result of context.getPackageName() with the original package name.
replaceInstruction(
instructionIndex + 1,
"const-string v$targetRegister, \"$originalPackageName\"",
)
}
},
)
@Suppress("unused")
private enum class MethodCall(
override val definedClassName: String,
override val methodName: String,
override val methodParams: Array<String>,
override val returnType: String,
) : IMethodCall {
GetPackageName(
"Landroid/content/Context;",
"getPackageName",
emptyArray(),
"Ljava/lang/String;",
),
}

View File

@@ -21,7 +21,7 @@ val audioAdsPatch = bytecodePatch(
addResourcesPatch,
)
compatibleWith("tv.twitch.android.app"("15.4.1", "16.1.0", "16.9.1"))
compatibleWith("tv.twitch.android.app")
execute {
addResources("twitch", "ad.audio.audioAdsPatch")

View File

@@ -19,7 +19,7 @@ val embeddedAdsPatch = bytecodePatch(
settingsPatch,
)
compatibleWith("tv.twitch.android.app"("15.4.1", "16.1.0", "16.9.1"))
compatibleWith("tv.twitch.android.app")
execute {
addResources("twitch", "ad.embedded.embeddedAdsPatch")

View File

@@ -4,6 +4,6 @@ import app.revanced.patcher.fingerprint
internal val createsUsherClientFingerprint = fingerprint {
custom { method, _ ->
method.definingClass.endsWith("Ltv/twitch/android/network/OkHttpClientFactory;") && method.name == "buildOkHttpClient"
method.name == "buildOkHttpClient" && method.definingClass.endsWith("Ltv/twitch/android/network/OkHttpClientFactory;")
}
}

View File

@@ -141,24 +141,21 @@ val videoAdsPatch = bytecodePatch(
)
// Spoof showAds JSON field.
contentConfigShowAdsFingerprint.method.addInstructions(
// Late versions of the app don't have the method anymore.
contentConfigShowAdsFingerprint.methodOrNull?.addInstructions(
0,
"""
${createConditionInstructions("v0")}
const/4 v0, 0
:$skipLabelName
return v0
""",
${createConditionInstructions("v0")}
const/4 v0, 0
:$skipLabelName
return v0
""",
)
}
},
)
compatibleWith(
"tv.twitch.android.app"(
"15.4.1",
"16.1.0",
"16.9.1",
),
"tv.twitch.android.app",
)
}

View File

@@ -22,7 +22,7 @@ val showDeletedMessagesPatch = bytecodePatch(
addResourcesPatch,
)
compatibleWith("tv.twitch.android.app"("15.4.1", "16.1.0", "16.9.1"))
compatibleWith("tv.twitch.android.app")
fun createSpoilerConditionInstructions(register: String = "v0") = """
invoke-static {}, Lapp/revanced/extension/twitch/patches/ShowDeletedMessagesPatch;->shouldUseSpoiler()Z

View File

@@ -20,7 +20,7 @@ val autoClaimChannelPointsPatch = bytecodePatch(
addResourcesPatch,
)
compatibleWith("tv.twitch.android.app"("15.4.1", "16.1.0", "16.9.1"))
compatibleWith("tv.twitch.android.app")
execute {
addResources("twitch", "chat.autoclaim.autoClaimChannelPointsPatch")

View File

@@ -48,13 +48,7 @@ val settingsPatch = bytecodePatch(
settingsPatch(preferences = preferences),
)
compatibleWith(
"tv.twitch.android.app"(
"15.4.1",
"16.1.0",
"16.9.1",
),
)
compatibleWith("tv.twitch.android.app")
execute {
addResources("twitch", "misc.settings.settingsPatch")

View File

@@ -154,6 +154,7 @@ val hideLayoutComponentsPatch = bytecodePatch(
PreferenceScreenPreference(
"revanced_comments_screen",
preferences = setOf(
SwitchPreference("revanced_hide_comments_chat_summary"),
SwitchPreference("revanced_hide_comments_by_members_header"),
SwitchPreference("revanced_hide_comments_section"),
SwitchPreference("revanced_hide_comments_create_a_short_button"),
@@ -221,7 +222,6 @@ val hideLayoutComponentsPatch = bytecodePatch(
SwitchPreference("revanced_hide_notify_me_button"),
SwitchPreference("revanced_hide_playables"),
SwitchPreference("revanced_hide_search_result_recommendations"),
SwitchPreference("revanced_hide_search_result_shelf_header"),
SwitchPreference("revanced_hide_show_more_button"),
SwitchPreference("revanced_hide_doodles"),
)

View File

@@ -240,14 +240,14 @@ val miniplayerPatch = bytecodePatch(
),
)
fun MutableMethod.insertBooleanOverride(index: Int, methodName: String) {
fun MutableMethod.insertMiniplayerBooleanOverride(index: Int, methodName: String) {
val register = getInstruction<OneRegisterInstruction>(index).registerA
addInstructions(
index,
"""
invoke-static {v$register}, $EXTENSION_CLASS_DESCRIPTOR->$methodName(Z)Z
move-result v$register
""",
invoke-static {v$register}, $EXTENSION_CLASS_DESCRIPTOR->$methodName(Z)Z
move-result v$register
"""
)
}
@@ -257,29 +257,25 @@ val miniplayerPatch = bytecodePatch(
* Adds an override to force legacy tablet miniplayer to be used or not used.
*/
fun MutableMethod.insertLegacyTabletMiniplayerOverride(index: Int) {
insertBooleanOverride(index, "getLegacyTabletMiniplayerOverride")
insertMiniplayerBooleanOverride(index, "getLegacyTabletMiniplayerOverride")
}
/**
* Adds an override to force modern miniplayer to be used or not used.
*/
fun MutableMethod.insertModernMiniplayerOverride(index: Int) {
insertBooleanOverride(index, "getModernMiniplayerOverride")
insertMiniplayerBooleanOverride(index, "getModernMiniplayerOverride")
}
fun Fingerprint.insertLiteralValueBooleanOverride(
fun Fingerprint.insertMiniplayerFeatureFlagBooleanOverride(
literal: Long,
extensionMethod: String,
) {
method.apply {
val literalIndex = indexOfFirstLiteralInstructionOrThrow(literal)
val targetIndex = indexOfFirstInstructionOrThrow(literalIndex, Opcode.MOVE_RESULT)
) = method.insertFeatureFlagBooleanOverride(
literal,
"$EXTENSION_CLASS_DESCRIPTOR->$extensionMethod(Z)Z"
)
insertBooleanOverride(targetIndex + 1, extensionMethod)
}
}
fun Fingerprint.insertLiteralValueFloatOverride(
fun Fingerprint.insertMiniplayerFeatureFlagFloatOverride(
literal: Long,
extensionMethod: String,
) {
@@ -370,24 +366,24 @@ val miniplayerPatch = bytecodePatch(
}
if (is_19_23_or_greater) {
miniplayerModernConstructorFingerprint.insertLiteralValueBooleanOverride(
miniplayerModernConstructorFingerprint.insertMiniplayerFeatureFlagBooleanOverride(
MINIPLAYER_DRAG_DROP_FEATURE_KEY,
"enableMiniplayerDragAndDrop",
)
}
if (is_19_25_or_greater) {
miniplayerModernConstructorFingerprint.insertLiteralValueBooleanOverride(
miniplayerModernConstructorFingerprint.insertMiniplayerFeatureFlagBooleanOverride(
MINIPLAYER_MODERN_FEATURE_LEGACY_KEY,
"getModernMiniplayerOverride",
)
miniplayerModernConstructorFingerprint.insertLiteralValueBooleanOverride(
miniplayerModernConstructorFingerprint.insertMiniplayerFeatureFlagBooleanOverride(
MINIPLAYER_MODERN_FEATURE_KEY,
"getModernFeatureFlagsActiveOverride",
)
miniplayerModernConstructorFingerprint.insertLiteralValueBooleanOverride(
miniplayerModernConstructorFingerprint.insertMiniplayerFeatureFlagBooleanOverride(
MINIPLAYER_DOUBLE_TAP_FEATURE_KEY,
"enableMiniplayerDoubleTapAction",
)
@@ -426,19 +422,19 @@ val miniplayerPatch = bytecodePatch(
}
if (is_19_36_or_greater) {
miniplayerModernConstructorFingerprint.insertLiteralValueBooleanOverride(
miniplayerModernConstructorFingerprint.insertMiniplayerFeatureFlagBooleanOverride(
MINIPLAYER_ROUNDED_CORNERS_FEATURE_KEY,
"setRoundedCorners",
)
}
if (is_19_43_or_greater) {
miniplayerOnCloseHandlerFingerprint.insertLiteralValueBooleanOverride(
miniplayerOnCloseHandlerFingerprint.insertMiniplayerFeatureFlagBooleanOverride(
MINIPLAYER_DISABLED_FEATURE_KEY,
"getMiniplayerOnCloseHandler"
)
miniplayerModernConstructorFingerprint.insertLiteralValueBooleanOverride(
miniplayerModernConstructorFingerprint.insertMiniplayerFeatureFlagBooleanOverride(
MINIPLAYER_HORIZONTAL_DRAG_FEATURE_KEY,
"setHorizontalDrag",
)

View File

@@ -0,0 +1,16 @@
package app.revanced.patches.youtube.layout.player.fullscreen
import app.revanced.patcher.fingerprint
import app.revanced.util.literal
import com.android.tools.smali.dexlib2.AccessFlags
internal const val OPEN_VIDEOS_FULLSCREEN_PORTRAIT_FEATURE_FLAG = 45666112L
internal val openVideosFullscreenPortraitFingerprint = fingerprint {
accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL)
returns("V")
parameters("L", "Lj\$/util/Optional;")
literal {
OPEN_VIDEOS_FULLSCREEN_PORTRAIT_FEATURE_FLAG
}
}

View File

@@ -0,0 +1,46 @@
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.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.insertFeatureFlagBooleanOverride
private const val EXTENSION_CLASS_DESCRIPTOR =
"Lapp/revanced/extension/youtube/patches/OpenVideosFullscreen;"
@Suppress("unused")
val openVideosFullscreenPatch = bytecodePatch(
name = "Open videos fullscreen",
description = "Adds an option to open videos in full screen portrait mode.",
) {
dependsOn(
sharedExtensionPatch,
settingsPatch,
addResourcesPatch,
)
compatibleWith(
"com.google.android.youtube"(
"19.46.42",
)
)
execute {
openVideosFullscreenPortraitFingerprint.method.insertFeatureFlagBooleanOverride(
OPEN_VIDEOS_FULLSCREEN_PORTRAIT_FEATURE_FLAG,
"$EXTENSION_CLASS_DESCRIPTOR->openVideoFullscreenPortrait(Z)Z"
)
// Add resources and setting last, in case the user force patches an old incompatible version.
addResources("youtube", "layout.player.fullscreen.openVideosFullscreen")
PreferenceScreen.PLAYER.addPreferences(
SwitchPreference("revanced_open_videos_fullscreen_portrait")
)
}
}

View File

@@ -24,6 +24,7 @@ import app.revanced.util.getReference
import app.revanced.util.indexOfFirstInstructionOrThrow
import app.revanced.util.indexOfFirstLiteralInstructionOrThrow
import app.revanced.util.inputStreamFromBundledResource
import app.revanced.util.insertFeatureFlagBooleanOverride
import com.android.tools.smali.dexlib2.Opcode
import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
import com.android.tools.smali.dexlib2.iface.instruction.TwoRegisterInstruction
@@ -228,19 +229,10 @@ val seekbarColorPatch = bytecodePatch(
// 19.25+ changes
playerSeekbarGradientConfigFingerprint.method.apply {
val literalIndex = indexOfFirstLiteralInstructionOrThrow(PLAYER_SEEKBAR_GRADIENT_FEATURE_FLAG)
val resultIndex = indexOfFirstInstructionOrThrow(literalIndex, Opcode.MOVE_RESULT)
val register = getInstruction<OneRegisterInstruction>(resultIndex).registerA
addInstructions(
resultIndex + 1,
"""
invoke-static { v$register }, $EXTENSION_CLASS_DESCRIPTOR->playerSeekbarGradientEnabled(Z)Z
move-result v$register
"""
)
}
playerSeekbarGradientConfigFingerprint.method.insertFeatureFlagBooleanOverride(
PLAYER_SEEKBAR_GRADIENT_FEATURE_FLAG,
"$EXTENSION_CLASS_DESCRIPTOR->playerSeekbarGradientEnabled(Z)Z"
)
lithoLinearGradientFingerprint.method.addInstruction(
0,
@@ -255,19 +247,10 @@ val seekbarColorPatch = bytecodePatch(
launchScreenLayoutTypeFingerprint,
mainActivityOnCreateFingerprint
).forEach { fingerprint ->
fingerprint.method.apply {
val literalIndex = indexOfFirstLiteralInstructionOrThrow(launchScreenLayoutTypeLotteFeatureFlag)
val resultIndex = indexOfFirstInstructionOrThrow(literalIndex, Opcode.MOVE_RESULT)
val register = getInstruction<OneRegisterInstruction>(resultIndex).registerA
addInstructions(
resultIndex + 1,
"""
invoke-static { v$register }, $EXTENSION_CLASS_DESCRIPTOR->useLotteLaunchSplashScreen(Z)Z
move-result v$register
"""
)
}
fingerprint.method.insertFeatureFlagBooleanOverride(
launchScreenLayoutTypeLotteFeatureFlag,
"$EXTENSION_CLASS_DESCRIPTOR->useLotteLaunchSplashScreen(Z)Z"
)
}
// Hook the splash animation drawable to set the a seekbar color theme.

View File

@@ -1,7 +1,6 @@
package app.revanced.patches.youtube.layout.theme
import app.revanced.patcher.extensions.InstructionExtensions.addInstructions
import app.revanced.patcher.extensions.InstructionExtensions.getInstruction
import app.revanced.patcher.patch.PatchException
import app.revanced.patcher.patch.bytecodePatch
import app.revanced.patcher.patch.resourcePatch
@@ -17,10 +16,7 @@ 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.forEachChildElement
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
import app.revanced.util.insertFeatureFlagBooleanOverride
import org.w3c.dom.Element
private const val EXTENSION_CLASS_DESCRIPTOR =
@@ -212,19 +208,10 @@ val themePatch = bytecodePatch(
SwitchPreference("revanced_gradient_loading_screen"),
)
useGradientLoadingScreenFingerprint.method.apply {
val literalIndex = indexOfFirstLiteralInstructionOrThrow(GRADIENT_LOADING_SCREEN_AB_CONSTANT)
val isEnabledIndex = indexOfFirstInstructionOrThrow(literalIndex, Opcode.MOVE_RESULT)
val isEnabledRegister = getInstruction<OneRegisterInstruction>(isEnabledIndex).registerA
addInstructions(
isEnabledIndex + 1,
"""
invoke-static { }, $EXTENSION_CLASS_DESCRIPTOR->gradientLoadingScreenEnabled()Z
move-result v$isEnabledRegister
""",
)
}
useGradientLoadingScreenFingerprint.method.insertFeatureFlagBooleanOverride(
GRADIENT_LOADING_SCREEN_AB_CONSTANT,
"$EXTENSION_CLASS_DESCRIPTOR->gradientLoadingScreenEnabled(Z)Z"
)
mapOf(
themeHelperLightColorFingerprint to lightThemeBackgroundColor,

View File

@@ -110,22 +110,22 @@ val enableDebuggingPatch = bytecodePatch(
"""
)
}
}
experimentalStringFeatureFlagFingerprint.match(
experimentalFeatureFlagParentFingerprint.originalClassDef
).method.apply {
val insertIndex = indexOfFirstInstructionReversedOrThrow(Opcode.MOVE_RESULT_OBJECT)
experimentalStringFeatureFlagFingerprint.match(
experimentalFeatureFlagParentFingerprint.originalClassDef
).method.apply {
val insertIndex = indexOfFirstInstructionReversedOrThrow(Opcode.MOVE_RESULT_OBJECT)
addInstructions(
insertIndex,
"""
move-result-object v0
invoke-static { v0, p1, p2, p3 }, $EXTENSION_CLASS_DESCRIPTOR->isStringFeatureFlagEnabled(Ljava/lang/String;JLjava/lang/String;)Ljava/lang/String;
move-result-object v0
return-object v0
"""
)
addInstructions(
insertIndex,
"""
move-result-object v0
invoke-static { v0, p1, p2, p3 }, $EXTENSION_CLASS_DESCRIPTOR->isStringFeatureFlagEnabled(Ljava/lang/String;JLjava/lang/String;)Ljava/lang/String;
move-result-object v0
return-object v0
"""
)
}
}
// There exists other experimental accessor methods for byte[]

View File

@@ -34,10 +34,7 @@ internal val disableCairoSettingsPatch = bytecodePatch(
* <a href="https://github.com/qnblackcat/uYouPlus/issues/1468">uYouPlus#1468</a>.
*/
cairoFragmentConfigFingerprint.method.apply {
val literalIndex = indexOfFirstLiteralInstructionOrThrow(
CAIRO_CONFIG_LITERAL_VALUE,
)
val literalIndex = indexOfFirstLiteralInstructionOrThrow(CAIRO_CONFIG_LITERAL_VALUE)
val resultIndex = indexOfFirstInstructionOrThrow(literalIndex, Opcode.MOVE_RESULT)
val register = getInstruction<OneRegisterInstruction>(resultIndex).registerA

View File

@@ -40,12 +40,16 @@ val spoofVideoStreamsPatch = spoofVideoStreamsPatch({
"revanced_spoof_video_streams_client",
summaryKey = null,
),
SwitchPreference(
"revanced_spoof_video_streams_ios_force_avc",
tag = "app.revanced.extension.youtube.settings.preference.ForceAVCSpoofingPreference",
ListPreference(
"revanced_spoof_video_streams_language",
summaryKey = null
),
SwitchPreference("revanced_spoof_video_streams_ios_force_avc"),
// Preference requires a title but the actual text is chosen at runtime.
NonInteractivePreference(
key = "revanced_spoof_video_streams_about_android_vr",
tag = "app.revanced.extension.youtube.settings.preference.SpoofStreamingDataSideEffectsPreference"
),
NonInteractivePreference("revanced_spoof_video_streams_about_android_vr"),
NonInteractivePreference("revanced_spoof_video_streams_about_ios"),
),
),
)

View File

@@ -1,82 +1,5 @@
package app.revanced.patches.youtube.misc.spoof
import app.revanced.patcher.extensions.InstructionExtensions.getInstruction
import app.revanced.patcher.extensions.InstructionExtensions.replaceInstruction
import app.revanced.patches.all.misc.transformation.IMethodCall
import app.revanced.patches.all.misc.transformation.filterMapInstruction35c
import app.revanced.patches.all.misc.transformation.transformInstructionsPatch
import app.revanced.util.getReference
import app.revanced.util.indexOfFirstInstruction
import com.android.tools.smali.dexlib2.Opcode
import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
import com.android.tools.smali.dexlib2.iface.reference.MethodReference
import com.android.tools.smali.dexlib2.iface.reference.StringReference
import app.revanced.patches.shared.misc.spoof.userAgentClientSpoofPatch
private const val ORIGINAL_PACKAGE_NAME = "com.google.android.youtube"
private const val USER_AGENT_STRING_BUILDER_APPEND_METHOD_REFERENCE =
"Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;"
val userAgentClientSpoofPatch = transformInstructionsPatch(
filterMap = { classDef, _, instruction, instructionIndex ->
filterMapInstruction35c<MethodCall>(
"Lapp/revanced/extension",
classDef,
instruction,
instructionIndex,
)
},
transform = transform@{ mutableMethod, entry ->
val (_, _, instructionIndex) = entry
// Replace the result of context.getPackageName(), if it is used in a user agent string.
mutableMethod.apply {
// After context.getPackageName() the result is moved to a register.
val targetRegister = (
getInstruction(instructionIndex + 1)
as? OneRegisterInstruction ?: return@transform
).registerA
// IndexOutOfBoundsException is technically possible here,
// but no such occurrences are present in the app.
val referee = getInstruction(instructionIndex + 2).getReference<MethodReference>()?.toString()
// Only replace string builder usage.
if (referee != USER_AGENT_STRING_BUILDER_APPEND_METHOD_REFERENCE) {
return@transform
}
// Do not change the package name in methods that use resources, or for methods that use GmsCore.
// Changing these package names will result in playback limitations,
// particularly Android VR background audio only playback.
val resourceOrGmsStringInstructionIndex = indexOfFirstInstruction {
val reference = getReference<StringReference>()
opcode == Opcode.CONST_STRING &&
(reference?.string == "android.resource://" || reference?.string == "gcore_")
}
if (resourceOrGmsStringInstructionIndex >= 0) {
return@transform
}
// Overwrite the result of context.getPackageName() with the original package name.
replaceInstruction(
instructionIndex + 1,
"const-string v$targetRegister, \"$ORIGINAL_PACKAGE_NAME\"",
)
}
},
)
@Suppress("unused")
private enum class MethodCall(
override val definedClassName: String,
override val methodName: String,
override val methodParams: Array<String>,
override val returnType: String,
) : IMethodCall {
GetPackageName(
"Landroid/content/Context;",
"getPackageName",
emptyArray(),
"Ljava/lang/String;",
),
}
val userAgentClientSpoofPatch = userAgentClientSpoofPatch("com.google.android.youtube")

View File

@@ -0,0 +1,23 @@
package app.revanced.patches.youtube.video.audio
import app.revanced.patcher.fingerprint
import com.android.tools.smali.dexlib2.AccessFlags
internal val streamingModelBuilderFingerprint = fingerprint {
accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL)
returns("L")
strings("vprng")
}
internal val menuItemAudioTrackFingerprint = fingerprint {
accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL)
parameters("L")
returns("V")
strings("menu_item_audio_track")
}
internal val audioStreamingTypeSelector = fingerprint {
accessFlags(AccessFlags.PRIVATE, AccessFlags.FINAL)
returns("L")
strings("raw") // String is not unique
}

View File

@@ -0,0 +1,159 @@
package app.revanced.patches.youtube.video.audio
import app.revanced.patcher.extensions.InstructionExtensions.addInstructions
import app.revanced.patcher.extensions.InstructionExtensions.addInstructionsWithLabels
import app.revanced.patcher.extensions.InstructionExtensions.getInstruction
import app.revanced.patcher.patch.bytecodePatch
import app.revanced.patcher.util.proxy.mutableTypes.MutableField.Companion.toMutable
import app.revanced.patcher.util.proxy.mutableTypes.MutableMethod
import app.revanced.patcher.util.proxy.mutableTypes.MutableMethod.Companion.toMutable
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.AccessFlags
import com.android.tools.smali.dexlib2.Opcode
import com.android.tools.smali.dexlib2.builder.MutableMethodImplementation
import com.android.tools.smali.dexlib2.iface.Method
import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
import com.android.tools.smali.dexlib2.iface.reference.MethodReference
import com.android.tools.smali.dexlib2.immutable.ImmutableField
import com.android.tools.smali.dexlib2.immutable.ImmutableMethod
import com.android.tools.smali.dexlib2.immutable.ImmutableMethodParameter
private const val EXTENSION_CLASS_DESCRIPTOR =
"Lapp/revanced/extension/youtube/patches/ForceOriginalAudioPatch;"
@Suppress("unused")
val forceOriginalAudioPatch = bytecodePatch(
name = "Force original audio",
description = "Adds an option to always use the original audio track.",
) {
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",
),
)
execute {
addResources("youtube", "video.audio.forceOriginalAudioPatch")
PreferenceScreen.VIDEO.addPreferences(
SwitchPreference("revanced_force_original_audio")
)
fun Method.firstFormatStreamingModelCall(
returnType: String = "Ljava/lang/String;"
): MutableMethod {
val audioTrackIdIndex = indexOfFirstInstructionOrThrow {
val reference = getReference<MethodReference>()
reference?.definingClass == "Lcom/google/android/libraries/youtube/innertube/model/media/FormatStreamModel;"
&& reference.returnType == returnType
}
return navigate(this).to(audioTrackIdIndex).stop()
}
// Accessor methods of FormatStreamModel have no string constants and
// opcodes are identical to other methods in the same class,
// so must walk from another class that use the methods.
val isDefaultMethod = streamingModelBuilderFingerprint.originalMethod.firstFormatStreamingModelCall("Z")
val audioTrackIdMethod = menuItemAudioTrackFingerprint.originalMethod.firstFormatStreamingModelCall()
val audioTrackDisplayNameMethod = audioStreamingTypeSelector.originalMethod.firstFormatStreamingModelCall()
val formatStreamModelClass = proxy(classes.first {
it.type == audioTrackIdMethod.definingClass
}).mutableClass
formatStreamModelClass.apply {
// Add a new field to store the override.
val helperFieldName = "isDefaultAudioTrackOverride"
fields.add(
ImmutableField(
type,
helperFieldName,
"Ljava/lang/Boolean;",
// Boolean is a 100% immutable class (all fields are final)
// and safe to write to a shared field without volatile/synchronization,
// but without volatile the field can show stale data
// and the same field is calculated more than once by different threads.
AccessFlags.PRIVATE.value or AccessFlags.VOLATILE.value,
null,
null,
null
).toMutable()
)
// Add a helper method because the isDefaultAudioTrack() has only 2 registers and 3 are needed.
val helperMethodClass = type
val helperMethodName = "extension_isDefaultAudioTrack"
val helperMethod = ImmutableMethod(
helperMethodClass,
helperMethodName,
listOf(ImmutableMethodParameter("Z", null, null)),
"Z",
AccessFlags.PRIVATE.value,
null,
null,
MutableMethodImplementation(6),
).toMutable().apply {
addInstructionsWithLabels(
0,
"""
iget-object v0, p0, $helperMethodClass->$helperFieldName:Ljava/lang/Boolean;
if-eqz v0, :call_extension
invoke-virtual { v0 }, Ljava/lang/Boolean;->booleanValue()Z
move-result v3
return v3
:call_extension
invoke-virtual { p0 }, $audioTrackIdMethod
move-result-object v1
invoke-virtual { p0 }, $audioTrackDisplayNameMethod
move-result-object v2
invoke-static { p1, v1, v2 }, $EXTENSION_CLASS_DESCRIPTOR->isDefaultAudioStream(ZLjava/lang/String;Ljava/lang/String;)Z
move-result v3
invoke-static { v3 }, Ljava/lang/Boolean;->valueOf(Z)Ljava/lang/Boolean;
move-result-object v0
iput-object v0, p0, $helperMethodClass->$helperFieldName:Ljava/lang/Boolean;
return v3
"""
)
}
methods.add(helperMethod)
// Modify isDefaultAudioTrack() to call extension helper method.
isDefaultMethod.apply {
val index = indexOfFirstInstructionOrThrow(Opcode.RETURN)
val register = getInstruction<OneRegisterInstruction>(index).registerA
addInstructions(
index,
"""
invoke-direct { p0, v$register }, $helperMethodClass->$helperMethodName(Z)Z
move-result v$register
"""
)
}
}
}
}

View File

@@ -17,6 +17,7 @@ import app.revanced.patches.shared.misc.mapping.resourceMappings
import com.android.tools.smali.dexlib2.Opcode
import com.android.tools.smali.dexlib2.iface.Method
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.instruction.WideLiteralInstruction
import com.android.tools.smali.dexlib2.iface.reference.Reference
@@ -402,6 +403,20 @@ fun Method.findInstructionIndicesReversedOrThrow(opcode: Opcode): List<Int> {
return instructions
}
internal fun MutableMethod.insertFeatureFlagBooleanOverride(literal: Long, extensionsMethod: String) {
val literalIndex = indexOfFirstLiteralInstructionOrThrow(literal)
val index = indexOfFirstInstructionOrThrow(literalIndex, Opcode.MOVE_RESULT)
val register = getInstruction<OneRegisterInstruction>(index).registerA
addInstructions(
index + 1,
"""
invoke-static { v$register }, $extensionsMethod
move-result v$register
"""
)
}
/**
* Called for _all_ instructions with the given literal value.
*/

View File

@@ -1,8 +1,8 @@
package app.revanced.util.resource
import app.revanced.patcher.patch.PatchException
import org.w3c.dom.Document
import org.w3c.dom.Node
import java.util.logging.Logger
/**
* A string value.
@@ -19,13 +19,36 @@ class StringResource(
) : BaseResource(name, "string") {
override fun serialize(ownerDocument: Document, resourceCallback: (BaseResource) -> Unit) =
super.serialize(ownerDocument, resourceCallback).apply {
fun String.validateAndroidStringEscaping() : String {
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;
}
} 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(
"String $name is not raw but contains encoded new line characters: $value")
}
if (!value.contains(Regex("(?<!\\\\)['\"]"))) {
return this;
}
}
Logger.getLogger(StringResource.javaClass.name).severe(
"String $name cannot contain unescaped quotes in value: $value")
return this;
}
// if the string is un-formatted, explicitly add the formatted attribute
if (!formatted) setAttribute("formatted", "false")
if (value.contains(Regex("(?<!\\\\)['\"]")))
throw PatchException("String $name cannot contain unescaped quotes in value \"$value\".")
textContent = value
textContent = value.validateAndroidStringEscaping();
}
companion object {

View File

@@ -1,34 +1,23 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Note: All strings must have a unique path, even if the same string is declared in two different apps.
This is because Crowdin requires temporarily flattening this file and removing the <app> and <patch> elements.
All strings must have a unique path, even if the same string is declared in two different apps.
This is because Crowdin requires temporarily flattening this file and removing the <app> and <patch> elements.
# General guidelines and information for translating
## Strings parameters can be reordered to allow more flexible translations if the grammar should be changed.
Strings with new lines must be raw strings where they're wrapped in quotes and new lines are not encoded.
Raw strings still requires escaping embedded double quotes but escaping embedded single quotes is optional.
For example, the patches string:
<string name="revanced_patches_string">You will arrive at %1$s in %2$s hours from now</string>
Could be translated to another language using a rearranged grammar:
<string name="revanced_patches_string">You will arrive %2$s hours from now at %1$s</string>
Raw strings are required because Crowdin AI translations regularly gets confused and
replace \n with an encoded new line character.
For Manager strings:
You will arrive at ${destination} in ${count} hours from now
Could be rearranged by changing the order of the ${} parameters:
You will arrive ${count} hours from now at ${destination}
Bad:
<string name="summary_key">First \'item\' text\nSecond \"item\" text</string>
Reordering is particularly relevant when translating into right to left languages, or for any language with grammar that is noticeably different from English.
Good:
<string name="summary_key">"First 'item' text
Second \"item\" text"</string>
## Single and double quotation marks must be escaped for patch strings (Manager does not require escaping any quotes).
All _patches_ single and double quotation marks must be escaped as \" or \'
Forgetting to do this will cause that string to appear in app with no quotation characters.
Correct:
<string name="revanced_string">You\'re correct. This is the \"correct\" way and this text will appear as expected in the app</string>
Not correct:
<string name="revanced_string">You're not correct. This is not the "correct" way and this text will not appear as expected the in app</string>
-->
<resources>
<app id="shared">
@@ -147,6 +136,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
</patch>
<patch id="layout.panels.popup.playerPopupPanelsPatch">
</patch>
<patch id="layout.player.fullscreen.openVideosFullscreen">
</patch>
<patch id="layout.player.overlay.customPlayerOverlayOpacityResourcePatch">
</patch>
<patch id="layout.returnyoutubedislike.returnYouTubeDislikePatch">

View File

@@ -1,34 +1,23 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Note: All strings must have a unique path, even if the same string is declared in two different apps.
This is because Crowdin requires temporarily flattening this file and removing the <app> and <patch> elements.
All strings must have a unique path, even if the same string is declared in two different apps.
This is because Crowdin requires temporarily flattening this file and removing the <app> and <patch> elements.
# General guidelines and information for translating
## Strings parameters can be reordered to allow more flexible translations if the grammar should be changed.
Strings with new lines must be raw strings where they're wrapped in quotes and new lines are not encoded.
Raw strings still requires escaping embedded double quotes but escaping embedded single quotes is optional.
For example, the patches string:
<string name="revanced_patches_string">You will arrive at %1$s in %2$s hours from now</string>
Could be translated to another language using a rearranged grammar:
<string name="revanced_patches_string">You will arrive %2$s hours from now at %1$s</string>
Raw strings are required because Crowdin AI translations regularly gets confused and
replace \n with an encoded new line character.
For Manager strings:
You will arrive at ${destination} in ${count} hours from now
Could be rearranged by changing the order of the ${} parameters:
You will arrive ${count} hours from now at ${destination}
Bad:
<string name="summary_key">First \'item\' text\nSecond \"item\" text</string>
Reordering is particularly relevant when translating into right to left languages, or for any language with grammar that is noticeably different from English.
Good:
<string name="summary_key">"First 'item' text
Second \"item\" text"</string>
## Single and double quotation marks must be escaped for patch strings (Manager does not require escaping any quotes).
All _patches_ single and double quotation marks must be escaped as \" or \'
Forgetting to do this will cause that string to appear in app with no quotation characters.
Correct:
<string name="revanced_string">You\'re correct. This is the \"correct\" way and this text will appear as expected in the app</string>
Not correct:
<string name="revanced_string">You're not correct. This is not the "correct" way and this text will not appear as expected the in app</string>
-->
<resources>
<app id="shared">
@@ -147,6 +136,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
</patch>
<patch id="layout.panels.popup.playerPopupPanelsPatch">
</patch>
<patch id="layout.player.fullscreen.openVideosFullscreen">
</patch>
<patch id="layout.player.overlay.customPlayerOverlayOpacityResourcePatch">
</patch>
<patch id="layout.returnyoutubedislike.returnYouTubeDislikePatch">

View File

@@ -1,34 +1,23 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Note: All strings must have a unique path, even if the same string is declared in two different apps.
This is because Crowdin requires temporarily flattening this file and removing the <app> and <patch> elements.
All strings must have a unique path, even if the same string is declared in two different apps.
This is because Crowdin requires temporarily flattening this file and removing the <app> and <patch> elements.
# General guidelines and information for translating
## Strings parameters can be reordered to allow more flexible translations if the grammar should be changed.
Strings with new lines must be raw strings where they're wrapped in quotes and new lines are not encoded.
Raw strings still requires escaping embedded double quotes but escaping embedded single quotes is optional.
For example, the patches string:
<string name="revanced_patches_string">You will arrive at %1$s in %2$s hours from now</string>
Could be translated to another language using a rearranged grammar:
<string name="revanced_patches_string">You will arrive %2$s hours from now at %1$s</string>
Raw strings are required because Crowdin AI translations regularly gets confused and
replace \n with an encoded new line character.
For Manager strings:
You will arrive at ${destination} in ${count} hours from now
Could be rearranged by changing the order of the ${} parameters:
You will arrive ${count} hours from now at ${destination}
Bad:
<string name="summary_key">First \'item\' text\nSecond \"item\" text</string>
Reordering is particularly relevant when translating into right to left languages, or for any language with grammar that is noticeably different from English.
Good:
<string name="summary_key">"First 'item' text
Second \"item\" text"</string>
## Single and double quotation marks must be escaped for patch strings (Manager does not require escaping any quotes).
All _patches_ single and double quotation marks must be escaped as \" or \'
Forgetting to do this will cause that string to appear in app with no quotation characters.
Correct:
<string name="revanced_string">You\'re correct. This is the \"correct\" way and this text will appear as expected in the app</string>
Not correct:
<string name="revanced_string">You're not correct. This is not the "correct" way and this text will not appear as expected the in app</string>
-->
<resources>
<app id="shared">
@@ -58,18 +47,26 @@ This is because Crowdin requires temporarily flattening this file and removing t
<!-- Settings about dialog. -->
<string name="revanced_settings_about_links_body">أنت تستخدم إصدار ReVanced Patches &lt;i&gt;%s&lt;/i&gt;</string>
<string name="revanced_settings_about_links_dev_header">ملاحظة</string>
<string name="revanced_settings_about_links_dev_body">هذا الإصدار هو إصدار مسبق، وقد تواجه مشاكل غير متوقعة</string>
<string name="revanced_settings_about_links_dev_body">هذه النسخة هي إصدار مسبق وقد تواجه مشكلات غير متوقعة</string>
<string name="revanced_settings_about_links_header">الروابط الرسمية</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 . قم بتثبيته.</string>
<string name="gms_core_toast_not_installed_message">لم يتم تثبيت MicroG GmsCore. قم بتثبيته.</string>
<string name="gms_core_dialog_title">الإجراء مطلوب</string>
<string name="gms_core_dialog_not_whitelisted_not_allowed_in_background_message">لا يملك MicroG GmsCore الصلاحية للتشغيل في الخلفية.\n\nاتبع دليل \"لا تقتل تطبيقي\" للهاتف الخاص بك، وقم بتطبيق الإرشادات على تثبيت المايكروج.\n\nهذا مطلوب لكي يعمل التطبيق.</string>
<string name="gms_core_dialog_not_whitelisted_not_allowed_in_background_message">"لا يملك MicroG GmsCore صلاحية التشغيل في الخلفية.
اتبع دليل \"لا تقتل تطبيقي\" لهاتفك، وطبّق التعليمات لتثبيت MicroG.
هذا مطلوب لعمل التطبيق."</string>
<string name="gms_core_dialog_open_website_text">فتح الموقع</string>
<string name="gms_core_dialog_not_whitelisted_using_battery_optimizations_message">يجب تعطيل تحسينات بطارية MicroG GmsCore لمنع حدوث مشكلات.\n\nاضغط على زر المتابعة وقم بتعطيل تحسينات البطارية.</string>
<string name="gms_core_dialog_not_whitelisted_using_battery_optimizations_message">"يجب تعطيل تحسينات بطارية MicroG GmsCore لمنع حدوث مشكلات.
لن يؤثر تعطيل تحسينات البطارية لـ MicroG سلبًا على استخدام البطارية.
انقر فوق زر الاستمرار واسمح بتغييرات التحسين."</string>
<string name="gms_core_dialog_continue_text">متابعة</string>
</patch>
</app>
@@ -106,7 +103,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_debug_toast_on_error_title">عرض ملاحظة عند وجود خطأ في ReVanced</string>
<string name="revanced_debug_toast_on_error_summary_on">يتم عرض ملاحظة في حالة حدوث خطأ</string>
<string name="revanced_debug_toast_on_error_summary_off">لا يتم عرض ملاحظة في حالة حدوث خطأ</string>
<string name="revanced_debug_toast_on_error_user_dialog_message">يؤدي إيقاف تشغيل ملاحظات الأخطاء إلى إخفاء كافة إشعارات خطأ ReVanced.\n\nلن يتم إعلامك بأي أخطاء غير متوقعة.</string>
<string name="revanced_debug_toast_on_error_user_dialog_message">"يؤدي إيقاف تشغيل ملاحظات الأخطاء إلى إخفاء كافة إشعارات أخطاء ReVanced.
لن يتم إعلامك بأي أخطاء غير متوقعة."</string>
</patch>
<patch id="layout.hide.general.hideLayoutComponentsPatch">
<string name="revanced_disable_like_subscribe_glow_title">تعطيل توهج زر أعجبني / اشتراك</string>
@@ -125,7 +124,12 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_channel_watermark_summary_on">تم إخفاء علامة الفيديو المائية</string>
<string name="revanced_hide_channel_watermark_summary_off">يتم عرض علامة الفيديو المائية</string>
<string name="revanced_hide_horizontal_shelves_title">إخفاء الرفوف الأفقية</string>
<string name="revanced_hide_horizontal_shelves_summary_on">تكون الرفوف مخفية مثل:\n• الأخبار العاجلة\n• متابعة المشاهدة\n• استكشاف المزيد من القنوات\n• التسوق\n• مشاهدة مرة أخرى</string>
<string name="revanced_hide_horizontal_shelves_summary_on">"تكون الرفوف مخفية مثل:
• الأخبار العاجلة
• متابعة المشاهدة
• استكشاف المزيد من القنوات
• التسوق
• مشاهدة مرة أخرى"</string>
<string name="revanced_hide_horizontal_shelves_summary_off">يتم عرض الرفوف</string>
<!-- 'Join' should be translated using the same localized wording YouTube displays.
This appears in the video player for certain videos. -->
@@ -226,8 +230,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_chapters_section_summary_on">تم إخفاء قسم الفصول</string>
<string name="revanced_hide_chapters_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>
<string name="revanced_hide_podcast_section_summary_on">تم إخفاء قسم \"استكشاف البودكاست\"</string>
<string name="revanced_hide_podcast_section_summary_off">يتم عرض قسم \"استكشاف البودكاست\"</string>
<string name="revanced_hide_info_cards_section_title">إخفاء قسم بطاقات المعلومات</string>
<string name="revanced_hide_info_cards_section_summary_on">تم إخفاء قسم بطاقات المعلومات</string>
<string name="revanced_hide_info_cards_section_summary_off">يتم عرض قسم بطاقات المعلومات</string>
@@ -252,6 +256,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_filter_bar_feed_in_related_videos_summary_off">يعرض في الفيديوهات ذات الصلة</string>
<string name="revanced_comments_screen_title">التعليقات</string>
<string name="revanced_comments_screen_summary">إخفاء أو عرض مكونات قسم التعليقات</string>
<string name="revanced_hide_comments_chat_summary_title">إخفاء \"ملخص الدردشة\" </string>
<string name="revanced_hide_comments_chat_summary_summary_on">تم إخفاء “ملخص الدردشة”</string>
<string name="revanced_hide_comments_chat_summary_summary_off">يتم عرض “ملخص الدردشة”</string>
<string name="revanced_hide_comments_by_members_header_title">إخفاء رأس \'تعليقات الأعضاء\'</string>
<string name="revanced_hide_comments_by_members_header_summary_on">تم إخفاء رأس \'تعليقات الأعضاء\'</string>
<string name="revanced_hide_comments_by_members_header_summary_off">يتم عرض رأس \'تعليقات الأعضاء\'</string>
@@ -274,7 +281,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_doodles_title">إخفاء رسومات YouTube</string>
<string name="revanced_hide_doodles_summary_on">تم إخفاء رسومات شريط البحث</string>
<string name="revanced_hide_doodles_summary_off">يتم عرض رسومات شريط البحث</string>
<string name="revanced_hide_doodles_user_dialog_message">تظهر رسومات YouTube Doodles لعدة أيام كل عام.\n\nإذا كانت الرسومات تظهر حاليًا في منطقتك وإعداد الإخفاء هذا قيد التشغيل، سيتم أيضًا إخفاء شريط الفلتر أسفل شريط البحث.</string>
<string name="revanced_hide_doodles_user_dialog_message">"تظهر \"\"Doodles\"\" على YouTube بضعة أيام كل عام.
إذا كان يتم عرض \"Doodle\" حاليًا في منطقتك وإذا كان إعداد الإخفاء هذا قيد التشغيل، فسيتم أيضًا إخفاء شريط التصفية أسفل شريط البحث."</string>
<string name="revanced_custom_filter_screen_title">فلتر مخصص</string>
<string name="revanced_custom_filter_screen_summary">إخفاء المكونات باستخدام فلاتر مخصصة</string>
<string name="revanced_custom_filter_title">تمكين الفلتر المخصص</string>
@@ -298,9 +307,18 @@ This is because Crowdin requires temporarily flattening this file and removing t
<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. -->
<string name="revanced_hide_keyword_content_phrases_summary">الكلمات والعبارات الرئيسية التي يجب إخفاؤها، مفصولة بسطر جديد\n\nالكلمات الرئيسية يمكن أن تكون أسماء قنوات أو أي نص يظهر في عناوين الفيديو\n\nيجب إدخال الكلمات التي تحتوي على أحرف كبيرة في الوسط بإستخدام الأحرف الكبيرة (مثال: iPhone، TikTok، LeBlanc)</string>
<string name="revanced_hide_keyword_content_phrases_summary">"الكلمات والعبارات التي تريد إخفاءها، مفصولة بسطور جديدة
يمكن أن تكون الكلمات عبارة عن أسماء قنوات أو أي نص يظهر في عناوين الفيديوهات
يجب إدخال الكلمات التي تحتوي على أحرف كبيرة في المنتصف بنفس الحالة (على سبيل المثال: iPhone, TikTok, LeBlanc)"</string>
<string name="revanced_hide_keyword_content_about_title">حول تصفية الكلمات المفتاحية</string>
<string name="revanced_hide_keyword_content_about_summary">الصفحة الرئيسية/الاشتراكات/نتائج الإشتراك/يتم تصفية نتائج البحث لإخفاء المحتوى الذي يتطابق مع عبارات الكلمات الرئيسية\n\nالقيود\n• لا يمكن إخفاء فيديوهات Shorts بواسطة اسم القناة\n• قد لا تكون بعض مكونات واجهة المستخدم مخفية\n• قد لا تظهر نتائج بحث عن كلمة رئيسية</string>
<string name="revanced_hide_keyword_content_about_summary">"الصفحة الرئيسية/الاشتراكات/نتائج البحث يتم تصفيتها لإخفاء المحتوى الذي يتطابق مع كلمات البحث
القيود
• فيديوهات Shorts لا يمكن إخفاؤها بواسطة اسم القناة
• قد لا يتم إخفاء بعض مكونات واجهة المستخدم
• البحث عن كلمة ما قد لا يعطي نتائج"</string>
<string name="revanced_hide_keyword_content_about_whole_words_title">مطابقة الكلمات بأكملها</string>
<!-- Translations _must_ use a localized example. For languages that do not use spaces between words (Chinese, Japanese, etc) the English AI example should be used since no localized examples exist. Or if using machine translations, or if nobody wants to think of a localized example, then the English 'ai' example should be left as-is. -->
<string name="revanced_hide_keyword_content_about_whole_words_summary">سيؤدي وضع علامة اقتباس مزدوجة حول كلمة رئيسية/عبارة إلى منع التطابقات الجزئية لعناوين الفيديو وأسماء القنوات.&lt;br&gt;&lt;br&gt;على سبيل المثال،&lt;br&gt;&lt;b&gt;\"ai\"&lt;/b&gt; سيخفي الفيديو: &lt;b&gt;How does AI work?&lt;/b&gt;&lt;br&gt;ولكن لن يخفي: &lt;b&gt;What does fair use mean?&lt;/b&gt;</string>
@@ -316,7 +334,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_general_ads_summary_on">تم إخفاء الإعلانات بشكل عام</string>
<string name="revanced_hide_general_ads_summary_off">يتم عرض الإعلانات العامة</string>
<string name="revanced_hide_fullscreen_ads_title">إخفاء إعلانات ملء الشاشة</string>
<string name="revanced_hide_fullscreen_ads_summary_on">يتم إخفاء إعلانات ملء الشاشة\n\nهذه الميزة متوفرة فقط للأجهزة القديمة</string>
<string name="revanced_hide_fullscreen_ads_summary_on">"يتم إخفاء إعلانات ملء الشاشة
هذه الميزة متاحة فقط للأجهزة القديمة"</string>
<string name="revanced_hide_fullscreen_ads_summary_off">يتم عرض إعلانات ملء الشاشة</string>
<string name="revanced_hide_buttoned_ads_title">إخفاء الإعلانات الزرية</string>
<string name="revanced_hide_buttoned_ads_summary_on">تم إخفاء الإعلانات الزرية</string>
@@ -416,7 +436,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_swipe_save_and_restore_brightness_summary_on">حفظ واستعادة السطوع عند الخروج أو الدخول إلى وضع ملء الشاشة</string>
<string name="revanced_swipe_save_and_restore_brightness_summary_off">لا تقم بحفظ السطوع واستعادته عند الخروج أو الدخول إلى وضع ملء الشاشة</string>
<string name="revanced_swipe_lowest_value_enable_auto_brightness_title">تمكين إيماءة السطوع التلقائي</string>
<string name="revanced_swipe_lowest_value_enable_auto_brightness_summary_on">يؤدي التمرير لأسفل إلى أدنى قيمة لإيماءة السطوع إلى تمكين السطوع التلقائي</string>
<string name="revanced_swipe_lowest_value_enable_auto_brightness_summary_on">التمرير لأسفل إلى أدنى قيمة للسطوع يمكّن السطوع التلقائي</string>
<string name="revanced_swipe_lowest_value_enable_auto_brightness_summary_off">لا يؤدي التمرير لأسفل إلى أدنى قيمة إلى تمكين السطوع التلقائي</string>
<string name="revanced_swipe_lowest_value_enable_auto_brightness_overlay_text">تلقائي</string>
<string name="revanced_swipe_overlay_timeout_title">مهلة واجهة التمرير</string>
@@ -435,7 +455,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
</patch>
<patch id="layout.buttons.action.hideButtonsPatch">
<string name="revanced_hide_buttons_screen_title">أزرار الإجراء</string>
<string name="revanced_hide_buttons_screen_summary">إخفاء أو عرض الأزرار تحت مقاطع الفيديو</string>
<string name="revanced_hide_buttons_screen_summary">إخفاء أو عرض الأزرار تحت الفيديوهات</string>
<string name="revanced_hide_like_dislike_button_title">إخفاء أعجبني ولم يعجبني</string>
<string name="revanced_hide_like_dislike_button_summary_on">تم إخفاء أزرار أعجبني ولم يعجبني</string>
<string name="revanced_hide_like_dislike_button_summary_off">يتم عرض أزرار أعجبني ولم يعجبني</string>
@@ -490,7 +510,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_subscriptions_button_summary_off">يتم عرض زر الاشتراكات</string>
<!-- 'Notifications' should be translated using the same localized wording YouTube displays the tab. -->
<string name="revanced_switch_create_with_notifications_button_title">تبديل الإنشاء مع الإشعارات</string>
<string name="revanced_switch_create_with_notifications_button_summary_on">تم تبديل زر الإنشاء بـزر الإشعارات\n\nملاحظة: يؤدي تمكين هذا أيضًا إلى إخفاء إعلانات الفيديو بالقوة</string>
<string name="revanced_switch_create_with_notifications_button_summary_on">"تم تبديل زر الإنشاء بـزر الإشعارات
ملاحظة: يؤدي تمكين هذا أيضًا إلى إخفاء إعلانات الفيديو بالقوة"</string>
<string name="revanced_switch_create_with_notifications_button_summary_off">لا يتم تبديل زر الإنشاء بزر الإشعارات</string>
<string name="revanced_hide_navigation_button_labels_title">إخفاء تسميات زر التنقل</string>
<string name="revanced_hide_navigation_button_labels_summary_on">تم إخفاء التسميات</string>
@@ -617,8 +639,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
<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_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_summary_on">تم إخفاء زر المتجر</string>
<string name="revanced_hide_shorts_shop_button_summary_off">يتم عرض زر المتجر</string>
@@ -652,9 +674,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
<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_summary_on">تم إخفاء تأثير النافورة لـزر أعجبني</string>
<string name="revanced_hide_shorts_like_fountain_summary_off">يتم عرض تأثير النافورة لـزر أعجبني</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_summary_on">تم إخفاء زر أعجبني</string>
<string name="revanced_hide_shorts_like_button_summary_off">يتم عرض زر أعجبني</string>
@@ -683,7 +705,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_shorts_video_title_summary_off">يتم عرض العنوان</string>
<string name="revanced_hide_shorts_sound_metadata_label_title">إخفاء تسمية بيانات التعريف الصوتية</string>
<string name="revanced_hide_shorts_sound_metadata_label_summary_on">تم إخفاء تسمية بيانات التعريف</string>
<string name="revanced_hide_shorts_sound_metadata_label_summary_off">يتم عرض تسمية البيانات الوصفية</string>
<string name="revanced_hide_shorts_sound_metadata_label_summary_off">يتم عرض تسمية بيانات التعريف</string>
<string name="revanced_hide_shorts_full_video_link_label_title">إخفاء تسمية رابط الفيديو الكامل</string>
<string name="revanced_hide_shorts_full_video_link_label_summary_on">تم إخفاء تسمية رابط الفيديو</string>
<string name="revanced_hide_shorts_full_video_link_label_summary_off">يتم عرض تسمية رابط الفيديو</string>
@@ -709,8 +731,13 @@ This is because Crowdin requires temporarily flattening this file and removing t
<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.openVideosFullscreen">
<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>
<patch id="layout.player.overlay.customPlayerOverlayOpacityResourcePatch">
<string name="revanced_player_overlay_opacity_title">شفافية تراكب المشغل</string>
<string name="revanced_player_overlay_opacity_title">شفافية واجهة المشغل</string>
<string name="revanced_player_overlay_opacity_summary">قيمة الشفافية بين 0-100، حيث يكون 0 شفاف</string>
<string name="revanced_player_overlay_opacity_invalid_toast">شفافية واجهة المشغل يجب أن تكون بين 0-100</string>
</patch>
@@ -726,7 +753,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
<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_summary_on_disclaimer">إبداءات لم يعجبني التي تظهر على فيديوهات Shorts\n\nالتقييد: قد لا تظهر إبداءات لم يعجبني في وضع التصفح المتخفي</string>
<string name="revanced_ryd_shorts_summary_on_disclaimer">"إبداءات لم يعجبني التي تظهر على فيديوهات 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>
@@ -751,7 +780,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_ryd_statistics_getFetchCallCount_zero_summary">لم يتم إجراء اتصالات الشبكة</string>
<string name="revanced_ryd_statistics_getFetchCallCount_non_zero_summary">%d اتصالات شبكية أجريت</string>
<string name="revanced_ryd_statistics_getFetchCallNumberOfFailures_title">API جلب الأصوات، عدد المهلات</string>
<string name="revanced_ryd_statistics_getFetchCallNumberOfFailures_zero_summary">لم تنتهي مهلة المكالمات الشبكية</string>
<string name="revanced_ryd_statistics_getFetchCallNumberOfFailures_zero_summary">لم تنتهي مهلة الاتصالات الشبكية</string>
<string name="revanced_ryd_statistics_getFetchCallNumberOfFailures_non_zero_summary">اتصالات شبكية انتهت مهلتها %d</string>
<string name="revanced_ryd_statistics_getNumberOfRateLimitRequestsEncountered_title">حدود معدل عميل API</string>
<string name="revanced_ryd_statistics_getNumberOfRateLimitRequestsEncountered_zero_summary">لا توجد حدود لمعدل العميل</string>
@@ -769,13 +798,17 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_seekbar_thumbnails_high_quality_summary_off">مصغرات شريط التقدم متوسطة الجودة</string>
<string name="revanced_seekbar_thumbnails_high_quality_legacy_summary_on">مصغرات شريط التقدم بملء الشاشة عالية الجودة</string>
<string name="revanced_seekbar_thumbnails_high_quality_legacy_summary_off">مصغرات شريط التقدم بملء الشاشة متوسطة الجودة</string>
<string name="revanced_seekbar_thumbnails_high_quality_dialog_message">سيؤدي هذا أيضا إلى استعادة المصغرات على البث المباشر الذي لا يحتوي على مصغرات شريط التقدم.\n\nمصغرات شريط التقدم سوف تستخدم نفس جودة الفيديو الحالي.\n\nتعمل هذه الميزة بشكل أفضل مع جودة فيديو 720p أو أقل وعند استخدام اتصال إنترنت سريع جداً.</string>
<string name="revanced_restore_old_seekbar_thumbnails_title">استعادة مصغرات شريط التقدم القديم</string>
<string name="revanced_seekbar_thumbnails_high_quality_dialog_message">"سيؤدي هذا أيضا إلى استعادة المصغرات على البث المباشر الذي لا يحتوي على مصغرات شريط التقدم.
مصغرات شريط التقدم سوف تستخدم نفس جودة الفيديو الحالي.
تعمل هذه الميزة بشكل أفضل مع جودة فيديو 720p أو أقل وعند استخدام اتصال إنترنت سريع جداً."</string>
<string name="revanced_restore_old_seekbar_thumbnails_title">استعادة مصغرات شريط التقدم القديمة</string>
<string name="revanced_restore_old_seekbar_thumbnails_summary_on">مصغرات شريط التقدم ستظهر فوق شريط تقدم الفيديو</string>
<string name="revanced_restore_old_seekbar_thumbnails_summary_off">مصغرات شريط التقدم ستظهر في ملء الشاشة</string>
</patch>
<patch id="layout.sponsorblock.sponsorBlockResourcePatch">
<string name="revanced_sb_enable_sb">تمكين مانِع الرُعَاة SponsorBlock</string>
<string name="revanced_sb_enable_sb">تمكين SponsorBlock</string>
<string name="revanced_sb_enable_sb_sum">مانِع الرُعَاة هو نظام جماعي لتخطي الأجزاء المُمِلَّة في مقاطع YouTube</string>
<string name="revanced_sb_appearance_category">المظهر</string>
<string name="revanced_sb_enable_voting">عرض زر التصويت</string>
@@ -832,12 +865,15 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_sb_settings_import_successful">تم استيراد الإعدادات بنجاح</string>
<string name="revanced_sb_settings_import_failed">فشل استيراد: %s</string>
<string name="revanced_sb_settings_export_failed">فشل تصدير: %s</string>
<string name="revanced_sb_settings_revanced_export_user_id_warning">تحتوي إعداداتك على معرف مستخدم خاص لـ SponsorBlock.\n\n معرف المستخدم الخاص بك يشبه كلمة المرور ويجب عدم مشاركته أبدًا.\n</string>
<string name="revanced_sb_settings_revanced_export_user_id_warning">"تحتوي إعداداتك على معرف مستخدم خاص لـ SponsorBlock.
معرف المستخدم الخاص بك يشبه كلمة المرور ويجب عدم مشاركته أبدًا.
"</string>
<string name="revanced_sb_settings_revanced_export_user_id_warning_dismiss">لا تعرض مرة أخرى</string>
<string name="revanced_sb_diff_segments">تغيير سلوك المقطع</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">ترويج شخصي/غير مدفوع الأجر</string>
<string name="revanced_sb_segments_selfpromo_sum">شبيهة بـ \"الراعي\" باستثناء ما يتعلق بالإعلانات غير المدفوعة الأجر أو الذاتية. ويشمل ذلك أقسام عن السلع أو التبرعات أو المعلومات المتعلقة بمن تعاونوا مع ناشر المحتوى</string>
<string name="revanced_sb_segments_interaction">تذكير بالتفاعل (اشتراك)</string>
<string name="revanced_sb_segments_interaction_sum">تذكير قصير للإعجاب أو الاشتراك أو المتابعة في منتصف المحتوى. إذا كانت طويلة أو تتعلق بشيء محدد، فيجب أن تكون خاضعة للترويج الشخصي بدلاً من ذلك</string>
@@ -892,9 +928,10 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_sb_submit_failed_invalid">غير قادر على إرسال المقطع: الحالة: %s</string>
<string name="revanced_sb_submit_failed_timeout">SponsorBlock متوقف مؤقتًا</string>
<string name="revanced_sb_submit_failed_unknown_error">غير قادر على إرسال المقطع (الحالة: %1$d %2$s)</string>
<string name="revanced_sb_submit_failed_rate_limit">لا يمكن إرسال المقطع.\n جارٍ الحد من معدل إرسالك (عدد كبير جدا من نفس المستخدم أو IP)</string>
<string name="revanced_sb_submit_failed_rate_limit">لا يمكن إرسال المقطع. جارٍ الحد من معدل إرسالك (عدد كبير جدًا من نفس المستخدم أو IP)</string>
<string name="revanced_sb_submit_failed_forbidden">لا يمكن إرسال المقطع: %s</string>
<string name="revanced_sb_submit_failed_duplicate">لا يمكن إرسال هذا المقطع.\nموجود بالفعل</string>
<string name="revanced_sb_submit_failed_duplicate">"لا يمكن إرسال هذا المقطع.
موجود بالفعل"</string>
<string name="revanced_sb_submit_succeeded">تم إرسال المقطع بنجاح</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. -->
<string name="revanced_sb_sponsorblock_connection_failure_timeout">SponsorBlock غير متاح مؤقتًا (انتهت مهلة API)</string>
@@ -909,7 +946,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_sb_vote_no_segments">لا توجد مقاطع للتصويت عليها</string>
<string name="revanced_sb_new_segment_choose_category">اختيار فئة المقطع</string>
<string name="revanced_sb_new_segment_disabled_category">الفئة معطلة في الإعدادات. تمكين الفئة للإرسال.</string>
<string name="revanced_sb_new_segment_title">مقطع مانِع رُعَاة جديد</string>
<string name="revanced_sb_new_segment_title">مقطع SponsorBlock جديد</string>
<string name="revanced_sb_new_segment_mark_time_as_question">تعيين %s كبداية أو نهاية لمقطع جديد؟</string>
<string name="revanced_sb_new_segment_mark_start">البداية</string>
<string name="revanced_sb_new_segment_mark_end">النهاية</string>
@@ -917,7 +954,15 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_sb_new_segment_time_start">الوقت الذي يبدأ عنده المقطع</string>
<string name="revanced_sb_new_segment_time_end">الوقت الذي ينتهي عنده المقطع</string>
<string name="revanced_sb_new_segment_confirm_title">هل الأوقات صحيحة؟</string>
<string name="revanced_sb_new_segment_confirm_content">المقطع من\n\n%1$s\nto\n%2$s\n\n(%3$s)\n\nReady to جاهز للإرسال؟</string>
<string name="revanced_sb_new_segment_confirm_content">"المقطع من
%1$s
إلى
%2$s
(%3$s)
هل أنت مستعد للإرسال؟"</string>
<string name="revanced_sb_new_segment_start_is_before_end">يجب أن تكون البداية قبل النهاية</string>
<string name="revanced_sb_new_segment_mark_locations_first">ضع علامة على موقعين في شريط الوقت أولًا</string>
<string name="revanced_sb_new_segment_preview_segment_first">معاينة المقطع، والتأكد من تخطيه بسلاسة</string>
@@ -959,7 +1004,11 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_spoof_app_version_title">خِداع إصدار التطبيق</string>
<string name="revanced_spoof_app_version_summary_on">تم تغيير اصدار التطبيق</string>
<string name="revanced_spoof_app_version_summary_off">لم يتم تغيير اصدار التطبيق</string>
<string name="revanced_spoof_app_version_user_dialog_message">سيتم تغيير إصدار التطبيق إلى إصدار قديم من YouTube.\n\nسيؤدي هذا إلى تغيير مظهر ومميزات التطبيق، ولكن قد تحدث تأثيرات جانبية غير معروفة.\n\nإذا تم إيقاف تشغيله لاحقا، من المستحسن مسح بيانات التطبيق لمنع حدوث أخطاء في واجهة المستخدم.</string>
<string name="revanced_spoof_app_version_user_dialog_message">"سيتم تغيير إصدار التطبيق إلى إصدار قديم من YouTube.
سيؤدي هذا إلى تغيير مظهر ومميزات التطبيق، ولكن قد تحدث تأثيرات جانبية غير معروفة.
إذا تم إيقاف تشغيله لاحقًا، من المستحسن مسح بيانات التطبيق لمنع حدوث أخطاء في واجهة المستخدم."</string>
<!-- 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 -->
<string name="revanced_spoof_app_version_target_title">الهدف من تغيير إصدار التطبيق</string>
@@ -1012,7 +1061,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_miniplayer_screen_summary">تغيير نمط المشغل المصغر داخل التطبيق</string>
<string name="revanced_miniplayer_type_title">نوع المشغل المصغر</string>
<string name="revanced_miniplayer_type_entry_0">معطّل</string>
<string name="revanced_miniplayer_type_entry_1">الأصلي</string>
<string name="revanced_miniplayer_type_entry_1">إفتراضي</string>
<string name="revanced_miniplayer_type_entry_2">الحد الأدنى</string>
<string name="revanced_miniplayer_type_entry_3">الجهاز اللوحي</string>
<string name="revanced_miniplayer_type_entry_4">حديث 1</string>
@@ -1022,19 +1071,28 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_miniplayer_rounded_corners_summary_on">الزوايا مستديرة</string>
<string name="revanced_miniplayer_rounded_corners_summary_off">الزوايا مربعة</string>
<string name="revanced_miniplayer_double_tap_action_title">تمكين النقر المزدوج والضغط لتغيير الحجم</string>
<string name="revanced_miniplayer_double_tap_action_summary_on">تم تمكين إجراء الضغط المزدوج والضغط لتغيير الحجم\n\n• النقر المزدوج لزيادة حجم المشغل المصغر\n• النقر المزدوج مرة أخرى لاستعادة الحجم الأصلي</string>
<string name="revanced_miniplayer_double_tap_action_summary_on">"تم تمكين إجراء الضغط المزدوج والضغط لتغيير الحجم
• النقر المزدوج لزيادة حجم المشغل المصغر
• النقر المزدوج مرة أخرى لاستعادة الحجم الأصلي"</string>
<string name="revanced_miniplayer_double_tap_action_summary_off">إجراء النقر المزدوج والضغط لتغيير الحجم معطل</string>
<string name="revanced_miniplayer_drag_and_drop_title">تمكين السحب والإفلات</string>
<string name="revanced_miniplayer_drag_and_drop_summary_on">السحب والإفلات مفعلان\n\nيمكن سحب المشغل المصغر إلى أي زاوية من الشاشة</string>
<string name="revanced_miniplayer_drag_and_drop_summary_on">"السحب والإفلات مفعلان
يمكن سحب المشغل المصغر إلى أي زاوية من الشاشة"</string>
<string name="revanced_miniplayer_drag_and_drop_summary_off">تم تعطيل السحب والإفلات</string>
<string name="revanced_miniplayer_horizontal_drag_title">تمكين إيماءة السحب الأفقية</string>
<string name="revanced_miniplayer_horizontal_drag_summary_on">تم تمكين إيماءة السحب الأفقية\n\nيمكن سحب المشغل المصغر خارج الشاشة إلى اليسار أو اليمين</string>
<string name="revanced_miniplayer_horizontal_drag_summary_on">"تم تمكين إيماءة السحب الأفقية
يمكن سحب المشغل المصغر خارج الشاشة إلى اليسار أو اليمين"</string>
<string name="revanced_miniplayer_horizontal_drag_summary_off">تم تعطيل إيماءة السحب الأفقية</string>
<string name="revanced_miniplayer_hide_expand_close_title">إخفاء زر الإغلاق</string>
<string name="revanced_miniplayer_hide_expand_close_summary_on">تم إخفاء زر الإغلاق</string>
<string name="revanced_miniplayer_hide_expand_close_summary_off">يتم عرض زر الإغلاق</string>
<string name="revanced_miniplayer_hide_expand_close_legacy_title">إخفاء أزرار التوسيع والإغلاق</string>
<string name="revanced_miniplayer_hide_expand_close_legacy_summary_on">تم إخفاء الأزرار\n\nمرر للتوسيع أو الإغلاق</string>
<string name="revanced_miniplayer_hide_expand_close_legacy_summary_on">"تم إخفاء الأزرار
مرر للتوسيع أو الإغلاق"</string>
<string name="revanced_miniplayer_hide_expand_close_legacy_summary_off">يتم عرض أزرار التوسيع والإغلاق</string>
<string name="revanced_miniplayer_hide_subtext_title">إخفاء النصوص الفرعية</string>
<string name="revanced_miniplayer_hide_subtext_summary_on">تم إخفاء النصوص الفرعية</string>
@@ -1065,7 +1123,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
<patch id="layout.thumbnails.bypassImageRegionRestrictionsPatch">
<string name="revanced_bypass_image_region_restrictions_title">تجاوز قيود منطقة الصورة</string>
<string name="revanced_bypass_image_region_restrictions_summary_on">استخدام مضيف الصورة yt4.ggpht.com</string>
<string name="revanced_bypass_image_region_restrictions_summary_off">استخدام مضيف الصور الأصلي\n\nتمكين هذا يمكن إصلاح الصور المفقودة التي يتم حظرها في بعض المناطق</string>
<string name="revanced_bypass_image_region_restrictions_summary_off">"استخدام مضيف الصور الأصلي
تمكين هذا يمكن إصلاح الصور المفقودة التي يتم حظرها في بعض المناطق"</string>
</patch>
<patch id="layout.thumbnails.alternativeThumbnailsPatch">
<!-- 'Home' should be translated using the same localized wording YouTube displays for the home tab. -->
@@ -1080,12 +1140,16 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_alt_thumbnail_options_entry_2">DeArrow &amp; المصّغرات الأصلية</string>
<string name="revanced_alt_thumbnail_options_entry_3">DeArrow &amp; اللقطات الثابتة</string>
<string name="revanced_alt_thumbnail_options_entry_4">اللقطات الثابتة</string>
<string name="revanced_alt_thumbnail_dearrow_about_summary">يوف DeArrow مصغرات فيديو من مصادر جماعية لفيديوهات YouTube. هذه المصغرات غالبا ما تكون أكثر صلة من تلك المقدمة من YouTube\n\nإذا تم تفعيلها، سيتم إرسال روابط الفيديو إلى خادم API ولن يتم إرسال أي بيانات أخرى. إذا كان الفيديو لا يحتوي على مصغرات DArrow ، سيتم عرض المقاطع الأصلية أو اللقطات الثابتة\n\nاضغط هنا لمعرفة المزيد عن DArrow</string>
<string name="revanced_alt_thumbnail_dearrow_about_summary">"يوفر DeArrow مصغرات فيديو من مصادر جماعية لفيديوهات YouTube. هذه المصغرات غالبا ما تكون أكثر صلة من تلك المقدمة من YouTube
إذا تم تفعيلها، سيتم إرسال روابط الفيديو إلى خادم API ولن يتم إرسال أي بيانات أخرى. إذا كان الفيديو لا يحتوي على مصغرات DArrow، سيتم عرض المقاطع الأصلية أو اللقطات الثابتة
اضغط هنا لمعرفة المزيد عن DArrow"</string>
<string name="revanced_alt_thumbnail_dearrow_connection_toast_title">عرض ملاحظة إذا كان API غير متاح</string>
<string name="revanced_alt_thumbnail_dearrow_connection_toast_summary_on">يتم عرض ملاحظة إذا كان DeArrow غير متوفر</string>
<string name="revanced_alt_thumbnail_dearrow_connection_toast_summary_off">لا يتم عرض ملاحظة إذا كان DeArrow غير متوفر</string>
<string name="revanced_alt_thumbnail_dearrow_api_url_title">DeArrow API endpoint</string>
<string name="revanced_alt_thumbnail_dearrow_api_url_summary">The URL of the DeArrow thumbnail cache endpointThe URL of the DeArrow thumbnail cache endpoint</string>
<string name="revanced_alt_thumbnail_dearrow_api_url_summary">The URL of the DeArrow thumbnail cache endpoint</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>
@@ -1119,8 +1183,12 @@ This is because Crowdin requires temporarily flattening this file and removing t
</patch>
<patch id="misc.dimensions.spoof.spoofDeviceDimensionsPatch">
<string name="revanced_spoof_device_dimensions_title">محاكاة أبعاد الجهاز</string>
<string name="revanced_spoof_device_dimensions_summary_on">تم محاكاة أبعاد الجهاز\n\nقد يتم فتح قفل جودة الفيديو العالية ولكن قد تواجه تقطعًا في تشغيل الفيديو وعمر بطارية أسوأ وتأثيرات جانبية غير معروفة</string>
<string name="revanced_spoof_device_dimensions_summary_off">أبعاد الجهاز غير محاكاة\n\nيمكن أن يؤدي تفعيل هذا إلى فتح جودة أعلى للفيديو</string>
<string name="revanced_spoof_device_dimensions_summary_on">"تم محاكاة أبعاد الجهاز
قد يتم فتح قفل جودة الفيديو العالية ولكن قد تواجه تقطعًا في تشغيل الفيديو وعمر بطارية أسوأ وتأثيرات جانبية غير معروفة"</string>
<string name="revanced_spoof_device_dimensions_summary_off">"أبعاد الجهاز غير محاكاة
يمكن أن يؤدي تفعيل هذا إلى فتح جودة أعلى للفيديو"</string>
<string name="revanced_spoof_device_dimensions_user_dialog_message">قد يؤدي تمكين هذا إلى تباطؤ تشغيل الفيديو وتدهور عمر البطارية وآثار جانبية غير معروفة.</string>
</patch>
<patch id="misc.gms.gmsCoreSupportResourcePatch">
@@ -1170,13 +1238,13 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_custom_speed_menu_summary_off">لا يتم عرض قائمة سرعة التشغيل المخصصة</string>
<string name="revanced_custom_playback_speeds_title">سرعة التشغيل المخصصة</string>
<string name="revanced_custom_playback_speeds_summary">إضافة أو تغيير سرعة التشغيل المخصصة</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_invalid">يجب أن تكون سرعات التشغيل المخصصة أقل من %s</string>
<string name="revanced_custom_playback_speeds_parse_exception">سرعة التشغيل المخصصة غير صالحة</string>
<string name="revanced_custom_playback_speeds_auto">تلقائي</string>
</patch>
<patch id="video.speed.remember.rememberPlaybackSpeedPatch">
<string name="revanced_remember_playback_speed_last_selected_title">تذكر التغيرات في سرعة التشغيل</string>
<string name="revanced_remember_playback_speed_last_selected_summary_on">تطبيق تغييرات سرعة التشغيل على جميع مقاطع الفيديو</string>
<string name="revanced_remember_playback_speed_last_selected_summary_on">تطبيق تغييرات سرعة التشغيل على جميع الفيديوهات</string>
<string name="revanced_remember_playback_speed_last_selected_summary_off">تطبيق تغييرات سرعة التشغيل فقط على الفيديو الحالي</string>
<string name="revanced_playback_speed_default_title">سرعة التشغيل الافتراضية</string>
<string name="revanced_remember_playback_speed_toast">تغيير السرعة الافتراضية إلى: %s</string>
@@ -1187,27 +1255,88 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_restore_old_video_quality_menu_summary_off">لا يتم عرض قائمة جودة الفيديو القديمة</string>
</patch>
<patch id="interaction.seekbar.enableSlideToSeekPatch">
<string name="revanced_slide_to_seek_title">تمكين Slide to Seek</string>
<string name="revanced_slide_to_seek_summary_on">تم تمكين Slide to Seek</string>
<string name="revanced_slide_to_seek_summary_off">تم تعطيل Slide to Seek</string>
<string name="revanced_slide_to_seek_title">تمكين التمرير للتقديم أو الترجيع</string>
<string name="revanced_slide_to_seek_summary_on">تم تمكين التمرير للتقديم أو الترجيع</string>
<string name="revanced_slide_to_seek_summary_off">تم تعطيل التمرير للتقديم أو الترجيع</string>
</patch>
<patch id="misc.fix.playback.spoofVideoStreamsPatch">
<string name="revanced_spoof_video_streams_screen_title">Spoof Video Streams</string>
<string name="revanced_spoof_video_streams_screen_summary">تزييف تدفقات الفيديو الخاصة بالعميل لمنع حدوث مشكلات أثناء التشغيل</string>
<string name="revanced_spoof_video_streams_title">Spoof Video Streams</string>
<string name="revanced_spoof_video_streams_summary_on">يتم تزييف تدفقات الفيديو</string>
<string name="revanced_spoof_video_streams_summary_off">لا يتم تزييف تدفقات الفيديو\n\nقد لا يعمل تشغيل الفيديو</string>
<string name="revanced_spoof_video_streams_summary_off">"لا يتم تزييف تدفقات الفيديو
قد لا يعمل تشغيل الفيديو"</string>
<string name="revanced_spoof_video_streams_user_dialog_message">إيقاف تشغيل هذا الإعداد قد يسبب مشاكل في تشغيل الفيديو.</string>
<string name="revanced_spoof_video_streams_client_title">العميل الافتراضي</string>
<string name="revanced_spoof_video_streams_ios_force_avc_title">فرض 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">ترميز الفيديو هو VP9 أو AV1</string>
<string name="revanced_spoof_video_streams_ios_force_avc_no_hardware_vp9_summary_on">لا يحتوي جهازك على فك تشفير الأجهزة VP9، وهذا الإعداد يعمل دائما عند تمكين تزييف العميل</string>
<string name="revanced_spoof_video_streams_ios_force_avc_user_dialog_message">قد يؤدي تمكين هذا إلى تحسين عمر البطارية وإصلاح مشكلة تقطيع التشغيل.\n\nيتمتع تنسيق AVC بدقة قصوى تبلغ 1080P، وسيستخدم تشغيل الفيديو المزيد من بيانات الإنترنت مقارنةً بتنسيق VP9 أو AV1.</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_title">التأثيرات الجانبية لمحاكاة iOS</string>
<string name="revanced_spoof_video_streams_about_ios_summary">• قد لا يتم تشغيل فيديوهات الأطفال الخاصة\n• تبدأ البثوث المباشر من البداية\n• قد تنتهي الفيديوهات قبل النهاية بثانية واحدة\n• لا يوجد ترميز الصوت opus</string>
<string name="revanced_spoof_video_streams_about_ios_summary">"• قد لا يتم تشغيل فيديوهات الأطفال الخاصة
• تبدأ البثوث المباشرة من البداية
• قد تنتهي الفيديوهات قبل النهاية بثانية واحدة"</string>
<string name="revanced_spoof_video_streams_about_android_vr_title">التأثيرات الجانبية لمحاكاة Android VR</string>
<string name="revanced_spoof_video_streams_about_android_vr_summary">• قد لا يتم تشغيل فيديوهات الأطفال\n• قائمة المقطع الصوتي مفقودة\n• مستوى الصوت الثابت غير متوفر</string>
<string name="revanced_spoof_video_streams_about_android_vr_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_PT_BR">Portuguese (Brazil)</string>
<string name="revanced_spoof_video_streams_language_PT_PT">Portuguese (Portugal)</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>
</patch>
</app>
<app id="twitch">

View File

@@ -1,34 +1,23 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Note: All strings must have a unique path, even if the same string is declared in two different apps.
This is because Crowdin requires temporarily flattening this file and removing the <app> and <patch> elements.
All strings must have a unique path, even if the same string is declared in two different apps.
This is because Crowdin requires temporarily flattening this file and removing the <app> and <patch> elements.
# General guidelines and information for translating
## Strings parameters can be reordered to allow more flexible translations if the grammar should be changed.
Strings with new lines must be raw strings where they're wrapped in quotes and new lines are not encoded.
Raw strings still requires escaping embedded double quotes but escaping embedded single quotes is optional.
For example, the patches string:
<string name="revanced_patches_string">You will arrive at %1$s in %2$s hours from now</string>
Could be translated to another language using a rearranged grammar:
<string name="revanced_patches_string">You will arrive %2$s hours from now at %1$s</string>
Raw strings are required because Crowdin AI translations regularly gets confused and
replace \n with an encoded new line character.
For Manager strings:
You will arrive at ${destination} in ${count} hours from now
Could be rearranged by changing the order of the ${} parameters:
You will arrive ${count} hours from now at ${destination}
Bad:
<string name="summary_key">First \'item\' text\nSecond \"item\" text</string>
Reordering is particularly relevant when translating into right to left languages, or for any language with grammar that is noticeably different from English.
Good:
<string name="summary_key">"First 'item' text
Second \"item\" text"</string>
## Single and double quotation marks must be escaped for patch strings (Manager does not require escaping any quotes).
All _patches_ single and double quotation marks must be escaped as \" or \'
Forgetting to do this will cause that string to appear in app with no quotation characters.
Correct:
<string name="revanced_string">You\'re correct. This is the \"correct\" way and this text will appear as expected in the app</string>
Not correct:
<string name="revanced_string">You're not correct. This is not the "correct" way and this text will not appear as expected the in app</string>
-->
<resources>
<app id="shared">
@@ -147,6 +136,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
</patch>
<patch id="layout.panels.popup.playerPopupPanelsPatch">
</patch>
<patch id="layout.player.fullscreen.openVideosFullscreen">
</patch>
<patch id="layout.player.overlay.customPlayerOverlayOpacityResourcePatch">
</patch>
<patch id="layout.returnyoutubedislike.returnYouTubeDislikePatch">

View File

@@ -1,34 +1,23 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Note: All strings must have a unique path, even if the same string is declared in two different apps.
This is because Crowdin requires temporarily flattening this file and removing the <app> and <patch> elements.
All strings must have a unique path, even if the same string is declared in two different apps.
This is because Crowdin requires temporarily flattening this file and removing the <app> and <patch> elements.
# General guidelines and information for translating
## Strings parameters can be reordered to allow more flexible translations if the grammar should be changed.
Strings with new lines must be raw strings where they're wrapped in quotes and new lines are not encoded.
Raw strings still requires escaping embedded double quotes but escaping embedded single quotes is optional.
For example, the patches string:
<string name="revanced_patches_string">You will arrive at %1$s in %2$s hours from now</string>
Could be translated to another language using a rearranged grammar:
<string name="revanced_patches_string">You will arrive %2$s hours from now at %1$s</string>
Raw strings are required because Crowdin AI translations regularly gets confused and
replace \n with an encoded new line character.
For Manager strings:
You will arrive at ${destination} in ${count} hours from now
Could be rearranged by changing the order of the ${} parameters:
You will arrive ${count} hours from now at ${destination}
Bad:
<string name="summary_key">First \'item\' text\nSecond \"item\" text</string>
Reordering is particularly relevant when translating into right to left languages, or for any language with grammar that is noticeably different from English.
Good:
<string name="summary_key">"First 'item' text
Second \"item\" text"</string>
## Single and double quotation marks must be escaped for patch strings (Manager does not require escaping any quotes).
All _patches_ single and double quotation marks must be escaped as \" or \'
Forgetting to do this will cause that string to appear in app with no quotation characters.
Correct:
<string name="revanced_string">You\'re correct. This is the \"correct\" way and this text will appear as expected in the app</string>
Not correct:
<string name="revanced_string">You're not correct. This is not the "correct" way and this text will not appear as expected the in app</string>
-->
<resources>
<app id="shared">
@@ -67,9 +56,17 @@ This is because Crowdin requires temporarily flattening this file and removing t
<!-- 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 quraşdırılmayıb. Bunu quraşdır.</string>
<string name="gms_core_dialog_title">Fəaliyyət lazımdır</string>
<string name="gms_core_dialog_not_whitelisted_not_allowed_in_background_message">MicroG GmsCore arxa planda işləməyə icazə almayıb.\n\nTelefonunuz üçün \"Tətbiqim bağlanılmasın\" bələdçisin izləyin və təlimatları MicroG quraşdırmasına tətbiq edin.\n\nBu tətbiq işləyən müddətdə tələb olunur.</string>
<string name="gms_core_dialog_not_whitelisted_not_allowed_in_background_message">"MicroG GmsCore-un arxaplanda işləməsi üçün icazəsi yoxdur.
Telefonunuz üçün \"Tətbiqimi öldürmə\" bələdçisinə əməl edin və təlimatları MicroG quraşdırmanıza tətbiq edin.
Bu, tətbiqin işləməsi üçün tələb olunur."</string>
<string name="gms_core_dialog_open_website_text">Veb saytı</string>
<string name="gms_core_dialog_not_whitelisted_using_battery_optimizations_message">Problemlərin olmaması üçün MicroG GmsCore batareya optimallaşdırması qeyri-aktiv edilməlidir.\n\nDavam düyməsinə toxun və batareya optimallaşdırmasını qeyri-aktiv et.</string>
<string name="gms_core_dialog_not_whitelisted_using_battery_optimizations_message">"Problemsiz işləməsi üçün MicroG GmsCore batareya optimallaşdırmaları sıradan çıxarılmalıdır.
MicroG üçün batareya optimallaşdırmasını sıradan çıxartmaq, batareya istifadəsinə mənfi təsir etməyəcək.
Davam düyməsinə toxunun və optimallaşdırma dəyişikliklərinə icazə verin."</string>
<string name="gms_core_dialog_continue_text">Davam et</string>
</patch>
</app>
@@ -106,7 +103,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_debug_toast_on_error_title">ReVanced xətasında ani bildiriş göstər</string>
<string name="revanced_debug_toast_on_error_summary_on">Xəta baş verərsə bildiriş göstər</string>
<string name="revanced_debug_toast_on_error_summary_off">Xəta baş verərsə bildiriş göstərmə</string>
<string name="revanced_debug_toast_on_error_user_dialog_message">Ani bildirişləri söndürəndə, bütün ReVanced xəta bildirişləri gizlənir.\n\nGözlənilməz hallardan xəbərdar olmayacaqsınız.</string>
<string name="revanced_debug_toast_on_error_user_dialog_message">"Xəta bildirişlərini söndürmək, bütün ReVanced xəta bildirişlərini gizlədir.
Gözlənilməz tədbirlər barədə bildiriş almayacaqsınız."</string>
</patch>
<patch id="layout.hide.general.hideLayoutComponentsPatch">
<string name="revanced_disable_like_subscribe_glow_title">Bəyən/abunə ol düymə parıltısın söndür</string>
@@ -125,7 +124,12 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_channel_watermark_summary_on">Su nişanı gizlidir</string>
<string name="revanced_hide_channel_watermark_summary_off">Su nişanı göstərilir</string>
<string name="revanced_hide_horizontal_shelves_title">Üfüqi hissələri gizlət</string>
<string name="revanced_hide_horizontal_shelves_summary_on">Belə hissələr gizlidir:\n• Son xəbərlər\n• Baxmağa davam et\n• Daha çox kanal kəşf et\n• Bazarlıq\n• Təkrar izlə</string>
<string name="revanced_hide_horizontal_shelves_summary_on">"Rəflər gizlidir, məsələn:
• Son xəbərlər
• İzləməyə davam et
• Daha çox kanallar kəşf edin
• Alış-veriş
• Yenidən izlə"</string>
<string name="revanced_hide_horizontal_shelves_summary_off">Hissələr göstərilir</string>
<!-- 'Join' should be translated using the same localized wording YouTube displays.
This appears in the video player for certain videos. -->
@@ -252,6 +256,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_filter_bar_feed_in_related_videos_summary_off">Əlaqəli videolarda görünür</string>
<string name="revanced_comments_screen_title">Şərhlər</string>
<string name="revanced_comments_screen_summary">Şərhlər bölməsi elementlərin gizlət və ya göstər</string>
<string name="revanced_hide_comments_chat_summary_title">\'Söhbət yekunun\' gizlət </string>
<string name="revanced_hide_comments_chat_summary_summary_on">\"Söhbət yekunu\" gizlədilir</string>
<string name="revanced_hide_comments_chat_summary_summary_off">\'Söhbət yekunu\' göstərilir</string>
<string name="revanced_hide_comments_by_members_header_title">\'Üzvlərin şərhləri\' başlığını gizlət</string>
<string name="revanced_hide_comments_by_members_header_summary_on">\"Üzvlərin şərhləri\" başlığı gizlədilib</string>
<string name="revanced_hide_comments_by_members_header_summary_off">\"Üzvlərin şərhləri\" başlığı göstərilir</string>
@@ -274,7 +281,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_doodles_title">YouTube Doodle-ları gizlət</string>
<string name="revanced_hide_doodles_summary_on">Axtarış çubuğu Doodle-ları gizlidir</string>
<string name="revanced_hide_doodles_summary_off">Axtarış çubuğu Doodle-ları göstərilir</string>
<string name="revanced_hide_doodles_user_dialog_message">YouTube Doodle-lar hər il bir neçə gün göstərilir.\n\nDoodle hazırda bölgənizdə görünür və bu gizlətmə seçimi aktivdirsə, axtarış çubuğu altındakı filtr paneli də gizlədiləcək.</string>
<string name="revanced_hide_doodles_user_dialog_message">"YouTube Doodles ilinin bir neçə günü göstərilir.
Əgər Doodle hazırda sizin bölgənizdə göstərilirsə və bu gizlətmə parametr açıqdırsa, axtarış çubuğunun altındakı filtr çubuğu da gizlənəcək."</string>
<string name="revanced_custom_filter_screen_title">Şəxsi filtr</string>
<string name="revanced_custom_filter_screen_summary">Fərdi filtrlər ilə elementləri gizlət</string>
<string name="revanced_custom_filter_title">Fərdi filtri aktivləşdir</string>
@@ -298,9 +307,18 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_keyword_content_phrases_title">Gizlədiləcək açar sözlər</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. -->
<string name="revanced_hide_keyword_content_phrases_summary">Yeni sətirlərlə ayrılmış gizlədiləcək açar sözlər və frazalar\n\nAçar sözlər kanal adları və ya video adlarında göstərilən istənilən mətn ola bilər\n\nOrtada böyük hərf olan sözlər korpusla birlikdə qeyd edilməlidir (yəni: iPhone, TikTok, LeBlanc)</string>
<string name="revanced_hide_keyword_content_phrases_summary">"Kənarda qoyulacaq açar sözlər və cümlələr, yeni sətirlərlə ayrılmışdır
Açar sözlər kanal adları və ya video başlıqlarında göstərilən hər hansı mətn ola bilər.
Orta hərfləri böyük hərflərlə olan sözlər böyük hərflərlə yazılmalıdır (məsələn: iPhone, TikTok, LeBlanc)"</string>
<string name="revanced_hide_keyword_content_about_title">Açar söz filtrləməsi haqqında</string>
<string name="revanced_hide_keyword_content_about_summary">Əsas səhifə/Abunəlik/Axtarış nəticələri açar söz ifadələrinə uyğunlaşan məzmunu gizlətmək üçün filtrlənir\n\nMəhdudiyyətlər\n• Shorts-lar kanal adına görə gizlənə bilməz\n• Bəzi UI hissəcikləri gizlədilə bilməz\n• Açar söz axtarışında nəticə olmaya bilər</string>
<string name="revanced_hide_keyword_content_about_summary">"Ana səhifə/Abunəlik/Axtarış nəticələri açar söz ifadələrinə uyğun olan məzmunu gizlətmək üçün süzülür
Məhdudiyyətlər
• Şortlar kanal adı ilə gizlənə bilməz
• Bəzi UI komponentləri gizlənə bilməz
• Açar söz axtarmaq heç bir nəticə verməyə bilər"</string>
<string name="revanced_hide_keyword_content_about_whole_words_title">Bütün sözləri uyğunlaşdır</string>
<!-- Translations _must_ use a localized example. For languages that do not use spaces between words (Chinese, Japanese, etc) the English AI example should be used since no localized examples exist. Or if using machine translations, or if nobody wants to think of a localized example, then the English 'ai' example should be left as-is. -->
<string name="revanced_hide_keyword_content_about_whole_words_summary">Açar söz/frazanın qoşa dırnaqlarla əhatə olunması video adları və kanal adlarının qismən uyğunlaşmasına mane olacaq &lt;br&gt;&lt;br&gt;Məsələn,&lt;br&gt;&lt;b&gt;\"ai\"&lt;/b&gt; videonu gizlədəcək:&lt;b&gt;How does AI work?&lt;/b&gt;&lt;br&gt; lakin gizlətməyəcək: Düzgün;&lt;b&gt;What does fair use mean?&lt;/b&gt;</string>
@@ -316,7 +334,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_general_ads_summary_on">Ümumi reklamlar gizlidir</string>
<string name="revanced_hide_general_ads_summary_off">Ümumi reklamlar göstərilir</string>
<string name="revanced_hide_fullscreen_ads_title">Tam ekran reklamlarını gizlət</string>
<string name="revanced_hide_fullscreen_ads_summary_on">Tam ekran reklamları gizlidir\n\nBu funksiya yalnız köhnə cihazlar üçün əlçatandır</string>
<string name="revanced_hide_fullscreen_ads_summary_on">"Tam ekran reklam gizlidir
Bu xüsusiyyət yalnız köhnə cihazlar üçün mövcuddur"</string>
<string name="revanced_hide_fullscreen_ads_summary_off">Tam ekran reklamları göstərilir</string>
<string name="revanced_hide_buttoned_ads_title">Düyməli reklamları gizlət</string>
<string name="revanced_hide_buttoned_ads_summary_on">Düyməli reklamlar gizlədilir</string>
@@ -490,7 +510,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_subscriptions_button_summary_off">Abunəliklər düyməsi göstərilir</string>
<!-- 'Notifications' should be translated using the same localized wording YouTube displays the tab. -->
<string name="revanced_switch_create_with_notifications_button_title">\"Yarat\"ı \"Bildirişlər\" ilə dəyişdir</string>
<string name="revanced_switch_create_with_notifications_button_summary_on">Yarat düyməsi Bildirişlər düyməsi ilə dəyişdirilir\n\nQeyd: Bunu aktivləşdirmə video reklamları da məcburən gizlədir</string>
<string name="revanced_switch_create_with_notifications_button_summary_on">"Yarat düyməsi Bildirişlər düyməsi ilə dəyişdirilir
Qeyd: Bunu aktivləşdirmək video reklamları da məcburi olaraq gizlədir"</string>
<string name="revanced_switch_create_with_notifications_button_summary_off">\"Yarat\" düyməsi, \"Bildirişlər\" düyməsi ilə dəyişdirilmir</string>
<string name="revanced_hide_navigation_button_labels_title">Fəaliyyət düymə etiketlərini gizlət</string>
<string name="revanced_hide_navigation_button_labels_summary_on">Etiketlər gizlidir</string>
@@ -709,6 +731,11 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_player_popup_panels_summary_on">Oynadıcıılan pəncərə panelləri gizlidir</string>
<string name="revanced_hide_player_popup_panels_summary_off">Oynadıcıılan pəncərə panelləri göstərilir</string>
</patch>
<patch id="layout.player.fullscreen.openVideosFullscreen">
<string name="revanced_open_videos_fullscreen_portrait_title">Videoları tam ekran təsvirində aç</string>
<string name="revanced_open_videos_fullscreen_portrait_summary_on">Videolar tam ekranda açılır</string>
<string name="revanced_open_videos_fullscreen_portrait_summary_off">Videolar tam ekranda açılmır</string>
</patch>
<patch id="layout.player.overlay.customPlayerOverlayOpacityResourcePatch">
<string name="revanced_player_overlay_opacity_title">Oynadıcı örtüyünün qeyri-şəffaflığı</string>
<string name="revanced_player_overlay_opacity_summary">0-100 arasında qeyri-şəffaflıq dəyəri, burada 0 şəffafdır</string>
@@ -726,7 +753,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_ryd_enable_summary_off">Bəyənməmələr göstərilmir</string>
<string name="revanced_ryd_shorts_title">\"Shorts\"da bəyənməmə sayını göstər</string>
<string name="revanced_ryd_shorts_summary_on">Bəyənməmə sayı \"Shorts\"da göstərilir</string>
<string name="revanced_ryd_shorts_summary_on_disclaimer">\"Bəyənməmə\"lər \"Shorts\"da göstərilir\n\nMəhdudiyyət: \"Bəyənməmə\"lər gizli rejimdə görünməyə bilər</string>
<string name="revanced_ryd_shorts_summary_on_disclaimer">"Şortlarda görünən bəyənməmələr
Məhdudiyyət: Bəyənməmələr gizli rejimdə görünə bilməz"</string>
<string name="revanced_ryd_shorts_summary_off">\"Bəyənməmə\"lər \"Shorts\"da gizlidir</string>
<string name="revanced_ryd_dislike_percentage_title">\"Bəyənməmə\"lər faiz olaraq</string>
<string name="revanced_ryd_dislike_percentage_summary_on">\"Bəyənməmə\"lər faiz olaraq göstərilir</string>
@@ -769,7 +798,11 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_seekbar_thumbnails_high_quality_summary_off">Axtarış çubuğu miniatürləri orta keyfiyyətlidir</string>
<string name="revanced_seekbar_thumbnails_high_quality_legacy_summary_on">Tam ekran axtarış çubuğu miniatürləri yüksək keyfiyyətlidir</string>
<string name="revanced_seekbar_thumbnails_high_quality_legacy_summary_off">Tam ekran axtarış çubuğu miniatürləri orta keyfiyyətlidir</string>
<string name="revanced_seekbar_thumbnails_high_quality_dialog_message">Bu, həm axtarış cizgisi üzrə miniarləri olmayan canlı yayımlarda miniatürləri qaytaracaq.\n\nAxtarış cizgisi miniatürləri, cari video kimi eyni keyfiyyəti işlədəcək.\n\nBu xüsusiyyət, 720p və ya daha aşağı video keyfiyyəti və çox sürətli internet bağlantısı istifadə edərkən daha yaxşı işləyir.</string>
<string name="revanced_seekbar_thumbnails_high_quality_dialog_message">"Bu, həmçinin axtarış çubuğu kiçik görüntüləri olmayan canlı yayımlarda kiçik şəkilləri bərpa edəcək.
Axtarış çubuğu kiçik şəkilləri cari videonun keyfiyyəti ilə eyni keyfiyyətdən istifadə edəcək.
Bu xüsusiyyət ən yaxşı 720p və ya daha aşağı video keyfiyyəti və çox sürətli internet bağlantısından istifadə edərkən işləyir."</string>
<string name="revanced_restore_old_seekbar_thumbnails_title">Köhnə axtarış çubuğu miniatürlərin al</string>
<string name="revanced_restore_old_seekbar_thumbnails_summary_on">Axtarış çubuğu miniatürləri axtarış çubuğu üstündə görünəcək</string>
<string name="revanced_restore_old_seekbar_thumbnails_summary_off">Axtarış çubuğu miniatürləri tam ekranda görünəcək</string>
@@ -832,7 +865,10 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_sb_settings_import_successful">Tənzimləmələr uğurla idxal edildi</string>
<string name="revanced_sb_settings_import_failed">%s idxal uğursuz</string>
<string name="revanced_sb_settings_export_failed">%s ixrac uğursuz</string>
<string name="revanced_sb_settings_revanced_export_user_id_warning">Tənzimləmələr şəxsi SponsorBlock istifadəçi kimliyi ehtiva edir.\n\nİstifadəçi kimliyiniz parol kimidir və bu paylaşılmamalıdır.\n</string>
<string name="revanced_sb_settings_revanced_export_user_id_warning">"Parametrlərdə özəl SponsorBlock istifadəçi IDniz var.
Sizə istifadəçi IDniz parol kimidir və heç vaxt başqasına verilməməlidir.
"</string>
<string name="revanced_sb_settings_revanced_export_user_id_warning_dismiss">Təkrar göstərmə</string>
<string name="revanced_sb_diff_segments">Bölüm davranışını dəyişdir</string>
<string name="revanced_sb_segments_sponsor">Sponsor</string>
@@ -892,9 +928,10 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_sb_submit_failed_invalid">Bölüm göndərilmir: %s</string>
<string name="revanced_sb_submit_failed_timeout">SponsorBlock müvəqqəti olaraq cavab vermir</string>
<string name="revanced_sb_submit_failed_unknown_error">Bölüm göndərilmir (status: %1$d %2$s)</string>
<string name="revanced_sb_submit_failed_rate_limit">Bölüm göndərilmir.\nSürət məhdudlaşıb (eyni istifadəçi və ya IP-dən pik sayda)</string>
<string name="revanced_sb_submit_failed_rate_limit">Segment təqdim edə bilmədiniz. Həddən artıq istifadə (eyni istifadəçi və ya IP ünvanından çox)</string>
<string name="revanced_sb_submit_failed_forbidden">Bölüm göndərilmir: %s</string>
<string name="revanced_sb_submit_failed_duplicate">Bölüm göndərilmir.\nArtıq var</string>
<string name="revanced_sb_submit_failed_duplicate">"Segment təqdim edə bilmirsiniz.
Artıq mövcuddur"</string>
<string name="revanced_sb_submit_succeeded">Bölüm uğurla göndərildi</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. -->
<string name="revanced_sb_sponsorblock_connection_failure_timeout">SponsorBlock müvəqqəti əlçatmazdır (API vaxtı bitdi)</string>
@@ -917,7 +954,15 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_sb_new_segment_time_start">Bölüm başladığı vaxt</string>
<string name="revanced_sb_new_segment_time_end">Bölümün bitmə vaxtı</string>
<string name="revanced_sb_new_segment_confirm_title">Vaxtlar düzgündür?</string>
<string name="revanced_sb_new_segment_confirm_content">Bölüm \n\n%1$s\n\n%2$s\n\n(%3$s)\n\nTəqdim etməyə hazırsınız?</string>
<string name="revanced_sb_new_segment_confirm_content">"Bölüm
%1$s
ilə
%2$s arasıdır
(%3$s)
Təqdim etməyə hazırdır?"</string>
<string name="revanced_sb_new_segment_start_is_before_end">Başlanğıc sondan əvvəl olmalıdır</string>
<string name="revanced_sb_new_segment_mark_locations_first">Əvvəlcə vaxt çubuğunda iki yeri doldur</string>
<string name="revanced_sb_new_segment_preview_segment_first">Bölümü izləyin, rahatlıqla ötürdüyünə əmin olun</string>
@@ -959,7 +1004,11 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_spoof_app_version_title">Tətbiq versiyasını saxtalaşdır</string>
<string name="revanced_spoof_app_version_summary_on">Versiya saxtalaşdırıldı</string>
<string name="revanced_spoof_app_version_summary_off">Versiya saxtalaşdırılmadı</string>
<string name="revanced_spoof_app_version_user_dialog_message">Tətbiq versiyası, YouTube-un daha köhnə versiyası şəklində saxtalaşdırılacaq.\n\nBu, tətbiqin görünüşünü və funksiyalarını dəyişdirəcək, ancaq bilinməyən yan təsirlər ola bilər.\n\nDaha sonra söndürsəniz, UI səhvlərini önləmək üçün tətbiq məlumatını təmizləmək tövsiyə olunur.</string>
<string name="revanced_spoof_app_version_user_dialog_message">"Tətbiq versiyası köhnə bir YouTube versiyasına oxşayacaq.
Bu tətbiqin görünüşünü və xüsusiyyətlərini dəyişdirəcək, lakin bilinməyən yan təsirlər yarana bilər.
Sonradan söndürülərsə, UI səhvlərini qarşısını almaq üçün tətbiqin məlumatlarını silmək tövsiyə olunur."</string>
<!-- 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 -->
<string name="revanced_spoof_app_version_target_title">Saxta tətbiq versiyası hədəfi</string>
@@ -1012,7 +1061,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_miniplayer_screen_summary">Tətbiqdə kiçildilən oynadıcı üslubunu dəyişdir</string>
<string name="revanced_miniplayer_type_title">Kiçik oynadıcı növü</string>
<string name="revanced_miniplayer_type_entry_0">Qeyri-aktivdir</string>
<string name="revanced_miniplayer_type_entry_1">Orijinal</string>
<string name="revanced_miniplayer_type_entry_1">İlkin</string>
<string name="revanced_miniplayer_type_entry_2">Ən kiçik</string>
<string name="revanced_miniplayer_type_entry_3">Planşet</string>
<string name="revanced_miniplayer_type_entry_4">Müasir 1</string>
@@ -1022,19 +1071,28 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_miniplayer_rounded_corners_summary_on">Künclər dairəvidir</string>
<string name="revanced_miniplayer_rounded_corners_summary_off">Künclər kvadratdır</string>
<string name="revanced_miniplayer_double_tap_action_title">Ölçüsünü dəyişmək üçün cüt toxunmanı və çimdikləməni aktivləşdir</string>
<string name="revanced_miniplayer_double_tap_action_summary_on">Ölçüsünü dəyişdirmək üçün cüt toxunma fəaliyyəti və çimdikləmə aktivləşdirildi\n\n• Mini oynadıcı ölçüsün artırmaq üçün cüt toxunun\n• Orijinal ölçünü bərpa etmək üçün təkrar cüt toxun</string>
<string name="revanced_miniplayer_double_tap_action_summary_on">"İkiqat vuruş hərəkəti və çimdikleyərək yenidən ölçmək aktivdir
• Miniplayer ölçüsünü artırmaq üçün iki dəfə vurun
• Orijinal ölçüsünə qayıtmaq üçün yenidən iki dəfə vurun"</string>
<string name="revanced_miniplayer_double_tap_action_summary_off">Ölçüsünü dəyişdirmək üçün cüt toxunma fəaliyyəti və çimdikləmə yoxdur</string>
<string name="revanced_miniplayer_drag_and_drop_title">\"Sürüklə və burax\"ı aktivləşdir</string>
<string name="revanced_miniplayer_drag_and_drop_summary_on">\"Sürüklə və burax\" aktivdir\n\nMini oynadıcı, ekranın istənilən küncünə sürüklənə bilər</string>
<string name="revanced_miniplayer_drag_and_drop_summary_on">"Sürüklə və burax aktivdir
Miniplayer ekranın istənilən küncünə sürüklənə bilər"</string>
<string name="revanced_miniplayer_drag_and_drop_summary_off">\"Sürüklə və burax\" aktiv deyil</string>
<string name="revanced_miniplayer_horizontal_drag_title">Üfüqi sürükləmə jestini aktivləşdir</string>
<string name="revanced_miniplayer_horizontal_drag_summary_on">Üfüqi sürükləmə jesti aktivdir\n\nKiçik Oynadıcı ekranın soluna və ya sağına sürüklənə bilər</string>
<string name="revanced_miniplayer_horizontal_drag_summary_on">"Üfüqi sürükləmə jesti aktivdir
Miniplayer ekrandan sola və ya sağa sürüklənə bilər"</string>
<string name="revanced_miniplayer_horizontal_drag_summary_off">Üfüqi sürükləmə jesti qapatıldı</string>
<string name="revanced_miniplayer_hide_expand_close_title">\"Bağla\" düyməsini gizlət</string>
<string name="revanced_miniplayer_hide_expand_close_summary_on">\"Bağla\" düyməsi gizlidir</string>
<string name="revanced_miniplayer_hide_expand_close_summary_off">\"Bağla\" düyməsi göstərilir</string>
<string name="revanced_miniplayer_hide_expand_close_legacy_title">Genişləndir və bağla düymələrini gizlət</string>
<string name="revanced_miniplayer_hide_expand_close_legacy_summary_on">Düymələr gizlədilib\n\nGenişləndirmək və ya bağlamaq üçün sürüşdür</string>
<string name="revanced_miniplayer_hide_expand_close_legacy_summary_on">"Düymələr gizlidir
Açmaq və ya bağlamaq barmaqla sürüşdürün"</string>
<string name="revanced_miniplayer_hide_expand_close_legacy_summary_off">Genişləndir və bağla düymələri göstərilir</string>
<string name="revanced_miniplayer_hide_subtext_title">Alt mətnləri gizlət</string>
<string name="revanced_miniplayer_hide_subtext_summary_on">Alt mətnlər gizlədilir</string>
@@ -1065,7 +1123,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
<patch id="layout.thumbnails.bypassImageRegionRestrictionsPatch">
<string name="revanced_bypass_image_region_restrictions_title">Təsvir bölgə məhdudiyyətlərini ötür</string>
<string name="revanced_bypass_image_region_restrictions_summary_on">yt4.ggpht.com təsvir host-u istifadə edilir</string>
<string name="revanced_bypass_image_region_restrictions_summary_off">Orijinal təsvir host-u istifadə edilir\n\nBunu aktivləşdirmə, bəzi bölgələrdə əngəllənən, ağ təsvirləri düzəldə bilər</string>
<string name="revanced_bypass_image_region_restrictions_summary_off">"Orijinal şəkil hostundan istifadə
Bunu aktivləşdirmək, bəzi regionlarda bloklanmışdırılmış itkin şəkilləri düzəldə bilər"</string>
</patch>
<patch id="layout.thumbnails.alternativeThumbnailsPatch">
<!-- 'Home' should be translated using the same localized wording YouTube displays for the home tab. -->
@@ -1080,7 +1140,11 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_alt_thumbnail_options_entry_2">DeArrow &amp; Orijinal miniatürlər</string>
<string name="revanced_alt_thumbnail_options_entry_3">DeArrow &amp; Kadr çəkilişlər</string>
<string name="revanced_alt_thumbnail_options_entry_4">Kadr çəkilişləri</string>
<string name="revanced_alt_thumbnail_dearrow_about_summary">DeArrow YouTube videoları üçün bölük mənbəli miniarlər təchiz edir. Bu miniarlər hər zaman YouTube tərəfindən təmin edilənlərdən daha uyğun olur\n\nƏgər aktivləşdirilərsə, video URL-lər API serverinə göndəriləcək və başqa heç bir məlumat göndərilməyəcək. Videoda DeArrow miniatürləri yoxdursa, orijinal və ya hələ də kadr çəkilişləri göstərilir\n\nDeArrow haqqında ətraflı öyrənmək üçün bura toxun</string>
<string name="revanced_alt_thumbnail_dearrow_about_summary">"DeArrow, YouTube videoları üçün kütlədən alınan kiçik görüntülər təqdim edir. Bu kiçik görüntülər YouTube tərəfindən təqdim edilənlərdən daha uyğun ola bilər
Aktivləşdirilərsə, video URLləri API serverinə göndəriləcək və başqa heç bir məlumat göndərilməyəcək. Bir videoda DeArrow kiçik şəkilləri yoxdursa, onda orijinal və ya hərəkətsiz çəkilişlər göstərilir
DeArrow haqqında ətraflı məlumat üçün buraya vurun"</string>
<string name="revanced_alt_thumbnail_dearrow_connection_toast_title">API əlçatan deyilsə ani bildiriş göstər</string>
<string name="revanced_alt_thumbnail_dearrow_connection_toast_summary_on">DeArrow əlçatan deyilsə bildiriş göstərilir</string>
<string name="revanced_alt_thumbnail_dearrow_connection_toast_summary_off">DeArrow əlçatan deyilsə bildiriş göstərilmir</string>
@@ -1119,8 +1183,12 @@ This is because Crowdin requires temporarily flattening this file and removing t
</patch>
<patch id="misc.dimensions.spoof.spoofDeviceDimensionsPatch">
<string name="revanced_spoof_device_dimensions_title">Cihaz ölçülərini saxtalaşdır</string>
<string name="revanced_spoof_device_dimensions_summary_on">Cihaz ölçüləri saxtalaşdı\n\nDaha yüksək video keyfiyyətləri göstərilə bilər, ancaq video oynatma donmaları, daha pis batareya istismarı və bilinməyən yan təsirləri görə bilərsiniz</string>
<string name="revanced_spoof_device_dimensions_summary_off">Cihaz ölçüləri saxtalaşmır\n\nBunu aktivləşdirmə, daha yüksək video keyfiyyətlərinin olmasın təmin edə bilir</string>
<string name="revanced_spoof_device_dimensions_summary_on">"Cihaz ölçüləri saxtalaşdırıldı
Yüksək video keyfiyyətlər görünə bilər, ancaq videonun oynadılmasında qırılma, daha pis batareya ömrü və bilinməyən yan təsirləri sezə bilərsiniz"</string>
<string name="revanced_spoof_device_dimensions_summary_off">"Cihaz ölçüləri saxtalaşdırılmayıb
Bunu aktivləşdirmə daha yüksək video keyfiyyətləri əngəlin silə bilər"</string>
<string name="revanced_spoof_device_dimensions_user_dialog_message">Bunu aktivləşdirmə, video oynatma donmalarına, daha pis batareya istismarına və bilinməyən yan təsirlərə səbəb ola bilər.</string>
</patch>
<patch id="misc.gms.gmsCoreSupportResourcePatch">
@@ -1170,8 +1238,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_custom_speed_menu_summary_off">Fərdi sürət menyusu göstərilmir</string>
<string name="revanced_custom_playback_speeds_title">Fərdi oynatma sürəti</string>
<string name="revanced_custom_playback_speeds_summary">Fərdi oynatma sürətlərini əlavə et və ya dəyiş</string>
<string name="revanced_custom_playback_speeds_invalid">Fərdi sürətlər %s-dən az olmalıdır. Standart dəyərlər istifadəsi.</string>
<string name="revanced_custom_playback_speeds_parse_exception">Etibarsız oynatma sürətləri. Standartlar istifadədədir.</string>
<string name="revanced_custom_playback_speeds_invalid">Fərdi sürətlər %s dəyərindən az olmalıdır</string>
<string name="revanced_custom_playback_speeds_parse_exception">Fərdi oynatma sürətləri etibarsızdır</string>
<string name="revanced_custom_playback_speeds_auto">Avtomatik</string>
</patch>
<patch id="video.speed.remember.rememberPlaybackSpeedPatch">
@@ -1196,18 +1264,79 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_spoof_video_streams_screen_summary">Oynatma problemlərin önləmək üçün qəbuledici video yayımların saxtalaşdır</string>
<string name="revanced_spoof_video_streams_title">Video yayımları saxtalaşdır</string>
<string name="revanced_spoof_video_streams_summary_on">Video yayımları saxtalaşdırılır</string>
<string name="revanced_spoof_video_streams_summary_off">Video yayımları saxtalaşmır\n\nVideo oynatma işləməyə bilər</string>
<string name="revanced_spoof_video_streams_summary_off">"Video yayımlar saxtalaşdırılmır
Video oynatma işləməyə bilər"</string>
<string name="revanced_spoof_video_streams_user_dialog_message">Bu seçimi bağlamaq, video oynatma problemlərinə səbəb olar.</string>
<string name="revanced_spoof_video_streams_client_title">İlkin qəbuledici</string>
<string name="revanced_spoof_video_streams_ios_force_avc_title">Məcburi AVC (H.264)</string>
<string name="revanced_spoof_video_streams_ios_force_avc_summary_on">Video kodlaşdırma: AVC (H.264)</string>
<string name="revanced_spoof_video_streams_ios_force_avc_summary_off">Video kodlaşdırma / VP9 və ya AV1</string>
<string name="revanced_spoof_video_streams_ios_force_avc_no_hardware_vp9_summary_on">Cihazınızın VP9 hardware decoding\'i yoxdur və bu seçim, \"Qəbuledicini saxtalaşdırma\" aktivləşdikdə həmişəlikdir</string>
<string name="revanced_spoof_video_streams_ios_force_avc_user_dialog_message">Bunu aktivləşdirmə batareya ömrünü yaxşılaşdıra və oynatma donmasını düzəldə bilər.\n\nAVC maksimum 1080p görüntü imkanına malikdir və video oynadılması VP9 və ya AV1-dən daha çox internet məlumatı istifadə edəcək.</string>
<string name="revanced_spoof_video_streams_ios_force_avc_summary_on">Video kodlama AVC (H.264) -yə məcbur edilir</string>
<string name="revanced_spoof_video_streams_ios_force_avc_summary_off">Video kodlama birbaşa yoxlanılır</string>
<string name="revanced_spoof_video_streams_ios_force_avc_user_dialog_message">"Bunu fəallaşdırma, batareya ömrünü yaxşılaşdıra və oxutma ilişmələrini düzəldə bilər.
AVC-nin maksimum dəqiqliyi 1080p-dir, Opus səs kodek əlçatan deyil və video oxutma, VP9 və ya AV1-dən daha çox internet datası istifadə edəcək."</string>
<string name="revanced_spoof_video_streams_about_ios_title">iOS saxtakarlığı yan təsirləri</string>
<string name="revanced_spoof_video_streams_about_ios_summary">• Şəxsi uşaq videoları oynadılmaya bilər\n• Canlı yayımlar başdan başlayır\n• Videolar 1 saniyə tez bitə bilər\n• Opus səs kodlama yoxdur</string>
<string name="revanced_spoof_video_streams_about_ios_summary">"• Şəxsi uşaq videoları oxudulmaya bilər
• Canlı yayımlar başdan başlayır
• Videolar 1 saniyə tez bitir"</string>
<string name="revanced_spoof_video_streams_about_android_vr_title">Android VR saxtakarlığı yan təsirləri</string>
<string name="revanced_spoof_video_streams_about_android_vr_summary">• Uşaq videoları oynadılmaya bilər\n• Səs treki menyusu əskikdir\n• Sabit səs həcmi əlçatan deyil</string>
<string name="revanced_spoof_video_streams_about_android_vr_summary">"• Uşaq videoları oxudulmaya bilər
• Canlı yayımlar başdan başlayır
• Videolar 1 saniyə tez bitir"</string>
<string name="revanced_spoof_video_streams_language_title">İlkin səs yayımı dili</string>
<string name="revanced_spoof_video_streams_language_DEFAULT">Tətbiq dili</string>
<string name="revanced_spoof_video_streams_language_AR">Ərəbcə</string>
<string name="revanced_spoof_video_streams_language_AZ">Azərbaycanca</string>
<string name="revanced_spoof_video_streams_language_BG">Bolqarca</string>
<string name="revanced_spoof_video_streams_language_BN">Benqalca</string>
<string name="revanced_spoof_video_streams_language_CA">Katalanca</string>
<string name="revanced_spoof_video_streams_language_CS">Çexcə</string>
<string name="revanced_spoof_video_streams_language_DA">Danimarka dili</string>
<string name="revanced_spoof_video_streams_language_DE">Almanca</string>
<string name="revanced_spoof_video_streams_language_EL">Yunanca</string>
<string name="revanced_spoof_video_streams_language_EN">İngiliscə</string>
<string name="revanced_spoof_video_streams_language_ES">İspanca</string>
<string name="revanced_spoof_video_streams_language_ET">Estonca</string>
<string name="revanced_spoof_video_streams_language_FA">Farsca</string>
<string name="revanced_spoof_video_streams_language_FI">Fincə</string>
<string name="revanced_spoof_video_streams_language_FR">Fransızca</string>
<string name="revanced_spoof_video_streams_language_GU">Qücərat dili</string>
<string name="revanced_spoof_video_streams_language_HI">Hindcə</string>
<string name="revanced_spoof_video_streams_language_HR">Xorvatca</string>
<string name="revanced_spoof_video_streams_language_HU">Macarca</string>
<string name="revanced_spoof_video_streams_language_ID">İndoneziya dili</string>
<string name="revanced_spoof_video_streams_language_IT">İtalyanca</string>
<string name="revanced_spoof_video_streams_language_JA">Yaponca</string>
<string name="revanced_spoof_video_streams_language_KK">Qazaxca</string>
<string name="revanced_spoof_video_streams_language_KO">Koreyaca</string>
<string name="revanced_spoof_video_streams_language_LT">Litvaca</string>
<string name="revanced_spoof_video_streams_language_LV">Letonca</string>
<string name="revanced_spoof_video_streams_language_MK">Makedon Dili</string>
<string name="revanced_spoof_video_streams_language_MN">Monqolca</string>
<string name="revanced_spoof_video_streams_language_MR">Marathi dili</string>
<string name="revanced_spoof_video_streams_language_MS">Malay dili</string>
<string name="revanced_spoof_video_streams_language_MY">Birman dili</string>
<string name="revanced_spoof_video_streams_language_NL">Hollandca</string>
<string name="revanced_spoof_video_streams_language_OR">Oriya dili</string>
<string name="revanced_spoof_video_streams_language_PA">Pəncabca</string>
<string name="revanced_spoof_video_streams_language_PL">Polyak dili</string>
<string name="revanced_spoof_video_streams_language_PT_BR">Portuqalca (Braziliya)</string>
<string name="revanced_spoof_video_streams_language_PT_PT">Portuqalca (Portəgiz)</string>
<string name="revanced_spoof_video_streams_language_RO">Rumınca</string>
<string name="revanced_spoof_video_streams_language_RU">Rusca</string>
<string name="revanced_spoof_video_streams_language_SK">Slovak dili</string>
<string name="revanced_spoof_video_streams_language_SL">Sloven dili</string>
<string name="revanced_spoof_video_streams_language_SR">Serbcə</string>
<string name="revanced_spoof_video_streams_language_SV">İsveçcə</string>
<string name="revanced_spoof_video_streams_language_SW">Suahili dili</string>
<string name="revanced_spoof_video_streams_language_TA">Tamilcə</string>
<string name="revanced_spoof_video_streams_language_TE">Teluquca</string>
<string name="revanced_spoof_video_streams_language_TH">Tay dili</string>
<string name="revanced_spoof_video_streams_language_TR">Türkcə</string>
<string name="revanced_spoof_video_streams_language_UK">Ukrayna dili</string>
<string name="revanced_spoof_video_streams_language_UR">Urduca</string>
<string name="revanced_spoof_video_streams_language_VI">Vyetnamca</string>
<string name="revanced_spoof_video_streams_language_ZH">Çincə</string>
</patch>
</app>
<app id="twitch">
@@ -1217,8 +1346,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_block_audio_ads_summary_off">Səsli reklamlar bloklanmayıb</string>
</patch>
<patch id="ad.embedded.embeddedAdsPatch">
<string name="revanced_embedded_ads_service_unavailable">%s əlçatmazdır. Reklamlar görünə bilər. Seçimlərdə başqa reklam bloku xidmətinə keçirməyə cəhd et.</string>
<string name="revanced_embedded_ads_service_failed">%s serveri xəta sorğusu verdi. Reklam görünə bilər. Seçimlərdə başqa reklam bloku xidmətinə keçir.</string>
<string name="revanced_embedded_ads_service_unavailable">%s əlçatmazdır, reklamlar göstərilə bilər. Ayarlarda reklam əngəlləmə xidmətini dəyişdirməyə çalışın.</string>
<string name="revanced_embedded_ads_service_failed">%s bir xəta qaytardı, reklamlar göstərilə bilər. Ayarlarda reklam əngəlləmə xidmətini dəyişdirməyə çalışın.</string>
<string name="revanced_block_embedded_ads_title">Yerləşdirilən video reklamlarını əngəllə</string>
<string name="revanced_block_embedded_ads_entry_1">Qeyri-aktiv edildi</string>
<string name="revanced_block_embedded_ads_entry_2">Dəqiq proksi</string>

View File

@@ -1,38 +1,36 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Note: All strings must have a unique path, even if the same string is declared in two different apps.
This is because Crowdin requires temporarily flattening this file and removing the <app> and <patch> elements.
All strings must have a unique path, even if the same string is declared in two different apps.
This is because Crowdin requires temporarily flattening this file and removing the <app> and <patch> elements.
# General guidelines and information for translating
## Strings parameters can be reordered to allow more flexible translations if the grammar should be changed.
Strings with new lines must be raw strings where they're wrapped in quotes and new lines are not encoded.
Raw strings still requires escaping embedded double quotes but escaping embedded single quotes is optional.
For example, the patches string:
<string name="revanced_patches_string">You will arrive at %1$s in %2$s hours from now</string>
Could be translated to another language using a rearranged grammar:
<string name="revanced_patches_string">You will arrive %2$s hours from now at %1$s</string>
Raw strings are required because Crowdin AI translations regularly gets confused and
replace \n with an encoded new line character.
For Manager strings:
You will arrive at ${destination} in ${count} hours from now
Could be rearranged by changing the order of the ${} parameters:
You will arrive ${count} hours from now at ${destination}
Bad:
<string name="summary_key">First \'item\' text\nSecond \"item\" text</string>
Reordering is particularly relevant when translating into right to left languages, or for any language with grammar that is noticeably different from English.
Good:
<string name="summary_key">"First 'item' text
Second \"item\" text"</string>
## Single and double quotation marks must be escaped for patch strings (Manager does not require escaping any quotes).
All _patches_ single and double quotation marks must be escaped as \" or \'
Forgetting to do this will cause that string to appear in app with no quotation characters.
Correct:
<string name="revanced_string">You\'re correct. This is the \"correct\" way and this text will appear as expected in the app</string>
Not correct:
<string name="revanced_string">You're not correct. This is not the "correct" way and this text will not appear as expected the in app</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_dialog_ignore_button">Ігнараваць</string>
<string name="revanced_check_environment_failed_message">&lt;h5&gt;Гэта дадатак відавочна не з\'яўляецца патчам.&lt;/h5&gt;&lt;br&gt;Гэта дадатак можа працаваць няправільна, а таксама можа быць &lt;b&gt;небяспечным або нават небяспечным у выкарыстанні&lt;/b&gt;.&lt;br&gt;&lt;br&gt;Гэтыя праверкі азначаюць, што гэта дадатак было загаддзя перароблена або атрымана ад кагосьці іншага:&lt;br&gt;&lt;br&gt;&lt;small&gt;%1$s&lt;/small&gt;&lt;br&gt;Настойліва рэкамендуецца &lt;b&gt;выдаліць гэты дадатак і перарабіць яго самастойна&lt;/b&gt;, каб пераканацца, што вы выкарыстоўваеце правераны і бяспечны дадатак.&lt;p&gt;&lt;br&gt;Калі ігнараваць, гэта папярэджанне будзе паказана толькі два разы.</string>
<string name="revanced_check_environment_not_same_patching_device">Адкарэктавана на іншай прыладзе</string>
<string name="revanced_check_environment_manager_not_expected_installer">Не ўстаноўлена ReVanced Manager</string>
<string name="revanced_check_environment_not_near_patch_time">Адкарэктавана больш чым 10 хвілін таму</string>
<string name="revanced_check_environment_not_near_patch_time_days">Адкарэктавана %s дзён таму</string>
<string name="revanced_check_environment_not_near_patch_time_invalid">Дата стварэння APK пашкоджана</string>
</patch>
<patch id="misc.settings.settingsResourcePatch">
<string name="revanced_settings_confirm_user_dialog_title">Вы хочаце працягнуць?</string>
@@ -58,9 +56,17 @@ This is because Crowdin requires temporarily flattening this file and removing t
<!-- 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 не ўсталяваны. Усталюйце яго.</string>
<string name="gms_core_dialog_title">Патрабуецца дзеянне</string>
<string name="gms_core_dialog_not_whitelisted_not_allowed_in_background_message">MicroG GmsCore не мае дазволу на працу ў фонавым рэжыме.\n\nВыконвайце інструкцыі \"Не забівайце маю праграму\" для вашага тэлефона і прымяніце інструкцыі да ўстаноўкі MicroG.\n\nГэта патрабуецца для прыкладанне для працы.</string>
<string name="gms_core_dialog_not_whitelisted_not_allowed_in_background_message">"MicroG GmsCore не мае дазволу на працу ў фонавым рэжыме.
Выконвайце інструкцыі \"Не забівай маё прыкладанне\" для вашага тэлефона і прымяніце іх да вашай ўстаноўкі MicroG.
Гэта неабходна для працы прыкладання."</string>
<string name="gms_core_dialog_open_website_text">Адкрыць сайт</string>
<string name="gms_core_dialog_not_whitelisted_using_battery_optimizations_message">Аптымізацыя батарэі MicroG GmsCore павінна быць адключана, каб прадухіліць праблемы.\n\nНацісніце кнопку \"Працягнуць\" і адключыце аптымізацыю батарэі.</string>
<string name="gms_core_dialog_not_whitelisted_using_battery_optimizations_message">"Неабходна адключыць аптымізацыю батарэі для MicroG GmsCore, каб пазбегнуць праблем.
Адключэнне аптымізацыі батарэі для MicroG не паўплывае на выкарыстанне батарэі.
Націсніце кнопку \"Працягнуць\" і дазвольце змяніць аптымізацыю."</string>
<string name="gms_core_dialog_continue_text">Працягнуць</string>
</patch>
</app>
@@ -78,6 +84,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_settings_screen_12_video_title">Відэа</string>
</patch>
<patch id="misc.backgroundplayback.backgroundPlaybackPatch">
<string name="revanced_shorts_disable_background_playback_title">Адключыць прайграванне Shorts у фонавым</string>
<string name="revanced_shorts_disable_background_playback_summary_on">Прайграванне Shorts у фонавым адключана</string>
<string name="revanced_shorts_disable_background_playback_summary_off">Фоновый плейлист Shorts включен</string>
</patch>
<patch id="misc.debugging.enableDebuggingPatch">
<string name="revanced_debug_screen_title">Адладка</string>
@@ -94,10 +103,12 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_debug_toast_on_error_title">Паказаць тост пры памылцы ReVanced</string>
<string name="revanced_debug_toast_on_error_summary_on">Тост паказваецца, калі ўзнікае памылка</string>
<string name="revanced_debug_toast_on_error_summary_off">Тост не паказваецца, калі ўзнікае памылка</string>
<string name="revanced_debug_toast_on_error_user_dialog_message">Адключэнне апавяшчэнняў пра памылкі схавае ўсе апавяшчэнні аб памылках ReVanced.\n\nВы не будзеце атрымліваць апавяшчэнні аб непрадбачаных падзеях.</string>
<string name="revanced_debug_toast_on_error_user_dialog_message">"Адключэнне паведамленняў пра памылкі схавае ўсе апавяшчэнні ReVanced пра памылкі.
Вы не будзеце атрымліваць апавяшчэнні пра нечаканыя падзеі."</string>
</patch>
<patch id="layout.hide.general.hideLayoutComponentsPatch">
<string name="revanced_disable_like_subscribe_glow_title">Адключыць свячэнне кнопкі \"Падабаецца\" / \"Падпісацца\".</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>
@@ -113,7 +124,12 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_channel_watermark_summary_on">Вадзяны знак схаваны</string>
<string name="revanced_hide_channel_watermark_summary_off">Паказаны вадзяны знак</string>
<string name="revanced_hide_horizontal_shelves_title">Схавайце гарызантальныя паліцы</string>
<string name="revanced_hide_horizontal_shelves_summary_on">Паліцы схаваны, напрыклад:\n• Апошнія навіны\n• Працягвайце прагляд\n• Даследуйце іншыя каналы\n• Пакупкі\n• Глядзіце яшчэ раз</string>
<string name="revanced_hide_horizontal_shelves_summary_on">"Схаваны паліцы, такія як:
• Навіны
• Працяг прагляду
• Даведайцеся больш пра каналы
• Пакупкі
• Паглядзець яшчэ раз"</string>
<string name="revanced_hide_horizontal_shelves_summary_off">Паказаны паліцы</string>
<!-- 'Join' should be translated using the same localized wording YouTube displays.
This appears in the video player for certain videos. -->
@@ -210,7 +226,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_attributes_section_title">Схаваць раздзел атрыбутаў</string>
<string name="revanced_hide_attributes_section_summary_on">Раздзелы \"Выбраныя месцы\", гульні і музыка схаваны</string>
<string name="revanced_hide_attributes_section_summary_off">Паказваюцца раздзелы \"Выбраныя месцы\", Гульні і Музыка</string>
<string name="revanced_hide_chapters_section_title">Схаваць раздзел \"Раздзелы\".</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_podcast_section_title">Схаваць раздзел \"Даследаваць падкаст\"</string>
@@ -240,12 +256,18 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_filter_bar_feed_in_related_videos_summary_off">Паказана ў звязаных відэа</string>
<string name="revanced_comments_screen_title">Каментарыі</string>
<string name="revanced_comments_screen_summary">Схаваць або паказаць кампаненты раздзела каментарыяў</string>
<string name="revanced_hide_comments_chat_summary_title">Схаваць \"Зводка чата\" </string>
<string name="revanced_hide_comments_chat_summary_summary_on">«Агляд чата» схаваны</string>
<string name="revanced_hide_comments_chat_summary_summary_off">«Агляд чата» паказаны</string>
<string name="revanced_hide_comments_by_members_header_title">Схаваць загаловак \"Каментарыі ўдзельнікаў\"</string>
<string name="revanced_hide_comments_by_members_header_summary_on">Загаловак \"Каментарыі ўдзельнікаў\" схаваны</string>
<string name="revanced_hide_comments_by_members_header_summary_off">Паказаны загаловак \"Каментарыі ўдзельнікаў\"</string>
<string name="revanced_hide_comments_section_title">Схаваць раздзел каментарыяў</string>
<string name="revanced_hide_comments_section_summary_on">Раздзел каментарыяў схаваны</string>
<string name="revanced_hide_comments_section_summary_off">Паказваецца раздзел каментарыяў</string>
<string name="revanced_hide_comments_create_a_short_button_title">Схаваць кнопку \"Створиць Short\"</string>
<string name="revanced_hide_comments_create_a_short_button_summary_on">Кнопка \"Створиць Short\" схавана</string>
<string name="revanced_hide_comments_create_a_short_button_summary_off">Кнопка \"Створиць Short\" паказана</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>
@@ -256,6 +278,12 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_summary_on">Кнопкі меткі часу і эмодзі схаваны</string>
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_summary_off">Паказваюцца кнопкі меткі часу і эмодзі</string>
<!-- https://logos.fandom.com/wiki/YouTube/Yoodles -->
<string name="revanced_hide_doodles_title">Схаваць YouTube Doodles</string>
<string name="revanced_hide_doodles_summary_on">Doodles у панэлі пошуку схаваны</string>
<string name="revanced_hide_doodles_summary_off">Doodles у панэлі пошуку паказаны</string>
<string name="revanced_hide_doodles_user_dialog_message">"Doodles па YouTube паказваюцца некалькі дзён у год.
Калі Doodle зараз паказваецца ў вашым рэгіёне і гэты параметр схаваны, панэль фільтраў ніжэй радка пошуку таксама будзе схавана."</string>
<string name="revanced_custom_filter_screen_title">Карыстальніцкі фільтр</string>
<string name="revanced_custom_filter_screen_summary">Схавайце кампаненты з дапамогай карыстацкіх фільтраў</string>
<string name="revanced_custom_filter_title">Уключыць карыстальніцкі фільтр</string>
@@ -279,16 +307,36 @@ This is because Crowdin requires temporarily flattening this file and removing t
<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. -->
<string name="revanced_hide_keyword_content_phrases_summary">"Ключавыя словы і фразы для схавання, падзеленыя пераходамі на новую радок
Ключавыя словы могуць быць назвамі каналаў або любым тэкстам, які паказаны ў назвах відэа
Словы з вялікімі літарамі пасярэдзіне павінны ўводзіцца з вялікай літары (напрыклад: iPhone, TikTok, LeBlanc)"</string>
<string name="revanced_hide_keyword_content_about_title">Аб фільтрацыі ключавых слоў</string>
<string name="revanced_hide_keyword_content_about_summary">"Вынікі дома/падпіскі/пошуку фільтруюцца, каб схаваць змест, які адпавядае ключавым словам і фразам
Абмежаванні
• Shorts нельга схаваць па назве канала
• Некаторыя элементы інтэрфейсу могуць не быць схаваны
• Пошук па ключавым слове можа не паказаць вынікі"</string>
<string name="revanced_hide_keyword_content_about_whole_words_title">Супадзенне цэлых слоў</string>
<!-- Translations _must_ use a localized example. For languages that do not use spaces between words (Chinese, Japanese, etc) the English AI example should be used since no localized examples exist. Or if using machine translations, or if nobody wants to think of a localized example, then the English 'ai' example should be left as-is. -->
<string name="revanced_hide_keyword_content_about_whole_words_summary">Калі вы ахінеце ключавое слова або фразу ў двухразовыя лапкі, гэта перашкодзіць частковаму супадзенню назваў відэа і каналаў&lt;br&gt;&lt;br&gt;Напрыклад,&lt;br&gt;&lt;b&gt;\"ai\"&lt;/b&gt; схавае відэа: &lt;b&gt;How does AI work?&lt;/b&gt;&lt;br&gt;але не схавае: &lt;b&gt;What does fair use mean?&lt;/b&gt;</string>
<!-- Translations of this should not be longer than the original English text, otherwise the text can be clipped and not entirely shown. -->
<string name="revanced_hide_keyword_toast_invalid_common">Нельга выкарыстоўваць ключавое слова: %s</string>
<string name="revanced_hide_keyword_toast_invalid_common_whole_word_required">Дадайце цытаты да ключавога слова: %s</string>
<string name="revanced_hide_keyword_toast_invalid_conflicting">Ключавое слова мае супярэчлівыя дэкларацыі: %s</string>
<string name="revanced_hide_keyword_toast_invalid_length">Ключавое слова занадта кароткае і патрабуе цытат: %s</string>
<string name="revanced_hide_keyword_toast_invalid_broad">Ключавое слова схавае ўсе відэа: %s</string>
</patch>
<patch id="ad.general.hideAdsResourcePatch">
<string name="revanced_hide_general_ads_title">Схаваць агульную рэкламу</string>
<string name="revanced_hide_general_ads_summary_on">Агульныя аб\"явы схаваныя</string>
<string name="revanced_hide_general_ads_summary_off">Паказваюцца агульныя аб\"явы</string>
<string name="revanced_hide_fullscreen_ads_title">Схаваць поўнаэкранную рэкламу</string>
<string name="revanced_hide_fullscreen_ads_summary_on">Поўнаэкранная рэклама схавана\n\nГэта функцыя даступная толькі для старых прылад</string>
<string name="revanced_hide_fullscreen_ads_summary_on">"Схаваны поўнаэкранныя рэкламныя ролікі
Гэтая функцыя даступная толькі для старых прылад"</string>
<string name="revanced_hide_fullscreen_ads_summary_off">Адлюстроўваецца поўнаэкранная рэклама</string>
<string name="revanced_hide_buttoned_ads_title">Схаваць рэкламу на кнопках</string>
<string name="revanced_hide_buttoned_ads_summary_on">Аб\"явы на кнопках схаваныя</string>
@@ -302,6 +350,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
<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_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>
<string name="revanced_hide_shopping_links_title">Схаваць спасылкі на пакупкі ў апісанні відэа</string>
<string name="revanced_hide_shopping_links_summary_on">Спасылкі на пакупкі схаваныя</string>
<string name="revanced_hide_shopping_links_summary_off">Паказваюцца спасылкі на пакупкі</string>
@@ -375,7 +426,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_swipe_volume_title">Уключыць жэст гучнасці</string>
<string name="revanced_swipe_volume_summary_on">Правядзенне пальцам па гучнасці ўключана</string>
<string name="revanced_swipe_volume_summary_off">Правядзенне пальцам па гучнасці адключана</string>
<string name="revanced_swipe_press_to_engage_title">Уключыць жэст \"націсканне для правядзення пальцам\".</string>
<string name="revanced_swipe_press_to_engage_title">Уключыць жэст \"націсканне для правядзення пальцам\"</string>
<string name="revanced_swipe_press_to_engage_summary_on">Правядзенне пальцам уключана</string>
<string name="revanced_swipe_press_to_engage_summary_off">Правядзенне пальцам адключана</string>
<string name="revanced_swipe_haptic_feedback_title">Уключыць тактыльную зваротную сувязь</string>
@@ -405,22 +456,22 @@ This is because Crowdin requires temporarily flattening this file and removing t
<patch id="layout.buttons.action.hideButtonsPatch">
<string name="revanced_hide_buttons_screen_title">Кнопкі дзеянняў</string>
<string name="revanced_hide_buttons_screen_summary">Схаваць або паказаць кнопкі пад відэа</string>
<string name="revanced_hide_like_dislike_button_title">Схаваць \"Падабаецца\" і \"Не падабаецца\".</string>
<string name="revanced_hide_like_dislike_button_title">Схаваць \"Падабаецца\" і \"Не падабаецца\"</string>
<string name="revanced_hide_like_dislike_button_summary_on">Кнопкі \"Падабаецца\" і \"Не падабаецца\" схаваны</string>
<string name="revanced_hide_like_dislike_button_summary_off">Паказваюцца кнопкі \"Падабаецца\" і \"Не падабаецца\".</string>
<string name="revanced_hide_like_dislike_button_summary_off">Паказваюцца кнопкі \"Падабаецца\" і \"Не падабаецца\"</string>
<!-- 'Share' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_share_button_title">Схаваць Share</string>
<string name="revanced_hide_share_button_summary_on">Кнопка \"Падзяліцца\" схавана</string>
<string name="revanced_hide_share_button_summary_off">Паказана кнопка \"Падзяліцца\".</string>
<string name="revanced_hide_share_button_summary_off">Паказана кнопка \"Падзяліцца\"</string>
<!-- 'Report' should be translated with the same localized wording that YouTube displays.
This button usually appears only on live streams. -->
<string name="revanced_hide_report_button_title">Схаваць справаздачу</string>
<string name="revanced_hide_report_button_summary_on">Кнопка \"Паведаміць\" схавана</string>
<string name="revanced_hide_report_button_summary_off">Паказана кнопка \"Паведаміць\".</string>
<string name="revanced_hide_report_button_summary_off">Паказана кнопка \"Паведаміць\"</string>
<!-- 'Remix' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_remix_button_title">Схаваць рэмікс</string>
<string name="revanced_hide_remix_button_summary_on">Кнопка \"Рэмікс\" схавана</string>
<string name="revanced_hide_remix_button_summary_off">Паказана кнопка \"Рэмікс\".</string>
<string name="revanced_hide_remix_button_summary_off">Паказана кнопка \"Рэмікс\"</string>
<!-- 'Download' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_download_button_title">Схаваць загрузку</string>
<string name="revanced_hide_download_button_summary_on">Кнопка загрузкі схавана</string>
@@ -436,7 +487,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
<!-- 'Save' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_playlist_button_title">Схаваць Захаваць у плэйліст</string>
<string name="revanced_hide_playlist_button_summary_on">Кнопка \"Захаваць у спіс прайгравання\" схавана</string>
<string name="revanced_hide_playlist_button_summary_off">Паказана кнопка \"Захаваць у спіс прайгравання\".</string>
<string name="revanced_hide_playlist_button_summary_off">Паказана кнопка \"Захаваць у спіс прайгравання\"</string>
</patch>
<patch id="layout.buttons.navigation.navigationButtonsPatch">
<string name="revanced_navigation_buttons_screen_title">Кнопкі навігацыі</string>
@@ -444,20 +495,25 @@ This is because Crowdin requires temporarily flattening this file and removing t
<!-- 'Home' should be translated using the same localized wording YouTube displays for the tab. -->
<string name="revanced_hide_home_button_title">Схаваць галоўную</string>
<string name="revanced_hide_home_button_summary_on">Кнопка \"Дадому\" схавана</string>
<string name="revanced_hide_home_button_summary_off">Паказана кнопка \"Дадому\".</string>
<string name="revanced_hide_home_button_summary_off">Паказана кнопка \"Дадому\"</string>
<!-- 'Shorts' should be translated using the same localized wording YouTube displays the tab. -->
<string name="revanced_hide_shorts_button_title">Схаваць Shorts</string>
<string name="revanced_hide_shorts_button_summary_on">Кнопка Shorts схавана</string>
<string name="revanced_hide_shorts_button_summary_off">Кнопка shorts паказваецца</string>
<!-- The Create button has no display name. Translate normally. -->
<string name="revanced_hide_create_button_title">Схаваць Стварыць</string>
<string name="revanced_hide_create_button_summary_on">Кнопка \"Стварыць\" схавана</string>
<string name="revanced_hide_create_button_summary_off">Паказана кнопка \"Стварыць\".</string>
<string name="revanced_hide_create_button_summary_off">Паказана кнопка \"Стварыць\"</string>
<!-- 'Subscriptions' should be translated using the same localized wording YouTube displays the tab. -->
<string name="revanced_hide_subscriptions_button_title">Схаваць падпіскі</string>
<string name="revanced_hide_subscriptions_button_summary_on">Кнопка \"Падпіскі\" схавана</string>
<string name="revanced_hide_subscriptions_button_summary_off">Паказана кнопка \"Падпіскі\".</string>
<string name="revanced_hide_subscriptions_button_summary_off">Паказана кнопка \"Падпіскі\"</string>
<!-- 'Notifications' should be translated using the same localized wording YouTube displays the tab. -->
<string name="revanced_switch_create_with_notifications_button_title">Пераключальнік \"Стварыць з апавяшчэннямі\".</string>
<string name="revanced_switch_create_with_notifications_button_summary_on">Кнопка \"Стварыць\" замяняецца кнопкай \"Апавяшчэнні\"\n\nЗаўвага: пры ўключэнні гэтага таксама прымусова хаваецца відэарэклама</string>
<string name="revanced_switch_create_with_notifications_button_summary_off">Кнопка \"Стварыць\" не ўзаемадзейнічае з кнопкай \"Апавяшчэнні\".</string>
<string name="revanced_switch_create_with_notifications_button_title">Пераключальнік \"Стварыць з апавяшчэннямі\"</string>
<string name="revanced_switch_create_with_notifications_button_summary_on">"Кнопка «Стварыць» заменена кнопкай «Апавяшчэнні»
Заўвага: Уключэнне гэтага таксама прымусова схавае відэарэкламу"</string>
<string name="revanced_switch_create_with_notifications_button_summary_off">Кнопка \"Стварыць\" не ўзаемадзейнічае з кнопкай \"Апавяшчэнні\"</string>
<string name="revanced_hide_navigation_button_labels_title">Схаваць меткі кнопак навігацыі</string>
<string name="revanced_hide_navigation_button_labels_summary_on">Цэтлікі схаваныя</string>
<string name="revanced_hide_navigation_button_labels_summary_off">Этыкеткі паказаны</string>
@@ -474,6 +530,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_player_flyout_additional_settings_summary_on">Меню дадатковых налад схавана</string>
<string name="revanced_hide_player_flyout_additional_settings_summary_off">Адлюструецца меню дадатковых налад</string>
<!-- 'Sleep timer' should be translated using the same localized wording YouTube displays for the menu item. -->
<string name="revanced_hide_player_flyout_sleep_timer_title">Схаваць таймер сну</string>
<string name="revanced_hide_player_flyout_sleep_timer_summary_on">Меню таймера сну схавана</string>
<string name="revanced_hide_player_flyout_sleep_timer_summary_off">Меню таймера сну паказана</string>
<!-- 'Loop video' should be translated using the same localized wording YouTube displays for the menu item. -->
<string name="revanced_hide_player_flyout_loop_video_title">Схаваць цыкл відэа</string>
<string name="revanced_hide_player_flyout_loop_video_summary_on">Меню цыклічнага відэа схавана</string>
@@ -482,6 +541,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_player_flyout_ambient_mode_title">Схаваць неактыўны рэжым</string>
<string name="revanced_hide_player_flyout_ambient_mode_summary_on">Меню неактыўнага рэжыму схавана</string>
<string name="revanced_hide_player_flyout_ambient_mode_summary_off">Адлюстроўваецца меню рэжыму навакольнага асяроддзя</string>
<string name="revanced_hide_player_flyout_stable_volume_title">Схаваць стабільны гук</string>
<string name="revanced_hide_player_flyout_stable_volume_summary_off">Меню стабільнага гуку паказана</string>
<string name="revanced_hide_player_flyout_stable_volume_summary_on">Меню стабільнага гуку схавана</string>
<!-- 'Help & feedback' should be translated using the same localized wording YouTube displays for the menu item. -->
<string name="revanced_hide_player_flyout_help_title">Схаваць Даведку &amp; зваротная сувязь</string>
<string name="revanced_hide_player_flyout_help_summary_on">Дапамога &amp; меню зваротнай сувязі схавана</string>
@@ -506,7 +568,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
<!-- 'Watch in VR' should be translated using the same localized wording YouTube displays for the menu item. -->
<string name="revanced_hide_player_flyout_watch_in_vr_title">Схаваць гадзіннік у VR</string>
<string name="revanced_hide_player_flyout_watch_in_vr_summary_on">Меню прагляду ў VR схавана</string>
<string name="revanced_hide_player_flyout_watch_in_vr_summary_off">Паказана меню \"Глядзець у VR\".</string>
<string name="revanced_hide_player_flyout_watch_in_vr_summary_off">Паказана меню \"Глядзець у VR\"</string>
<string name="revanced_hide_player_flyout_video_quality_footer_title">Схаваць калонтытул меню якасці відэа</string>
<string name="revanced_hide_player_flyout_video_quality_footer_summary_on">Ніжні калонтытул меню якасці відэа схаваны</string>
<string name="revanced_hide_player_flyout_video_quality_footer_summary_off">Паказваецца ніжні калонтытул меню якасці відэа</string>
@@ -519,7 +581,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
<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>
@@ -555,16 +617,27 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_seekbar_thumbnail_summary_off">Адлюстроўваецца панэль пошуку эскізаў</string>
</patch>
<patch id="layout.hide.shorts.hideShortsComponentsResourcePatch">
<string name="revanced_shorts_player_screen_title">Прайгравальнік Shorts</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>
<!-- '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_search_title">Схаваць Shorts у выніках пошуку</string>
<string name="revanced_hide_shorts_search_summary_on">Shorts у выніках пошуку схаваны</string>
<string name="revanced_hide_shorts_search_summary_off">Shorts у выніках пошуку паказаны</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>
<string name="revanced_hide_shorts_join_button_summary_off">Паказана кнопка «Далучыцца».</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_summary_on">Кнопка \"Падпісацца\" схавана</string>
<string name="revanced_hide_shorts_subscribe_button_summary_off">Паказана кнопка «Падпісацца».</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>
@@ -573,33 +646,54 @@ This is because Crowdin requires temporarily flattening this file and removing t
<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_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_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_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_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_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>
<string name="revanced_hide_shorts_hashtag_button_summary_on">Хештег-кнопка Shorts скрыта</string>
<string name="revanced_hide_shorts_hashtag_button_summary_off">Хештег-кнопка Shorts отображается</string>
<string name="revanced_hide_shorts_search_suggestions_title">Схаваць прапановы пошуку</string>
<string name="revanced_hide_shorts_search_suggestions_summary_on">Пошукавыя прапановы схаваны</string>
<string name="revanced_hide_shorts_search_suggestions_summary_off">Паказваюцца прапановы пошуку</string>
<string name="revanced_hide_shorts_like_button_title">Схаваць кнопку \"Падабаецца\".</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_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_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_like_button_summary_off">Паказана кнопка \"Падабаецца\"</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_dislike_button_summary_off">Паказана кнопка \"Не падабаецца\"</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_summary_on">Кнопка \"Рэмікс\" схавана</string>
<string name="revanced_hide_shorts_remix_button_summary_off">Паказана кнопка \"Рэмікс\".</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_summary_on">Кнопка \"Падзяліцца\" схавана</string>
<string name="revanced_hide_shorts_share_button_summary_off">Паказана кнопка \"Падзяліцца\".</string>
<string name="revanced_hide_shorts_share_button_summary_off">Паказана кнопка \"Падзяліцца\"</string>
<string name="revanced_hide_shorts_info_panel_title">Схаваць інфармацыйную панэль</string>
<string name="revanced_hide_shorts_info_panel_summary_on">Інфармацыйная панэль схавана</string>
<string name="revanced_hide_shorts_info_panel_summary_off">Паказана інфармацыйная панэль</string>
@@ -615,7 +709,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_shorts_full_video_link_label_title">Схаваць поўную метку спасылкі на відэа</string>
<string name="revanced_hide_shorts_full_video_link_label_summary_on">Метка спасылкі на відэа схавана</string>
<string name="revanced_hide_shorts_full_video_link_label_summary_off">Адлюструецца метка спасылкі на відэа</string>
<string name="revanced_hide_shorts_sound_button_title">Кнопка \"Схаваць гук\".</string>
<string name="revanced_hide_shorts_sound_button_title">Кнопка \"Схаваць гук\"</string>
<string name="revanced_hide_shorts_sound_button_summary_on">Кнопка гуку схавана</string>
<string name="revanced_hide_shorts_sound_button_summary_off">Паказана кнопка гуку</string>
<string name="revanced_hide_shorts_navigation_bar_title">Схаваць панэль навігацыі</string>
@@ -637,6 +731,11 @@ This is because Crowdin requires temporarily flattening this file and removing t
<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.openVideosFullscreen">
<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>
<patch id="layout.player.overlay.customPlayerOverlayOpacityResourcePatch">
<string name="revanced_player_overlay_opacity_title">Непразрыстасць накладання прайгравальніка</string>
<string name="revanced_player_overlay_opacity_summary">Значэнне непразрыстасці паміж 0-100, дзе 0 - празрысты</string>
@@ -649,12 +748,14 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_ryd_failure_client_rate_limit_requested">Дызлайкі недаступныя (дасягнуты ліміт кліенцкага API)</string>
<string name="revanced_ryd_failure_generic">Не падабаецца (%s)</string>
<!-- Toast shown if the user enables RYD while a video is opened, and then tries to vote for the video. -->
<string name="revanced_ryd_failure_ryd_enabled_while_playing_video_then_user_voted">Перазагрузіце відэа, каб прагаласаваць з дапамогай функцыі \"Вярнуць не падабаецца YouTube\".</string>
<string name="revanced_ryd_failure_ryd_enabled_while_playing_video_then_user_voted">Перазагрузіце відэа, каб прагаласаваць з дапамогай функцыі \"Вярнуць не падабаецца YouTube\"</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_summary_on_disclaimer">Адзнакі \"Не падабаецца\" ў Shorts\n\nАбмежаванне: адзнакі \"Не падабаецца\" могуць не з\"яўляцца ў рэжыме інкогніта</string>
<string name="revanced_ryd_shorts_summary_on_disclaimer">"Непападання паказаны на 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>
@@ -692,6 +793,16 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_wide_searchbar_summary_off">Шырокая панэль пошуку адключана</string>
</patch>
<patch id="layout.seekbar.seekbarThumbnailsPatch">
<string name="revanced_seekbar_thumbnails_high_quality_title">Включить миниатюры высокого качества</string>
<string name="revanced_seekbar_thumbnails_high_quality_summary_on">Миниатюры ползунка прогресса — высокого качества</string>
<string name="revanced_seekbar_thumbnails_high_quality_summary_off">Миниатюры ползунка прогресса — среднего качества</string>
<string name="revanced_seekbar_thumbnails_high_quality_legacy_summary_on">Миниатюры ползунка прогресса в полноэкранном режиме — высокого качества</string>
<string name="revanced_seekbar_thumbnails_high_quality_legacy_summary_off">Миниатюры ползунка прогресса в полноэкранном режиме — среднего качества</string>
<string name="revanced_seekbar_thumbnails_high_quality_dialog_message">"Гэта таксама аднавіць мініатюры на трансляцыях у прамым эфіры, якія не маюць мініатюр з магчымасцю перамоткі.
Мініатюры з магчымасцю перамоткі будуць выкарыстоўваць тую ж якасць, што і бягучае відэа.
Гэтая функцыя лепш за ўсё працуе з якасцю відэа 720p або ніжэй і пры выкарыстанні вельмі хуткага Інтэрнэт-злучэння."</string>
<string name="revanced_restore_old_seekbar_thumbnails_title">Аднавіць старыя мініяцюры панэлі пошуку</string>
<string name="revanced_restore_old_seekbar_thumbnails_summary_on">Эскізы панэлі пошуку з\"явяцца над панэллю пошуку</string>
<string name="revanced_restore_old_seekbar_thumbnails_summary_off">Мініяцюры панэлі пошуку з\"явяцца ў поўнаэкранным рэжыме</string>
@@ -718,7 +829,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_sb_general_time_without_sum_off">Паказана поўная даўжыня відэа</string>
<string name="revanced_sb_create_segment_category">Стварэнне новых сегментаў</string>
<string name="revanced_sb_enable_create_segment">Паказаць кнопку стварэння новага сегмента</string>
<string name="revanced_sb_enable_create_segment_sum_on">Паказана кнопка \"Стварыць новы сегмент\".</string>
<string name="revanced_sb_enable_create_segment_sum_on">Паказана кнопка \"Стварыць новы сегмент\"</string>
<string name="revanced_sb_enable_create_segment_sum_off">Кнопка \"Стварыць новы сегмент\" не паказваецца</string>
<string name="revanced_sb_general_adjusting">Адрэгулюйце новы крок сегмента</string>
<string name="revanced_sb_general_adjusting_sum">Колькасць мілісекунд, на якую перамяшчаюцца кнопкі рэгулявання часу пры стварэнні новых сегментаў</string>
@@ -738,6 +849,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_sb_general_skipcount_sum_off">Адсочванне колькасці пропускаў не ўключана</string>
<string name="revanced_sb_general_min_duration">Мінімальная працягласць сегмента</string>
<string name="revanced_sb_general_min_duration_sum">Сегменты, карацейшыя за гэта значэнне (у секундах), не будуць паказвацца або прапускацца</string>
<string name="revanced_sb_general_min_duration_invalid">Неверная продолжительность</string>
<string name="revanced_sb_general_uuid">Ваш асабісты ідэнтыфікатар карыстальніка</string>
<string name="revanced_sb_general_uuid_sum">Гэта павінна быць прыватным. Гэта як пароль, і яго нельга нікому паведамляць. Калі ў кагосьці гэта ёсць, ён можа выдаваць сябе за вас</string>
<string name="revanced_sb_general_uuid_invalid">Прыватны ідэнтыфікатар карыстальніка павінен быць не менш за 30 сімвалаў</string>
@@ -753,7 +865,11 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_sb_settings_import_successful">Налады паспяхова імпартаваны</string>
<string name="revanced_sb_settings_import_failed">Не ўдалося імпартаваць: %s</string>
<string name="revanced_sb_settings_export_failed">Не ўдалося экспартаваць: %s</string>
<string name="revanced_sb_settings_revanced_export_user_id_warning">Вашы налады ўтрымліваюць прыватны ідэнтыфікатар карыстальніка SponsorBlock.\n\nВаш ідэнтыфікатар карыстальніка падобны на пароль, і яго ніколі не трэба раскрываць.\n</string>
<string name="revanced_sb_settings_revanced_export_user_id_warning">"Вашы налады ўтрымліваюць асабісты ідэнтыфікатар SponsorBlock.
Ваш ідэнтыфікатар карыстальніка падобны да пароля, і яго ніколі не варта дзяліцца.
"</string>
<string name="revanced_sb_settings_revanced_export_user_id_warning_dismiss">Больш не паказваць</string>
<string name="revanced_sb_diff_segments">Змяніць паводзіны сегмента</string>
<string name="revanced_sb_segments_sponsor">Спонсар</string>
@@ -813,9 +929,10 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_sb_submit_failed_invalid">Немагчыма адправіць сегмент: %s</string>
<string name="revanced_sb_submit_failed_timeout">SponsorBlock часова не працуе</string>
<string name="revanced_sb_submit_failed_unknown_error">Немагчыма адправіць сегмент (статус: %1$d %2$s)</string>
<string name="revanced_sb_submit_failed_rate_limit">Немагчыма адправіць сегмент.\nАцэнка абмежаваная (занадта шмат ад аднаго карыстальніка або IP)</string>
<string name="revanced_sb_submit_failed_rate_limit">Немагчыма адправіць сегмент. Абмежаванне па хуткасці (занадта шмат ад аднаго і таго ж карыстальніка або IP-адраса)</string>
<string name="revanced_sb_submit_failed_forbidden">Немагчыма адправіць сегмент: %s</string>
<string name="revanced_sb_submit_failed_duplicate">Немагчыма адправіць сегмент.\nУжо існуе</string>
<string name="revanced_sb_submit_failed_duplicate">"Немагчыма адправіць сегмент.
Ужо існуе"</string>
<string name="revanced_sb_submit_succeeded">Сегмент паспяхова адпраўлены</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. -->
<string name="revanced_sb_sponsorblock_connection_failure_timeout">SponsorBlock часова недаступны (час чакання API скончыўся)</string>
@@ -838,7 +955,15 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_sb_new_segment_time_start">Час пачатку сегмента</string>
<string name="revanced_sb_new_segment_time_end">Час заканчэння сегмента</string>
<string name="revanced_sb_new_segment_confirm_title">Ці правільны час?</string>
<string name="revanced_sb_new_segment_confirm_content">Сегмент ад\n\n%1$s\nда\n%2$s\n\n(%3$s)\n\nГатовы адправіць?</string>
<string name="revanced_sb_new_segment_confirm_content">"Сэгмэнт знаходзіцца паміж
%1$s
да
%2$s
(%3$s)
Гатовыя адправіць?"</string>
<string name="revanced_sb_new_segment_start_is_before_end">Пачынаць трэба раней за канец</string>
<string name="revanced_sb_new_segment_mark_locations_first">Спачатку адзначце два месцы на панэлі часу</string>
<string name="revanced_sb_new_segment_preview_segment_first">Папярэдні прагляд сегмента і пераканайцеся, што ён праходзіць плаўна</string>
@@ -856,6 +981,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_sb_stats_username_changed">Імя карыстальніка паспяхова зменена</string>
<string name="revanced_sb_stats_reputation">Ваша рэпутацыя &lt;b&gt;%.2f&lt;/b&gt;</string>
<string name="revanced_sb_stats_submissions">Вы стварылі &lt;b&gt;%s&lt;/b&gt; сегменты</string>
<string name="revanced_sb_stats_submissions_sum">Коснитесь, чтобы просмотреть ваши сегменты</string>
<string name="revanced_sb_stats_saved_zero">Табліца лідэраў SponsorBlock</string>
<string name="revanced_sb_stats_saved">Вы выратавалі людзей з &lt;b&gt;%s&lt;/b&gt; сегменты</string>
<string name="revanced_sb_stats_saved_sum_zero">Націсніце тут, каб убачыць глабальную статыстыку і вядучых удзельнікаў</string>
@@ -879,10 +1005,15 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_spoof_app_version_title">Версія праграмы Spoof</string>
<string name="revanced_spoof_app_version_summary_on">Версія падробленая</string>
<string name="revanced_spoof_app_version_summary_off">Версія не падробленая</string>
<string name="revanced_spoof_app_version_user_dialog_message">Версія праграмы будзе падменена на старую версію YouTube.\n\nГэта зменіць знешні выгляд і функцыі праграмы, але могуць узнікнуць невядомыя пабочныя эфекты.\n\nКалі пазней выключыць, рэкамендуецца ачысціць даныя праграмы, каб прадухіліць памылкі карыстацкага інтэрфейсу.</string>
<string name="revanced_spoof_app_version_user_dialog_message">"Версія прыкладання будзе падроблены да старэйшай версіі YouTube.
Гэта зменіць знешні выгляд і функцыі прыкладання, але могуць узнікнуць невядомыя пабочныя эфекты.
Калі пазней будзе адключана, рэкамендуецца ачысціць даныя прыкладання, каб пазбегнуць памылак у інтэрфейсе."</string>
<!-- 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 -->
<string name="revanced_spoof_app_version_target_title">Падробка мэтавай версіі праграмы</string>
<string name="revanced_spoof_app_version_target_entry_1">19.35.36 — Восстановить старые значки плеера Shorts</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 - Аднавіць хуткасць шырокага відэа &amp; якаснае меню</string>
@@ -892,12 +1023,20 @@ This is because Crowdin requires temporarily flattening this file and removing t
<patch id="layout.startpage.changeStartPagePatch">
<string name="revanced_change_start_page_title">Усталяваць стартавую старонку</string>
<string name="revanced_change_start_page_entry_default">Па змаўчанні</string>
<string name="revanced_change_start_page_entry_browse">Обзор каналов</string>
<string name="revanced_change_start_page_entry_explore">Дасьледуйце</string>
<string name="revanced_change_start_page_entry_gaming">Игры</string>
<string name="revanced_change_start_page_entry_history">Гісторыя</string>
<string name="revanced_change_start_page_entry_library">Библиотека</string>
<string name="revanced_change_start_page_entry_liked_videos">Спадабаліся відэа</string>
<string name="revanced_change_start_page_entry_live">В прямом эфире</string>
<string name="revanced_change_start_page_entry_movies">Фильмы</string>
<string name="revanced_change_start_page_entry_music">Музыка</string>
<string name="revanced_change_start_page_entry_search">Пошук</string>
<string name="revanced_change_start_page_entry_sports">Спорт</string>
<string name="revanced_change_start_page_entry_subscriptions">Падпіскі</string>
<string name="revanced_change_start_page_entry_trending">У трэндзе</string>
<string name="revanced_change_start_page_entry_watch_later">Посмотреть позже</string>
</patch>
<patch id="layout.startupshortsreset.disableResumingShortsOnStartupPatch">
<string name="revanced_disable_resuming_shorts_player_title">Адключыць аднаўленне прайгравання Shorts</string>
@@ -905,6 +1044,12 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_disable_resuming_shorts_player_summary_off">Прайгравальнік Shorts адновіцца пры запуску праграмы</string>
</patch>
<patch id="layout.shortsautoplay.shortsAutoplayPatch">
<string name="revanced_shorts_autoplay_title">Автовоспроизведение Shorts</string>
<string name="revanced_shorts_autoplay_summary_on">Shorts будут воспроизводиться автоматически</string>
<string name="revanced_shorts_autoplay_summary_off">Shorts будут повторяться</string>
<string name="revanced_shorts_autoplay_background_title">Автовоспроизведение Shorts в фоновом режиме</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>
@@ -917,12 +1062,38 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_miniplayer_screen_summary">Змяніце стыль мінімізаванага плэера ў праграме</string>
<string name="revanced_miniplayer_type_title">Тып мініплэера</string>
<string name="revanced_miniplayer_type_entry_0">Інваліды</string>
<string name="revanced_miniplayer_type_entry_1">Арыгінал</string>
<string name="revanced_miniplayer_type_entry_1">Па змаўчанні</string>
<string name="revanced_miniplayer_type_entry_2">Минимальный</string>
<string name="revanced_miniplayer_type_entry_3">Планшэт</string>
<string name="revanced_miniplayer_type_entry_4">Сучасны 1</string>
<string name="revanced_miniplayer_type_entry_5">Сучасны 2</string>
<string name="revanced_miniplayer_type_entry_6">Сучасны 3</string>
<string name="revanced_miniplayer_rounded_corners_title">Включить закругленные углы</string>
<string name="revanced_miniplayer_rounded_corners_summary_on">Углы закруглены</string>
<string name="revanced_miniplayer_rounded_corners_summary_off">Углы квадратные</string>
<string name="revanced_miniplayer_double_tap_action_title">Включить двойное нажатие и масштабирование с помощьющипка</string>
<string name="revanced_miniplayer_double_tap_action_summary_on">"Уключана дзеянне «подвойнае націсканне» і «шчыпкі для змены памеру»
• Подвойнае націсканне, каб павялічыць памер міні-прайгравальніка
• Подвойнае націсканне яшчэ раз, каб аднавіць першапачатковы памер"</string>
<string name="revanced_miniplayer_double_tap_action_summary_off">Двойное нажатие и scalewithpinch отключены</string>
<string name="revanced_miniplayer_drag_and_drop_title">Включить перетаскивание</string>
<string name="revanced_miniplayer_drag_and_drop_summary_on">"Уключана перацягванне і кіданне
Міні-прайгравальнік можна перацягнуць у любы куток экрана"</string>
<string name="revanced_miniplayer_drag_and_drop_summary_off">Перетаскивание отключено</string>
<string name="revanced_miniplayer_horizontal_drag_title">Включить горизонтальный жест перетаскивания</string>
<string name="revanced_miniplayer_horizontal_drag_summary_on">"Уключаны жэст гарызантальнага перацягвання
Міні-прайгравальнік можна перацягнуць за межы экрана ўлева ці ўправа"</string>
<string name="revanced_miniplayer_horizontal_drag_summary_off">Горизонтальный жест перетаскивания отключен</string>
<string name="revanced_miniplayer_hide_expand_close_title">Скрыть кнопку закрытия</string>
<string name="revanced_miniplayer_hide_expand_close_summary_on">Кнопка закрытия скрыта</string>
<string name="revanced_miniplayer_hide_expand_close_summary_off">Кнопка закрытия отображается</string>
<string name="revanced_miniplayer_hide_expand_close_legacy_title">Схаваць кнопкі разгортвання і закрыцця</string>
<string name="revanced_miniplayer_hide_expand_close_legacy_summary_on">"Кнопкі схаваны
Працягвайце пальцам, каб разгарнуць або закрыць"</string>
<string name="revanced_miniplayer_hide_expand_close_legacy_summary_off">Паказваюцца кнопкі разгарнуць і закрыць</string>
<string name="revanced_miniplayer_hide_subtext_title">Схаваць падтэксты</string>
<string name="revanced_miniplayer_hide_subtext_summary_on">Падтэксты схаваныя</string>
@@ -930,6 +1101,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_miniplayer_hide_rewind_forward_title">Схаваць кнопкі пераходу наперад і назад</string>
<string name="revanced_miniplayer_hide_rewind_forward_summary_on">Пераход наперад і назад схаваны</string>
<string name="revanced_miniplayer_hide_rewind_forward_summary_off">Паказваецца пераход наперад і назад</string>
<string name="revanced_miniplayer_width_dip_title">Размер по умолчанию</string>
<string name="revanced_miniplayer_width_dip_summary">Начальная размер на экране в пикселях</string>
<string name="revanced_miniplayer_width_dip_invalid_toast">Размер пикселя должен быть в пределах %1$s и %2$s</string>
<string name="revanced_miniplayer_opacity_title">Непразрыстасць накладання</string>
<string name="revanced_miniplayer_opacity_summary">Значэнне непразрыстасці паміж 0-100, дзе 0 - празрысты</string>
<string name="revanced_miniplayer_opacity_invalid_toast">Непразрыстасць накладання міні-плэера павінна быць ад 0 да 100</string>
@@ -945,11 +1119,14 @@ This is because Crowdin requires temporarily flattening this file and removing t
<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_invalid">Неверное значение цвета ползунка прогресса</string>
</patch>
<patch id="layout.thumbnails.bypassImageRegionRestrictionsPatch">
<string name="revanced_bypass_image_region_restrictions_title">Абыход абмежаванняў рэгіёну</string>
<string name="revanced_bypass_image_region_restrictions_summary_on">Выкарыстанне хаста відарысаў yt4.ggpht.com</string>
<string name="revanced_bypass_image_region_restrictions_summary_off">Выкарыстанне арыгінальнага хаста відарысаў\n\nУключэнне гэтай опцыі можа выправіць адсутнічаючыя відарысы, якія заблакіраваныя ў некаторых рэгіёнах</string>
<string name="revanced_bypass_image_region_restrictions_summary_off">"Выкарыстоўваецца арыгінальны хост малюнкаў
Уключэнне гэтага можа выправіць праблему з адсутнасцю малюнкаў, якія заблакаваны ў некаторых рэгіёнах"</string>
</patch>
<patch id="layout.thumbnails.alternativeThumbnailsPatch">
<!-- 'Home' should be translated using the same localized wording YouTube displays for the home tab. -->
@@ -964,7 +1141,11 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_alt_thumbnail_options_entry_2">DeArrow &amp; Арыгінальныя мініяцюры</string>
<string name="revanced_alt_thumbnail_options_entry_3">DeArrow &amp; Усё ж захоплівае</string>
<string name="revanced_alt_thumbnail_options_entry_4">Усё ж захоплівае</string>
<string name="revanced_alt_thumbnail_dearrow_about_summary">DeArrow прадастаўляе краўдсорсінгавыя мініяцюры для відэа YouTube. Гэтыя мініяцюры часта больш рэлевантныя, чым тыя, якія прадастаўляе YouTube\n\nКалі яны ўключаны, URL-адрасы відэа будуць адпраўляцца на сервер API, а іншыя даныя не адпраўляюцца. Калі відэа не мае мініяцюр DeArrow, то паказваюцца арыгінальныя або фотаздымкі\n\nНацісніце тут, каб даведацца больш пра DeArrow</string>
<string name="revanced_alt_thumbnail_dearrow_about_summary">"DeArrow забяспечвае мініатюры для відэа YouTube, якія збіраюцца ад карыстальнікаў. Гэтыя мініатюры часта больш актуальныя, чым тыя, якія прадастаўляецца YouTube.
Калі ўключана, URL відэа будуць адпраўлены на сервер API, і ніякія іншыя даныя не адпраўляюцца. Калі відэа не мае мініатюр DeArrow, то паказваюцца арыгінальныя або здымкі.
Націсніце тут, каб даведацца больш пра DeArrow"</string>
<string name="revanced_alt_thumbnail_dearrow_connection_toast_title">Паказаць тост, калі API недаступны</string>
<string name="revanced_alt_thumbnail_dearrow_connection_toast_summary_on">Тост паказваецца, калі DeArrow недаступны</string>
<string name="revanced_alt_thumbnail_dearrow_connection_toast_summary_off">Тост не паказваецца, калі DeArrow недаступны</string>
@@ -993,6 +1174,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
</patch>
<patch id="misc.dns.checkWatchHistoryDomainNameResolutionPatch">
<string name="revanced_check_watch_history_domain_name_dialog_title">Увага</string>
<string name="revanced_check_watch_history_domain_name_dialog_message">Ваша гісторыя прагляду не захоўваецца.&lt;br&gt;&lt;br&gt;Гэта, хутчэй за ўсё, выклікана DNS-блакіроўшчыкам рэкламы або сеткавым праксі.&lt;br&gt;&lt;br&gt;Каб выправіць гэта, дадайце &lt;b&gt;s.youtube.com&lt;/b&gt; у белы спіс або адключыце ўсе DNS-блакіроўшчыкі і праксі.</string>
<string name="revanced_check_watch_history_domain_name_dialog_ignore">Больш не паказваць</string>
</patch>
<patch id="misc.autorepeat.autoRepeatPatch">
@@ -1002,8 +1184,12 @@ This is because Crowdin requires temporarily flattening this file and removing t
</patch>
<patch id="misc.dimensions.spoof.spoofDeviceDimensionsPatch">
<string name="revanced_spoof_device_dimensions_title">Памеры падманнага прылады</string>
<string name="revanced_spoof_device_dimensions_summary_on">Памеры прылады падробленыя\n\nМожа быць разблакіравана больш высокая якасць відэа, але вы можаце сутыкнуцца з затрымкамі пры прайграванні, пагаршэннем часу аўтаномнай працы і невядомымі пабочнымі эфектамі</string>
<string name="revanced_spoof_device_dimensions_summary_off">Памеры прылады не падробленыя\n\nУключэнне гэтага можа разблакіраваць больш высокую якасць відэа</string>
<string name="revanced_spoof_device_dimensions_summary_on">"Памеры прылады падроблены
Магчыма, будуць разблакаваны больш высокія якасці відэа, але вы можаце сутыкнуцца з заіканнем відэа, горшым тэрмінам службы батарэі і невядомымі пабочнымі эфектамі"</string>
<string name="revanced_spoof_device_dimensions_summary_off">"Памеры прылады не падроблены
Уключэнне гэтага можа разблакаваць больш высокія якасці відэа"</string>
<string name="revanced_spoof_device_dimensions_user_dialog_message">Уключэнне гэтага можа прывесці да прыпынкаў прайгравання відэа, пагаршэння тэрміну службы батарэі і невядомых пабочных эфектаў.</string>
</patch>
<patch id="misc.gms.gmsCoreSupportResourcePatch">
@@ -1039,7 +1225,6 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_video_quality_default_wifi_title">Стандартная якасць відэа ў сетцы Wi-Fi</string>
<string name="revanced_video_quality_default_mobile_title">Стандартная якасць відэа ў мабільнай сетцы</string>
<string name="revanced_remember_video_quality_mobile">мабільны</string>
<string name="revanced_remember_video_quality_wifi">Wi-Fi</string>
<string name="revanced_remember_video_quality_toast">Стандартная якасць %1$s зменена на: %2$s</string>
</patch>
<patch id="video.speed.button.playbackSpeedButtonPatch">
@@ -1048,9 +1233,13 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_playback_speed_dialog_button_summary_off">Кнопка не паказваецца</string>
</patch>
<patch id="video.speed.custom.customPlaybackSpeedPatch">
<string name="revanced_custom_speed_menu_title">Меню пользовательской скорости воспроизведения</string>
<string name="revanced_custom_speed_menu_summary_on">Меню пользовательской скорости отображается</string>
<string name="revanced_custom_speed_menu_summary_off">Меню пользовательской скорости не отображается</string>
<string name="revanced_custom_playback_speeds_title">Карыстальніцкія хуткасці прайгравання</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_summary">Добавьте или измените пользовательскую скорость воспроизведения</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>
</patch>
<patch id="video.speed.remember.rememberPlaybackSpeedPatch">
@@ -1071,7 +1260,83 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_slide_to_seek_summary_off">Слайд для пошуку не ўключаны</string>
</patch>
<patch id="misc.fix.playback.spoofVideoStreamsPatch">
<string name="revanced_spoof_video_streams_screen_title">Подделывать потоки видео</string>
<string name="revanced_spoof_video_streams_screen_summary">Имитируйте потоки видео клиентов, чтобы предотвратить проблемы с воспроизведением</string>
<string name="revanced_spoof_video_streams_title">Подделывать потоки видео</string>
<string name="revanced_spoof_video_streams_summary_on">Потоки видео подделаны</string>
<string name="revanced_spoof_video_streams_summary_off">"Відэаструм не падроблены
Прайграванне відэа можа не працаваць"</string>
<string name="revanced_spoof_video_streams_user_dialog_message">Адключэнне гэтай налады можа выклікаць праблемы з прайграваннем відэа.</string>
<string name="revanced_spoof_video_streams_client_title">Клиент по умолчанию</string>
<string name="revanced_spoof_video_streams_ios_force_avc_title">Принудительно 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_title">Пабочныя эфекты падмены iOS</string>
<string name="revanced_spoof_video_streams_about_ios_summary">"• Прыватныя дзіцячыя відэа могуць не прайгравацца
• Трансляцыі ў прамым эфіры пачынаюцца з пачатку
• Відэа заканчваюцца на 1 секунду раней"</string>
<string name="revanced_spoof_video_streams_about_android_vr_title">Побочные эффекты подмены Android VR</string>
<string name="revanced_spoof_video_streams_about_android_vr_summary">"• Дзіцячыя відэа могуць не прайгравацца
• Трансляцыі ў прамым эфіры пачынаюцца з пачатку
• Відэа заканчваюцца на 1 секунду раней"</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_PT_BR">Партугальская (Бразілія)</string>
<string name="revanced_spoof_video_streams_language_PT_PT">Партугальская (Партугалія)</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>
</patch>
</app>
<app id="twitch">
@@ -1081,8 +1346,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_block_audio_ads_summary_off">Аўдыёрэклама разблакіравана</string>
</patch>
<patch id="ad.embedded.embeddedAdsPatch">
<string name="revanced_embedded_ads_service_unavailable">%s недаступны. Рэклама можа паказвацца. Паспрабуйце пераключыцца на іншую службу блакіроўкі рэкламы ў наладах.</string>
<string name="revanced_embedded_ads_service_failed">Сервер %s вярнуў памылку. Рэклама можа паказвацца. Паспрабуйце пераключыцца на іншую службу блакіроўкі рэкламы ў наладах.</string>
<string name="revanced_embedded_ads_service_unavailable">%s недаступны, рэклама можа паказвацца. Паспрабуйце змяніць службу блакавання рэкламы ў наладах.</string>
<string name="revanced_embedded_ads_service_failed">%s выдаў памылку, рэклама можа паказвацца. Паспрабуйце змяніць службу блакавання рэкламы ў наладах.</string>
<string name="revanced_block_embedded_ads_title">Блакіраваць убудаваную відэарэкламу</string>
<string name="revanced_block_embedded_ads_entry_1">Інваліды</string>
<string name="revanced_block_embedded_ads_entry_2">Светлавы проксі</string>
@@ -1114,6 +1379,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
<patch id="misc.settings.settingsPatch">
<string name="revanced_settings">Налады ReVanced</string>
<string name="revanced_about_title">Пра нас</string>
<string name="revanced_about_summary">Раскажыць “ReVanced”</string>
<string name="revanced_ads_screen_title">Аб\"явы</string>
<string name="revanced_ads_screen_summary">Налады блакіроўкі рэкламы</string>
<string name="revanced_chat_screen_title">Чат</string>

View File

@@ -1,34 +1,23 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Note: All strings must have a unique path, even if the same string is declared in two different apps.
This is because Crowdin requires temporarily flattening this file and removing the <app> and <patch> elements.
All strings must have a unique path, even if the same string is declared in two different apps.
This is because Crowdin requires temporarily flattening this file and removing the <app> and <patch> elements.
# General guidelines and information for translating
## Strings parameters can be reordered to allow more flexible translations if the grammar should be changed.
Strings with new lines must be raw strings where they're wrapped in quotes and new lines are not encoded.
Raw strings still requires escaping embedded double quotes but escaping embedded single quotes is optional.
For example, the patches string:
<string name="revanced_patches_string">You will arrive at %1$s in %2$s hours from now</string>
Could be translated to another language using a rearranged grammar:
<string name="revanced_patches_string">You will arrive %2$s hours from now at %1$s</string>
Raw strings are required because Crowdin AI translations regularly gets confused and
replace \n with an encoded new line character.
For Manager strings:
You will arrive at ${destination} in ${count} hours from now
Could be rearranged by changing the order of the ${} parameters:
You will arrive ${count} hours from now at ${destination}
Bad:
<string name="summary_key">First \'item\' text\nSecond \"item\" text</string>
Reordering is particularly relevant when translating into right to left languages, or for any language with grammar that is noticeably different from English.
Good:
<string name="summary_key">"First 'item' text
Second \"item\" text"</string>
## Single and double quotation marks must be escaped for patch strings (Manager does not require escaping any quotes).
All _patches_ single and double quotation marks must be escaped as \" or \'
Forgetting to do this will cause that string to appear in app with no quotation characters.
Correct:
<string name="revanced_string">You\'re correct. This is the \"correct\" way and this text will appear as expected in the app</string>
Not correct:
<string name="revanced_string">You're not correct. This is not the "correct" way and this text will not appear as expected the in app</string>
-->
<resources>
<app id="shared">
@@ -45,11 +34,11 @@ This is because Crowdin requires temporarily flattening this file and removing t
</patch>
<patch id="misc.settings.settingsResourcePatch">
<string name="revanced_settings_confirm_user_dialog_title">Искате ли да продължите?</string>
<string name="revanced_settings_reset">Нулиране</string>
<string name="revanced_settings_reset">Възстанови</string>
<string name="revanced_settings_restart_title">Рестартирай и опресни</string>
<string name="revanced_settings_restart">Рестартиране</string>
<string name="revanced_settings_import">Импортиране</string>
<string name="revanced_settings_import_copy">Копиране</string>
<string name="revanced_settings_import_copy">Копирай</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>
@@ -67,15 +56,23 @@ This is because Crowdin requires temporarily flattening this file and removing t
<!-- 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">GmsCore не е инсталиран. Инсталирайте го.</string>
<string name="gms_core_dialog_title">Нужно е действие</string>
<string name="gms_core_dialog_not_whitelisted_not_allowed_in_background_message">MicroG GmsCore не може да работи във фонов режим.\n\nМоля, следвайте ръководството \"Don\'t kill my app“ за вашия телефон и приложете инструкциите на MicroG.\n\nТова е необходимо, за да работи приложението.</string>
<string name="gms_core_dialog_not_whitelisted_not_allowed_in_background_message">"MicroG GmsCore няма разрешение да работи във фонов режим.
Следвайте ръководството \"Не убивай моето приложение\" за вашия телефон и приложете инструкциите към вашата инсталация на MicroG.
Това е необходимо, за да работи приложението."</string>
<string name="gms_core_dialog_open_website_text">Отвори сайта</string>
<string name="gms_core_dialog_not_whitelisted_using_battery_optimizations_message">За да избегнете проблеми е необходимо да изключите оптимизацията на батерията за GmsCore.\n\nНатиснете \"Продолжи\" и изкючере оптимизацията на батерията.</string>
<string name="gms_core_dialog_not_whitelisted_using_battery_optimizations_message">"Оптимизациите на батерията за MicroG GmsCore трябва да бъдат деактивирани, за да се избегнат проблеми.
Деактивирането на оптимизациите на батерията за MicroG няма да повлияе отрицателно на използването на батерията.
Докоснете бутона за продължаване и разрешете промени в оптимизацията."</string>
<string name="gms_core_dialog_continue_text">Продължи</string>
</patch>
</app>
<app id="youtube">
<patch id="misc.settings.settingsPatch">
<string name="revanced_settings_screen_00_about_title">Относно</string>
<string name="revanced_settings_screen_00_about_title">За програмата</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>
@@ -106,7 +103,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_debug_toast_on_error_title">Покажи системно съобщение при ReVanced грешка</string>
<string name="revanced_debug_toast_on_error_summary_on">Системно съобщение ще бъде показано, ако се появи грешка</string>
<string name="revanced_debug_toast_on_error_summary_off">Системно съобщение няма да бъде показано, ако се появи грешка</string>
<string name="revanced_debug_toast_on_error_user_dialog_message">Ако изключите системните съобщения, ще скриете всички уведомления за ReVanced грешки. \n\nНяма да бъдете уведомени, ако настъпят неочаквани събития.</string>
<string name="revanced_debug_toast_on_error_user_dialog_message">"Изключването на изскачащи съобщения за грешки крие всички известия за грешки на ReVanced.
Няма да бъдете уведомени за неочаквани събития."</string>
</patch>
<patch id="layout.hide.general.hideLayoutComponentsPatch">
<string name="revanced_disable_like_subscribe_glow_title">Деактивирайте подсветката на бутона Харесвам /Абонамент</string>
@@ -121,74 +120,79 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_floating_microphone_button_title">Плаващ бутон за микрофона</string>
<string name="revanced_hide_floating_microphone_button_summary_on">Бутонът на микрофона е скрит</string>
<string name="revanced_hide_floating_microphone_button_summary_off">Показан е бутон на микрофона</string>
<string name="revanced_hide_channel_watermark_title">Скриване на водния знак на канала</string>
<string name="revanced_hide_channel_watermark_summary_on">Водният знак е скрит</string>
<string name="revanced_hide_channel_watermark_summary_off">Водният знак е показан</string>
<string name="revanced_hide_channel_watermark_title">Воден знак на канала</string>
<string name="revanced_hide_channel_watermark_summary_on">Водният знак на канала е скрит</string>
<string name="revanced_hide_channel_watermark_summary_off">Водният знак на канала се показва</string>
<string name="revanced_hide_horizontal_shelves_title">Хоризонтални секции</string>
<string name="revanced_hide_horizontal_shelves_summary_on">Хоризонталните секции са скрити:\n• Извънредни новини\n• Продължете да гледате\n• Разгледайте още канали\n• Пазаруване\n• Гледайте отново</string>
<string name="revanced_hide_horizontal_shelves_summary_on">"Рафтовете са скрити, такива като:
• Актуални новини
• Продължавай да гледаш
• Разгледай още канали
• Пазаруване
• Гледай отново"</string>
<string name="revanced_hide_horizontal_shelves_summary_off">Хоризонтални секции се показват</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">Скриване на бутона \'Присъедини се\'</string>
<string name="revanced_hide_join_membership_button_summary_on">Бутонът е скрит</string>
<string name="revanced_hide_join_membership_button_summary_off">Бутонът е показан</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_summary_on">Рафтът е скрит</string>
<string name="revanced_hide_for_you_shelf_summary_off">Рафтът е показан</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_summary_on">Бутонът е скрит</string>
<string name="revanced_hide_notify_me_button_summary_off">Бутонът е показан</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. -->
<string name="revanced_hide_search_result_recommendations_title">Скриване на препоръките \'Други харесват също\'</string>
<string name="revanced_hide_search_result_recommendations_summary_on">Препоръките са скрити</string>
<string name="revanced_hide_search_result_recommendations_summary_off">Препоръките са показани</string>
<string name="revanced_hide_search_result_recommendations_summary_off">Препоръките се показват</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">Скриване на бутона \"Покажи още\"</string>
<string name="revanced_hide_show_more_button_summary_on">Бутонът е скрит</string>
<string name="revanced_hide_show_more_button_summary_off">Бутонът е показан</string>
<string name="revanced_hide_show_more_button_summary_on">Бутона Покажи още е скрит</string>
<string name="revanced_hide_show_more_button_summary_off">Бутона Покажи още се показва</string>
<string name="revanced_hide_timed_reactions_title">Скриване на времевите реакции</string>
<string name="revanced_hide_timed_reactions_summary_on">Времевите реакции са скрити</string>
<string name="revanced_hide_timed_reactions_summary_off">Времевите реакции са показани</string>
<string name="revanced_hide_timed_reactions_summary_off">Времевите реакции се показват</string>
<string name="revanced_hide_search_result_shelf_header_title">Скриване на заглавието на рафта с резултатите от търсенето</string>
<string name="revanced_hide_search_result_shelf_header_summary_on">Заглавието на рафта е скрито</string>
<string name="revanced_hide_search_result_shelf_header_summary_off">Заглавието е показано</string>
<string name="revanced_hide_search_result_shelf_header_summary_on">Заглавката на рафта е скрита</string>
<string name="revanced_hide_search_result_shelf_header_summary_off">Заглавката на рафта е показана</string>
<string name="revanced_hide_channel_guidelines_title">Скриване на насоките на канала</string>
<string name="revanced_hide_channel_guidelines_summary_on">Насоките на канала са скрити</string>
<string name="revanced_hide_channel_guidelines_summary_off">Насоките на канала са показани</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_channel_guidelines_summary_off">Насоките на канала се показват</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_community_posts_title">Скриване на публикациите от общността</string>
<string name="revanced_hide_community_posts_summary_on">Публикациите от общността са скрити</string>
<string name="revanced_hide_community_posts_summary_off">Публикациите от общността са показани</string>
<string name="revanced_hide_community_posts_summary_on">Насоките на общността са скрити</string>
<string name="revanced_hide_community_posts_summary_off">Последните публикации са показани</string>
<string name="revanced_hide_compact_banner_title">Скриване на компактните банери</string>
<string name="revanced_hide_compact_banner_summary_on">Компактните банери са скрити</string>
<string name="revanced_hide_compact_banner_summary_off">Компактните банери са показани</string>
<string name="revanced_hide_compact_banner_summary_on">Информационните панели са скрити</string>
<string name="revanced_hide_compact_banner_summary_off">Информационните панели се показват</string>
<string name="revanced_hide_movies_section_title">Скриване на раздела за филми</string>
<string name="revanced_hide_movies_section_summary_on">Разделът за филми е скрит</string>
<string name="revanced_hide_movies_section_summary_on">Секцията с коментари е скрита</string>
<string name="revanced_hide_movies_section_summary_off">Разделът за филми е показан</string>
<string name="revanced_hide_feed_survey_title">Скриване на анкетите в новинарския поток</string>
<string name="revanced_hide_feed_survey_summary_on">Aнкетите в новинарския поток са скрити</string>
<string name="revanced_hide_feed_survey_summary_off">Aнкетите в новинарския поток са показани</string>
<string name="revanced_hide_feed_survey_title">Скриване на анкети в емисиите</string>
<string name="revanced_hide_feed_survey_summary_on">Анкетите за емисии са скрити</string>
<string name="revanced_hide_feed_survey_summary_off">Анкетите за емисии се показват</string>
<string name="revanced_hide_community_guidelines_title">Скриване на насоките на общността</string>
<string name="revanced_hide_community_guidelines_summary_on">Насоките на общността са скрити</string>
<string name="revanced_hide_community_guidelines_summary_off">Насоките на общността са показани</string>
<string name="revanced_hide_community_guidelines_summary_off">Скриване на насоките за общността на абонатите</string>
<string name="revanced_hide_subscribers_community_guidelines_title">Скриване на насоките за общността на абонатите</string>
<string name="revanced_hide_subscribers_community_guidelines_summary_on">Насоките за общността на абонатите са скрити</string>
<string name="revanced_hide_subscribers_community_guidelines_summary_off">Насоките за общността на абонатите са показани</string>
<string name="revanced_hide_channel_member_shelf_title">Скриване на рафта на канала</string>
<string name="revanced_hide_channel_member_shelf_summary_on">Рафтът на канала е скрит</string>
<string name="revanced_hide_channel_member_shelf_summary_off">Рафтът на канала е показан</string>
<string name="revanced_hide_subscribers_community_guidelines_summary_on">Насоките за общността са скрити</string>
<string name="revanced_hide_subscribers_community_guidelines_summary_off">Насоките за общността са показани</string>
<string name="revanced_hide_channel_member_shelf_title">Скриване на секцията с членуващи</string>
<string name="revanced_hide_channel_member_shelf_summary_on">Рафта с членуващи е скрит</string>
<string name="revanced_hide_channel_member_shelf_summary_off">Рафта с членуващи се показва</string>
<string name="revanced_hide_emergency_box_title">Скриване аварийните кутии</string>
<string name="revanced_hide_emergency_box_summary_on">Аварийните кутии са скрити</string>
<string name="revanced_hide_emergency_box_summary_off">Аварийните кутии са показани</string>
<string name="revanced_hide_emergency_box_summary_on">Спешни кутии са скрити</string>
<string name="revanced_hide_emergency_box_summary_off">Спешни кутии са показани</string>
<string name="revanced_hide_info_panels_title">Скриване на информационните панели</string>
<string name="revanced_hide_info_panels_summary_on">Информационните панели са скрити</string>
<string name="revanced_hide_info_panels_summary_off">Информационните панели са показани</string>
@@ -201,24 +205,24 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_playables_title">Игри в YouTube</string>
<string name="revanced_hide_playables_summary_on">Игри в YouTube са скрити</string>
<string name="revanced_hide_playables_summary_off">Игрите в YouTube се показват</string>
<string name="revanced_hide_quick_actions_title">Скриване на бързите действия в режим на цял екран</string>
<string name="revanced_hide_quick_actions_summary_on">Бързите действия в режим на цял екран са скрити</string>
<string name="revanced_hide_quick_actions_summary_off">Бързите действия в режим на цял екран са показани</string>
<string name="revanced_hide_quick_actions_title">Скриване на меню с Бързи действия</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_image_shelf_title">Скриване на рафта с изображения в резултатите от търсенето</string>
<string name="revanced_hide_image_shelf_summary_on">Рафтът с изображения в резултатите от търсенето е скрит</string>
<string name="revanced_hide_image_shelf_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>
<string name="revanced_hide_latest_posts_ads_title">Скриване на последните публикации</string>
<string name="revanced_hide_latest_posts_ads_summary_on">Последните публикации са скрити</string>
<string name="revanced_hide_latest_posts_ads_summary_on">Най-новите публикации са скрити</string>
<string name="revanced_hide_latest_posts_ads_summary_off">Последните публикации са показани</string>
<string name="revanced_hide_mix_playlists_title">Скриване на разбърканите плейлисти</string>
<string name="revanced_hide_mix_playlists_summary_on">Разбърканите плейлисти са скрити</string>
<string name="revanced_hide_mix_playlists_summary_off">Разбърканите плейлисти са показани</string>
<string name="revanced_hide_mix_playlists_title">Скриване на микс плейлист</string>
<string name="revanced_hide_mix_playlists_summary_on">Плейлист микса е скрит</string>
<string name="revanced_hide_mix_playlists_summary_off">Плейлист микса се показва</string>
<string name="revanced_hide_artist_cards_title">Скриване на картите на артистите</string>
<string name="revanced_hide_artist_cards_summary_on">Картите на артистите са скрити</string>
<string name="revanced_hide_artist_cards_summary_off">Картите на артистите са показани</string>
<string name="revanced_hide_artist_cards_summary_on">Картите на изпълнителите са скрити</string>
<string name="revanced_hide_artist_cards_summary_off">Показват се карти на артисти</string>
<string name="revanced_hide_attributes_section_title">Скриване на секцията с атрибути</string>
<string name="revanced_hide_attributes_section_summary_on">„Популярни места“, „Игри“ и „Музика“ под описанието са скрити</string>
<string name="revanced_hide_attributes_section_summary_off">„Популярни места“, „Игри“ и „Музика“ под описанието се показват</string>
@@ -252,6 +256,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_filter_bar_feed_in_related_videos_summary_off">Показано в сродни видеоклипове</string>
<string name="revanced_comments_screen_title">Коментари</string>
<string name="revanced_comments_screen_summary">Скриване или показване на секцията за коментари</string>
<string name="revanced_hide_comments_chat_summary_summary_on">\'Резюме на чата\' е скрито</string>
<string name="revanced_hide_comments_chat_summary_summary_off">\'Резюме на чата\' е показано</string>
<string name="revanced_hide_comments_by_members_header_title">Скриване на „Коментари, направени от членове“</string>
<string name="revanced_hide_comments_by_members_header_summary_on">„Коментари от членове“ са скрити</string>
<string name="revanced_hide_comments_by_members_header_summary_off">„Коментари от членове“ се показват</string>
@@ -274,7 +280,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_doodles_title">YouTube Doodles</string>
<string name="revanced_hide_doodles_summary_on">Doodles в лентата за търсене са скрити</string>
<string name="revanced_hide_doodles_summary_off">Doodles в лентата за търсене се показват</string>
<string name="revanced_hide_doodles_user_dialog_message">YouTube Doodles се появяват няколко дни в годината.\n\nАко Doodle в момента се показва във вашия регион и тази опция за скриване е активирана, филтърната лента под лентата за търсене също ще бъде скрита.</string>
<string name="revanced_hide_doodles_user_dialog_message">"Doodles в YouTube се показват няколко дни в годината.
Ако в момента се показва Doodle във вашия регион и тази настройка за скриване е включена, тогава лентата за филтриране под лентата за търсене също ще бъде скрита."</string>
<string name="revanced_custom_filter_screen_title">Потребителски филтър</string>
<string name="revanced_custom_filter_screen_summary">Скриване на компоненти с помощта на потребителски филтри</string>
<string name="revanced_custom_filter_title">Активиране на потребителските филтри</string>
@@ -286,21 +294,30 @@ This is because Crowdin requires temporarily flattening this file and removing t
<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_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_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_search_summary_on">Резултатите от търсенето се филтрират с помощта на ключови думи</string>
<string name="revanced_hide_keyword_content_search_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. -->
<string name="revanced_hide_keyword_content_phrases_summary">Ключови думи и фрази за скриване, разделени с нови редове\n\nКлючовите думи могат да бъдат имена на канали или всеки текст, показан в заглавията на видеоклиповете\n\nДумите с главни букви в средата трябва да бъдат въведени с малки букви (напр.: iPhone, TikTok, LeBlanc)</string>
<string name="revanced_hide_keyword_content_phrases_summary">"Ключови думи и фрази за скриване, разделени от нов ред
Ключовите думи могат да бъдат имена на канали или всякакъв текст, показан в заглавията на видеоклиповете
Думите с главни букви в средата трябва да бъдат въведени с главни букви (напр.: iPhone, TikTok, LeBlanc)"</string>
<string name="revanced_hide_keyword_content_about_title">За филтриране с ключови думи</string>
<string name="revanced_hide_keyword_content_about_summary">Начало/Абонамент/Резултатите от търсенето се филтрират, за да се скрие съдържание, което съответства на ключови фрази\n\nОграничения\n• Shorts не могат да бъдат скрити от името на канала\n• Някои компоненти на потребителския интерфейс може да не са скрити\n• Търсенето по ключова дума може да не покаже резултати</string>
<string name="revanced_hide_keyword_content_about_summary">"Резултатите от търсенето в Начало/Абонамент/Търсене се филтрират, за да се скрие съдържанието, което съвпада с фрази с ключови думи
Ограничения
• Шорти не могат да бъдат скрити по име на канала
• Някои UI компоненти може да не са скрити
• Търсенето на ключова дума може да не покаже резултати"</string>
<string name="revanced_hide_keyword_content_about_whole_words_title">Съвпадение на всички думи</string>
<!-- Translations _must_ use a localized example. For languages that do not use spaces between words (Chinese, Japanese, etc) the English AI example should be used since no localized examples exist. Or if using machine translations, or if nobody wants to think of a localized example, then the English 'ai' example should be left as-is. -->
<string name="revanced_hide_keyword_content_about_whole_words_summary">Ограждането на ключова дума/фраза с двойни кавички ще предотврати частични съвпадения на заглавия на видеоклипове и имена на канали&lt;br&gt;&lt;br&gt;Например,&lt;br&gt;&lt;b&gt;\"ai\"&lt;/b&gt; ще скрие видеоклипа: &lt;b&gt;How does AI work?&lt;/b&gt;&lt;br&gt;но няма да скрие: &lt;b&gt;What does fair use mean?&lt;/b&gt;</string>
@@ -314,13 +331,15 @@ This is because Crowdin requires temporarily flattening this file and removing t
<patch id="ad.general.hideAdsResourcePatch">
<string name="revanced_hide_general_ads_title">Скриване на общите реклами</string>
<string name="revanced_hide_general_ads_summary_on">Общите реклами са скрити</string>
<string name="revanced_hide_general_ads_summary_off">Общите реклами са показани</string>
<string name="revanced_hide_general_ads_summary_off">Общите реклами се показват</string>
<string name="revanced_hide_fullscreen_ads_title">Скриване на рекламите в режим на цял екран</string>
<string name="revanced_hide_fullscreen_ads_summary_on">Рекламите на цял екран са скрити\n\in Тази функция е достъпна само за по-стари устройства</string>
<string name="revanced_hide_fullscreen_ads_summary_on">"Всички реклами на цял екран са скрити
Тази функция е налична само за по-стари устройства"</string>
<string name="revanced_hide_fullscreen_ads_summary_off">Рекламите в режим на цял екран са показани</string>
<string name="revanced_hide_buttoned_ads_title">Скриване на рекламни бутони</string>
<string name="revanced_hide_buttoned_ads_summary_on">Рекламите като бутон са скрити</string>
<string name="revanced_hide_buttoned_ads_summary_off">Рекламите като бутон са показани</string>
<string name="revanced_hide_buttoned_ads_summary_on">Бутонираните реклами са скрити</string>
<string name="revanced_hide_buttoned_ads_summary_off">Бутонираните реклами са показани</string>
<string name="revanced_hide_paid_promotion_label_title">Скриване на платените промоции</string>
<string name="revanced_hide_paid_promotion_label_summary_on">Промоционалните етикети са скрити</string>
<string name="revanced_hide_paid_promotion_label_summary_off">Промоционалните етикети се показват</string>
@@ -333,35 +352,35 @@ This is because Crowdin requires temporarily flattening this file and removing t
<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>
<string name="revanced_hide_shopping_links_title">Скриване на връзките за пазаруване в описанието на видеоклипа</string>
<string name="revanced_hide_shopping_links_title">Скриване на връзки за пазаруване</string>
<string name="revanced_hide_shopping_links_summary_on">Връзките за пазаруване са скрити</string>
<string name="revanced_hide_shopping_links_summary_off">Връзките за пазаруване са показани</string>
<string name="revanced_hide_shopping_links_summary_off">Връзките за пазаруване се показват</string>
<!-- 'Visit store' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_visit_store_button_title">Скрийте бутона „Посетете магазина“ на страниците на каналите</string>
<string name="revanced_hide_visit_store_button_summary_on">Бутонът е скрит</string>
<string name="revanced_hide_visit_store_button_summary_off">Бутонът е показан</string>
<string name="revanced_hide_visit_store_button_summary_on">Бутона Покажи още е скрит</string>
<string name="revanced_hide_visit_store_button_summary_off">Бутона \"Уведоми ме\" се показва</string>
<string name="revanced_hide_web_search_results_title">Скриване на резултатите от уеб търсенето</string>
<string name="revanced_hide_web_search_results_summary_on">Резултатите от уеб търсенето са скрити</string>
<string name="revanced_hide_web_search_results_summary_off">Резултатите от уеб търсенето са показани</string>
<string name="revanced_hide_web_search_results_summary_off">Резултатите от уеб търсенето са показани.</string>
<string name="revanced_hide_merchandise_banners_title">Скриване на банерите за стоки</string>
<string name="revanced_hide_merchandise_banners_summary_on">Банерите за стоки са скрити</string>
<string name="revanced_hide_merchandise_banners_summary_off">Банерите за стоки са показани</string>
<string name="revanced_hide_merchandise_banners_summary_on">Рекламните банери за стоки са скрити</string>
<string name="revanced_hide_merchandise_banners_summary_off">Банерите за стоки се показват</string>
<!-- Translations of this should not be longer than the original English text, otherwise the text can be clipped and not entirely shown. -->
<string name="revanced_hide_fullscreen_ads_feature_not_available_toast">Скр. на реклами на цял екран, за по-стари устройства</string>
</patch>
<patch id="ad.getpremium.hideGetPremiumPatch">
<string name="revanced_hide_get_premium_title">Скриване на YouTube Premium промоции</string>
<string name="revanced_hide_get_premium_summary_on">YouTube Premium промоциите под видео плейъра са скрити</string>
<string name="revanced_hide_get_premium_summary_off">YouTube Premium промоциите под видео плейъра са показани</string>
<string name="revanced_hide_get_premium_title">Скриване на YouTube Premium промоциите</string>
<string name="revanced_hide_get_premium_summary_on">YouTube Premium промоциите са скрити.</string>
<string name="revanced_hide_get_premium_summary_off">YouTube Premium промоциите се показват.</string>
</patch>
<patch id="ad.video.videoAdsPatch">
<string name="revanced_hide_video_ads_title">Скриване на видео рекламите</string>
<string name="revanced_hide_video_ads_summary_on">Видео рекламите са скрити</string>
<string name="revanced_hide_video_ads_summary_off">Видео рекламите са показани</string>
<string name="revanced_hide_video_ads_summary_on">Видео рекламите са скрити.</string>
<string name="revanced_hide_video_ads_summary_off">Видео рекламите се показват.</string>
</patch>
<patch id="interaction.copyvideourl.copyVideoUrlResourcePatch">
<string name="revanced_share_copy_url_success">URL адресът е копиран в клипборда</string>
<string name="revanced_share_copy_url_timestamp_success">URL адресът с времеви отпечатък е копиран</string>
<string name="revanced_share_copy_url_success">Връзката е копирана в клипборда.</string>
<string name="revanced_share_copy_url_timestamp_success">URL адрес с отметка за време, копиран в клипборда.</string>
<string name="revanced_copy_video_url_title">Показване на бутона за копиране на URL адреса на видеоклипа</string>
<string name="revanced_copy_video_url_summary_on">Показан е бутон. Докоснете, за да копирате URL на видеото. Докоснете и задръжте, за да копирате URL адреса на видеоклипа с клеймо за време</string>
<string name="revanced_copy_video_url_summary_off">Бутонът не е показан</string>
@@ -370,7 +389,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_copy_video_url_timestamp_summary_off">Бутонът не е показан</string>
</patch>
<patch id="interaction.dialog.removeViewerDiscretionDialogPatch">
<string name="revanced_remove_viewer_discretion_dialog_title">Скриване на прозореца за възрастово ограничение</string>
<string name="revanced_remove_viewer_discretion_dialog_title">Прозорец за възрастово ограничение</string>
<string name="revanced_remove_viewer_discretion_dialog_summary_on">Диалоговият прозорец ще бъде премахнат</string>
<string name="revanced_remove_viewer_discretion_dialog_summary_off">Диалоговият прозорец ще бъде показан</string>
<string name="revanced_remove_viewer_discretion_dialog_user_dialog_message">Тази функция не заобикаля възрастовото ограничение. Тя просто приема възрастовата граница автоматично.</string>
@@ -391,27 +410,27 @@ This is because Crowdin requires temporarily flattening this file and removing t
</patch>
<patch id="interaction.seekbar.disablePreciseSeekingGesturePatch">
<string name="revanced_disable_precise_seeking_gesture_title">Деактивиране на жеста за точно търсене</string>
<string name="revanced_disable_precise_seeking_gesture_summary_on">Жестът е деактивиран</string>
<string name="revanced_disable_precise_seeking_gesture_summary_off">Жестът е активиран</string>
<string name="revanced_disable_precise_seeking_gesture_summary_on">Жест отключен</string>
<string name="revanced_disable_precise_seeking_gesture_summary_off">Жест включен</string>
</patch>
<patch id="interaction.seekbar.enableSeekbarTappingPatch">
<string name="revanced_seekbar_tapping_title">Активиране на докосването на лентата за време</string>
<string name="revanced_seekbar_tapping_summary_on">Докосването на лентата за време е включено</string>
<string name="revanced_seekbar_tapping_summary_off">Докосването на лентата за време е изключено</string>
<string name="revanced_seekbar_tapping_summary_on">Функцията „Докосване до лентата за търсене“ е активирана</string>
<string name="revanced_seekbar_tapping_summary_off">Функцията „Докосване до лентата за търсене“ е деактивирана</string>
</patch>
<patch id="interaction.swipecontrols.swipeControlsResourcePatch">
<string name="revanced_swipe_brightness_title">Задаване на яркост чрез плъзгане</string>
<string name="revanced_swipe_brightness_summary_on">Задаването на яркост чрез плъзгане е включено</string>
<string name="revanced_swipe_brightness_summary_off">Задаването на яркост чрез плъзгане е изключено</string>
<string name="revanced_swipe_brightness_summary_on">Опцията за превъртане с плъзгане за промяна на яркостта е активирана</string>
<string name="revanced_swipe_brightness_summary_off">Опцията за превъртане с плъзгане за промяна на яркостта е деактивирана</string>
<string name="revanced_swipe_volume_title">Настройване на звука чрез плъзгане</string>
<string name="revanced_swipe_volume_summary_on">Настройването на звука чрез плъзгане е включено</string>
<string name="revanced_swipe_volume_summary_off">Настройването на звука чрез плъзгане е изключено</string>
<string name="revanced_swipe_volume_summary_on">Обемът чрез плъзване е активен</string>
<string name="revanced_swipe_volume_summary_off">Обемът чрез плъзване е деактивиран</string>
<string name="revanced_swipe_press_to_engage_title">Активиране на жеста натискане за преместване</string>
<string name="revanced_swipe_press_to_engage_summary_on">Натискането при плъзгане е включено</string>
<string name="revanced_swipe_press_to_engage_summary_off">Натискането при плъзгане е изключено</string>
<string name="revanced_swipe_press_to_engage_summary_on">Плъзгането чрез натискане е активирано</string>
<string name="revanced_swipe_press_to_engage_summary_off">Плъзгането чрез натискане е деактивирано</string>
<string name="revanced_swipe_haptic_feedback_title">Активиране на хептичната обратна връзка</string>
<string name="revanced_swipe_haptic_feedback_summary_on">Хептичната обратна връзка е активирана</string>
<string name="revanced_swipe_haptic_feedback_summary_off">Хептичната обратна връзка е деактивирана</string>
<string name="revanced_swipe_haptic_feedback_summary_on">Тактилната обратна връзка е активирана</string>
<string name="revanced_swipe_haptic_feedback_summary_off">Тактилната обратна връзка е деактивирана</string>
<string name="revanced_swipe_save_and_restore_brightness_title">Запазване и възстановяване на яркостта</string>
<string name="revanced_swipe_save_and_restore_brightness_summary_on">Запазване и възстаовяване яркостта при включване или изключване на цял екран</string>
<string name="revanced_swipe_save_and_restore_brightness_summary_off">Не се запазва или възстаовява яркостта при включване или изключване на цял екран</string>
@@ -419,12 +438,12 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_swipe_lowest_value_enable_auto_brightness_summary_on">Плъзгането надолу до най-ниската стойност на жеста за яркост, за да се активира автоматичната яркост</string>
<string name="revanced_swipe_lowest_value_enable_auto_brightness_summary_off">Плъзгането надолу до най-ниската стойност на жеста за яркост, без дасе активира автоматичната яркост</string>
<string name="revanced_swipe_lowest_value_enable_auto_brightness_overlay_text">Авто</string>
<string name="revanced_swipe_overlay_timeout_title">Задръжка на плъзгащата контрола</string>
<string name="revanced_swipe_overlay_timeout_summary">Време за което плъзгащата контрола е видима</string>
<string name="revanced_swipe_overlay_timeout_title">Задръжка на плъзгащата контрола за показване</string>
<string name="revanced_swipe_overlay_timeout_summary">Време за което плъзгащата контрола е видима.</string>
<string name="revanced_swipe_text_overlay_size_title">Размер на текста при плъзгане</string>
<string name="revanced_swipe_text_overlay_size_summary">Размера на текста на плъзгащите контроли</string>
<string name="revanced_swipe_overlay_background_alpha_title">Видимост на фона на плъзгащите контроли</string>
<string name="revanced_swipe_overlay_background_alpha_summary">Видимостта на фона на плъзгащите контроли</string>
<string name="revanced_swipe_overlay_background_alpha_summary">Видимостта на фона на плъзгащите контроли.</string>
<string name="revanced_swipe_threshold_title">Праг на величината на плъзгане</string>
<string name="revanced_swipe_threshold_summary">Праг преди да се осъществи плъзгането</string>
</patch>
@@ -490,7 +509,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_subscriptions_button_summary_off">Бутона за абонаменти се показва</string>
<!-- 'Notifications' should be translated using the same localized wording YouTube displays the tab. -->
<string name="revanced_switch_create_with_notifications_button_title">Заменете бутона „Създаване“ с бутона „Известия“</string>
<string name="revanced_switch_create_with_notifications_button_summary_on">Бутонът за създаване се заменя с бутона за известия\n\nЗабележка: Активирането на тази опция също скрива видеореклами</string>
<string name="revanced_switch_create_with_notifications_button_summary_on">"Бутонът за създаване е сменен с бутона Известия
Забележка: Активирането на това също принудително скрива видео рекламите"</string>
<string name="revanced_switch_create_with_notifications_button_summary_off">Бутоните \"Създаване\" и \"Известия\" не са разменени</string>
<string name="revanced_hide_navigation_button_labels_title">Имена на бутоните на лентата за навигация</string>
<string name="revanced_hide_navigation_button_labels_summary_on">Етикетите са скрити</string>
@@ -676,8 +697,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_shorts_info_panel_summary_on">Информационните панели са скрити</string>
<string name="revanced_hide_shorts_info_panel_summary_off">Информационните панели се показват</string>
<string name="revanced_hide_shorts_channel_bar_title">Скриване на лентата на канала</string>
<string name="revanced_hide_shorts_channel_bar_summary_on">Лентата на канала е скрита</string>
<string name="revanced_hide_shorts_channel_bar_summary_off">Лентата на канала е показана</string>
<string name="revanced_hide_shorts_channel_bar_summary_on">Лентата на канала е скрита.</string>
<string name="revanced_hide_shorts_channel_bar_summary_off">Лентата на канала е показана.</string>
<string name="revanced_hide_shorts_video_title_title">Заглавие на видеото</string>
<string name="revanced_hide_shorts_video_title_summary_on">Заглавието е скрито</string>
<string name="revanced_hide_shorts_video_title_summary_off">Заглавието се показва</string>
@@ -709,6 +730,11 @@ This is because Crowdin requires temporarily flattening this file and removing t
<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.openVideosFullscreen">
<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>
<patch id="layout.player.overlay.customPlayerOverlayOpacityResourcePatch">
<string name="revanced_player_overlay_opacity_title">Прозрачност на настройките в Плеара</string>
<string name="revanced_player_overlay_opacity_summary">Стойност на прозрачност между 0-100, където 0 е прозрачно</string>
@@ -726,7 +752,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_ryd_enable_summary_off">Нехаресванията не се показват</string>
<string name="revanced_ryd_shorts_title">Пок. нехаресвания в кратките клипове</string>
<string name="revanced_ryd_shorts_summary_on">Нехаресванията се показват в кратките клипове</string>
<string name="revanced_ryd_shorts_summary_on_disclaimer">Нехаресвания, показани в Shorts\n\nОграничение: Нехаресванията може да не се показват в режим „инкогнито“</string>
<string name="revanced_ryd_shorts_summary_on_disclaimer">"Нехаресванията се показват на шорти
Ограничение: Нехаресванията може да не се появят в режим инкогнито"</string>
<string name="revanced_ryd_shorts_summary_off">Нехаресванията са скрити в кратките клипове</string>
<string name="revanced_ryd_dislike_percentage_title">Нехаресвания като процент</string>
<string name="revanced_ryd_dislike_percentage_summary_on">Нехаресванията се показват като процент</string>
@@ -738,7 +766,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_ryd_toast_on_connection_error_title">Показване на известие, ако API не е наличен</string>
<string name="revanced_ryd_toast_on_connection_error_summary_on">Показва известие, ако Return YouTube Dislike не е наличен</string>
<string name="revanced_ryd_toast_on_connection_error_summary_off">Не се показва известие, ако ReturnYouTube Dislike не е наличен</string>
<string name="revanced_ryd_about">Относно</string>
<string name="revanced_ryd_about">За програмата</string>
<string name="revanced_ryd_attribution_summary">Данните за нехаресване са от Return YouTube Dislike API. Докоснете за да научите повече</string>
<!-- Statistic strings are shown in the settings only when ReVanced debug mode is enabled. Typical users will never see these. -->
<string name="revanced_ryd_statistics_category_title">Статистика Return YouTube Dislike API на това устройство</string>
@@ -769,7 +797,11 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_seekbar_thumbnails_high_quality_summary_off">Миниатюри с средно качество в лентата на възпроизвеждане</string>
<string name="revanced_seekbar_thumbnails_high_quality_legacy_summary_on">Миниатюри с високо качество в лентата на прогреса на цял екран</string>
<string name="revanced_seekbar_thumbnails_high_quality_legacy_summary_off">Миниатюри със средно качество в лентата на прогреса на цял екран</string>
<string name="revanced_seekbar_thumbnails_high_quality_dialog_message">Това също така ще възстанови миниатюри на потоци на живо, които нямат миниатюри на лентата на прогреса.\n\nМиниизображенията на лентата на прогреса ще използват същото качество като текущия видеоклип.\n\nТази функция работи най-добре с качество на видеото 720p или по-ниско и когато използвате много бързо интернет връзка.</string>
<string name="revanced_seekbar_thumbnails_high_quality_dialog_message">"Това също ще възстанови миниатюрите на предавания на живо, които нямат миниатюри на плъзгача.
Миниатюрите на плъзгача ще използват същото качество като текущото видео.
Тази функция работи най-добре с видео качество от 720p или по-ниско и при използване на много бърза интернет връзка."</string>
<string name="revanced_restore_old_seekbar_thumbnails_title">Стари миниатюри на времевата линия</string>
<string name="revanced_restore_old_seekbar_thumbnails_summary_on">Над лентата за възпроизвеждане се появяват миниатюри</string>
<string name="revanced_restore_old_seekbar_thumbnails_summary_off">Миниатюрите се показват в режим на цял екран</string>
@@ -777,7 +809,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
<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_appearance_category">Облик</string>
<string name="revanced_sb_appearance_category">Външен вид</string>
<string name="revanced_sb_enable_voting">Бутона за гласуване</string>
<string name="revanced_sb_enable_voting_sum_on">Бутона за гласуване на част се показва</string>
<string name="revanced_sb_enable_voting_sum_off">Бутона за гласуване на част е скрит</string>
@@ -801,13 +833,13 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_sb_general_adjusting">Настройване стъпка на новата част</string>
<string name="revanced_sb_general_adjusting_sum">Милисекундите с който се преместват бутоните за настройка при създаване на част</string>
<string name="revanced_sb_general_adjusting_invalid">Стойността трябва да е положително число</string>
<string name="revanced_sb_guidelines_preference_title">Преглед на ръководните линии</string>
<string name="revanced_sb_guidelines_preference_title">Вижте указанията</string>
<string name="revanced_sb_guidelines_preference_sum">Указанията съдържат правила и съвети за създаване на нови части</string>
<string name="revanced_sb_guidelines_popup_title">Следвайте указанията</string>
<string name="revanced_sb_guidelines_popup_content">Прочетете указанията на SponsorBlock преди да създадете нови части</string>
<string name="revanced_sb_guidelines_popup_already_read">Вече прочетох</string>
<string name="revanced_sb_guidelines_popup_already_read">Вече ги прочетох</string>
<string name="revanced_sb_guidelines_popup_open">Покажи ми</string>
<string name="revanced_sb_general">Общи</string>
<string name="revanced_sb_general">Основен</string>
<string name="revanced_sb_toast_on_connection_error_title">Показване на известие, ако API не е наличен</string>
<string name="revanced_sb_toast_on_connection_error_summary_on">Показва се известие, ако SponsorBlock не е наличен</string>
<string name="revanced_sb_toast_on_connection_error_summary_off">Показва се известие, ако SponsorBlock не е наличен</string>
@@ -818,24 +850,27 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_sb_general_min_duration_sum">Части, по-кратки от тази стойност (в секунди) няма да бъдат пропускани или показвани</string>
<string name="revanced_sb_general_min_duration_invalid">Невалидна времетраене</string>
<string name="revanced_sb_general_uuid">Вашият уникален потребителски id</string>
<string name="revanced_sb_general_uuid_sum">Това трябва да се държи тайно. То е като парола и не трябва да се споделя с никого. Ако някой го има, то той може да се представи вместо вас</string>
<string name="revanced_sb_general_uuid_sum">Това трябва да се пази тайно. То е като парола и не трябва да се споделя с никого. Ако някой го притежава, той може да се представи вместо вас.</string>
<string name="revanced_sb_general_uuid_invalid">Личният Id трябва да е с дължина поне 30 знака</string>
<string name="revanced_sb_general_api_url">Промяна URL на API</string>
<string name="revanced_sb_general_api_url_sum">Адресът, който SponsorBlock използва за свързване към сървъра</string>
<string name="revanced_sb_api_url_reset">Нулиране URL адреса на API</string>
<string name="revanced_sb_api_url_reset">Нулиране URL адреса, на API.</string>
<string name="revanced_sb_api_url_invalid">URL адресът е невалиден</string>
<string name="revanced_sb_api_url_changed">URL адресът на API е променен</string>
<string name="revanced_sb_settings_ie">Настройки за внасяне и изнасяне</string>
<string name="revanced_sb_settings_copy">Копиране</string>
<string name="revanced_sb_api_url_changed">URL API е променен.</string>
<string name="revanced_sb_settings_ie">Импортиране / Експортиране на настройките</string>
<string name="revanced_sb_settings_copy">Копирай</string>
<string name="revanced_sb_settings_ie_sum">Вашата JSON конфигурация на SponsorBlock може да бъде импортирана/експортирана в ReVanced и други платформи на SponsorBlock</string>
<string name="revanced_sb_settings_ie_sum_warning">Вашата SponsorBlock JSON конфигурация която може да се импортира/експортира до ReVanced или други платформи ползващи SponsorBlock. Това включва вашия потребителски id. Споделяйте това разумно</string>
<string name="revanced_sb_settings_import_successful">Настройките са успешно въстановени</string>
<string name="revanced_sb_settings_import_failed">Неуспешно импортиране: %s</string>
<string name="revanced_sb_settings_export_failed">Неуспешно експортиране на %s</string>
<string name="revanced_sb_settings_revanced_export_user_id_warning">Вашите настройки на SponsorBlock съдържат лично Id.\n\nВашето Id е като парола и не трябва да се споделя с никого\n</string>
<string name="revanced_sb_settings_revanced_export_user_id_warning">"Вашите настройки съдържат поверителен идентификатор на потребител на SponsorBlock.
Идентификаторът на потребителя е като парола и никога не трябва да се споделя.
"</string>
<string name="revanced_sb_settings_revanced_export_user_id_warning_dismiss">Не показвай отново</string>
<string name="revanced_sb_diff_segments">Промени поведението на сигмента</string>
<string name="revanced_sb_segments_sponsor">Спонсор</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>
@@ -884,17 +919,18 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_sb_skipped_nomusic">Пропусната част без музика</string>
<string name="revanced_sb_skipped_unsubmitted">Пропуснат неизпратен сегмент</string>
<string name="revanced_sb_skipped_multiple_segments">Пропуснати множество части</string>
<string name="revanced_sb_skip_automatically">Да се прескача от само себе си</string>
<string name="revanced_sb_skip_automatically">Автоматично пропускане</string>
<string name="revanced_sb_skip_automatically_once">Авт. пропускане веднъж</string>
<string name="revanced_sb_skip_showbutton">Показвай бутон за пропускане</string>
<string name="revanced_sb_skip_seekbaronly">Показв. в лентата за време</string>
<string name="revanced_sb_skip_ignore">Изключване</string>
<string name="revanced_sb_skip_ignore">Деактивиране</string>
<string name="revanced_sb_submit_failed_invalid">Не може да се изпрати сегмент: %s</string>
<string name="revanced_sb_submit_failed_timeout">SponsorBlock временно не работи</string>
<string name="revanced_sb_submit_failed_unknown_error">Не могат да се изпратят сигменти: (статус:%1$d %2$s)</string>
<string name="revanced_sb_submit_failed_rate_limit">Не може да се изпрати частта.\nБроят е ограничен (Твърде много от един и същ потребител, IP)</string>
<string name="revanced_sb_submit_failed_rate_limit">Неуспешно изпращане на сегмент. Ограничена скорост (твърде много от един и същ потребител или IP)</string>
<string name="revanced_sb_submit_failed_forbidden">Не може да се изпрати частта: %s</string>
<string name="revanced_sb_submit_failed_duplicate">Не може да се изпрати частта.\nВече съществува</string>
<string name="revanced_sb_submit_failed_duplicate">"Не може да се изпрати сегментът.
Вече съществува"</string>
<string name="revanced_sb_submit_succeeded">Частта е изпратена успешно</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. -->
<string name="revanced_sb_sponsorblock_connection_failure_timeout">SponsorBlock временно не е наличен (API timed out)</string>
@@ -917,7 +953,15 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_sb_new_segment_time_start">Частта започва от</string>
<string name="revanced_sb_new_segment_time_end">Частта свършва до</string>
<string name="revanced_sb_new_segment_confirm_title">Времената точни ли са?</string>
<string name="revanced_sb_new_segment_confirm_content">Сегментът продължава от\n\n%1$s\nдо\n%2$s\n\n(%3$s)\n\nГотов ли е за изпращане?</string>
<string name="revanced_sb_new_segment_confirm_content">"Сегментът е от
\"%1$s\"
до
\"%2$s\"
(\"%3$s\")
Готови ли сте да го изпратите?"</string>
<string name="revanced_sb_new_segment_start_is_before_end">Началото трябва да бъде преди края</string>
<string name="revanced_sb_new_segment_mark_locations_first">Първо маркирайте две места в лентата за времето</string>
<string name="revanced_sb_new_segment_preview_segment_first">Преглед и проверка на частта за нормално пропускане</string>
@@ -928,11 +972,11 @@ This is because Crowdin requires temporarily flattening this file and removing t
<!-- Shown in the settings preferences, and translations can be any text length. -->
<string name="revanced_sb_stats_connection_failure">Статистиката е враменно недостъпна (API не работи)</string>
<string name="revanced_sb_stats_loading">Зареждане...</string>
<string name="revanced_sb_stats_sb_disabled">SponsorBlock е изключено</string>
<string name="revanced_sb_stats_sb_disabled">SponsorBlock е деактивиран.</string>
<string name="revanced_sb_stats_username">Вашето потреб. име: &lt;b&gt;%s&lt;/b&gt;</string>
<string name="revanced_sb_stats_username_change">Докоснете за промяна потребителското име</string>
<string name="revanced_sb_stats_username_change_unknown_error">Не може да се промени потреб. име: Състояние: %1$d%2$s</string>
<string name="revanced_sb_stats_username_changed">Потребителското име е успешно променено</string>
<string name="revanced_sb_stats_username_changed">Потребителското име е успешно променено.</string>
<string name="revanced_sb_stats_reputation">Репутацията ви е &lt;b&gt;%.2f&lt;/b&gt;</string>
<string name="revanced_sb_stats_submissions">Създадохте &lt;b&gt;%s&lt;/b&gt; части</string>
<string name="revanced_sb_stats_submissions_sum">Докоснете тук, за да видите вашите сегменти</string>
@@ -951,15 +995,19 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_sb_color_reset">Възстанови цвета</string>
<string name="revanced_sb_color_invalid">Невалидна стойност за цвета</string>
<string name="revanced_sb_reset_color">Възстановяване на цвят</string>
<string name="revanced_sb_reset">Нулиране</string>
<string name="revanced_sb_about">Относно</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.spoofappversion.spoofAppVersionPatch">
<string name="revanced_spoof_app_version_title">Подлъгване за версията на приложението</string>
<string name="revanced_spoof_app_version_summary_on">Подправена версия</string>
<string name="revanced_spoof_app_version_summary_off">Не подправена версия</string>
<string name="revanced_spoof_app_version_user_dialog_message">Версията на приложението YouTube ще бъде променена на по-стара.\n\nТова ще промени външния вид и функциите на приложението.\n\nно ако по-късно се деактивира, се препоръчва да изчистите данните на приложението, за да избегнете грешки в потребителския интерфейс.</string>
<string name="revanced_spoof_app_version_user_dialog_message">"Версията на приложението ще бъде фалшифицирана по-стара версия на YouTube.
Това ще промени външния вид и функциите на приложението, но може да възникнат неизвестни странични ефекти.
Ако по-късно бъде изключено, препоръчително е да изчистите данните на приложението, за да предотвратите грешки в потребителския интерфейс."</string>
<!-- 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 -->
<string name="revanced_spoof_app_version_target_title">Подлъгване за версията на</string>
@@ -1012,7 +1060,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_miniplayer_screen_summary">Променете стила на минимизирания екран за възпроизвеждане</string>
<string name="revanced_miniplayer_type_title">Минимизиран тип екран за гледане</string>
<string name="revanced_miniplayer_type_entry_0">Деактивирано</string>
<string name="revanced_miniplayer_type_entry_1">Оригинал</string>
<string name="revanced_miniplayer_type_entry_1">По подразбиране</string>
<string name="revanced_miniplayer_type_entry_2">Минимално</string>
<string name="revanced_miniplayer_type_entry_3">Таблет</string>
<string name="revanced_miniplayer_type_entry_4">Модерен 1</string>
@@ -1022,19 +1070,28 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_miniplayer_rounded_corners_summary_on">Ъглите са заоблени</string>
<string name="revanced_miniplayer_rounded_corners_summary_off">Ъглите са нормални</string>
<string name="revanced_miniplayer_double_tap_action_title">Активирайте двойното докосване и щипване за преоразмеряване</string>
<string name="revanced_miniplayer_double_tap_action_summary_on">Действието с двойно докосване и щипване за преоразмеряване е активирано\n\n• Докоснете двукратно, за да увеличите размера на миниплейъра\n• Докоснете два пъти отново, за да възстановите оригиналния размер</string>
<string name="revanced_miniplayer_double_tap_action_summary_on">"Активирано е двойно докосване и щипка за преоразмеряване
• Двойно докосване за увеличаване на размера на мини плейъра
• Двойно докосване отново, за да възстановите оригиналния размер"</string>
<string name="revanced_miniplayer_double_tap_action_summary_off">Двойно докосване и щипване за преоразмеряване е деактивирано</string>
<string name="revanced_miniplayer_drag_and_drop_title">Разрешете плъзгане и местене</string>
<string name="revanced_miniplayer_drag_and_drop_summary_on">Плъзгане и местенето е активирано\n\nМиниплейърът може да се плъзга до всеки ъгъл на екрана</string>
<string name="revanced_miniplayer_drag_and_drop_summary_on">"Включено е плъзгане и пускане
Мини плейърът може да бъде плъзган до всеки ъгъл на екрана"</string>
<string name="revanced_miniplayer_drag_and_drop_summary_off">Плъзгането и преместването е деактивирано</string>
<string name="revanced_miniplayer_horizontal_drag_title">Активиране на хоризонтално плъзгане</string>
<string name="revanced_miniplayer_horizontal_drag_summary_on">Жестът за хоризонтално плъзгане е активиран\n\nМиниплейърът може да се плъзга извън екрана наляво или надясно</string>
<string name="revanced_miniplayer_horizontal_drag_summary_on">"Активиран е хоризонтален жест за плъзгане
Мини плейърът може да бъде плъзган извън екрана наляво или надясно"</string>
<string name="revanced_miniplayer_horizontal_drag_summary_off">Жестът за хоризонтално плъзгане е деактивиран</string>
<string name="revanced_miniplayer_hide_expand_close_title">Скриване на бутона за затваряне</string>
<string name="revanced_miniplayer_hide_expand_close_summary_on">Бутонът за затваряне е скрит</string>
<string name="revanced_miniplayer_hide_expand_close_summary_off">Показан е бутон за затваряне</string>
<string name="revanced_miniplayer_hide_expand_close_legacy_title">Бутони за разширяване и свиване на екрана</string>
<string name="revanced_miniplayer_hide_expand_close_legacy_summary_on">Бутоните са скрити\n\nПлъзнете за разгъване или затваряне</string>
<string name="revanced_miniplayer_hide_expand_close_legacy_summary_on">"Бутоните са скрити
Плъзнете, за да разгънете или затворите"</string>
<string name="revanced_miniplayer_hide_expand_close_legacy_summary_off">Бутони за разширяване и свиване на екрана са видими</string>
<string name="revanced_miniplayer_hide_subtext_title">Екранни текстове, етикети</string>
<string name="revanced_miniplayer_hide_subtext_summary_on">Скрити</string>
@@ -1065,7 +1122,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
<patch id="layout.thumbnails.bypassImageRegionRestrictionsPatch">
<string name="revanced_bypass_image_region_restrictions_title">Прескочете забраната за зареждане на изображение</string>
<string name="revanced_bypass_image_region_restrictions_summary_on">Домейнът yt4.ggpht.com се използва за зареждане на изображения</string>
<string name="revanced_bypass_image_region_restrictions_summary_off">Оригиналният домейн се използва за зареждане на изображения\n\nАктивирането на тази настройка може да коригира зареждането на изображения, които са блокирани в някои региони</string>
<string name="revanced_bypass_image_region_restrictions_summary_off">"Използва се оригинален хост на изображения
Активирането на това може да поправи липсващите изображения, които са блокирани в някои региони"</string>
</patch>
<patch id="layout.thumbnails.alternativeThumbnailsPatch">
<!-- 'Home' should be translated using the same localized wording YouTube displays for the home tab. -->
@@ -1080,7 +1139,11 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_alt_thumbnail_options_entry_2">DeArrow &amp; оригинални миниатюри</string>
<string name="revanced_alt_thumbnail_options_entry_3">DeArrow &amp; Неподвижни кадри</string>
<string name="revanced_alt_thumbnail_options_entry_4">Неподвижни кадри</string>
<string name="revanced_alt_thumbnail_dearrow_about_summary">DeArrow предоставя миниатюри на публиката за видеоклипове. Тези миниатюри често са по-подходящи от тези, предоставени от самия YouTube. Ако е активирано, URL адресите на видео ще бъдат изпратени до API сървъра, без да се изпращат други данни. Ако видеоклипът няма миниатюри на DeArrow, ще се покажат или неговите оригинални миниатюри, или заснети кадри. Щракнете, за да научите повече за DeArrow</string>
<string name="revanced_alt_thumbnail_dearrow_about_summary">"DeArrow предоставя миниатюри от краудсорсинг за видеоклипове в YouTube. Тези миниатюри често са по-подходящи от тези, предоставени от YouTube
Ако е разрешено, URL адресите на видеоклиповете ще бъдат изпратени до API сървъра и няма да бъдат изпращани други данни. Ако един видеоклип няма миниатюри на DeArrow, тогава се показват оригиналните или заснемащите кадри
Докоснете тук, за да научите повече за DeArrow"</string>
<string name="revanced_alt_thumbnail_dearrow_connection_toast_title">Показване на известие, ако API не е наличен</string>
<string name="revanced_alt_thumbnail_dearrow_connection_toast_summary_on">Показва се известие, ако DeArrow не е наличен</string>
<string name="revanced_alt_thumbnail_dearrow_connection_toast_summary_off">Показва се известие, ако DeArrow не е наличен</string>
@@ -1119,8 +1182,12 @@ This is because Crowdin requires temporarily flattening this file and removing t
</patch>
<patch id="misc.dimensions.spoof.spoofDeviceDimensionsPatch">
<string name="revanced_spoof_device_dimensions_title">Лъжливи параметри на устройството</string>
<string name="revanced_spoof_device_dimensions_summary_on">Подправената резолюция на устройството\n\nМоже да се отключи по-високо качество на видеото, но може да изпитате засичане при възпроизвеждане на видео, по-лош живот на батерията и неизвестни странични ефекти</string>
<string name="revanced_spoof_device_dimensions_summary_off">Резолюцията на устройството не е подправена\n\nАктивирането на това не може да отключи по-високо качество на видеото</string>
<string name="revanced_spoof_device_dimensions_summary_on">"Размерите на устройството са фалшифицирани
По-високите видео качества може да бъдат отключени, но може да изпитате заекване на видеовъзпроизвеждане, по-лоша издръжливост на батерията и неизвестни странични ефекти"</string>
<string name="revanced_spoof_device_dimensions_summary_off">"Размерите на устройството не са фалшифицирани
Активирането на това може да отключи по-високи видео качества"</string>
<string name="revanced_spoof_device_dimensions_user_dialog_message">Разрешаването на това може да причини прекъсване на възпроизвеждането на видео, влошен живот на батерията и неизвестни странични ефекти.</string>
</patch>
<patch id="misc.gms.gmsCoreSupportResourcePatch">
@@ -1161,7 +1228,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
</patch>
<patch id="video.speed.button.playbackSpeedButtonPatch">
<string name="revanced_playback_speed_dialog_button_title">Показване бутон за скорост</string>
<string name="revanced_playback_speed_dialog_button_summary_on">Бутонът е показан</string>
<string name="revanced_playback_speed_dialog_button_summary_on">Бутона \"Уведоми ме\" се показва.</string>
<string name="revanced_playback_speed_dialog_button_summary_off">Бутонът не е показан</string>
</patch>
<patch id="video.speed.custom.customPlaybackSpeedPatch">
@@ -1170,8 +1237,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_custom_speed_menu_summary_off">Менюто за потребителска скорост не се показва</string>
<string name="revanced_custom_playback_speeds_title">Персонализирани скорости на възпроизвеждане</string>
<string name="revanced_custom_playback_speeds_summary">Добавете или променете скоростa на възпроизвеждане</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_invalid">Персонализираните скорости трябва да са по-малки от %s</string>
<string name="revanced_custom_playback_speeds_parse_exception">Невалидни персонализирани скорости на възпроизвеждане</string>
<string name="revanced_custom_playback_speeds_auto">Авто</string>
</patch>
<patch id="video.speed.remember.rememberPlaybackSpeedPatch">
@@ -1196,18 +1263,79 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_spoof_video_streams_screen_summary">Подправете клиентските видео потоци, за да предотвратите проблеми с възпроизвеждането</string>
<string name="revanced_spoof_video_streams_title">Подправяне на видео потоци</string>
<string name="revanced_spoof_video_streams_summary_on">Видео потоците са подправени</string>
<string name="revanced_spoof_video_streams_summary_off">Видео потоците не са подправени\n\nВъзпроизвеждането на видео може да не работи</string>
<string name="revanced_spoof_video_streams_summary_off">отоците на видеоклипове не са фалшифицирани
Възпроизвеждането на видеоклипове може да не работи"</string>
<string name="revanced_spoof_video_streams_user_dialog_message">Деактивирането на тази настройка ще доведе до проблеми с възпроизвеждането на видео.</string>
<string name="revanced_spoof_video_streams_client_title">Клиент по подразбиране</string>
<string name="revanced_spoof_video_streams_ios_force_avc_title">Принудително 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">Видеокодека е VP9 или AV1</string>
<string name="revanced_spoof_video_streams_ios_force_avc_no_hardware_vp9_summary_on">Вашето устройство няма хардуерно VP9 декодиране и тази настройка винаги е активирана, когато е активно подправяне на клиента</string>
<string name="revanced_spoof_video_streams_ios_force_avc_user_dialog_message">Активирането на това може да подобри живота на батерията и да коригира прекъсванията при възпроизвеждане.\n\nAVC има максимална разделителна способност от 1080p и възпроизвеждането на видео ще използва повече интернет данни от VP9 или AV1.</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_title">ранични ефекти от подмяната на iOS</string>
<string name="revanced_spoof_video_streams_about_ios_summary">Платените видеоклипове за деца може да не се възпроизвеждат\n• Потоците на живо започват отначало\n• Видеоклиповете може да завършват 1 секунда по-рано\n• Няма аудиокодек Opus</string>
<string name="revanced_spoof_video_streams_about_ios_summary">"Частните детски видеоклипове може да не се възпроизвеждат
• Предаванията на живо започват от началото
• Видеоклиповете завършват 1 секунда по-рано"</string>
<string name="revanced_spoof_video_streams_about_android_vr_title">Странични ефекти от подправяне на Android VR</string>
<string name="revanced_spoof_video_streams_about_android_vr_summary">• Детските видеоклипове може да не се възпроизвеждат\n• Липсва менюто за аудио запис\n• Не е налична стабилна сила на звука</string>
<string name="revanced_spoof_video_streams_about_android_vr_summary">"• Детските видеоклипове може да не се възпроизвеждат
• Предаванията на живо започват от началото
• Видеоклиповете завършват 1 секунда по-рано"</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_PT_BR">Португалски (Бразилия)</string>
<string name="revanced_spoof_video_streams_language_PT_PT">Португалски (Португалия)</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>
</patch>
</app>
<app id="twitch">
@@ -1217,8 +1345,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_block_audio_ads_summary_off">Аудио рекламата е разблокирана</string>
</patch>
<patch id="ad.embedded.embeddedAdsPatch">
<string name="revanced_embedded_ads_service_unavailable">%s е недостъпен. Може да се показват реклами. Опитайте друга услуга за блокиране на реклами.</string>
<string name="revanced_embedded_ads_service_failed">%s сървърът върна грешка. Може да се показват реклами. Опитайте да превключите друга услуга за блокиране на реклами.</string>
<string name="revanced_embedded_ads_service_unavailable">%s не е наличен, може да се появят реклами. Опитайте да промените услугата за блокиране на реклами в настройките.</string>
<string name="revanced_embedded_ads_service_failed">%s върна грешка, може да се появят реклами. Опитайте да промените услугата за блокиране на реклами в настройките.</string>
<string name="revanced_block_embedded_ads_title">Блокиране на вградени видеореклами</string>
<string name="revanced_block_embedded_ads_entry_1">Деактивирано</string>
<string name="revanced_block_embedded_ads_entry_2">Luminous прокси</string>

View File

@@ -1,34 +1,23 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Note: All strings must have a unique path, even if the same string is declared in two different apps.
This is because Crowdin requires temporarily flattening this file and removing the <app> and <patch> elements.
All strings must have a unique path, even if the same string is declared in two different apps.
This is because Crowdin requires temporarily flattening this file and removing the <app> and <patch> elements.
# General guidelines and information for translating
## Strings parameters can be reordered to allow more flexible translations if the grammar should be changed.
Strings with new lines must be raw strings where they're wrapped in quotes and new lines are not encoded.
Raw strings still requires escaping embedded double quotes but escaping embedded single quotes is optional.
For example, the patches string:
<string name="revanced_patches_string">You will arrive at %1$s in %2$s hours from now</string>
Could be translated to another language using a rearranged grammar:
<string name="revanced_patches_string">You will arrive %2$s hours from now at %1$s</string>
Raw strings are required because Crowdin AI translations regularly gets confused and
replace \n with an encoded new line character.
For Manager strings:
You will arrive at ${destination} in ${count} hours from now
Could be rearranged by changing the order of the ${} parameters:
You will arrive ${count} hours from now at ${destination}
Bad:
<string name="summary_key">First \'item\' text\nSecond \"item\" text</string>
Reordering is particularly relevant when translating into right to left languages, or for any language with grammar that is noticeably different from English.
Good:
<string name="summary_key">"First 'item' text
Second \"item\" text"</string>
## Single and double quotation marks must be escaped for patch strings (Manager does not require escaping any quotes).
All _patches_ single and double quotation marks must be escaped as \" or \'
Forgetting to do this will cause that string to appear in app with no quotation characters.
Correct:
<string name="revanced_string">You\'re correct. This is the \"correct\" way and this text will appear as expected in the app</string>
Not correct:
<string name="revanced_string">You're not correct. This is not the "correct" way and this text will not appear as expected the in app</string>
-->
<resources>
<app id="shared">
@@ -36,6 +25,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
<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">&lt;h5&gt;এই অ্যাপটি আপনার দ্বারা প্যাচ করা হয়েছে বলে মনে হচ্ছে না।&lt;/h5&gt;&lt;br&gt;এই অ্যাপটি সঠিকভাবে কাজ নাও করতে পারে, &lt;b&gt;ক্ষতিকারক বা এমনকি ব্যবহারের জন্য বিপজ্জনক হতে পারে&lt;/b&gt;&lt;br&gt;&lt;br&gt;এই চেকগুলি ইঙ্গিত দেয় যে এই অ্যাপটি পূর্ববর্তীভাবে প্যাচ করা হয়েছে বা অন্য কাউকে থেকে পাওয়া গেছে:&lt;br&gt;&lt;br&gt;&lt;small&gt;%1$s&lt;/small&gt;&lt;br&gt;এটি দৃঢ়ভাবে সুপারিশ করা হয় যে &lt;b&gt;এই অ্যাপটি আনইনস্টল করা হোক এবং নিজেই প্যাচ করা হোক&lt;/b&gt; যাতে নিশ্চিত করা হয় যে আপনি একটি যাচাইকৃত এবং সুরক্ষিত অ্যাপ ব্যবহার করছেন।&lt;p&gt;&lt;br&gt;যদি উপেক্ষা করা হয়, তাহলে এই সতর্কতাটি শুধুমাত্র দু\'বার দেখানো হবে।</string>
<string name="revanced_check_environment_not_same_patching_device">অন্য ডিভাইসে প্যাচ করা হয়েছে</string>
<string name="revanced_check_environment_manager_not_expected_installer">ReVanced Manager দ্বারা প্যাচ করা হয়নি</string>
<string name="revanced_check_environment_not_near_patch_time">১০ মিনিটেরও বেশি আগে প্যাচ করা হয়েছে</string>
@@ -66,9 +56,17 @@ This is because Crowdin requires temporarily flattening this file and removing t
<!-- 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 ইনস্টল করা হয়নি। ইনস্টল করুন।</string>
<string name="gms_core_dialog_title">পদক্ষেপ প্রয়োজন</string>
<string name="gms_core_dialog_not_whitelisted_not_allowed_in_background_message">MicroG GmsCore এর ব্যাকগ্রাউন্ডে চলমান থাকার অনুমতি নেই।\n\nআপনার ডিভাইসের জন্য \"Don\'t kill my app\" এ থাকা নির্দেশাবলী অনুসরণ করুন, এবং আপনার ইনস্টলকৃত MicroG তে তা প্রয়োগ করুন।\n\nঅ্যাপ সঠিকভাবে চলতে এটি অবশ্যই প্রয়োজন।</string>
<string name="gms_core_dialog_not_whitelisted_not_allowed_in_background_message">"MicroG GmsCore-এর পটভূমিতে চালানোর অনুমতি নেই।
আপনার ফোনের জন্য \"Don't kill my app\" গাইড অনুসরণ করুন এবং MicroG ইনস্টলেশনের জন্য নির্দেশাবলী প্রয়োগ করুন।
এটি অ্যাপ্লিকেশনটি কাজ করার জন্য প্রয়োজন।"</string>
<string name="gms_core_dialog_open_website_text">ওয়েবসাইট খুলুন</string>
<string name="gms_core_dialog_not_whitelisted_using_battery_optimizations_message">ত্রুটি এড়াতে MicroG GmsCore এর ব্যাটারি অপটিমাইজেশন অবশ্যই নিষ্ক্রিয় করতে হবে।\n\nএগিয়ে যান বোতামে ট্যাপ করুন এবং ব্যাটারি অপটিমাইজেশন নিস্ক্রিয় করুন।</string>
<string name="gms_core_dialog_not_whitelisted_using_battery_optimizations_message">"সমস্যা এড়াতে MicroG GmsCore-এর ব্যাটারি অপটিমাইজেশন অক্ষম করতে হবে।
MicroG-এর জন্য ব্যাটারি অপ্টিমাইজেশন অক্ষম করা ব্যাটারি ব্যবহারকে নেতিবাচকভাবে প্রভাবিত করবে না।
চালিয়ে যান বোতামটি ট্যাপ করুন এবং অপ্টিমাইজেশন পরিবর্তনগুলি অনুমোদন করুন।"</string>
<string name="gms_core_dialog_continue_text">এগিয়ে যান</string>
</patch>
</app>
@@ -86,6 +84,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_settings_screen_12_video_title">ভিডিও</string>
</patch>
<patch id="misc.backgroundplayback.backgroundPlaybackPatch">
<string name="revanced_shorts_disable_background_playback_title">Shorts ব্যাকগ্রাউন্ড প্লে অক্ষম করুন</string>
<string name="revanced_shorts_disable_background_playback_summary_on">Shorts ব্যাকগ্রাউন্ড প্লে অক্ষম করা হয়েছে</string>
<string name="revanced_shorts_disable_background_playback_summary_off">Shorts ব্যাকগ্রাউন্ড প্লে সক্ষম করা হয়েছে</string>
</patch>
<patch id="misc.debugging.enableDebuggingPatch">
<string name="revanced_debug_screen_title">ডিবাগিং</string>
@@ -102,7 +103,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_debug_toast_on_error_title">ReVanced এর ত্রুটির ক্ষেত্রে টোস্ট দেখান</string>
<string name="revanced_debug_toast_on_error_summary_on">কোন ত্রুটি দেখা গেলে টোস্ট দেখায়</string>
<string name="revanced_debug_toast_on_error_summary_off">কোন ত্রুটি দেখা গেলে টোস্ট দেখায় না</string>
<string name="revanced_debug_toast_on_error_user_dialog_message">ত্রুটির টোস্ট দেখানো বন্ধ কর তা ReVanced এর সকল ত্রুটি বিজ্ঞপ্তি লুকিয়ে রাখবে।\n\nআপনি কোন অনাকাঙ্ক্ষিত ঘটনার বিজ্ঞপ্তি পাবেন না।</string>
<string name="revanced_debug_toast_on_error_user_dialog_message">"ত্রুটি \"toast\" বন্ধ করে ReVanced ত্রুটি বিজ্ঞপ্তিগুলি লুকানো হয়।
আপনি কোনও অপ্রত্যাশিত ঘটনার বিষয়ে অবহিত হবেন না।"</string>
</patch>
<patch id="layout.hide.general.hideLayoutComponentsPatch">
<string name="revanced_disable_like_subscribe_glow_title">পছন্দ / সদস্যতা বোতামের উজ্জ্বলতা নিষ্ক্রিয় করুন</string>
@@ -121,7 +124,12 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_channel_watermark_summary_on">জলছাপ লুকানো আছে</string>
<string name="revanced_hide_channel_watermark_summary_off">জলছাপ দেখানো আছে</string>
<string name="revanced_hide_horizontal_shelves_title">আনুভূমিক শেলফ লুকান</string>
<string name="revanced_hide_horizontal_shelves_summary_on">যে সকল শেলফ লুকানো হবে:\n• সর্বমেষ খবর\n• দেখা অবিরত রাখুন\n• আরও চ্যানেল দেখুন\n• কেনাকাটা\n• এটি আবার দেখুন</string>
<string name="revanced_hide_horizontal_shelves_summary_on">"শেল্ফগুলি লুকানো হয় যেমন:
• তাজা সংবাদ
• দেখা চালিয়ে যান
• আরও চ্যানেল অন্বেষণ করুন
• কেনাকাটা
• আবার দেখুন"</string>
<string name="revanced_hide_horizontal_shelves_summary_off">শেলফ প্রদর্শিত হয়েছে</string>
<!-- 'Join' should be translated using the same localized wording YouTube displays.
This appears in the video player for certain videos. -->
@@ -221,9 +229,16 @@ This is because Crowdin requires temporarily flattening this file and removing t
<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_podcast_section_title">‘পডকাস্ট বিভাগ লুকান’</string>
<string name="revanced_hide_podcast_section_summary_on">‘পডকাস্ট বিভাগ’ লুকানো আছে</string>
<string name="revanced_hide_podcast_section_summary_off">‘পডকাস্ট বিভাগ’ প্রদর্শিত হয়েছে</string>
<string name="revanced_hide_info_cards_section_title">তথ্য কার্ড সেকশন লুকান</string>
<string name="revanced_hide_info_cards_section_summary_on">তথ্য কার্ড সেকশন লুকিয়ে রয়েছে</string>
<string name="revanced_hide_info_cards_section_summary_off">তথ্য কার্ড সেকশন প্রদর্শিত হয়েছে</string>
<string name="revanced_hide_key_concepts_section_title">‘মূল বিষয়বস্তু’ বিভাগ লুকানো আছে</string>
<string name="revanced_hide_key_concepts_section_summary_on">‘মূল বিষয়বস্তু’ বিভাগ লুকিয়ে রয়েছে</string>
<string name="revanced_hide_key_concepts_section_summary_off">‘मुख्य संकल्पना’ अनुभाग प्रदर्शित होता है</string>
<string name="revanced_hide_transcript_section_title">ट्रांसक्रिप्ट अनुभाग छिपाएँ</string>
<string name="revanced_hide_transcript_section_summary_on">ট্রান্সস্ক্রিপ্ট বিভাগ লুকিয়ে রয়েছে</string>
<string name="revanced_hide_transcript_section_summary_off">ট্রান্সস্ক্রিপ্ট বিভাগ প্রদর্শিত হয়েছে</string>
<string name="revanced_hide_description_components_screen_title">ভিডিওর বিবরণ</string>
@@ -241,6 +256,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_filter_bar_feed_in_related_videos_summary_off">সম্পর্কিত ভিডিওতে প্রদর্শিত হয়েছে</string>
<string name="revanced_comments_screen_title">মন্তব্য</string>
<string name="revanced_comments_screen_summary">মন্তব্য বিভাগের উপাদানগুলি লুকান বা দেখান৷</string>
<string name="revanced_hide_comments_chat_summary_summary_on">“চ্যাট সারাংশ” লুকানো আছে</string>
<string name="revanced_hide_comments_chat_summary_summary_off">“চ্যাট সারাংশ” দেখানো হচ্ছে</string>
<string name="revanced_hide_comments_by_members_header_title">\'মেম্বারদের মন্তব্য\' হেডার লুকান</string>
<string name="revanced_hide_comments_by_members_header_summary_on">\'মেম্বারদের মন্তব্য\' হেডার লুকিয়ে রয়েছে</string>
<string name="revanced_hide_comments_by_members_header_summary_off">\'মেম্বারদের মন্তব্য\' হেডার প্রদর্শিত হয়েছে</string>
@@ -260,6 +277,12 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_summary_on">টাইমস্ট্যাম্প ও ইমোজি বোতাম লুকিয়ে রয়েছে</string>
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_summary_off">টাইমস্ট্যাম্প ও ইমোজি বোতাম প্রদর্শিত হয়েছে</string>
<!-- https://logos.fandom.com/wiki/YouTube/Yoodles -->
<string name="revanced_hide_doodles_title">YouTube Doodles छिपाएँ</string>
<string name="revanced_hide_doodles_summary_on">सर्च बार Doodles छिपे हुए हैं</string>
<string name="revanced_hide_doodles_summary_off">সার্চ বারে Doodles প্রদর্শিত হয়</string>
<string name="revanced_hide_doodles_user_dialog_message">"YouTube Doodles প্রতি বছর কয়েক দিনের জন্য দেখানো হয়।
আপনার অঞ্চলে যদি কোনও Doodle বর্তমানে দেখানো হচ্ছে এবং এই লুকানো সেটিং চালু থাকে, তাহলে সার্চ বারের নীচে ফিল্টার বারটিও লুকানো থাকবে।"</string>
<string name="revanced_custom_filter_screen_title">কাস্টম ফিল্টার</string>
<string name="revanced_custom_filter_screen_summary">কাস্টম ফিল্টার ব্যবহার করে বিভিন্ন উপাদান লুকান</string>
<string name="revanced_custom_filter_title">কাস্টম ফিল্টার সক্রিয় করুন</string>
@@ -283,16 +306,36 @@ This is because Crowdin requires temporarily flattening this file and removing t
<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. -->
<string name="revanced_hide_keyword_content_phrases_summary">"নতুন লাইন দ্বারা পৃথক করা লুকানোর জন্য কিওয়ার্ড এবং বাক্যাংশ
কিওয়ার্ড চ্যানেলের নাম বা ভিডিও শিরোনামে দেখানো কোনও পাঠ্য হতে পারে
মাঝখানে বড় হাতের অক্ষর সম্বলিত শব্দগুলি কেসিং দিয়ে প্রবেশ করতে হবে (যেমন: iPhone, TikTok, LeBlanc)"</string>
<string name="revanced_hide_keyword_content_about_title">কীওয়ার্ড ফিল্টারিং সম্পর্কে</string>
<string name="revanced_hide_keyword_content_about_summary">"হোম / সাবস্ক্রিপশন / অনুসন্ধানের ফলাফলগুলি কিওয়ার্ড বাক্যাংশের সাথে মিলে যাওয়া সামগ্রী লুকানোর জন্য ফিল্টার করা হয়
সীমাবদ্ধতা
• চ্যানেলের নাম দ্বারা Shorts লুকানো যাবে না
• কিছু UI উপাদান লুকানো নাও হতে পারে
• কোনও কিওয়ার্ড অনুসন্ধান করলে কোনও ফলাফল নাও দেখাতে পারে"</string>
<string name="revanced_hide_keyword_content_about_whole_words_title">সম্পূর্ণ শব্দ মেলাও</string>
<!-- Translations _must_ use a localized example. For languages that do not use spaces between words (Chinese, Japanese, etc) the English AI example should be used since no localized examples exist. Or if using machine translations, or if nobody wants to think of a localized example, then the English 'ai' example should be left as-is. -->
<string name="revanced_hide_keyword_content_about_whole_words_summary">ডাবল কোটের মধ্যে একটি কীওয়ার্ড/ফ্রেজ রাখলে ভিডিও শিরোনাম এবং চ্যানেলের নামের আংশিক মিল সনাক্ত করা বন্ধ হয়ে যাবে&lt;br&gt;&lt;br&gt;উদাহরণস্বরূপ,&lt;br&gt;&lt;b&gt;\"ai\"&lt;/b&gt; ভিডিওটি লুকিয়ে দেবে: &lt;b&gt;How does AI work?&lt;/b&gt;&lt;br&gt;কিন্তু লুকিয়ে দেবে না: &lt;b&gt;What does fair use mean?&lt;/b&gt;</string>
<!-- Translations of this should not be longer than the original English text, otherwise the text can be clipped and not entirely shown. -->
<string name="revanced_hide_keyword_toast_invalid_common">কিওয়ার্ড ব্যবহার করা যাবে না: %s</string>
<string name="revanced_hide_keyword_toast_invalid_common_whole_word_required">কিওয়ার্ড ব্যবহার করার জন্য উদ্ধৃতি যোগ করুন: %s</string>
<string name="revanced_hide_keyword_toast_invalid_conflicting">কিওয়ার্ডের দ্বন্দ্বপূর্ণ ঘোষণা আছে: %s</string>
<string name="revanced_hide_keyword_toast_invalid_length">কিওয়ার্ড খুব ছোট এবং উদ্ধৃতি প্রয়োজন: %s</string>
<string name="revanced_hide_keyword_toast_invalid_broad">কিওয়ার্ড সমস্ত ভিডিও লুকিয়ে রাখবে: %s</string>
</patch>
<patch id="ad.general.hideAdsResourcePatch">
<string name="revanced_hide_general_ads_title">সাধারণ বিজ্ঞাপন লুকান</string>
<string name="revanced_hide_general_ads_summary_on">সাধারণ বিজ্ঞাপন লুকিয়ে রয়েছে</string>
<string name="revanced_hide_general_ads_summary_off">সাধারণ বিজ্ঞাপন প্রদর্শিত হয়েছে</string>
<string name="revanced_hide_fullscreen_ads_title">পূর্ণ স্ক্রীন প্যানেল লুকান</string>
<string name="revanced_hide_fullscreen_ads_summary_on">পূর্ণ স্ক্রীণ বিজ্ঞাপন লুকিয়ে রয়েছে\n\nএই ফিচারটি শুধুমাত্র পুরোনো ডিভাইসের জন্য উপলভ্য</string>
<string name="revanced_hide_fullscreen_ads_summary_on">"পূর্ণ পর্দার বিজ্ঞাপন লুকানো হয়
এই বৈশিষ্ট্যটি কেবল পুরনো ডিভাইসের জন্য উপলব্ধ"</string>
<string name="revanced_hide_fullscreen_ads_summary_off">পূর্ণ স্ক্রীন বিজ্ঞাপন প্রদর্শিত হয়েছে</string>
<string name="revanced_hide_buttoned_ads_title">বোতামযুক্ত বিজ্ঞাপন লুকান</string>
<string name="revanced_hide_buttoned_ads_summary_on">বোতামযুক্ত বিজ্ঞাপন লুকিয়ে রয়েছে</string>
@@ -306,6 +349,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
<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_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>
<string name="revanced_hide_shopping_links_title">ভিডিওর বিবরণে কেনাকাটার লিঙ্ক লুকান</string>
<string name="revanced_hide_shopping_links_summary_on">কেনাকাটার লিঙ্ক লুকিয়ে রয়েছে</string>
<string name="revanced_hide_shopping_links_summary_off">কেনাকাটার লিঙ্ক প্রদর্শিত হয়েছে</string>
@@ -389,6 +435,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_swipe_save_and_restore_brightness_summary_on">পূর্ণস্ক্রিনে প্রবেশ বা পূর্ণস্ক্রিন থেকে বাহির হওয়ার সময়, উজ্জ্বলতা সংরক্ষণ এবং পুনরুদ্ধার করবে</string>
<string name="revanced_swipe_save_and_restore_brightness_summary_off">পূর্ণস্ক্রিনে প্রবেশ বা পূর্ণস্ক্রিন থেকে বাহির হওয়ার সময়, উজ্জ্বলতা সংরক্ষণ এবং পুনরুদ্ধার করবে না</string>
<string name="revanced_swipe_lowest_value_enable_auto_brightness_title">স্বয়ংক্রিয়-উজ্জ্বলতার অঙ্গভঙ্গি সক্রিয় করুন</string>
<string name="revanced_swipe_lowest_value_enable_auto_brightness_summary_on">উজ্জ্বলতার অঙ্গভঙ্গির সর্বনিম্ন মানে সোয়াইপ ডাউন করলে অটো-উজ্জ্বলতা সক্ষম হয়</string>
<string name="revanced_swipe_lowest_value_enable_auto_brightness_summary_off">সর্বনিম্ন মানে সোয়াইপ ডাউন করলে অটো-উজ্জ্বলতা সক্ষম হয় না</string>
<string name="revanced_swipe_lowest_value_enable_auto_brightness_overlay_text">স্বতস্ফূর্তভাবে</string>
<string name="revanced_swipe_overlay_timeout_title">ওভার-লে টাইম আউট</string>
<string name="revanced_swipe_overlay_timeout_summary">কত মিলিসেকেন্ডের জন্য ওভারলে দৃশ্যমান হবে</string>
@@ -397,16 +445,34 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_swipe_overlay_background_alpha_title">সোয়াইপ ব্যাকগ্রাউন্ডের দৃশ্যমানতা</string>
<string name="revanced_swipe_overlay_background_alpha_summary">সোয়াইপ ওভারলে ব্যাকগ্রাউন্ডের দৃশ্যমানতা</string>
<string name="revanced_swipe_threshold_title">সোয়াইপ থ্রেশহোল্ড এর মাত্রা</string>
<string name="revanced_swipe_threshold_summary">The amount of threshold for swipe to occur</string>
</patch>
<patch id="layout.autocaptions.autoCaptionsPatch">
<string name="revanced_auto_captions_title">স্বয়ংক্রিয় ক্যাপশন বন্ধ করুন</string>
<string name="revanced_auto_captions_summary_on">অটো ক্যাপশন বন্ধ করা হয়েছে</string>
<string name="revanced_auto_captions_summary_off">অটো ক্যাপশন চালু করা হয়েছে</string>
</patch>
<patch id="layout.buttons.action.hideButtonsPatch">
<string name="revanced_hide_buttons_screen_title">অ্যাকশন বোতাম</string>
<string name="revanced_hide_buttons_screen_summary">ভিডিওর নীচে বোতাম লুকানো বা দেখানো</string>
<string name="revanced_hide_like_dislike_button_title">Like এবং Dislike লুকান</string>
<string name="revanced_hide_like_dislike_button_summary_on">Like এবং Dislike বোতাম লুকানো আছে</string>
<string name="revanced_hide_like_dislike_button_summary_off">Like এবং Dislike বোতাম দেখানো হচ্ছে</string>
<!-- 'Share' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_share_button_title">Share লুকান</string>
<string name="revanced_hide_share_button_summary_on">শেয়ার করুন বোতাম লুকিয়ে রয়েছে</string>
<string name="revanced_hide_share_button_summary_off">শেয়ার বাটন প্রদর্শিত হয়েছে</string>
<!-- 'Report' should be translated with the same localized wording that YouTube displays.
This button usually appears only on live streams. -->
<string name="revanced_hide_report_button_title">Report লুকান</string>
<string name="revanced_hide_report_button_summary_on">রিপোর্ট বাটন লুকিয়ে রয়েছে</string>
<string name="revanced_hide_report_button_summary_off">রিপোর্ট বাটন প্রদর্শিত</string>
<!-- 'Remix' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_remix_button_title">Remix লুকান</string>
<string name="revanced_hide_remix_button_summary_on">রিমিক্স বাটন লুকিয়ে রয়েছে</string>
<string name="revanced_hide_remix_button_summary_off">রিমিক্স বাটন প্রদর্শিত হয়েছে</string>
<!-- 'Download' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_download_button_title">ডাউনলোডগুলো হাইড করাও</string>
<string name="revanced_hide_download_button_summary_on">ডাউনলোড বোতাম লুকানো আছে</string>
<string name="revanced_hide_download_button_summary_off">ডাউনলোড বোতাম দেখানো হয়েছে</string>
<!-- 'Thanks' should be translated with the same localized wording that YouTube displays. -->
@@ -418,6 +484,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_clip_button_summary_on">ক্লিপ বোতাম লুকিয়ে রয়েছে</string>
<string name="revanced_hide_clip_button_summary_off">ক্লিপ বোতাম প্রদর্শিত হয়েছে</string>
<!-- 'Save' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_playlist_button_title">প্লেলিস্টে Save লুকান</string>
<string name="revanced_hide_playlist_button_summary_on">প্লেলিস্টে Save বোতাম লুকানো আছে</string>
<string name="revanced_hide_playlist_button_summary_off">প্লেলিস্টে Save বোতাম দেখানো হচ্ছে</string>
</patch>
<patch id="layout.buttons.navigation.navigationButtonsPatch">
<string name="revanced_navigation_buttons_screen_title">নেভিগেশন বোতাম</string>
@@ -440,7 +509,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_subscriptions_button_summary_off">সদস্যতা নিন বোতাম প্রদর্শিত হয়েছে</string>
<!-- 'Notifications' should be translated using the same localized wording YouTube displays the tab. -->
<string name="revanced_switch_create_with_notifications_button_title">তৈরি বোতামকে বিজ্ঞপ্তি বোতাম দ্বারা সুইচ করুন</string>
<string name="revanced_switch_create_with_notifications_button_summary_on">তৈরি করুন বোতাম বিজ্ঞপ্তিগুলো বোতাম দ্বারা স্থান পরিবর্তিত হয়েছে\n\nবিঃদ্রঃ এটি সক্রিয় করার ফলে ভিডিও বিজ্ঞাপন জোরপূর্বক বন্ধ থাকবে</string>
<string name="revanced_switch_create_with_notifications_button_summary_on">"তৈরি বোতামটি বিজ্ঞপ্তি বোতামের সাথে পরিবর্তন করা হয়
মনে রাখবেন: এটি সক্রিয় করা ভিডিও বিজ্ঞাপনগুলিও জোর করে লুকিয়ে দেয়"</string>
<string name="revanced_switch_create_with_notifications_button_summary_off">তৈরি বোতামকে বিজ্ঞপ্তি বোতাম দ্বারা সুইচ করা হয়নি</string>
<string name="revanced_hide_navigation_button_labels_title">নেভিগেশন বোতাম লেবেল লুকান</string>
<string name="revanced_hide_navigation_button_labels_summary_on">লেবেল লুকিয়ে রয়েছে</string>
@@ -458,6 +529,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_player_flyout_additional_settings_summary_on">আরও সেটিংস দেখুন মেনু লুকিয়ে রয়েছে</string>
<string name="revanced_hide_player_flyout_additional_settings_summary_off">আরও সেটিংস দেখুন মেনু প্রদর্শিত হয়েছে</string>
<!-- 'Sleep timer' should be translated using the same localized wording YouTube displays for the menu item. -->
<string name="revanced_hide_player_flyout_sleep_timer_title">Sleep timer লুকান</string>
<string name="revanced_hide_player_flyout_sleep_timer_summary_on">Sleep timer মেনু লুকানো আছে</string>
<string name="revanced_hide_player_flyout_sleep_timer_summary_off">Sleep timer মেনু দেখানো হচ্ছে</string>
<!-- 'Loop video' should be translated using the same localized wording YouTube displays for the menu item. -->
<string name="revanced_hide_player_flyout_loop_video_title">ভিডিও লুপ করুন লুকান</string>
<string name="revanced_hide_player_flyout_loop_video_summary_on">ভিডিও লুপ করুন মেনু লুকিয়ে রয়েছে</string>
@@ -466,6 +540,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_player_flyout_ambient_mode_title">অ্যাম্বিয়েন্ট মোড লুকান</string>
<string name="revanced_hide_player_flyout_ambient_mode_summary_on">অ্যাম্বিয়েন্ট মোড মেনু লুকিয়ে রয়েছে</string>
<string name="revanced_hide_player_flyout_ambient_mode_summary_off">অ্যাম্বিয়েন্ট মোড মেনু প্রদর্শিত হয়েছে</string>
<string name="revanced_hide_player_flyout_stable_volume_title">Stable volume লুকান</string>
<string name="revanced_hide_player_flyout_stable_volume_summary_off">Stable volume মেনু দেখানো হচ্ছে</string>
<string name="revanced_hide_player_flyout_stable_volume_summary_on">Stable volume মেনু লুকানো আছে</string>
<!-- 'Help & feedback' should be translated using the same localized wording YouTube displays for the menu item. -->
<string name="revanced_hide_player_flyout_help_title">সাহায্য এবং ফিডব্যাক মেনু লুকান</string>
<string name="revanced_hide_player_flyout_help_summary_on">সহায়তা ও প্রতিক্রিয়া মেনু লুকিয়ে রয়েছে</string>
@@ -492,6 +569,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_player_flyout_watch_in_vr_summary_on">ভিআর মেনুতে দেখুন লুকানো আছে</string>
<string name="revanced_hide_player_flyout_watch_in_vr_summary_off">ভিআর মেনুতে দেখুন দেখানো হয়েছে</string>
<string name="revanced_hide_player_flyout_video_quality_footer_title">ভিডিও গুণমান মেনুর ফুটার লুকান</string>
<string name="revanced_hide_player_flyout_video_quality_footer_summary_on">ভিডিও গুণমান মেনু ফুটার লুকানো আছে</string>
<string name="revanced_hide_player_flyout_video_quality_footer_summary_off">ভিডিও গুণমান মেনু ফুটার দেখানো হচ্ছে</string>
</patch>
<patch id="layout.buttons.overlay.hidePlayerOverlayButtonsPatch">
<string name="revanced_hide_player_previous_next_buttons_title">পূর্ববর্তী লুকান &amp; পরবর্তী ভিডিও বোতাম</string>
@@ -501,6 +580,12 @@ This is because Crowdin requires temporarily flattening this file and removing t
<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_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_summary_on">autoplay বোতাম লুকানো আছে</string>
<string name="revanced_hide_autoplay_button_summary_off">autoplay বোতাম দেখানো হচ্ছে</string>
</patch>
<patch id="layout.hide.endscreencards.hideEndscreenCardsResourcePatch">
<string name="revanced_hide_endscreen_cards_title">শেষ স্ক্রীন কার্ড লুকান</string>
@@ -531,6 +616,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_seekbar_thumbnail_summary_off">থাম্বনেইলে সিকবার প্রদর্শিত হয়েছে</string>
</patch>
<patch id="layout.hide.shorts.hideShortsComponentsResourcePatch">
<string name="revanced_shorts_player_screen_title">Shorts প্লেয়ার</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>
@@ -566,6 +653,20 @@ This is because Crowdin requires temporarily flattening this file and removing t
<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_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_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_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_summary_on">সবুজ পর্দা বোতাম লুকানো আছে</string>
<string name="revanced_hide_shorts_green_screen_button_summary_off">সবুজ পর্দা বোতাম দেখানো হচ্ছে</string>
<string name="revanced_hide_shorts_hashtag_button_title">হ্যাশট্যাগ বোতাম লুকান</string>
<string name="revanced_hide_shorts_hashtag_button_summary_on">হ্যাশট্যাগ বোতাম লুকানো আছে</string>
<string name="revanced_hide_shorts_hashtag_button_summary_off">হ্যাশট্যাগ বোতাম দেখানো হচ্ছে</string>
<string name="revanced_hide_shorts_search_suggestions_title">অনুসন্ধান পরামর্শগুলি লুকান</string>
<string name="revanced_hide_shorts_search_suggestions_summary_on">অনুসন্ধান পরামর্শগুলি লুকিয়ে রয়েছে</string>
<string name="revanced_hide_shorts_search_suggestions_summary_off">অনুসন্ধান পরামর্শগুলি প্রদর্শিত হয়েছে</string>
@@ -629,6 +730,11 @@ This is because Crowdin requires temporarily flattening this file and removing t
<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.openVideosFullscreen">
<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>
<patch id="layout.player.overlay.customPlayerOverlayOpacityResourcePatch">
<string name="revanced_player_overlay_opacity_title">প্লেয়ার ওভারলে অস্বচ্ছতা</string>
<string name="revanced_player_overlay_opacity_summary">অসচ্ছতা মান -১০০ এর মধ্যে, যেখানে হল সম্পূর্ণ স্বচ্ছ</string>
@@ -646,7 +752,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
<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_summary_on_disclaimer">Shorts অপছন্দ পদর্শিত হয়েছে\n\nসীমাবদ্ধতা: ছদ্মবেশী মোডে অপছন্দ নাও দেখাতে পারে</string>
<string name="revanced_ryd_shorts_summary_on_disclaimer">"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>
@@ -684,6 +792,16 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_wide_searchbar_summary_off">প্রশস্ত অনুসন্ধান বার নিষ্ক্রিয় হয়েছে</string>
</patch>
<patch id="layout.seekbar.seekbarThumbnailsPatch">
<string name="revanced_seekbar_thumbnails_high_quality_title">উচ্চমানের থাম্বনেইল সক্ষম করুন</string>
<string name="revanced_seekbar_thumbnails_high_quality_summary_on">সিকবার থাম্বনেইল উচ্চমানের</string>
<string name="revanced_seekbar_thumbnails_high_quality_summary_off">সিকবার থাম্বনেইল মাঝারিমানের</string>
<string name="revanced_seekbar_thumbnails_high_quality_legacy_summary_on">পূর্ণ পর্দায় সিকবার থাম্বনেইল উচ্চমানের</string>
<string name="revanced_seekbar_thumbnails_high_quality_legacy_summary_off">পূর্ণ পর্দায় সিকবার থাম্বনেইল মাঝারিমানের</string>
<string name="revanced_seekbar_thumbnails_high_quality_dialog_message">"এটি সেই লাইভস্ট্রিমগুলিতে থাম্বনেইল পুনরুদ্ধার করবে যেখানে সিকবার থাম্বনেইল নেই।
সিকবার থাম্বনেইল বর্তমান ভিডিওর একই মান ব্যবহার করবে।
এই বৈশিষ্ট্যটি 720p অথবা তার চেয়ে কম ভিডিও মান এবং খুব দ্রুত ইন্টারনেট সংযোগ ব্যবহার করার সময় সবচেয়ে ভালো কাজ করে।"</string>
<string name="revanced_restore_old_seekbar_thumbnails_title">পুরোনো সিকবার থাম্বনেইল পুনরুদ্ধার করুন</string>
<string name="revanced_restore_old_seekbar_thumbnails_summary_on">সিকবার এর উপরে সিকবার থাম্বনেইল দেখানো হবে</string>
<string name="revanced_restore_old_seekbar_thumbnails_summary_off">পূর্ণস্ক্রীণে সিকবার থাম্বনেইল দেখানো হবে</string>
@@ -730,6 +848,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_sb_general_skipcount_sum_off">স্কিপ কাউন্ট ট্র্যাকিং সক্রিয় হয়নি</string>
<string name="revanced_sb_general_min_duration">ন্যূনতম সেগমেন্ট সময়কাল</string>
<string name="revanced_sb_general_min_duration_sum">এই মান (সেকেন্ড) হতে কম দৈর্ঘ্যের সেগমেন্ট প্রদর্শিত বা স্কিপ করা হবে না</string>
<string name="revanced_sb_general_min_duration_invalid">অবৈধ সময়কাল</string>
<string name="revanced_sb_general_uuid">আপনার ব্যক্তিগত ব্যবহারকারী আইডি</string>
<string name="revanced_sb_general_uuid_sum">এটি গোপন রাখা উচিত। এটি একটি পাসওয়ার্ডের মতো এবং কারও সাথে শেয়ার করা উচিত নয়। যদি কারও কাছে এটি থাকে, তবে তারা আপনার ছদ্মবেশ ধারণ করতে পারে</string>
<string name="revanced_sb_general_uuid_invalid">ব্যক্তিগত ব্যবহাকারী আইডি অবশ্যই ৩০ অক্ষর লম্বা হতে হবে</string>
@@ -745,7 +864,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_sb_settings_import_successful">সেটিং সফলভাবে আমদানি করা হয়েছে</string>
<string name="revanced_sb_settings_import_failed">%s আমদানি করতে ব্যর্থ হয়েছে</string>
<string name="revanced_sb_settings_export_failed">%s রপ্তানি করতে ব্যর্থ হয়েছে</string>
<string name="revanced_sb_settings_revanced_export_user_id_warning">আপনার সেটিং একটি প্রাইভেট SponsorBlock ব্যবহারকারী আইডি রয়েছে।\n\nআপনার ব্যবহারকারী আইডি অনেকটা পাসওয়ার্ডের মতো তাই এটি কখনোই শেয়ার করা উচিত নয়।\n</string>
<string name="revanced_sb_settings_revanced_export_user_id_warning">"আপনার সেটিংসে একটি ব্যক্তিগত SponsorBlock ব্যবহারকারী ID রয়েছে।
আপনার ব্যবহারকারী ID একটি পাসওয়ার্ডের মতো এবং এটি কখনও ভাগ করা উচিত নয়।"</string>
<string name="revanced_sb_settings_revanced_export_user_id_warning_dismiss">আবার দেখাবেন না</string>
<string name="revanced_sb_diff_segments">সেগমেন্ট আচরণ পরিবর্তন করুন</string>
<string name="revanced_sb_segments_sponsor">স্পন্সর</string>
@@ -805,9 +926,10 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_sb_submit_failed_invalid">%s সেগমেন্ট জমা দিতে সক্ষম হয়নি</string>
<string name="revanced_sb_submit_failed_timeout">SponsorBlock সাময়িকভাবে বন্ধ আছে</string>
<string name="revanced_sb_submit_failed_unknown_error">সেগমেন্ট জমা দিতে সক্ষম হয়নি (অবস্থা: %1$d %2$s)</string>
<string name="revanced_sb_submit_failed_rate_limit">সেগমেন্ট জমা করা সম্ভব হয়নি।\nরেট লিমিট (একই ব্যবহারকারী বা IP থেকে অনেক বেশি)</string>
<string name="revanced_sb_submit_failed_rate_limit">সেগমেন্ট জমা দিতে পারছি না। হার সীমাবদ্ধ (একই ব্যবহারকারী বা IP থেকে খুব বেশি)</string>
<string name="revanced_sb_submit_failed_forbidden">সেগমেন্ট জমা করা যাবে না: %s</string>
<string name="revanced_sb_submit_failed_duplicate">সেগমেন্ট জমা করা সম্ভব নয়।\nইতোমধ্যে রয়েছে</string>
<string name="revanced_sb_submit_failed_duplicate">"সেগমেন্ট জমা দিতে পারছি না।
পূর্বেই বিদ্যমান"</string>
<string name="revanced_sb_submit_succeeded">সেগমেন্ট সফলভাবে জমা হয়েছে</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. -->
<string name="revanced_sb_sponsorblock_connection_failure_timeout">SponsorBlock সাময়িকভাবে উপলভ্য নয় (API সময় শেষ হয়েছে)</string>
@@ -823,13 +945,23 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_sb_new_segment_choose_category">সেগমেন্টের বিভাগ নির্বাচন করুন</string>
<string name="revanced_sb_new_segment_disabled_category">সেটিং থেকে বিভাগ নিস্ক্রিয় করা হয়েছে। জমা দিতে বিভাগ সক্রিয় করুন।</string>
<string name="revanced_sb_new_segment_title">নতুন স্পন্সরব্লক সেগমেন্ট</string>
<string name="revanced_sb_new_segment_mark_time_as_question">%s কে নতুন সেগমেন্টের শুরু অথবা শেষ হিসেবে সেট করুন?</string>
<string name="revanced_sb_new_segment_mark_start">শুরু</string>
<string name="revanced_sb_new_segment_mark_end">শেষ</string>
<string name="revanced_sb_new_segment_now">এখন</string>
<string name="revanced_sb_new_segment_time_start">সেগমেন্টটি শুরু হওয়ার সময়</string>
<string name="revanced_sb_new_segment_time_end">সেগমেন্টটি শেষ হওয়ার সময়</string>
<string name="revanced_sb_new_segment_confirm_title">সময়কাল কি সঠিক?</string>
<string name="revanced_sb_new_segment_confirm_content">সেগমেন্ট সময়কাল\n\n%1$s\nথেকে\n%2$s\n\n(%3$s)\n\nজমা করার জন্য প্রস্তুত?</string>
<string name="revanced_sb_new_segment_confirm_content">"সেগমেন্টটি
%1$s
থেকে
%2$s
এবং
(%3$s)
জমা দিতে প্রস্তুত।"</string>
<string name="revanced_sb_new_segment_start_is_before_end">শুরু অবশ্যই শেষের আগে হতে হবে</string>
<string name="revanced_sb_new_segment_mark_locations_first">আগে সময় বারে দুটি অবস্থান চিহ্নিত করুন</string>
<string name="revanced_sb_new_segment_preview_segment_first">সেগমেন্টটি পূর্বরূপ দেখুন এবং নিশ্চিত হোন যে এটি মসৃণভাবে এড়িয়ে যাচ্ছে</string>
@@ -847,6 +979,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_sb_stats_username_changed">ব্যবহারকারীর নাম সফলভাবে পরিবর্তন হয়েছে</string>
<string name="revanced_sb_stats_reputation">আপনার রিপুটেশন হল &lt;b&gt;%.2f&lt;/b&gt;</string>
<string name="revanced_sb_stats_submissions">আপনি &lt;b&gt;%s&lt;/b&gt; সেগমেন্ট তৈরি করেছেন</string>
<string name="revanced_sb_stats_submissions_sum">আপনার সেগমেন্ট দেখতে এখানে ট্যাপ করুন</string>
<string name="revanced_sb_stats_saved_zero">SponsorBlock লিডারবোর্ড</string>
<string name="revanced_sb_stats_saved">আপনি মানুষকে &lt;b&gt;%s&lt;/b&gt; সেগমেন্ট থেকে বাঁচিয়েছেন</string>
<string name="revanced_sb_stats_saved_sum_zero">বৈশ্বিক পরিসংখ্যান এবং শীর্ষ অবদানকারীদের দেখতে এখানে ট্যাপ করুন</string>
@@ -870,10 +1003,15 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_spoof_app_version_title">অ্যাপ সংস্করণ স্পুফ করুন</string>
<string name="revanced_spoof_app_version_summary_on">সংস্করণ স্পুফ করা হয়েছে</string>
<string name="revanced_spoof_app_version_summary_off">সংস্করণ স্পুফ করা হয়নি</string>
<string name="revanced_spoof_app_version_user_dialog_message">অ্যাপ সংস্করণ পুরোনো একটি সংস্করণে স্পুফ করা হবে।\n\nএটি অ্যাপের চেহারা এবং ফিচার পরিবর্তন করে, কিন্তু এতে অনাকাঙ্খিত পার্শ্বপ্রতিক্রিয়া দেখা দিতে পারে।\n\nপরবর্তীতে বন্ধ করা হলে, UI বাগ থেকে বাঁচতি অ্যাপের ডাটা ক্লিয়ার করার প্রস্তাবনা রইলো।</string>
<string name="revanced_spoof_app_version_user_dialog_message">"অ্যাপ্লিকেশন সংস্করণটি YouTube-এর পুরনো সংস্করণে ভুয়া হবে।
এটি অ্যাপ্লিকেশনটির চেহারা এবং বৈশিষ্ট্য পরিবর্তন করবে, তবে অজানা পার্শ্ব প্রতিক্রিয়া হতে পারে।
পরে যদি বন্ধ করা হয়, UI বাগ এড়াতে অ্যাপ্লিকেশন ডেটা পরিষ্কার করার পরামর্শ দেওয়া হয়।"</string>
<!-- 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 -->
<string name="revanced_spoof_app_version_target_title">স্পুফ অ্যাপ সংস্করণ লক্ষ্য</string>
<string name="revanced_spoof_app_version_target_entry_1">19.35.36 - পুরনো Shorts প্লেয়ার আইকন পুনরুদ্ধার করুন</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>
@@ -883,12 +1021,20 @@ This is because Crowdin requires temporarily flattening this file and removing t
<patch id="layout.startpage.changeStartPagePatch">
<string name="revanced_change_start_page_title">শুরুর পৃষ্ঠা সেট করুন</string>
<string name="revanced_change_start_page_entry_default">পূর্ব-নির্ধারিত</string>
<string name="revanced_change_start_page_entry_browse">চ্যানেল ব্রাউজ করুন</string>
<string name="revanced_change_start_page_entry_explore">ঘুরে দেখুন</string>
<string name="revanced_change_start_page_entry_gaming">গেমিং</string>
<string name="revanced_change_start_page_entry_history">ইতিহাস</string>
<string name="revanced_change_start_page_entry_library">লাইব্রেরি</string>
<string name="revanced_change_start_page_entry_liked_videos">পছন্দ করা ভিডিওগুলি</string>
<string name="revanced_change_start_page_entry_live">লাইভ</string>
<string name="revanced_change_start_page_entry_movies">মুভি</string>
<string name="revanced_change_start_page_entry_music">সঙ্গীত</string>
<string name="revanced_change_start_page_entry_search">অনুসন্ধান</string>
<string name="revanced_change_start_page_entry_sports">খেলাধুলা</string>
<string name="revanced_change_start_page_entry_subscriptions">সদস্যতা</string>
<string name="revanced_change_start_page_entry_trending">এখন জনপ্রিয়</string>
<string name="revanced_change_start_page_entry_watch_later">পরে দেখুন</string>
</patch>
<patch id="layout.startupshortsreset.disableResumingShortsOnStartupPatch">
<string name="revanced_disable_resuming_shorts_player_title">Shorts প্লেয়ার আবার চালানো নিষ্ক্রিয় করুন</string>
@@ -896,6 +1042,12 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_disable_resuming_shorts_player_summary_off">অ্যাপের শুরুতে Shorts প্লেয়ার আবার চলবে</string>
</patch>
<patch id="layout.shortsautoplay.shortsAutoplayPatch">
<string name="revanced_shorts_autoplay_title">অটোপ্লে Shorts</string>
<string name="revanced_shorts_autoplay_summary_on">Shorts অটোপ্লে হবে</string>
<string name="revanced_shorts_autoplay_summary_off">Shorts পুনরাবৃত্তি হবে</string>
<string name="revanced_shorts_autoplay_background_title">পটভূমিতে Shorts অটোপ্লে</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>
@@ -908,18 +1060,48 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_miniplayer_screen_summary">অ্যাপের মধ্যকার মিনিমাইজড প্লেয়ার এর ধরণ পরিবর্তন করুন</string>
<string name="revanced_miniplayer_type_title">মিনিপ্লেয়ার ধরণ</string>
<string name="revanced_miniplayer_type_entry_0">নিষ্ক্রিয় হয়েছে</string>
<string name="revanced_miniplayer_type_entry_1">আসল</string>
<string name="revanced_miniplayer_type_entry_1">পূর্ব-নির্ধারিত</string>
<string name="revanced_miniplayer_type_entry_2">ন্যূনতম</string>
<string name="revanced_miniplayer_type_entry_3">ট্যাবলেট</string>
<string name="revanced_miniplayer_type_entry_4">মর্ডান ১</string>
<string name="revanced_miniplayer_type_entry_5">মর্ডান ২</string>
<string name="revanced_miniplayer_type_entry_6">মর্ডান ৩</string>
<string name="revanced_miniplayer_rounded_corners_title">গোলাকার কোণ সক্ষম করুন</string>
<string name="revanced_miniplayer_rounded_corners_summary_on">কোণগুলি গোলাকার</string>
<string name="revanced_miniplayer_rounded_corners_summary_off">কোণগুলি বর্গাকার</string>
<string name="revanced_miniplayer_double_tap_action_title">ডাবল-ট্যাপ এবং পিঞ্চ টু রিসাইজ সক্ষম করুন</string>
<string name="revanced_miniplayer_double_tap_action_summary_on">"ডাবল-ট্যাপ করার ক্রিয়া এবং আকার পরিবর্তন করার জন্য চিমটি দেওয়া সক্রিয়
• miniplayer আকার বৃদ্ধি করতে ডাবল ট্যাপ করুন
• মূল আকার পুনরুদ্ধার করতে আবার ডাবল ট্যাপ করুন"</string>
<string name="revanced_miniplayer_double_tap_action_summary_off">ডাবল-ট্যাপ অ্যাকশন এবং পিঞ্চ টু রিসাইজ অক্ষম</string>
<string name="revanced_miniplayer_drag_and_drop_title">ড্র্যাগ এবং ড্রপ সক্ষম করুন</string>
<string name="revanced_miniplayer_drag_and_drop_summary_on">"ড্র্যাগ এবং ড্রপ সক্রিয়
Miniplayer স্ক্রিনের যেকোনো কোণে টানা যাবে"</string>
<string name="revanced_miniplayer_drag_and_drop_summary_off">ড্র্যাগ এবং ড্রপ অক্ষম</string>
<string name="revanced_miniplayer_horizontal_drag_title">অনুভূমিক ড্র্যাগ অঙ্গভঙ্গি সক্ষম করুন</string>
<string name="revanced_miniplayer_horizontal_drag_summary_on">"ক্ষैতিকভাবে টানার ভঙ্গি সক্রিয়
Miniplayer স্ক্রিন থেকে বামে বা ডানে টানা যাবে"</string>
<string name="revanced_miniplayer_horizontal_drag_summary_off">অনুভূমিক ড্র্যাগ অঙ্গভঙ্গি অক্ষম</string>
<string name="revanced_miniplayer_hide_expand_close_title">বন্ধ বোতাম লুকান</string>
<string name="revanced_miniplayer_hide_expand_close_summary_on">বন্ধ বোতাম লুকানো আছে</string>
<string name="revanced_miniplayer_hide_expand_close_summary_off">বন্ধ বোতাম দেখানো হচ্ছে</string>
<string name="revanced_miniplayer_hide_expand_close_legacy_title">বিস্তৃত ও বন্ধ করার বোতাম লুকান</string>
<string name="revanced_miniplayer_hide_expand_close_legacy_summary_on">"বোতামগুলি লুকানো হয়
বিস্তৃত করতে বা বন্ধ করতে সোয়াইপ করুন"</string>
<string name="revanced_miniplayer_hide_expand_close_legacy_summary_off">বিস্তৃত এবং বন্ধ বোতাম দেখানো হচ্ছে</string>
<string name="revanced_miniplayer_hide_subtext_title">উপপাঠ লুকান</string>
<string name="revanced_miniplayer_hide_subtext_summary_on">উপপাঠ লুকিয়ে রয়েছে</string>
<string name="revanced_miniplayer_hide_subtext_summary_off">উপপাঠ প্রদর্শিত হয়েছে</string>
<string name="revanced_miniplayer_hide_rewind_forward_title">সামনে বা পেছনে এড়িয়ে যাওয়ার বোতাম লুকান</string>
<string name="revanced_miniplayer_hide_rewind_forward_summary_on">সামনে বা পেছনে এড়িয়ে যাওয়ার বোতাম লুকিয়ে রয়েছে</string>
<string name="revanced_miniplayer_hide_rewind_forward_summary_off">সামনে বা পেছনে এড়িয়ে যাওয়ার বোতাম প্রদর্শিত হয়েছে</string>
<string name="revanced_miniplayer_width_dip_title">প্রাথমিক আকার</string>
<string name="revanced_miniplayer_width_dip_summary">প্রাথমিক পর্দার আকার, পিক্সেলে</string>
<string name="revanced_miniplayer_width_dip_invalid_toast">পিক্সেল আকার %1$s এবং %2$s এর মধ্যে হতে হবে</string>
<string name="revanced_miniplayer_opacity_title">ওভারলে অস্বচ্ছতা</string>
<string name="revanced_miniplayer_opacity_summary">অসচ্ছতা মান -১০০ এর মধ্যে, যেখানে হল সম্পূর্ণ স্বচ্ছ</string>
<string name="revanced_miniplayer_opacity_invalid_toast">মিনিপ্লেয়ার ওভারলে অস্বচ্ছতা অবশ্যই -১০০ এর মধ্যে হতে হবে</string>
@@ -935,8 +1117,14 @@ This is because Crowdin requires temporarily flattening this file and removing t
<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_invalid">অবৈধ সিকবার রঙ মান</string>
</patch>
<patch id="layout.thumbnails.bypassImageRegionRestrictionsPatch">
<string name="revanced_bypass_image_region_restrictions_title">ছবি অঞ্চল সীমাবদ্ধতা বাইপাস করুন</string>
<string name="revanced_bypass_image_region_restrictions_summary_on">yt4.ggpht.com ছবি হোস্ট ব্যবহার করে</string>
<string name="revanced_bypass_image_region_restrictions_summary_off">"মূল ছবি হোস্ট ব্যবহার করে
এটি সক্ষম করলে কিছু অঞ্চলে ব্লক করা থাকা অনুপস্থিত ছবিগুলি সংশোধন করতে পারে"</string>
</patch>
<patch id="layout.thumbnails.alternativeThumbnailsPatch">
<!-- 'Home' should be translated using the same localized wording YouTube displays for the home tab. -->
@@ -951,7 +1139,11 @@ This is because Crowdin requires temporarily flattening this file and removing t
<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_summary">DeArrow YouTube ভিডিওগুলির জন্য ক্রাউড-সোর্সড থাম্বনেল সরবরাহ করে। এই থাম্বনেলগুলি প্রায়ই YouTube দ্বারা প্রদত্ত থাম্বনেলগুলির চেয়ে বেশি প্রাসঙ্গিক\n\nঅন করলে, ভিডিও URLগুলি API সার্ভারে পাঠানো হবে এবং অন্য কোনও ডেটা পাঠানো হবে না৷ যদি একটি ভিডিওতে DeArrow থাম্বনেইল না থাকে, তাহলে আসল বা স্থির চিত্র দেখানো হয়\n\nDeArrow সম্পর্কে আরও জানতে এখানে চাপুন</string>
<string name="revanced_alt_thumbnail_dearrow_about_summary">"DeArrow YouTube ভিডিওগুলির জন্য জনগণের উৎস থেকে তৈরি থাম্বনেল সরবরাহ করে। এই থাম্বনেলগুলি প্রায়ই YouTube দ্বারা সরবরাহ করা থাম্বনেইলগুলির চেয়ে আরও প্রাসঙ্গিক।
যদি সক্রিয় করা হয়, তাহলে ভিডিও URLগুলি API সার্ভারে পাঠানো হবে এবং অন্য কোনও ডেটা পাঠানো হবে না। যদি কোনও ভিডিওতে DeArrow থাম্বনেইল না থাকে, তাহলে মূল বা স্থির ক্যাপচার দেখানো হবে
DeArrow সম্পর্কে আরও জানতে এখানে ট্যাপ করুন"</string>
<string name="revanced_alt_thumbnail_dearrow_connection_toast_title">API উপলভ্য না থাকলে একটি টোস্ট দেখান</string>
<string name="revanced_alt_thumbnail_dearrow_connection_toast_summary_on">যদি DeArrow অনুপস্থিত থাকে তবে টোস্ট বার্তা প্রদর্শিত হয়</string>
<string name="revanced_alt_thumbnail_dearrow_connection_toast_summary_off">যদি DeArrow অনুপস্থিত থাকে তবে টোস্ট বার্তা প্রদর্শিত হয় না</string>
@@ -980,6 +1172,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
</patch>
<patch id="misc.dns.checkWatchHistoryDomainNameResolutionPatch">
<string name="revanced_check_watch_history_domain_name_dialog_title">সতর্কীকরণ</string>
<string name="revanced_check_watch_history_domain_name_dialog_message">আপনার দেখার ইতিহাস সংরক্ষিত হচ্ছে না।&lt;br&gt;&lt;br&gt;এটি সম্ভবত DNS অ্যাড ব্লকার অথবা নেটওয়ার্ক প্রক্সির কারণে।&lt;br&gt;&lt;br&gt;এটি ঠিক করার জন্য, &lt;b&gt;s.youtube.com&lt;/b&gt; সাদা তালিকাভুক্ত করুন অথবা সকল DNS ব্লকার এবং প্রক্সি বন্ধ করুন।</string>
<string name="revanced_check_watch_history_domain_name_dialog_ignore">আবার দেখাবেন না</string>
</patch>
<patch id="misc.autorepeat.autoRepeatPatch">
@@ -989,8 +1182,12 @@ This is because Crowdin requires temporarily flattening this file and removing t
</patch>
<patch id="misc.dimensions.spoof.spoofDeviceDimensionsPatch">
<string name="revanced_spoof_device_dimensions_title">ডিভাইস ডাইমেনশন স্পুফ করুন</string>
<string name="revanced_spoof_device_dimensions_summary_on">ডিভাইস ডাইমেনশন স্পুফ হয়েছে\n\nভিডিওর উন্নত গুণমান আনলক হয়েছে কিন্তু আপনি ভিডিও চলার ক্ষেত্রে আটকে চলা, খারাপ ব্যাটারি লাইফ এবং অজানা পার্শ্ব-প্রতিক্রিয়ার সম্মুখিন হতে পারেন</string>
<string name="revanced_spoof_device_dimensions_summary_off">ডিভাইস ডাইমেনশন স্পুফ হয়নি\n\nএটি সক্রিয় করার ফলে উন্নত ভিডিও গুণমান আনলক হবে</string>
<string name="revanced_spoof_device_dimensions_summary_on">"ডিভাইসের মাত্রা ভুয়া
উচ্চ ভিডিও গুণমানগুলি আনলক করা যেতে পারে তবে আপনি ভিডিও প্লেব্যাক হোঁচট খাওয়া, খারাপ ব্যাটারি লাইফ এবং অজানা পার্শ্ব প্রতিক্রিয়া অনুভব করতে পারেন"</string>
<string name="revanced_spoof_device_dimensions_summary_off">"ডিভাইসের মাত্রা ভুয়া নয়
এটি সক্রিয় করা উচ্চ ভিডিও গুণমানগুলি আনলক করতে পারে"</string>
<string name="revanced_spoof_device_dimensions_user_dialog_message">এটি সক্রিয় করার ফলে আপনি ভিডিও চলার ক্ষেত্রে আটকে চলা, খারাপ ব্যাটারি লাইফ এবং অজানা পার্শ্ব-প্রতিক্রিয়ার সম্মুখিন হতে পারেন।</string>
</patch>
<patch id="misc.gms.gmsCoreSupportResourcePatch">
@@ -1035,9 +1232,13 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_playback_speed_dialog_button_summary_off">বোতাম প্রদর্শিত হয়নি</string>
</patch>
<patch id="video.speed.custom.customPlaybackSpeedPatch">
<string name="revanced_custom_speed_menu_title">কাস্টম প্লেব্যাক গতি মেনু</string>
<string name="revanced_custom_speed_menu_summary_on">কাস্টম স্পিড মেনু দেখানো হচ্ছে</string>
<string name="revanced_custom_speed_menu_summary_off">কাস্টম স্পিড মেনু দেখানো হচ্ছে না</string>
<string name="revanced_custom_playback_speeds_title">নিজস্ব প্লেব্যাক স্পিড</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_summary">কাস্টম প্লেব্যাক গতি যোগ করুন অথবা পরিবর্তন করুন</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>
</patch>
<patch id="video.speed.remember.rememberPlaybackSpeedPatch">
@@ -1062,12 +1263,79 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_spoof_video_streams_screen_summary">প্লেব্যাক সমস্যা প্রতিরোধ করতে ক্লায়েন্ট ভিডিও স্ট্রিম স্পুফ করুন</string>
<string name="revanced_spoof_video_streams_title">ভিডিও স্ট্রিমিং স্পুফ করুন</string>
<string name="revanced_spoof_video_streams_summary_on">ভিডিও স্ট্রিম স্পুফ করা হয়েছে</string>
<string name="revanced_spoof_video_streams_summary_off">ভিডিও স্ট্রিম স্পুফ করা হয়নি\n\nভিডিও প্লেব্যাক ঠিকমতো কাজ নাও করতে পারে</string>
<string name="revanced_spoof_video_streams_summary_off">"ভিডিও স্ট্রিম ভুয়া নয়
ভিডিও প্লেব্যাক কাজ নাও করতে পারে"</string>
<string name="revanced_spoof_video_streams_user_dialog_message">এই সেটিংটি বন্ধ করার ফলে ভিডিও প্লেব্যাক ত্রুটি হতে পারে।</string>
<string name="revanced_spoof_video_streams_client_title">ডিফল্ট ক্লায়েন্ট</string>
<string name="revanced_spoof_video_streams_ios_force_avc_title">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">ভিডিও কোডেক VP9 বা AV1 ব্যবহৃত হচ্ছে</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_title">iOS স্পুফিং এর পার্শ্ব প্রতিক্রিয়া</string>
<string name="revanced_spoof_video_streams_about_ios_summary">"• ব্যক্তিগত শিশু ভিডিওগুলি প্লে নাও হতে পারে
• লাইভস্ট্রিম শুরু থেকে শুরু হয়
• ভিডিও 1 সেকেন্ড আগে শেষ হয়"</string>
<string name="revanced_spoof_video_streams_about_android_vr_title">Android VR স্পুফিং এর পার্শ্ব প্রতিক্রিয়া</string>
<string name="revanced_spoof_video_streams_about_android_vr_summary">"• শিশু ভিডিওগুলি প্লে নাও হতে পারে
• লাইভস্ট্রিম শুরু থেকে শুরু হয়
• ভিডিও 1 সেকেন্ড আগে শেষ হয়"</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_PT_BR">পর্তুগিজ (ব্রাজিল)</string>
<string name="revanced_spoof_video_streams_language_PT_PT">পর্তুগিজ (পর্তুগাল)</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>
</patch>
</app>
<app id="twitch">
@@ -1077,8 +1345,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_block_audio_ads_summary_off">অডিও বিজ্ঞাপন আনবব্লক করা হয়েছে</string>
</patch>
<patch id="ad.embedded.embeddedAdsPatch">
<string name="revanced_embedded_ads_service_unavailable">%s উপলভ্য নয়। বিজ্ঞাপন দেখাতে পারে। সেটিং থেকে অন্য কোন বিজ্ঞাপন আটকানো সেবায় সুইচ করুন।</string>
<string name="revanced_embedded_ads_service_failed">%s সার্ভার একটি ত্রুটি দেখাচ্ছে বিজ্ঞাপন দেখাতে পারে। সেটিং থেকে অন্য কোন বিজ্ঞাপন আটকানো সেবায় সুইচ করুন।</string>
<string name="revanced_embedded_ads_service_unavailable">%s উপলব্ধ নয়, বিজ্ঞাপন দেখানো হতে পারে। সেটিংসে বিজ্ঞাপন ব্লক পরিষেবা পরিবর্তন করার চেষ্টা করুন।</string>
<string name="revanced_embedded_ads_service_failed">%s একটি ত্রুটি ফিরিয়েছে, বিজ্ঞাপন দেখানো হতে পারে। সেটিংসে বিজ্ঞাপন ব্লক পরিষেবা পরিবর্তন করার চেষ্টা করুন।</string>
<string name="revanced_block_embedded_ads_title">এমবেড করা ভিডিও বিজ্ঞাপন আটকান</string>
<string name="revanced_block_embedded_ads_entry_1">নিষ্ক্রিয় হয়েছে</string>
<string name="revanced_block_embedded_ads_entry_2">Luminous প্রক্সি</string>
@@ -1110,6 +1378,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
<patch id="misc.settings.settingsPatch">
<string name="revanced_settings">ReVanced সেটিং</string>
<string name="revanced_about_title">সম্পর্কিত</string>
<string name="revanced_about_summary">ReVanced সম্পর্কে</string>
<string name="revanced_ads_screen_title">বিজ্ঞাপন</string>
<string name="revanced_ads_screen_summary">বিজ্ঞাপন বন্ধ করার সেটিং</string>
<string name="revanced_chat_screen_title">আলাপচারি</string>

View File

@@ -1,34 +1,23 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Note: All strings must have a unique path, even if the same string is declared in two different apps.
This is because Crowdin requires temporarily flattening this file and removing the <app> and <patch> elements.
All strings must have a unique path, even if the same string is declared in two different apps.
This is because Crowdin requires temporarily flattening this file and removing the <app> and <patch> elements.
# General guidelines and information for translating
## Strings parameters can be reordered to allow more flexible translations if the grammar should be changed.
Strings with new lines must be raw strings where they're wrapped in quotes and new lines are not encoded.
Raw strings still requires escaping embedded double quotes but escaping embedded single quotes is optional.
For example, the patches string:
<string name="revanced_patches_string">You will arrive at %1$s in %2$s hours from now</string>
Could be translated to another language using a rearranged grammar:
<string name="revanced_patches_string">You will arrive %2$s hours from now at %1$s</string>
Raw strings are required because Crowdin AI translations regularly gets confused and
replace \n with an encoded new line character.
For Manager strings:
You will arrive at ${destination} in ${count} hours from now
Could be rearranged by changing the order of the ${} parameters:
You will arrive ${count} hours from now at ${destination}
Bad:
<string name="summary_key">First \'item\' text\nSecond \"item\" text</string>
Reordering is particularly relevant when translating into right to left languages, or for any language with grammar that is noticeably different from English.
Good:
<string name="summary_key">"First 'item' text
Second \"item\" text"</string>
## Single and double quotation marks must be escaped for patch strings (Manager does not require escaping any quotes).
All _patches_ single and double quotation marks must be escaped as \" or \'
Forgetting to do this will cause that string to appear in app with no quotation characters.
Correct:
<string name="revanced_string">You\'re correct. This is the \"correct\" way and this text will appear as expected in the app</string>
Not correct:
<string name="revanced_string">You're not correct. This is not the "correct" way and this text will not appear as expected the in app</string>
-->
<resources>
<app id="shared">
@@ -147,6 +136,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
</patch>
<patch id="layout.panels.popup.playerPopupPanelsPatch">
</patch>
<patch id="layout.player.fullscreen.openVideosFullscreen">
</patch>
<patch id="layout.player.overlay.customPlayerOverlayOpacityResourcePatch">
</patch>
<patch id="layout.returnyoutubedislike.returnYouTubeDislikePatch">

View File

@@ -1,34 +1,23 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Note: All strings must have a unique path, even if the same string is declared in two different apps.
This is because Crowdin requires temporarily flattening this file and removing the <app> and <patch> elements.
All strings must have a unique path, even if the same string is declared in two different apps.
This is because Crowdin requires temporarily flattening this file and removing the <app> and <patch> elements.
# General guidelines and information for translating
## Strings parameters can be reordered to allow more flexible translations if the grammar should be changed.
Strings with new lines must be raw strings where they're wrapped in quotes and new lines are not encoded.
Raw strings still requires escaping embedded double quotes but escaping embedded single quotes is optional.
For example, the patches string:
<string name="revanced_patches_string">You will arrive at %1$s in %2$s hours from now</string>
Could be translated to another language using a rearranged grammar:
<string name="revanced_patches_string">You will arrive %2$s hours from now at %1$s</string>
Raw strings are required because Crowdin AI translations regularly gets confused and
replace \n with an encoded new line character.
For Manager strings:
You will arrive at ${destination} in ${count} hours from now
Could be rearranged by changing the order of the ${} parameters:
You will arrive ${count} hours from now at ${destination}
Bad:
<string name="summary_key">First \'item\' text\nSecond \"item\" text</string>
Reordering is particularly relevant when translating into right to left languages, or for any language with grammar that is noticeably different from English.
Good:
<string name="summary_key">"First 'item' text
Second \"item\" text"</string>
## Single and double quotation marks must be escaped for patch strings (Manager does not require escaping any quotes).
All _patches_ single and double quotation marks must be escaped as \" or \'
Forgetting to do this will cause that string to appear in app with no quotation characters.
Correct:
<string name="revanced_string">You\'re correct. This is the \"correct\" way and this text will appear as expected in the app</string>
Not correct:
<string name="revanced_string">You're not correct. This is not the "correct" way and this text will not appear as expected the in app</string>
-->
<resources>
<app id="shared">
@@ -44,7 +33,6 @@ This is because Crowdin requires temporarily flattening this file and removing t
<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_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>
@@ -68,9 +56,17 @@ This is because Crowdin requires temporarily flattening this file and removing t
<!-- 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_dialog_not_whitelisted_not_allowed_in_background_message">MicroG GmsCore har ikke tilladelse til at køre i baggrunden.\n\nFølg vejledningen \"Må ikke dræbe min app\" til din telefon, og anvend vejledningen til din MicroG-installation.\n\nDette er nødvendigt for at appen kan fungere.</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.
Dette er påkrævet, for at appen kan fungere."</string>
<string name="gms_core_dialog_open_website_text">Åbn hjemmeside</string>
<string name="gms_core_dialog_not_whitelisted_using_battery_optimizations_message">MicroG GmsCore batterioptimeringer skal være deaktiveret for at forhindre problemer.\n\nTryk på knappen fortsæt og deaktiver batterioptimeringer.</string>
<string name="gms_core_dialog_not_whitelisted_using_battery_optimizations_message">"MicroG GmsCores batterioptimering skal deaktiveres for at forhindre problemer.
Deaktivering af batterioptimering for MicroG vil ikke påvirke batteriforbruget negativt.
Tryk på fortsætknappen, og tillad ændringer af optimering."</string>
<string name="gms_core_dialog_continue_text">Fortsæt</string>
</patch>
</app>
@@ -79,7 +75,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
<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">Feed</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_07_seekbar_title">Søgebjælke</string>
@@ -88,6 +84,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_settings_screen_12_video_title">Video</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>
</patch>
<patch id="misc.debugging.enableDebuggingPatch">
<string name="revanced_debug_screen_title">Fejlfinding</string>
@@ -104,7 +103,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
<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">Slår fejl-toasts fra skjuler alle ReVanced fejlmeddelelser.\n\nDu vil ikke blive underrettet om nogen uventede begivenheder.</string>
<string name="revanced_debug_toast_on_error_user_dialog_message">"Deaktivering af fejl-toasts skjuler alle ReVanced-fejlmeddelelser.
Du vil ikke blive underrettet 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>
@@ -123,7 +124,12 @@ This is because Crowdin requires temporarily flattening this file and removing t
<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 såsom:\n• Breaking news\n• Fortsæt med at se\n• Udforsk flere kanaler\n• Shopping\n• Se det igen</string>
<string name="revanced_hide_horizontal_shelves_summary_on">"Hylder er skjult, f.eks.:
• Nye nyheder
• Se videre
• Udforsk flere kanaler
• Indkøb
• Se det 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. -->
@@ -250,12 +256,18 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_filter_bar_feed_in_related_videos_summary_off">Vist i relaterede videoer</string>
<string name="revanced_comments_screen_title">Kommentarer</string>
<string name="revanced_comments_screen_summary">Skjul eller vis kommentarer sektion komponenter</string>
<string name="revanced_hide_comments_chat_summary_title">Skjul \'Chat-oversigt\' </string>
<string name="revanced_hide_comments_chat_summary_summary_on">\'Chatsammenfatning\' er skjult</string>
<string name="revanced_hide_comments_chat_summary_summary_off">\'Chatsammenfatning\' er vist</string>
<string name="revanced_hide_comments_by_members_header_title">Skjul \'Kommentarer fra medlemmer\' header</string>
<string name="revanced_hide_comments_by_members_header_summary_on">\'Kommentarer fra medlemmer\' overskrift er skjult</string>
<string name="revanced_hide_comments_by_members_header_summary_off">\'Kommentarer fra medlemmer\' overskrift vises</string>
<string name="revanced_hide_comments_section_title">Skjul kommentarsektion</string>
<string name="revanced_hide_comments_section_summary_on">Kommentarer sektion er skjult</string>
<string name="revanced_hide_comments_section_summary_off">Kommentarer sektion er vist</string>
<string name="revanced_hide_comments_create_a_short_button_title">Skjul knappen \"Opret en Short\"</string>
<string name="revanced_hide_comments_create_a_short_button_summary_on">Knappen \"Opret en Short\" er skjult</string>
<string name="revanced_hide_comments_create_a_short_button_summary_off">Knappen \"Opret en Short\" vises</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>
@@ -269,7 +281,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_doodles_title">Skjul YouTube-Doudler</string>
<string name="revanced_hide_doodles_summary_on">Søgebjælke Doudler er skjult</string>
<string name="revanced_hide_doodles_summary_off">Søgebjælke Doudler vises</string>
<string name="revanced_hide_doodles_user_dialog_message">YouTube Doodles dukker op et par dage hvert år.\n\nHvis en Doodle i øjeblikket vises i din region og denne skjul-indstilling er slået til, så vil filterbjælken under søgelinjen også være skjult.</string>
<string name="revanced_hide_doodles_user_dialog_message">"YouTube-doodles vises et par dage om året.
Hvis et Doodle vises i øjeblikket i din region, og denne skjuleindstilling er aktiveret, skjules filterfeltet under søgefeltet også."</string>
<string name="revanced_custom_filter_screen_title">Tilpasset filter</string>
<string name="revanced_custom_filter_screen_summary">Skjul komponenter ved hjælp af brugerdefinerede filtre</string>
<string name="revanced_custom_filter_title">Aktiver brugerdefineret filter</string>
@@ -293,8 +307,18 @@ This is because Crowdin requires temporarily flattening this file and removing t
<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. -->
<string name="revanced_hide_keyword_content_phrases_summary">Nøgleord og sætninger at skjule, adskilt af nye linjer\n\nSøgeord kan være kanalnavne eller enhver tekst vist i video titler\n\nOrd med store bogstaver i midten skal indtastes med casing (dvs. iPhone, TikTok, LeBlanc)</string>
<string name="revanced_hide_keyword_content_phrases_summary">"Søgeord og sætninger, der skal skjules, adskilt af nye linjer
Søgeord kan være kanalnavne eller tekst, der vises i videotitler
Ord med store bogstaver i midten skal indtastes med store og små bogstaver (f.eks.: iPhone, TikTok, LeBlanc)"</string>
<string name="revanced_hide_keyword_content_about_title">Om søgeord filtrering</string>
<string name="revanced_hide_keyword_content_about_summary">"Hjem-/abonnement-/søgeresultater filtreres for at skjule indhold, der svarer til søgeordssætninger
Begrænsninger
● Shorts kan ikke skjules efter kanalnavn
● Nogle UI-komponenter skjules muligvis ikke
● Søgning efter et søgeord viser muligvis ingen resultater"</string>
<string name="revanced_hide_keyword_content_about_whole_words_title">Match hele ord</string>
<!-- Translations _must_ use a localized example. For languages that do not use spaces between words (Chinese, Japanese, etc) the English AI example should be used since no localized examples exist. Or if using machine translations, or if nobody wants to think of a localized example, then the English 'ai' example should be left as-is. -->
<string name="revanced_hide_keyword_content_about_whole_words_summary">Omkring et nøgleord/sætning med dobbelt-citater vil forhindre partielle kampe af videotitler og kanalnavne&lt;br&gt;&lt;br&gt;For eksempel&lt;br&gt;&lt;b&gt;\"ai\"&lt;/b&gt; vil skjule videoen: &lt;b&gt;How does AI work?&lt;/b&gt;&lt;br&gt;, men skjuler ikke: &lt;b&gt;What does fair use mean?&lt;/b&gt;</string>
@@ -302,6 +326,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_keyword_toast_invalid_common">Kan ikke bruge søgeord: %s</string>
<string name="revanced_hide_keyword_toast_invalid_common_whole_word_required">Tilføj tilbud for at bruge søgeord: %s</string>
<string name="revanced_hide_keyword_toast_invalid_conflicting">Nøgleord har modstridende erklæringer: %s</string>
<string name="revanced_hide_keyword_toast_invalid_length">Søgeordet er for kort og kræver anførselstegn: %s</string>
<string name="revanced_hide_keyword_toast_invalid_broad">Nøgleord vil skjule alle videoer: %s</string>
</patch>
<patch id="ad.general.hideAdsResourcePatch">
@@ -309,7 +334,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_general_ads_summary_on">Generelle annoncer er skjult</string>
<string name="revanced_hide_general_ads_summary_off">Generelle annoncer vises</string>
<string name="revanced_hide_fullscreen_ads_title">Skjul fuldskærmsannoncer</string>
<string name="revanced_hide_fullscreen_ads_summary_on">Fuldskærmsannoncer er skjult\n\nDenne funktion er kun tilgængelig for ældre enheder</string>
<string name="revanced_hide_fullscreen_ads_summary_on">"Fuldsskærmsannoncer er skjult
Denne funktion er kun tilgængelig for ældre enheder"</string>
<string name="revanced_hide_fullscreen_ads_summary_off">Fuldskærms annoncer vises</string>
<string name="revanced_hide_buttoned_ads_title">Skjul knapfyldte annoncer</string>
<string name="revanced_hide_buttoned_ads_summary_on">Knappede annoncer er skjult</string>
@@ -454,6 +481,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_thanks_button_summary_on">Tak knappen er skjult</string>
<string name="revanced_hide_thanks_button_summary_off">Tak knappen er vist</string>
<!-- 'Clip' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_clip_button_title">Skjul klip</string>
<string name="revanced_hide_clip_button_summary_on">Klip knappen er skjult</string>
<string name="revanced_hide_clip_button_summary_off">Klip knappen er vist</string>
<!-- 'Save' should be translated with the same localized wording that YouTube displays. -->
@@ -462,7 +490,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_playlist_button_summary_off">Gem i afspilningslisteknappen vises</string>
</patch>
<patch id="layout.buttons.navigation.navigationButtonsPatch">
<string name="revanced_navigation_buttons_screen_title">Navigation buttons</string>
<string name="revanced_navigation_buttons_screen_title">Navigationsknapper</string>
<string name="revanced_navigation_buttons_screen_summary">Skjul eller skift knapper i navigationsbjælken</string>
<!-- 'Home' should be translated using the same localized wording YouTube displays for the tab. -->
<string name="revanced_hide_home_button_title">Skjul Hjem</string>
@@ -482,14 +510,16 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_subscriptions_button_summary_off">Abonnementer knappen vises</string>
<!-- 'Notifications' should be translated using the same localized wording YouTube displays the tab. -->
<string name="revanced_switch_create_with_notifications_button_title">Skift Opret med notifikationer</string>
<string name="revanced_switch_create_with_notifications_button_summary_on">Opret knap er skiftet med Notifikationsknappen\n\nBemærk: Aktivering af dette skjuler også med magt videoannoncer</string>
<string name="revanced_switch_create_with_notifications_button_summary_on">"Opret-knappen er skiftet med knappen Meddelelser
Bemærk: Aktivering af dette skjuler også videoannoncer"</string>
<string name="revanced_switch_create_with_notifications_button_summary_off">Opret knappen er ikke skiftet med Notifikationer knappen</string>
<string name="revanced_hide_navigation_button_labels_title">Skjul navigationsknappens etiketter</string>
<string name="revanced_hide_navigation_button_labels_summary_on">Etiketter er skjult</string>
<string name="revanced_hide_navigation_button_labels_summary_off">Etiketter er vist</string>
</patch>
<patch id="layout.hide.player.flyoutmenupanel.hidePlayerFlyoutMenuPatch">
<string name="revanced_hide_player_flyout_title">Flyout menu</string>
<string name="revanced_hide_player_flyout_title">Udfyldningsmenu</string>
<string name="revanced_hide_player_flyout_summary">Skjul eller vis spiller flyout menupunkter</string>
<!-- 'Captions' should be translated using the same localized wording YouTube displays for the menu item. -->
<string name="revanced_hide_player_flyout_captions_title">Skjul Billedtekster</string>
@@ -560,7 +590,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
</patch>
<patch id="layout.hide.endscreencards.hideEndscreenCardsResourcePatch">
<string name="revanced_hide_endscreen_cards_title">Skjul slutskærmkort</string>
<string name="revanced_hide_endscreen_cards_summary_on">End screen cards are hidden</string>
<string name="revanced_hide_endscreen_cards_summary_on">Slutskærmskortene er skjult</string>
<string name="revanced_hide_endscreen_cards_summary_off">Kort til slutskærm vises</string>
</patch>
<patch id="layout.hide.fullscreenambientmode.disableFullscreenAmbientModePatch">
@@ -587,6 +617,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_seekbar_thumbnail_summary_off">Miniaturesøgelinjen vises</string>
</patch>
<patch id="layout.hide.shorts.hideShortsComponentsResourcePatch">
<string name="revanced_shorts_player_screen_title">Shorts-afspiller</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>
@@ -699,6 +731,11 @@ This is because Crowdin requires temporarily flattening this file and removing t
<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.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>
<string name="revanced_open_videos_fullscreen_portrait_summary_off">Videoer åbner ikke fuld skærm</string>
</patch>
<patch id="layout.player.overlay.customPlayerOverlayOpacityResourcePatch">
<string name="revanced_player_overlay_opacity_title">Spiller overlay gennemsigtighed</string>
<string name="revanced_player_overlay_opacity_summary">Gennemsigtighedsværdi mellem 0-100, hvor 0 er gennemsigtig</string>
@@ -716,7 +753,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_ryd_enable_summary_off">Dislikationer vises ikke</string>
<string name="revanced_ryd_shorts_title">Vis ikke på Shorts</string>
<string name="revanced_ryd_shorts_summary_on">Dislikationer vist på Shorts</string>
<string name="revanced_ryd_shorts_summary_on_disclaimer">Dislikationer vist på Shorts\n\nBegrænsning: Dislikes vises muligvis ikke i inkognito-tilstand</string>
<string name="revanced_ryd_shorts_summary_on_disclaimer">"Dislikes vises på Shorts
Begrænsning: Dislikes vises muligvis ikke i inkognitotilstand"</string>
<string name="revanced_ryd_shorts_summary_off">Synes ikke skjult på Shorts</string>
<string name="revanced_ryd_dislike_percentage_title">Synes ikke som procent</string>
<string name="revanced_ryd_dislike_percentage_summary_on">Dislikationer vist som procent</string>
@@ -759,7 +798,11 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_seekbar_thumbnails_high_quality_summary_off">Seekbar miniaturer er af middel kvalitet</string>
<string name="revanced_seekbar_thumbnails_high_quality_legacy_summary_on">Fuldskærmssøgerbar miniaturer er af høj kvalitet</string>
<string name="revanced_seekbar_thumbnails_high_quality_legacy_summary_off">Fuldskærmssøgerbar miniaturer er af middel kvalitet</string>
<string name="revanced_seekbar_thumbnails_high_quality_dialog_message">Dette vil også gendanne miniaturer på livestreams, der ikke har søgbar miniaturebilleder.\n\nSeekbar miniaturer vil bruge samme kvalitet som den aktuelle video.\n\nDenne funktion fungerer bedst med en videokvalitet på 720p eller lavere og ved brug af en meget hurtig internetforbindelse.</string>
<string name="revanced_seekbar_thumbnails_high_quality_dialog_message">"Dette vil også gendanne miniaturebilleder på livestreams, der ikke har miniaturebilleder i søgefeltet.
Miniaturebilleder i søgefeltet bruger den samme kvalitet som den aktuelle video.
Denne funktion fungerer bedst med en videokvalitet på 720p eller lavere og ved brug af en meget hurtig internetforbindelse."</string>
<string name="revanced_restore_old_seekbar_thumbnails_title">Gendan gamle miniaturer på søgelinjen</string>
<string name="revanced_restore_old_seekbar_thumbnails_summary_on">Seekbar miniaturer vises over søgelinjen</string>
<string name="revanced_restore_old_seekbar_thumbnails_summary_off">Seekbar miniaturer vises i fuld skærm</string>
@@ -812,7 +855,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_sb_general_uuid_invalid">Privat bruger-id skal være mindst 30 tegn langt</string>
<string name="revanced_sb_general_api_url">Skift API-URL</string>
<string name="revanced_sb_general_api_url_sum">Adressen SponsorBlock bruger til at foretage opkald til serveren</string>
<string name="revanced_sb_api_url_reset">API URL reset</string>
<string name="revanced_sb_api_url_reset">API-URL nulstillet</string>
<string name="revanced_sb_api_url_invalid">API URL er ugyldig</string>
<string name="revanced_sb_api_url_changed">API URL ændret</string>
<string name="revanced_sb_settings_ie">Importér/eksport indstillinger</string>
@@ -822,7 +865,10 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_sb_settings_import_successful">Indstillinger importeret med succes</string>
<string name="revanced_sb_settings_import_failed">Mislykkedes at importere: %s</string>
<string name="revanced_sb_settings_export_failed">Mislykkedes at eksportere: %s</string>
<string name="revanced_sb_settings_revanced_export_user_id_warning">Dine indstillinger indeholder et privat SponsorBloker bruger-id.\n\nDit bruger-id er som en adgangskode, og det bør aldrig deles.\n</string>
<string name="revanced_sb_settings_revanced_export_user_id_warning">"Dine indstillinger indeholder et privat SponsorBlock-bruger-id.
Dit bruger-id er som en adgangskode, og det må aldrig deles.
"</string>
<string name="revanced_sb_settings_revanced_export_user_id_warning_dismiss">Vis ikke igen</string>
<string name="revanced_sb_diff_segments">Ændr segmentadfærd</string>
<string name="revanced_sb_segments_sponsor">Sponsor</string>
@@ -833,13 +879,13 @@ This is because Crowdin requires temporarily flattening this file and removing t
<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>
<string name="revanced_sb_segments_highlight_sum">Den del af videoen, som de fleste mennesker er på udkig efter</string>
<string name="revanced_sb_segments_intro">Intermission/Intro Animation</string>
<string name="revanced_sb_segments_intro">Pause/Intro-animation</string>
<string name="revanced_sb_segments_intro_sum">Et interval uden reelt indhold. Kunne være en pause, statisk ramme eller gentagelse af animation. Omfatter ikke overgange indeholdende information</string>
<string name="revanced_sb_segments_outro">Slutkort/Kredit</string>
<string name="revanced_sb_segments_outro_sum">Medvirkende eller når YouTube-endcards vises. Ikke for konklusioner med information</string>
<string name="revanced_sb_segments_preview">Forhåndsvisning/Genoptag/Krog</string>
<string name="revanced_sb_segments_preview_sum">Indsamling af klip, der viser, hvad der kommer op, eller hvad der skete i videoen eller i andre videoer af en serie, hvor alle oplysninger gentages andetsteds</string>
<string name="revanced_sb_segments_filler">Filler Tangent/Jokes</string>
<string name="revanced_sb_segments_filler">Fyldstof-tangent/jokes</string>
<string name="revanced_sb_segments_filler_sum">Tangential scener tilføjet kun for fyldstof eller humor, der ikke er forpligtet til at forstå hovedindholdet af videoen. Omfatter ikke segmenter, der giver kontekst- eller baggrundsoplysninger</string>
<string name="revanced_sb_segments_nomusic">Musik: Ikke-Musik Sektion</string>
<string name="revanced_sb_segments_nomusic_sum">Kun til brug i musikvideoer. Sektioner af musikvideoer uden musik, der ikke allerede er dækket af en anden kategori</string>
@@ -852,14 +898,14 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_sb_skip_button_intro_beginning">Spring intro over</string>
<string name="revanced_sb_skip_button_intro_middle">Spring intermission over</string>
<string name="revanced_sb_skip_button_intro_end">Spring intermission over</string>
<string name="revanced_sb_skip_button_outro">Skip outro</string>
<string name="revanced_sb_skip_button_outro">Spring outro over</string>
<string name="revanced_sb_skip_button_preview_beginning">Spring forhåndsvisning over</string>
<string name="revanced_sb_skip_button_preview_middle">Spring forhåndsvisning over</string>
<string name="revanced_sb_skip_button_preview_end">Spring resumé over</string>
<string name="revanced_sb_skip_button_filler">Spring filler over</string>
<string name="revanced_sb_skip_button_nomusic">Spring over ikke-musik</string>
<string name="revanced_sb_skip_button_unsubmitted">Overspring segment</string>
<string name="revanced_sb_skipped_sponsor">sponsor sprunget over</string>
<string name="revanced_sb_skipped_sponsor">Sponsor sprunget over</string>
<string name="revanced_sb_skipped_selfpromo">Selv-forfremmelse sprunget over</string>
<string name="revanced_sb_skipped_interaction">Sprunget over irriterende påmindelse</string>
<string name="revanced_sb_skipped_highlight">Sprunget over for at fremhæve</string>
@@ -882,9 +928,10 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_sb_submit_failed_invalid">Kan ikke indsende segment: %s</string>
<string name="revanced_sb_submit_failed_timeout">SponsorBlock er midlertidigt nede</string>
<string name="revanced_sb_submit_failed_unknown_error">Kan ikke indsende segment (status: %1$d %2$s)</string>
<string name="revanced_sb_submit_failed_rate_limit">Kan ikke indsende segment.\nRate Limited (for mange fra samme bruger eller IP)</string>
<string name="revanced_sb_submit_failed_rate_limit">Kan ikke indsende segment. Hastighedsbegrænset (for mange fra den samme bruger eller IP-adresse)</string>
<string name="revanced_sb_submit_failed_forbidden">Kan ikke indsende segmentet: %s</string>
<string name="revanced_sb_submit_failed_duplicate">Kan ikke indsende segmentet.\nfindes allerede</string>
<string name="revanced_sb_submit_failed_duplicate">"Kan ikke indsende segmentet.
Eksisterer allerede"</string>
<string name="revanced_sb_submit_succeeded">Segment indsendt med succes</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. -->
<string name="revanced_sb_sponsorblock_connection_failure_timeout">SponsorBloker midlertidigt ikke tilgængelig (API-tid ud)</string>
@@ -893,8 +940,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_sb_vote_failed_timeout">Kan ikke stemme på segment (API-timede ud)</string>
<string name="revanced_sb_vote_failed_unknown_error">Kan ikke stemme på segment (status: %1$d %2$s)</string>
<string name="revanced_sb_vote_failed_forbidden">Ikke i stand til at stemme på segmentet: %s</string>
<string name="revanced_sb_vote_upvote">Upvote</string>
<string name="revanced_sb_vote_downvote">Downvote</string>
<string name="revanced_sb_vote_upvote">Op</string>
<string name="revanced_sb_vote_downvote">Ned</string>
<string name="revanced_sb_vote_category">Skift kategori</string>
<string name="revanced_sb_vote_no_segments">Der er ingen segmenter at stemme for</string>
<string name="revanced_sb_new_segment_choose_category">Vælg segmentkategori</string>
@@ -907,7 +954,15 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_sb_new_segment_time_start">Tidspunkt for segmentet begynder på</string>
<string name="revanced_sb_new_segment_time_end">Tidspunkt for segmentet slutter på</string>
<string name="revanced_sb_new_segment_confirm_title">Er tiderne korrekte?</string>
<string name="revanced_sb_new_segment_confirm_content">Segmentet er fra\n\n%1$s\ntil\n%2$s\n\n(%3$s)\n\nKlar til at indsende?</string>
<string name="revanced_sb_new_segment_confirm_content">"Segmentet er fra
%1$s
til
%2$s
(%3$s)
Er du klar til at indsende?"</string>
<string name="revanced_sb_new_segment_start_is_before_end">Start skal være før slutningen</string>
<string name="revanced_sb_new_segment_mark_locations_first">Markér to steder på tidsbjælken først</string>
<string name="revanced_sb_new_segment_preview_segment_first">Forhåndsvisning af segmentet, og sikre, at det springer glat</string>
@@ -946,10 +1001,14 @@ This is because Crowdin requires temporarily flattening this file and removing t
<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.spoofappversion.spoofAppVersionPatch">
<string name="revanced_spoof_app_version_title">Spoof app version</string>
<string name="revanced_spoof_app_version_title">Spoof app-version</string>
<string name="revanced_spoof_app_version_summary_on">Version spoofed</string>
<string name="revanced_spoof_app_version_summary_off">Version ikke spoofed</string>
<string name="revanced_spoof_app_version_user_dialog_message">App version vil blive spoofed til en ældre version af YouTube.\n\nDette vil ændre udseendet og funktionerne i appen, men der kan forekomme ukendte bivirkninger.\n\nHvis senere slået fra, anbefales det at rydde app-data for at forhindre UI-fejl.</string>
<string name="revanced_spoof_app_version_user_dialog_message">"App-versionen forfalskes til en ældre version af YouTube.
Dette ændrer appens udseende og funktioner, men ukendte bivirkninger kan forekomme.
Hvis det senere slås fra, anbefales det at rydde app-dataene for at forhindre UI-fejl."</string>
<!-- 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 -->
<string name="revanced_spoof_app_version_target_title">Spoof app version mål</string>
@@ -980,9 +1039,16 @@ This is because Crowdin requires temporarily flattening this file and removing t
</patch>
<patch id="layout.startupshortsreset.disableResumingShortsOnStartupPatch">
<string name="revanced_disable_resuming_shorts_player_title">Deaktivér genoptagelse af Shorts spiller</string>
<string name="revanced_disable_resuming_shorts_player_summary_on">Shorts-afspilleren genoptages ikke ved app-start</string>
<string name="revanced_disable_resuming_shorts_player_summary_off">Kortspilleren vil genoptage ved app-opstart</string>
</patch>
<patch id="layout.shortsautoplay.shortsAutoplayPatch">
<string name="revanced_shorts_autoplay_title">Automatisk afspilning af Shorts</string>
<string name="revanced_shorts_autoplay_summary_on">Shorts afspilles automatisk</string>
<string name="revanced_shorts_autoplay_summary_off">Shorts gentages</string>
<string name="revanced_shorts_autoplay_background_title">Automatisk afspilning af Shorts i baggrunden</string>
<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>
@@ -991,11 +1057,10 @@ This is because Crowdin requires temporarily flattening this file and removing t
<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">Miniplayer</string>
<string name="revanced_miniplayer_screen_summary">Ændre stilen for den i app minimeret afspiller</string>
<string name="revanced_miniplayer_type_title">Type af miniplayer</string>
<string name="revanced_miniplayer_type_entry_0">Deaktiveret</string>
<string name="revanced_miniplayer_type_entry_1">Oprindelig</string>
<string name="revanced_miniplayer_type_entry_1">Standard</string>
<string name="revanced_miniplayer_type_entry_2">Minimal</string>
<string name="revanced_miniplayer_type_entry_3">Tablet</string>
<string name="revanced_miniplayer_type_entry_4">Moderne 1</string>
@@ -1005,19 +1070,28 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_miniplayer_rounded_corners_summary_on">Hjørner er afrundede</string>
<string name="revanced_miniplayer_rounded_corners_summary_off">Hjørner er firkantede</string>
<string name="revanced_miniplayer_double_tap_action_title">Aktiver dobbelttryk og klemme for at ændre størrelse</string>
<string name="revanced_miniplayer_double_tap_action_summary_on">Dobbelttryk handling og klemme for at ændre størrelse er aktiveret\n\n• Dobbelttryk for at øge miniplayer størrelse\n• Dobbelttryk igen for at gendanne original størrelse</string>
<string name="revanced_miniplayer_double_tap_action_summary_on">"Dobbelttrykshandling og knib for at ændre størrelse er aktiveret
● Dobbelttryk for at øge miniafspillerstørrelsen
● Dobbelttryk igen for at gendanne den oprindelige størrelse"</string>
<string name="revanced_miniplayer_double_tap_action_summary_off">Dobbelttryk handling og klemme for at ændre størrelse er deaktiveret</string>
<string name="revanced_miniplayer_drag_and_drop_title">Aktiver træk og slip</string>
<string name="revanced_miniplayer_drag_and_drop_summary_on">Træk og slip er aktiveret\n\nMiniplayer kan trækkes til ethvert hjørne af skærmen</string>
<string name="revanced_miniplayer_drag_and_drop_summary_on">"Træk og slip er aktiveret
Miniafspiller kan trækkes til et hvilket som helst hjørne af skærmen"</string>
<string name="revanced_miniplayer_drag_and_drop_summary_off">Træk og slip er deaktiveret</string>
<string name="revanced_miniplayer_horizontal_drag_title">Aktiver vandret træk-bevægelse</string>
<string name="revanced_miniplayer_horizontal_drag_summary_on">Vandret træk gestus aktiveret\n\nMiniplayer kan trækkes fra skærmen til venstre eller højre</string>
<string name="revanced_miniplayer_horizontal_drag_summary_on">"Vandret træk-bevægelse aktiveret
Miniafspiller kan trækkes ud over skærmen til venstre eller højre"</string>
<string name="revanced_miniplayer_horizontal_drag_summary_off">Vandret trækbevægelse deaktiveret</string>
<string name="revanced_miniplayer_hide_expand_close_title">Skjul lukkeknap</string>
<string name="revanced_miniplayer_hide_expand_close_summary_on">Luk knappen er skjult</string>
<string name="revanced_miniplayer_hide_expand_close_summary_off">Luk knappen vises</string>
<string name="revanced_miniplayer_hide_expand_close_legacy_title">Skjul udvid og luk knapper</string>
<string name="revanced_miniplayer_hide_expand_close_legacy_summary_on">Knapper er skjult\n\nStryg for at udvide eller lukke</string>
<string name="revanced_miniplayer_hide_expand_close_legacy_summary_on">"Knapper er skjult
Stryg for at udvide eller lukke"</string>
<string name="revanced_miniplayer_hide_expand_close_legacy_summary_off">Udvid og luk knapper vises</string>
<string name="revanced_miniplayer_hide_subtext_title">Skjul undertekster</string>
<string name="revanced_miniplayer_hide_subtext_summary_on">Undertekster er skjult</string>
@@ -1048,7 +1122,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
<patch id="layout.thumbnails.bypassImageRegionRestrictionsPatch">
<string name="revanced_bypass_image_region_restrictions_title">Bypass billede region restriktioner</string>
<string name="revanced_bypass_image_region_restrictions_summary_on">Bruger billedvært yt4.ggpht.com</string>
<string name="revanced_bypass_image_region_restrictions_summary_off">Brug af original billedvært\n\nAktivering af dette kan rette manglende billeder, der er blokeret i nogle regioner</string>
<string name="revanced_bypass_image_region_restrictions_summary_off">"Bruger original billedevært
Aktivering af dette kan løse manglende billeder, der er blokeret i nogle regioner"</string>
</patch>
<patch id="layout.thumbnails.alternativeThumbnailsPatch">
<!-- 'Home' should be translated using the same localized wording YouTube displays for the home tab. -->
@@ -1059,15 +1135,19 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_alt_thumbnail_library_title">Dig fane</string>
<string name="revanced_alt_thumbnail_player_title">Afspiller afspilningslister, anbefalinger</string>
<string name="revanced_alt_thumbnail_search_title">Søgeresultater</string>
<string name="revanced_alt_thumbnail_options_entry_1">Original thumbnails</string>
<string name="revanced_alt_thumbnail_options_entry_1">Originale miniaturebilleder</string>
<string name="revanced_alt_thumbnail_options_entry_2">DeArrow &amp; Originale miniaturer</string>
<string name="revanced_alt_thumbnail_options_entry_3">DeArrow &amp; stadig fanger</string>
<string name="revanced_alt_thumbnail_options_entry_4">Fangster stadig</string>
<string name="revanced_alt_thumbnail_dearrow_about_summary">DeArrow giver crowd-sourcede miniaturer til YouTube-videoer. Disse miniaturer er ofte mere relevante end dem, YouTube\n\nHvis aktiveret, video URL\'er vil blive sendt til API-serveren og ingen andre data bliver sendt. Hvis en video ikke har miniaturer til DeArrow, så er de originale eller stadig optagelser vist\n\nTryk her for at få mere at vide om DeArrow</string>
<string name="revanced_alt_thumbnail_dearrow_about_summary">"DeArrow leverer crowdsourcede miniaturebilleder til YouTube-videoer. Disse miniaturebilleder er ofte mere relevante end dem, der er tilgængelige fra YouTube
Hvis aktiveret, sendes videolinks til API-serveren, og ingen andre data sendes. Hvis en video ikke har DeArrow-miniaturebilleder, vises de originale eller stillbilleder
Tryk her for at lære mere om DeArrow"</string>
<string name="revanced_alt_thumbnail_dearrow_connection_toast_title">Vis en toast hvis API ikke er tilgængelig</string>
<string name="revanced_alt_thumbnail_dearrow_connection_toast_summary_on">Toast vises hvis DeArrow ikke er tilgængelig</string>
<string name="revanced_alt_thumbnail_dearrow_connection_toast_summary_off">Toast er ikke vist hvis DeArrow ikke er tilgængelig</string>
<string name="revanced_alt_thumbnail_dearrow_api_url_title">DeArrow API endpoint</string>
<string name="revanced_alt_thumbnail_dearrow_api_url_title">DeArrow API-slutpunkt</string>
<string name="revanced_alt_thumbnail_dearrow_api_url_summary">Webadressen på DeArrow thumbnail cache endpoint</string>
<string name="revanced_alt_thumbnail_stills_about_title">Stadig video indfanger</string>
<string name="revanced_alt_thumbnail_stills_about_summary">Stadig optagelser er taget fra begyndelsen / midten / slutningen af hver video. Disse billeder er indbygget i YouTube og ingen ekstern API bruges</string>
@@ -1102,8 +1182,12 @@ This is because Crowdin requires temporarily flattening this file and removing t
</patch>
<patch id="misc.dimensions.spoof.spoofDeviceDimensionsPatch">
<string name="revanced_spoof_device_dimensions_title">Spoof enhedens dimensioner</string>
<string name="revanced_spoof_device_dimensions_summary_on">Enhedsmål spoofed\n\nHøjere video kvaliteter kan låses op, men du kan opleve videoafspilning stuttering, værre batterilevetid og ukendte bivirkninger</string>
<string name="revanced_spoof_device_dimensions_summary_off">Enheds dimensioner ikke forfalsket\n\nAktivering af dette kan låse op for højere videokvaliteter</string>
<string name="revanced_spoof_device_dimensions_summary_on">"Enhedens dimensioner er forfalsket
Højere videokvalitet kan låses op, men du kan opleve videoafspilningshakkethed, dårligere batterilevetid og ukendte bivirkninger"</string>
<string name="revanced_spoof_device_dimensions_summary_off">"Enhedens dimensioner forfalskes ikke
Aktivering af dette kan låse op for højere videokvalitet"</string>
<string name="revanced_spoof_device_dimensions_user_dialog_message">Aktivering af dette kan forårsage videoafspilning stuttering, værre batterilevetid og ukendte bivirkninger.</string>
</patch>
<patch id="misc.gms.gmsCoreSupportResourcePatch">
@@ -1139,7 +1223,6 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_video_quality_default_wifi_title">Standard videokvalitet på Wi-Fi-netværk</string>
<string name="revanced_video_quality_default_mobile_title">Standard videokvalitet på mobilnetværk</string>
<string name="revanced_remember_video_quality_mobile">mobil</string>
<string name="revanced_remember_video_quality_wifi">wifi</string>
<string name="revanced_remember_video_quality_toast">Ændrede standard %1$s kvalitet til: %2$s</string>
</patch>
<patch id="video.speed.button.playbackSpeedButtonPatch">
@@ -1153,8 +1236,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_custom_speed_menu_summary_off">Brugerdefineret hastighedsmenu vises ikke</string>
<string name="revanced_custom_playback_speeds_title">Tilpasset afspilningshastighed</string>
<string name="revanced_custom_playback_speeds_summary">Tilføj eller ændr den brugerdefinerede afspilningshastighed</string>
<string name="revanced_custom_playback_speeds_invalid">Brugerdefinerede hastigheder skal være mindre end %s. Bruger standardværdier.</string>
<string name="revanced_custom_playback_speeds_parse_exception">Ugyldig brugerdefineret afspilningshastighed. Brug af standardværdier.</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>
</patch>
<patch id="video.speed.remember.rememberPlaybackSpeedPatch">
@@ -1175,22 +1258,83 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_slide_to_seek_summary_off">Dias til søgning er ikke aktiveret</string>
</patch>
<patch id="misc.fix.playback.spoofVideoStreamsPatch">
<string name="revanced_spoof_video_streams_screen_title">Spoof video streams</string>
<string name="revanced_spoof_video_streams_screen_title">Spoof videostreams</string>
<string name="revanced_spoof_video_streams_screen_summary">Spoof klienten video streams for at forhindre afspilning problemer</string>
<string name="revanced_spoof_video_streams_title">Spoof video streams</string>
<string name="revanced_spoof_video_streams_title">Spoof videostreams</string>
<string name="revanced_spoof_video_streams_summary_on">Video streams er spoofed</string>
<string name="revanced_spoof_video_streams_summary_off">Videostreams er ikke forfalskede\n\nVideoafspilning fungerer muligvis ikke</string>
<string name="revanced_spoof_video_streams_summary_off">"Videostreams forfalskes ikke
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_title">Standard klient</string>
<string name="revanced_spoof_video_streams_ios_force_avc_title">Gennemtving AVC (H.264)</string>
<string name="revanced_spoof_video_streams_ios_force_avc_summary_on">Video codec er AVC (H.264)</string>
<string name="revanced_spoof_video_streams_ios_force_avc_summary_off">Video-codec er VP9 eller AV1</string>
<string name="revanced_spoof_video_streams_ios_force_avc_no_hardware_vp9_summary_on">Din enhed har ikke VP9 hardwareafkodning, og denne indstilling er altid tændt, når Client spoofing er aktiveret</string>
<string name="revanced_spoof_video_streams_ios_force_avc_user_dialog_message">Aktivering af dette kan forbedre batteriets levetid og rette afspilningsstuttering.\n\nAVC har en maksimal opløsning på 1080p, og videoafspilning vil bruge flere internetdata end VP9 eller AV1.</string>
<string name="revanced_spoof_video_streams_ios_force_avc_summary_on">Video-codec er tvunget til AVC (H.264)</string>
<string name="revanced_spoof_video_streams_ios_force_avc_summary_off">Video-codec bestemmes automatisk</string>
<string name="revanced_spoof_video_streams_ios_force_avc_user_dialog_message">"Aktivering af dette kan forbedre batterilevetiden og løse afspilningshakkethed.
AVC har en maksimal opløsning på 1080p, Opus lydcodec er ikke tilgængelig, og videoafspilning bruger mere internetdata end VP9 eller AV1."</string>
<string name="revanced_spoof_video_streams_about_ios_title">iOS forfalskning bivirkninger</string>
<string name="revanced_spoof_video_streams_about_ios_summary">• Private børn videoer kan ikke afspille\n• Livestreams starter fra begyndelsen\n• Videoer kan ende 1 sekund tidlig\n• Ingen opus audio codec</string>
<string name="revanced_spoof_video_streams_about_ios_summary">"• Private børnevideoer kan ikke afspilles
• Livestreams starter fra begyndelsen
• Videoer slutter 1 sekund tidligere"</string>
<string name="revanced_spoof_video_streams_about_android_vr_title">Android VR spoofing bivirkninger</string>
<string name="revanced_spoof_video_streams_about_android_vr_summary">Kids videoer afspiller muligvis ikke\n• Menuen for lydspor mangler\n• Stabil lydstyrke er ikke tilgængelig</string>
<string name="revanced_spoof_video_streams_about_android_vr_summary">"Børnevideoer kan ikke afspilles
• Livestreams starter fra begyndelsen
• Videoer slutter 1 sekund tidligere"</string>
<string name="revanced_spoof_video_streams_language_title">Standard lyd-stream sprog</string>
<string name="revanced_spoof_video_streams_language_DEFAULT">App 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_PT_BR">Portugisisk (Brasilien)</string>
<string name="revanced_spoof_video_streams_language_PT_PT">Portugisisk (Portugal)</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>
</patch>
</app>
<app id="twitch">
@@ -1200,12 +1344,11 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_block_audio_ads_summary_off">Lydannoncer er ublokeret</string>
</patch>
<patch id="ad.embedded.embeddedAdsPatch">
<string name="revanced_embedded_ads_service_unavailable">%s er ikke tilgængelig. Annoncer kan vises. Prøv at skifte til en anden annonceblok tjeneste i indstillinger.</string>
<string name="revanced_embedded_ads_service_failed">%s server returnerede en fejl. Annoncer kan vises. Prøv at skifte til en anden annonceblok tjeneste i indstillinger.</string>
<string name="revanced_embedded_ads_service_unavailable">%s er ikke tilgængelig, annoncer vises muligvis. Prøv at skifte annonceblokeringstjeneste i indstillinger.</string>
<string name="revanced_embedded_ads_service_failed">%s returnerede en fejl, annoncer vises muligvis. Prøv at skifte annonceblokeringstjeneste i indstillinger.</string>
<string name="revanced_block_embedded_ads_title">Bloker indlejrede videoannoncer</string>
<string name="revanced_block_embedded_ads_entry_1">Deaktiveret</string>
<string name="revanced_block_embedded_ads_entry_2">Lysende proxy</string>
<string name="revanced_block_embedded_ads_entry_3">PurpleAdBlock proxy</string>
</patch>
<patch id="ad.video.videoAdsPatch">
<string name="revanced_block_video_ads_title">Blokér videoannoncer</string>

View File

@@ -1,34 +1,23 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Note: All strings must have a unique path, even if the same string is declared in two different apps.
This is because Crowdin requires temporarily flattening this file and removing the <app> and <patch> elements.
All strings must have a unique path, even if the same string is declared in two different apps.
This is because Crowdin requires temporarily flattening this file and removing the <app> and <patch> elements.
# General guidelines and information for translating
## Strings parameters can be reordered to allow more flexible translations if the grammar should be changed.
Strings with new lines must be raw strings where they're wrapped in quotes and new lines are not encoded.
Raw strings still requires escaping embedded double quotes but escaping embedded single quotes is optional.
For example, the patches string:
<string name="revanced_patches_string">You will arrive at %1$s in %2$s hours from now</string>
Could be translated to another language using a rearranged grammar:
<string name="revanced_patches_string">You will arrive %2$s hours from now at %1$s</string>
Raw strings are required because Crowdin AI translations regularly gets confused and
replace \n with an encoded new line character.
For Manager strings:
You will arrive at ${destination} in ${count} hours from now
Could be rearranged by changing the order of the ${} parameters:
You will arrive ${count} hours from now at ${destination}
Bad:
<string name="summary_key">First \'item\' text\nSecond \"item\" text</string>
Reordering is particularly relevant when translating into right to left languages, or for any language with grammar that is noticeably different from English.
Good:
<string name="summary_key">"First 'item' text
Second \"item\" text"</string>
## Single and double quotation marks must be escaped for patch strings (Manager does not require escaping any quotes).
All _patches_ single and double quotation marks must be escaped as \" or \'
Forgetting to do this will cause that string to appear in app with no quotation characters.
Correct:
<string name="revanced_string">You\'re correct. This is the \"correct\" way and this text will appear as expected in the app</string>
Not correct:
<string name="revanced_string">You're not correct. This is not the "correct" way and this text will not appear as expected the in app</string>
-->
<resources>
<app id="shared">
@@ -44,7 +33,6 @@ This is because Crowdin requires temporarily flattening this file and removing t
<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_reset">Zurücksetzen</string>
<string name="revanced_settings_restart_title">Aktualisieren und neu starten</string>
@@ -68,9 +56,13 @@ This is because Crowdin requires temporarily flattening this file and removing t
<!-- 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_dialog_not_whitelisted_not_allowed_in_background_message">MicroG GmsCore hat keine Berechtigung im Hintergrund zu laufen.\n\nFolge dem Leitfaden \"Don\'t kill my app\" für dein Telefon und wende die Anweisungen auf deine MicroG-Installation an.\n\nDies ist erforderlich, damit die App funktioniert.</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.
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">MicroG GmsCore Batterieoptimierungen müssen deaktiviert werden, um Probleme zu vermeiden.\n\nTippe auf den Weiter-Button und deaktiviere die Batterieoptimierung.</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_continue_text">Weiter</string>
</patch>
</app>
@@ -107,7 +99,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
<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 Deaktivieren von Fehlertoasts verbirgt alle ReVanced Fehlerbenachrichtigungen.\n\nDu wirst nicht über unerwartete Ereignisse benachrichtigt.</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>
@@ -126,7 +119,12 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_channel_watermark_summary_on">Wasserzeichen ist ausgeblendet</string>
<string name="revanced_hide_channel_watermark_summary_off">Wasserzeichen wird angezeigt</string>
<string name="revanced_hide_horizontal_shelves_title">Horizontale Reihe ausblenden</string>
<string name="revanced_hide_horizontal_shelves_summary_on">Videoreihen sind ausgeblendet, zum Beispiel:\n•Eilmeldungen\n• Fortsetzen\n• weitere Kanäle erkunden\n• Einkaufen\n• gesehenes wiederholen</string>
<string name="revanced_hide_horizontal_shelves_summary_on">"Regale sind ausgeblendet, wie z. B.:
• Eilmeldungen
• Weiterschauen
• Weitere Kanäle erkunden
• Shopping
• Nochmal ansehen"</string>
<string name="revanced_hide_horizontal_shelves_summary_off">Reihen werden angezeigt</string>
<!-- 'Join' should be translated using the same localized wording YouTube displays.
This appears in the video player for certain videos. -->
@@ -253,6 +251,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_filter_bar_feed_in_related_videos_summary_off">In verwandten Videos angezeigt</string>
<string name="revanced_comments_screen_title">Kommentare</string>
<string name="revanced_comments_screen_summary">Komponenten der Kommentar-Sektion ausblenden oder anzeigen</string>
<string name="revanced_hide_comments_chat_summary_title">\'Chat-Zusammenfassung\' ausblenden </string>
<string name="revanced_hide_comments_chat_summary_summary_on">\'Chat-Übersichtsanzeige\' ist ausgeblendet</string>
<string name="revanced_hide_comments_chat_summary_summary_off">\'Chat-Übersichtsanzeige\' wird angezeigt</string>
<string name="revanced_hide_comments_by_members_header_title">\'Kommentare von Mitglieder\' im Kopfbereich ausblenden</string>
<string name="revanced_hide_comments_by_members_header_summary_on">\'Kommentare von Mitglieder\' Header ist ausgeblendet</string>
<string name="revanced_hide_comments_by_members_header_summary_off">\'Kommentare von Mitgliedern\' wird angezeigt</string>
@@ -275,7 +276,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_doodles_title">YouTube Doodles ausblenden</string>
<string name="revanced_hide_doodles_summary_on">Suchleiste Doodles sind versteckt</string>
<string name="revanced_hide_doodles_summary_off">Suchleiste Doodles werden angezeigt</string>
<string name="revanced_hide_doodles_user_dialog_message">YouTube Doodles erscheinen jedes Jahr ein paar Tage.\n\nWenn ein Doodle in deiner Region angezeigt wird und diese Versteckeinstellung aktiviert ist dann wird auch die Filterleiste unterhalb der Suchleiste ausgeblendet.</string>
<string name="revanced_hide_doodles_user_dialog_message">"YouTube-Doodles werden ein paar Tage im Jahr angezeigt.
Wenn ein Doodle zurzeit in Ihrer Region angezeigt wird und diese Einstellung zum Ausblenden aktiviert ist, wird auch die Filterleiste unterhalb der Suchleiste ausgeblendet."</string>
<string name="revanced_custom_filter_screen_title">Eigener Filter</string>
<string name="revanced_custom_filter_screen_summary">Komponenten mit benutzerdefinierten Filtern ausblenden</string>
<string name="revanced_custom_filter_title">Eigenen Filter aktivieren</string>
@@ -299,9 +301,18 @@ This is because Crowdin requires temporarily flattening this file and removing t
<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. -->
<string name="revanced_hide_keyword_content_phrases_summary">Stichwörter und zu versteckende Phrasen durch neue Zeilen\n\ngetrennte Schlüsselwörter können Kanalnamen oder beliebiger Text sein, der in den Videotiteln\n\nWörter mit Großbuchstaben in der Mitte angezeigt werden muss mit dem Gehäuse eingegeben werden (z.B. iPhone, TikTok, LeBlanc)</string>
<string name="revanced_hide_keyword_content_phrases_summary">"Stichwörter und Ausdrücke, die ausgeblendet werden sollen, durch neue Zeilen getrennt
Stichwörter können Kanalnamen oder alle Texte sein, die in Videobeschreibungen angezeigt werden
Wörter mit Großbuchstaben in der Mitte müssen mit der Groß- und Kleinschreibung eingegeben werden (z. B.: iPhone, TikTok, LeBlanc)"</string>
<string name="revanced_hide_keyword_content_about_title">Über Keyword-Filterung</string>
<string name="revanced_hide_keyword_content_about_summary">Home/Abonnement/Suchergebnisse werden gefiltert, um Inhalte zu verstecken, die den Schlüsselwörtern\n\nBeschränkungen\nentsprechen • Shorts können nicht mit dem Kanalnamen\nversteckt werden • Einige UI-Komponenten können nicht versteckt werden\n• Suche nach einem Stichwort kann keine Ergebnisse zeigen</string>
<string name="revanced_hide_keyword_content_about_summary">"Startseite/Abonnements/Suchergebnisse werden gefiltert, um Inhalte auszublenden, die mit Stichwortphrasen übereinstimmen
Einschränkungen
• Shorts können nicht nach Kanalnamen ausgeblendet werden
• Einige UI-Komponenten können nicht ausgeblendet werden
• Die Suche nach einem Stichwort kann zu keinen Ergebnissen führen"</string>
<string name="revanced_hide_keyword_content_about_whole_words_title">Ganze Wörter abgleichen</string>
<!-- Translations _must_ use a localized example. For languages that do not use spaces between words (Chinese, Japanese, etc) the English AI example should be used since no localized examples exist. Or if using machine translations, or if nobody wants to think of a localized example, then the English 'ai' example should be left as-is. -->
<string name="revanced_hide_keyword_content_about_whole_words_summary">Durch das Umschließen mit doppelten Anführungszeichen wird verhindert, dass teilweise Videotitel und Kanalnamen&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;b&gt;\"ai\"&lt;/b&gt; wird das Video ausblenden: &lt;b&gt;How does AI work?&lt;/b&gt;&lt;br&gt;aber nicht versteckt: &lt;b&gt;What does fair use mean?&lt;/b&gt;</string>
@@ -317,7 +328,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_general_ads_summary_on">Allgemeine Anzeigen sind ausgeblendet</string>
<string name="revanced_hide_general_ads_summary_off">Allgemeine Anzeigen werden angezeigt</string>
<string name="revanced_hide_fullscreen_ads_title">Vollbild-Werbung ausblenden</string>
<string name="revanced_hide_fullscreen_ads_summary_on">Vollbild-Anzeigen sind ausgeblendet\n\nDiese Funktion ist nur für ältere Geräte verfügbar</string>
<string name="revanced_hide_fullscreen_ads_summary_on">"Vollbildwerbung wird ausgeblendet
Diese Funktion ist nur für ältere Geräte verfügbar"</string>
<string name="revanced_hide_fullscreen_ads_summary_off">Vollbild-Anzeigen werden angezeigt</string>
<string name="revanced_hide_buttoned_ads_title">Verknüpfte Werbung ausblenden</string>
<string name="revanced_hide_buttoned_ads_summary_on">Verknüpfte Anzeigen sind ausgeblendet</string>
@@ -419,7 +432,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_swipe_lowest_value_enable_auto_brightness_title">Auto-Helligkeit Geste aktivieren</string>
<string name="revanced_swipe_lowest_value_enable_auto_brightness_summary_on">Wische runter auf den niedrigsten Wert der Helligkeitsgeste, um die automatische Helligkeit zu aktivieren</string>
<string name="revanced_swipe_lowest_value_enable_auto_brightness_summary_off">Wenn man zum niedrigsten Wert wischt, aktiviert man die automatische Helligkeit nicht</string>
<string name="revanced_swipe_lowest_value_enable_auto_brightness_overlay_text">Auto</string>
<string name="revanced_swipe_lowest_value_enable_auto_brightness_overlay_text">Automatik</string>
<string name="revanced_swipe_overlay_timeout_title">Wischüberlagerungs-Timeout</string>
<string name="revanced_swipe_overlay_timeout_summary">Die Anzahl der Millisekunden, die das Overlay sichtbar ist</string>
<string name="revanced_swipe_text_overlay_size_title">Wischüberlagerung Textgröße</string>
@@ -462,7 +475,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_thanks_button_summary_on">Dankeschön-Taste ist ausgeblendet</string>
<string name="revanced_hide_thanks_button_summary_off">Dankeschön Button wird angezeigt</string>
<!-- 'Clip' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_clip_button_title">Hide Clip</string>
<string name="revanced_hide_clip_button_title">Clip ausblenden</string>
<string name="revanced_hide_clip_button_summary_on">Clip-Button ist ausgeblendet</string>
<string name="revanced_hide_clip_button_summary_off">Clip-Taste wird angezeigt</string>
<!-- 'Save' should be translated with the same localized wording that YouTube displays. -->
@@ -471,7 +484,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_playlist_button_summary_off">In Wiedergabeliste speichern wird angezeigt</string>
</patch>
<patch id="layout.buttons.navigation.navigationButtonsPatch">
<string name="revanced_navigation_buttons_screen_title">Navigation buttons</string>
<string name="revanced_navigation_buttons_screen_title">Navigationstasten</string>
<string name="revanced_navigation_buttons_screen_summary">Verstecke oder ändere Schaltflächen in der Navigationsleiste</string>
<!-- 'Home' should be translated using the same localized wording YouTube displays for the tab. -->
<string name="revanced_hide_home_button_title">Haus ausblenden</string>
@@ -491,14 +504,16 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_subscriptions_button_summary_off">Abonnement-Button wird angezeigt</string>
<!-- 'Notifications' should be translated using the same localized wording YouTube displays the tab. -->
<string name="revanced_switch_create_with_notifications_button_title">Tauscht Erstellen mit Benachrichtigungen</string>
<string name="revanced_switch_create_with_notifications_button_summary_on">Erstellen-Button wird mit Benachrichtigungs-Button getauscht\n\nHinweis: Aktivieren versteckt Video-Anzeigen</string>
<string name="revanced_switch_create_with_notifications_button_summary_on">"Die Schaltfläche \"Erstellen\" wird mit der Schaltfläche \"Benachrichtigungen\" vertauscht
Hinweis: Durch Aktivieren dieser Option wird auch die Videowerbung zwangsweise ausgeblendet"</string>
<string name="revanced_switch_create_with_notifications_button_summary_off">Erstellen-Button ist nicht mit Benachrichtigungs-Button getauscht</string>
<string name="revanced_hide_navigation_button_labels_title">Navigationstastenbezeichnungen ausblenden</string>
<string name="revanced_hide_navigation_button_labels_summary_on">Labels sind ausgeblendet</string>
<string name="revanced_hide_navigation_button_labels_summary_off">Labels werden angezeigt</string>
</patch>
<patch id="layout.hide.player.flyoutmenupanel.hidePlayerFlyoutMenuPatch">
<string name="revanced_hide_player_flyout_title">Flyout menu</string>
<string name="revanced_hide_player_flyout_title">Einblendmenü</string>
<string name="revanced_hide_player_flyout_summary">Verstecke oder zeige Player-Flyout-Menüeinträge</string>
<!-- 'Captions' should be translated using the same localized wording YouTube displays for the menu item. -->
<string name="revanced_hide_player_flyout_captions_title">Bildunterschriften ausblenden</string>
@@ -710,6 +725,11 @@ This is because Crowdin requires temporarily flattening this file and removing t
<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.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>
<string name="revanced_open_videos_fullscreen_portrait_summary_off">Videos öffnen nicht Vollbild</string>
</patch>
<patch id="layout.player.overlay.customPlayerOverlayOpacityResourcePatch">
<string name="revanced_player_overlay_opacity_title">Spieler-Überlagerung Deckkraft</string>
<string name="revanced_player_overlay_opacity_summary">Deckkraft Wert zwischen 0-100, wobei 0 transparent ist</string>
@@ -727,7 +747,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_ryd_enable_summary_off">Dislikes werden nicht angezeigt</string>
<string name="revanced_ryd_shorts_title">Dislikes auf Shorts anzeigen</string>
<string name="revanced_ryd_shorts_summary_on">Dislikes auf Shorts angezeigt</string>
<string name="revanced_ryd_shorts_summary_on_disclaimer">Dislikes in Shorts\n\nLimitation: Dislikes können nicht im Inkognito-Modus angezeigt werden</string>
<string name="revanced_ryd_shorts_summary_on_disclaimer">"Dislikes werden in Shorts angezeigt
Einschränkung: Dislikes werden möglicherweise nicht im Inkognito-Modus angezeigt"</string>
<string name="revanced_ryd_shorts_summary_off">Dislikes auf Shorts ausgeblendet</string>
<string name="revanced_ryd_dislike_percentage_title">Ablehnt als Prozentsatz</string>
<string name="revanced_ryd_dislike_percentage_summary_on">Dislikes als Prozentsatz angezeigt</string>
@@ -770,7 +792,11 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_seekbar_thumbnails_high_quality_summary_off">Thumbnails in der Suchleiste sind mittlere Qualität</string>
<string name="revanced_seekbar_thumbnails_high_quality_legacy_summary_on">Thumbnails in der Suchleiste sind qualitativ hochwertig</string>
<string name="revanced_seekbar_thumbnails_high_quality_legacy_summary_off">Thumbnails in der Suchleiste sind mittlere Qualität</string>
<string name="revanced_seekbar_thumbnails_high_quality_dialog_message">Dadurch werden auch Thumbnails auf Livestreams wiederhergestellt, die keine Suchleisten-Thumbnails haben.\n\nSuchleisten-Thumbnails verwenden die gleiche Qualität wie das aktuelle Video.\n\nDiese Funktion funktioniert am besten mit einer Videoqualität von 720p oder niedriger und bei einer sehr schnellen Internetverbindung.</string>
<string name="revanced_seekbar_thumbnails_high_quality_dialog_message">"Dadurch werden auch Miniaturansichten in Livestreams wiederhergestellt, die keine Miniaturansichten mit Suchleiste haben.
Miniaturansichten mit Suchleiste verwenden die gleiche Qualität wie das aktuelle Video.
Diese Funktion funktioniert am besten mit einer Videoqualität von 720p oder niedriger und bei Verwendung einer sehr schnellen Internetverbindung."</string>
<string name="revanced_restore_old_seekbar_thumbnails_title">Alte Suchleisten-Thumbnails wiederherstellen</string>
<string name="revanced_restore_old_seekbar_thumbnails_summary_on">Suchleisten-Thumbnails werden über der Suchleiste angezeigt</string>
<string name="revanced_restore_old_seekbar_thumbnails_summary_off">Miniaturansichten werden im Vollbild angezeigt</string>
@@ -833,7 +859,10 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_sb_settings_import_successful">Einstellungen erfolgreich importiert</string>
<string name="revanced_sb_settings_import_failed">Import fehlgeschlagen: %s</string>
<string name="revanced_sb_settings_export_failed">Export fehlgeschlagen: %s</string>
<string name="revanced_sb_settings_revanced_export_user_id_warning">Ihre Einstellungen enthalten einen privaten SponsorBlock Benutzer.\n\nIhre Benutzer-ID ist wie ein Passwort und sollte nie geteilt werden.\n</string>
<string name="revanced_sb_settings_revanced_export_user_id_warning">"Ihre Einstellungen enthalten eine private SponsorBlock-Benutzer-ID.
Ihre Benutzer-ID ist wie ein Passwort und sollte niemals weitergegeben werden.
"</string>
<string name="revanced_sb_settings_revanced_export_user_id_warning_dismiss">Nicht wieder anzeigen</string>
<string name="revanced_sb_diff_segments">Segmentverhalten ändern</string>
<string name="revanced_sb_segments_sponsor">Sponsor</string>
@@ -863,7 +892,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_sb_skip_button_intro_beginning">Einleitung überspringen</string>
<string name="revanced_sb_skip_button_intro_middle">Unterbrechung überspringen</string>
<string name="revanced_sb_skip_button_intro_end">Unterbrechung überspringen</string>
<string name="revanced_sb_skip_button_outro">Skip outro</string>
<string name="revanced_sb_skip_button_outro">Überspringen</string>
<string name="revanced_sb_skip_button_preview_beginning">Vorschau überspringen</string>
<string name="revanced_sb_skip_button_preview_middle">Vorschau überspringen</string>
<string name="revanced_sb_skip_button_preview_end">Rückfall überspringen</string>
@@ -893,9 +922,10 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_sb_submit_failed_invalid">Segment kann nicht gesendet werden: %s</string>
<string name="revanced_sb_submit_failed_timeout">SponsorBlock ist vorübergehend nicht verfügbar</string>
<string name="revanced_sb_submit_failed_unknown_error">Segment kann nicht gesendet werden (Status: %1$d %2$s)</string>
<string name="revanced_sb_submit_failed_rate_limit">Segment kann nicht gesendet werden.\nRate limitiert (zu viele von demselben Benutzer oder IP)</string>
<string name="revanced_sb_submit_failed_rate_limit">Segment kann nicht übermittelt werden. Rate Limited (zu viele vom selben Benutzer oder der gleichen IP)</string>
<string name="revanced_sb_submit_failed_forbidden">Das Segment kann nicht gesendet werden: %s</string>
<string name="revanced_sb_submit_failed_duplicate">Segment kann nicht abgesendet werden. \nBereits vorhanden</string>
<string name="revanced_sb_submit_failed_duplicate">"Segment kann nicht übermittelt werden.
Existiert bereits"</string>
<string name="revanced_sb_submit_succeeded">Segment erfolgreich übertragen</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. -->
<string name="revanced_sb_sponsorblock_connection_failure_timeout">SponsorBlock vorübergehend nicht verfügbar (API Timeout)</string>
@@ -918,7 +948,15 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_sb_new_segment_time_start">Das Segiment beginnt ab</string>
<string name="revanced_sb_new_segment_time_end">Das Segiment endet bei</string>
<string name="revanced_sb_new_segment_confirm_title">Sind diese Zeiten richtig?</string>
<string name="revanced_sb_new_segment_confirm_content">Das Segment ist von\n\n\n%1$s\nbis\n%2$s\n\n(%3$s)\n\nBereit zum Absenden?</string>
<string name="revanced_sb_new_segment_confirm_content">"Das Segment ist von
%1$s
nach
%2$s
(%3$s)
Bereit zum Einreichen?"</string>
<string name="revanced_sb_new_segment_start_is_before_end">Start muss vor dem Ende sein</string>
<string name="revanced_sb_new_segment_mark_locations_first">Markieren sie zuerst zwei Punkte auf der Zeitleiste</string>
<string name="revanced_sb_new_segment_preview_segment_first">Vorschau des Segments und sorgt dafür, dass es reibungslos überspringt</string>
@@ -960,7 +998,11 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_spoof_app_version_title">Spoof-App-Version</string>
<string name="revanced_spoof_app_version_summary_on">Version gefälscht</string>
<string name="revanced_spoof_app_version_summary_off">Version nicht gefälscht</string>
<string name="revanced_spoof_app_version_user_dialog_message">Die App-Version wird auf eine ältere Version von YouTube gefälscht.\n\nDies ändert das Aussehen und die Funktionen der App, aber es können unbekannte Nebeneffekte auftreten.\n\nWenn später ausgeschaltet ist, wird empfohlen, die App-Daten zu löschen, um UI-Fehler zu vermeiden.</string>
<string name="revanced_spoof_app_version_user_dialog_message">"Die App-Version wird zu einer älteren Version von YouTube gefälscht.
Dadurch ändert sich das Erscheinungsbild und die Funktionen der App, es können jedoch unbekannte Nebeneffekte auftreten.
Wenn Sie die Funktion später deaktivieren, wird empfohlen, die App-Daten zu löschen, um UI-Fehler zu vermeiden."</string>
<!-- 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 -->
<string name="revanced_spoof_app_version_target_title">Spoof-App-Versionsziel</string>
@@ -995,7 +1037,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_disable_resuming_shorts_player_summary_off">Shorts-Player wird beim Start der App fortgesetzt</string>
</patch>
<patch id="layout.shortsautoplay.shortsAutoplayPatch">
<string name="revanced_shorts_autoplay_title">Autoplay Shorts</string>
<string name="revanced_shorts_autoplay_title">Shorts automatisch abspielen</string>
<string name="revanced_shorts_autoplay_summary_on">Shorts werden autoplay</string>
<string name="revanced_shorts_autoplay_summary_off">Shorts wiederholen</string>
<string name="revanced_shorts_autoplay_background_title">Autoplay Shorts Hintergrund spielen</string>
@@ -1009,11 +1051,10 @@ This is because Crowdin requires temporarily flattening this file and removing t
<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_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>
<string name="revanced_miniplayer_type_entry_1">Original</string>
<string name="revanced_miniplayer_type_entry_1">Standard</string>
<string name="revanced_miniplayer_type_entry_2">Minimal</string>
<string name="revanced_miniplayer_type_entry_3">Tablets</string>
<string name="revanced_miniplayer_type_entry_4">Modern 1</string>
@@ -1023,19 +1064,28 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_miniplayer_rounded_corners_summary_on">Ecken sind abgerundet</string>
<string name="revanced_miniplayer_rounded_corners_summary_off">Ecken sind Quadrat</string>
<string name="revanced_miniplayer_double_tap_action_title">Aktiviere doppeltes Tippen und Pratzen um die Größe zu ändern</string>
<string name="revanced_miniplayer_double_tap_action_summary_on">Doppeltipp-Aktion und Pinsel, um die Größe zu verändern, ist aktiviert\n\n• Doppeltippen, um die Größe des Miniplayers\nzu erhöhenformat@@2 • Doppeltippen erneut, um die Originalgröße wiederherzustellen</string>
<string name="revanced_miniplayer_double_tap_action_summary_on">"Doppeltippen und mit zwei Fingern vergrößern/verkleinern ist aktiviert
• Doppeltippen, um die Größe des Mini-Players zu vergrößern
• Nochmals doppeltippen, um die ursprüngliche Größe wiederherzustellen"</string>
<string name="revanced_miniplayer_double_tap_action_summary_off">Doppel-Tipp-Aktion und Pinch um die Größe zu verändern, ist deaktiviert</string>
<string name="revanced_miniplayer_drag_and_drop_title">Drag and Drop aktivieren</string>
<string name="revanced_miniplayer_drag_and_drop_summary_on">Drag and Drop ist aktiviert\n\nMiniplayer kann in jede Ecke des Bildschirms gezogen werden</string>
<string name="revanced_miniplayer_drag_and_drop_summary_on">"Drag-and-Drop ist aktiviert
Der Mini-Player kann in jede Ecke des Bildschirms gezogen werden"</string>
<string name="revanced_miniplayer_drag_and_drop_summary_off">Drag and Drop ist deaktiviert</string>
<string name="revanced_miniplayer_horizontal_drag_title">Horizontales Ziehen aktivieren</string>
<string name="revanced_miniplayer_horizontal_drag_summary_on">Horizontale Drag Geste aktiviert\n\nMiniplayer kann vom Bildschirm nach links oder rechts gezogen werden</string>
<string name="revanced_miniplayer_horizontal_drag_summary_on">"Horizontale Ziehgeste aktiviert
Der Mini-Player kann mit einer Wischgeste vom Bildschirm nach links oder rechts gezogen werden"</string>
<string name="revanced_miniplayer_horizontal_drag_summary_off">Horizontale Drag Geste deaktiviert</string>
<string name="revanced_miniplayer_hide_expand_close_title">Schließen-Button ausblenden</string>
<string name="revanced_miniplayer_hide_expand_close_summary_on">Schließen-Button ist ausgeblendet</string>
<string name="revanced_miniplayer_hide_expand_close_summary_off">Schließen-Schaltfläche wird angezeigt</string>
<string name="revanced_miniplayer_hide_expand_close_legacy_title">Ausklappen und Schließen der Tasten ausblenden</string>
<string name="revanced_miniplayer_hide_expand_close_legacy_summary_on">Tasten sind ausgeblendet\n\nWischen um zu erweitern oder zu schließen</string>
<string name="revanced_miniplayer_hide_expand_close_legacy_summary_on">"Schaltflächen sind ausgeblendet
Wischen Sie, um zu erweitern oder zu schließen"</string>
<string name="revanced_miniplayer_hide_expand_close_legacy_summary_off">Erweitern und Schließen Tasten werden angezeigt</string>
<string name="revanced_miniplayer_hide_subtext_title">Untertexte ausblenden</string>
<string name="revanced_miniplayer_hide_subtext_summary_on">Subtexte sind ausgeblendet</string>
@@ -1066,7 +1116,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
<patch id="layout.thumbnails.bypassImageRegionRestrictionsPatch">
<string name="revanced_bypass_image_region_restrictions_title">Bildgebietsbeschränkungen umgehen</string>
<string name="revanced_bypass_image_region_restrictions_summary_on">Bild-Host yt4.ggpht.com verwenden</string>
<string name="revanced_bypass_image_region_restrictions_summary_off">Verwendung des ursprünglichen Bild-Hosts\n\nAktivieren kann fehlende Bilder beheben, die in einigen Regionen blockiert werden</string>
<string name="revanced_bypass_image_region_restrictions_summary_off">"Ursprünglicher Bildhost wird verwendet
Durch Aktivieren dieser Option können fehlende Bilder behoben werden, die in einigen Regionen blockiert sind"</string>
</patch>
<patch id="layout.thumbnails.alternativeThumbnailsPatch">
<!-- 'Home' should be translated using the same localized wording YouTube displays for the home tab. -->
@@ -1077,15 +1129,19 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_alt_thumbnail_library_title">Tab</string>
<string name="revanced_alt_thumbnail_player_title">Playlisten, Empfehlungen</string>
<string name="revanced_alt_thumbnail_search_title">Suchergebnisse</string>
<string name="revanced_alt_thumbnail_options_entry_1">Original thumbnails</string>
<string name="revanced_alt_thumbnail_options_entry_1">Original-Miniaturansichten</string>
<string name="revanced_alt_thumbnail_options_entry_2">Pfeil &amp; Original-Miniaturansichten</string>
<string name="revanced_alt_thumbnail_options_entry_3">Pfeil &amp; immer noch erfasst</string>
<string name="revanced_alt_thumbnail_options_entry_4">Noch Aufnahmen</string>
<string name="revanced_alt_thumbnail_dearrow_about_summary">DeArrow bietet Crowd-sourced Thumbnails für YouTube-Videos an. Diese Vorschaubilder sind oft relevanter als die von YouTube.\n\nWenn aktiviert, werden Video-URLs an den API-Server gesendet und keine anderen Daten. Wenn ein Video keine DeArrow Thumbnails hat, dann wird das Original benutzt\n\nTippe hier, um mehr über DeArrow zu erfahren</string>
<string name="revanced_alt_thumbnail_dearrow_about_summary">"DeArrow bietet von der Community bereitgestellte Miniaturansichten für YouTube-Videos. Diese Miniaturansichten sind oft relevanter als die von YouTube bereitgestellten.
Wenn diese Option aktiviert ist, werden Video-URLs an den API-Server gesendet und keine anderen Daten werden gesendet. Wenn ein Video keine DeArrow-Miniaturansichten hat, werden die Original- oder Still-Captures angezeigt.
Tippen Sie hier, um mehr über DeArrow zu erfahren"</string>
<string name="revanced_alt_thumbnail_dearrow_connection_toast_title">Einen Toast anzeigen, wenn die API nicht verfügbar ist</string>
<string name="revanced_alt_thumbnail_dearrow_connection_toast_summary_on">Toast wird angezeigt, wenn der Pfeil nicht verfügbar ist</string>
<string name="revanced_alt_thumbnail_dearrow_connection_toast_summary_off">Toast wird nicht angezeigt, wenn der Pfeil nicht verfügbar ist</string>
<string name="revanced_alt_thumbnail_dearrow_api_url_title">DeArrow API endpoint</string>
<string name="revanced_alt_thumbnail_dearrow_api_url_title">DeArrow API-Endpunkt</string>
<string name="revanced_alt_thumbnail_dearrow_api_url_summary">Die URL des Cache Endpunkts der DeArrow Thumbnails</string>
<string name="revanced_alt_thumbnail_stills_about_title">Noch Videoaufnahmen</string>
<string name="revanced_alt_thumbnail_stills_about_summary">Die Aufnahmen werden immer noch von Anfang an / Mitte / Ende jedes Videos übernommen. Diese Bilder sind in YouTube eingebaut und es wird keine externe API verwendet</string>
@@ -1120,8 +1176,12 @@ This is because Crowdin requires temporarily flattening this file and removing t
</patch>
<patch id="misc.dimensions.spoof.spoofDeviceDimensionsPatch">
<string name="revanced_spoof_device_dimensions_title">Spoof-Gerätegröße</string>
<string name="revanced_spoof_device_dimensions_summary_on">Die Dimensionen des Geräts wurden mit\n\nverschönert. Höhere Video-Qualitäten können freigeschaltet werden, aber es kann sein, dass Videowiedergabe stuttert, die Batterielebensdauer verschlechtert und unbekannte Nebeneffekte auftreten</string>
<string name="revanced_spoof_device_dimensions_summary_off">Gerätedimensionen nicht gefälscht\n\nAktivieren kann höhere Video-Qualitäten freischalten</string>
<string name="revanced_spoof_device_dimensions_summary_on">"Gerätemessungen gefälscht
Höhere Videoqualitäten können freigeschaltet werden, aber es kann zu Stottern bei der Videowiedergabe, kürzerer Akkulaufzeit und unbekannten Nebeneffekten kommen"</string>
<string name="revanced_spoof_device_dimensions_summary_off">"Gerätemessungen nicht gefälscht
Durch Aktivieren dieser Option können höhere Videoqualitäten freigeschaltet werden"</string>
<string name="revanced_spoof_device_dimensions_user_dialog_message">Aktivieren kann dazu führen, dass Videowiedergabe blockiert, die Batterielebensdauer verschlechtert und unbekannte Nebeneffekte entstehen.</string>
</patch>
<patch id="misc.gms.gmsCoreSupportResourcePatch">
@@ -1156,8 +1216,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_remember_video_quality_last_selected_summary_off">Qualitätsänderungen gelten nur für das aktuelle Video</string>
<string name="revanced_video_quality_default_wifi_title">Standard-Videoqualität im Wi-Fi-Netzwerk</string>
<string name="revanced_video_quality_default_mobile_title">Standard-Videoqualität im Mobilfunknetz</string>
<string name="revanced_remember_video_quality_mobile">mobile</string>
<string name="revanced_remember_video_quality_wifi">wifi</string>
<string name="revanced_remember_video_quality_mobile">Mobile</string>
<string name="revanced_remember_video_quality_toast">Standard %1$s Qualität geändert zu: %2$s</string>
</patch>
<patch id="video.speed.button.playbackSpeedButtonPatch">
@@ -1171,8 +1230,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_custom_speed_menu_summary_off">Benutzerdefiniertes Geschwindigkeitsmenü wird nicht angezeigt</string>
<string name="revanced_custom_playback_speeds_title">Benutzerdefinierte Wiedergabegeschwindigkeiten</string>
<string name="revanced_custom_playback_speeds_summary">Hinzufügen oder Ändern der benutzerdefinierten Wiedergabegeschwindigkeit</string>
<string name="revanced_custom_playback_speeds_invalid">Benutzerdefinierte Geschwindigkeiten müssen kleiner als %ssein. Standardwerte werden verwendet.</string>
<string name="revanced_custom_playback_speeds_parse_exception">Ungültige benutzerdefinierte Wiedergabegeschwindigkeiten. Standardwerte verwenden.</string>
<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">Auto</string>
</patch>
<patch id="video.speed.remember.rememberPlaybackSpeedPatch">
@@ -1197,18 +1256,79 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_spoof_video_streams_screen_summary">Spoof der Client-Videostreams um Wiedergabeprobleme zu verhindern</string>
<string name="revanced_spoof_video_streams_title">Spoof-Video-Streams</string>
<string name="revanced_spoof_video_streams_summary_on">Video-Streams sind gefälscht</string>
<string name="revanced_spoof_video_streams_summary_off">Video-Streams sind nicht gefälscht\n\nVideo-Wiedergabe funktioniert möglicherweise nicht</string>
<string name="revanced_spoof_video_streams_summary_off">"Videoströme werden nicht gefälscht
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_title">Standard-Client</string>
<string name="revanced_spoof_video_streams_ios_force_avc_title">AVC erzwingen (H.264)</string>
<string name="revanced_spoof_video_streams_ios_force_avc_summary_on">Video Codec ist AVC (H.264)</string>
<string name="revanced_spoof_video_streams_ios_force_avc_summary_off">Video Codec ist VP9 oder AV1</string>
<string name="revanced_spoof_video_streams_ios_force_avc_no_hardware_vp9_summary_on">Ihr Gerät hat keine VP9-Hardware-Dekodierung, und diese Einstellung ist immer aktiviert, wenn Client-Spoofing aktiviert ist</string>
<string name="revanced_spoof_video_streams_ios_force_avc_user_dialog_message">Das Aktivieren kann die Akkulaufzeit verbessern und die Wiedergabe-Stutting beheben.\n\nAVC hat eine maximale Auflösung von 1080p, und die Videowiedergabe wird mehr Internet-Daten als VP9 oder AV1 verwenden.</string>
<string name="revanced_spoof_video_streams_ios_force_avc_summary_on">Video-Codec ist zu AVC gezwungen (H.264)</string>
<string name="revanced_spoof_video_streams_ios_force_avc_summary_off">Video-Codec wird automatisch bestimmt</string>
<string name="revanced_spoof_video_streams_ios_force_avc_user_dialog_message">"Dadurch kann die Akkulaufzeit verbessert und Stottern bei der Wiedergabe behoben werden.
AVC hat eine maximale Auflösung von 1080p, der 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_title">iOS Spoofing Nebeneffekte</string>
<string name="revanced_spoof_video_streams_about_ios_summary">Videos für Privatkinder dürfen nicht\nabspielen • Livestreams beginnen von Anfang an\n• Videos können 1 Sekunde früher\n• Kein opus Audio Codec</string>
<string name="revanced_spoof_video_streams_about_ios_summary">"Private Kindervideos werden möglicherweise nicht abgespielt
• Livestreams starten von Anfang an
• Videos enden 1 Sekunde früher"</string>
<string name="revanced_spoof_video_streams_about_android_vr_title">Android VR Spoofing Nebeneffekte</string>
<string name="revanced_spoof_video_streams_about_android_vr_summary">• Kindervideos dürfen nicht\nabspielen • Audiospurmenü fehlt\n• Stabile Lautstärke ist nicht verfügbar</string>
<string name="revanced_spoof_video_streams_about_android_vr_summary">"• Kindervideos werden möglicherweise nicht abgespielt
• Livestreams starten von Anfang an
• Videos enden 1 Sekunde früher"</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">Kazakh</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">Burmese</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">Punjabi</string>
<string name="revanced_spoof_video_streams_language_PL">Polnisch</string>
<string name="revanced_spoof_video_streams_language_PT_BR">Portugiesisch (Brasilien)</string>
<string name="revanced_spoof_video_streams_language_PT_PT">Portugiesisch (Portugal)</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">Slovene</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">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">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">Vietnamese</string>
<string name="revanced_spoof_video_streams_language_ZH">Chinesisch</string>
</patch>
</app>
<app id="twitch">
@@ -1218,8 +1338,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_block_audio_ads_summary_off">Audiowerbung ist entsperrt</string>
</patch>
<patch id="ad.embedded.embeddedAdsPatch">
<string name="revanced_embedded_ads_service_unavailable">%s ist nicht verfügbar. Ads könnten angezeigt werden. Versuche einem anderen Adblock-Dienst.</string>
<string name="revanced_embedded_ads_service_failed">Der %s Server hat einen Fehler zurückgegeben. Ads könnten angezeigt werden. Versuche einen anderen Adblock-Dienst.</string>
<string name="revanced_embedded_ads_service_unavailable">%s nicht verfügbar, Werbung wird möglicherweise angezeigt. Versuchen Sie, den Werbesperrdienst in den Einstellungen zu ändern.</string>
<string name="revanced_embedded_ads_service_failed">%s hat einen Fehler zurückgegeben, Werbung wird möglicherweise angezeigt. Versuchen Sie, den Werbesperrdienst in den Einstellungen zu ändern.</string>
<string name="revanced_block_embedded_ads_title">Blockiere eingebettete Video-Anzeigen</string>
<string name="revanced_block_embedded_ads_entry_1">Deaktiviert</string>
<string name="revanced_block_embedded_ads_entry_2">Leuchtender Proxy</string>

View File

@@ -1,34 +1,23 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Note: All strings must have a unique path, even if the same string is declared in two different apps.
This is because Crowdin requires temporarily flattening this file and removing the <app> and <patch> elements.
All strings must have a unique path, even if the same string is declared in two different apps.
This is because Crowdin requires temporarily flattening this file and removing the <app> and <patch> elements.
# General guidelines and information for translating
## Strings parameters can be reordered to allow more flexible translations if the grammar should be changed.
Strings with new lines must be raw strings where they're wrapped in quotes and new lines are not encoded.
Raw strings still requires escaping embedded double quotes but escaping embedded single quotes is optional.
For example, the patches string:
<string name="revanced_patches_string">You will arrive at %1$s in %2$s hours from now</string>
Could be translated to another language using a rearranged grammar:
<string name="revanced_patches_string">You will arrive %2$s hours from now at %1$s</string>
Raw strings are required because Crowdin AI translations regularly gets confused and
replace \n with an encoded new line character.
For Manager strings:
You will arrive at ${destination} in ${count} hours from now
Could be rearranged by changing the order of the ${} parameters:
You will arrive ${count} hours from now at ${destination}
Bad:
<string name="summary_key">First \'item\' text\nSecond \"item\" text</string>
Reordering is particularly relevant when translating into right to left languages, or for any language with grammar that is noticeably different from English.
Good:
<string name="summary_key">"First 'item' text
Second \"item\" text"</string>
## Single and double quotation marks must be escaped for patch strings (Manager does not require escaping any quotes).
All _patches_ single and double quotation marks must be escaped as \" or \'
Forgetting to do this will cause that string to appear in app with no quotation characters.
Correct:
<string name="revanced_string">You\'re correct. This is the \"correct\" way and this text will appear as expected in the app</string>
Not correct:
<string name="revanced_string">You're not correct. This is not the "correct" way and this text will not appear as expected the in app</string>
-->
<resources>
<app id="shared">
@@ -36,7 +25,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
<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">&lt;h5&gt;Αυτή η εφαρμογή δεν φαίνεται να έχει τροποποιηθεί από εσάς.&lt;/h5&gt;&lt;br&gt;Αυτή η εφαρμογή μπορεί να μην λειτουργεί σωστά, &lt;b&gt;θα μπορούσε να είναι επιβλαβής ή ακόμα και επικίνδυνη για χρήση&lt;/b&gt;.&lt;br&gt;&lt;br&gt;Αυτοί οι έλεγχοι υποδηλώνουν ότι αυτή η εφαρμογή έχει τροποποιηθεί στο παρελθόν ή λήφθηκε από κάποιον άλλο:&lt;br&gt;&lt;br&gt;&lt;small&gt;%1$s&lt;/small&gt;&lt;br&gt;Συνιστάται έντονα να απεγκαταστήσετε την εφαρμογή &lt;br&gt;και να την τροποποιήσετε μόνοι σας&lt;br&gt; για να διασφαλίσετε ότι χρησιμοποιείτε μια επικυρωμένη και ασφαλή εφαρμογή.&lt;p&gt;&lt;br&gt;Εάν αγνοηθεί, αυτή η προειδοποίηση θα εμφανιστεί μόνο δύο φορές.</string>
<string name="revanced_check_environment_failed_message">&lt;h5&gt;Αυτή η εφαρμογή δεν φαίνεται να έχει τροποποιηθεί από εσάς.&lt;/h5&gt;&lt;br&gt;Η εφαρμογή μπορεί να μη λειτουργεί σωστά, &lt;b&gt;θα μπορούσε να είναι επιβλαβής ή ακόμα και επικίνδυνη για χρήση&lt;/b&gt;.&lt;br&gt;&lt;br&gt;Αυτοί οι έλεγχοι υποδηλώνουν ότι αυτή η εφαρμογή έχει τροποποιηθεί στο παρελθόν ή λήφθηκε από κάποιον άλλο:&lt;br&gt;&lt;br&gt;&lt;small&gt;%1$s&lt;/small&gt;&lt;br&gt;Συνιστάται έντονα να απεγκαταστήσετε την εφαρμογή &lt;br&gt;και να την τροποποιήσετε μόνοι σας&lt;br&gt; για να διασφαλίσετε ότι χρησιμοποιείτε μια επικυρωμένη και ασφαλή εφαρμογή.&lt;p&gt;&lt;br&gt;Εάν αγνοηθεί, αυτή η προειδοποίηση θα εμφανιστεί μόνο δύο φορές.</string>
<string name="revanced_check_environment_not_same_patching_device">Τροποποιήθηκε σε διαφορετική συσκευή</string>
<string name="revanced_check_environment_manager_not_expected_installer">Δεν έχει εγκατασταθεί μέσω του ReVanced Manager</string>
<string name="revanced_check_environment_not_near_patch_time">Τροποποιήθηκε πάνω από 10 λεπτά πριν</string>
@@ -67,9 +56,17 @@ This is because Crowdin requires temporarily flattening this file and removing t
<!-- 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 δεν έχει εγκατασταθεί. Εγκαταστήστε το.</string>
<string name="gms_core_dialog_title">Απαιτείται ενέργεια</string>
<string name="gms_core_dialog_not_whitelisted_not_allowed_in_background_message">Το MicroG GmsCore δεν έχει άδεια να τρέξει στο παρασκήνιο.\n\nΑκολουθήστε τον οδηγό \"Don\'t kill my app\" για το τηλέφωνό σας και εφαρμόστε τις οδηγίες στο MicroG.\n\nΑυτό απαιτείται για να λειτουργήσει η εφαρμογή.</string>
<string name="gms_core_dialog_not_whitelisted_not_allowed_in_background_message">"Το MicroG GmsCore δεν έχει άδεια να εκτελείται στο παρασκήνιο.
Ακολουθήστε τον οδηγό \"Don't kill my app\" για το τηλέφωνό σας και εφαρμόστε τις οδηγίες στο MicroG.
Αυτό είναι απαραίτητο για τη λειτουργία της εφαρμογής."</string>
<string name="gms_core_dialog_open_website_text">Άνοιγμα ιστοσελίδας</string>
<string name="gms_core_dialog_not_whitelisted_using_battery_optimizations_message">Οι βελτιστοποιήσεις μπαταρίας στο MicroG GmsCore πρέπει να απενεργοποιηθούν για την αποφυγή προβλημάτων.\n\nΠατήστε το κουμπί «Συνέχεια» και απενεργοποιήστε τις βελτιστοποιήσεις μπαταρίας για το MicroG.</string>
<string name="gms_core_dialog_not_whitelisted_using_battery_optimizations_message">"Οι βελτιστοποιήσεις μπαταρίας πρέπει να απενεργοποιηθούν για το MicroG GmsCore ώστε να αποφευχθούν προβλήματα.
Η απενεργοποίηση των βελτιστοποιήσεων μπαταρίας για το MicroG δεν θα επηρεάσει αρνητικά τη χρήση της μπαταρίας.
Πατήστε το κουμπί «Συνέχεια» και επιτρέψτε τις αλλαγές βελτιστοποίησης."</string>
<string name="gms_core_dialog_continue_text">Συνέχεια</string>
</patch>
</app>
@@ -106,7 +103,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_debug_toast_on_error_title">Εμφάνιση μηνυμάτων σφαλμάτων ReVanced</string>
<string name="revanced_debug_toast_on_error_summary_on">Να εμφανίζεται μήνυμα στο κάτω μέρος της οθόνης σε περιπτώσεις σφαλμάτων</string>
<string name="revanced_debug_toast_on_error_summary_off">Να μην εμφανίζεται μήνυμα στο κάτω μέρος της οθόνης σε περιπτώσεις σφαλμάτων</string>
<string name="revanced_debug_toast_on_error_user_dialog_message">Η απενεργοποίηση των μηνυμάτων σφαλμάτων κρύβει όλες τις ειδοποιήσεις σφαλμάτων που αφορούν το ReVanced.\n\nΔεν θα ειδοποιήστε για τυχόν απρόβλεπτα γεγονότα.</string>
<string name="revanced_debug_toast_on_error_user_dialog_message">"Η απενεργοποίηση των μηνυμάτων σφαλμάτων κρύβει όλες τις ειδοποιήσεις σφαλμάτων που αφορούν το ReVanced.
Δεν θα ειδοποιηθείτε για τυχόν απρόβλεπτα γεγονότα."</string>
</patch>
<patch id="layout.hide.general.hideLayoutComponentsPatch">
<string name="revanced_disable_like_subscribe_glow_title">Απενεργοποίηση λάμψης των κουμπιών «Μου αρέσει» και «Εγγραφή»</string>
@@ -125,7 +124,14 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_channel_watermark_summary_on">Κρυμμένο</string>
<string name="revanced_hide_channel_watermark_summary_off">Εμφανίζεται</string>
<string name="revanced_hide_horizontal_shelves_title">Οριζόντιες ενότητες προτάσεων</string>
<string name="revanced_hide_horizontal_shelves_summary_on">Οι ενότητες προτάσεων όπως:\n• Έκτακτη είδηση\n• Συνέχεια παρακολούθησης\n• Εξερευνήστε περισσότερα κανάλια\n• Αγορές\n•Παρακολουθήστε ξανά\nείναι κρυμμένες</string>
<string name="revanced_hide_horizontal_shelves_summary_on">"Κρυμμένες
Αφορά τις ενότητες προτάσεων όπως:
• Έκτακτη είδηση
• Συνέχεια παρακολούθησης
• Εξερευνήστε περισσότερα κανάλια
• Αγορές
• Παρακολουθήστε ξανά"</string>
<string name="revanced_hide_horizontal_shelves_summary_off">Εμφανίζονται</string>
<!-- 'Join' should be translated using the same localized wording YouTube displays.
This appears in the video player for certain videos. -->
@@ -202,7 +208,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_playables_summary_on">Κρυμμένα</string>
<string name="revanced_hide_playables_summary_off">Εμφανίζονται</string>
<string name="revanced_hide_quick_actions_title">Γρήγορες ενέργειες σε πλήρη οθόνη</string>
<string name="revanced_hide_quick_actions_summary_on">Κρυμμένες</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>
@@ -252,6 +258,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_filter_bar_feed_in_related_videos_summary_off">Εμφανίζεται</string>
<string name="revanced_comments_screen_title">Σχόλια</string>
<string name="revanced_comments_screen_summary">Απόκρυψη ή εμφάνιση στοιχείων στα σχόλια</string>
<string name="revanced_hide_comments_chat_summary_title">Σύνοψη συνομιλίας</string>
<string name="revanced_hide_comments_chat_summary_summary_on">Κρυμμένη</string>
<string name="revanced_hide_comments_chat_summary_summary_off">Εμφανίζεται</string>
<string name="revanced_hide_comments_by_members_header_title">Ετικέτα «Σχόλια από μέλη»</string>
<string name="revanced_hide_comments_by_members_header_summary_on">Κρυμμένη</string>
<string name="revanced_hide_comments_by_members_header_summary_off">Εμφανίζεται</string>
@@ -274,7 +283,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_doodles_title">YouTube Doodles</string>
<string name="revanced_hide_doodles_summary_on">Κρυμμένα</string>
<string name="revanced_hide_doodles_summary_off">Εμφανίζονται</string>
<string name="revanced_hide_doodles_user_dialog_message">Τα YouTube Doodles εμφανίζονται για μερικές μέρες κάθε χρόνο.\n\nΑν ένα Doodle εμφανίζεται αυτόν τον καιρό στην περιοχή σας και η ρύθμιση απόκρυψης τους είναι ενεργοποιημένη, τότε η γραμμή φίλτρου κάτω από τη γραμμή αναζήτησης θα είναι επίσης κρυμμένη.</string>
<string name="revanced_hide_doodles_user_dialog_message">"Τα YouTube Doodles εμφανίζονται για μερικές μέρες κάθε χρόνο.
Αν ένα YouTube Doodle εμφανίζεται αυτή τη στιγμή στην περιοχή σας και αυτή η ρύθμιση είναι ενεργοποιημένη, τότε η γραμμή φίλτρων κάτω από τη γραμμή αναζήτησης θα είναι κρυμμένη επίσης."</string>
<string name="revanced_custom_filter_screen_title">Προσαρμοσμένο φίλτρο</string>
<string name="revanced_custom_filter_screen_summary">Απόκρυψη στοιχείων χρησιμοποιώντας προσαρμοσμένα φίλτρα</string>
<string name="revanced_custom_filter_title">Χρήση προσαρμοσμένου φίλτρου</string>
@@ -282,7 +293,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_custom_filter_summary_off">Το προσαρμοσμένο φίλτρο είναι απενεργοποιημένο</string>
<string name="revanced_custom_filter_strings_title">Προσαρμοσμένο φίλτρο</string>
<!-- 'Component path builder strings' is the technical name for identifying the Litho UI layout items to hide. This is an advanced feature and most users will never use this. -->
<string name="revanced_custom_filter_strings_summary">Λίστα από συμβολοσειρές στοιχείων για φιλτράρισμα, διαχωρισμένες η μία κάτω από την άλλη</string>
<string name="revanced_custom_filter_strings_summary">Λίστα από συμβολοσειρές στοιχείων για φιλτράρισμα, διαχωρισμένες σε νέες γραμμές</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>
@@ -298,9 +309,18 @@ This is because Crowdin requires temporarily flattening this file and removing t
<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. -->
<string name="revanced_hide_keyword_content_phrases_summary">Λέξεις-κλειδιά και φράσεις προς απόκρυψη, διαχωρισμένες η μία κάτω από την άλλη\n\nΛέξεις-κλειδιά μπορεί να είναι ονόματα καναλιών ή οποιοδήποτε κείμενο εμφανίζεται σε τίτλους βίντεο\n\nΔώστε προσοχή στα πεζά και κεφάλαια γράμματα διότι ισχύει ευαισθησία πεζότητας (π.χ.: iPhone, TikTok, LeBlanc)</string>
<string name="revanced_hide_keyword_content_phrases_summary">"Λέξεις-κλειδιά και φράσεις προς απόκρυψη, διαχωρισμένες σε νέες γραμμές
Οι λέξεις-κλειδιά μπορεί να είναι ονόματα καναλιών ή κείμενο που εμφανίζεται σε τίτλους των βίντεο
Οι λέξεις με κεφαλαία γράμματα στη μέση πρέπει να είναι ευαίσθητες στην πεζότητα (π.χ: iPhone, TikTok, LeBlanc)"</string>
<string name="revanced_hide_keyword_content_about_title">Σχετικά με το φιλτράρισμα λέξεων-κλειδιών</string>
<string name="revanced_hide_keyword_content_about_summary">Οι καρτέλες «Αρχική», «Εγγραφές» και τα αποτελέσματα αναζήτησης φιλτράρονται για απόκρυψη περιεχομένου που ταιριάζει με τις λέξεις-κλειδιά\n\nΠεριορισμοί\n• Τα Shorts δε γίνεται να κρυφτούν με βάση το όνομα καναλιού\n• Κάποια στοιχεία UI ενδέχεται να μην κρύβονται\n• Η αναζήτηση για μια λέξη-κλειδί ενδέχεται να μην εμφανίζει κανένα αποτέλεσμα</string>
<string name="revanced_hide_keyword_content_about_summary">"Οι καρτέλες «Αρχική», «Εγγραφές» και τα αποτελέσματα αναζήτησης φιλτράρονται για απόκρυψη περιεχομένου που ταιριάζει με τις λέξεις-κλειδιά
Περιορισμοί:
Τα Shorts δεν γίνεται να κρύβονται με βάση το όνομα καναλιού
• Κάποια στοιχεία UI ενδέχεται να μην κρύβονται
Η αναζήτηση για μια λέξη-κλειδί ενδέχεται να μην εμφανίζει κανένα αποτέλεσμα"</string>
<string name="revanced_hide_keyword_content_about_whole_words_title">Ταίριασμα ολόκληρων λέξεων</string>
<!-- Translations _must_ use a localized example. For languages that do not use spaces between words (Chinese, Japanese, etc) the English AI example should be used since no localized examples exist. Or if using machine translations, or if nobody wants to think of a localized example, then the English 'ai' example should be left as-is. -->
<string name="revanced_hide_keyword_content_about_whole_words_summary">Περιβάλλοντας μια λέξη-κλειδί / φράση με διπλά εισαγωγικά θα αποτρέψει μερικές αντιστοιχίες των τίτλων βίντεο και των ονομάτων καναλιών&lt;br&gt;&lt;br&gt;Για παράδειγμα,&lt;br&gt;&lt;b&gt;\"ai\"&lt;/b&gt; θα κρύψει το βίντεο: &lt;b&gt;How does AI work?&lt;/b&gt;&lt;br&gt;αλλά δεν θα κρύψει: &lt;b&gt;What does fair use mean?&lt;/b&gt;</string>
@@ -316,7 +336,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_general_ads_summary_on">Κρυμμένες</string>
<string name="revanced_hide_general_ads_summary_off">Εμφανίζονται</string>
<string name="revanced_hide_fullscreen_ads_title">Διαφημίσεις πλήρους οθόνης</string>
<string name="revanced_hide_fullscreen_ads_summary_on">Οι διαφημίσεις πλήρους οθόνης είναι κρυμμένες\n\nΑυτή η δυνατότητα είναι διαθέσιμη μόνο για παλαιότερες συσκευές</string>
<string name="revanced_hide_fullscreen_ads_summary_on">"Κρυμμένες
Αυτή η λειτουργία είναι διαθέσιμη μόνο για παλιότερες συσκευές"</string>
<string name="revanced_hide_fullscreen_ads_summary_off">Οι διαφημίσεις πλήρους οθόνης εμφανίζονται</string>
<string name="revanced_hide_buttoned_ads_title">Διαφημίσεις κουμπιών</string>
<string name="revanced_hide_buttoned_ads_summary_on">Κρυμμένες</string>
@@ -490,7 +512,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_subscriptions_button_summary_off">Εμφανίζεται</string>
<!-- 'Notifications' should be translated using the same localized wording YouTube displays the tab. -->
<string name="revanced_switch_create_with_notifications_button_title">Εναλλαγή κουμπιού «Δημιουργία» με κουμπί «Ειδοποιήσεις»</string>
<string name="revanced_switch_create_with_notifications_button_summary_on">Γίνεται εναλλαγή του κουμπιού δημιουργίας σε κουμπί ειδοποιήσεων\n\nΣημείωση: Ενεργοποιώντας την εναλλαγή θα κρύβονται και οι διαφημίσεις βίντεο</string>
<string name="revanced_switch_create_with_notifications_button_summary_on">"Γίνεται εναλλαγή θέσεων των κουμπιών «Δημιουργία» και «Ειδοποιήσεις»
Σημείωση: Η ενεργοποίηση αυτής της ρύθμισης εξαναγκάζει επίσης την απόκρυψη των διαφημίσεων βίντεο"</string>
<string name="revanced_switch_create_with_notifications_button_summary_off">Δε γίνεται εναλλαγή του κουμπιού δημιουργίας σε κουμπί ειδοποιήσεων</string>
<string name="revanced_hide_navigation_button_labels_title">Ονομασίες κουμπιών γραμμής πλοήγησης</string>
<string name="revanced_hide_navigation_button_labels_summary_on">Κρυμμένες</string>
@@ -692,7 +716,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_shorts_sound_button_summary_off">Εμφανίζεται</string>
<string name="revanced_hide_shorts_navigation_bar_title">Γραμμή πλοήγησης</string>
<string name="revanced_hide_shorts_navigation_bar_summary_on">Η γραμμή πλοήγησης θα είναι κρυμμένη κατά την αναπαραγωγή Shorts</string>
<string name="revanced_hide_shorts_navigation_bar_summary_off">Η γραμμή πλοήγησης θα εμφανίζεται κατά την αναπαραγωγή Shorts</string>
<string name="revanced_hide_shorts_navigation_bar_summary_off">Η γραμμή πλοήγησης εμφανίζεται κατά την αναπαραγωγή Shorts</string>
</patch>
<patch id="layout.hide.suggestedvideoendscreen.disableSuggestedVideoEndScreenResourcePatch">
<string name="revanced_disable_suggested_video_end_screen_title">Τελική οθόνη προτεινόμενων βίντεο</string>
@@ -709,6 +733,11 @@ This is because Crowdin requires temporarily flattening this file and removing t
<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.openVideosFullscreen">
<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>
<patch id="layout.player.overlay.customPlayerOverlayOpacityResourcePatch">
<string name="revanced_player_overlay_opacity_title">Αδιαφάνεια φόντου οθόνης αναπαραγωγής</string>
<string name="revanced_player_overlay_opacity_summary">Τιμή αδιαφάνειας μεταξύ 0-100, όπου το 0 είναι διαφανές</string>
@@ -726,7 +755,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
<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_summary_on_disclaimer">Τα «Δεν μου αρέσει» εμφανίζονται στα Shorts\n\nΠεριορισμός: Τα «Δεν μου αρέσει» ενδέχεται να μην εμφανίζονται σε λειτουργία ανώνυμης περιήγησης</string>
<string name="revanced_ryd_shorts_summary_on_disclaimer">"Τα «Δεν μου αρέσει» εμφανίζονται στα 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>
@@ -769,7 +800,11 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_seekbar_thumbnails_high_quality_summary_off">Οι μικρογραφίες της γραμμής προόδου είναι μέτριας ποιότητας</string>
<string name="revanced_seekbar_thumbnails_high_quality_legacy_summary_on">Οι μικρογραφίες πλήρους οθόνης της γραμμής προόδου είναι υψηλής ποιότητας</string>
<string name="revanced_seekbar_thumbnails_high_quality_legacy_summary_off">Οι μικρογραφίες πλήρους οθόνης της γραμμής προόδου είναι μέτριας ποιότητας</string>
<string name="revanced_seekbar_thumbnails_high_quality_dialog_message">Αυτό θα επαναφέρει επίσης τις μικρογραφίες σε ζωντανές μεταδόσεις που δεν έχουν μικρογραφίες γραμμής προόδου.\n\nΟι μικρογραφίες της γραμμής προόδου θα χρησιμοποιούν την ίδια ποιότητα με το τρέχον βίντεο.\n\nΑυτή η ρύθμιση λειτουργεί καλύτερα με ποιότητα βίντεο 720p ή χαμηλότερη και όταν χρησιμοποιείτε μια πολύ γρήγορη σύνδεση στο διαδίκτυο.</string>
<string name="revanced_seekbar_thumbnails_high_quality_dialog_message">"Αυτό θα επαναφέρει επίσης τις μικρογραφίες σε ζωντανές μεταδόσεις που δεν έχουν μικρογραφίες γραμμής προόδου.
Οι μικρογραφίες γραμμής αναζήτησης θα χρησιμοποιούν την ίδια ποιότητα με το τρέχον βίντεο.
Αυτή η δυνατότητα λειτουργεί καλύτερα με ποιότητα βίντεο 720p ή χαμηλότερη και όταν χρησιμοποιείται πολύ γρήγορη σύνδεση στο διαδίκτυο."</string>
<string name="revanced_restore_old_seekbar_thumbnails_title">Παλιές μικρογραφίες γραμμής προόδου</string>
<string name="revanced_restore_old_seekbar_thumbnails_summary_on">Οι μικρογραφίες προεπισκόπησης θα εμφανίζονται πάνω από τη γραμμή προόδου</string>
<string name="revanced_restore_old_seekbar_thumbnails_summary_off">Οι μικρογραφίες προεπισκόπησης θα εμφανίζονται σε πλήρη οθόνη</string>
@@ -832,7 +867,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_sb_settings_import_successful">Οι ρυθμίσεις εισήχθησαν επιτυχώς</string>
<string name="revanced_sb_settings_import_failed">Η εισαγωγή απέτυχε: %s</string>
<string name="revanced_sb_settings_export_failed">Η εξαγωγή απέτυχε: %s</string>
<string name="revanced_sb_settings_revanced_export_user_id_warning">Οι ρυθμίσεις σας περιέχουν ένα ιδιωτικό αναγνωριστικό χρήστη SponsorBlock.\n\nΑυτό είναι σαν έναν κωδικό πρόσβασης και δεν πρέπει ποτέ να το μοιραστείτε.\n</string>
<string name="revanced_sb_settings_revanced_export_user_id_warning">"Οι ρυθμίσεις σας περιέχουν ένα ιδιωτικό αναγνωριστικό χρήστη SponsorBlock.
Το αναγνωριστικό χρήστη σας είναι σαν κωδικός πρόσβασης και δεν πρέπει ποτέ να μοιράζεται."</string>
<string name="revanced_sb_settings_revanced_export_user_id_warning_dismiss">Να μην εμφανιστεί ξανά</string>
<string name="revanced_sb_diff_segments">Αλλαγή συμπεριφοράς τμημάτων</string>
<string name="revanced_sb_segments_sponsor">Χορηγός</string>
@@ -892,9 +929,10 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_sb_submit_failed_invalid">Αδυναμία υποβολής τμήματος: %s</string>
<string name="revanced_sb_submit_failed_timeout">Το SponsorBlock είναι προσωρινά εκτός λειτουργίας</string>
<string name="revanced_sb_submit_failed_unknown_error">Αδυναμία υποβολής τμήματος (κατάσταση: %1$d %2$s)</string>
<string name="revanced_sb_submit_failed_rate_limit">Αδυναμία υποβολής τμήματος.\nΌριο συχνότητας (πάρα πολλά από τον ίδιο χρήστη ή την ίδια IP)</string>
<string name="revanced_sb_submit_failed_rate_limit">Αδυναμία υποβολής τμήματος. Όριο Συχνότητας (πάρα πολλά από τον ίδιο χρήστη ή την IP)</string>
<string name="revanced_sb_submit_failed_forbidden">Αδυναμία υποβολής του τμήματος: %s</string>
<string name="revanced_sb_submit_failed_duplicate">Αδυναμία αποστολής του τμήματος.\nΥπάρχει ήδη</string>
<string name="revanced_sb_submit_failed_duplicate">"Δεν είναι δυνατή η υποβολή του τμήματος.
Υπάρχει ήδη"</string>
<string name="revanced_sb_submit_succeeded">Το τμήμα υποβλήθηκε επιτυχώς</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. -->
<string name="revanced_sb_sponsorblock_connection_failure_timeout">SponsorBlock προσωρινά μη διαθέσιμο (καθυστέρηση API)</string>
@@ -917,7 +955,15 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_sb_new_segment_time_start">Χρόνος έναρξης του τμήματος</string>
<string name="revanced_sb_new_segment_time_end">Χρόνος λήξης του τμήματος</string>
<string name="revanced_sb_new_segment_confirm_title">Είναι σωστοί οι χρόνοι;</string>
<string name="revanced_sb_new_segment_confirm_content">Το τμήμα είναι από\n\n%1$s\nσε\n%2$s\n\n(%3$s)\n\nΈτοιμο για υποβολή;</string>
<string name="revanced_sb_new_segment_confirm_content">"Το τμήμα είναι από το
%1$s
έως το
%2$s
(%3$s)
Είστε έτοιμοι για υποβολή;"</string>
<string name="revanced_sb_new_segment_start_is_before_end">Η αρχή πρέπει να είναι πριν από το τέλος</string>
<string name="revanced_sb_new_segment_mark_locations_first">Σημειώστε δύο σημεία στην γραμμή προόδου πρώτα</string>
<string name="revanced_sb_new_segment_preview_segment_first">Κάντε προεπισκόπηση του τμήματος, και σιγουρευτείτε ότι παραλείπεται σωστά</string>
@@ -959,7 +1005,11 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_spoof_app_version_title">Τροποποίηση έκδοσης εφαρμογής</string>
<string name="revanced_spoof_app_version_summary_on">Η έκδοση τροποποιείται</string>
<string name="revanced_spoof_app_version_summary_off">Η έκδοση δεν τροποποιείται</string>
<string name="revanced_spoof_app_version_user_dialog_message">Η έκδοση της εφαρμογής YouTube θα τροποποιηθεί σε παλιότερη.\n\nΑυτό θα αλλάξει την εμφάνιση και τα χαρακτηριστικά της εφαρμογής, αλλά ενδέχεται να εμφανιστούν άγνωστες παρενέργειες.\n\nΑν αργότερα απενεργοποιηθεί, συνιστάται η εκκαθάριση των δεδομένων της εφαρμογής για την αποφυγή σφαλμάτων UI.</string>
<string name="revanced_spoof_app_version_user_dialog_message">"Η έκδοση της εφαρμογής YouTube θα παραποιηθεί σε παλιότερη.
Αυτό θα αλλάξει την εμφάνιση και τα χαρακτηριστικά της εφαρμογής, αλλά ενδέχεται να εμφανιστούν άγνωστες παρενέργειες.
Αν αργότερα απενεργοποιηθεί, συνιστάται η εκκαθάριση δεδομένων της εφαρμογής για την αποφυγή σφαλμάτων UI."</string>
<!-- 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 -->
<string name="revanced_spoof_app_version_target_title">Έκδοση τροποποίησης της εφαρμογής</string>
@@ -971,7 +1021,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_spoof_app_version_target_legacy_entry_4">17.33.42 - Επαναφορά ενότητας λίστας αναπαραγωγής παλιού στυλ</string>
</patch>
<patch id="layout.startpage.changeStartPagePatch">
<string name="revanced_change_start_page_title">Ορισμός αρχικής σελίδας</string>
<string name="revanced_change_start_page_title">Αλλαγή της αρχικής σελίδας</string>
<string name="revanced_change_start_page_entry_default">Προεπιλογή</string>
<string name="revanced_change_start_page_entry_browse">Περιήγηση καναλιών</string>
<string name="revanced_change_start_page_entry_explore">Εξερεύνηση</string>
@@ -1012,7 +1062,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_miniplayer_screen_summary">Αλλάξτε το στυλ της ελαχιστοποιημένης οθόνης αναπαραγωγής</string>
<string name="revanced_miniplayer_type_title">Τύπος ελαχιστοποιημένης οθόνης αναπαραγωγής</string>
<string name="revanced_miniplayer_type_entry_0">Ανενεργή</string>
<string name="revanced_miniplayer_type_entry_1">Αρχικός</string>
<string name="revanced_miniplayer_type_entry_1">Προεπιλογή</string>
<string name="revanced_miniplayer_type_entry_2">Ελάχιστη</string>
<string name="revanced_miniplayer_type_entry_3">Ταμπλετ</string>
<string name="revanced_miniplayer_type_entry_4">Μοντέρνα 1</string>
@@ -1022,19 +1072,28 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_miniplayer_rounded_corners_summary_on">Οι γωνίες είναι στρογγυλεμένες</string>
<string name="revanced_miniplayer_rounded_corners_summary_off">Οι γωνίες είναι τετράγωνες</string>
<string name="revanced_miniplayer_double_tap_action_title">Διπλό πάτημα &amp; τσίμπημα για αλλαγή μεγέθους</string>
<string name="revanced_miniplayer_double_tap_action_summary_on">Η λειτουργία διπλού πατήματος και τσιμπήματος για αλλαγή μεγέθους είναι ενεργοποιημένη\n\n• Πατήστε δύο φορές για να αυξήσετε το μέγεθος της ελαχιστοποιημένης οθόνης\n• Πατήστε ξανά δύο φορές για επαναφορά στο αρχικό της μέγεθος</string>
<string name="revanced_miniplayer_double_tap_action_summary_on">"Η λειτουργία διπλού πατήματος και τσιμπήματος για αλλαγή μεγέθους είναι ενεργοποιημένη
• Πατήστε δύο φορές για να αυξήσετε το μέγεθος της ελαχιστοποιημένης οθόνης
• Πατήστε ξανά δύο φορές για επαναφορά στο αρχικό της μέγεθος"</string>
<string name="revanced_miniplayer_double_tap_action_summary_off">Η λειτουργία διπλού πατήματος και τσιμπήματος για αλλαγή μεγέθους είναι απενεργοποιημένη</string>
<string name="revanced_miniplayer_drag_and_drop_title">Λειτουργία μεταφοράς και απόθεσης</string>
<string name="revanced_miniplayer_drag_and_drop_summary_on">Η λειτουργία μεταφοράς και απόθεσης είναι ενεργοποιημένη\n\nΗ ελαχιστοποιημένη οθόνη αναπαραγωγής μπορεί να μετακινηθεί σε οποιαδήποτε γωνία της οθόνης</string>
<string name="revanced_miniplayer_drag_and_drop_summary_on">"Η λειτουργία μεταφοράς και απόθεσης είναι ενεργοποιημένη
Η ελαχιστοποιημένη οθόνη αναπαραγωγής μπορεί να μετακινηθεί σε οποιαδήποτε γωνία της οθόνης"</string>
<string name="revanced_miniplayer_drag_and_drop_summary_off">Η λειτουργία μεταφοράς και απόθεσης είναι απενεργοποιημένη</string>
<string name="revanced_miniplayer_horizontal_drag_title">Ενεργοποίηση οριζόντιας χειρονομίας απόρριψης</string>
<string name="revanced_miniplayer_horizontal_drag_summary_on">Η οριζόντια χειρονομία είναι ενεργή\n\nΗ ελαχιστοποιημένη οθόνη μπορεί να συρθεί εκτός οθόνης προς τα αριστερά ή δεξιά</string>
<string name="revanced_miniplayer_horizontal_drag_summary_on">"Η χειρονομία οριζόντιας σύρσης είναι ενεργοποιημένη
Η ελαχιστοποιημένη οθόνη μπορεί να συρθεί εκτός οθόνης προς τα αριστερά ή δεξιά"</string>
<string name="revanced_miniplayer_horizontal_drag_summary_off">Η οριζόντια χειρονομία είναι ανενεργή</string>
<string name="revanced_miniplayer_hide_expand_close_title">Κουμπί κλεισίματος</string>
<string name="revanced_miniplayer_hide_expand_close_summary_on">Κρυμμένο</string>
<string name="revanced_miniplayer_hide_expand_close_summary_off">Εμφανίζεται</string>
<string name="revanced_miniplayer_hide_expand_close_legacy_title">Κουμπιά επέκτασης και κλεισίματος</string>
<string name="revanced_miniplayer_hide_expand_close_legacy_summary_on">Κρυμμένα\n\nΣύρετε για επέκταση ή κλείσιμο</string>
<string name="revanced_miniplayer_hide_expand_close_legacy_summary_on">"Κρυμμένα
Σύρετε την ελαχιστοποιημένη οθόνη αναπαραγωγής για επέκταση ή κλείσιμο του βίντεο"</string>
<string name="revanced_miniplayer_hide_expand_close_legacy_summary_off">Εμφανίζονται</string>
<string name="revanced_miniplayer_hide_subtext_title">Κείμενα στην οθόνη αναπαραγωγής</string>
<string name="revanced_miniplayer_hide_subtext_summary_on">Κρυμμένα</string>
@@ -1065,7 +1124,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
<patch id="layout.thumbnails.bypassImageRegionRestrictionsPatch">
<string name="revanced_bypass_image_region_restrictions_title">Παράκαμψη μπλοκαρίσματος φόρτωσης εικόνων</string>
<string name="revanced_bypass_image_region_restrictions_summary_on">Χρησιμοποιείται το domain yt4.ggpht.com για την φόρτωση εικόνων</string>
<string name="revanced_bypass_image_region_restrictions_summary_off">Χρησιμοποιείται το αρχικό domain για την φόρτωση εικόνων\n\nΗ ενεργοποίηση αυτής της ρύθμισης μπορεί να διορθώσει την φόρτωση εικόνων που είναι μπλοκαρισμένες σε κάποιες περιοχές</string>
<string name="revanced_bypass_image_region_restrictions_summary_off">"Χρησιμοποιείται το αρχικό domain για την φόρτωση εικόνων
Η ενεργοποίηση αυτής της ρύθμισης μπορεί να διορθώσει την φόρτωση εικόνων που είναι μπλοκαρισμένες σε ορισμένες περιοχές"</string>
</patch>
<patch id="layout.thumbnails.alternativeThumbnailsPatch">
<!-- 'Home' should be translated using the same localized wording YouTube displays for the home tab. -->
@@ -1080,7 +1141,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_alt_thumbnail_options_entry_2">DeArrow &amp; Αρχικές μικρογραφίες</string>
<string name="revanced_alt_thumbnail_options_entry_3">DeArrow &amp; Ακίνητα καρέ</string>
<string name="revanced_alt_thumbnail_options_entry_4">Ακίνητα καρέ</string>
<string name="revanced_alt_thumbnail_dearrow_about_summary">Το DeArrow παρέχει μικρογραφίες από το κοινό για τα βίντεο. Οι μικρογραφίες αυτές είναι συχνά πιο σχετικές από εκείνες που παρέχει το ίδιο το YouTube. Εάν ενεργοποιηθεί, οι διευθύνσεις URL των βίντεο θα στέλνονται στον διακομιστή API χωρίς να στέλνονται άλλα δεδομένα. Αν ένα βίντεο δεν έχει μικρογραφίες DeArrow, θα εμφανιστούν είτε οι αρχικές του μικρογραφίες είτε λήψεις ακίνητων καρέ.\n\nΠατήστε για να μάθετε περισσότερα για το DeArrow</string>
<string name="revanced_alt_thumbnail_dearrow_about_summary">"Το DeArrow παρέχει μικρογραφίες από το κοινό για τα βίντεο. Οι μικρογραφίες αυτές είναι συχνά πιο σχετικές από εκείνες που παρέχει το ίδιο το YouTube. Αν ενεργοποιηθεί, οι διευθύνσεις URL των βίντεο θα στέλνονται στον διακομιστή API χωρίς να στέλνονται άλλα δεδομένα. Αν κάποιο βίντεο δεν έχει μικρογραφίες DeArrow, θα εμφανιστούν είτε οι αρχικές του μικρογραφίες είτε λήψεις ακίνητων καρέ.
Πατήστε για να μάθετε περισσότερα για το DeArrow"</string>
<string name="revanced_alt_thumbnail_dearrow_connection_toast_title">Εμφάνιση μηνύματος αν το API δεν είναι διαθέσιμο</string>
<string name="revanced_alt_thumbnail_dearrow_connection_toast_summary_on">Να εμφανίζεται μήνυμα στο κάτω μέρος της οθόνης αν το DeArrow δεν είναι διαθέσιμο</string>
<string name="revanced_alt_thumbnail_dearrow_connection_toast_summary_off">Να μην εμφανίζεται μήνυμα στο κάτω μέρος της οθόνης αν το DeArrow δεν είναι διαθέσιμο</string>
@@ -1119,8 +1182,12 @@ This is because Crowdin requires temporarily flattening this file and removing t
</patch>
<patch id="misc.dimensions.spoof.spoofDeviceDimensionsPatch">
<string name="revanced_spoof_device_dimensions_title">Παραποίηση διαστάσεων συσκευής</string>
<string name="revanced_spoof_device_dimensions_summary_on">Οι διαστάσεις συσκευής παραποιούνται\n\nΜπορεί να γίνουν διαθέσιμες υψηλότερες ποιότητες βίντεο, αλλά πιθανότατα να αντιμετωπίσετε μικρο-κολλήματα κατά την αναπαραγωγή, χειρότερη διάρκεια ζωής μπαταρίας και άλλες άγνωστες παρενέργειες</string>
<string name="revanced_spoof_device_dimensions_summary_off">Οι διαστάσεις συσκευής δεν παραποιούνται\n\nΕνεργοποιώντας αυτή τη ρύθμιση μπορούν να γίνουν διαθέσιμες υψηλότερες ποιότητες βίντεο</string>
<string name="revanced_spoof_device_dimensions_summary_on">"Οι διαστάσεις συσκευής παραποιούνται
Ενδέχεται να ξεκλειδωθούν υψηλότερες ποιότητες βίντεο, αλλά μπορεί να αντιμετωπίσετε κολλήματα αναπαραγωγής βίντεο, χειρότερη διάρκεια ζωής μπαταρίας και άλλες άγνωστες παρενέργειες"</string>
<string name="revanced_spoof_device_dimensions_summary_off">"Οι διαστάσεις συσκευής δεν παραποιούνται
Η ενεργοποίηση αυτής της λειτουργίας μπορεί να ξεκλειδώσει υψηλότερες ποιότητες βίντεο"</string>
<string name="revanced_spoof_device_dimensions_user_dialog_message">Η ενεργοποίηση αυτής της λειτουργίας μπορεί να προκαλέσει μικρο-κολλήματα κατά την αναπαραγωγή, χειρότερη διάρκεια ζωής μπαταρίας, και άλλες άγνωστες παρενέργειες.</string>
</patch>
<patch id="misc.gms.gmsCoreSupportResourcePatch">
@@ -1143,7 +1210,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_remove_tracking_query_parameter_summary_off">Η παράμετρος παρακολούθησης δεν αφαιρείται από τους συνδέσμους στην κοινοποίηση</string>
</patch>
<patch id="misc.zoomhaptics.zoomHapticsPatch">
<string name="revanced_disable_zoom_haptics_title">Κατάργηση απόκρισης δόνησης στο ζουμ</string>
<string name="revanced_disable_zoom_haptics_title">Απενεργοποίηση απόκρισης δόνησης χειρονομίας ζουμ</string>
<string name="revanced_disable_zoom_haptics_summary_on">Η απόκριση δόνησης είναι απενεργοποιημένη</string>
<string name="revanced_disable_zoom_haptics_summary_off">Η απόκριση δόνησης είναι ενεργοποιημένη</string>
</patch>
@@ -1151,8 +1218,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
<!-- 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_off">Οι αλλαγές ποιότητας θα ισχύουν μόνο για το τρέχον βίντεο</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>
<string name="revanced_remember_video_quality_mobile">δεδομένων</string>
@@ -1170,44 +1237,105 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_custom_speed_menu_summary_off">Το μενού προσαρμοσμένης ταχύτητας αναπαραγωγής δεν εμφανίζεται</string>
<string name="revanced_custom_playback_speeds_title">Προσαρμοσμένες ταχύτητες αναπαραγωγής</string>
<string name="revanced_custom_playback_speeds_summary">Προσθέστε ή αλλάξτε τις προσαρμοσμένες ταχύτητες αναπαραγωγής</string>
<string name="revanced_custom_playback_speeds_invalid">Οι ταχύτητες πρέπει να είναι μικρότερες από %sx. Επαναφορά...</string>
<string name="revanced_custom_playback_speeds_parse_exception">Μη έγκυρες ταχύτητες αναπαραγωγής. Επαναφορά...</string>
<string name="revanced_custom_playback_speeds_invalid">Οι ταχύτητες πρέπει να είναι μικρότερες από %sx</string>
<string name="revanced_custom_playback_speeds_parse_exception">Μη έγκυρες προσαρμοσμένες ταχύτητες αναπαραγωγής</string>
<string name="revanced_custom_playback_speeds_auto">Αυτόματη</string>
</patch>
<patch id="video.speed.remember.rememberPlaybackSpeedPatch">
<string name="revanced_remember_playback_speed_last_selected_title">Απομνημόνευση αλλαγών ταχύτητας αναπαραγωγής</string>
<string name="revanced_remember_playback_speed_last_selected_summary_on">Οι αλλαγές ταχύτητας αναπαραγωγής θα ισχύουν για όλα τα βίντεο</string>
<string name="revanced_remember_playback_speed_last_selected_summary_off">Οι αλλαγές ταχύτητας αναπαραγωγής θα ισχύουν μόνο για το τρέχον βίντεο</string>
<string name="revanced_remember_playback_speed_last_selected_summary_on">Οι αλλαγές ταχύτητας αναπαραγωγής ισχύουν για όλα τα βίντεο</string>
<string name="revanced_remember_playback_speed_last_selected_summary_off">Οι αλλαγές ταχύτητας αναπαραγωγής ισχύουν μόνο για το τρέχον βίντεο</string>
<string name="revanced_playback_speed_default_title">Προεπιλεγμένη ταχύτητα αναπαραγωγής</string>
<string name="revanced_remember_playback_speed_toast">Η προεπιλεγμένη ταχύτητα άλλαξε σε: %s</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>
<string name="revanced_restore_old_video_quality_menu_summary_off">Το μενού ποιότητας βίντεο θα εμφανίζεται με το νέο στυλ</string>
<string name="revanced_restore_old_video_quality_menu_summary_on">Το μενού ποιότητας βίντεο εμφανίζεται με το παλιό στυλ</string>
<string name="revanced_restore_old_video_quality_menu_summary_off">Το μενού ποιότητας βίντεο εμφανίζεται με το νέο στυλ</string>
</patch>
<patch id="interaction.seekbar.enableSlideToSeekPatch">
<string name="revanced_slide_to_seek_title">Χειρονομία οριζόντιας σάρωσης για αναζήτηση</string>
<string name="revanced_slide_to_seek_summary_on">Η αναζήτηση στη γραμμή προόδου με χειρονομία οριζόντιας σάρωσης είναι ενεργοποιημένη</string>
<string name="revanced_slide_to_seek_summary_off">Η αναζήτηση στη γραμμή προόδου με χειρονομία σάρωσης είναι απενεργοποιημένη</string>
<string name="revanced_slide_to_seek_title">Χειρονομία συρσίματος για αναζήτηση</string>
<string name="revanced_slide_to_seek_summary_on">Η χειρονομία συρσίματος για αναζήτηση στη γραμμή προόδου είναι ενεργοποιημένη</string>
<string name="revanced_slide_to_seek_summary_off">Η χειρονομία συρσίματος για αναζήτηση στη γραμμή προόδου είναι απενεργοποιημένη</string>
</patch>
<patch id="misc.fix.playback.spoofVideoStreamsPatch">
<string name="revanced_spoof_video_streams_screen_title">Παραποίηση ροών βίντεο</string>
<string name="revanced_spoof_video_streams_screen_summary">Παραποίηση ροών βίντεο του προγράμματος πελάτη για την αποφυγή προβλημάτων αναπαραγωγής</string>
<string name="revanced_spoof_video_streams_title">Παραποίηση ροών βίντεο</string>
<string name="revanced_spoof_video_streams_summary_on">Οι ροές βίντεο παραποιούνται</string>
<string name="revanced_spoof_video_streams_summary_off">Οι ροές βίντεο δεν παραποιούνται\n\nΗ αναπαραγωγή βίντεο ενδέχεται να μην λειτουργεί</string>
<string name="revanced_spoof_video_streams_summary_off">"Οι ροές βίντεο δεν παραποιούνται
Η αναπαραγωγή βίντεο ενδέχεται να μην λειτουργεί"</string>
<string name="revanced_spoof_video_streams_user_dialog_message">Η απενεργοποίηση αυτής της ρύθμισης ενδέχεται να προκαλέσει προβλήματα αναπαραγωγής βίντεο.</string>
<string name="revanced_spoof_video_streams_client_title">Προεπιλεγμένο πρόγραμμα πελάτη</string>
<string name="revanced_spoof_video_streams_ios_force_avc_title">Εξαναγκασμός 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">Ο κωδικοποιητής βίντεο είναι ο VP9 ή ο AV1</string>
<string name="revanced_spoof_video_streams_ios_force_avc_no_hardware_vp9_summary_on">Η συσκευή σας δεν διαθέτει αποκωδικοποίηση υλικού VP9, και αυτή η ρύθμιση είναι πάντα ενεργή όταν είναι ενεργοποιημένη η παραποίηση προγράμματος πελάτη</string>
<string name="revanced_spoof_video_streams_ios_force_avc_user_dialog_message">Ενεργοποιώντας αυτόν τον κωδικοποιητή ίσως να βελτιώσει κατανάλωση ενέργειας και ίσως διορθώσει κολλήματα αναπαραγωγής.\n\nΟ AVC έχει μέγιστη ανάλυση 1080p, και καταναλώνει περισσότερα δεδομένα internet από τον VP9 ή τον AV1.</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 δεν είναι διαθέσιμος και η αναπαραγωγή βίντεο θα χρησιμοποιεί περισσότερα δεδομένα internet από τον κωδικοποιητή VP9 ή τον AV1."</string>
<string name="revanced_spoof_video_streams_about_ios_title">Παρενέργειες παραποίησης σε iOS</string>
<string name="revanced_spoof_video_streams_about_ios_summary">Ιδιωτικά βίντεο για παιδιά ενδεχομένως να μην αναπαράγονται\n• Οι ζωντανές μεταδόσεις ξεκινούν από την αρχή\n• Τα βίντεο ενδέχεται να λήξουν 1 δευτερόλεπτο νωρίτερα\n• Δεν υπάρχει κωδικοποιητής ήχου opus</string>
<string name="revanced_spoof_video_streams_about_ios_summary">"Τα ιδιωτικά βίντεο για παιδιά ενδέχεται να μην αναπαράγονται
Οι ζωντανές μεταδόσεις ξεκινούν από την αρχή
Τα βίντεο τελειώνουν 1 δευτερόλεπτο νωρίτερα"</string>
<string name="revanced_spoof_video_streams_about_android_vr_title">Παρενέργειες παραποίησης σε Android VR</string>
<string name="revanced_spoof_video_streams_about_android_vr_summary">Τα βίντεο για παιδιά ενδέχεται να μην αναπαράγονται\n• Το μενού «Κομμάτι ήχου» λείπει\n• Η λειτουργία «Σταθερή ένταση» δεν είναι διαθέσιμη</string>
<string name="revanced_spoof_video_streams_about_android_vr_summary">"Τα βίντεο για παιδιά ενδέχεται να μην αναπαράγονται
Οι ζωντανές μεταδόσεις ξεκινούν από την αρχή
Τα βίντεο τελειώνουν 1 δευτερόλεπτο νωρίτερα"</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_PT_BR">Πορτογαλικά (Βραζιλίας)</string>
<string name="revanced_spoof_video_streams_language_PT_PT">Πορτογαλικά (Πορτογαλίας)</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>
</patch>
</app>
<app id="twitch">
@@ -1217,8 +1345,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_block_audio_ads_summary_off">Οι διαφημίσεις ήχου δεν έχουν αποκλειστεί</string>
</patch>
<patch id="ad.embedded.embeddedAdsPatch">
<string name="revanced_embedded_ads_service_unavailable">%s μη διαθέσιμο. Οι διαφημίσεις θα εμφανίζονται. Δοκιμάστε άλλη υπηρεσία αποκλεισμού διαφημίσεων.</string>
<string name="revanced_embedded_ads_service_failed">Σφάλμα διακομιστή %s. Οι διαφημίσεις ενδέχεται να εμφανίζονται. Δοκιμάστε κάποια άλλη υπηρεσία αποκλεισμού διαφημίσεων.</string>
<string name="revanced_embedded_ads_service_unavailable">%s δεν είναι διαθέσιμο, ενδέχεται να εμφανιστούν διαφημίσεις. Δοκιμάστε να αλλάξετε την υπηρεσία αποκλεισμού διαφημίσεων στις ρυθμίσεις.</string>
<string name="revanced_embedded_ads_service_failed">%s επέστρεψε ένα σφάλμα, ενδέχεται να εμφανιστούν διαφημίσεις. Δοκιμάστε να αλλάξετε την υπηρεσία αποκλεισμού διαφημίσεων στις ρυθμίσεις.</string>
<string name="revanced_block_embedded_ads_title">Αποκλεισμός ενσωματωμένων διαφημίσεων βίντεο</string>
<string name="revanced_block_embedded_ads_entry_1">Ανενεργό</string>
<string name="revanced_block_embedded_ads_entry_2">Διαμεσολαβητής Luminous</string>

View File

@@ -1,34 +1,23 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Note: All strings must have a unique path, even if the same string is declared in two different apps.
This is because Crowdin requires temporarily flattening this file and removing the <app> and <patch> elements.
All strings must have a unique path, even if the same string is declared in two different apps.
This is because Crowdin requires temporarily flattening this file and removing the <app> and <patch> elements.
# General guidelines and information for translating
## Strings parameters can be reordered to allow more flexible translations if the grammar should be changed.
Strings with new lines must be raw strings where they're wrapped in quotes and new lines are not encoded.
Raw strings still requires escaping embedded double quotes but escaping embedded single quotes is optional.
For example, the patches string:
<string name="revanced_patches_string">You will arrive at %1$s in %2$s hours from now</string>
Could be translated to another language using a rearranged grammar:
<string name="revanced_patches_string">You will arrive %2$s hours from now at %1$s</string>
Raw strings are required because Crowdin AI translations regularly gets confused and
replace \n with an encoded new line character.
For Manager strings:
You will arrive at ${destination} in ${count} hours from now
Could be rearranged by changing the order of the ${} parameters:
You will arrive ${count} hours from now at ${destination}
Bad:
<string name="summary_key">First \'item\' text\nSecond \"item\" text</string>
Reordering is particularly relevant when translating into right to left languages, or for any language with grammar that is noticeably different from English.
Good:
<string name="summary_key">"First 'item' text
Second \"item\" text"</string>
## Single and double quotation marks must be escaped for patch strings (Manager does not require escaping any quotes).
All _patches_ single and double quotation marks must be escaped as \" or \'
Forgetting to do this will cause that string to appear in app with no quotation characters.
Correct:
<string name="revanced_string">You\'re correct. This is the \"correct\" way and this text will appear as expected in the app</string>
Not correct:
<string name="revanced_string">You're not correct. This is not the "correct" way and this text will not appear as expected the in app</string>
-->
<resources>
<app id="shared">
@@ -67,9 +56,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
<!-- 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 no está instalado. Instálala.</string>
<string name="gms_core_dialog_title">Acción necesaria</string>
<string name="gms_core_dialog_not_whitelisted_not_allowed_in_background_message">MicroG GmsCore no tiene permiso para ejecutarse en segundo plano.\n\nSigue la guía \"No cerrar mi aplicación\" para tu teléfono y aplica las instrucciones a tu instalación de MicroG.\n\nEsto es necesario para que la aplicación funcione.</string>
<string name="gms_core_dialog_not_whitelisted_not_allowed_in_background_message">"MicroG GmsCore no tiene permiso para ejecutarse en segundo plano."</string>
<string name="gms_core_dialog_open_website_text">Abrir sitio web</string>
<string name="gms_core_dialog_not_whitelisted_using_battery_optimizations_message">Las optimizaciones de batería de MicroG GmsCore deben estar deshabilitadas para evitar problemas.\n\nPulse el botón continuar y desactive las optimizaciones de la batería.</string>
<string name="gms_core_dialog_not_whitelisted_using_battery_optimizations_message">"La optimización de la batería de MicroG GmsCore debe estar deshabilitada para evitar problemas."</string>
<string name="gms_core_dialog_continue_text">Continuar</string>
</patch>
</app>
@@ -106,7 +95,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_debug_toast_on_error_title">Mostrar brindis en error ReVanced</string>
<string name="revanced_debug_toast_on_error_summary_on">Toast mostrado si ocurre un error</string>
<string name="revanced_debug_toast_on_error_summary_off">Toast no se muestra si ocurre un error</string>
<string name="revanced_debug_toast_on_error_user_dialog_message">Desactivar los avisos (toasts) de errores oculta todas las notificaciones de error ReVanced\n\nNo se le notificará de ningún evento inesperado.</string>
<string name="revanced_debug_toast_on_error_user_dialog_message">"Desactivar las notificaciones de error oculta todas las notificaciones de error de ReVanced."</string>
</patch>
<patch id="layout.hide.general.hideLayoutComponentsPatch">
<string name="revanced_disable_like_subscribe_glow_title">Desactivar el brillo del botón de like / suscripción</string>
@@ -125,7 +114,12 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_channel_watermark_summary_on">Marca de agua oculta</string>
<string name="revanced_hide_channel_watermark_summary_off">Marca de agua mostrada</string>
<string name="revanced_hide_horizontal_shelves_title">Ocultar estantes horizontales</string>
<string name="revanced_hide_horizontal_shelves_summary_on">Los estantes están ocultos como:\n• Últimas noticias\n• Continuar viendo\n• Explorar más canales\n• Comprar\n• Verlo de nuevo</string>
<string name="revanced_hide_horizontal_shelves_summary_on">"Los estantes están ocultos, tales como:
• Noticias de última hora
• Continuar viendo
• Explorar más canales
• Compras
• Verlo de nuevo"</string>
<string name="revanced_hide_horizontal_shelves_summary_off">Se muestran las estanterías</string>
<!-- 'Join' should be translated using the same localized wording YouTube displays.
This appears in the video player for certain videos. -->
@@ -252,6 +246,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_filter_bar_feed_in_related_videos_summary_off">Mostrar en vídeos relacionados</string>
<string name="revanced_comments_screen_title">Comentarios</string>
<string name="revanced_comments_screen_summary">Ocultar o mostrar los componentes de sección de comentarios</string>
<string name="revanced_hide_comments_chat_summary_title">Ocultar \'Resumen del chat\'</string>
<string name="revanced_hide_comments_chat_summary_summary_on">El resumen de chat está oculto</string>
<string name="revanced_hide_comments_chat_summary_summary_off">El resumen del chat se muestra</string>
<string name="revanced_hide_comments_by_members_header_title">Ocultar encabezado \'Comentarios por miembros\'</string>
<string name="revanced_hide_comments_by_members_header_summary_on">El encabezado \'Comentarios por miembros\' está oculto</string>
<string name="revanced_hide_comments_by_members_header_summary_off">La cabecera \'Comentarios por miembros\' se muestra</string>
@@ -274,7 +271,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_doodles_title">Ocultar YouTube Doodles</string>
<string name="revanced_hide_doodles_summary_on">Barra de búsqueda Doodles están ocultos</string>
<string name="revanced_hide_doodles_summary_off">Mostrar la barra de búsqueda Doodles</string>
<string name="revanced_hide_doodles_user_dialog_message">Los Doodles de YouTube aparecen unos pocos días cada año.\n\nSi un Doodle se muestra actualmente en tu región y esta opción de ocultación está activada, entonces la barra de filtro bajo la barra de búsqueda también se ocultará.</string>
<string name="revanced_hide_doodles_user_dialog_message">"Los doodles de YouTube se muestran durante unos días al año.
Si un doodle se está mostrando actualmente en tu región y este ajuste de ocultación está activado, la barra de filtro situada debajo de la barra de búsqueda también estará oculta."</string>
<string name="revanced_custom_filter_screen_title">Filtro personalizado</string>
<string name="revanced_custom_filter_screen_summary">Ocultar componentes usando filtros personalizados</string>
<string name="revanced_custom_filter_title">Activar filtro personalizado</string>
@@ -298,9 +297,18 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_keyword_content_phrases_title">Palabras clave a ocultar</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. -->
<string name="revanced_hide_keyword_content_phrases_summary">Palabras clave y frases para ocultar, separadas por nuevas líneas\n\nLas palabras clave pueden ser nombres de canales o cualquier texto que se muestre en los títulos de vídeo\n\nLas palabras con letras mayúsculas en el medio deben ser ingresadas con la mayúscula (por ejemplo: iPhone, TikTok, LeBlanc)</string>
<string name="revanced_hide_keyword_content_phrases_summary">"Las palabras y frases que se ocultan, separadas por nuevas líneas
Las palabras clave pueden ser nombres de canales o cualquier texto que aparezca en los títulos de los vídeos
Las palabras con mayúsculas en medio deben introducirse con las mayúsculas (es decir, iPhone, TikTok, LeBlanc)"</string>
<string name="revanced_hide_keyword_content_about_title">Acerca del filtrado de palabras clave</string>
<string name="revanced_hide_keyword_content_about_summary">Los resultados de inicio/suscripción/búsqueda se filtran para ocultar el contenido que coincide con las frases de palabras clave\n\nLimitaciones\n• Los cortos no se pueden ocultar con el nombre del canal\n• Algunos componentes de la interfaz pueden no estar ocultos\n• Buscar una palabra clave no puede mostrar resultados</string>
<string name="revanced_hide_keyword_content_about_summary">"Los resultados de búsqueda de Home/Suscripción/Búsqueda se filtran para ocultar el contenido que coincida con las frases de palabras clave
Limitaciones
• Los vídeos cortos no se pueden ocultar por nombre de canal
• Es posible que algunos componentes de la interfaz de usuario no estén ocultos
• La búsqueda de una palabra clave puede no mostrar ningún resultado"</string>
<string name="revanced_hide_keyword_content_about_whole_words_title">Coincidir palabras completas</string>
<!-- Translations _must_ use a localized example. For languages that do not use spaces between words (Chinese, Japanese, etc) the English AI example should be used since no localized examples exist. Or if using machine translations, or if nobody wants to think of a localized example, then the English 'ai' example should be left as-is. -->
<string name="revanced_hide_keyword_content_about_whole_words_summary">Rodear una palabra clave/frase con comillas dobles evitará las coincidencias parciales de títulos de vídeo y nombres de canales&lt;br&gt;&lt;br&gt;Por ejemplo,&lt;br&gt;&lt;b&gt;\"ai\"&lt;/b&gt; ocultará el vídeo: &lt;b&gt;¿Cómo funciona la AI?&lt;/b&gt;&lt;br&gt;pero no ocultará: &lt;b&gt;¿Quieres aprender a bailar?&lt;/b&gt;</string>
@@ -316,7 +324,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_general_ads_summary_on">Los anuncios generales están ocultos</string>
<string name="revanced_hide_general_ads_summary_off">Se muestran anuncios generales</string>
<string name="revanced_hide_fullscreen_ads_title">Ocultar anuncios a pantalla completa</string>
<string name="revanced_hide_fullscreen_ads_summary_on">Los anuncios a pantalla completa están ocultos\n\nEsta función solo está disponible para dispositivos más antiguos</string>
<string name="revanced_hide_fullscreen_ads_summary_on">"Los anuncios a pantalla completa están ocultos
Esta función solo está disponible para dispositivos antiguos"</string>
<string name="revanced_hide_fullscreen_ads_summary_off">Se muestran anuncios a pantalla completa</string>
<string name="revanced_hide_buttoned_ads_title">Ocultar anuncios botonados</string>
<string name="revanced_hide_buttoned_ads_summary_on">Los anuncios botonados están ocultos</string>
@@ -490,7 +500,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_subscriptions_button_summary_off">Se muestra el botón Suscripciones</string>
<!-- 'Notifications' should be translated using the same localized wording YouTube displays the tab. -->
<string name="revanced_switch_create_with_notifications_button_title">Cambiar Crear con Notificaciones</string>
<string name="revanced_switch_create_with_notifications_button_summary_on">El botón Crear cambia con el botón de Notificaciones\n\nNota: Activar esto también oculta anuncios de vídeo por la fuerza</string>
<string name="revanced_switch_create_with_notifications_button_summary_on">"El botón Crear se cambia por el botón Notificaciones
Nota: Habilitar esto también oculta a la fuerza los anuncios de vídeo"</string>
<string name="revanced_switch_create_with_notifications_button_summary_off">El botón Crear no se cambia con el botón de notificaciones</string>
<string name="revanced_hide_navigation_button_labels_title">Ocultar etiquetas de botón de navegación</string>
<string name="revanced_hide_navigation_button_labels_summary_on">Las etiquetas están ocultas</string>
@@ -709,6 +721,11 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_player_popup_panels_summary_on">Los paneles emergentes del jugador están ocultos</string>
<string name="revanced_hide_player_popup_panels_summary_off">Se muestran paneles emergentes del jugador</string>
</patch>
<patch id="layout.player.fullscreen.openVideosFullscreen">
<string name="revanced_open_videos_fullscreen_portrait_title">Abrir vídeos en el retrato de pantalla completa</string>
<string name="revanced_open_videos_fullscreen_portrait_summary_on">Videos abiertos a pantalla completa</string>
<string name="revanced_open_videos_fullscreen_portrait_summary_off">Los videos no se abren en pantalla completa</string>
</patch>
<patch id="layout.player.overlay.customPlayerOverlayOpacityResourcePatch">
<string name="revanced_player_overlay_opacity_title">Opacidad de superposición del jugador</string>
<string name="revanced_player_overlay_opacity_summary">Valor de potencia entre 0-100, donde 0 es transparente</string>
@@ -726,7 +743,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_ryd_enable_summary_off">No se muestran Dislikes</string>
<string name="revanced_ryd_shorts_title">Mostrar no me gusta en Shorts</string>
<string name="revanced_ryd_shorts_summary_on">Dislikes mostrados en Shorts</string>
<string name="revanced_ryd_shorts_summary_on_disclaimer">No me Gusta mostrados en Shorts\n\nLimitación: Los No me Gusta no pueden aparecer en modo incógnito</string>
<string name="revanced_ryd_shorts_summary_on_disclaimer">"No me gustas que se muestran en los Shorts
Limitación: Es posible que los No me gustas no aparezcan en el modo de incógnito"</string>
<string name="revanced_ryd_shorts_summary_off">No me Gusta ocultos en Shorts</string>
<string name="revanced_ryd_dislike_percentage_title">Desliza como porcentaje</string>
<string name="revanced_ryd_dislike_percentage_summary_on">Dislikes mostrados como porcentaje</string>
@@ -769,7 +788,11 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_seekbar_thumbnails_high_quality_summary_off">Las miniuñas Seekbar son de calidad media</string>
<string name="revanced_seekbar_thumbnails_high_quality_legacy_summary_on">Las miniaturas de la barra de búsqueda a pantalla completa son de alta calidad</string>
<string name="revanced_seekbar_thumbnails_high_quality_legacy_summary_off">Las miniaturas de la barra de búsqueda a pantalla completa son de calidad media</string>
<string name="revanced_seekbar_thumbnails_high_quality_dialog_message">Esto también restaurará las minias en vivos que no tienen las miniuñas seekbar.\n\nLas miniaturas de la barra de búsqueda usarán la misma calidad que el vídeo actual.\n\nEsta función funciona mejor con una calidad de vídeo de 720p o inferior y al usar una conexión a internet muy rápida.</string>
<string name="revanced_seekbar_thumbnails_high_quality_dialog_message">"Esto también restaurará las miniaturas en las transmisiones en vivo que no tengan miniaturas de la barra de búsqueda.
Las miniaturas de la barra de búsqueda utilizarán la misma calidad que el vídeo actual.
Esta función funciona mejor con una calidad de vídeo de 720p o inferior y cuando se utiliza una conexión a Internet muy rápida."</string>
<string name="revanced_restore_old_seekbar_thumbnails_title">Restaurar antiguas miniaturas de la barra de búsqueda</string>
<string name="revanced_restore_old_seekbar_thumbnails_summary_on">Las miniaturas de la barra de búsqueda aparecerán por encima de la barra de búsqueda</string>
<string name="revanced_restore_old_seekbar_thumbnails_summary_off">Las miniaturas de Seekbar aparecerán en pantalla completa</string>
@@ -832,7 +855,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_sb_settings_import_successful">Configuración importada correctamente</string>
<string name="revanced_sb_settings_import_failed">Error al importar: %s</string>
<string name="revanced_sb_settings_export_failed">Error al exportar: %s</string>
<string name="revanced_sb_settings_revanced_export_user_id_warning">Tu configuración contiene un usuario privado de SponsorBlock.\n\nTu id de usuario es como una contraseña y nunca debe ser compartida.\n</string>
<string name="revanced_sb_settings_revanced_export_user_id_warning">"Tu configuración contiene una ID de usuario de SponsorBlock privada.
Tu ID de usuario es como una contraseña y nunca debe compartirse."</string>
<string name="revanced_sb_settings_revanced_export_user_id_warning_dismiss">No mostrar de nuevo</string>
<string name="revanced_sb_diff_segments">Cambiar comportamiento del segmento</string>
<string name="revanced_sb_segments_sponsor">Sponsor</string>
@@ -892,9 +917,10 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_sb_submit_failed_invalid">No se puede enviar el segmento: %s</string>
<string name="revanced_sb_submit_failed_timeout">SponsorBlock está temporalmente abajo</string>
<string name="revanced_sb_submit_failed_unknown_error">No se puede enviar el segmento (estado: %1$d %2$s)</string>
<string name="revanced_sb_submit_failed_rate_limit">No se puede enviar el segmento.\nTasa limitada (demasiados usuarios o IP)</string>
<string name="revanced_sb_submit_failed_rate_limit">No se puede enviar el segmento. Límite de velocidad (demasiados del mismo usuario o IP)</string>
<string name="revanced_sb_submit_failed_forbidden">No se puede enviar el segmento: %s</string>
<string name="revanced_sb_submit_failed_duplicate">No se pudo enviar el segmento.\nYa existe</string>
<string name="revanced_sb_submit_failed_duplicate">"No se puede enviar el segmento.
Ya existe"</string>
<string name="revanced_sb_submit_succeeded">Segmento enviado correctamente</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. -->
<string name="revanced_sb_sponsorblock_connection_failure_timeout">SponsorBlock temporalmente no está disponible (API)</string>
@@ -917,7 +943,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_sb_new_segment_time_start">Segundo en el que el segmento comienza</string>
<string name="revanced_sb_new_segment_time_end">Segundo en el que el segmento finaliza</string>
<string name="revanced_sb_new_segment_confirm_title">¿Los tiempos son correctos?</string>
<string name="revanced_sb_new_segment_confirm_content">El segmento es desde\n\n%1$s\nhasta\n%2$s\n\n(%3$s)\n\n¿Listo para enviarlo?</string>
<string name="revanced_sb_new_segment_confirm_content">"El segmento es de %1$s a %2$s (%3$s) ¿Listo para enviar?"</string>
<string name="revanced_sb_new_segment_start_is_before_end">Inicio debe ser antes del final</string>
<string name="revanced_sb_new_segment_mark_locations_first">Primero, marca dos instantes en la barra de tiempo</string>
<string name="revanced_sb_new_segment_preview_segment_first">Previsualizar el segmento y asegurarse de que se salta sin problemas</string>
@@ -959,7 +985,11 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_spoof_app_version_title">Versión de la aplicación Spoof</string>
<string name="revanced_spoof_app_version_summary_on">Versión falseada</string>
<string name="revanced_spoof_app_version_summary_off">Versión no falseada</string>
<string name="revanced_spoof_app_version_user_dialog_message">La versión de la aplicación será suplantada por una versión anterior de YouTube.\n\nEsto cambiará la apariencia y las funciones de la aplicación, pero pueden ocurrir efectos secundarios desconocidos.\n\nSi luego se desactiva, se recomienda borrar los datos de la aplicación para prevenir errores de interfaz de usuario.</string>
<string name="revanced_spoof_app_version_user_dialog_message">"La versión de la aplicación se falsificará a una versión anterior de YouTube.
Esto cambiará la apariencia y las características de la aplicación, pero pueden producirse efectos secundarios desconocidos.
Si se desactiva posteriormente, se recomienda borrar los datos de la aplicación para evitar errores en la interfaz de usuario."</string>
<!-- 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 -->
<string name="revanced_spoof_app_version_target_title">Destino de versión de la aplicación Spoof</string>
@@ -1012,9 +1042,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_miniplayer_screen_summary">Cambiar el estilo del reproductor minimizado de la aplicación</string>
<string name="revanced_miniplayer_type_title">Tipo de minreproductor</string>
<string name="revanced_miniplayer_type_entry_0">Desactivado</string>
<string name="revanced_miniplayer_type_entry_1">Original</string>
<string name="revanced_miniplayer_type_entry_1">Predeterminado</string>
<string name="revanced_miniplayer_type_entry_2">Mínimo</string>
<string name="revanced_miniplayer_type_entry_3">Tablet</string>
<string name="revanced_miniplayer_type_entry_3">Tableta</string>
<string name="revanced_miniplayer_type_entry_4">Moderna 1</string>
<string name="revanced_miniplayer_type_entry_5">Moderna 2</string>
<string name="revanced_miniplayer_type_entry_6">Moderna 3</string>
@@ -1022,19 +1052,28 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_miniplayer_rounded_corners_summary_on">Las esquinas están redondeadas</string>
<string name="revanced_miniplayer_rounded_corners_summary_off">Las esquinas son cuadradas</string>
<string name="revanced_miniplayer_double_tap_action_title">Habilitar doble toque y pellizco para redimensionar</string>
<string name="revanced_miniplayer_double_tap_action_summary_on">Acción de doble toque y pulsar para cambiar el tamaño está habilitado\n\n• Doble toque para aumentar el tamaño de minijugador\n• Doble toque de nuevo para restaurar el tamaño original</string>
<string name="revanced_miniplayer_double_tap_action_summary_on">"La acción de doble toque y el pellizco para cambiar el tamaño están activados
• Toca dos veces para aumentar el tamaño del minireproductor
• Toca dos veces de nuevo para restaurar el tamaño original"</string>
<string name="revanced_miniplayer_double_tap_action_summary_off">Acción de doble toque y pellizco para redimensionar está desactivado</string>
<string name="revanced_miniplayer_drag_and_drop_title">Activar arrastrar y soltar</string>
<string name="revanced_miniplayer_drag_and_drop_summary_on">Arrastrar y soltar está habilitado\n\nMinijugador puede ser arrastrado a cualquier esquina de la pantalla</string>
<string name="revanced_miniplayer_drag_and_drop_summary_on">"La función de arrastrar y soltar está activada
El minireproductor se puede arrastrar a cualquier esquina de la pantalla"</string>
<string name="revanced_miniplayer_drag_and_drop_summary_off">Arrastre y suelte está desactivado</string>
<string name="revanced_miniplayer_horizontal_drag_title">Activar gesto de arrastre horizontal</string>
<string name="revanced_miniplayer_horizontal_drag_summary_on">Gesto de arrastre horizontal habilitado\n\nMinijugador puede ser arrastrado de la pantalla a la izquierda o derecha</string>
<string name="revanced_miniplayer_horizontal_drag_summary_on">"El gesto de arrastre horizontal está activado
El minireproductor se puede arrastrar fuera de la pantalla hacia la izquierda o la derecha"</string>
<string name="revanced_miniplayer_horizontal_drag_summary_off">Gesto de arrastre horizontal desactivado</string>
<string name="revanced_miniplayer_hide_expand_close_title">Ocultar botón de cerrar</string>
<string name="revanced_miniplayer_hide_expand_close_summary_on">El botón de cierre está oculto</string>
<string name="revanced_miniplayer_hide_expand_close_summary_off">Se muestra el botón de cerrar</string>
<string name="revanced_miniplayer_hide_expand_close_legacy_title">Ocultar botones de expansión y cierre</string>
<string name="revanced_miniplayer_hide_expand_close_legacy_summary_on">Los botones están ocultos\n\nDesliza para expandir o cerrar</string>
<string name="revanced_miniplayer_hide_expand_close_legacy_summary_on">"Los botones están ocultos
Desliza para expandir o cerrar"</string>
<string name="revanced_miniplayer_hide_expand_close_legacy_summary_off">Mostrar los botones de ampliación y cierre</string>
<string name="revanced_miniplayer_hide_subtext_title">Ocultar subtextos</string>
<string name="revanced_miniplayer_hide_subtext_summary_on">Los subtextos están ocultos</string>
@@ -1065,7 +1104,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
<patch id="layout.thumbnails.bypassImageRegionRestrictionsPatch">
<string name="revanced_bypass_image_region_restrictions_title">Evitar restricción regional de imágenes</string>
<string name="revanced_bypass_image_region_restrictions_summary_on">Usando host de imagen yt4.ggpht.com</string>
<string name="revanced_bypass_image_region_restrictions_summary_off">Utilizando el host de imágenes original\n\nHabilitar esto puede arreglar las imágenes faltantes que están bloqueadas en algunas regiones</string>
<string name="revanced_bypass_image_region_restrictions_summary_off">"Usando el servidor de imágenes original
Habilitar esto puede solucionar las imágenes que faltan que están bloqueadas en algunas regiones"</string>
</patch>
<patch id="layout.thumbnails.alternativeThumbnailsPatch">
<!-- 'Home' should be translated using the same localized wording YouTube displays for the home tab. -->
@@ -1080,7 +1121,11 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_alt_thumbnail_options_entry_2">Deflecha &amp; miniaturas originales</string>
<string name="revanced_alt_thumbnail_options_entry_3">Flecha &amp; Todavía capturas</string>
<string name="revanced_alt_thumbnail_options_entry_4">Sigue capturando</string>
<string name="revanced_alt_thumbnail_dearrow_about_summary">DeFlecha proporciona miniaturas de origen crowd para vídeos de YouTube. Estas uñas suelen ser más relevantes que las proporcionadas por YouTube\n\nSi están activadas, las URL de vídeo se enviarán al servidor API y no se enviarán otros datos. Si un video no tiene miniaturas de Flecha Deprimida, entonces las capturas originales o todavía se muestran\n\nPulsa aquí para aprender más sobre DeFlecha</string>
<string name="revanced_alt_thumbnail_dearrow_about_summary">"DeArrow proporciona miniaturas de vídeos de YouTube obtenidas mediante crowdsourcing. Estas miniaturas suelen ser más relevantes que las que proporciona YouTube
Si está habilitado, las URL de los vídeos se enviarán al servidor de la API y no se envían otros datos. Si un vídeo no tiene miniaturas de DeArrow, se mostrarán las originales o las capturas fijas
Toca aquí para obtener más información sobre DeArrow"</string>
<string name="revanced_alt_thumbnail_dearrow_connection_toast_title">Mostrar un brindis si la API no está disponible</string>
<string name="revanced_alt_thumbnail_dearrow_connection_toast_summary_on">Toast se muestra si DeFlecha no está disponible</string>
<string name="revanced_alt_thumbnail_dearrow_connection_toast_summary_off">Toast no se muestra si DeFlecha no está disponible</string>
@@ -1119,8 +1164,12 @@ This is because Crowdin requires temporarily flattening this file and removing t
</patch>
<patch id="misc.dimensions.spoof.spoofDeviceDimensionsPatch">
<string name="revanced_spoof_device_dimensions_title">Dimensiones del dispositivo</string>
<string name="revanced_spoof_device_dimensions_summary_on">Dimensiones del dispositivo falseadas\n\nCalidad de vídeo más alta puede ser desbloqueada, pero puede experimentar la reproducción de vídeo, peor duración de la batería y efectos secundarios desconocidos</string>
<string name="revanced_spoof_device_dimensions_summary_off">Dimensiones del dispositivo no falseadas\n\nHabilitar esto puede desbloquear mayores calidades de vídeo</string>
<string name="revanced_spoof_device_dimensions_summary_on">"Las dimensiones del dispositivo están falsificadas
Es posible que se desbloqueen calidades de vídeo más altas, pero es posible que experimentes pausas en la reproducción de vídeo, una peor duración de la batería y efectos secundarios desconocidos"</string>
<string name="revanced_spoof_device_dimensions_summary_off">"Las dimensiones del dispositivo no están falsificadas
Habilitar esto puede desbloquear calidades de vídeo más altas"</string>
<string name="revanced_spoof_device_dimensions_user_dialog_message">Activar esto puede causar retraso en la reproducción de vídeo, peor duración de la batería y efectos secundarios desconocidos.</string>
</patch>
<patch id="misc.gms.gmsCoreSupportResourcePatch">
@@ -1170,8 +1219,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_custom_speed_menu_summary_off">Menú de velocidad personalizado no se muestra</string>
<string name="revanced_custom_playback_speeds_title">Velocidades de reproducción personalizadas</string>
<string name="revanced_custom_playback_speeds_summary">Añadir o cambiar las velocidades de reproducción personalizadas</string>
<string name="revanced_custom_playback_speeds_invalid">Velocidades personalizadas deben ser inferiores a %s. Utilizando valores predeterminados.</string>
<string name="revanced_custom_playback_speeds_parse_exception">Velocidades de reproducción personalizadas no válidas. Utilizando valores predeterminados.</string>
<string name="revanced_custom_playback_speeds_invalid">Las velocidades personalizadas deben ser menores que %s</string>
<string name="revanced_custom_playback_speeds_parse_exception">Velocidades de reproducción personalizadas no válidas</string>
<string name="revanced_custom_playback_speeds_auto">Auto</string>
</patch>
<patch id="video.speed.remember.rememberPlaybackSpeedPatch">
@@ -1196,18 +1245,79 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_spoof_video_streams_screen_summary">Falsifica el stream de vídeo del cliente para evitar problemas de reproducción</string>
<string name="revanced_spoof_video_streams_title">Falsificación del stream de vídeo</string>
<string name="revanced_spoof_video_streams_summary_on">El stream de vídeo está falsificado</string>
<string name="revanced_spoof_video_streams_summary_off">Los streams de vídeo no están falsificados\n\nLa reproducción de vídeo puede no funcionar</string>
<string name="revanced_spoof_video_streams_summary_off">"Las transmisiones de vídeo no están falsificadas
Es posible que la reproducción de vídeo no funcione"</string>
<string name="revanced_spoof_video_streams_user_dialog_message">Desactivar esta configuración puede causar problemas de reproducción de vídeo.</string>
<string name="revanced_spoof_video_streams_client_title">Cliente por defecto</string>
<string name="revanced_spoof_video_streams_ios_force_avc_title">Forzar AVC (H.264)</string>
<string name="revanced_spoof_video_streams_ios_force_avc_summary_on">Codec de vídeo AVC (H.264)</string>
<string name="revanced_spoof_video_streams_ios_force_avc_summary_off">El códec de vídeo es VP9 o AV1</string>
<string name="revanced_spoof_video_streams_ios_force_avc_no_hardware_vp9_summary_on">Su dispositivo no tiene decodificación de hardware VP9, y esta configuración siempre está encendida cuando el cliente spoofing está habilitado</string>
<string name="revanced_spoof_video_streams_ios_force_avc_user_dialog_message">Activar esto puede mejorar la vida de la batería y corregir el retraso en la reproducción.\n\nAVC tiene una resolución máxima de 1080p, y la reproducción de vídeo utilizará más datos de Internet que VP9 o AV1.</string>
<string name="revanced_spoof_video_streams_ios_force_avc_summary_on">Códec de vídeo se ve obligado a AVC (H.264)</string>
<string name="revanced_spoof_video_streams_ios_force_avc_summary_off">El códec de vídeo se determina automáticamente</string>
<string name="revanced_spoof_video_streams_ios_force_avc_user_dialog_message">"Habilitar esto podría mejorar la duración de la batería y solucionar los tartamudeos de la reproducción.
AVC tiene una resolución máxima de 1080p, el códec de audio Opus no está disponible y la reproducción de vídeo utilizará más datos de internet que VP9 o AV1."</string>
<string name="revanced_spoof_video_streams_about_ios_title">Efectos secundarios para la falsificación de iOS</string>
<string name="revanced_spoof_video_streams_about_ios_summary">Los vídeos de niños privados no pueden reproducir\n• Livestreams comienzan desde el principio\n• Los vídeos pueden terminar 1 segundo antes de\n• No hay código de audio de opus</string>
<string name="revanced_spoof_video_streams_about_ios_summary">"Es posible que los vídeos de niños privados no se reproduzcan
• Las transmisiones en vivo empiezan desde el principio
• Los vídeos terminan 1 segundo antes"</string>
<string name="revanced_spoof_video_streams_about_android_vr_title">Efectos secundarios para la falsificación de Android RV</string>
<string name="revanced_spoof_video_streams_about_android_vr_summary">Los vídeos infantiles no pueden reproducir\n• Falta el menú de pista de audio\n• El volumen estable no está disponible</string>
<string name="revanced_spoof_video_streams_about_android_vr_summary">"Es posible que los vídeos para niños no se reproduzcan
• Las transmisiones en vivo empiezan desde el principio
• Los vídeos terminan 1 segundo antes"</string>
<string name="revanced_spoof_video_streams_language_title">Idioma de flujo de audio por defecto</string>
<string name="revanced_spoof_video_streams_language_DEFAULT">Idioma de la aplicación</string>
<string name="revanced_spoof_video_streams_language_AR">Árabe</string>
<string name="revanced_spoof_video_streams_language_AZ">Бессия</string>
<string name="revanced_spoof_video_streams_language_BG">Búlgaro</string>
<string name="revanced_spoof_video_streams_language_BN">Bengalí</string>
<string name="revanced_spoof_video_streams_language_CA">Catalán</string>
<string name="revanced_spoof_video_streams_language_CS">Checo</string>
<string name="revanced_spoof_video_streams_language_DA">Danés</string>
<string name="revanced_spoof_video_streams_language_DE">Alemán</string>
<string name="revanced_spoof_video_streams_language_EL">Griego</string>
<string name="revanced_spoof_video_streams_language_EN">Inglés</string>
<string name="revanced_spoof_video_streams_language_ES">Español</string>
<string name="revanced_spoof_video_streams_language_ET">Estonio</string>
<string name="revanced_spoof_video_streams_language_FA">Persa</string>
<string name="revanced_spoof_video_streams_language_FI">Finlandé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">Hindú</string>
<string name="revanced_spoof_video_streams_language_HR">Croata</string>
<string name="revanced_spoof_video_streams_language_HU">Húngaro</string>
<string name="revanced_spoof_video_streams_language_ID">Indonesio/a</string>
<string name="revanced_spoof_video_streams_language_IT">Italiano</string>
<string name="revanced_spoof_video_streams_language_JA">Japonés</string>
<string name="revanced_spoof_video_streams_language_KK">Kazakh</string>
<string name="revanced_spoof_video_streams_language_KO">Coreano</string>
<string name="revanced_spoof_video_streams_language_LT">Lituano</string>
<string name="revanced_spoof_video_streams_language_LV">Letón</string>
<string name="revanced_spoof_video_streams_language_MK">Macedonio</string>
<string name="revanced_spoof_video_streams_language_MN">Mongol</string>
<string name="revanced_spoof_video_streams_language_MR">Maratí</string>
<string name="revanced_spoof_video_streams_language_MS">Malayo</string>
<string name="revanced_spoof_video_streams_language_MY">Burmese</string>
<string name="revanced_spoof_video_streams_language_NL">Holandé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">Polaco</string>
<string name="revanced_spoof_video_streams_language_PT_BR">Portugués (Brasil)</string>
<string name="revanced_spoof_video_streams_language_PT_PT">Portugués (R)</string>
<string name="revanced_spoof_video_streams_language_RO">Rumano</string>
<string name="revanced_spoof_video_streams_language_RU">Ruso</string>
<string name="revanced_spoof_video_streams_language_SK">Eslovaco</string>
<string name="revanced_spoof_video_streams_language_SL">Slovene</string>
<string name="revanced_spoof_video_streams_language_SR">Serbio</string>
<string name="revanced_spoof_video_streams_language_SV">Sueco</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">Tailandés</string>
<string name="revanced_spoof_video_streams_language_TR">Turco</string>
<string name="revanced_spoof_video_streams_language_UK">Ucraniano</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">Chino</string>
</patch>
</app>
<app id="twitch">
@@ -1217,8 +1327,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_block_audio_ads_summary_off">Anuncios de audio desbloqueados</string>
</patch>
<patch id="ad.embedded.embeddedAdsPatch">
<string name="revanced_embedded_ads_service_unavailable">%s no está disponible. Los anuncios pueden mostrarse. Intenta cambiar a otro servicio de bloqueo de anuncios en la configuración.</string>
<string name="revanced_embedded_ads_service_failed">El servidor %s devolvió un error. Los anuncios pueden mostrar. Intente cambiar a otro servicio de bloqueo de anuncios en la configuración.</string>
<string name="revanced_embedded_ads_service_unavailable">%s no disponible, es posible que se muestren anuncios. Intenta cambiar el servicio de bloqueo de anuncios en los ajustes.</string>
<string name="revanced_embedded_ads_service_failed">%s ha devuelto un error, es posible que se muestren anuncios. Intenta cambiar el servicio de bloqueo de anuncios en los ajustes.</string>
<string name="revanced_block_embedded_ads_title">Bloquear anuncios de vídeo incrustados</string>
<string name="revanced_block_embedded_ads_entry_1">Desactivado</string>
<string name="revanced_block_embedded_ads_entry_2">Proxy luminoso</string>

View File

@@ -1,34 +1,23 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Note: All strings must have a unique path, even if the same string is declared in two different apps.
This is because Crowdin requires temporarily flattening this file and removing the <app> and <patch> elements.
All strings must have a unique path, even if the same string is declared in two different apps.
This is because Crowdin requires temporarily flattening this file and removing the <app> and <patch> elements.
# General guidelines and information for translating
## Strings parameters can be reordered to allow more flexible translations if the grammar should be changed.
Strings with new lines must be raw strings where they're wrapped in quotes and new lines are not encoded.
Raw strings still requires escaping embedded double quotes but escaping embedded single quotes is optional.
For example, the patches string:
<string name="revanced_patches_string">You will arrive at %1$s in %2$s hours from now</string>
Could be translated to another language using a rearranged grammar:
<string name="revanced_patches_string">You will arrive %2$s hours from now at %1$s</string>
Raw strings are required because Crowdin AI translations regularly gets confused and
replace \n with an encoded new line character.
For Manager strings:
You will arrive at ${destination} in ${count} hours from now
Could be rearranged by changing the order of the ${} parameters:
You will arrive ${count} hours from now at ${destination}
Bad:
<string name="summary_key">First \'item\' text\nSecond \"item\" text</string>
Reordering is particularly relevant when translating into right to left languages, or for any language with grammar that is noticeably different from English.
Good:
<string name="summary_key">"First 'item' text
Second \"item\" text"</string>
## Single and double quotation marks must be escaped for patch strings (Manager does not require escaping any quotes).
All _patches_ single and double quotation marks must be escaped as \" or \'
Forgetting to do this will cause that string to appear in app with no quotation characters.
Correct:
<string name="revanced_string">You\'re correct. This is the \"correct\" way and this text will appear as expected in the app</string>
Not correct:
<string name="revanced_string">You're not correct. This is not the "correct" way and this text will not appear as expected the in app</string>
-->
<resources>
<app id="shared">
@@ -147,6 +136,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
</patch>
<patch id="layout.panels.popup.playerPopupPanelsPatch">
</patch>
<patch id="layout.player.fullscreen.openVideosFullscreen">
</patch>
<patch id="layout.player.overlay.customPlayerOverlayOpacityResourcePatch">
</patch>
<patch id="layout.returnyoutubedislike.returnYouTubeDislikePatch">

View File

@@ -1,34 +1,23 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Note: All strings must have a unique path, even if the same string is declared in two different apps.
This is because Crowdin requires temporarily flattening this file and removing the <app> and <patch> elements.
All strings must have a unique path, even if the same string is declared in two different apps.
This is because Crowdin requires temporarily flattening this file and removing the <app> and <patch> elements.
# General guidelines and information for translating
## Strings parameters can be reordered to allow more flexible translations if the grammar should be changed.
Strings with new lines must be raw strings where they're wrapped in quotes and new lines are not encoded.
Raw strings still requires escaping embedded double quotes but escaping embedded single quotes is optional.
For example, the patches string:
<string name="revanced_patches_string">You will arrive at %1$s in %2$s hours from now</string>
Could be translated to another language using a rearranged grammar:
<string name="revanced_patches_string">You will arrive %2$s hours from now at %1$s</string>
Raw strings are required because Crowdin AI translations regularly gets confused and
replace \n with an encoded new line character.
For Manager strings:
You will arrive at ${destination} in ${count} hours from now
Could be rearranged by changing the order of the ${} parameters:
You will arrive ${count} hours from now at ${destination}
Bad:
<string name="summary_key">First \'item\' text\nSecond \"item\" text</string>
Reordering is particularly relevant when translating into right to left languages, or for any language with grammar that is noticeably different from English.
Good:
<string name="summary_key">"First 'item' text
Second \"item\" text"</string>
## Single and double quotation marks must be escaped for patch strings (Manager does not require escaping any quotes).
All _patches_ single and double quotation marks must be escaped as \" or \'
Forgetting to do this will cause that string to appear in app with no quotation characters.
Correct:
<string name="revanced_string">You\'re correct. This is the \"correct\" way and this text will appear as expected in the app</string>
Not correct:
<string name="revanced_string">You're not correct. This is not the "correct" way and this text will not appear as expected the in app</string>
-->
<resources>
<app id="shared">
@@ -147,6 +136,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
</patch>
<patch id="layout.panels.popup.playerPopupPanelsPatch">
</patch>
<patch id="layout.player.fullscreen.openVideosFullscreen">
</patch>
<patch id="layout.player.overlay.customPlayerOverlayOpacityResourcePatch">
</patch>
<patch id="layout.returnyoutubedislike.returnYouTubeDislikePatch">
@@ -178,7 +169,6 @@ This is because Crowdin requires temporarily flattening this file and removing t
<patch id="layout.tablet.enableTabletLayoutPatch">
</patch>
<patch id="layout.miniplayer.miniplayerPatch">
<string name="revanced_miniplayer_type_entry_0">غیرفعال شده</string>
</patch>
<patch id="layout.theme.themePatch">
</patch>
@@ -195,7 +185,6 @@ This is because Crowdin requires temporarily flattening this file and removing t
<patch id="misc.announcements.announcementsPatch">
</patch>
<patch id="misc.dns.checkWatchHistoryDomainNameResolutionPatch">
<string name="revanced_check_watch_history_domain_name_dialog_title">هشدار</string>
</patch>
<patch id="misc.autorepeat.autoRepeatPatch">
</patch>
@@ -242,7 +231,6 @@ This is because Crowdin requires temporarily flattening this file and removing t
<!-- Twitch specific internal debug mode, and not the same as 'revanced_debug_title' -->
</patch>
<patch id="misc.settings.settingsPatch">
<string name="revanced_about_title">درباره ما</string>
</patch>
</app>
</resources>

View File

@@ -1,34 +1,23 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Note: All strings must have a unique path, even if the same string is declared in two different apps.
This is because Crowdin requires temporarily flattening this file and removing the <app> and <patch> elements.
All strings must have a unique path, even if the same string is declared in two different apps.
This is because Crowdin requires temporarily flattening this file and removing the <app> and <patch> elements.
# General guidelines and information for translating
## Strings parameters can be reordered to allow more flexible translations if the grammar should be changed.
Strings with new lines must be raw strings where they're wrapped in quotes and new lines are not encoded.
Raw strings still requires escaping embedded double quotes but escaping embedded single quotes is optional.
For example, the patches string:
<string name="revanced_patches_string">You will arrive at %1$s in %2$s hours from now</string>
Could be translated to another language using a rearranged grammar:
<string name="revanced_patches_string">You will arrive %2$s hours from now at %1$s</string>
Raw strings are required because Crowdin AI translations regularly gets confused and
replace \n with an encoded new line character.
For Manager strings:
You will arrive at ${destination} in ${count} hours from now
Could be rearranged by changing the order of the ${} parameters:
You will arrive ${count} hours from now at ${destination}
Bad:
<string name="summary_key">First \'item\' text\nSecond \"item\" text</string>
Reordering is particularly relevant when translating into right to left languages, or for any language with grammar that is noticeably different from English.
Good:
<string name="summary_key">"First 'item' text
Second \"item\" text"</string>
## Single and double quotation marks must be escaped for patch strings (Manager does not require escaping any quotes).
All _patches_ single and double quotation marks must be escaped as \" or \'
Forgetting to do this will cause that string to appear in app with no quotation characters.
Correct:
<string name="revanced_string">You\'re correct. This is the \"correct\" way and this text will appear as expected in the app</string>
Not correct:
<string name="revanced_string">You're not correct. This is not the "correct" way and this text will not appear as expected the in app</string>
-->
<resources>
<app id="shared">
@@ -44,7 +33,6 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_check_environment_not_near_patch_time_invalid">APK käännöspäivä on vioittunut</string>
</patch>
<patch id="misc.settings.settingsResourcePatch">
<string name="revanced_settings_title">ReVanced</string>
<string name="revanced_settings_confirm_user_dialog_title">Haluatko jatkaa?</string>
<string name="revanced_settings_reset">Nollaa</string>
<string name="revanced_settings_restart_title">Päivitä ja käynnistä uudelleen</string>
@@ -68,9 +56,17 @@ This is because Crowdin requires temporarily flattening this file and removing t
<!-- 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 GmsCorea ei ole asennettu. Asenna se.</string>
<string name="gms_core_dialog_title">Vaatii toimenpiteitä</string>
<string name="gms_core_dialog_not_whitelisted_not_allowed_in_background_message">MicroG GmsCorella ei ole oikeutta olla päällä taustalla.\n\nNoudata puhelimesi \"Don\'t kill my app\" -opasta ja käytä ohjeita MicroG-asennukseen.\n\nTämä on tarpeen, jotta sovellus toimisi.</string>
<string name="gms_core_dialog_not_whitelisted_not_allowed_in_background_message">"MicroG GmsCore ei ole lupaa suorittaa taustalla.
Noudata puhelimesi \"Älä sulje sovellustani\" -opasta ja noudata ohjeita MicroG-asennuksellesi.
Tämä on välttämätöntä sovelluksen toiminnalle."</string>
<string name="gms_core_dialog_open_website_text">Avaa verkkosivusto</string>
<string name="gms_core_dialog_not_whitelisted_using_battery_optimizations_message">MicroG GmsCoren akun optimointi on estettävä ongelmien välttämiseksi.\n\nNapauta jatka-näppäintä ja poista akun optimointi käytöstä.</string>
<string name="gms_core_dialog_not_whitelisted_using_battery_optimizations_message">"MicroG GmsCoren akun optimoinnit on poistettava käytöstä ongelmien välttämiseksi.
MicroG:n akun optimointien poistaminen käytöstä ei vaikuta akun käyttöön negatiivisesti.
Napauta jatka-painiketta ja salli optimoinnin muutokset."</string>
<string name="gms_core_dialog_continue_text">Jatka</string>
</patch>
</app>
@@ -82,7 +78,6 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_settings_screen_03_feed_title">Syöte</string>
<string name="revanced_settings_screen_04_player_title">Soitin</string>
<string name="revanced_settings_screen_05_general_title">Yleinen asettelu</string>
<string name="revanced_settings_screen_06_shorts_title">Shorts</string>
<string name="revanced_settings_screen_07_seekbar_title">Liukusäädin</string>
<string name="revanced_settings_screen_08_swipe_controls_title">Pyyhkäisyohjaus</string>
<string name="revanced_settings_screen_11_misc_title">Sekalaiset</string>
@@ -108,7 +103,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_debug_toast_on_error_title">Näytä ponnahdusilmoitus, kun ReVanced-virhe tapahtuu</string>
<string name="revanced_debug_toast_on_error_summary_on">Ponnahdusilmoitus näytetään, jos tapahtuu virhe</string>
<string name="revanced_debug_toast_on_error_summary_off">Ponnahdusilmoitusta ei näytetä, jos tapahtuu virhe</string>
<string name="revanced_debug_toast_on_error_user_dialog_message">Ponnahdusilmoitusten pois käytöstä ottaminen piilottaa kaikki ReVanced-virheilmoitukset.\n\nSinulle ei ilmoiteta odottamattomista tapahtumista.</string>
<string name="revanced_debug_toast_on_error_user_dialog_message">"Virheilmoitusten poistaminen käytöstä piilottaa kaikki ReVancedin virheilmoitukset.
Et saa ilmoitusta odottamattomista tapahtumista."</string>
</patch>
<patch id="layout.hide.general.hideLayoutComponentsPatch">
<string name="revanced_disable_like_subscribe_glow_title">Poista tykkää-/tilaa-painikkeiden hehku käytöstä</string>
@@ -127,7 +124,12 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_channel_watermark_summary_on">Vesileima on piilotettu</string>
<string name="revanced_hide_channel_watermark_summary_off">Vesileima näytetään</string>
<string name="revanced_hide_horizontal_shelves_title">Piilota vaakasuuntaiset hyllyt</string>
<string name="revanced_hide_horizontal_shelves_summary_on">Hyllyt, kuten seuraavat, on piilotettu:\n• Uusimmat uutiset\n• Jatka katselua\n• Etsi lisää kanavia\n• Ostokset\n• Katsele uudelleen</string>
<string name="revanced_hide_horizontal_shelves_summary_on">"Hyllyt on piilotettu, kuten:
• Ajankohtaiset uutiset
• Jatka katsomista
• Tutki lisää kanavia
• Shoppailu
• Katso uudelleen"</string>
<string name="revanced_hide_horizontal_shelves_summary_off">Hyllyt näytetään</string>
<!-- 'Join' should be translated using the same localized wording YouTube displays.
This appears in the video player for certain videos. -->
@@ -254,6 +256,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_filter_bar_feed_in_related_videos_summary_off">Näytetään liittyvissä videoissa</string>
<string name="revanced_comments_screen_title">Kommentit</string>
<string name="revanced_comments_screen_summary">Piilota tai näytä kommenttiosion komponentteja</string>
<string name="revanced_hide_comments_chat_summary_summary_on">Chat-yhteenveto on piilotettu</string>
<string name="revanced_hide_comments_chat_summary_summary_off">Chat-yhteenveto on näytetty</string>
<string name="revanced_hide_comments_by_members_header_title">Piilota \"Jäsenten kommentit\" -ylätunniste</string>
<string name="revanced_hide_comments_by_members_header_summary_on">\"Jäsenten kommentit\" -ylätunniste on piilotettu</string>
<string name="revanced_hide_comments_by_members_header_summary_off">\"Jäsenten kommentit\"-ylätunniste näytetään</string>
@@ -276,7 +280,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_doodles_title">Piilota YouTube Doodlet</string>
<string name="revanced_hide_doodles_summary_on">Hakupalkin Doodlet on piilotettu</string>
<string name="revanced_hide_doodles_summary_off">Hakupalkin Doodlet näytetään</string>
<string name="revanced_hide_doodles_user_dialog_message">YouTube Doodlet näkyvät muutamana päivä vuodessa.\n\nJos Doodle näkyy tällä hetkellä alueellasi ja tämä piilotusasetus on käytössä, myös hakupalkin alla oleva suodatinpalkki piilotetaan.</string>
<string name="revanced_hide_doodles_user_dialog_message">"YouTube Doodles näkyvät muutama päivä vuodessa.
Jos Doodle näkyy tällä hetkellä alueellasi ja tämä piilotusasetus on käytössä, myös hakupalkin alla oleva suodatinpalkki piilotetaan."</string>
<string name="revanced_custom_filter_screen_title">Mukautettu suodatin</string>
<string name="revanced_custom_filter_screen_summary">Piilota komponentteja mukautetuilla suodattimilla</string>
<string name="revanced_custom_filter_title">Käytä mukautettua suodatinta</string>
@@ -300,9 +306,18 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_keyword_content_phrases_title">Piilotettavat avainsanat</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. -->
<string name="revanced_hide_keyword_content_phrases_summary">Piilotettavia avainsanoja ja lauseita, erotettuna uusilla riveillä\n\nAvainsanat voivat olla kanavien nimiä tai videon otsikoissa\n\nSuurilla kirjaimilla varustetut sanat täytyy syöttää kotelon kanssa (esim. iPhone, TikTok, LeBlanc)</string>
<string name="revanced_hide_keyword_content_phrases_summary">"Piilotettavat avainsanat ja lausekkeet, erotettuina rivinvaihdoilla
Avainsanat voivat olla kanavanimiä tai mitä tahansa videootsikoissa näkyvää tekstiä
Sana, jossa on isoja kirjaimia keskellä, on syötettävä samalla kirjainkokoisella (esim: iPhone, TikTok, LeBlanc)"</string>
<string name="revanced_hide_keyword_content_about_title">Tietoja avainsanoilla suodatuksesta</string>
<string name="revanced_hide_keyword_content_about_summary">Etusivu/Tilaus / Hakutulokset suodatetaan piilottamaan sisältö, joka vastaa avainsanalauseita\n\nRajoitukset\n• Shorts ei voi piilottaa kanavan nimellä\n• Joitakin UI-komponentteja ei välttämättä ole piilotettu\n• Haetaan hakusanalla ei ole tuloksia</string>
<string name="revanced_hide_keyword_content_about_summary">"Koti/Tilaukset/Hakutulokset suodatetaan piilottaakseen sisältöä, joka vastaa avainsanalauseita
Rajoitukset
• Shorts-videoita ei voida piilottaa kanavan nimellä
• Jotkut käyttöliittymäosat eivät välttämättä piiloudu
• Avainsanan hakeminen saattaa näyttää tyhjiä tuloksia"</string>
<string name="revanced_hide_keyword_content_about_whole_words_title">Täsmää koko sanaan</string>
<!-- Translations _must_ use a localized example. For languages that do not use spaces between words (Chinese, Japanese, etc) the English AI example should be used since no localized examples exist. Or if using machine translations, or if nobody wants to think of a localized example, then the English 'ai' example should be left as-is. -->
<string name="revanced_hide_keyword_content_about_whole_words_summary">Hakusanan/lauseen ympäröiminen kaksoislainauksilla estää videon oitsikoiden ja kanavien nimien osittaisia vastaavuuksia&lt;br&gt;&lt;br&gt;Esimerkiksi,&lt;br&gt;&lt;b&gt;\"ai\"&lt;/b&gt; piilottaa videon: &lt;b&gt;How does AI work?&lt;/b&gt;&lt;br&gt;mutta ei piilota: &lt;b&gt;What does fair use mean?&lt;/b&gt;</string>
@@ -318,7 +333,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_general_ads_summary_on">Yleiset mainokset on piilotettu</string>
<string name="revanced_hide_general_ads_summary_off">Yleiset mainokset näytetään</string>
<string name="revanced_hide_fullscreen_ads_title">Piilota koko näytön mainokset</string>
<string name="revanced_hide_fullscreen_ads_summary_on">Koko näytön mainokset on piilotettu\n\nTämä ominaisuus on käytettävissä vain vanhemmille laitteille</string>
<string name="revanced_hide_fullscreen_ads_summary_on">"Koko näytön mainokset piilotetaan
Tämä ominaisuus on saatavilla vain vanhemmissa laitteissa"</string>
<string name="revanced_hide_fullscreen_ads_summary_off">Koko näytön mainokset näytetään</string>
<string name="revanced_hide_buttoned_ads_title">Piilota napilliset mainokset</string>
<string name="revanced_hide_buttoned_ads_summary_on">Napilliset mainokset on piilotettu</string>
@@ -492,7 +509,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_subscriptions_button_summary_off">Tilaukset-painike näytetään</string>
<!-- 'Notifications' should be translated using the same localized wording YouTube displays the tab. -->
<string name="revanced_switch_create_with_notifications_button_title">Vaihda Luo ja Ilmoitukset</string>
<string name="revanced_switch_create_with_notifications_button_summary_on">Luo- ja Ilmoitukset-painikkeet on vaihdettu\n\nHuom: Tämän käyttöönotto piilottaa myös videomainokset väkisin</string>
<string name="revanced_switch_create_with_notifications_button_summary_on">"Luo-painike vaihdetaan ilmoituspainikkeella
Huomaa: Tämä ottaa pakolla pois myös videomainokset"</string>
<string name="revanced_switch_create_with_notifications_button_summary_off">Luo- ja Ilmoitukset-painikkeita ei vaihdeta</string>
<string name="revanced_hide_navigation_button_labels_title">Piilota navigointipainikkeiden tunnisteet</string>
<string name="revanced_hide_navigation_button_labels_summary_on">Tunnisteet on piilotettu</string>
@@ -711,6 +730,11 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_player_popup_panels_summary_on">Soittimen ponnahdusikkunat on piilotettu</string>
<string name="revanced_hide_player_popup_panels_summary_off">Soittimen ponnahdusikkunat näytetään</string>
</patch>
<patch id="layout.player.fullscreen.openVideosFullscreen">
<string name="revanced_open_videos_fullscreen_portrait_title">Avaa videot koko näytön muotokuvassa</string>
<string name="revanced_open_videos_fullscreen_portrait_summary_on">Videot avataan kokoruututilassa</string>
<string name="revanced_open_videos_fullscreen_portrait_summary_off">Videot eivät avaa kokoruututilaa</string>
</patch>
<patch id="layout.player.overlay.customPlayerOverlayOpacityResourcePatch">
<string name="revanced_player_overlay_opacity_title">Soittimen peittoalueen läpinäkyvyys</string>
<string name="revanced_player_overlay_opacity_summary">Läpinäkyvyysarvo välillä 0100, jossa 0 on läpinäkyvä</string>
@@ -728,7 +752,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_ryd_enable_summary_off">Ei-tykkäykset on piilotettu</string>
<string name="revanced_ryd_shorts_title">Näytä ei-tykkäät Shortseissa</string>
<string name="revanced_ryd_shorts_summary_on">Ei-tykkäykset näytetään Shortseissa</string>
<string name="revanced_ryd_shorts_summary_on_disclaimer">Ei-tykkäyksetytetään Shortseissa\n\nRajoitus: Ne eivät välttämättä näy incognito-tilassa</string>
<string name="revanced_ryd_shorts_summary_on_disclaimer">"Ei pidätykskyvissä Shorts-videoissa
Rajoitus: Ei pidätyksiä ei ehkä näy inkognitotilassa"</string>
<string name="revanced_ryd_shorts_summary_off">Ei-tykkäykset on piilotettu Shortseissa</string>
<string name="revanced_ryd_dislike_percentage_title">Ei-tykkäykset prosentteina</string>
<string name="revanced_ryd_dislike_percentage_summary_on">Ei-tykkäykset näytetään prosenttina</string>
@@ -771,7 +797,11 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_seekbar_thumbnails_high_quality_summary_off">Seekbar pikkukuvat ovat keskitasoisia</string>
<string name="revanced_seekbar_thumbnails_high_quality_legacy_summary_on">Koko näytön seekbar pikkukuvat ovat laadukkaita</string>
<string name="revanced_seekbar_thumbnails_high_quality_legacy_summary_off">Koko näytön seekbar pienoiskuvat ovat keskitasoisia</string>
<string name="revanced_seekbar_thumbnails_high_quality_dialog_message">Tämä myös palauttaa pikkukuvat livestreams että ei ole seekbar pikkukuvat.\n\nSeekbar pikkukuvat käyttävät samaa laatua kuin nykyinen video.\n\nTämä ominaisuus toimii parhaiten, kun videon laatu on 720p tai alempi, ja kun käytetään erittäin nopeaa internet-yhteyttä.</string>
<string name="revanced_seekbar_thumbnails_high_quality_dialog_message">"Tämä palauttaa myös pienoiskuvat suoratoistoissa, joilla ei ole hakupainikkeen pienoiskuvia.
Hakupainikkeen pienoiskuvat käyttävät samaa laatua kuin nykyinen video.
Tämä ominaisuus toimii parhaiten 720p tai alhaisemman laatuisilla videoilla ja käytettäessä erittäin nopeaa internet-yhteyttä."</string>
<string name="revanced_restore_old_seekbar_thumbnails_title">Palauta vanhat liukusäätimen pikkukuvat</string>
<string name="revanced_restore_old_seekbar_thumbnails_summary_on">Liukusäätimen pikkukuvat näkyvät liukusäätimen yläpuolella</string>
<string name="revanced_restore_old_seekbar_thumbnails_summary_off">Liukusäätimen pikkukuvat näkyvät kokoruututilassa</string>
@@ -834,7 +864,10 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_sb_settings_import_successful">Asetusten tuonti onnistui</string>
<string name="revanced_sb_settings_import_failed">Tuonti epäonnistui: %s</string>
<string name="revanced_sb_settings_export_failed">Vienti epäonnistui: %s</string>
<string name="revanced_sb_settings_revanced_export_user_id_warning">Asetuksesi sisältävät yksityisen SponsorBlock-käyttäjätunnuksen.\n\nKäyttäjätunnuksesi on kuin salasana, eikä sitä tule koskaan jakaa.\n</string>
<string name="revanced_sb_settings_revanced_export_user_id_warning">"Asetuksissasi on yksityinen SponsorBlock-käyttäjätunnus.
Käyttäjätunnus on kuin salasana, eikä sitä pidä jakaa kenellekään.
"</string>
<string name="revanced_sb_settings_revanced_export_user_id_warning_dismiss">Älä näytä uudelleen</string>
<string name="revanced_sb_diff_segments">Muuta osion käyttäytymistä</string>
<string name="revanced_sb_segments_sponsor">Sponsori</string>
@@ -894,9 +927,10 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_sb_submit_failed_invalid">Osiota ei voitu lähettää: %s</string>
<string name="revanced_sb_submit_failed_timeout">SponsorBlock on väliaikaisesti alhaalla</string>
<string name="revanced_sb_submit_failed_unknown_error">Osiota ei voitu lähettää (tila: %1$d %2$s)</string>
<string name="revanced_sb_submit_failed_rate_limit">Ei voida lähettää osiota.\nLiian monta pyyntöä samalta käyttäjältä tai samasta IP:stä</string>
<string name="revanced_sb_submit_failed_rate_limit">Segmenttiä ei voida lähettää. Nopeuden rajoitus (liian monta samalta käyttäjältä tai IP-osoitteesta)</string>
<string name="revanced_sb_submit_failed_forbidden">Osiota ei voi lähettää: %s</string>
<string name="revanced_sb_submit_failed_duplicate">Osiota ei voi lähettää.\nOn jo olemassa</string>
<string name="revanced_sb_submit_failed_duplicate">"Segmenttiä ei voi lähettää.
On jo olemassa"</string>
<string name="revanced_sb_submit_succeeded">Osio lähetetty onnistuneesti</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. -->
<string name="revanced_sb_sponsorblock_connection_failure_timeout">SponsorBlock ei ole tilapäisesti käytettävissä</string>
@@ -919,7 +953,15 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_sb_new_segment_time_start">Aika, jolloin osio alkaa</string>
<string name="revanced_sb_new_segment_time_end">Aika, jolloin osio päättyy</string>
<string name="revanced_sb_new_segment_confirm_title">Ovatko ajat oikein?</string>
<string name="revanced_sb_new_segment_confirm_content">Osio alkaa\n\n%1$s\nja loppuu\n%2$s\n\n(%3$s)\n\nValmis lähettämään?</string>
<string name="revanced_sb_new_segment_confirm_content">"Segment on alkaa
%1$s
ja päättyy
%2$s
(%3$s)
Haluatko lähettää?"</string>
<string name="revanced_sb_new_segment_start_is_before_end">Alun on oltava ennen loppua</string>
<string name="revanced_sb_new_segment_mark_locations_first">Merkitse ensin kaksi kohtaa aikapalkissa</string>
<string name="revanced_sb_new_segment_preview_segment_first">Esikatsele osio ja varmista, että se ohitetaan sujuvasti</string>
@@ -961,7 +1003,11 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_spoof_app_version_title">Naamioi sovellusversio</string>
<string name="revanced_spoof_app_version_summary_on">Versio on naamioitu</string>
<string name="revanced_spoof_app_version_summary_off">Versiota ei ole naamioitu</string>
<string name="revanced_spoof_app_version_user_dialog_message">Sovellusversio naamioidaan vanhemmaksi YouTuben versioksi.\n\nTämä muuttaa sovelluksen ulkonäköä ja ominaisuuksia, mutta tuntemattomia sivuvaikutuksia voi tapahtua.\n\nJos otetaan myöhemmin pois käytöstä, on suositeltavaa poistaa sovelluksen tiedot, käyttöliittymän virheiden estämiseksi.</string>
<string name="revanced_spoof_app_version_user_dialog_message">"Sovelluksen versio väärennetään vanhemmaksi YouTube-versioksi.
Tämä muuttaa sovelluksen ulkoasua ja ominaisuuksia, mutta tuntemattomia sivuvaikutuksia saattaa esiintyä.
Jos tämä ominaisuus kytketään myöhemmin pois, on suositeltavaa tyhjentää sovelluksen tiedot, jotta vältetään käyttöliittymävirheet."</string>
<!-- 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 -->
<string name="revanced_spoof_app_version_target_title">Naamioitava kohdeversio</string>
@@ -1014,7 +1060,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_miniplayer_screen_summary">Muuta sovelluksen tyyliä pienennetyssä soittimessa</string>
<string name="revanced_miniplayer_type_title">Minisoittimen tyyppi</string>
<string name="revanced_miniplayer_type_entry_0">Pois käytöstä</string>
<string name="revanced_miniplayer_type_entry_1">Alkuperäinen</string>
<string name="revanced_miniplayer_type_entry_1">Oletus</string>
<string name="revanced_miniplayer_type_entry_2">Minimaali</string>
<string name="revanced_miniplayer_type_entry_3">Tabletti</string>
<string name="revanced_miniplayer_type_entry_4">Moderni 1</string>
@@ -1024,19 +1070,28 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_miniplayer_rounded_corners_summary_on">Kulmat on pyöristetty</string>
<string name="revanced_miniplayer_rounded_corners_summary_off">Kulmat ovat neliöitä</string>
<string name="revanced_miniplayer_double_tap_action_title">Ota kaksoisnapautus käyttöön ja purista kokoa</string>
<string name="revanced_miniplayer_double_tap_action_summary_on">Kaksoisnapautuksen toiminto ja nollaus koon muuttamiseksi on käytössä\n\n• Lisää minipelaajan kokoa\n• Kaksoisnapautus uudelleen palauttaaksesi alkuperäisen koon</string>
<string name="revanced_miniplayer_double_tap_action_summary_on">"Kaksoisnapautus ja nipistys zoomaamiseen on käytössä
• Kaksoisnapautus minipalkin koon kasvattamiseksi
• Kaksoisnapautus uudelleen alkuperäisen koon palauttamiseksi"</string>
<string name="revanced_miniplayer_double_tap_action_summary_off">Kaksoisnapautuksen toiminto ja ponnahdusikkunan koon muuttaminen on poistettu käytöstä</string>
<string name="revanced_miniplayer_drag_and_drop_title">Ota käyttöön vedä ja pudota</string>
<string name="revanced_miniplayer_drag_and_drop_summary_on">Vedä ja pudota on käytössä\n\nMiniplayer voidaan vetää mihin tahansa ruudun kulmaan</string>
<string name="revanced_miniplayer_drag_and_drop_summary_on">"Vedä ja pudota on käytössä
Minipalkkia voidaan vetää näytön mihin tahansa kulmaan"</string>
<string name="revanced_miniplayer_drag_and_drop_summary_off">Vedä ja pudotus pois käytöstä</string>
<string name="revanced_miniplayer_horizontal_drag_title">Ota käyttöön vaakasuora vedä ele</string>
<string name="revanced_miniplayer_horizontal_drag_summary_on">Vaakasuora vedä ele käytössä\n\nMiniplayer voidaan vetää pois näytön vasemmalle tai oikealle</string>
<string name="revanced_miniplayer_horizontal_drag_summary_on">"Vaakasuora vedä-ele on käytössä
Minipalkkia voidaan vetää pois näytöltä vasemmalle tai oikealle"</string>
<string name="revanced_miniplayer_horizontal_drag_summary_off">Vaakasuora vedä ele pois käytöstä</string>
<string name="revanced_miniplayer_hide_expand_close_title">Piilota sulje painike</string>
<string name="revanced_miniplayer_hide_expand_close_summary_on">Sulje painike on piilotettu</string>
<string name="revanced_miniplayer_hide_expand_close_summary_off">Sulje painike näytetään</string>
<string name="revanced_miniplayer_hide_expand_close_legacy_title">Piilota laajenna- ja sulje-painikkeet</string>
<string name="revanced_miniplayer_hide_expand_close_legacy_summary_on">Painikkeet ovat piilossa\n\nPyyhkäise laajentaaksesi tai sulkeaksesi</string>
<string name="revanced_miniplayer_hide_expand_close_legacy_summary_on">"Painikkeet piilotetaan
Pyyhkäise laajentaaksesi tai sulkeaksesi"</string>
<string name="revanced_miniplayer_hide_expand_close_legacy_summary_off">Laajenna- ja sulje-painikkeet näytetään</string>
<string name="revanced_miniplayer_hide_subtext_title">Piilota alatekstit</string>
<string name="revanced_miniplayer_hide_subtext_summary_on">Alatekstit on piilotettu</string>
@@ -1067,7 +1122,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
<patch id="layout.thumbnails.bypassImageRegionRestrictionsPatch">
<string name="revanced_bypass_image_region_restrictions_title">Ohita kuvan alueen rajoitukset</string>
<string name="revanced_bypass_image_region_restrictions_summary_on">Käyttämällä kuvan isäntä yt4.ggpht.com</string>
<string name="revanced_bypass_image_region_restrictions_summary_off">Käytetään alkuperistä kuvapalvelua\n\nTämän käyttöönotto voi korjata joillakin alueilla estetyt puuttuvat kuvat</string>
<string name="revanced_bypass_image_region_restrictions_summary_off">"Käytetään alkuperäistä kuvien isäntää
Tämä voi korjata puuttuvat kuvat, jotka on estetty tietyillä alueilla"</string>
</patch>
<patch id="layout.thumbnails.alternativeThumbnailsPatch">
<!-- 'Home' should be translated using the same localized wording YouTube displays for the home tab. -->
@@ -1082,7 +1139,11 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_alt_thumbnail_options_entry_2">DeArrow ja Alkuperäiset pikkukuvat</string>
<string name="revanced_alt_thumbnail_options_entry_3">DeArrow- ja kuvakaappaukset</string>
<string name="revanced_alt_thumbnail_options_entry_4">Kuvakaappaukset</string>
<string name="revanced_alt_thumbnail_dearrow_about_summary">DeArrow tarjoaa joukkoon hankittuja pikkukuvia YouTube-videoille. Nämä pikkukuvat ovat usein merkityksellisempiä kuin YouTube\n\nJos käytössä, videon URL-osoitteet lähetetään API-palvelimelle, eikä muita tietoja ole lähetetty. Jos videossa ei ole DeArrow pikkukuvia, sitten alkuperäiset tai vielä kaappaukset näytetään\n\nNapauta tästä saadaksesi lisätietoja DeArrowista</string>
<string name="revanced_alt_thumbnail_dearrow_about_summary">"DeArrow tarjoaa joukkorahoitettuja pienoiskuvia YouTube-videoille. Nämä pienoiskuvat ovat usein relevanttisempia kuin YouTuben tarjoamat.
Jos tämä ominaisuus on käytössä, videoiden URL-osoitteet lähetetään API-palvelimeen, eikä muita tietoja lähetetä. Jos videolla ei ole DeArrow-pienoiskuvia, näkyvät alkuperäiset tai pysäytyskuvat.
Napauta tästä saadaksesi lisätietoja DeArrowista"</string>
<string name="revanced_alt_thumbnail_dearrow_connection_toast_title">Näytä ponnahdusilmoitus, jos API ei ole käytettävissä</string>
<string name="revanced_alt_thumbnail_dearrow_connection_toast_summary_on">Ponnahdusilmoitus näytetään, jos DeArrow ei ole käytettävissä</string>
<string name="revanced_alt_thumbnail_dearrow_connection_toast_summary_off">Ponnahdusilmoitusta ei näytetä, jos DeArrow ei ole käytettävissä</string>
@@ -1121,8 +1182,12 @@ This is because Crowdin requires temporarily flattening this file and removing t
</patch>
<patch id="misc.dimensions.spoof.spoofDeviceDimensionsPatch">
<string name="revanced_spoof_device_dimensions_title">Naamioi laitteen mitat</string>
<string name="revanced_spoof_device_dimensions_summary_on">Laitteen mitat on naamioitu\n\nKorkeammat videolaadut saattavat avautua, mutta videon toisto saattaa pätkiä, akun kesto huonontua ja tuntemattomia sivuvaikutuksia saattaa esiintyä</string>
<string name="revanced_spoof_device_dimensions_summary_off">Laitteen mittoja ei ole naamioitu\n\nTämän käyttöönotto voi avata korkeampia videon laatuja</string>
<string name="revanced_spoof_device_dimensions_summary_on">"Laitteen mitat väärennetty
Korkealaatuisemmat videot saattavat avautua, mutta videon toisto saattaa nykiä, akun kesto voi heikentyä ja tuntemattomia sivuvaikutuksia voi esiintyä"</string>
<string name="revanced_spoof_device_dimensions_summary_off">"Laitteen mittoja ei väärennetä
Tämä voi avata korkealaatuisemmat videot"</string>
<string name="revanced_spoof_device_dimensions_user_dialog_message">Tämän käyttöönotto saattaa aiheuttaa videon toiston pätkimistä, akun keston huonontumista ja tuntemattomia sivuvaikutuksia.</string>
</patch>
<patch id="misc.gms.gmsCoreSupportResourcePatch">
@@ -1172,8 +1237,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_custom_speed_menu_summary_off">Mukautettua nopeusvalikkoa ei näytetä</string>
<string name="revanced_custom_playback_speeds_title">Mukautetut toistonopeudet</string>
<string name="revanced_custom_playback_speeds_summary">Lisää tai muuta mukautettuja toistonopeuksia</string>
<string name="revanced_custom_playback_speeds_invalid">Mukautettujen nopeuksien on oltava alle %s. Käytetään oletusarvoja.</string>
<string name="revanced_custom_playback_speeds_parse_exception">Virheelliset mukautetut toistonopeudet. Käytetään oletusarvoja.</string>
<string name="revanced_custom_playback_speeds_invalid">Mukautetut nopeudet on oltava alle %s</string>
<string name="revanced_custom_playback_speeds_parse_exception">Virheelliset mukautetut toiston nopeudet</string>
<string name="revanced_custom_playback_speeds_auto">Automaattinen</string>
</patch>
<patch id="video.speed.remember.rememberPlaybackSpeedPatch">
@@ -1198,18 +1263,79 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_spoof_video_streams_screen_summary">Naamioi asiakasohjelman videostriimit toisto-ongelmien estämiseksi</string>
<string name="revanced_spoof_video_streams_title">Naamioi videostriimit</string>
<string name="revanced_spoof_video_streams_summary_on">Videostriimit naamioidaan</string>
<string name="revanced_spoof_video_streams_summary_off">Videostriimejä ei naamioida\n\nViden toisto ei ehkä toimi</string>
<string name="revanced_spoof_video_streams_summary_off">"Videovirtoja ei väärennetä
Videon toisto ei välttämättä toimi"</string>
<string name="revanced_spoof_video_streams_user_dialog_message">Tämän asetuksen poistaminen käytöstä voi aiheuttaa ongelmia videotoistossa.</string>
<string name="revanced_spoof_video_streams_client_title">Oletusasiakasohjelma</string>
<string name="revanced_spoof_video_streams_ios_force_avc_title">Pakota AVC (H.264)</string>
<string name="revanced_spoof_video_streams_ios_force_avc_summary_on">Videokoodekki on AVC (H.264)</string>
<string name="revanced_spoof_video_streams_ios_force_avc_summary_off">Videokoodekki on VP9 tai AV1</string>
<string name="revanced_spoof_video_streams_ios_force_avc_no_hardware_vp9_summary_on">Laitteessasi ei ole VP9-laitteiston dekoodausta, ja tämä asetus on aina päällä, kun asiakkaan spoofing on käytössä</string>
<string name="revanced_spoof_video_streams_ios_force_avc_user_dialog_message">Tämän käyttöönotto voi parantaa akun kestoa ja korjata toistoa stuttering.\n\nAVC on suurin resoluutio 1080p, ja videon toisto käyttää enemmän internet-tietoja kuin VP9 tai AV1.</string>
<string name="revanced_spoof_video_streams_ios_force_avc_summary_on">Videon koodekki pakotetaan AVC (H.264)</string>
<string name="revanced_spoof_video_streams_ios_force_avc_summary_off">Videokoodekki määritetään automaattisesti</string>
<string name="revanced_spoof_video_streams_ios_force_avc_user_dialog_message">"Tämän ottaminen käyttöön voi parantaa akun kestoa ja korjata toiston nykimistä.
AVC:llä on enimmäisresoluutio 1080p, Opus-äänikoodekkia ei ole käytettävissä ja videoiden toisto kuluttaa enemmän internet-dataa kuin VP9 tai AV1."</string>
<string name="revanced_spoof_video_streams_about_ios_title">iOS-naamioinnin haittavaikutukset</string>
<string name="revanced_spoof_video_streams_about_ios_summary">• Yksityiset lapset videot eivät välttämättä pelaa\n• Livestreams alusta alkaen\n• Videot saattavat päättyä 1 sekunnin alkupuolella\n• Ei opus-äänikoodekkia</string>
<string name="revanced_spoof_video_streams_about_ios_summary">"• Yksityiset lasten videot eivät välttämättä toistu
• Suoratoistot alkavat alusta
• Videot päättyvät 1 sekuntia aikaisemmin"</string>
<string name="revanced_spoof_video_streams_about_android_vr_title">Android VR -naamioinnin haittavaikutukset</string>
<string name="revanced_spoof_video_streams_about_android_vr_summary">• Lapset videot eivät välttämättä soita\n• Ääniraidan valikko puuttuu\n• Vakaa äänenvoimakkuus ei ole käytettävissä</string>
<string name="revanced_spoof_video_streams_about_android_vr_summary">"• Lasten videot eivät välttämättä toistu
• Suoratoistot alkavat alusta
• Videot päättyvät 1 sekuntia aikaisemmin"</string>
<string name="revanced_spoof_video_streams_language_title">Äänivirran oletuskieli</string>
<string name="revanced_spoof_video_streams_language_DEFAULT">Sovelluksen kieli</string>
<string name="revanced_spoof_video_streams_language_AR">Arabia</string>
<string name="revanced_spoof_video_streams_language_AZ">Azerbaidžan</string>
<string name="revanced_spoof_video_streams_language_BG">Bulgaria</string>
<string name="revanced_spoof_video_streams_language_BN">Bengalin</string>
<string name="revanced_spoof_video_streams_language_CA">Katalaani</string>
<string name="revanced_spoof_video_streams_language_CS">Tšekki</string>
<string name="revanced_spoof_video_streams_language_DA">Tanska</string>
<string name="revanced_spoof_video_streams_language_DE">Saksa</string>
<string name="revanced_spoof_video_streams_language_EL">Kreikka</string>
<string name="revanced_spoof_video_streams_language_EN">Englanti</string>
<string name="revanced_spoof_video_streams_language_ES">Espanja</string>
<string name="revanced_spoof_video_streams_language_ET">Viro</string>
<string name="revanced_spoof_video_streams_language_FA">Persia</string>
<string name="revanced_spoof_video_streams_language_FI">Suomi</string>
<string name="revanced_spoof_video_streams_language_FR">Ranska</string>
<string name="revanced_spoof_video_streams_language_GU">Gudžarati</string>
<string name="revanced_spoof_video_streams_language_HI">Hindi</string>
<string name="revanced_spoof_video_streams_language_HR">Kroatia</string>
<string name="revanced_spoof_video_streams_language_HU">Unkari</string>
<string name="revanced_spoof_video_streams_language_ID">Indonesialainen</string>
<string name="revanced_spoof_video_streams_language_IT">Italia</string>
<string name="revanced_spoof_video_streams_language_JA">Japani</string>
<string name="revanced_spoof_video_streams_language_KK">Kazakki</string>
<string name="revanced_spoof_video_streams_language_KO">Korealainen</string>
<string name="revanced_spoof_video_streams_language_LT">Liettua</string>
<string name="revanced_spoof_video_streams_language_LV">Latvia</string>
<string name="revanced_spoof_video_streams_language_MK">Makedonia</string>
<string name="revanced_spoof_video_streams_language_MN">Mongolia</string>
<string name="revanced_spoof_video_streams_language_MR">Marathi</string>
<string name="revanced_spoof_video_streams_language_MS">Malaiji</string>
<string name="revanced_spoof_video_streams_language_MY">Myanmar</string>
<string name="revanced_spoof_video_streams_language_NL">Hollanti</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">Puola</string>
<string name="revanced_spoof_video_streams_language_PT_BR">Portugali (Brasilia)</string>
<string name="revanced_spoof_video_streams_language_PT_PT">Portugali (Portugali)</string>
<string name="revanced_spoof_video_streams_language_RO">Romania</string>
<string name="revanced_spoof_video_streams_language_RU">Venäjä</string>
<string name="revanced_spoof_video_streams_language_SK">Slovakki</string>
<string name="revanced_spoof_video_streams_language_SL">Sloveeni</string>
<string name="revanced_spoof_video_streams_language_SR">Serbia</string>
<string name="revanced_spoof_video_streams_language_SV">Ruotsi</string>
<string name="revanced_spoof_video_streams_language_SW">Swahili</string>
<string name="revanced_spoof_video_streams_language_TA">Tamili</string>
<string name="revanced_spoof_video_streams_language_TE">Telugu</string>
<string name="revanced_spoof_video_streams_language_TH">Thaimaalainen</string>
<string name="revanced_spoof_video_streams_language_TR">Turkki</string>
<string name="revanced_spoof_video_streams_language_UK">Ukraina</string>
<string name="revanced_spoof_video_streams_language_UR">Urdu</string>
<string name="revanced_spoof_video_streams_language_VI">Vietnam</string>
<string name="revanced_spoof_video_streams_language_ZH">Kiina</string>
</patch>
</app>
<app id="twitch">
@@ -1219,8 +1345,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_block_audio_ads_summary_off">Äänimainoksia ei estetä</string>
</patch>
<patch id="ad.embedded.embeddedAdsPatch">
<string name="revanced_embedded_ads_service_unavailable">%s ei ole käytettävissä. Mainokset voivat näkyä. Kokeile vaihtaa toiseen mainosestopalveluun asetuksissa.</string>
<string name="revanced_embedded_ads_service_failed">Palvelin %s antoi virheen. Mainokset voivat näkyä. Kokeile vaihtaa toiseen mainosestopalveluun asetuksissa.</string>
<string name="revanced_embedded_ads_service_unavailable">%s ei käytettävissä, mainoksia saattaa näkyä. Yritä muuttaa mainosten estoa asetuksissa.</string>
<string name="revanced_embedded_ads_service_failed">%s palautti virheen, mainoksia saattaa näkyä. Yritä muuttaa mainosten estoa asetuksissa.</string>
<string name="revanced_block_embedded_ads_title">Estä upotetut videomainokset</string>
<string name="revanced_block_embedded_ads_entry_1">Pois käytöstä</string>
<string name="revanced_block_embedded_ads_entry_2">Luminous-välityspalvelin</string>

View File

@@ -1,38 +1,36 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Note: All strings must have a unique path, even if the same string is declared in two different apps.
This is because Crowdin requires temporarily flattening this file and removing the <app> and <patch> elements.
All strings must have a unique path, even if the same string is declared in two different apps.
This is because Crowdin requires temporarily flattening this file and removing the <app> and <patch> elements.
# General guidelines and information for translating
## Strings parameters can be reordered to allow more flexible translations if the grammar should be changed.
Strings with new lines must be raw strings where they're wrapped in quotes and new lines are not encoded.
Raw strings still requires escaping embedded double quotes but escaping embedded single quotes is optional.
For example, the patches string:
<string name="revanced_patches_string">You will arrive at %1$s in %2$s hours from now</string>
Could be translated to another language using a rearranged grammar:
<string name="revanced_patches_string">You will arrive %2$s hours from now at %1$s</string>
Raw strings are required because Crowdin AI translations regularly gets confused and
replace \n with an encoded new line character.
For Manager strings:
You will arrive at ${destination} in ${count} hours from now
Could be rearranged by changing the order of the ${} parameters:
You will arrive ${count} hours from now at ${destination}
Bad:
<string name="summary_key">First \'item\' text\nSecond \"item\" text</string>
Reordering is particularly relevant when translating into right to left languages, or for any language with grammar that is noticeably different from English.
Good:
<string name="summary_key">"First 'item' text
Second \"item\" text"</string>
## Single and double quotation marks must be escaped for patch strings (Manager does not require escaping any quotes).
All _patches_ single and double quotation marks must be escaped as \" or \'
Forgetting to do this will cause that string to appear in app with no quotation characters.
Correct:
<string name="revanced_string">You\'re correct. This is the \"correct\" way and this text will appear as expected in the app</string>
Not correct:
<string name="revanced_string">You're not correct. This is not the "correct" way and this text will not appear as expected the in app</string>
-->
<resources>
<app id="shared">
<patch id="misc.checks.checkEnvironmentPatch">
<string name="revanced_check_environment_failed_title">Nabigo ang mga pagsusuri</string>
<string name="revanced_check_environment_dialog_open_official_source_button">Buksan ang Opisyal na Website</string>
<string name="revanced_check_environment_dialog_ignore_button">Balewalain</string>
<string name="revanced_check_environment_failed_message">&lt;h5&gt;Ang app na ito ay tila hindi mo na-patch.&lt;/h5&gt;&lt;br&gt;Ang app na ito ay maaaring hindi gumana nang maayos, &lt;b&gt;maaaring mapanganib o maging delikado gamitin&lt;/b&gt;.&lt;br&gt;&lt;br&gt;Ang mga tseke na ito ay nagpapahiwatig na ang app na ito ay na-pre-patch o nakuha mula sa ibang tao:&lt;br&gt;&lt;br&gt;&lt;small&gt;%1$s&lt;/small&gt;&lt;br&gt;Malakas na inirerekomenda na &lt;b&gt;i-uninstall ang app na ito at i-patch ito sa iyong sarili&lt;/b&gt; upang matiyak na gumagamit ka ng isang na-validate at ligtas na app.&lt;p&gt;&lt;br&gt;Kung hindi papansinin, ang babalang ito ay ipapakita lamang nang dalawang beses.</string>
<string name="revanced_check_environment_not_same_patching_device">Naka-patch sa ibang device</string>
<string name="revanced_check_environment_manager_not_expected_installer">Hindi naka-install sa pamamagitan ng ReVanced Manager</string>
<string name="revanced_check_environment_not_near_patch_time">Naka-patch mahigit sa 10 minuto ang nakararaan</string>
<string name="revanced_check_environment_not_near_patch_time_days">Naka-patch %s araw ang nakalipas</string>
<string name="revanced_check_environment_not_near_patch_time_invalid">Ang petsa ng pagbuo ng APK ay sira</string>
</patch>
<patch id="misc.settings.settingsResourcePatch">
<string name="revanced_settings_confirm_user_dialog_title">Gusto mo bang magpatuloy?</string>
@@ -58,9 +56,17 @@ This is because Crowdin requires temporarily flattening this file and removing t
<!-- 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">Hindi naka-install ang MicroG GmsCore. I-install ito.</string>
<string name="gms_core_dialog_title">Kailangan ng aksyon</string>
<string name="gms_core_dialog_not_whitelisted_not_allowed_in_background_message">Walang pahintulot ang MicroG GmsCore na tumakbo sa background.\n\nSundin ang gabay na \"Don\"t kill my app\" para sa iyong telepono, at ilapat ang mga tagubilin sa iyong pag-install ng MicroG.\n\nKailangan ito para sa app upang gumana.</string>
<string name="gms_core_dialog_not_whitelisted_not_allowed_in_background_message">"Ang MicroG GmsCore ay walang pahintulot na tumakbo sa background.
Sundin ang gabay na \"Huwag patayin ang aking app\" para sa iyong telepono, at ilapat ang mga tagubilin sa iyong pag-install ng MicroG.
Kinakailangan ito para gumana ang app."</string>
<string name="gms_core_dialog_open_website_text">Buksan ang website</string>
<string name="gms_core_dialog_not_whitelisted_using_battery_optimizations_message">Dapat na hindi pinagana ang mga pag-optimize ng baterya ng MicroG GmsCore upang maiwasan ang mga isyu.\n\nI-tap ang button na magpatuloy at huwag paganahin ang mga pag-optimize ng baterya.</string>
<string name="gms_core_dialog_not_whitelisted_using_battery_optimizations_message">"Ang mga pag-optimize ng baterya ng MicroG GmsCore ay dapat na hindi pinagana upang maiwasan ang mga problema.
Ang pag-disable ng mga pag-optimize ng baterya para sa MicroG ay hindi makakaapekto sa paggamit ng baterya.
Tapikin ang pindutan ng pagpapatuloy at payagan ang mga pagbabago sa pag-optimize."</string>
<string name="gms_core_dialog_continue_text">Magpatuloy</string>
</patch>
</app>
@@ -72,12 +78,18 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_settings_screen_03_feed_title">Magpakain</string>
<string name="revanced_settings_screen_04_player_title">Manlalaro</string>
<string name="revanced_settings_screen_05_general_title">Pangkalahatang layout</string>
<string name="revanced_settings_screen_07_seekbar_title">Seekbar</string>
<string name="revanced_settings_screen_08_swipe_controls_title">Mga kontrol sa pag-swipe</string>
<string name="revanced_settings_screen_11_misc_title">Iba pa</string>
<string name="revanced_settings_screen_12_video_title">Video</string>
</patch>
<patch id="misc.backgroundplayback.backgroundPlaybackPatch">
<string name="revanced_shorts_disable_background_playback_title">I-disable ang pag-playback ng Shorts sa background</string>
<string name="revanced_shorts_disable_background_playback_summary_on">Ang pag-playback ng Shorts sa background ay hindi pinagana</string>
<string name="revanced_shorts_disable_background_playback_summary_off">Ang pag-playback ng Shorts sa background ay pinagana</string>
</patch>
<patch id="misc.debugging.enableDebuggingPatch">
<string name="revanced_debug_screen_title">Pag-debug</string>
<string name="revanced_debug_screen_title">Pagde-debug</string>
<string name="revanced_debug_screen_summary">Paganahin o huwag paganahin ang mga opsyon sa pag-debug</string>
<string name="revanced_debug_title">Pag-log sa pag-debug</string>
<string name="revanced_debug_summary_on">Ang mga debug log ay pinagana</string>
@@ -91,7 +103,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_debug_toast_on_error_title">Ipakita ang toast sa ReVanced error</string>
<string name="revanced_debug_toast_on_error_summary_on">Ipinakita ang toast kung may naganap na error</string>
<string name="revanced_debug_toast_on_error_summary_off">Hindi ipinapakita ang toast kung may naganap na error</string>
<string name="revanced_debug_toast_on_error_user_dialog_message">Itinatago ng pag-off sa mga error toast ang lahat ng ReVanced na notification ng error.\n\nHindi ka aabisuhan ng anumang hindi inaasahang kaganapan.</string>
<string name="revanced_debug_toast_on_error_user_dialog_message">"Ang pag-off ng mga toast ng error ay nagtatago ng lahat ng mga abiso ng error ng ReVanced.
Hindi ka aabisuhan ng anumang hindi inaasahang mga kaganapan."</string>
</patch>
<patch id="layout.hide.general.hideLayoutComponentsPatch">
<string name="revanced_disable_like_subscribe_glow_title">I-disable ang glow ng like / subscribe button</string>
@@ -110,7 +124,12 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_channel_watermark_summary_on">Nakatago ang watermark</string>
<string name="revanced_hide_channel_watermark_summary_off">Ipinapakita ang watermark</string>
<string name="revanced_hide_horizontal_shelves_title">Itago ang mga pahalang na istante</string>
<string name="revanced_hide_horizontal_shelves_summary_on">Nakatago ang mga istante gaya ng:\n• Mga nakakabagong balita\n• Magpatuloy sa panonood\n• Mag-explore pa ng mga channel\n• Shopping\n• Panoorin itong muli</string>
<string name="revanced_hide_horizontal_shelves_summary_on">"Ang mga istante ay nakatago tulad ng:
• Mga balitang pang-agham
• Patuloy na panonood
• Galugarin ang higit pang mga channel
• Pamimili
• Panoorin muli"</string>
<string name="revanced_hide_horizontal_shelves_summary_off">Ipinapakita ang mga istante</string>
<!-- 'Join' should be translated using the same localized wording YouTube displays.
This appears in the video player for certain videos. -->
@@ -216,11 +235,15 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_info_cards_section_title">Itago ang seksyon ng mga card ng impormasyon</string>
<string name="revanced_hide_info_cards_section_summary_on">Nakatago ang seksyon ng mga card ng impormasyon</string>
<string name="revanced_hide_info_cards_section_summary_off">Ang seksyon ng mga card ng impormasyon ay ipinapakita</string>
<string name="revanced_hide_key_concepts_section_title">Itago ang seksyong \'Pangunahing konsepto\'</string>
<string name="revanced_hide_key_concepts_section_summary_on">Ang seksyong \'Pangunahing konsepto\' ay nakatago</string>
<string name="revanced_hide_key_concepts_section_summary_off">Ang seksyong \'Pangunahing konsepto\' ay ipinapakita</string>
<string name="revanced_hide_transcript_section_title">Itago ang seksyon ng Transcript</string>
<string name="revanced_hide_transcript_section_summary_on">Nakatago ang seksyon ng transcript</string>
<string name="revanced_hide_transcript_section_summary_off">Ipinapakita ang seksyon ng transcript</string>
<string name="revanced_hide_description_components_screen_title">Paglalarawan ng video</string>
<string name="revanced_hide_description_components_screen_summary">Itago o ipakita ang mga bahagi ng paglalarawan ng video</string>
<string name="revanced_hide_filter_bar_screen_title">Filter bar</string>
<string name="revanced_hide_filter_bar_screen_summary">Itago o ipakita ang filter bar sa feed, paghahanap, at mga kaugnay na video</string>
<string name="revanced_hide_filter_bar_feed_in_feed_title">Itago sa feed</string>
<string name="revanced_hide_filter_bar_feed_in_feed_summary_on">Nakatago sa feed</string>
@@ -233,12 +256,17 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_filter_bar_feed_in_related_videos_summary_off">Ipinapakita sa mga kaugnay na video</string>
<string name="revanced_comments_screen_title">Mga komento</string>
<string name="revanced_comments_screen_summary">Itago o ipakita ang mga bahagi ng seksyon ng komento</string>
<string name="revanced_hide_comments_chat_summary_summary_on">Nakatago ang \'buod ng chat\'</string>
<string name="revanced_hide_comments_chat_summary_summary_off">Ipinapakita ang \'buod ng chat\'</string>
<string name="revanced_hide_comments_by_members_header_title">Itago ang header ng \"Mga komento ng mga miyembro\"</string>
<string name="revanced_hide_comments_by_members_header_summary_on">Nakatago ang header ng \"Mga komento ng mga miyembro\"</string>
<string name="revanced_hide_comments_by_members_header_summary_off">Ipinapakita ang header ng \"Mga komento ng mga miyembro\"</string>
<string name="revanced_hide_comments_section_title">Itago ang seksyon ng mga komento</string>
<string name="revanced_hide_comments_section_summary_on">Nakatago ang seksyon ng mga komento</string>
<string name="revanced_hide_comments_section_summary_off">Ipinapakita ang seksyon ng mga komento</string>
<string name="revanced_hide_comments_create_a_short_button_title">Itago ang butong \'Gumawa ng Short\'</string>
<string name="revanced_hide_comments_create_a_short_button_summary_on">Ang butong \'Gumawa ng Short\' ay nakatago</string>
<string name="revanced_hide_comments_create_a_short_button_summary_off">Ang butong \'Gumawa ng Short\' ay ipinapakita</string>
<string name="revanced_hide_comments_preview_comment_title">Itago ang preview na komento</string>
<string name="revanced_hide_comments_preview_comment_summary_on">Nakatago ang preview ng komento</string>
<string name="revanced_hide_comments_preview_comment_summary_off">Ang pag-preview ng komento ay ipinapakita</string>
@@ -249,6 +277,12 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_summary_on">Nakatago ang mga pindutan ng timestamp at emoji</string>
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_summary_off">Ipinapakita ang mga pindutan ng timestamp at emoji</string>
<!-- https://logos.fandom.com/wiki/YouTube/Yoodles -->
<string name="revanced_hide_doodles_title">Itago ang mga Doodles ng YouTube</string>
<string name="revanced_hide_doodles_summary_on">Ang mga Doodles sa search bar ay nakatago</string>
<string name="revanced_hide_doodles_summary_off">Ang mga Doodles sa search bar ay ipinapakita</string>
<string name="revanced_hide_doodles_user_dialog_message">"Ang mga Doodles ng YouTube ay ipinapakita ng ilang araw bawat taon.
Kung ang isang Doodle ay kasalukuyang ipinapakita sa iyong rehiyon at ang setting na ito ng pagtatago ay naka-on, kung gayon ang filter bar sa ibaba ng search bar ay itatago rin."</string>
<string name="revanced_custom_filter_screen_title">Custom na filter</string>
<string name="revanced_custom_filter_screen_summary">Itago ang mga bahagi gamit ang mga custom na filter</string>
<string name="revanced_custom_filter_title">Paganahin ang custom na filter</string>
@@ -272,16 +306,36 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_keyword_content_phrases_title">Mga keyword na itatago</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. -->
<string name="revanced_hide_keyword_content_phrases_summary">"Mga keyword at parirala upang itago, pinaghiwalay ng mga bagong linya
Ang mga keyword ay maaaring mga pangalan ng channel o anumang text na ipinapakita sa mga pamagat ng video
Ang mga salita na may malalaking titik sa gitna ay dapat ipasok gamit ang casing (halimbawa: iPhone, TikTok, LeBlanc)"</string>
<string name="revanced_hide_keyword_content_about_title">Tungkol sa pag-filter ng keyword</string>
<string name="revanced_hide_keyword_content_about_summary">"Ang mga resulta ng Home/Subscription/Search ay na-filter upang itago ang nilalamang tumutugma sa mga parirala ng keyword
Mga limitasyon
• Ang mga Shorts ay hindi maaaring itago sa pamamagitan ng pangalan ng channel
• Ang ilang mga bahagi ng UI ay maaaring hindi maitago
• Ang paghahanap para sa isang keyword ay maaaring walang resulta"</string>
<string name="revanced_hide_keyword_content_about_whole_words_title">I-match ang mga buong salita</string>
<!-- Translations _must_ use a localized example. For languages that do not use spaces between words (Chinese, Japanese, etc) the English AI example should be used since no localized examples exist. Or if using machine translations, or if nobody wants to think of a localized example, then the English 'ai' example should be left as-is. -->
<string name="revanced_hide_keyword_content_about_whole_words_summary">Ang paglalagay ng keyword/parirala sa loob ng mga panipi ay pipigil sa mga bahagyang pagtutugma ng mga pamagat ng video at pangalan ng channel&lt;br&gt;&lt;br&gt;Halimbawa,&lt;br&gt;&lt;b&gt;\"ai\"&lt;/b&gt; itatago ang video: &lt;b&gt;Paano gumagana ang AI?&lt;/b&gt;&lt;br&gt;ngunit hindi itatago: &lt;b&gt;What does fair use mean?&lt;/b&gt;</string>
<!-- Translations of this should not be longer than the original English text, otherwise the text can be clipped and not entirely shown. -->
<string name="revanced_hide_keyword_toast_invalid_common">Hindi magagamit ang keyword: %s</string>
<string name="revanced_hide_keyword_toast_invalid_common_whole_word_required">Magdagdag ng mga quote upang gamitin ang keyword: %s</string>
<string name="revanced_hide_keyword_toast_invalid_conflicting">Ang keyword ay may mga salungat na deklarasyon: %s</string>
<string name="revanced_hide_keyword_toast_invalid_length">Masyadong maikli ang keyword at nangangailangan ng mga quote: %s</string>
<string name="revanced_hide_keyword_toast_invalid_broad">Ang keyword ay magtatago ng lahat ng mga video: %s</string>
</patch>
<patch id="ad.general.hideAdsResourcePatch">
<string name="revanced_hide_general_ads_title">Itago ang mga pangkalahatang ad</string>
<string name="revanced_hide_general_ads_summary_on">Nakatago ang mga pangkalahatang ad</string>
<string name="revanced_hide_general_ads_summary_off">Ipinapakita ang mga pangkalahatang ad</string>
<string name="revanced_hide_fullscreen_ads_title">Itago ang mga fullscreen na ad</string>
<string name="revanced_hide_fullscreen_ads_summary_on">Nakatago ang mga fullscreen na ad\n\nAvailable lang ang feature na ito para sa mga mas lumang device</string>
<string name="revanced_hide_fullscreen_ads_summary_on">"Ang mga fullscreen ad ay nakatago
Ang tampok na ito ay magagamit lamang para sa mga mas lumang device"</string>
<string name="revanced_hide_fullscreen_ads_summary_off">Ipinapakita ang mga fullscreen na ad</string>
<string name="revanced_hide_buttoned_ads_title">Itago ang mga naka-button na ad</string>
<string name="revanced_hide_buttoned_ads_summary_on">Nakatago ang mga naka-button na ad</string>
@@ -295,6 +349,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_products_banner_title">Itago ang banner para tingnan ang mga produkto</string>
<string name="revanced_hide_products_banner_summary_on">Nakatago ang banner</string>
<string name="revanced_hide_products_banner_summary_off">Ipinakita ang banner</string>
<string name="revanced_hide_player_store_shelf_title">Itago ang istante ng pamimili ng player</string>
<string name="revanced_hide_player_store_shelf_summary_on">Ang istante ng pamimili ay nakatago</string>
<string name="revanced_hide_player_store_shelf_summary_off">Ang istante ng pamimili ay ipinapakita</string>
<string name="revanced_hide_shopping_links_title">Itago ang mga link sa pamimili sa paglalarawan ng video</string>
<string name="revanced_hide_shopping_links_summary_on">Nakatago ang mga link sa pamimili</string>
<string name="revanced_hide_shopping_links_summary_off">Ipinapakita ang mga link sa pamimili</string>
@@ -380,6 +437,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_swipe_lowest_value_enable_auto_brightness_title">I-enable ang galaw ng auto-brightness</string>
<string name="revanced_swipe_lowest_value_enable_auto_brightness_summary_on">Ang pag-swipe pababa sa pinakamababang halaga ng brightness gesture ay nagbibigay-daan sa auto-brightness</string>
<string name="revanced_swipe_lowest_value_enable_auto_brightness_summary_off">Ang pag-swipe pababa sa pinakamababang halaga ay hindi nagpapagana ng auto-brightness</string>
<string name="revanced_swipe_lowest_value_enable_auto_brightness_overlay_text">Auto</string>
<string name="revanced_swipe_overlay_timeout_title">Mag-swipe overlay timeout</string>
<string name="revanced_swipe_overlay_timeout_summary">Ang dami ng millisecond na nakikita ang overlay</string>
<string name="revanced_swipe_text_overlay_size_title">I-swipe ang laki ng teksto ng overlay</string>
@@ -438,6 +496,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_home_button_summary_on">Nakatago ang home button</string>
<string name="revanced_hide_home_button_summary_off">Ipinapakita ang home button</string>
<!-- 'Shorts' should be translated using the same localized wording YouTube displays the tab. -->
<string name="revanced_hide_shorts_button_title">Itago ang Shorts</string>
<string name="revanced_hide_shorts_button_summary_on">Nakatago ang pindutan sa Shorts</string>
<string name="revanced_hide_shorts_button_summary_off">Nakikita ang Shorts button</string>
<!-- The Create button has no display name. Translate normally. -->
@@ -450,7 +509,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_subscriptions_button_summary_off">Ang pindutan ng mga subscription ay ipinapakita</string>
<!-- 'Notifications' should be translated using the same localized wording YouTube displays the tab. -->
<string name="revanced_switch_create_with_notifications_button_title">Lumipat ng Gumawa gamit ang Mga Notification</string>
<string name="revanced_switch_create_with_notifications_button_summary_on">Ang button na Gumawa ay inililipat gamit ang Notifications button\n\nTandaan: Ang pagpapagana nito ay pilit ding itinatago ang mga video ad</string>
<string name="revanced_switch_create_with_notifications_button_summary_on">"Ang pindutan ng Lumikha ay pinalitan ng pindutan ng Mga Notification
Tandaan: Ang pagpapagana nito ay nagtatago rin ng mga ad ng video"</string>
<string name="revanced_switch_create_with_notifications_button_summary_off">Ang pindutan ng Lumikha ay hindi inililipat gamit ang pindutan ng Mga Notification</string>
<string name="revanced_hide_navigation_button_labels_title">Itago ang mga label ng navigation button</string>
<string name="revanced_hide_navigation_button_labels_summary_on">Nakatago ang mga label</string>
@@ -468,6 +529,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_player_flyout_additional_settings_summary_on">Nakatago ang menu ng mga karagdagang setting</string>
<string name="revanced_hide_player_flyout_additional_settings_summary_off">Ang karagdagang menu ng mga setting ay ipinapakita</string>
<!-- 'Sleep timer' should be translated using the same localized wording YouTube displays for the menu item. -->
<string name="revanced_hide_player_flyout_sleep_timer_title">Itago ang Sleep timer</string>
<string name="revanced_hide_player_flyout_sleep_timer_summary_on">Ang menu ng Sleep timer ay nakatago</string>
<string name="revanced_hide_player_flyout_sleep_timer_summary_off">Ang menu ng Sleep timer ay ipinapakita</string>
<!-- 'Loop video' should be translated using the same localized wording YouTube displays for the menu item. -->
<string name="revanced_hide_player_flyout_loop_video_title">Itago ang Loop na video</string>
<string name="revanced_hide_player_flyout_loop_video_summary_on">Nakatago ang menu ng loop na video</string>
@@ -476,6 +540,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_player_flyout_ambient_mode_title">Itago ang Ambient mode</string>
<string name="revanced_hide_player_flyout_ambient_mode_summary_on">Nakatago ang menu ng ambient mode</string>
<string name="revanced_hide_player_flyout_ambient_mode_summary_off">Ipinapakita ang menu ng ambient mode</string>
<string name="revanced_hide_player_flyout_stable_volume_title">Itago ang Stable volume</string>
<string name="revanced_hide_player_flyout_stable_volume_summary_off">Ang menu ng Stable volume ay ipinapakita</string>
<string name="revanced_hide_player_flyout_stable_volume_summary_on">Ang menu ng Stable volume ay nakatago</string>
<!-- 'Help & feedback' should be translated using the same localized wording YouTube displays for the menu item. -->
<string name="revanced_hide_player_flyout_help_title">Itago ang Tulong &amp; puna</string>
<string name="revanced_hide_player_flyout_help_summary_on">Tulong &amp; nakatago ang menu ng feedback</string>
@@ -510,7 +577,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_player_previous_next_buttons_summary_on">Nakatago ang mga pindutan</string>
<string name="revanced_hide_player_previous_next_buttons_summary_off">Ang mga pindutan ay ipinapakita</string>
<string name="revanced_hide_cast_button_title">Itago ang cast button</string>
<string name="revanced_hide_cast_button_summary_on">Nakatago ang pindutan sa cast</string>
<string name="revanced_hide_cast_button_summary_on">Ang buton ng Cast ay nakatago</string>
<string name="revanced_hide_cast_button_summary_off">Nakikita ang cast button</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">Button na itago ang mga caption</string>
@@ -549,6 +616,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_seekbar_thumbnail_summary_off">Ipinapakita ang thumbnail seekbar</string>
</patch>
<patch id="layout.hide.shorts.hideShortsComponentsResourcePatch">
<string name="revanced_shorts_player_screen_title">Shorts player</string>
<string name="revanced_shorts_player_screen_summary">Itago o ipakita ang mga sangkap sa Shorts player</string>
<!-- 'home' should be translated using the same localized wording YouTube displays for the home tab. -->
<string name="revanced_hide_shorts_home_title">Itago ang Shorts sa home feed</string>
<string name="revanced_hide_shorts_home_summary_on">Nakatago ang Shorts sa home feed</string>
@@ -583,9 +652,30 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_shorts_location_label_title">Itago ang label ng lokasyon</string>
<string name="revanced_hide_shorts_location_label_summary_on">Nakatago ang label ng lokasyon</string>
<string name="revanced_hide_shorts_location_label_summary_off">Ipinapakita ang label ng lokasyon</string>
<string name="revanced_hide_shorts_save_sound_button_title">Itago ang buton ng pag-save ng musika</string>
<string name="revanced_hide_shorts_save_sound_button_summary_on">Ang buton ng pag-save ng musika ay nakatago</string>
<string name="revanced_hide_shorts_save_sound_button_summary_off">Ang buton ng pag-save ng musika ay ipinapakita</string>
<string name="revanced_hide_shorts_use_template_button_title">Itago ang buton ng paggamit ng template</string>
<string name="revanced_hide_shorts_use_template_button_summary_on">Ang buton ng paggamit ng template ay nakatago</string>
<string name="revanced_hide_shorts_use_template_button_summary_off">Ang buton ng paggamit ng template ay ipinapakita</string>
<string name="revanced_hide_shorts_upcoming_button_title">Itago ang buton ng paparating</string>
<string name="revanced_hide_shorts_upcoming_button_summary_on">Nakatago ang pindutan ng \"Upcoming\"</string>
<string name="revanced_hide_shorts_upcoming_button_summary_off">Ipinapakita ang pindutan ng \"Upcoming\"</string>
<string name="revanced_hide_shorts_green_screen_button_title">Itago ang pindutan ng \"Green screen\"</string>
<string name="revanced_hide_shorts_green_screen_button_summary_on">Nakatago ang pindutan ng \"Green screen\"</string>
<string name="revanced_hide_shorts_green_screen_button_summary_off">Ipinapakita ang pindutan ng \"Green screen\"</string>
<string name="revanced_hide_shorts_hashtag_button_title">Itago ang pindutan ng \"Hashtag\"</string>
<string name="revanced_hide_shorts_hashtag_button_summary_on">Nakatago ang pindutan ng \"Hashtag\"</string>
<string name="revanced_hide_shorts_hashtag_button_summary_off">Ipinapakita ang pindutan ng \"Hashtag\"</string>
<string name="revanced_hide_shorts_search_suggestions_title">Itago ang mga mungkahi sa paghahanap</string>
<string name="revanced_hide_shorts_search_suggestions_summary_on">Nakatago ang mga mungkahi sa paghahanap</string>
<string name="revanced_hide_shorts_search_suggestions_summary_off">Ipinapakita ang mga mungkahi sa paghahanap</string>
<string name="revanced_hide_shorts_stickers_title">Itago ang mga sticker</string>
<string name="revanced_hide_shorts_stickers_summary_on">Nakatago ang mga sticker</string>
<string name="revanced_hide_shorts_stickers_summary_off">Ipinapakita ang mga sticker</string>
<string name="revanced_hide_shorts_like_fountain_title">Itago ang \"like fountain\"</string>
<string name="revanced_hide_shorts_like_fountain_summary_on">Nakatago ang animation ng \"like button fountain\"</string>
<string name="revanced_hide_shorts_like_fountain_summary_off">Ipinapakita ang animation ng \"like button fountain\"</string>
<string name="revanced_hide_shorts_like_button_title">Itago ang like button</string>
<string name="revanced_hide_shorts_like_button_summary_on">Nakatago ang like button</string>
<string name="revanced_hide_shorts_like_button_summary_off">Ipapakita ang like button</string>
@@ -640,6 +730,11 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_player_popup_panels_summary_on">Nakatago ang mga popup panel ng player</string>
<string name="revanced_hide_player_popup_panels_summary_off">Ipinapakita ang mga popup panel ng player</string>
</patch>
<patch id="layout.player.fullscreen.openVideosFullscreen">
<string name="revanced_open_videos_fullscreen_portrait_title">Buksan ang mga video sa fullscreen portrait</string>
<string name="revanced_open_videos_fullscreen_portrait_summary_on">Binubuksan ang mga video sa fullscreen</string>
<string name="revanced_open_videos_fullscreen_portrait_summary_off">Hindi binubuksan ang mga video sa fullscreen</string>
</patch>
<patch id="layout.player.overlay.customPlayerOverlayOpacityResourcePatch">
<string name="revanced_player_overlay_opacity_title">Opacity ng overlay ng player</string>
<string name="revanced_player_overlay_opacity_summary">Ang halaga ng opacity sa pagitan ng 0-100, kung saan ang 0 ay transparent</string>
@@ -657,7 +752,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_ryd_enable_summary_off">Hindi ipinapakita ang mga hindi gusto</string>
<string name="revanced_ryd_shorts_title">Ipakita ang mga hindi gusto sa Shorts</string>
<string name="revanced_ryd_shorts_summary_on">Mga hindi gusto na ipinapakita sa Shorts</string>
<string name="revanced_ryd_shorts_summary_on_disclaimer">Mga hindi gusto na ipinapakita sa Shorts\n\nLimitasyon: Maaaring hindi lumabas ang mga hindi gusto sa incognito mode</string>
<string name="revanced_ryd_shorts_summary_on_disclaimer">"Mga Dislike na ipinapakita sa Shorts
Limitasyon: Ang mga Dislike ay maaaring hindi lumitaw sa incognito mode"</string>
<string name="revanced_ryd_shorts_summary_off">Nakatago ang mga hindi gusto sa Shorts</string>
<string name="revanced_ryd_dislike_percentage_title">Hindi gusto bilang porsyento</string>
<string name="revanced_ryd_dislike_percentage_summary_on">Mga hindi gusto na ipinapakita bilang porsyento</string>
@@ -695,6 +792,16 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_wide_searchbar_summary_off">Naka-disable ang malawak na search bar</string>
</patch>
<patch id="layout.seekbar.seekbarThumbnailsPatch">
<string name="revanced_seekbar_thumbnails_high_quality_title">Paganahin ang mataas na kalidad na mga thumbnail</string>
<string name="revanced_seekbar_thumbnails_high_quality_summary_on">Mataas ang kalidad ng mga thumbnail ng seekbar</string>
<string name="revanced_seekbar_thumbnails_high_quality_summary_off">Katamtaman ang kalidad ng mga thumbnail ng seekbar</string>
<string name="revanced_seekbar_thumbnails_high_quality_legacy_summary_on">Mataas ang kalidad ng mga thumbnail ng fullscreen seekbar</string>
<string name="revanced_seekbar_thumbnails_high_quality_legacy_summary_off">Katamtaman ang kalidad ng mga thumbnail ng fullscreen seekbar</string>
<string name="revanced_seekbar_thumbnails_high_quality_dialog_message">"Ito ay magpapanumbalik din ng mga thumbnail sa mga livestream na walang mga thumbnail ng seekbar.
Ang mga thumbnail ng seekbar ay gagamit ng parehong kalidad ng kasalukuyang video.
Ang tampok na ito ay pinakamahusay na gumagana sa kalidad ng video na 720p o mas mababa at kapag gumagamit ng napakabilis na koneksyon sa internet."</string>
<string name="revanced_restore_old_seekbar_thumbnails_title">Ibalik ang mga lumang thumbnail ng seekbar</string>
<string name="revanced_restore_old_seekbar_thumbnails_summary_on">Lalabas ang mga thumbnail ng Seekbar sa itaas ng seekbar</string>
<string name="revanced_restore_old_seekbar_thumbnails_summary_off">Lalabas ang mga thumbnail ng Seekbar sa fullscreen</string>
@@ -741,6 +848,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_sb_general_skipcount_sum_off">Hindi pinagana ang pagsubaybay sa bilang ng laktawan</string>
<string name="revanced_sb_general_min_duration">Minimum na tagal ng segment</string>
<string name="revanced_sb_general_min_duration_sum">Ang mga segment na mas maikli kaysa sa halagang ito (sa mga segundo) ay hindi ipapakita o lalaktawan</string>
<string name="revanced_sb_general_min_duration_invalid">Hindi wastong tagal ng oras</string>
<string name="revanced_sb_general_uuid">Ang iyong pribadong user id</string>
<string name="revanced_sb_general_uuid_sum">Gawin itong pribado. Ito ay gaya ng password na hindi dapat ibinabahagi sa iba. Kapag ito ay hawak ng iba, maaari ka nilang gayahin</string>
<string name="revanced_sb_general_uuid_invalid">Dapat na hindi bababa sa 30 character ang haba ng pribadong user id</string>
@@ -756,9 +864,13 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_sb_settings_import_successful">Matagumpay na na-import ang mga setting</string>
<string name="revanced_sb_settings_import_failed">Nabigong i-import: %s</string>
<string name="revanced_sb_settings_export_failed">Nabigong i-export: %s</string>
<string name="revanced_sb_settings_revanced_export_user_id_warning">Ang iyong mga setting ay naglalaman ng isang pribadong SponsorBlock userid.\n\nAng iyong user id ay tulad ng isang password at hindi ito dapat ibahagi kailanman.\n</string>
<string name="revanced_sb_settings_revanced_export_user_id_warning">"Ang iyong mga setting ay naglalaman ng isang pribadong SponsorBlock userid.
Ang iyong user id ay parang isang password at hindi dapat ibahagi.
"</string>
<string name="revanced_sb_settings_revanced_export_user_id_warning_dismiss">Huwag ipakitang muli</string>
<string name="revanced_sb_diff_segments">Baguhin ang gawi ng segment</string>
<string name="revanced_sb_segments_sponsor">Sponsor</string>
<string name="revanced_sb_segments_sponsor_sum">Bayad na promosyon, bayad na referral at direktang advertisement. Hindi para sa self-promote o libreng shout-out sa mga sanhi/creator/website/produktong gusto nila</string>
<string name="revanced_sb_segments_selfpromo">Walang bayad/Pag-promote sa Sarili</string>
<string name="revanced_sb_segments_selfpromo_sum">Katulad ng \"Sponsor\" maliban sa hindi bayad o self-promote. May kasamang mga seksyon tungkol sa merchandise, mga donasyon, o impormasyon tungkol sa kung kanino sila nakipagtulungan</string>
@@ -766,10 +878,13 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_sb_segments_interaction_sum">Isang maikling paalala na i-like, i-subscribe o sundan sila sa gitna ng content. Kung ito ay mahaba o tungkol sa isang partikular na bagay, dapat ay nasa ilalim ito ng self-promote</string>
<string name="revanced_sb_segments_highlight">I-highlight</string>
<string name="revanced_sb_segments_highlight_sum">Ang bahagi ng video na hinahanap ng karamihan</string>
<string name="revanced_sb_segments_intro">Intermission/Intro Animation</string>
<string name="revanced_sb_segments_intro_sum">Isang agwat na walang aktwal na nilalaman. Maaaring isang pause, static na frame, o umuulit na animation. Hindi kasama ang mga transition na naglalaman ng impormasyon</string>
<string name="revanced_sb_segments_outro">Mga Endcard/Credits</string>
<string name="revanced_sb_segments_outro_sum">Mga kredito o kapag lumitaw ang mga endcard ng YouTube. Hindi para sa mga konklusyon na may impormasyon</string>
<string name="revanced_sb_segments_preview">Preview/Recap/Hook</string>
<string name="revanced_sb_segments_preview_sum">Koleksyon ng mga clip na nagpapakita kung ano ang paparating o kung ano ang nangyari sa video o sa iba pang mga video ng isang serye, kung saan ang lahat ng impormasyon ay inuulit sa ibang lugar</string>
<string name="revanced_sb_segments_filler">Filler Tangent/Jokes</string>
<string name="revanced_sb_segments_filler_sum">Ang mga tangential na eksena ay idinagdag lamang para sa tagapuno o katatawanan na hindi kinakailangan upang maunawaan ang pangunahing nilalaman ng video. Hindi kasama ang mga segment na nagbibigay ng mga detalye ng konteksto o background</string>
<string name="revanced_sb_segments_nomusic">Musika: Seksyon na Hindi Musika</string>
<string name="revanced_sb_segments_nomusic_sum">Para lang gamitin sa mga music video. Mga seksyon ng mga music video na walang musika, na hindi pa sakop ng isa pang kategorya</string>
@@ -812,9 +927,10 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_sb_submit_failed_invalid">Hindi maisumite ang segment: %s</string>
<string name="revanced_sb_submit_failed_timeout">Pansamantalang hindi gumagana ang SponsorBlock</string>
<string name="revanced_sb_submit_failed_unknown_error">Hindi maisumite ang segment (status: %1$d %2$s)</string>
<string name="revanced_sb_submit_failed_rate_limit">Hindi maisumite ang segment.\nRate Limited (napakarami mula sa parehong user o IP)</string>
<string name="revanced_sb_submit_failed_rate_limit">Hindi maipadala ang segment. Rate Limited (masyadong marami mula sa parehong user o IP)</string>
<string name="revanced_sb_submit_failed_forbidden">Hindi maisumite ang segment: %s</string>
<string name="revanced_sb_submit_failed_duplicate">Hindi maisumite ang segment.\nMeron na</string>
<string name="revanced_sb_submit_failed_duplicate">"Hindi maipadala ang segment.
Umiiral na"</string>
<string name="revanced_sb_submit_succeeded">Matagumpay na naisumite ang segment</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. -->
<string name="revanced_sb_sponsorblock_connection_failure_timeout">Pansamantalang hindi available ang SponsorBlock (nag-time out ang API)</string>
@@ -823,25 +939,36 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_sb_vote_failed_timeout">Hindi makaboto para sa segment (nag-time out ang API)</string>
<string name="revanced_sb_vote_failed_unknown_error">Hindi makaboto para sa segment (status: %1$d %2$s)</string>
<string name="revanced_sb_vote_failed_forbidden">Hindi makaboto para sa segment: %s</string>
<string name="revanced_sb_vote_upvote">Upvote</string>
<string name="revanced_sb_vote_downvote">I-downvote</string>
<string name="revanced_sb_vote_category">Baguhin ang kategorya</string>
<string name="revanced_sb_vote_no_segments">Walang mga segment na iboboto</string>
<string name="revanced_sb_new_segment_choose_category">Piliin ang kategorya ng segment</string>
<string name="revanced_sb_new_segment_disabled_category">Naka-disable ang kategorya sa mga setting. Paganahin ang kategoryang isumite.</string>
<string name="revanced_sb_new_segment_title">Bagong segment ng SponsorBlock</string>
<string name="revanced_sb_new_segment_mark_time_as_question">Itakda ang %s bilang simula o katapusan ng isang bagong segment?</string>
<string name="revanced_sb_new_segment_mark_start">simulan</string>
<string name="revanced_sb_new_segment_mark_end">wakas</string>
<string name="revanced_sb_new_segment_now">ngayon</string>
<string name="revanced_sb_new_segment_time_start">Oras na magsisimula ang segment sa</string>
<string name="revanced_sb_new_segment_time_end">Oras na nagtatapos ang segment sa</string>
<string name="revanced_sb_new_segment_confirm_title">Tama ba ang mga oras?</string>
<string name="revanced_sb_new_segment_confirm_content">Ang segment ay mula sa\n\n%1$s\nto\n%2$s\n\n(%3$s)\n\nHanda nang isumite?</string>
<string name="revanced_sb_new_segment_confirm_content">"Ang segment ay mula sa
%1$s
papunta sa
%2$s
(%3$s)
Isumite na ba?"</string>
<string name="revanced_sb_new_segment_start_is_before_end">Ang simula ay dapat bago ang katapusan</string>
<string name="revanced_sb_new_segment_mark_locations_first">Markahan muna ang dalawang lokasyon sa time bar</string>
<string name="revanced_sb_new_segment_preview_segment_first">Silipin ang segment, at tiyaking lumalaktaw ito nang maayos</string>
<string name="revanced_sb_new_segment_edit_by_hand_title">Manu-manong i-edit ang timing ng segment</string>
<string name="revanced_sb_new_segment_edit_by_hand_content">Gusto mo bang i-edit ang timing para sa pagsisimula o pagtatapos ng segment?</string>
<string name="revanced_sb_new_segment_edit_by_hand_parse_error">Hindi wastong oras ang ibinigay</string>
<string name="revanced_sb_stats">Stats</string>
<!-- Shown in the settings preferences, and translations can be any text length. -->
<string name="revanced_sb_stats_connection_failure">Pansamantalang hindi available ang mga istatistika (hina ang API)</string>
<string name="revanced_sb_stats_loading">Naglo-load...</string>
@@ -852,6 +979,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_sb_stats_username_changed">Matagumpay na nabago ang username</string>
<string name="revanced_sb_stats_reputation">Ang iyong reputasyon ay &lt;b&gt;%.2f&lt;/b&gt;</string>
<string name="revanced_sb_stats_submissions">Nilikha mo ang &lt;b&gt;%s&lt;/b&gt; mga segment</string>
<string name="revanced_sb_stats_submissions_sum">Tapikin dito upang tingnan ang iyong mga segment</string>
<string name="revanced_sb_stats_saved_zero">SponsorBlock leaderboard</string>
<string name="revanced_sb_stats_saved">Nailigtas mo ang mga tao mula sa &lt;b&gt;%s&lt;/b&gt; mga segment</string>
<string name="revanced_sb_stats_saved_sum_zero">Mag-tap dito para makita ang mga pandaigdigang istatistika at nangungunang contributor</string>
<string name="revanced_sb_stats_saved_sum">Iyon ay &lt;b&gt;%s&lt;/b&gt; ng kanilang buhay.&lt;br&gt;Mag-tap dito para makita ang leaderboard</string>
@@ -874,10 +1003,15 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_spoof_app_version_title">Spoof na bersyon ng app</string>
<string name="revanced_spoof_app_version_summary_on">Na-spoof ang bersyon</string>
<string name="revanced_spoof_app_version_summary_off">Hindi na-spoof ang bersyon</string>
<string name="revanced_spoof_app_version_user_dialog_message">Gagawin ang bersyon ng app sa mas lumang bersyon ng YouTube.\n\nBabago nito ang hitsura at mga feature ng app, ngunit maaaring mangyari ang hindi kilalang mga side effect.\n\nKung i-off sa ibang pagkakataon, inirerekomendang i-clear ang data ng app sa maiwasan ang mga UI bug.</string>
<string name="revanced_spoof_app_version_user_dialog_message">"Ang bersyon ng app ay mapapang-ulol sa isang mas lumang bersyon ng YouTube.
Ito ay magbabago sa hitsura at mga tampok ng app, ngunit maaaring mangyari ang mga hindi kilalang epekto.
Kung mamaya ay patayin, inirerekumenda na i-clear ang data ng app upang maiwasan ang mga bug ng UI."</string>
<!-- 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 -->
<string name="revanced_spoof_app_version_target_title">Target na bersyon ng Spoof app</string>
<string name="revanced_spoof_app_version_target_entry_1">19.35.36 - Ibalik ang mga lumang icon ng Shorts player</string>
<!-- 'RYD' is 'Return YouTube Dislike' -->
<string name="revanced_spoof_app_version_target_legacy_entry_1">18.33.40 - Ibalik ang RYD sa incognito mode ng Shorts</string>
<string name="revanced_spoof_app_version_target_legacy_entry_2">18.20.39 - Ibalik ang malawak na bilis ng video &amp; kalidad na menu</string>
@@ -887,11 +1021,20 @@ This is because Crowdin requires temporarily flattening this file and removing t
<patch id="layout.startpage.changeStartPagePatch">
<string name="revanced_change_start_page_title">Itakda ang panimulang pahina</string>
<string name="revanced_change_start_page_entry_default">Regular</string>
<string name="revanced_change_start_page_entry_browse">Mag-browse ng mga channel</string>
<string name="revanced_change_start_page_entry_explore">Galugarin</string>
<string name="revanced_change_start_page_entry_gaming">Gaming</string>
<string name="revanced_change_start_page_entry_history">Kasaysayan</string>
<string name="revanced_change_start_page_entry_library">Library</string>
<string name="revanced_change_start_page_entry_liked_videos">Nagustuhan ang mga video</string>
<string name="revanced_change_start_page_entry_live">Live</string>
<string name="revanced_change_start_page_entry_movies">Movies</string>
<string name="revanced_change_start_page_entry_music">Music</string>
<string name="revanced_change_start_page_entry_search">Maghanap</string>
<string name="revanced_change_start_page_entry_sports">Sports</string>
<string name="revanced_change_start_page_entry_subscriptions">Mga subscription</string>
<string name="revanced_change_start_page_entry_trending">Trending</string>
<string name="revanced_change_start_page_entry_watch_later">Panoorin mamaya</string>
</patch>
<patch id="layout.startupshortsreset.disableResumingShortsOnStartupPatch">
<string name="revanced_disable_resuming_shorts_player_title">Huwag paganahin ang pagpapatuloy na manlalaro ng Shorts</string>
@@ -899,6 +1042,12 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_disable_resuming_shorts_player_summary_off">Magpapatuloy ang manlalaro ng shorts sa pagsisimula ng app</string>
</patch>
<patch id="layout.shortsautoplay.shortsAutoplayPatch">
<string name="revanced_shorts_autoplay_title">Awtomatikong pag-play ng Shorts</string>
<string name="revanced_shorts_autoplay_summary_on">Awtomatikong magpa-play ang mga Shorts</string>
<string name="revanced_shorts_autoplay_summary_off">Uulitin ang mga Shorts</string>
<string name="revanced_shorts_autoplay_background_title">Awtomatikong pag-play ng Shorts sa background</string>
<string name="revanced_shorts_autoplay_background_summary_on">Awtomatikong magpa-play ang mga Shorts sa background</string>
<string name="revanced_shorts_autoplay_background_summary_off">Uulitin ang mga Shorts sa background</string>
</patch>
<patch id="layout.tablet.enableTabletLayoutPatch">
<string name="revanced_tablet_layout_title">Paganahin ang layout ng tablet</string>
@@ -910,12 +1059,38 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_miniplayer_screen_summary">Baguhin ang istilo ng in app minimized na player</string>
<string name="revanced_miniplayer_type_title">Uri ng miniplayer</string>
<string name="revanced_miniplayer_type_entry_0">Hindi</string>
<string name="revanced_miniplayer_type_entry_1">Orihinal</string>
<string name="revanced_miniplayer_type_entry_1">Regular</string>
<string name="revanced_miniplayer_type_entry_2">Minimal</string>
<string name="revanced_miniplayer_type_entry_3">Tableta</string>
<string name="revanced_miniplayer_type_entry_4">Moderno 1</string>
<string name="revanced_miniplayer_type_entry_5">Moderno 2</string>
<string name="revanced_miniplayer_type_entry_6">Moderno 3</string>
<string name="revanced_miniplayer_rounded_corners_title">Paganahin ang mga bilugan na sulok</string>
<string name="revanced_miniplayer_rounded_corners_summary_on">Bilugan ang mga sulok</string>
<string name="revanced_miniplayer_rounded_corners_summary_off">Parihaba ang mga sulok</string>
<string name="revanced_miniplayer_double_tap_action_title">Paganahin ang pag-resize gamit ang double-tap at pinch</string>
<string name="revanced_miniplayer_double_tap_action_summary_on">"Ang pagkilos ng double-tap at pinch upang baguhin ang laki ay pinagana
• Double tap upang dagdagan ang laki ng \"miniplayer\"
• Double tap muli upang ibalik ang orihinal na laki"</string>
<string name="revanced_miniplayer_double_tap_action_summary_off">Hindi pinagana ang pagkilos ng double-tap at pag-resize gamit ang pinch</string>
<string name="revanced_miniplayer_drag_and_drop_title">Paganahin ang drag and drop</string>
<string name="revanced_miniplayer_drag_and_drop_summary_on">"Ang drag and drop ay pinagana
Ang \"miniplayer\" ay maaaring i-drag sa anumang sulok ng screen"</string>
<string name="revanced_miniplayer_drag_and_drop_summary_off">Hindi pinagana ang drag and drop</string>
<string name="revanced_miniplayer_horizontal_drag_title">Paganahin ang pahalang na drag gesture</string>
<string name="revanced_miniplayer_horizontal_drag_summary_on">"Ang horizontal drag gesture ay pinagana
Ang \"miniplayer\" ay maaaring i-drag palabas ng screen sa kaliwa o kanan"</string>
<string name="revanced_miniplayer_horizontal_drag_summary_off">Hindi pinagana ang pahalang na drag gesture</string>
<string name="revanced_miniplayer_hide_expand_close_title">Itago ang pindutan ng pagsara</string>
<string name="revanced_miniplayer_hide_expand_close_summary_on">Nakatago ang pindutan ng pagsara</string>
<string name="revanced_miniplayer_hide_expand_close_summary_off">Ipinapakita ang pindutan ng pagsara</string>
<string name="revanced_miniplayer_hide_expand_close_legacy_title">Itago ang mga button na palawakin at isara</string>
<string name="revanced_miniplayer_hide_expand_close_legacy_summary_on">"Ang mga pindutan ay nakatago
Mag-swipe upang palawakin o isara"</string>
<string name="revanced_miniplayer_hide_expand_close_legacy_summary_off">Ang mga pindutan ng palawakin at isara ay ipinapakita</string>
<string name="revanced_miniplayer_hide_subtext_title">Itago ang mga subtext</string>
<string name="revanced_miniplayer_hide_subtext_summary_on">Nakatago ang mga subtext</string>
@@ -923,6 +1098,10 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_miniplayer_hide_rewind_forward_title">Itago ang mga pindutan ng paglaktaw pasulong at pabalik</string>
<string name="revanced_miniplayer_hide_rewind_forward_summary_on">Lumaktaw pasulong at pabalik ay nakatago</string>
<string name="revanced_miniplayer_hide_rewind_forward_summary_off">Lumaktaw pasulong at pabalik ay ipinapakita</string>
<string name="revanced_miniplayer_width_dip_title">Paunang laki</string>
<string name="revanced_miniplayer_width_dip_summary">Paunang laki sa screen, sa pixels</string>
<string name="revanced_miniplayer_width_dip_invalid_toast">Ang laki ng pixel ay dapat nasa pagitan ng %1$s at %2$s</string>
<string name="revanced_miniplayer_opacity_title">Opacity ng overlay</string>
<string name="revanced_miniplayer_opacity_summary">Ang halaga ng opacity sa pagitan ng 0-100, kung saan ang 0 ay transparent</string>
<string name="revanced_miniplayer_opacity_invalid_toast">Ang opacity ng miniplayer overlay ay dapat nasa pagitan ng 0-100</string>
</patch>
@@ -937,8 +1116,14 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_seekbar_custom_color_summary_off">Ipinapakita ang orihinal na kulay ng seekbar</string>
<string name="revanced_seekbar_custom_color_value_title">Pasadyang kulay ng seekbar</string>
<string name="revanced_seekbar_custom_color_value_summary">Ang kulay ng seekbar</string>
<string name="revanced_seekbar_custom_color_invalid">Hindi wastong halaga ng kulay ng seekbar</string>
</patch>
<patch id="layout.thumbnails.bypassImageRegionRestrictionsPatch">
<string name="revanced_bypass_image_region_restrictions_title">Bypass ang mga paghihigpit sa rehiyon ng imahe</string>
<string name="revanced_bypass_image_region_restrictions_summary_on">Ginagamit ang image host yt4.ggpht.com</string>
<string name="revanced_bypass_image_region_restrictions_summary_off">"Gumagamit ng orihinal na image host
Ang pagpapagana nito ay maaaring ayusin ang mga nawawalang imahe na hinarangan sa ilang mga rehiyon"</string>
</patch>
<patch id="layout.thumbnails.alternativeThumbnailsPatch">
<!-- 'Home' should be translated using the same localized wording YouTube displays for the home tab. -->
@@ -953,10 +1138,15 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_alt_thumbnail_options_entry_2">DeArrow &amp; Mga orihinal na thumbnail</string>
<string name="revanced_alt_thumbnail_options_entry_3">DeArrow &amp; Kinukuha pa rin</string>
<string name="revanced_alt_thumbnail_options_entry_4">Kinukuha pa rin</string>
<string name="revanced_alt_thumbnail_dearrow_about_summary">Nagbibigay ang DeArrow ng mga thumbnail na pinagmumulan ng karamihan para sa mga video sa YouTube. Ang mga thumbnail na ito ay kadalasang mas may kaugnayan kaysa sa ibinigay ng YouTube\n\nKung pinagana, ang mga URL ng video ay ipapadala sa API server at walang ibang data na ipapadala. Kung walang mga thumbnail ng DeArrow ang isang video, ipapakita ang orihinal o mga kinukunan pa rin\n\nMag-tap dito para matuto pa tungkol sa DeArrow</string>
<string name="revanced_alt_thumbnail_dearrow_about_summary">"Ang DeArrow ay nagbibigay ng mga crowd-sourced na thumbnail para sa mga video ng YouTube. Ang mga thumbnail na ito ay madalas na mas may kaugnayan kaysa sa mga ibinigay ng YouTube
Kung pinagana, ang mga URL ng video ay ipapadala sa API server at walang ibang data ang ipapadala. Kung ang isang video ay walang mga thumbnail ng DeArrow, kung gayon ang mga orihinal o still capture ay ipapakita
Mag-tap dito upang matuto nang higit pa tungkol sa DeArrow"</string>
<string name="revanced_alt_thumbnail_dearrow_connection_toast_title">Magpakita ng toast kung hindi available ang API</string>
<string name="revanced_alt_thumbnail_dearrow_connection_toast_summary_on">Ang toast ay ipinapakita kung hindi available ang DeArrow</string>
<string name="revanced_alt_thumbnail_dearrow_connection_toast_summary_off">Hindi ipinapakita ang toast kung hindi available ang DeArrow</string>
<string name="revanced_alt_thumbnail_dearrow_api_url_title">DeArrow API endpoint</string>
<string name="revanced_alt_thumbnail_dearrow_api_url_summary">Ang URL ng DeArrow thumbnail cache endpoint</string>
<string name="revanced_alt_thumbnail_stills_about_title">Nakakuha pa rin ng video</string>
<string name="revanced_alt_thumbnail_stills_about_summary">Kinukuha ang mga still capture mula sa simula/gitna/katapusan ng bawat video. Ang mga larawang ito ay binuo sa YouTube at walang panlabas na API na ginagamit</string>
@@ -981,6 +1171,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
</patch>
<patch id="misc.dns.checkWatchHistoryDomainNameResolutionPatch">
<string name="revanced_check_watch_history_domain_name_dialog_title">Babala</string>
<string name="revanced_check_watch_history_domain_name_dialog_message">Hindi nai-save ang iyong kasaysayan ng panonood.&lt;br&gt;&lt;br&gt;Karaniwang sanhi nito ay ang DNS ad blocker o network proxy.&lt;br&gt;&lt;br&gt;Para maayos ito, i-whitelist ang &lt;b&gt;s.youtube.com&lt;/b&gt; o i-off ang lahat ng DNS blocker at proxy.</string>
<string name="revanced_check_watch_history_domain_name_dialog_ignore">Huwag ipakitang muli</string>
</patch>
<patch id="misc.autorepeat.autoRepeatPatch">
@@ -990,8 +1181,12 @@ This is because Crowdin requires temporarily flattening this file and removing t
</patch>
<patch id="misc.dimensions.spoof.spoofDeviceDimensionsPatch">
<string name="revanced_spoof_device_dimensions_title">Mga dimensyon ng spoof device</string>
<string name="revanced_spoof_device_dimensions_summary_on">Na-spoof ang mga dimensyon ng device\n\nMaaaring ma-unlock ang mas matataas na katangian ng video ngunit maaari kang makaranas ng pag-utal ng pag-playback ng video, mas malala ang buhay ng baterya, at hindi alam na mga side effect</string>
<string name="revanced_spoof_device_dimensions_summary_off">Hindi na-spoof ang mga dimensyon ng device\n\nAng pag-enable dito ay makakapag-unlock ng mas matataas na katangian ng video</string>
<string name="revanced_spoof_device_dimensions_summary_on">"Ang mga sukat ng device ay mapapang-ulol
Ang mas mataas na kalidad ng video ay maaaring mabuksan ngunit maaari kang makaranas ng pag-stutter ng paglalaro ng video, mas masamang buhay ng baterya, at mga hindi kilalang epekto"</string>
<string name="revanced_spoof_device_dimensions_summary_off">"Ang mga sukat ng device ay hindi mapapang-ulol
Ang pagpapagana nito ay maaaring magbukas ng mas mataas na kalidad ng video"</string>
<string name="revanced_spoof_device_dimensions_user_dialog_message">Ang pagpapagana nito ay maaaring magdulot ng pagkautal sa pag-playback ng video, mas malala ang buhay ng baterya, at hindi kilalang mga side effect.</string>
</patch>
<patch id="misc.gms.gmsCoreSupportResourcePatch">
@@ -1020,11 +1215,13 @@ This is because Crowdin requires temporarily flattening this file and removing t
</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">Auto</string>
<string name="revanced_remember_video_quality_last_selected_title">Tandaan ang mga pagbabago sa kalidad ng video</string>
<string name="revanced_remember_video_quality_last_selected_summary_on">Nalalapat ang mga pagbabago sa kalidad sa lahat ng video</string>
<string name="revanced_remember_video_quality_last_selected_summary_off">Nalalapat lang ang mga pagbabago sa kalidad sa kasalukuyang video</string>
<string name="revanced_video_quality_default_wifi_title">Default na kalidad ng video sa Wi-Fi network</string>
<string name="revanced_video_quality_default_mobile_title">Default na kalidad ng video sa mobile network</string>
<string name="revanced_remember_video_quality_mobile">mobile</string>
<string name="revanced_remember_video_quality_toast">Binago ang default na kalidad ng %1$s sa: %2$s</string>
</patch>
<patch id="video.speed.button.playbackSpeedButtonPatch">
@@ -1033,9 +1230,14 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_playback_speed_dialog_button_summary_off">Hindi ipinapakita ang button</string>
</patch>
<patch id="video.speed.custom.customPlaybackSpeedPatch">
<string name="revanced_custom_speed_menu_title">Menu ng pasadyang bilis ng pag-playback</string>
<string name="revanced_custom_speed_menu_summary_on">Ipinapakita ang menu ng pasadyang bilis</string>
<string name="revanced_custom_speed_menu_summary_off">Hindi ipinapakita ang menu ng pasadyang bilis</string>
<string name="revanced_custom_playback_speeds_title">Mga custom na bilis ng pag-playback</string>
<string name="revanced_custom_playback_speeds_invalid">Ang mga custom na bilis ay dapat mas mababa sa %s. Paggamit ng mga default na halaga.</string>
<string name="revanced_custom_playback_speeds_parse_exception">Di-wastong mga custom na bilis ng pag-playback. Paggamit ng mga default na halaga.</string>
<string name="revanced_custom_playback_speeds_summary">Magdagdag o baguhin ang mga pasadyang bilis ng pag-playback</string>
<string name="revanced_custom_playback_speeds_invalid">Ang mga custom na bilis ay dapat na mas mababa sa %s</string>
<string name="revanced_custom_playback_speeds_parse_exception">Hindi wastong custom na bilis ng paglalaro</string>
<string name="revanced_custom_playback_speeds_auto">Auto</string>
</patch>
<patch id="video.speed.remember.rememberPlaybackSpeedPatch">
<string name="revanced_remember_playback_speed_last_selected_title">Tandaan ang mga pagbabago sa bilis ng pag-playback</string>
@@ -1055,7 +1257,83 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_slide_to_seek_summary_off">Hindi pinagana ang slide to seek</string>
</patch>
<patch id="misc.fix.playback.spoofVideoStreamsPatch">
<string name="revanced_spoof_video_streams_screen_title">Spoof ng mga video stream</string>
<string name="revanced_spoof_video_streams_screen_summary">Spoof ang mga video stream ng client upang maiwasan ang mga problema sa pag-playback</string>
<string name="revanced_spoof_video_streams_title">Spoof ng mga video stream</string>
<string name="revanced_spoof_video_streams_summary_on">Naka-spoof ang mga video stream</string>
<string name="revanced_spoof_video_streams_summary_off">"Ang mga stream ng video ay hindi mapapang-ulol
Ang paglalaro ng video ay maaaring hindi gumana"</string>
<string name="revanced_spoof_video_streams_user_dialog_message">Ang pag-off sa setting na ito ay maaaring magdulot ng mga isyu sa pag-playback ng video.</string>
<string name="revanced_spoof_video_streams_client_title">Default client</string>
<string name="revanced_spoof_video_streams_ios_force_avc_title">Pilitin ang AVC (H.264)</string>
<string name="revanced_spoof_video_streams_ios_force_avc_summary_on">Ang video codec ay napipilitang maging AVC (H.264)</string>
<string name="revanced_spoof_video_streams_ios_force_avc_summary_off">Awtomatikong natutukoy ang video codec</string>
<string name="revanced_spoof_video_streams_ios_force_avc_user_dialog_message">"Ang pagpapagana nito ay maaaring mapabuti ang buhay ng baterya at ayusin ang pag-stutter ng paglalaro.
Ang AVC ay may maximum na resolution na 1080p, ang Opus audio codec ay hindi magagamit, at ang paglalaro ng video ay gagamit ng mas maraming data sa internet kaysa sa VP9 o AV1."</string>
<string name="revanced_spoof_video_streams_about_ios_title">Mga Epekto sa Gilid ng Pag-spoof ng iOS</string>
<string name="revanced_spoof_video_streams_about_ios_summary">"• Ang mga pribadong video ng mga bata ay maaaring hindi maglaro
• Ang mga livestream ay magsisimula mula sa simula
• Ang mga video ay magtatapos ng 1 segundo nang maaga"</string>
<string name="revanced_spoof_video_streams_about_android_vr_title">Mga epekto sa gilid ng pag-spoof ng Android VR</string>
<string name="revanced_spoof_video_streams_about_android_vr_summary">"• Ang mga video ng mga bata ay maaaring hindi maglaro
• Ang mga livestream ay magsisimula mula sa simula
• Ang mga video ay magtatapos ng 1 segundo nang maaga"</string>
<string name="revanced_spoof_video_streams_language_title">Default na wika ng audio stream</string>
<string name="revanced_spoof_video_streams_language_DEFAULT">Wika ng app</string>
<string name="revanced_spoof_video_streams_language_AR">Arabe</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">Aleman</string>
<string name="revanced_spoof_video_streams_language_EL">Griyego</string>
<string name="revanced_spoof_video_streams_language_EN">Ingles</string>
<string name="revanced_spoof_video_streams_language_ES">Espanyol</string>
<string name="revanced_spoof_video_streams_language_ET">Estonian</string>
<string name="revanced_spoof_video_streams_language_FA">Persian</string>
<string name="revanced_spoof_video_streams_language_FI">Finlandes</string>
<string name="revanced_spoof_video_streams_language_FR">Pranses</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">Kroatiyano</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">Italyano</string>
<string name="revanced_spoof_video_streams_language_JA">Hapones</string>
<string name="revanced_spoof_video_streams_language_KK">Kazakh</string>
<string name="revanced_spoof_video_streams_language_KO">Koreano</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">Olandes</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_PT_BR">Portuges (Brazil)</string>
<string name="revanced_spoof_video_streams_language_PT_PT">Portuges (Portugal)</string>
<string name="revanced_spoof_video_streams_language_RO">Romanian</string>
<string name="revanced_spoof_video_streams_language_RU">Ruso</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">Suweko</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">Turko</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">Intsik</string>
</patch>
</app>
<app id="twitch">
@@ -1065,8 +1343,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_block_audio_ads_summary_off">Na-unblock ang mga audio ad</string>
</patch>
<patch id="ad.embedded.embeddedAdsPatch">
<string name="revanced_embedded_ads_service_unavailable">%s ay hindi magagamit. Maaaring magpakita ang mga ad. Subukang lumipat sa isa pang serbisyo ng ad block sa mga setting.</string>
<string name="revanced_embedded_ads_service_failed">Nagbalik ng error ang server ng %s. Maaaring magpakita ang mga ad. Subukang lumipat sa isa pang serbisyo ng ad block sa mga setting.</string>
<string name="revanced_embedded_ads_service_unavailable">%s hindi magagamit, maaaring magpakita ng mga ad. Subukang baguhin ang serbisyo ng ad block sa mga setting.</string>
<string name="revanced_embedded_ads_service_failed">%s nagbalik ng isang error, maaaring magpakita ng mga ad. Subukang baguhin ang serbisyo ng ad block sa mga setting.</string>
<string name="revanced_block_embedded_ads_title">I-block ang mga naka-embed na video ad</string>
<string name="revanced_block_embedded_ads_entry_1">Hindi</string>
<string name="revanced_block_embedded_ads_entry_2">Luminous na proxy</string>
@@ -1095,10 +1373,14 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_twitch_debug_mode_summary_off">Naka-disable ang twitch debug mode</string>
</patch>
<patch id="misc.settings.settingsPatch">
<string name="revanced_settings">Mga Setting ng ReVanced</string>
<string name="revanced_about_title">Mga Tungkol</string>
<string name="revanced_about_summary">Tungkol sa ReVanced</string>
<string name="revanced_ads_screen_title">Mga ad</string>
<string name="revanced_ads_screen_summary">Mga setting ng pag-block ng ad</string>
<string name="revanced_chat_screen_title">Chat</string>
<string name="revanced_chat_screen_summary">Mga setting ng chat</string>
<string name="revanced_misc_screen_title">Iba Pa</string>
<string name="revanced_misc_screen_summary">Sari-saring mga setting</string>
<string name="revanced_general_category_title">Pangkalahatang mga Setting</string>
<string name="revanced_other_category_title">Iba pang mga setting</string>

View File

@@ -1,34 +1,23 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Note: All strings must have a unique path, even if the same string is declared in two different apps.
This is because Crowdin requires temporarily flattening this file and removing the <app> and <patch> elements.
All strings must have a unique path, even if the same string is declared in two different apps.
This is because Crowdin requires temporarily flattening this file and removing the <app> and <patch> elements.
# General guidelines and information for translating
## Strings parameters can be reordered to allow more flexible translations if the grammar should be changed.
Strings with new lines must be raw strings where they're wrapped in quotes and new lines are not encoded.
Raw strings still requires escaping embedded double quotes but escaping embedded single quotes is optional.
For example, the patches string:
<string name="revanced_patches_string">You will arrive at %1$s in %2$s hours from now</string>
Could be translated to another language using a rearranged grammar:
<string name="revanced_patches_string">You will arrive %2$s hours from now at %1$s</string>
Raw strings are required because Crowdin AI translations regularly gets confused and
replace \n with an encoded new line character.
For Manager strings:
You will arrive at ${destination} in ${count} hours from now
Could be rearranged by changing the order of the ${} parameters:
You will arrive ${count} hours from now at ${destination}
Bad:
<string name="summary_key">First \'item\' text\nSecond \"item\" text</string>
Reordering is particularly relevant when translating into right to left languages, or for any language with grammar that is noticeably different from English.
Good:
<string name="summary_key">"First 'item' text
Second \"item\" text"</string>
## Single and double quotation marks must be escaped for patch strings (Manager does not require escaping any quotes).
All _patches_ single and double quotation marks must be escaped as \" or \'
Forgetting to do this will cause that string to appear in app with no quotation characters.
Correct:
<string name="revanced_string">You\'re correct. This is the \"correct\" way and this text will appear as expected in the app</string>
Not correct:
<string name="revanced_string">You're not correct. This is not the "correct" way and this text will not appear as expected the in app</string>
-->
<resources>
<app id="shared">
@@ -44,7 +33,6 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_check_environment_not_near_patch_time_invalid">La date de compilation de l\'APK est corrompue</string>
</patch>
<patch id="misc.settings.settingsResourcePatch">
<string name="revanced_settings_title">ReVanced</string>
<string name="revanced_settings_confirm_user_dialog_title">Voulez-vous continuer ?</string>
<string name="revanced_settings_reset">Réinitialiser</string>
<string name="revanced_settings_restart_title">Appliquer et redémarrer</string>
@@ -58,8 +46,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_pref_import_export_summary">Importer / Exporter les paramètres ReVanced</string>
<!-- Settings about dialog. -->
<string name="revanced_settings_about_links_body">Vous utilisez la version &lt;i&gt;%s&lt;/i&gt; de ReVanced Patches </string>
<string name="revanced_settings_about_links_dev_header">Note</string>
<string name="revanced_settings_about_links_dev_body">Cette version est une pré-version et vous pourriez rencontrer des problèmes inattendus</string>
<string name="revanced_settings_about_links_dev_header">Remarque</string>
<string name="revanced_settings_about_links_dev_body">Cette version est une pré-version et vous pouvez rencontrer des problèmes inattendus</string>
<string name="revanced_settings_about_links_header">Liens officiels</string>
<!-- NOTE: the about strings above are duplicated in the TikTok about screen code,
and changes made here must also be made there. -->
@@ -68,9 +56,17 @@ This is because Crowdin requires temporarily flattening this file and removing t
<!-- 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 n\'est pas installé. Veuillez linstaller.</string>
<string name="gms_core_dialog_title">Action requise </string>
<string name="gms_core_dialog_not_whitelisted_not_allowed_in_background_message">MicroG GmsCore n\'a pas les permissions pour fonctionner en arrière-plan.\n\nSuivez le guide \"Don\'t kill my app!\" pour votre appareil, et appliquez les instructions pour votre installation MicroG.\n\nRequis pour que l\'application fonctionne.</string>
<string name="gms_core_dialog_not_whitelisted_not_allowed_in_background_message">"MicroG GmsCore ne dispose pas de l'autorisation de s'exécuter en arrière-plan.
Suivez le guide «Ne tuez pas mon application» pour votre téléphone et appliquez les instructions à votre installation MicroG.
C'est nécessaire pour que l'application fonctionne."</string>
<string name="gms_core_dialog_open_website_text">Ouvrir le site web</string>
<string name="gms_core_dialog_not_whitelisted_using_battery_optimizations_message">L\'optimisation de la batterie de MicroG GmsCore doit être désactivé pour éviter tout problème.\n\nCliquez sur le bouton Continuer et désactivez les optimisations de la batterie.</string>
<string name="gms_core_dialog_not_whitelisted_using_battery_optimizations_message">"Les optimisations de la batterie de MicroG GmsCore doivent être désactivées pour éviter les problèmes.
La désactivation des optimisations de la batterie pour MicroG n'affectera pas négativement l'utilisation de la batterie.
Appuyez sur le bouton Continuer et autorisez les modifications d'optimisation."</string>
<string name="gms_core_dialog_continue_text">Continuer</string>
</patch>
</app>
@@ -107,7 +103,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_debug_toast_on_error_title">Afficher le toast en cas d\'erreur ReVanced</string>
<string name="revanced_debug_toast_on_error_summary_on">Toast affiché si une erreur se produit</string>
<string name="revanced_debug_toast_on_error_summary_off">Toast non affiché si une erreur se produit</string>
<string name="revanced_debug_toast_on_error_user_dialog_message">Désactiver les toasts d\'erreur masque toutes les notifications d\'erreur ReVanced\n\nVous ne serez pas notifié des événements inattendus.</string>
<string name="revanced_debug_toast_on_error_user_dialog_message">"La désactivation des toasts d'erreur masque toutes les notifications d'erreur de ReVanced.
Vous ne serez pas informé des événements inattendus."</string>
</patch>
<patch id="layout.hide.general.hideLayoutComponentsPatch">
<string name="revanced_disable_like_subscribe_glow_title">Désactiver la lueur des boutons \"J\'aime\" / \"Je n\'aime pas\"</string>
@@ -126,7 +124,12 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_channel_watermark_summary_on">Le filigrane est masqué</string>
<string name="revanced_hide_channel_watermark_summary_off">Le filigrane est affiché</string>
<string name="revanced_hide_horizontal_shelves_title">Masquer les étagères horizontales</string>
<string name="revanced_hide_horizontal_shelves_summary_on">Les étagères sont masquées telles que :\n• Actualités\n• Continuer à regarder\n• Explorer d\'autres chaînes\n• Produits\n• Regarder à nouveau</string>
<string name="revanced_hide_horizontal_shelves_summary_on">"Des étagères sont masquées telles que :
• Dernières actualités
• Continuer à regarder
• Explorer d'autres chaînes
• Shopping
• Regardez-le à nouveau"</string>
<string name="revanced_hide_horizontal_shelves_summary_off">Les étagères sont affichées</string>
<!-- 'Join' should be translated using the same localized wording YouTube displays.
This appears in the video player for certain videos. -->
@@ -253,6 +256,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_filter_bar_feed_in_related_videos_summary_off">Affiché dans des vidéos connexes</string>
<string name="revanced_comments_screen_title">Commentaires</string>
<string name="revanced_comments_screen_summary">Masquer ou afficher les composants de la section commentaires</string>
<string name="revanced_hide_comments_chat_summary_title">Masquer le \'Chat summary\' </string>
<string name="revanced_hide_comments_chat_summary_summary_on">« Résumé de la discussion » est masqué</string>
<string name="revanced_hide_comments_chat_summary_summary_off">« Résumé de la discussion » est affiché</string>
<string name="revanced_hide_comments_by_members_header_title">Cacher l\'en-tête \'Commentaires par membres\'</string>
<string name="revanced_hide_comments_by_members_header_summary_on">L\'en-tête \'Commentaires par membres\' est masqué</string>
<string name="revanced_hide_comments_by_members_header_summary_off">L\'en-tête \'Commentaires par membres\' est affiché</string>
@@ -275,7 +281,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_doodles_title">Masquer les Doodles YouTube</string>
<string name="revanced_hide_doodles_summary_on">Les Doodles de la barre de recherche sont masquées</string>
<string name="revanced_hide_doodles_summary_off">Les Doodles de la barre de recherche sont affichées</string>
<string name="revanced_hide_doodles_user_dialog_message">Les Doodles YouTube apparaissent quelques jours par an.\n\nSi un Doodle YouTube est actuellement diffusé dans votre région et que le paramètre pour le masquer est activé, la barre de filtre située à côté de la barre de recherche sera également masquée.</string>
<string name="revanced_hide_doodles_user_dialog_message">"Les Doodles YouTube sont affichés quelques jours par an.
Si un Doodle est actuellement affiché dans votre région et que cette option de masquage est activée, la barre de filtres sous la barre de recherche sera également masquée."</string>
<string name="revanced_custom_filter_screen_title">Filtre personnalisé</string>
<string name="revanced_custom_filter_screen_summary">Masquer des composants en utilisant des filtres personnalisés</string>
<string name="revanced_custom_filter_title">Activer les filtres personnalisés</string>
@@ -299,9 +307,18 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_keyword_content_phrases_title">Mots-clés à masquer</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. -->
<string name="revanced_hide_keyword_content_phrases_summary">Mots-clés et phrases à masquer, séparés par des sauts de lignes.\n\nLes mots-clés peuvent être des noms de chaînes ou tout texte figurant dans les titres des vidéos.\n\nLes mots comportant des majuscules au milieu doivent être saisis de la même façon (par exemple : iPhone, TikTok, TheoBabac)</string>
<string name="revanced_hide_keyword_content_phrases_summary">"Mots-clés et phrases à masquer, séparés par des sauts de ligne
Les mots-clés peuvent être des noms de chaînes ou tout texte affiché dans les titres des vidéos
Les mots avec des majuscules au milieu doivent être saisis avec la casse (ie : iPhone, TikTok, LeBlanc)"</string>
<string name="revanced_hide_keyword_content_about_title">À propos du filtrage par mots-clés</string>
<string name="revanced_hide_keyword_content_about_summary">Les onglets \'Pages d\'accueil\' / \'Abonnements\' / Résultats de recherche sont filtrés pour masquer le contenu correspondant aux mots clés.\n\nLimitations\n• Les shorts ne peuvent pas être masqués par le nom de la chaîne\n• Certains éléments de l\'interface utilisateur peuvent ne pas être masqués\n• La recherche par mot-clé peut n\'afficher aucun résultat</string>
<string name="revanced_hide_keyword_content_about_summary">"Les résultats de la recherche, de l'accueil et des abonnements sont filtrés pour masquer le contenu correspondant aux mots-clés
Limitations
• Les Shorts ne peuvent pas être masqués par le nom de la chaîne
• Certains composants de l'interface utilisateur peuvent ne pas être masqués
• La recherche d'un mot-clé peut ne donner aucun résultat"</string>
<string name="revanced_hide_keyword_content_about_whole_words_title">Faire correspondre des mots complets</string>
<!-- Translations _must_ use a localized example. For languages that do not use spaces between words (Chinese, Japanese, etc) the English AI example should be used since no localized examples exist. Or if using machine translations, or if nobody wants to think of a localized example, then the English 'ai' example should be left as-is. -->
<string name="revanced_hide_keyword_content_about_whole_words_summary">Le fait de placer un mot-clé ou une expression entre guillemets permet d\'éviter les correspondances partielles entre les titres de vidéos et les noms des chaînes.&lt;br&gt;&lt;br&gt;Par exemple,&lt;br&gt;&lt;b&gt;\"ia\"&lt;/b&gt; masquera la vidéo : &lt;b&gt;Comment fonctionne les IA ?&lt;/b&gt;&lt;br&gt;mais ne masquera pas : &lt;b&gt;Quelles études pour devenir commercial ?&lt;/b&gt;</string>
@@ -317,7 +334,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_general_ads_summary_on">Les publicités générales sont masquées</string>
<string name="revanced_hide_general_ads_summary_off">Les publicités générales sont affichées</string>
<string name="revanced_hide_fullscreen_ads_title">Masquer les publicités en plein écran</string>
<string name="revanced_hide_fullscreen_ads_summary_on">Les publicités en plein écran sont masquées\n\nCette fonctionnalité n\'est disponible uniquement pour les appareils plus anciens</string>
<string name="revanced_hide_fullscreen_ads_summary_on">"Les annonces en plein écran sont masquées
Cette fonctionnalité est uniquement disponible pour les appareils plus anciens"</string>
<string name="revanced_hide_fullscreen_ads_summary_off">Les publicités en plein écran sont affichées</string>
<string name="revanced_hide_buttoned_ads_title">Masquer les publicités cliquables</string>
<string name="revanced_hide_buttoned_ads_summary_on">Les publicités cliquables sont masqués</string>
@@ -348,7 +367,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_merchandise_banners_summary_on">La bannière \'Effectuer des achats dans le magasin ...\' est masquée</string>
<string name="revanced_hide_merchandise_banners_summary_off">L\'étagère \'Effectuer des achats dans le magasin ...\' est affichée</string>
<!-- Translations of this should not be longer than the original English text, otherwise the text can be clipped and not entirely shown. -->
<string name="revanced_hide_fullscreen_ads_feature_not_available_toast">Masquer les publicités en plein écran ne fonctionne qu\'avec les appareils plus anciens</string>
<string name="revanced_hide_fullscreen_ads_feature_not_available_toast">Masquer les annonces plein écran ne fonctionne qu\'avec les appareils plus anciens</string>
</patch>
<patch id="ad.getpremium.hideGetPremiumPatch">
<string name="revanced_hide_get_premium_title">Masquer les publicités pour YouTube Premium </string>
@@ -491,7 +510,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_subscriptions_button_summary_off">Le bouton \'Abonnements\' est affiché</string>
<!-- 'Notifications' should be translated using the same localized wording YouTube displays the tab. -->
<string name="revanced_switch_create_with_notifications_button_title">Échanger \'Créer\' et \'Notifications\'</string>
<string name="revanced_switch_create_with_notifications_button_summary_on">Le bouton \'Créer\' est échangé avec le bouton \'Notification\'\n\nNote : Activer ceci masquera également les publicités vidéos</string>
<string name="revanced_switch_create_with_notifications_button_summary_on">"Le bouton Créer est remplacé par le bouton Notifications
Remarque : l'activation de cette option masque également de force les annonces vidéo"</string>
<string name="revanced_switch_create_with_notifications_button_summary_off">Le bouton \'Créer\' n\'est pas échangé avec le bouton \'Notification\'</string>
<string name="revanced_hide_navigation_button_labels_title">Masquer les noms des boutons de navigation</string>
<string name="revanced_hide_navigation_button_labels_summary_on">Les noms sont masqués</string>
@@ -639,123 +660,130 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_shorts_use_template_button_summary_on">Le bouton utiliser le modèle est caché</string>
<string name="revanced_hide_shorts_use_template_button_summary_off">Utiliser le bouton du modèle est affiché</string>
<string name="revanced_hide_shorts_upcoming_button_title">Masquer le bouton à venir</string>
<string name="revanced_hide_shorts_upcoming_button_summary_on">Le bouton à venir est masqué</string>
<string name="revanced_hide_shorts_upcoming_button_summary_off">Le bouton à venir est affiché</string>
<string name="revanced_hide_shorts_green_screen_button_title">Masquer le bouton de l\'écran vert</string>
<string name="revanced_hide_shorts_green_screen_button_summary_on">Le bouton de l\'écran vert est masqué</string>
<string name="revanced_hide_shorts_green_screen_button_summary_off">Le bouton de l\'écran vert est affiché</string>
<string name="revanced_hide_shorts_hashtag_button_title">Masquer le bouton de hashtag</string>
<string name="revanced_hide_shorts_hashtag_button_summary_on">Le bouton Hashtag est caché</string>
<string name="revanced_hide_shorts_hashtag_button_summary_off">Le bouton Hashtag est affiché</string>
<string name="revanced_hide_shorts_upcoming_button_summary_on">Le bouton \"Prochainement\" est masqué</string>
<string name="revanced_hide_shorts_upcoming_button_summary_off">Le bouton \"Prochainement\" est affiché</string>
<string name="revanced_hide_shorts_green_screen_button_title">Masquer le bouton \"Ecran vert\"</string>
<string name="revanced_hide_shorts_green_screen_button_summary_on">Le bouton \"Ecran vert\" est masqué</string>
<string name="revanced_hide_shorts_green_screen_button_summary_off">Le bouton \"Ecran vert\" est affiché</string>
<string name="revanced_hide_shorts_hashtag_button_title">Masquer le bouton \"Hashtag\"</string>
<string name="revanced_hide_shorts_hashtag_button_summary_on">Le bouton \"Hashtag\" est masqué</string>
<string name="revanced_hide_shorts_hashtag_button_summary_off">Le bouton \"Hashtag\" est affiché</string>
<string name="revanced_hide_shorts_search_suggestions_title">Masquer les suggestions de recherche</string>
<string name="revanced_hide_shorts_search_suggestions_summary_on">Les suggestions de recherche sont masquées</string>
<string name="revanced_hide_shorts_search_suggestions_summary_off">Suggestions de recherche affichées</string>
<string name="revanced_hide_shorts_search_suggestions_summary_off">Les suggestions de recherche sont affichées</string>
<string name="revanced_hide_shorts_stickers_title">Masquer les stickers</string>
<string name="revanced_hide_shorts_stickers_summary_on">Les stickers sont masqués</string>
<string name="revanced_hide_shorts_stickers_summary_off">Les stickers sont affichés</string>
<string name="revanced_hide_shorts_like_fountain_title">Cacher comme fontaine</string>
<string name="revanced_hide_shorts_like_fountain_summary_on">L\'animation \"J\'aime\" de la fontaine du bouton est cachée</string>
<string name="revanced_hide_shorts_like_fountain_summary_off">Animation de la fontaine du bouton J\'aime est affichée</string>
<string name="revanced_hide_shorts_like_fountain_title">Masquer la fontaine des likes</string>
<string name="revanced_hide_shorts_like_fountain_summary_on">L\'animation de la fontaine du bouton \"J\'aime\" est masquée</string>
<string name="revanced_hide_shorts_like_fountain_summary_off">L\'animation de la fontaine du bouton \"J\'aime\" est affichée</string>
<string name="revanced_hide_shorts_like_button_title">Masquer le bouton \"J\'aime\"</string>
<string name="revanced_hide_shorts_like_button_summary_on">Le bouton J\'aime est caché</string>
<string name="revanced_hide_shorts_like_button_summary_on">Le bouton J\'aime est masqué</string>
<string name="revanced_hide_shorts_like_button_summary_off">Le bouton J\'aime est affiché</string>
<string name="revanced_hide_shorts_dislike_button_title">Cacher le bouton \"J\'aime\"</string>
<string name="revanced_hide_shorts_dislike_button_summary_on">Le bouton \"J\'aime\" est masqué</string>
<string name="revanced_hide_shorts_dislike_button_summary_off">Le bouton \"J\'aime\" est affiché</string>
<string name="revanced_hide_shorts_comments_button_title">Masquer le bouton de commentaires</string>
<string name="revanced_hide_shorts_comments_button_summary_on">Le bouton Commentaires est masqué</string>
<string name="revanced_hide_shorts_comments_button_summary_off">Le bouton des commentaires est affiché</string>
<string name="revanced_hide_shorts_dislike_button_title">Masquer le bouton Je n\'aime pas</string>
<string name="revanced_hide_shorts_dislike_button_summary_on">Le bouton Je n\'aime pas est masqué</string>
<string name="revanced_hide_shorts_dislike_button_summary_off">Le bouton Je n\'aime pas est affiché</string>
<string name="revanced_hide_shorts_comments_button_title">Masquer le bouton des commentaires</string>
<string name="revanced_hide_shorts_comments_button_summary_on">Le bouton des commentaires est masqué</string>
<string name="revanced_hide_shorts_comments_button_summary_off">Le bouton Commentaires 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">Masquer le bouton de remix</string>
<string name="revanced_hide_shorts_remix_button_title">Bouton Réinitialisation du remix</string>
<string name="revanced_hide_shorts_remix_button_summary_on">Le bouton Remix est masqué</string>
<string name="revanced_hide_shorts_remix_button_summary_off">Le bouton Remix est affiché</string>
<!-- 'share' should be translated using the same localized wording YouTube displays for the button. -->
<string name="revanced_hide_shorts_share_button_title">Masquer le bouton de partage</string>
<string name="revanced_hide_shorts_share_button_title">Bouton Partager</string>
<string name="revanced_hide_shorts_share_button_summary_on">Le bouton de partage est masqué</string>
<string name="revanced_hide_shorts_share_button_summary_off">Le bouton de partage est affiché</string>
<string name="revanced_hide_shorts_info_panel_title">Masquer le panneau d\'information</string>
<string name="revanced_hide_shorts_info_panel_summary_on">Le panneau d\'information est caché</string>
<string name="revanced_hide_shorts_info_panel_summary_off">Le panneau d\'information est affiché</string>
<string name="revanced_hide_shorts_info_panel_title">Panneau d\'informations masqué</string>
<string name="revanced_hide_shorts_info_panel_summary_on">Le panneau d\'informations est masqué</string>
<string name="revanced_hide_shorts_info_panel_summary_off">Le panneau d\'informations est visible</string>
<string name="revanced_hide_shorts_channel_bar_title">Masquer la barre de la chaîne</string>
<string name="revanced_hide_shorts_channel_bar_summary_on">La barre de la chaîne est masquée</string>
<string name="revanced_hide_shorts_channel_bar_summary_off">La barre de la chaîne est affichée</string>
<string name="revanced_hide_shorts_video_title_title">Masquer le titre de vidéo</string>
<string name="revanced_hide_shorts_video_title_summary_on">Le titre est caché</string>
<string name="revanced_hide_shorts_video_title_title">Titre caché</string>
<string name="revanced_hide_shorts_video_title_summary_on">Le titre est masqué</string>
<string name="revanced_hide_shorts_video_title_summary_off">Le titre est affiché</string>
<string name="revanced_hide_shorts_sound_metadata_label_title">Masquer le libellé des métadonnées du son</string>
<string name="revanced_hide_shorts_sound_metadata_label_summary_on">Le libellé des métadonnées est masqué</string>
<string name="revanced_hide_shorts_sound_metadata_label_summary_off">Le libellé des métadonnées est affiché</string>
<string name="revanced_hide_shorts_full_video_link_label_title">Masquer l\'étiquette du lien vidéo complet</string>
<string name="revanced_hide_shorts_full_video_link_label_summary_on">L\'étiquette du lien vidéo est masquée</string>
<string name="revanced_hide_shorts_full_video_link_label_summary_off">L\'étiquette du lien vidéo est affichée</string>
<string name="revanced_hide_shorts_sound_button_title">Masquer le bouton de son</string>
<string name="revanced_hide_shorts_sound_button_summary_on">Le bouton de son est caché</string>
<string name="revanced_hide_shorts_sound_button_summary_off">Le bouton de son est affiché</string>
<string name="revanced_hide_shorts_sound_metadata_label_title">Masquer l\'étiquette des métadonnées audio</string>
<string name="revanced_hide_shorts_sound_metadata_label_summary_on">L\'étiquette des métadonnées est masquée</string>
<string name="revanced_hide_shorts_sound_metadata_label_summary_off">L\'étiquette des métadonnées est affichée</string>
<string name="revanced_hide_shorts_full_video_link_label_title">Masquer l\'étiquette du lien vers la vidéo complète</string>
<string name="revanced_hide_shorts_full_video_link_label_summary_on">L\'étiquette du lien vers la vidéo est masquée</string>
<string name="revanced_hide_shorts_full_video_link_label_summary_off">L\'étiquette du lien vers la vidéo est affichée</string>
<string name="revanced_hide_shorts_sound_button_title">Masquer le bouton Son</string>
<string name="revanced_hide_shorts_sound_button_summary_on">Le bouton Son est masqué</string>
<string name="revanced_hide_shorts_sound_button_summary_off">Le bouton Son est affiché</string>
<string name="revanced_hide_shorts_navigation_bar_title">Masquer la barre de navigation</string>
<string name="revanced_hide_shorts_navigation_bar_summary_on">La barre de navigation est cachée</string>
<string name="revanced_hide_shorts_navigation_bar_summary_on">La barre de navigation est masquée</string>
<string name="revanced_hide_shorts_navigation_bar_summary_off">La barre de navigation est affichée</string>
</patch>
<patch id="layout.hide.suggestedvideoendscreen.disableSuggestedVideoEndScreenResourcePatch">
<string name="revanced_disable_suggested_video_end_screen_title">Désactiver l\'écran de fin de la vidéo suggérée</string>
<string name="revanced_disable_suggested_video_end_screen_title">Désactiver l\'écran de fin de vidéo suggéré</string>
<string name="revanced_disable_suggested_video_end_screen_summary_on">Les vidéos suggérées seront désactivées</string>
<string name="revanced_disable_suggested_video_end_screen_summary_off">Les vidéos suggérées seront affichées</string>
</patch>
<patch id="layout.hide.time.hideTimestampPatch">
<string name="revanced_hide_timestamp_title">Masquer l\'horodatage de la vidéo</string>
<string name="revanced_hide_timestamp_summary_on">L\'horodatage est caché</string>
<string name="revanced_hide_timestamp_summary_on">L\'horodatage est masqué</string>
<string name="revanced_hide_timestamp_summary_off">L\'horodatage est affiché</string>
</patch>
<patch id="layout.panels.popup.playerPopupPanelsPatch">
<string name="revanced_hide_player_popup_panels_title">Masquer les fenêtres pop-up du joueur</string>
<string name="revanced_hide_player_popup_panels_summary_on">Les fenêtres pop-up sont masquées</string>
<string name="revanced_hide_player_popup_panels_summary_off">Les fenêtres pop-up sont affichées</string>
<string name="revanced_hide_player_popup_panels_title">Masquer les panneaux contextuels du lecteur</string>
<string name="revanced_hide_player_popup_panels_summary_on">Les panneaux contextuels du lecteur sont masqués</string>
<string name="revanced_hide_player_popup_panels_summary_off">Les panneaux contextuels du lecteur sont affichés</string>
</patch>
<patch id="layout.player.fullscreen.openVideosFullscreen">
<string name="revanced_open_videos_fullscreen_portrait_title">Ouvrir les vidéos en plein écran en mode portrait</string>
<string name="revanced_open_videos_fullscreen_portrait_summary_on">Les vidéos s\'ouvrent en plein écran</string>
<string name="revanced_open_videos_fullscreen_portrait_summary_off">Les vidéos ne s\'ouvrent pas en plein écran</string>
</patch>
<patch id="layout.player.overlay.customPlayerOverlayOpacityResourcePatch">
<string name="revanced_player_overlay_opacity_title">Opacité de l\'overlay du joueur</string>
<string name="revanced_player_overlay_opacity_title">Opacité de la superposition du lecteur</string>
<string name="revanced_player_overlay_opacity_summary">Valeur d\'opacité entre 0 et 100, où 0 est transparent</string>
<string name="revanced_player_overlay_opacity_invalid_toast">L\'opacité de l\'overlay du joueur doit être comprise entre 0 et 100</string>
</patch>
<patch id="layout.returnyoutubedislike.returnYouTubeDislikePatch">
<!-- 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. -->
<string name="revanced_ryd_failure_connection_timeout">API des dislikes temporairement indisponible</string>
<string name="revanced_ryd_failure_connection_status_code">N\'aime pas disponible (statut %d)</string>
<string name="revanced_ryd_failure_connection_status_code">Dislikes non disponibles (status %d)</string>
<string name="revanced_ryd_failure_client_rate_limit_requested">Dislikes indisponibles (limite API atteinte)</string>
<string name="revanced_ryd_failure_generic">N\'aime pas (%s)</string>
<string name="revanced_ryd_failure_generic">Dislikes non disponibles (%s)</string>
<!-- Toast shown if the user enables RYD while a video is opened, and then tries to vote for the video. -->
<string name="revanced_ryd_failure_ryd_enabled_while_playing_video_then_user_voted">Recharger la vidéo pour voter en utilisant Return YouTube Dislike</string>
<string name="revanced_ryd_enable_summary_on">Les j\'n\'aime pas sont affichés</string>
<string name="revanced_ryd_enable_summary_off">Les n\'aiment pas ne sont pas affichés</string>
<string name="revanced_ryd_shorts_title">Afficher les \"J\'aime\" sur les courts</string>
<string name="revanced_ryd_shorts_summary_on">Dissociations affichées sur les Shorts</string>
<string name="revanced_ryd_shorts_summary_on_disclaimer">Dissipation affichée sur Shorts\n\nLimitation : les J\'aime ne peuvent pas apparaître en mode incognito</string>
<string name="revanced_ryd_shorts_summary_off">N\'aime pas masqué sur les Shorts</string>
<string name="revanced_ryd_dislike_percentage_title">Ne pas aimer en pourcentage</string>
<string name="revanced_ryd_dislike_percentage_summary_on">Ne pas aimer affiché en pourcentage</string>
<string name="revanced_ryd_dislike_percentage_summary_off">Ne pas afficher comme nombre</string>
<string name="revanced_ryd_enable_summary_off">Les dislikes ne sont pas affichés</string>
<string name="revanced_ryd_shorts_title">Afficher les \"Je n\'aime pas\" sur les Shorts</string>
<string name="revanced_ryd_shorts_summary_on">Dislikes sur les Shorts affichés</string>
<string name="revanced_ryd_shorts_summary_on_disclaimer">"Dislikes affichés sur Shorts
Limite : les avertissements peuvent ne pas apparaître en mode navigation privée"</string>
<string name="revanced_ryd_shorts_summary_off">Dislikes sur les Shorts cachés</string>
<string name="revanced_ryd_dislike_percentage_title">Dislikes en pourcentage</string>
<string name="revanced_ryd_dislike_percentage_summary_on">Les dislikes sont affichés sous forme de pourcentage</string>
<string name="revanced_ryd_dislike_percentage_summary_off">Les détestations sont affichées comme un nombre</string>
<!-- Translations should use language similar to 'revanced_sb_enable_compact_skip_button' -->
<string name="revanced_ryd_compact_layout_title">Bouton Compact like</string>
<string name="revanced_ryd_compact_layout_title">Bouton J\'aime compact</string>
<string name="revanced_ryd_compact_layout_summary_on">Bouton J\'aime stylé pour une largeur minimale</string>
<string name="revanced_ryd_compact_layout_summary_off">Bouton J\'aime stylé pour une meilleure apparence</string>
<string name="revanced_ryd_toast_on_connection_error_title">Afficher un message si l\'API n\'est pas disponible</string>
<string name="revanced_ryd_toast_on_connection_error_summary_on">La Toast est affichée si le retour YouTube n\'aime pas n\'est pas disponible</string>
<string name="revanced_ryd_toast_on_connection_error_summary_off">Les toasts ne sont pas affichés si le retour YouTube n\'aime pas n\'est pas disponible</string>
<string name="revanced_ryd_toast_on_connection_error_summary_off">Toast ne sont pas affichés si le retour YouTube n\'aime pas n\'est pas disponible</string>
<string name="revanced_ryd_about">À propos</string>
<string name="revanced_ryd_attribution_summary">Les données sont fournies par l\'API Return YouTube Dislike . Appuyez ici pour en savoir plus</string>
<!-- Statistic strings are shown in the settings only when ReVanced debug mode is enabled. Typical users will never see these. -->
<string name="revanced_ryd_statistics_category_title">Retournez les statistiques de l\'API de cet appareil</string>
<string name="revanced_ryd_statistics_category_title">Retourner les statistiques de l\'API de cet appareil</string>
<string name="revanced_ryd_statistics_getFetchCallResponseTimeAverage_title">Temps de réponse de l\'API, moyenne</string>
<string name="revanced_ryd_statistics_getFetchCallResponseTimeMin_title">Temps de réponse de l\'API, minimum</string>
<string name="revanced_ryd_statistics_getFetchCallResponseTimeMax_title">Temps de réponse de l\'API, maximum</string>
<string name="revanced_ryd_statistics_getFetchCallResponseTimeLast_title">Temps de réponse de l\'API, dernière vidéo</string>
<string name="revanced_ryd_statistics_getFetchCallResponseTimeLast_rate_limit_summary">N\'aime pas temporairement non disponible - Limite de taux de l\'API client en vigueur</string>
<string name="revanced_ryd_statistics_getFetchCallResponseTimeLast_rate_limit_summary">Dislikes temporairement non disponibles - Limite de taux de l\'API client en vigueur</string>
<string name="revanced_ryd_statistics_getFetchCallCount_title">API récupère les votes, nombre d\'appels</string>
<string name="revanced_ryd_statistics_getFetchCallCount_zero_summary">Aucun appel réseau effectué</string>
<string name="revanced_ryd_statistics_getFetchCallCount_non_zero_summary">Appels réseau %d effectués</string>
<string name="revanced_ryd_statistics_getFetchCallCount_non_zero_summary">Se ha realizado un número total de %d llamadas a la red</string>
<string name="revanced_ryd_statistics_getFetchCallNumberOfFailures_title">API récupère les votes, le nombre de délais</string>
<string name="revanced_ryd_statistics_getFetchCallNumberOfFailures_zero_summary">Aucun appel réseau a expiré</string>
<string name="revanced_ryd_statistics_getFetchCallNumberOfFailures_non_zero_summary">Les appels réseau %d ont expiré</string>
<string name="revanced_ryd_statistics_getNumberOfRateLimitRequestsEncountered_title">Limites de débit de l\'API client</string>
<string name="revanced_ryd_statistics_getNumberOfRateLimitRequestsEncountered_zero_summary">Aucune limite de taux client rencontrée</string>
<string name="revanced_ryd_statistics_getFetchCallNumberOfFailures_zero_summary">No se ha agotado el tiempo de espera de ninguna llamada a la red</string>
<string name="revanced_ryd_statistics_getFetchCallNumberOfFailures_non_zero_summary">%d network calls timed out</string>
<string name="revanced_ryd_statistics_getNumberOfRateLimitRequestsEncountered_title">Límites de frecuencia de cliente API</string>
<string name="revanced_ryd_statistics_getNumberOfRateLimitRequestsEncountered_zero_summary">No se encontraron límites de velocidad del cliente</string>
<string name="revanced_ryd_statistics_getNumberOfRateLimitRequestsEncountered_non_zero_summary">Limite de débit du client rencontrée %d fois</string>
<string name="revanced_ryd_statistics_millisecond_text">%d millisecondes</string>
</patch>
@@ -770,7 +798,11 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_seekbar_thumbnails_high_quality_summary_off">Les vignettes de la barre de recherche sont de qualité moyenne</string>
<string name="revanced_seekbar_thumbnails_high_quality_legacy_summary_on">Les vignettes de la barre de recherche plein écran sont de haute qualité</string>
<string name="revanced_seekbar_thumbnails_high_quality_legacy_summary_off">Les vignettes de barre de recherche plein écran ont une qualité moyenne</string>
<string name="revanced_seekbar_thumbnails_high_quality_dialog_message">Cela restaurera aussi les vignettes sur les diffusions en direct qui n\'ont pas la fonctionnalité de vignette de prévisualisation.\n\nLes vignettes de prévisualisation utiliseront la même qualité que la vidéo actuelle.\n\nCette fonctionnalité fonctionne mieux avec une qualité vidéo de 720p ou moins et lorsque vous utilisez une connexion Internet très rapide.</string>
<string name="revanced_seekbar_thumbnails_high_quality_dialog_message">"Cela restaurera également les miniatures sur les diffusions en direct qui n'ont pas de miniatures de barre de recherche.
Les miniatures de la barre de recherche utiliseront la même qualité que la vidéo en cours.
Cette fonctionnalité fonctionne mieux avec une qualité vidéo de 720p ou moins et lorsque vous utilisez une connexion Internet très rapide."</string>
<string name="revanced_restore_old_seekbar_thumbnails_title">Restaurer les anciennes miniatures de la barre de recherche</string>
<string name="revanced_restore_old_seekbar_thumbnails_summary_on">Les vignettes de la barre de recherche apparaîtront au-dessus de la barre de recherche</string>
<string name="revanced_restore_old_seekbar_thumbnails_summary_off">Les vignettes de la barre de recherche apparaîtront en plein écran</string>
@@ -781,39 +813,39 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_sb_appearance_category">Apparence</string>
<string name="revanced_sb_enable_voting">Afficher le bouton de vote</string>
<string name="revanced_sb_enable_voting_sum_on">Le bouton de vote du segment est affiché</string>
<string name="revanced_sb_enable_voting_sum_off">Le bouton de vote du segment n\'est pas affiché</string>
<string name="revanced_sb_enable_voting_sum_off">Le bouton de vote du segment n\'est pas affiché.</string>
<!-- Translations should use language similar to 'revanced_ryd_compact_layout_title' -->
<string name="revanced_sb_enable_compact_skip_button">Utiliser un bouton de saut compact</string>
<string name="revanced_sb_enable_compact_skip_button_sum_on">Bouton sauter stylé pour une largeur minimale</string>
<string name="revanced_sb_enable_compact_skip_button_sum_off">Ignorer le bouton stylé pour une meilleure apparence</string>
<string name="revanced_sb_enable_compact_skip_button_sum_off">Bouton sauter stylé pour une meilleure apparence</string>
<string name="revanced_sb_enable_auto_hide_skip_segment_button">Masquer automatiquement le bouton ignorer</string>
<string name="revanced_sb_enable_auto_hide_skip_segment_button_sum_on">Le bouton Ignorer se cache après quelques secondes</string>
<string name="revanced_sb_enable_auto_hide_skip_segment_button_sum_off">Ignorer le bouton affiché pour tout le segment</string>
<string name="revanced_sb_general_skiptoast">Afficher une toast lors du saut automatique</string>
<string name="revanced_sb_general_skiptoast_sum_on">Les toasts sont affichés lorsqu\'un segment est automatiquement ignoré. Appuyez ici pour voir un exemple</string>
<string name="revanced_sb_general_skiptoast_sum_off">Les toasts ne sont pas affichés. Appuyez ici pour voir un exemple</string>
<string name="revanced_sb_general_time_without">Afficher la longueur de la vidéo sans segments</string>
<string name="revanced_sb_general_time_without_sum_on">Longueur de la vidéo moins tous les segments, affichés entre parenthèses à côté de la durée complète de la vidéo</string>
<string name="revanced_sb_general_time_without_sum_off">Longueur de la vidéo complète affichée</string>
<string name="revanced_sb_general_time_without">Affiché la durée du film sans les segments</string>
<string name="revanced_sb_general_time_without_sum_on">Durée de la vidéo moins tous les segments, affichée entre parenthèses à côté de la durée complète de la vidéo</string>
<string name="revanced_sb_general_time_without_sum_off">La durée complète du film est affichée</string>
<string name="revanced_sb_create_segment_category">Création de nouveaux segments</string>
<string name="revanced_sb_enable_create_segment">Afficher le bouton créer un nouveau segment</string>
<string name="revanced_sb_enable_create_segment_sum_on">Le bouton Créer un nouveau segment est affiché</string>
<string name="revanced_sb_enable_create_segment_sum_on">Le bouton pour pouvoir ajouter un nouveau moment à passé est affiché</string>
<string name="revanced_sb_enable_create_segment_sum_off">Le bouton Créer un nouveau segment n\'est pas affiché</string>
<string name="revanced_sb_general_adjusting">Ajuster le nouveau segment</string>
<string name="revanced_sb_general_adjusting_sum">Nombre de millisecondes que les boutons de réglage se déplacent lors de la création de nouveaux segments</string>
<string name="revanced_sb_general_adjusting">Adjuster les points de transition du nouveau segment</string>
<string name="revanced_sb_general_adjusting_sum">Temps en millisecondes que les boutons de réglage du temps se déplacent lors de la création de nouveaux segments</string>
<string name="revanced_sb_general_adjusting_invalid">La valeur doit être un nombre positif</string>
<string name="revanced_sb_guidelines_preference_title">Voir les directives</string>
<string name="revanced_sb_guidelines_preference_sum">Les directives contiennent des règles et des conseils pour créer de nouveaux segments</string>
<string name="revanced_sb_guidelines_popup_title">Suivez les directives</string>
<string name="revanced_sb_guidelines_popup_content">Lisez les directives du SponsorBlock avant de créer de nouveaux segments</string>
<string name="revanced_sb_guidelines_popup_content">Consultez les directives de SponsorBlock avant de créer de nouveaux segments</string>
<string name="revanced_sb_guidelines_popup_already_read">Déjà lu</string>
<string name="revanced_sb_guidelines_popup_open">Montrez-moi</string>
<string name="revanced_sb_general">Général</string>
<string name="revanced_sb_toast_on_connection_error_title">Afficher un message si l\'API n\'est pas disponible</string>
<string name="revanced_sb_toast_on_connection_error_summary_on">Le toast est affiché si le SponsorBlock n\'est pas disponible</string>
<string name="revanced_sb_toast_on_connection_error_summary_off">Les toasts ne sont pas affichés si SponsorBlock n\'est pas disponible</string>
<string name="revanced_sb_general_skipcount">Activer le suivi du nombre de sauts</string>
<string name="revanced_sb_general_skipcount_sum_on">Fait savoir au classement du SponsorBlock combien de temps est enregistré. Un message est envoyé au classement chaque fois qu\'un segment est ignoré</string>
<string name="revanced_sb_toast_on_connection_error_summary_on">S\'affiche lorsque SponsorBlock est indisponible</string>
<string name="revanced_sb_toast_on_connection_error_summary_off">N\'est pas affiché si SponsorBlock est indisponible</string>
<string name="revanced_sb_general_skipcount">Activer le suivi du comptage de saut</string>
<string name="revanced_sb_general_skipcount_sum_on">Permet au tableau de bord SponsorBlock de savoir combien de temps est économisé. Un message est envoyé au tableau de bord chaque fois qu\'un segment est ignoré</string>
<string name="revanced_sb_general_skipcount_sum_off">Le suivi du comptage des sauts n\'est pas activé</string>
<string name="revanced_sb_general_min_duration">Durée minimale du segment</string>
<string name="revanced_sb_general_min_duration_sum">Les segments plus courts que cette valeur (en secondes) ne seront pas affichés ou ignorés</string>
@@ -824,7 +856,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_sb_general_api_url">Modifier l\'URL de l\'API</string>
<string name="revanced_sb_general_api_url_sum">L\'adresse que SponsorBlock utilise pour faire des appels vers le serveur</string>
<string name="revanced_sb_api_url_reset">Réinitialiser l\'URL de l\'API</string>
<string name="revanced_sb_api_url_invalid">L\'URL de l\'API n\'est pas valide</string>
<string name="revanced_sb_api_url_invalid">API URL is invalid</string>
<string name="revanced_sb_api_url_changed">L\'URL de l\'API a été modifiée</string>
<string name="revanced_sb_settings_ie">Paramètres d\'Importation/exportation</string>
<string name="revanced_sb_settings_copy">Copier</string>
@@ -833,19 +865,22 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_sb_settings_import_successful">Paramètres importés avec succès</string>
<string name="revanced_sb_settings_import_failed">Échec de l\'importation : %s</string>
<string name="revanced_sb_settings_export_failed">Échec de l\'exportation : %s</string>
<string name="revanced_sb_settings_revanced_export_user_id_warning">Vos paramètres contiennent un utilisateur SponsorBlock.\n\nVotre identifiant d\'utilisateur est comme un mot de passe et ne doit jamais être partagé.\n</string>
<string name="revanced_sb_settings_revanced_export_user_id_warning_dismiss">Ne plus afficher</string>
<string name="revanced_sb_settings_revanced_export_user_id_warning">"Vos paramètres contiennent un identifiant SponsorBlock privé.
Votre identifiant utilisateur est comme un mot de passe et il ne doit jamais être partagé.
"</string>
<string name="revanced_sb_settings_revanced_export_user_id_warning_dismiss">Pas d\'affichage de nouveau</string>
<string name="revanced_sb_diff_segments">Modifier le comportement du segment</string>
<string name="revanced_sb_segments_sponsor">Sponsor</string>
<string name="revanced_sb_segments_sponsor_sum">Promotions payantes, parrainages payés et publicités directes. Pas pour l\'auto-promotion ou les cris gratuits aux causes, créateurs/sites Web / produits qu\'ils aiment</string>
<string name="revanced_sb_segments_sponsor_sum">Promotion payante, parrainages payés et publicités directes. Pas pour l\'auto-promotion ou les cris gratuits aux causes, créateurs/sites Web / produits qu\'ils aiment</string>
<string name="revanced_sb_segments_selfpromo">Promotion non rémunérée/Auto-promotion</string>
<string name="revanced_sb_segments_selfpromo_sum">Similaire à \'Sponsor\' à l\'exception de la promotion non payée ou de l\'auto-promotion. Inclut des sections sur la marchandise, les dons ou les informations sur la collaboration avec laquelle ils ont collaboré.</string>
<string name="revanced_sb_segments_selfpromo_sum">Similaire à « Sponsor », à l\'exception de la promotion non payée ou de l\'autopromotion. Inclut des sections sur la marchandise, les dons ou les informations sur la collaboration avec laquelle ils ont collaboré</string>
<string name="revanced_sb_segments_interaction">Rappel d\'interaction (abonnement)</string>
<string name="revanced_sb_segments_interaction_sum">Un court rappel de les aimer, s\'abonner ou les suivre au milieu du contenu. S\'il est long ou qu\'il s\'agit de quelque chose de spécifique, il devrait plutôt être sous auto-promotion</string>
<string name="revanced_sb_segments_highlight">Surligner</string>
<string name="revanced_sb_segments_highlight_sum">La partie de la vidéo que la plupart des gens recherchent</string>
<string name="revanced_sb_segments_intro">Entracte/Animation d\'intro</string>
<string name="revanced_sb_segments_intro_sum">Un intervalle sans contenu réel. Peut être une pause, une image statique ou une animation répétitive. N\'inclut pas les transitions contenant des informations</string>
<string name="revanced_sb_segments_intro_sum">Un intervalle sans contenu réel. Il peut s\'agir d\'une pause, d\'une image statique ou d\'une animation répétitive. N\'inclut pas les transitions contenant des informations</string>
<string name="revanced_sb_segments_outro">Écrans de fin/Crédits</string>
<string name="revanced_sb_segments_outro_sum">Crédits ou quand les cartes de terminaison YouTube apparaissent. Pas pour les conclusions avec des informations</string>
<string name="revanced_sb_segments_preview">Aperçu/Recap/Hook</string>
@@ -859,7 +894,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_sb_skip_button_sponsor">Ignorer le sponsor</string>
<string name="revanced_sb_skip_button_selfpromo">Passer la promotion</string>
<string name="revanced_sb_skip_button_interaction">Ignorer l\'interaction</string>
<string name="revanced_sb_skip_button_highlight">Passer en surbrillance</string>
<string name="revanced_sb_skip_button_highlight">Sauter en surbrillance</string>
<string name="revanced_sb_skip_button_intro_beginning">Ignorer l\'intro</string>
<string name="revanced_sb_skip_button_intro_middle">Ignorer l\'intermission</string>
<string name="revanced_sb_skip_button_intro_end">Ignorer l\'intermission</string>
@@ -893,14 +928,15 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_sb_submit_failed_invalid">Impossible de soumettre le segment : %s</string>
<string name="revanced_sb_submit_failed_timeout">SponsorBlock est temporairement indisponible</string>
<string name="revanced_sb_submit_failed_unknown_error">Impossible de soumettre le segment (statut: %1$d %2$s)</string>
<string name="revanced_sb_submit_failed_rate_limit">Impossible de soumettre le segment.\nTaux Limité (trop de membres du même utilisateur ou de l\'IP)</string>
<string name="revanced_sb_submit_failed_forbidden">Impossible de soumettre le segment : %s</string>
<string name="revanced_sb_submit_failed_duplicate">Impossible de soumettre le segment.\nÉxiste déjà</string>
<string name="revanced_sb_submit_failed_rate_limit">Impossible de soumettre le segment. Limite de taux (trop du même utilisateur ou de la même IP)</string>
<string name="revanced_sb_submit_failed_forbidden">Can\'t submit the segment: %s</string>
<string name="revanced_sb_submit_failed_duplicate">"Impossible de soumettre le segment.
Déjà existant"</string>
<string name="revanced_sb_submit_succeeded">Segment soumis avec succès</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. -->
<string name="revanced_sb_sponsorblock_connection_failure_timeout">SponsorBlock temporairement indisponible (API expirée)</string>
<string name="revanced_sb_sponsorblock_connection_failure_status">SponsorBlock temporairement indisponible (statut %d)</string>
<string name="revanced_sb_sponsorblock_connection_failure_generic">SponsorBlock temporairement indisponible</string>
<string name="revanced_sb_sponsorblock_connection_failure_timeout">SponsorBlock n\'est pas disponible temporairement (API expirée)</string>
<string name="revanced_sb_sponsorblock_connection_failure_status">SponsorBlock n\'est pas disponible temporairement (état %d)</string>
<string name="revanced_sb_sponsorblock_connection_failure_generic">SponsorBlock временно недоступен</string>
<string name="revanced_sb_vote_failed_timeout">Impossible de voter pour le segment (API expirée)</string>
<string name="revanced_sb_vote_failed_unknown_error">Impossible de voter pour le segment (statut: %1$d %2$s)</string>
<string name="revanced_sb_vote_failed_forbidden">Impossible de voter pour le segment : %s</string>
@@ -918,10 +954,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_sb_new_segment_time_start">Instant de début du segment</string>
<string name="revanced_sb_new_segment_time_end">Instant de fin du segment</string>
<string name="revanced_sb_new_segment_confirm_title">Est-ce que ces valeurs sont correctes?</string>
<string name="revanced_sb_new_segment_confirm_content">Le segment est de\n\n%1$s\nà\n%2$s\n\n(%3$s)\n\nPrêt à soumettre ?</string>
<string name="revanced_sb_new_segment_start_is_before_end">Le début doit être avant la fin</string>
<string name="revanced_sb_new_segment_mark_locations_first">Marquez d\'abord deux emplacements sur la barre de temps</string>
<string name="revanced_sb_new_segment_preview_segment_first">Aperçu du segment, et s\'assurer qu\'il passe sans problème</string>
<string name="revanced_sb_new_segment_preview_segment_first">Prévisualiser le segment et s\'assurer qu\'il se déplace facilement</string>
<string name="revanced_sb_new_segment_edit_by_hand_title">Modifier la durée du segment manuellement</string>
<string name="revanced_sb_new_segment_edit_by_hand_content">Voulez-vous modifier le début ou la fin du segment ?</string>
<string name="revanced_sb_new_segment_edit_by_hand_parse_error">Temps donné invalide</string>
@@ -950,7 +985,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_sb_color_dot_label">Couleur:</string>
<string name="revanced_sb_color_changed">Couleur changée</string>
<string name="revanced_sb_color_reset">Couleur réinitialisée</string>
<string name="revanced_sb_color_invalid">Code de couleur invalide</string>
<string name="revanced_sb_color_invalid">Code couleur invalide</string>
<string name="revanced_sb_reset_color">Réinitialiser la couleur</string>
<string name="revanced_sb_reset">Réinitialiser</string>
<string name="revanced_sb_about">À propos</string>
@@ -960,16 +995,20 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_spoof_app_version_title">Spoof version de l\'application</string>
<string name="revanced_spoof_app_version_summary_on">Version falsifiée</string>
<string name="revanced_spoof_app_version_summary_off">Version non falsifiée</string>
<string name="revanced_spoof_app_version_user_dialog_message">La version de l\'application sera falsifiée vers une ancienne version de YouTube.\n\nCela va changer l\'apparence et les fonctionnalités de l\'application, mais des effets secondaires inconnus peuvent se produire.\n\nSi la version ultérieure est désactivée, il est recommandé de supprimer les données de l\'application pour éviter les bogues de l\'interface utilisateur.</string>
<string name="revanced_spoof_app_version_user_dialog_message">"La version de l'application sera usurpée vers une ancienne version de YouTube.
Cela modifiera l'apparence et les fonctionnalités de l'application, mais des effets secondaires inconnus peuvent se produire.
Si cette option est désactivée par la suite, il est recommandé de vider les données de l'application pour éviter les bogues de l'interface utilisateur."</string>
<!-- 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 -->
<string name="revanced_spoof_app_version_target_title">Falsifier la cible de version de l\'application</string>
<string name="revanced_spoof_app_version_target_entry_1">19.35.36 - Restauration des anciennes icônes du lecteur de Shorts </string>
<!-- 'RYD' is 'Return YouTube Dislike' -->
<string name="revanced_spoof_app_version_target_legacy_entry_1">18.33.40 - Restaurer RYD en mode incognito Shorts</string>
<string name="revanced_spoof_app_version_target_legacy_entry_1">Falsifier la cible de version de l\'application</string>
<string name="revanced_spoof_app_version_target_legacy_entry_2">18.20.39 - Restaurer une grande vitesse vidéo &amp; menu qualité</string>
<string name="revanced_spoof_app_version_target_legacy_entry_3">18.09.39 - Restaurer l\'onglet bibliothèque</string>
<string name="revanced_spoof_app_version_target_legacy_entry_4">17.33.42 - Restaurer l\'ancienne tablette de la liste de lecture</string>
<string name="revanced_spoof_app_version_target_legacy_entry_3">Falsifier la cible de version de l\'application</string>
<string name="revanced_spoof_app_version_target_legacy_entry_4">17.33.42 - Retour à l\'ancienne étagère de liste de lecture</string>
</patch>
<patch id="layout.startpage.changeStartPagePatch">
<string name="revanced_change_start_page_title">Définir la page de démarrage</string>
@@ -1004,7 +1043,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
</patch>
<patch id="layout.tablet.enableTabletLayoutPatch">
<string name="revanced_tablet_layout_title">Activer la disposition de la tablette</string>
<string name="revanced_tablet_layout_summary_on">Mise en page de la tablette est activée</string>
<string name="revanced_tablet_layout_summary_on">La mise en page tablette est activée</string>
<string name="revanced_tablet_layout_summary_off">La disposition de la tablette est désactivée</string>
<string name="revanced_tablet_layout_user_dialog_message">Les messages de la communauté n\'apparaissent pas sur la disposition de la tablette</string>
</patch>
@@ -1013,9 +1052,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_miniplayer_screen_summary">Changer le style du lecteur réduit dans l\'application</string>
<string name="revanced_miniplayer_type_title">Type de Miniplayer</string>
<string name="revanced_miniplayer_type_entry_0">Désactivé</string>
<string name="revanced_miniplayer_type_entry_1">Original</string>
<string name="revanced_miniplayer_type_entry_1">Par défaut</string>
<string name="revanced_miniplayer_type_entry_2">Minimal</string>
<string name="revanced_miniplayer_type_entry_3">Tablette</string>
<string name="revanced_miniplayer_type_entry_3">Tablet</string>
<string name="revanced_miniplayer_type_entry_4">Moderne 1</string>
<string name="revanced_miniplayer_type_entry_5">Moderne 2</string>
<string name="revanced_miniplayer_type_entry_6">Moderne 3</string>
@@ -1023,19 +1062,28 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_miniplayer_rounded_corners_summary_on">Les coins sont arrondis</string>
<string name="revanced_miniplayer_rounded_corners_summary_off">Les coins sont carrés</string>
<string name="revanced_miniplayer_double_tap_action_title">Activer le double appui et pincer pour redimensionner</string>
<string name="revanced_miniplayer_double_tap_action_summary_on">L\'action de double appui et le pincement pour redimensionner est activé\n\n• Double appui pour augmenter la taille du mini-joueur\n• Double appui à nouveau pour restaurer la taille d\'origine</string>
<string name="revanced_miniplayer_double_tap_action_summary_on">"L'action double tap et pincer pour redimensionner est activée
• Double-tap pour augmenter la taille du mini-lecteur
• Re-appuyez deux fois pour restaurer la taille d'origine"</string>
<string name="revanced_miniplayer_double_tap_action_summary_off">Action de double appui et pincement pour redimensionner est désactivé</string>
<string name="revanced_miniplayer_drag_and_drop_title">Activer le glisser-déposer</string>
<string name="revanced_miniplayer_drag_and_drop_summary_on">Le glisser-déposer est activé\n\nMiniplayer peut être déplacé vers n\'importe quel coin de l\'écran</string>
<string name="revanced_miniplayer_drag_and_drop_summary_on">"Le glisser-déposer est activé
Le mini-lecteur peut être glissé dans n'importe quel coin de l'écran"</string>
<string name="revanced_miniplayer_drag_and_drop_summary_off">Glisser-déposer est désactivé</string>
<string name="revanced_miniplayer_horizontal_drag_title">Activer le geste de glissement horizontal</string>
<string name="revanced_miniplayer_horizontal_drag_summary_on">Geste de glissement horizontal activé\n\nMiniplayer peut être déplacé hors de l\'écran vers la gauche ou la droite</string>
<string name="revanced_miniplayer_horizontal_drag_summary_on">"Le geste de glisser horizontalement est activé
Le mini-lecteur peut être glissé hors de l'écran vers la gauche ou la droite"</string>
<string name="revanced_miniplayer_horizontal_drag_summary_off">Geste de glissement horizontal désactivé</string>
<string name="revanced_miniplayer_hide_expand_close_title">Masquer le bouton de fermeture</string>
<string name="revanced_miniplayer_hide_expand_close_summary_on">Le bouton de fermeture est masqué</string>
<string name="revanced_miniplayer_hide_expand_close_summary_off">Le bouton de fermeture est affiché</string>
<string name="revanced_miniplayer_hide_expand_close_legacy_title">Masquer les boutons d\'agrandissement et de fermeture</string>
<string name="revanced_miniplayer_hide_expand_close_legacy_summary_on">Les boutons sont cachés\n\nGlisser pour s\'étendre ou fermer</string>
<string name="revanced_miniplayer_hide_expand_close_legacy_summary_on">"Les boutons sont masqués
Balayez pour développer ou fermer"</string>
<string name="revanced_miniplayer_hide_expand_close_legacy_summary_off">Les boutons agrandir et fermer sont affichés</string>
<string name="revanced_miniplayer_hide_subtext_title">Masquer les sous-textes</string>
<string name="revanced_miniplayer_hide_subtext_summary_on">Les sous-textes sont cachés</string>
@@ -1047,7 +1095,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_miniplayer_width_dip_summary">Initial à la taille de l\'écran, en pixels</string>
<string name="revanced_miniplayer_width_dip_invalid_toast">La taille du pixel doit être comprise entre %1$s et %2$s</string>
<string name="revanced_miniplayer_opacity_title">Opacité de l\'overlay</string>
<string name="revanced_miniplayer_opacity_summary">Valeur d\'opacité entre 0 et 100, où 0 est transparent</string>
<string name="revanced_miniplayer_opacity_summary">Valeur d\'opacité entre 0 et 100, où 0 signifie transparent</string>
<string name="revanced_miniplayer_opacity_invalid_toast">L\'opacité de l\'overlay du Miniplayer doit être comprise entre 0 et 100</string>
</patch>
<patch id="layout.theme.themePatch">
@@ -1066,7 +1114,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
<patch id="layout.thumbnails.bypassImageRegionRestrictionsPatch">
<string name="revanced_bypass_image_region_restrictions_title">Ignorer les restrictions de région de l\'image</string>
<string name="revanced_bypass_image_region_restrictions_summary_on">Utiliser l\'hôte d\'image yt4.ggpht.com</string>
<string name="revanced_bypass_image_region_restrictions_summary_off">Utiliser l\'hôte d\'image original\n\nActiver ceci peut corriger les images manquantes qui sont bloquées dans certaines régions</string>
<string name="revanced_bypass_image_region_restrictions_summary_off">"Utiliser l'hôte d'images d'origine
L'activation de cette option peut corriger les images manquantes qui sont bloquées dans certaines régions"</string>
</patch>
<patch id="layout.thumbnails.alternativeThumbnailsPatch">
<!-- 'Home' should be translated using the same localized wording YouTube displays for the home tab. -->
@@ -1081,17 +1131,21 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_alt_thumbnail_options_entry_2">DeArrow &amp; Miniatures originales</string>
<string name="revanced_alt_thumbnail_options_entry_3">DeArrow &amp; captures</string>
<string name="revanced_alt_thumbnail_options_entry_4">Captures</string>
<string name="revanced_alt_thumbnail_dearrow_about_summary">DeArrow fournit des miniatures pour les vidéos YouTube. Ces vignettes sont souvent plus pertinentes que celles fournies par YouTube\n\nSi activé, les URLs vidéo seront envoyées au serveur API et aucune autre donnée n\'est envoyée. Si une vidéo n\'a pas de vignettes DeArrow, alors les captures originales ou encore sont affichées\n\nAppuyez ici pour en savoir plus sur DeArrow</string>
<string name="revanced_alt_thumbnail_dearrow_about_summary">"DeArrow fournit des miniatures provenant de la foule pour les vidéos YouTube. Ces miniatures sont souvent plus pertinentes que celles fournies par YouTube
Si cette option est activée, les URL des vidéos seront envoyées au serveur API et aucune autre donnée ne sera envoyée. Si une vidéo n'a pas de miniatures DeArrow, l'original ou des captures d'écran sont affichés
Appuyez ici pour en savoir plus sur DeArrow"</string>
<string name="revanced_alt_thumbnail_dearrow_connection_toast_title">Afficher un message si l\'API n\'est pas disponible</string>
<string name="revanced_alt_thumbnail_dearrow_connection_toast_summary_on">Message affiché si DeArrow n\'est pas disponible</string>
<string name="revanced_alt_thumbnail_dearrow_connection_toast_summary_off">Message non affiché si DeArrow n\'est pas disponible</string>
<string name="revanced_alt_thumbnail_dearrow_api_url_title">Point d\'API DeArrow</string>
<string name="revanced_alt_thumbnail_dearrow_api_url_summary">L\'URL du cache de miniatures DeArrow</string>
<string name="revanced_alt_thumbnail_stills_about_title">Captures vidéo</string>
<string name="revanced_alt_thumbnail_stills_about_summary">Toujours des captures sont prises à partir du début/milieu/fin de chaque vidéo. Ces images sont intégrées dans YouTube et aucune API externe n\'est utilisée</string>
<string name="revanced_alt_thumbnail_stills_about_summary">Des captures d\'écran immobiles sont toujours prises au début, au milieu et à la fin de chaque vidéo. Ces images sont intégrées à YouTube et aucune API externe n\'est utilisée</string>
<string name="revanced_alt_thumbnail_stills_fast_title">Utiliser des captures instantanées</string>
<string name="revanced_alt_thumbnail_stills_fast_summary_on">En utilisant une qualité moyenne encore des captures. Les miniatures se chargeront plus vite, mais les flux en direct, non diffusés, ou les très vieilles vidéos peuvent afficher des miniatures vides</string>
<string name="revanced_alt_thumbnail_stills_fast_summary_off">Utiliser des captures encore de haute qualité</string>
<string name="revanced_alt_thumbnail_stills_fast_summary_on">Utiliser des captures fixes de qualité moyenne</string>
<string name="revanced_alt_thumbnail_stills_fast_summary_off">Utiliser des captures fixes de haute qualité</string>
<string name="revanced_alt_thumbnail_stills_time_title">Datation de la vidéo pour prendre des captures</string>
<string name="revanced_alt_thumbnail_stills_time_entry_1">Début de la vidéo</string>
<string name="revanced_alt_thumbnail_stills_time_entry_2">Milieu de la vidéo</string>
@@ -1111,7 +1165,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
<patch id="misc.dns.checkWatchHistoryDomainNameResolutionPatch">
<string name="revanced_check_watch_history_domain_name_dialog_title">Avertissement</string>
<string name="revanced_check_watch_history_domain_name_dialog_message">Votre historique de surveillance n\'est pas enregistré.&lt;br&gt;&lt;br&gt;Ceci est probablement dû à un bloqueur de publicités DNS ou à un proxy réseau.&lt;br&gt;&lt;br&gt;Pour résoudre ce problème, mettez sur la liste blanche &lt;b&gt;s.youtube.com&lt;/b&gt; ou désactivez tous les bloqueurs DNS et proxies.</string>
<string name="revanced_check_watch_history_domain_name_dialog_ignore">Ne plus afficher</string>
<string name="revanced_check_watch_history_domain_name_dialog_ignore">Nezobrazovat znovu</string>
</patch>
<patch id="misc.autorepeat.autoRepeatPatch">
<string name="revanced_auto_repeat_title">Activer la répétition automatique</string>
@@ -1120,16 +1174,20 @@ This is because Crowdin requires temporarily flattening this file and removing t
</patch>
<patch id="misc.dimensions.spoof.spoofDeviceDimensionsPatch">
<string name="revanced_spoof_device_dimensions_title">Falsifier les dimensions de l\'appareil</string>
<string name="revanced_spoof_device_dimensions_summary_on">Les dimensions de l\'appareil ont falsifié\n\ndes qualités vidéo plus élevées peuvent être débloquées mais vous risquez de rencontrer des difficultés de lecture vidéo, une mauvaise autonomie de la batterie et des effets secondaires inconnus</string>
<string name="revanced_spoof_device_dimensions_summary_off">Les dimensions de l\'appareil n\'ont pas étées falsifiées\n\nL\'activation de cette option peut débloquer des qualités vidéo plus élevées</string>
<string name="revanced_spoof_device_dimensions_user_dialog_message">L\'activation de cette option peut causer des problèmes de lecture vidéo, une dégradation de la durée de vie de la batterie et des effets secondaires inconnus.</string>
<string name="revanced_spoof_device_dimensions_summary_on">"Dimensions de l'appareil usurpées
Des qualités vidéo plus élevées peuvent être déverrouillées, mais vous risquez de rencontrer des saccades de lecture vidéo, une autonomie réduite et des effets secondaires inconnus"</string>
<string name="revanced_spoof_device_dimensions_summary_off">"Dimensions de l'appareil non usurpées
L'activation de cette option peut déverrouiller des qualités vidéo plus élevées"</string>
<string name="revanced_spoof_device_dimensions_user_dialog_message">Activer cette option peut causer des problèmes de lecture vidéo, une dégradation de la durée de vie de la batterie et des effets secondaires inconnus.</string>
</patch>
<patch id="misc.gms.gmsCoreSupportResourcePatch">
<string name="microg_settings_title">Paramètres GmsCore</string>
<string name="microg_settings_summary">Paramètres pour GmsCore</string>
<string name="microg_settings_title">GmsCore Seçenekleri</string>
<string name="microg_settings_summary">GmsCore İçin Ayarlar</string>
</patch>
<patch id="misc.links.bypassURLRedirectsPatch">
<string name="revanced_bypass_url_redirects_title">Outrepasser les redirections d\'URL</string>
<string name="revanced_bypass_url_redirects_title">URL yönlendirmelerini atla</string>
<string name="revanced_bypass_url_redirects_summary_on">Les redirections d\'URL sont contournées</string>
<string name="revanced_bypass_url_redirects_summary_off">Les redirections d\'URL ne sont pas contournées</string>
</patch>
@@ -1151,13 +1209,12 @@ This is because Crowdin requires temporarily flattening this file and removing t
<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">Automatique</string>
<string name="revanced_remember_video_quality_last_selected_title">Mémoriser les changements de qualité vidéo</string>
<string name="revanced_remember_video_quality_last_selected_summary_on">Les changements de qualité s\'appliquent à toutes les vidéos</string>
<string name="revanced_remember_video_quality_last_selected_summary_off">Les changements de qualité ne s\'appliquent qu\'à la vidéo actuelle</string>
<string name="revanced_remember_video_quality_last_selected_title">Rappeler les modifications de la qualité de la vidéo</string>
<string name="revanced_remember_video_quality_last_selected_summary_on">Les modifications de qualité sappliquent à toutes les vidéos</string>
<string name="revanced_remember_video_quality_last_selected_summary_off">Les modifications de qualité sappliquent uniquement à la vidéo en cours</string>
<string name="revanced_video_quality_default_wifi_title">Qualité vidéo par défaut sur le réseau Wi-Fi</string>
<string name="revanced_video_quality_default_mobile_title">Qualité par défaut de la vidéo sur le réseau mobile</string>
<string name="revanced_video_quality_default_mobile_title">Qualité vidéo par défaut sur le réseau mobile</string>
<string name="revanced_remember_video_quality_mobile">mobile</string>
<string name="revanced_remember_video_quality_wifi">wi-fi</string>
<string name="revanced_remember_video_quality_toast">La qualité %1$s par défaut a été changée en : %2$s</string>
</patch>
<patch id="video.speed.button.playbackSpeedButtonPatch">
@@ -1171,8 +1228,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_custom_speed_menu_summary_off">Le menu de vitesse personnalisé n\'est pas affiché</string>
<string name="revanced_custom_playback_speeds_title">Vitesse de lecture personnalisée</string>
<string name="revanced_custom_playback_speeds_summary">Ajouter ou modifier les vitesses de lecture personnalisées</string>
<string name="revanced_custom_playback_speeds_invalid">Les vitesses personnalisées doivent être inférieures à %s. Utiliser les valeurs par défaut.</string>
<string name="revanced_custom_playback_speeds_parse_exception">Vitesses de lecture personnalisées invalides. Utilisation des valeurs par défaut.</string>
<string name="revanced_custom_playback_speeds_invalid">Les vitesses personnalisées doivent être inférieures à %s</string>
<string name="revanced_custom_playback_speeds_parse_exception">Vitesses de lecture personnalisées non valides</string>
<string name="revanced_custom_playback_speeds_auto">Automatique</string>
</patch>
<patch id="video.speed.remember.rememberPlaybackSpeedPatch">
@@ -1189,26 +1246,87 @@ This is because Crowdin requires temporarily flattening this file and removing t
</patch>
<patch id="interaction.seekbar.enableSlideToSeekPatch">
<string name="revanced_slide_to_seek_title">Activer la diapositive pour rechercher</string>
<string name="revanced_slide_to_seek_summary_on">Glisser pour chercher est activé</string>
<string name="revanced_slide_to_seek_summary_on">تم تمكين Slide to Seek</string>
<string name="revanced_slide_to_seek_summary_off">Glisser à chercher n\'est pas activé</string>
</patch>
<patch id="misc.fix.playback.spoofVideoStreamsPatch">
<string name="revanced_spoof_video_streams_screen_title">Falsifier les flux vidéo</string>
<string name="revanced_spoof_video_streams_screen_title">Spoof Video Streams</string>
<string name="revanced_spoof_video_streams_screen_summary">Falsifier les flux vidéo du client pour éviter les problèmes de lecture</string>
<string name="revanced_spoof_video_streams_title">Falsifier les flux vidéo</string>
<string name="revanced_spoof_video_streams_summary_on">Les flux vidéo sont falsifiés</string>
<string name="revanced_spoof_video_streams_summary_off">Les flux vidéo ne sont pas falsifiés\n\nLa lecture de la vidéo pourrait ne pas fonctionner</string>
<string name="revanced_spoof_video_streams_summary_off">"Les flux vidéo ne sont pas usurpés
La lecture vidéo peut ne pas fonctionner"</string>
<string name="revanced_spoof_video_streams_user_dialog_message">Désactiver ce paramètre peut causer des problèmes de lecture vidéo.</string>
<string name="revanced_spoof_video_streams_client_title">Client par défaut</string>
<string name="revanced_spoof_video_streams_ios_force_avc_title">Forcer AVC (H.264)</string>
<string name="revanced_spoof_video_streams_ios_force_avc_summary_on">Le codec vidéo est AVC (H.264)</string>
<string name="revanced_spoof_video_streams_ios_force_avc_summary_off">Le codec vidéo est VP9 ou AV1</string>
<string name="revanced_spoof_video_streams_ios_force_avc_no_hardware_vp9_summary_on">Votre appareil ne possède pas de décodage matériel VP9, et ce paramètre est toujours activé lorsque la falsification du client est activée</string>
<string name="revanced_spoof_video_streams_ios_force_avc_user_dialog_message">Activer ceci peut améliorer la durée de vie de la batterie et corriger les erreurs de lecture.\n\nAVC a une résolution maximale de 1080p, et la lecture vidéo utilisera plus de données internet que VP9 ou AV1.</string>
<string name="revanced_spoof_video_streams_ios_force_avc_summary_on">Le codec vidéo est forcé à AVC (H.264)</string>
<string name="revanced_spoof_video_streams_ios_force_avc_summary_off">Le codec vidéo est déterminé automatiquement</string>
<string name="revanced_spoof_video_streams_ios_force_avc_user_dialog_message">"L'activation de cette option peut améliorer l'autonomie de la batterie et corriger les saccades de lecture.
AVC a une résolution maximale de 1080p, le codec audio Opus n'est pas disponible et la lecture vidéo utilisera plus de données Internet que VP9 ou AV1."</string>
<string name="revanced_spoof_video_streams_about_ios_title">Effets secondaires d\'usurpation iOS</string>
<string name="revanced_spoof_video_streams_about_ios_summary">• Les vidéos privées des enfants ne peuvent pas être lues\n• Les live reams commencent à partir de\n• Les vidéos peuvent se terminer 1 seconde tôt\n• Aucun codec audio opus</string>
<string name="revanced_spoof_video_streams_about_ios_summary">"• Les vidéos privées pour enfants peuvent ne pas être lues
• Les diffusions en direct commencent depuis le début
• Les vidéos se terminent 1 seconde plus tôt"</string>
<string name="revanced_spoof_video_streams_about_android_vr_title">Effets secondaires de l\'usurpation VR Android</string>
<string name="revanced_spoof_video_streams_about_android_vr_summary">• Les vidéos des enfants peuvent ne pas lire\n• Le menu de la piste audio manque\n• Le volume stable n\'est pas disponible</string>
<string name="revanced_spoof_video_streams_about_android_vr_summary">"• Les vidéos pour enfants peuvent ne pas être lues
• Les diffusions en direct commencent depuis le début
• Les vidéos se terminent 1 seconde plus tôt"</string>
<string name="revanced_spoof_video_streams_language_title">Langue du flux audio par défaut</string>
<string name="revanced_spoof_video_streams_language_DEFAULT">Langue de l\'application</string>
<string name="revanced_spoof_video_streams_language_AR">Arabe</string>
<string name="revanced_spoof_video_streams_language_AZ">Azerbaïdjanais</string>
<string name="revanced_spoof_video_streams_language_BG">Bulgare</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">Tchèque</string>
<string name="revanced_spoof_video_streams_language_DA">Danois</string>
<string name="revanced_spoof_video_streams_language_DE">Allemand</string>
<string name="revanced_spoof_video_streams_language_EL">Grecque</string>
<string name="revanced_spoof_video_streams_language_EN">Anglais</string>
<string name="revanced_spoof_video_streams_language_ES">Espagnol</string>
<string name="revanced_spoof_video_streams_language_ET">Estonien</string>
<string name="revanced_spoof_video_streams_language_FA">Perse</string>
<string name="revanced_spoof_video_streams_language_FI">Finlandais</string>
<string name="revanced_spoof_video_streams_language_FR">Français</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">Croate</string>
<string name="revanced_spoof_video_streams_language_HU">Hongrois</string>
<string name="revanced_spoof_video_streams_language_ID">Indonésien</string>
<string name="revanced_spoof_video_streams_language_IT">Italien</string>
<string name="revanced_spoof_video_streams_language_JA">Japonais</string>
<string name="revanced_spoof_video_streams_language_KK">Kazakh</string>
<string name="revanced_spoof_video_streams_language_KO">Coréen</string>
<string name="revanced_spoof_video_streams_language_LT">Lituanien</string>
<string name="revanced_spoof_video_streams_language_LV">Lettonie</string>
<string name="revanced_spoof_video_streams_language_MK">Macédonien</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">Malais</string>
<string name="revanced_spoof_video_streams_language_MY">Burmese</string>
<string name="revanced_spoof_video_streams_language_NL">Néerlandais</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">Polonais</string>
<string name="revanced_spoof_video_streams_language_PT_BR">Portugais (Brésil)</string>
<string name="revanced_spoof_video_streams_language_PT_PT">Portugais (Portugal)</string>
<string name="revanced_spoof_video_streams_language_RO">Roumain</string>
<string name="revanced_spoof_video_streams_language_RU">Russe</string>
<string name="revanced_spoof_video_streams_language_SK">Slovaque</string>
<string name="revanced_spoof_video_streams_language_SL">Slovene</string>
<string name="revanced_spoof_video_streams_language_SR">Serbe</string>
<string name="revanced_spoof_video_streams_language_SV">Suédois</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">Thaï</string>
<string name="revanced_spoof_video_streams_language_TR">Turc</string>
<string name="revanced_spoof_video_streams_language_UK">Ukrainien</string>
<string name="revanced_spoof_video_streams_language_UR">Ourdou</string>
<string name="revanced_spoof_video_streams_language_VI">Vietnamese</string>
<string name="revanced_spoof_video_streams_language_ZH">Chinois</string>
</patch>
</app>
<app id="twitch">
@@ -1218,8 +1336,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_block_audio_ads_summary_off">Les publicités audio sont débloquées</string>
</patch>
<patch id="ad.embedded.embeddedAdsPatch">
<string name="revanced_embedded_ads_service_unavailable">%s n\'est pas disponible. Les publicités peuvent s\'afficher. Essayez de passer à un autre service de blocage de publicités dans les paramètres.</string>
<string name="revanced_embedded_ads_service_failed">Le serveur %s a renvoyé une erreur. Les publicités peuvent s\'afficher. Essayez de passer à un autre service de blocage de publicités dans les paramètres.</string>
<string name="revanced_embedded_ads_service_unavailable">%s indisponible, des annonces peuvent s\'afficher. Essayez de changer de service de blocage des annonces dans les paramètres.</string>
<string name="revanced_embedded_ads_service_failed">%s a renvoyé une erreur, des annonces peuvent s\'afficher. Essayez de changer de service de blocage des annonces dans les paramètres.</string>
<string name="revanced_block_embedded_ads_title">Bloquer les publicités vidéo intégrées</string>
<string name="revanced_block_embedded_ads_entry_1">Désactivé</string>
<string name="revanced_block_embedded_ads_entry_2">Proxy lumineux</string>

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