Compare commits

...

56 Commits

Author SHA1 Message Date
semantic-release-bot
8d113a7c67 chore: Release v5.31.0-dev.5 [skip ci]
# [5.31.0-dev.5](https://github.com/ReVanced/revanced-patches/compare/v5.31.0-dev.4...v5.31.0-dev.5) (2025-07-05)

### Features

* **YouTube - Change header:** Add in-app setting to change the app header ([#5346](https://github.com/ReVanced/revanced-patches/issues/5346)) ([4e74207](4e742075f3))
2025-07-05 08:06:28 +00:00
LisoUseInAIKyrios
4e742075f3 feat(YouTube - Change header): Add in-app setting to change the app header (#5346) 2025-07-05 12:02:58 +04:00
github-actions[bot]
04caa66662 chore: Sync translations (#5350) 2025-07-05 12:02:36 +04:00
semantic-release-bot
dacc85f5e7 chore: Release v5.31.0-dev.4 [skip ci]
# [5.31.0-dev.4](https://github.com/ReVanced/revanced-patches/compare/v5.31.0-dev.3...v5.31.0-dev.4) (2025-07-04)

### Bug Fixes

* **YouTube - Hide ads:** Hide new type of general ad ([#5345](https://github.com/ReVanced/revanced-patches/issues/5345)) ([f9abec3](f9abec358a))
2025-07-04 20:09:13 +00:00
ILoveOpenSourceApplications
f9abec358a fix(YouTube - Hide ads): Hide new type of general ad (#5345) 2025-07-05 00:06:30 +04:00
github-actions[bot]
7e11514cc1 chore: Sync translations (#5347) 2025-07-05 00:06:16 +04:00
semantic-release-bot
2e9c8df8f6 chore: Release v5.31.0-dev.3 [skip ci]
# [5.31.0-dev.3](https://github.com/ReVanced/revanced-patches/compare/v5.31.0-dev.2...v5.31.0-dev.3) (2025-07-04)

### Bug Fixes

* **Spotify:** Remove other ads type from the browse screen ([#5333](https://github.com/ReVanced/revanced-patches/issues/5333)) ([4c8cfc8](4c8cfc8800))
2025-07-04 08:44:24 +00:00
brosssh
4c8cfc8800 fix(Spotify): Remove other ads type from the browse screen (#5333) 2025-07-04 12:41:30 +04:00
semantic-release-bot
0ba6fad33f chore: Release v5.31.0-dev.2 [skip ci]
# [5.31.0-dev.2](https://github.com/ReVanced/revanced-patches/compare/v5.31.0-dev.1...v5.31.0-dev.2) (2025-07-04)

### Features

* **YouTube - Hide layout components:** Add `Hide channel links preview` and `Hide 'Visit Community' button` in channel page ([#5320](https://github.com/ReVanced/revanced-patches/issues/5320)) ([3eac215](3eac215e13))
2025-07-04 08:35:55 +00:00
ILoveOpenSourceApplications
3eac215e13 feat(YouTube - Hide layout components): Add Hide channel links preview and Hide 'Visit Community' button in channel page (#5320) 2025-07-04 12:32:48 +04:00
semantic-release-bot
90a3262f68 chore: Release v5.31.0-dev.1 [skip ci]
# [5.31.0-dev.1](https://github.com/ReVanced/revanced-patches/compare/v5.30.0...v5.31.0-dev.1) (2025-07-04)

### Bug Fixes

* **SoundCloud:** Constrain patches to last working app target ([89ec5d5](89ec5d5bc6))

### Features

* **Lightroom:** Constrain patches to last working version ([#5335](https://github.com/ReVanced/revanced-patches/issues/5335)) ([f7f49b8](f7f49b834e))
2025-07-04 08:32:35 +00:00
LisoUseInAIKyrios
f7f49b834e feat(Lightroom): Constrain patches to last working version (#5335) 2025-07-04 12:29:45 +04:00
LisoUseInAIKyrios
89ec5d5bc6 fix(SoundCloud): Constrain patches to last working app target 2025-07-04 12:28:58 +04:00
LisoUseInAIKyrios
e3bc8be936 chore(YouTube - Video Quality): Fix setting parent typo 2025-07-04 01:25:56 +04:00
semantic-release-bot
6c5c3f5a4d chore: Release v5.30.0 [skip ci]
# [5.30.0](https://github.com/ReVanced/revanced-patches/compare/v5.29.0...v5.30.0) (2025-07-02)

### Bug Fixes

* **Spotify - Spoof client patch:** Block sending bad integrity verdicts to potentially fix account suspensions ([#5274](https://github.com/ReVanced/revanced-patches/issues/5274)) ([69600d0](69600d08a4))
* **Spotify - Spoof client:** Handle remaining edge cases to obtain a session ([#5285](https://github.com/ReVanced/revanced-patches/issues/5285)) ([b2e601f](b2e601f0f0))
* **Spotify - Spoof client:** Skip native login screens ([#5228](https://github.com/ReVanced/revanced-patches/issues/5228)) ([d7ed325](d7ed32571f))
* **Spotify - Unlock Premium:** Fix hiding context menu ads on newest versions ([#5318](https://github.com/ReVanced/revanced-patches/issues/5318)) ([8b9e044](8b9e04475d))
* **Spotify - Unlock Premium:** Fix hiding context menu ads on newest versions by simplifying fingerprint ([#5318](https://github.com/ReVanced/revanced-patches/issues/5318)) ([d1313e3](d1313e3ea1))
* **Spotify:** Add `Spoof client` patch to fix various issues by using a web platform access token ([#5173](https://github.com/ReVanced/revanced-patches/issues/5173)) ([1a8aacd](1a8aacdff6))
* **YouTube - Hide ads:** Fix "Hide shopping links" ([#5267](https://github.com/ReVanced/revanced-patches/issues/5267)) ([e169056](e169056b70))
* **YouTube - Hide layout components:** Fix "Hide AI Comments summary" in Comments ([#5284](https://github.com/ReVanced/revanced-patches/issues/5284)) ([f084743](f08474369b))
* **YouTube - Hide layout components:** Fix "Hide AI-generated video summary" in video description ([#5269](https://github.com/ReVanced/revanced-patches/issues/5269)) ([ca694c7](ca694c78d2))
* **YouTube - Hide layout components:** Fix "Hide ticket shelf" hiding unwanted components ([#5292](https://github.com/ReVanced/revanced-patches/issues/5292)) ([ad6da67](ad6da67281))
* **YouTube - Hide Shorts components:** Fix hiding of untoggled components ([#5266](https://github.com/ReVanced/revanced-patches/issues/5266)) ([b6bf1e0](b6bf1e026c))
* **YouTube - SponsorBlock:** Do not show undo skip if PiP is active ([#5314](https://github.com/ReVanced/revanced-patches/issues/5314)) ([209a3a3](209a3a3626))

### Features

* **Spotify:** Remove ads section from browse ([#5193](https://github.com/ReVanced/revanced-patches/issues/5193)) ([92b588c](92b588c866))
* **YouTube - Hide layout components:** Add `Hide in history` option to filter bar ([#5271](https://github.com/ReVanced/revanced-patches/issues/5271)) ([da20e56](da20e565cd))
* **YouTube - SponsorBlock:** Add "Undo automatic skip toast" ([#5277](https://github.com/ReVanced/revanced-patches/issues/5277)) ([6ee94f8](6ee94f8532))
2025-07-02 14:55:17 +00:00
oSumAtrIX
629bd0644b chore: Merge branch dev to main (#5265) 2025-07-02 16:50:31 +02:00
github-actions[bot]
b4005079e3 chore: Sync translations (#5322) 2025-07-02 18:21:04 +04:00
semantic-release-bot
a354c443ad chore: Release v5.30.0-dev.10 [skip ci]
# [5.30.0-dev.10](https://github.com/ReVanced/revanced-patches/compare/v5.30.0-dev.9...v5.30.0-dev.10) (2025-07-02)

### Bug Fixes

* **Spotify - Unlock Premium:** Fix hiding context menu ads on newest versions by simplifying fingerprint ([#5318](https://github.com/ReVanced/revanced-patches/issues/5318)) ([d1313e3](d1313e3ea1))
2025-07-02 14:08:17 +00:00
oSumAtrIX
d1313e3ea1 fix(Spotify - Unlock Premium): Fix hiding context menu ads on newest versions by simplifying fingerprint (#5318) 2025-07-02 16:04:26 +02:00
semantic-release-bot
11338008c6 chore: Release v5.30.0-dev.9 [skip ci]
# [5.30.0-dev.9](https://github.com/ReVanced/revanced-patches/compare/v5.30.0-dev.8...v5.30.0-dev.9) (2025-07-02)

### Bug Fixes

* **Spotify - Unlock Premium:** Fix hiding context menu ads on newest versions ([#5318](https://github.com/ReVanced/revanced-patches/issues/5318)) ([8b9e044](8b9e04475d))
2025-07-02 12:12:04 +00:00
Nuckyz
8b9e04475d fix(Spotify - Unlock Premium): Fix hiding context menu ads on newest versions (#5318)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2025-07-02 14:08:11 +02:00
semantic-release-bot
d3c9dc6ed7 chore: Release v5.30.0-dev.8 [skip ci]
# [5.30.0-dev.8](https://github.com/ReVanced/revanced-patches/compare/v5.30.0-dev.7...v5.30.0-dev.8) (2025-07-02)

### Bug Fixes

* **Spotify - Spoof client:** Skip native login screens ([#5228](https://github.com/ReVanced/revanced-patches/issues/5228)) ([d7ed325](d7ed32571f))
2025-07-02 10:23:13 +00:00
brosssh
d7ed32571f fix(Spotify - Spoof client): Skip native login screens (#5228)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
Co-authored-by: Nuckyz <61953774+Nuckyz@users.noreply.github.com>
Co-authored-by: Dawid Krajcarz <80264606+drobotk@users.noreply.github.com>
Co-authored-by: LisoUseInAIKyrios <118716522+LisoUseInAIKyrios@users.noreply.github.com>
2025-07-02 12:19:20 +02:00
semantic-release-bot
d3935f03c0 chore: Release v5.30.0-dev.7 [skip ci]
# [5.30.0-dev.7](https://github.com/ReVanced/revanced-patches/compare/v5.30.0-dev.6...v5.30.0-dev.7) (2025-07-01)

### Bug Fixes

* **Spotify - Spoof client:** Handle remaining edge cases to obtain a session ([#5285](https://github.com/ReVanced/revanced-patches/issues/5285)) ([b2e601f](b2e601f0f0))
2025-07-01 21:15:22 +00:00
oSumAtrIX
b2e601f0f0 fix(Spotify - Spoof client): Handle remaining edge cases to obtain a session (#5285)
Co-authored-by: Nuckyz <61953774+Nuckyz@users.noreply.github.com>
2025-07-01 23:11:05 +02:00
dependabot[bot]
d3ec219a29 chore(deps-dev): bump semantic-release from 24.2.5 to 24.2.6 (#5317) 2025-07-01 22:54:09 +04:00
semantic-release-bot
5ed07d4aaa chore: Release v5.30.0-dev.6 [skip ci]
# [5.30.0-dev.6](https://github.com/ReVanced/revanced-patches/compare/v5.30.0-dev.5...v5.30.0-dev.6) (2025-07-01)

### Bug Fixes

* **YouTube - SponsorBlock:** Do not show undo skip if PiP is active ([#5314](https://github.com/ReVanced/revanced-patches/issues/5314)) ([209a3a3](209a3a3626))
2025-07-01 17:40:13 +00:00
LisoUseInAIKyrios
209a3a3626 fix(YouTube - SponsorBlock): Do not show undo skip if PiP is active (#5314) 2025-07-01 21:36:08 +04:00
github-actions[bot]
2b3419571f chore: Sync translations (#5315) 2025-07-01 21:35:50 +04:00
ILoveOpenSourceApplications
bbe504e616 refactor(YouTube): Match YouTube naming and sort strings (#5309) 2025-07-01 00:12:01 +04:00
semantic-release-bot
6c32591f62 chore: Release v5.30.0-dev.5 [skip ci]
# [5.30.0-dev.5](https://github.com/ReVanced/revanced-patches/compare/v5.30.0-dev.4...v5.30.0-dev.5) (2025-06-30)

### Bug Fixes

* **YouTube - Hide layout components:** Fix "Hide ticket shelf" hiding unwanted components ([#5292](https://github.com/ReVanced/revanced-patches/issues/5292)) ([ad6da67](ad6da67281))
2025-06-30 08:01:39 +00:00
ILoveOpenSourceApplications
ad6da67281 fix(YouTube - Hide layout components): Fix "Hide ticket shelf" hiding unwanted components (#5292) 2025-06-30 11:58:01 +04:00
github-actions[bot]
14dc593eba chore: Sync translations (#5294) 2025-06-30 11:57:44 +04:00
semantic-release-bot
e52ee41222 chore: Release v5.30.0-dev.4 [skip ci]
# [5.30.0-dev.4](https://github.com/ReVanced/revanced-patches/compare/v5.30.0-dev.3...v5.30.0-dev.4) (2025-06-30)

### Features

* **YouTube - SponsorBlock:** Add "Undo automatic skip toast" ([#5277](https://github.com/ReVanced/revanced-patches/issues/5277)) ([6ee94f8](6ee94f8532))
2025-06-30 06:54:53 +00:00
MarcaD
6ee94f8532 feat(YouTube - SponsorBlock): Add "Undo automatic skip toast" (#5277)
Co-authored-by: LisoUseInAIKyrios <118716522+LisoUseInAIKyrios@users.noreply.github.com>
2025-06-30 10:50:52 +04:00
semantic-release-bot
21688201af chore: Release v5.30.0-dev.3 [skip ci]
# [5.30.0-dev.3](https://github.com/ReVanced/revanced-patches/compare/v5.30.0-dev.2...v5.30.0-dev.3) (2025-06-28)

### Bug Fixes

* **YouTube - Hide layout components:** Fix "Hide AI Comments summary" in Comments ([#5284](https://github.com/ReVanced/revanced-patches/issues/5284)) ([f084743](f08474369b))
2025-06-28 18:05:53 +00:00
ILoveOpenSourceApplications
f08474369b fix(YouTube - Hide layout components): Fix "Hide AI Comments summary" in Comments (#5284) 2025-06-28 22:02:03 +04:00
LisoUseInAIKyrios
ed617094ea refactor(YouTube - Litho): Use a simpler hook that does not require using a thread local (#5281) 2025-06-28 11:51:29 +04:00
semantic-release-bot
9131c50f1b chore: Release v5.30.0-dev.2 [skip ci]
# [5.30.0-dev.2](https://github.com/ReVanced/revanced-patches/compare/v5.30.0-dev.1...v5.30.0-dev.2) (2025-06-27)

### Bug Fixes

* **Spotify - Spoof client patch:** Block sending bad integrity verdicts to potentially fix account suspensions ([#5274](https://github.com/ReVanced/revanced-patches/issues/5274)) ([69600d0](69600d08a4))
2025-06-27 14:07:00 +00:00
brosssh
69600d08a4 fix(Spotify - Spoof client patch): Block sending bad integrity verdicts to potentially fix account suspensions (#5274)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2025-06-27 16:03:07 +02:00
semantic-release-bot
5dba77612b chore: Release v5.30.0-dev.1 [skip ci]
# [5.30.0-dev.1](https://github.com/ReVanced/revanced-patches/compare/v5.29.1-dev.1...v5.30.0-dev.1) (2025-06-27)

### Bug Fixes

* **YouTube - Hide ads:** Fix "Hide shopping links" ([#5267](https://github.com/ReVanced/revanced-patches/issues/5267)) ([e169056](e169056b70))
* **YouTube - Hide layout components:** Fix "Hide AI-generated video summary" in video description ([#5269](https://github.com/ReVanced/revanced-patches/issues/5269)) ([ca694c7](ca694c78d2))
* **YouTube - Hide Shorts components:** Fix hiding of untoggled components ([#5266](https://github.com/ReVanced/revanced-patches/issues/5266)) ([b6bf1e0](b6bf1e026c))

### Features

* **Spotify:** Remove ads section from browse ([#5193](https://github.com/ReVanced/revanced-patches/issues/5193)) ([92b588c](92b588c866))
* **YouTube - Hide layout components:** Add `Hide in history` option to filter bar ([#5271](https://github.com/ReVanced/revanced-patches/issues/5271)) ([da20e56](da20e565cd))
2025-06-27 11:38:02 +00:00
brosssh
92b588c866 feat(Spotify): Remove ads section from browse (#5193) 2025-06-27 15:34:13 +04:00
ILoveOpenSourceApplications
da20e565cd feat(YouTube - Hide layout components): Add Hide in history option to filter bar (#5271) 2025-06-27 15:33:53 +04:00
ILoveOpenSourceApplications
ca694c78d2 fix(YouTube - Hide layout components): Fix "Hide AI-generated video summary" in video description (#5269) 2025-06-27 15:33:37 +04:00
ILoveOpenSourceApplications
e169056b70 fix(YouTube - Hide ads): Fix "Hide shopping links" (#5267) 2025-06-27 15:33:21 +04:00
ILoveOpenSourceApplications
b6bf1e026c fix(YouTube - Hide Shorts components): Fix hiding of untoggled components (#5266) 2025-06-27 15:33:02 +04:00
github-actions[bot]
9fa89d48c0 chore: Sync translations (#5272) 2025-06-27 15:32:34 +04:00
semantic-release-bot
5d2c21540c chore: Release v5.29.1-dev.1 [skip ci]
## [5.29.1-dev.1](https://github.com/ReVanced/revanced-patches/compare/v5.29.0...v5.29.1-dev.1) (2025-06-26)

### Bug Fixes

* **Spotify:** Add `Spoof client` patch to fix various issues by using a web platform access token ([#5173](https://github.com/ReVanced/revanced-patches/issues/5173)) ([1a8aacd](1a8aacdff6))
2025-06-26 17:56:10 +00:00
oSumAtrIX
1a8aacdff6 fix(Spotify): Add Spoof client patch to fix various issues by using a web platform access token (#5173)
Co-authored-by: Nuckyz <61953774+Nuckyz@users.noreply.github.com>
Co-authored-by: brosssh <tiabroch@gmail.com>
Co-authored-by: Dawid Krajcarz <80264606+drobotk@users.noreply.github.com>
Co-authored-by: LisoUseInAIKyrios <118716522+LisoUseInAIKyrios@users.noreply.github.com>
2025-06-26 19:51:18 +02:00
semantic-release-bot
1804bd9bfc chore: Release v5.29.0 [skip ci]
# [5.29.0](https://github.com/ReVanced/revanced-patches/compare/v5.28.0...v5.29.0) (2025-06-26)

### Bug Fixes

* Add scrollable content to modern style settings dialogs ([#5211](https://github.com/ReVanced/revanced-patches/issues/5211)) ([2b62fc2](2b62fc2224))
* **Google Photos:** Resolve startup crash for Android 5.0 devices ([7be3741](7be374100b))
* **YouTube - Hide ads:** Hide new type of product ad in video description ([#5225](https://github.com/ReVanced/revanced-patches/issues/5225)) ([b656976](b65697603d))
* **YouTube - Hide layout components:** Fix "Hide video description attributes" ([#5250](https://github.com/ReVanced/revanced-patches/issues/5250)) ([978c244](978c24458b))
* **YouTube - Hide Shorts components:** Fix "Hide Use this sound button" ([#5233](https://github.com/ReVanced/revanced-patches/issues/5233)) ([a678f17](a678f178e1))
* **YouTube - Hide Shorts components:** Fix "Hide Use this template button" ([#5249](https://github.com/ReVanced/revanced-patches/issues/5249)) ([957bece](957bece3e9))
* **YouTube:** Always use single threaded layout to resolve layout bugs in unpatched YouTube ([#5226](https://github.com/ReVanced/revanced-patches/issues/5226)) ([ccd1691](ccd169121a))
* **YouTube:** Fix refactoring app startup exception ([0dbd058](0dbd058099))

### Features

* Add `Spoof app signature` patch ([#5158](https://github.com/ReVanced/revanced-patches/issues/5158)) ([fb83e58](fb83e58f79))
* **Cricbuzz:** Add `Hide ads` patch ([#4998](https://github.com/ReVanced/revanced-patches/issues/4998)) ([558bf8b](558bf8bca8))
* **Crunchyroll:** Add `Hide ads` patch ([#5201](https://github.com/ReVanced/revanced-patches/issues/5201)) ([d338989](d338989cb4))
* **YouTube - Hide Shorts components:** Add `Hide Effects button` ([#5255](https://github.com/ReVanced/revanced-patches/issues/5255)) ([29c86ac](29c86ac6a3))
* **YouTube - Hide video action buttons:** Add `Hide Stop ads` ([#5245](https://github.com/ReVanced/revanced-patches/issues/5245)) ([0e63f49](0e63f49e13))
* **YouTube:** Add an option to disable toasts when changing default playback speed or quality ([#5230](https://github.com/ReVanced/revanced-patches/issues/5230)) ([6b719df](6b719dfcd7))
* **YouTube:** Support version `20.13.41` ([#5253](https://github.com/ReVanced/revanced-patches/issues/5253)) ([439ca37](439ca37e99))
2025-06-26 08:06:08 +00:00
LisoUseInAIKyrios
7eb4e62762 chore: Merge branch dev to main (#5227) 2025-06-26 12:02:33 +04:00
LisoUseInAIKyrios
b8e10b5c1f chore: Fix api dump 2025-06-26 11:51:54 +04:00
github-actions[bot]
a7c11b9b08 chore: Sync translations (#5258) 2025-06-26 11:50:50 +04:00
semantic-release-bot
443c0a74d5 chore: Release v5.29.0-dev.11 [skip ci]
# [5.29.0-dev.11](https://github.com/ReVanced/revanced-patches/compare/v5.29.0-dev.10...v5.29.0-dev.11) (2025-06-26)

### Features

* **Cricbuzz:** Add `Hide ads` patch ([#4998](https://github.com/ReVanced/revanced-patches/issues/4998)) ([558bf8b](558bf8bca8))
2025-06-26 07:13:07 +00:00
github-actions[bot]
84a0f7f7d7 chore: Sync translations (#5257) 2025-06-26 11:10:05 +04:00
Sourav Agrawal
558bf8bca8 feat(Cricbuzz): Add Hide ads patch (#4998) 2025-06-26 11:08:22 +04:00
192 changed files with 8572 additions and 5289 deletions

View File

@@ -1,3 +1,185 @@
# [5.31.0-dev.5](https://github.com/ReVanced/revanced-patches/compare/v5.31.0-dev.4...v5.31.0-dev.5) (2025-07-05)
### Features
* **YouTube - Change header:** Add in-app setting to change the app header ([#5346](https://github.com/ReVanced/revanced-patches/issues/5346)) ([9ba45b6](https://github.com/ReVanced/revanced-patches/commit/9ba45b6680595d732b47e8fa54bee98b7c7af179))
# [5.31.0-dev.4](https://github.com/ReVanced/revanced-patches/compare/v5.31.0-dev.3...v5.31.0-dev.4) (2025-07-04)
### Bug Fixes
* **YouTube - Hide ads:** Hide new type of general ad ([#5345](https://github.com/ReVanced/revanced-patches/issues/5345)) ([f23716b](https://github.com/ReVanced/revanced-patches/commit/f23716bc52c03d8d0271bfe38b19247e6de7021d))
# [5.31.0-dev.3](https://github.com/ReVanced/revanced-patches/compare/v5.31.0-dev.2...v5.31.0-dev.3) (2025-07-04)
### Bug Fixes
* **Spotify:** Remove other ads type from the browse screen ([#5333](https://github.com/ReVanced/revanced-patches/issues/5333)) ([c68533a](https://github.com/ReVanced/revanced-patches/commit/c68533a33a399ca813380b5c9ccddce434ceadf8))
# [5.31.0-dev.2](https://github.com/ReVanced/revanced-patches/compare/v5.31.0-dev.1...v5.31.0-dev.2) (2025-07-04)
### Features
* **YouTube - Hide layout components:** Add `Hide channel links preview` and `Hide 'Visit Community' button` in channel page ([#5320](https://github.com/ReVanced/revanced-patches/issues/5320)) ([9d9cce3](https://github.com/ReVanced/revanced-patches/commit/9d9cce3ec5550b2fea88df745f1700bb2f17eb9e))
# [5.31.0-dev.1](https://github.com/ReVanced/revanced-patches/compare/v5.30.0...v5.31.0-dev.1) (2025-07-04)
### Bug Fixes
* **SoundCloud:** Constrain patches to last working app target ([e8ea89f](https://github.com/ReVanced/revanced-patches/commit/e8ea89fc1a3f0531a0af7529663f13328aca4fe7))
### Features
* **Lightroom:** Constrain patches to last working version ([#5335](https://github.com/ReVanced/revanced-patches/issues/5335)) ([32ce70e](https://github.com/ReVanced/revanced-patches/commit/32ce70e994f354b9a569376bb89eb38b3190e6f9))
# [5.30.0](https://github.com/ReVanced/revanced-patches/compare/v5.29.0...v5.30.0) (2025-07-02)
### Bug Fixes
* **Spotify - Spoof client patch:** Block sending bad integrity verdicts to potentially fix account suspensions ([#5274](https://github.com/ReVanced/revanced-patches/issues/5274)) ([f7b574c](https://github.com/ReVanced/revanced-patches/commit/f7b574ca79c5a616cfe33a3fc75bd8cf68571f7d))
* **Spotify - Spoof client:** Handle remaining edge cases to obtain a session ([#5285](https://github.com/ReVanced/revanced-patches/issues/5285)) ([2bb2d59](https://github.com/ReVanced/revanced-patches/commit/2bb2d594936093774e232ad8b274c81e805c5bf6))
* **Spotify - Spoof client:** Skip native login screens ([#5228](https://github.com/ReVanced/revanced-patches/issues/5228)) ([c5ebc63](https://github.com/ReVanced/revanced-patches/commit/c5ebc6336ed17cc9cc7f1348282a2aa3c173fb95))
* **Spotify - Unlock Premium:** Fix hiding context menu ads on newest versions ([#5318](https://github.com/ReVanced/revanced-patches/issues/5318)) ([73fd832](https://github.com/ReVanced/revanced-patches/commit/73fd83222e089a5fd6e1526e5c12f5a1e9893a35))
* **Spotify - Unlock Premium:** Fix hiding context menu ads on newest versions by simplifying fingerprint ([#5318](https://github.com/ReVanced/revanced-patches/issues/5318)) ([dad0ff4](https://github.com/ReVanced/revanced-patches/commit/dad0ff4fba74c2b020fbde6c6d5eb66e10e6f1f7))
* **Spotify:** Add `Spoof client` patch to fix various issues by using a web platform access token ([#5173](https://github.com/ReVanced/revanced-patches/issues/5173)) ([b7b75bb](https://github.com/ReVanced/revanced-patches/commit/b7b75bb9d8d5fd505121e752b8a20e61ff28d1b2))
* **YouTube - Hide ads:** Fix "Hide shopping links" ([#5267](https://github.com/ReVanced/revanced-patches/issues/5267)) ([2fe4607](https://github.com/ReVanced/revanced-patches/commit/2fe46079d78ab98076d3a4cdf01c8bfdbdea45c0))
* **YouTube - Hide layout components:** Fix "Hide AI Comments summary" in Comments ([#5284](https://github.com/ReVanced/revanced-patches/issues/5284)) ([d42370e](https://github.com/ReVanced/revanced-patches/commit/d42370ef71f4608abc64b6ef4a3fb0c5bd5e3eb6))
* **YouTube - Hide layout components:** Fix "Hide AI-generated video summary" in video description ([#5269](https://github.com/ReVanced/revanced-patches/issues/5269)) ([5203da0](https://github.com/ReVanced/revanced-patches/commit/5203da0ae58e467657bc915ab0af5b9904c4f492))
* **YouTube - Hide layout components:** Fix "Hide ticket shelf" hiding unwanted components ([#5292](https://github.com/ReVanced/revanced-patches/issues/5292)) ([d6b1f7a](https://github.com/ReVanced/revanced-patches/commit/d6b1f7a6e18b1c0eb4374c5e22a1c746dcb3a522))
* **YouTube - Hide Shorts components:** Fix hiding of untoggled components ([#5266](https://github.com/ReVanced/revanced-patches/issues/5266)) ([008e192](https://github.com/ReVanced/revanced-patches/commit/008e192779a8658e894d5718baa732717bf96e40))
* **YouTube - SponsorBlock:** Do not show undo skip if PiP is active ([#5314](https://github.com/ReVanced/revanced-patches/issues/5314)) ([18af8de](https://github.com/ReVanced/revanced-patches/commit/18af8dead2c6c7f0d99cd75b69948240e0bcd12c))
### Features
* **Spotify:** Remove ads section from browse ([#5193](https://github.com/ReVanced/revanced-patches/issues/5193)) ([ebd4dcc](https://github.com/ReVanced/revanced-patches/commit/ebd4dccf12a5fbd31d2d53c19a792c389a4641d7))
* **YouTube - Hide layout components:** Add `Hide in history` option to filter bar ([#5271](https://github.com/ReVanced/revanced-patches/issues/5271)) ([ba242a3](https://github.com/ReVanced/revanced-patches/commit/ba242a36b040b82e84870e5e240734637125a472))
* **YouTube - SponsorBlock:** Add "Undo automatic skip toast" ([#5277](https://github.com/ReVanced/revanced-patches/issues/5277)) ([7fa169a](https://github.com/ReVanced/revanced-patches/commit/7fa169ae262c880019c5a069a2d6bdc7f94885f1))
# [5.30.0-dev.10](https://github.com/ReVanced/revanced-patches/compare/v5.30.0-dev.9...v5.30.0-dev.10) (2025-07-02)
### Bug Fixes
* **Spotify - Unlock Premium:** Fix hiding context menu ads on newest versions by simplifying fingerprint ([#5318](https://github.com/ReVanced/revanced-patches/issues/5318)) ([dad0ff4](https://github.com/ReVanced/revanced-patches/commit/dad0ff4fba74c2b020fbde6c6d5eb66e10e6f1f7))
# [5.30.0-dev.9](https://github.com/ReVanced/revanced-patches/compare/v5.30.0-dev.8...v5.30.0-dev.9) (2025-07-02)
### Bug Fixes
* **Spotify - Unlock Premium:** Fix hiding context menu ads on newest versions ([#5318](https://github.com/ReVanced/revanced-patches/issues/5318)) ([73fd832](https://github.com/ReVanced/revanced-patches/commit/73fd83222e089a5fd6e1526e5c12f5a1e9893a35))
# [5.30.0-dev.8](https://github.com/ReVanced/revanced-patches/compare/v5.30.0-dev.7...v5.30.0-dev.8) (2025-07-02)
### Bug Fixes
* **Spotify - Spoof client:** Skip native login screens ([#5228](https://github.com/ReVanced/revanced-patches/issues/5228)) ([c5ebc63](https://github.com/ReVanced/revanced-patches/commit/c5ebc6336ed17cc9cc7f1348282a2aa3c173fb95))
# [5.30.0-dev.7](https://github.com/ReVanced/revanced-patches/compare/v5.30.0-dev.6...v5.30.0-dev.7) (2025-07-01)
### Bug Fixes
* **Spotify - Spoof client:** Handle remaining edge cases to obtain a session ([#5285](https://github.com/ReVanced/revanced-patches/issues/5285)) ([2bb2d59](https://github.com/ReVanced/revanced-patches/commit/2bb2d594936093774e232ad8b274c81e805c5bf6))
# [5.30.0-dev.6](https://github.com/ReVanced/revanced-patches/compare/v5.30.0-dev.5...v5.30.0-dev.6) (2025-07-01)
### Bug Fixes
* **YouTube - SponsorBlock:** Do not show undo skip if PiP is active ([#5314](https://github.com/ReVanced/revanced-patches/issues/5314)) ([18af8de](https://github.com/ReVanced/revanced-patches/commit/18af8dead2c6c7f0d99cd75b69948240e0bcd12c))
# [5.30.0-dev.5](https://github.com/ReVanced/revanced-patches/compare/v5.30.0-dev.4...v5.30.0-dev.5) (2025-06-30)
### Bug Fixes
* **YouTube - Hide layout components:** Fix "Hide ticket shelf" hiding unwanted components ([#5292](https://github.com/ReVanced/revanced-patches/issues/5292)) ([d6b1f7a](https://github.com/ReVanced/revanced-patches/commit/d6b1f7a6e18b1c0eb4374c5e22a1c746dcb3a522))
# [5.30.0-dev.4](https://github.com/ReVanced/revanced-patches/compare/v5.30.0-dev.3...v5.30.0-dev.4) (2025-06-30)
### Features
* **YouTube - SponsorBlock:** Add "Undo automatic skip toast" ([#5277](https://github.com/ReVanced/revanced-patches/issues/5277)) ([7fa169a](https://github.com/ReVanced/revanced-patches/commit/7fa169ae262c880019c5a069a2d6bdc7f94885f1))
# [5.30.0-dev.3](https://github.com/ReVanced/revanced-patches/compare/v5.30.0-dev.2...v5.30.0-dev.3) (2025-06-28)
### Bug Fixes
* **YouTube - Hide layout components:** Fix "Hide AI Comments summary" in Comments ([#5284](https://github.com/ReVanced/revanced-patches/issues/5284)) ([d42370e](https://github.com/ReVanced/revanced-patches/commit/d42370ef71f4608abc64b6ef4a3fb0c5bd5e3eb6))
# [5.30.0-dev.2](https://github.com/ReVanced/revanced-patches/compare/v5.30.0-dev.1...v5.30.0-dev.2) (2025-06-27)
### Bug Fixes
* **Spotify - Spoof client patch:** Block sending bad integrity verdicts to potentially fix account suspensions ([#5274](https://github.com/ReVanced/revanced-patches/issues/5274)) ([f7b574c](https://github.com/ReVanced/revanced-patches/commit/f7b574ca79c5a616cfe33a3fc75bd8cf68571f7d))
# [5.30.0-dev.1](https://github.com/ReVanced/revanced-patches/compare/v5.29.1-dev.1...v5.30.0-dev.1) (2025-06-27)
### Bug Fixes
* **YouTube - Hide ads:** Fix "Hide shopping links" ([#5267](https://github.com/ReVanced/revanced-patches/issues/5267)) ([2fe4607](https://github.com/ReVanced/revanced-patches/commit/2fe46079d78ab98076d3a4cdf01c8bfdbdea45c0))
* **YouTube - Hide layout components:** Fix "Hide AI-generated video summary" in video description ([#5269](https://github.com/ReVanced/revanced-patches/issues/5269)) ([5203da0](https://github.com/ReVanced/revanced-patches/commit/5203da0ae58e467657bc915ab0af5b9904c4f492))
* **YouTube - Hide Shorts components:** Fix hiding of untoggled components ([#5266](https://github.com/ReVanced/revanced-patches/issues/5266)) ([008e192](https://github.com/ReVanced/revanced-patches/commit/008e192779a8658e894d5718baa732717bf96e40))
### Features
* **Spotify:** Remove ads section from browse ([#5193](https://github.com/ReVanced/revanced-patches/issues/5193)) ([ebd4dcc](https://github.com/ReVanced/revanced-patches/commit/ebd4dccf12a5fbd31d2d53c19a792c389a4641d7))
* **YouTube - Hide layout components:** Add `Hide in history` option to filter bar ([#5271](https://github.com/ReVanced/revanced-patches/issues/5271)) ([ba242a3](https://github.com/ReVanced/revanced-patches/commit/ba242a36b040b82e84870e5e240734637125a472))
## [5.29.1-dev.1](https://github.com/ReVanced/revanced-patches/compare/v5.29.0...v5.29.1-dev.1) (2025-06-26)
### Bug Fixes
* **Spotify:** Add `Spoof client` patch to fix various issues by using a web platform access token ([#5173](https://github.com/ReVanced/revanced-patches/issues/5173)) ([b7b75bb](https://github.com/ReVanced/revanced-patches/commit/b7b75bb9d8d5fd505121e752b8a20e61ff28d1b2))
# [5.29.0](https://github.com/ReVanced/revanced-patches/compare/v5.28.0...v5.29.0) (2025-06-26)
### Bug Fixes
* Add scrollable content to modern style settings dialogs ([#5211](https://github.com/ReVanced/revanced-patches/issues/5211)) ([e6876d5](https://github.com/ReVanced/revanced-patches/commit/e6876d510d28f6a3a41ec1722a033b3e30a22c65))
* **Google Photos:** Resolve startup crash for Android 5.0 devices ([0294533](https://github.com/ReVanced/revanced-patches/commit/0294533c4d9a321aea086eedb4e46385ae9a026e))
* **YouTube - Hide ads:** Hide new type of product ad in video description ([#5225](https://github.com/ReVanced/revanced-patches/issues/5225)) ([1e2efad](https://github.com/ReVanced/revanced-patches/commit/1e2efad7b2714c395ed6b0a77cbbf8a2265df520))
* **YouTube - Hide layout components:** Fix "Hide video description attributes" ([#5250](https://github.com/ReVanced/revanced-patches/issues/5250)) ([2f22d45](https://github.com/ReVanced/revanced-patches/commit/2f22d45eb80745ac64fbea44c8055ebe7925a586))
* **YouTube - Hide Shorts components:** Fix "Hide Use this sound button" ([#5233](https://github.com/ReVanced/revanced-patches/issues/5233)) ([5d6ec9e](https://github.com/ReVanced/revanced-patches/commit/5d6ec9e94a6221a0f32762d5bede893e9e7457fc))
* **YouTube - Hide Shorts components:** Fix "Hide Use this template button" ([#5249](https://github.com/ReVanced/revanced-patches/issues/5249)) ([b399ecb](https://github.com/ReVanced/revanced-patches/commit/b399ecbb6a222d82dd5e4b3417c9f7eff4324adb))
* **YouTube:** Always use single threaded layout to resolve layout bugs in unpatched YouTube ([#5226](https://github.com/ReVanced/revanced-patches/issues/5226)) ([1f539b1](https://github.com/ReVanced/revanced-patches/commit/1f539b1396526b2c767d77a804bd0308ee4a42ec))
* **YouTube:** Fix refactoring app startup exception ([1b00c90](https://github.com/ReVanced/revanced-patches/commit/1b00c907f4b90f4659afb4a54ba61ac2835b460d))
### Features
* Add `Spoof app signature` patch ([#5158](https://github.com/ReVanced/revanced-patches/issues/5158)) ([78b25aa](https://github.com/ReVanced/revanced-patches/commit/78b25aa4e87ec3f9df1d57831b48a39029969416))
* **Cricbuzz:** Add `Hide ads` patch ([#4998](https://github.com/ReVanced/revanced-patches/issues/4998)) ([83ccfa8](https://github.com/ReVanced/revanced-patches/commit/83ccfa8e1b5d5a44c55ef659484acf3cc08d3346))
* **Crunchyroll:** Add `Hide ads` patch ([#5201](https://github.com/ReVanced/revanced-patches/issues/5201)) ([46b4398](https://github.com/ReVanced/revanced-patches/commit/46b4398fd6ca223391ed8f497a8347c2313421b7))
* **YouTube - Hide Shorts components:** Add `Hide Effects button` ([#5255](https://github.com/ReVanced/revanced-patches/issues/5255)) ([240897a](https://github.com/ReVanced/revanced-patches/commit/240897a94008ce9a148c87bb41b978d553d5a6f5))
* **YouTube - Hide video action buttons:** Add `Hide Stop ads` ([#5245](https://github.com/ReVanced/revanced-patches/issues/5245)) ([274dcc6](https://github.com/ReVanced/revanced-patches/commit/274dcc676e009be63eb6970de33abacd34dc6560))
* **YouTube:** Add an option to disable toasts when changing default playback speed or quality ([#5230](https://github.com/ReVanced/revanced-patches/issues/5230)) ([c68cde3](https://github.com/ReVanced/revanced-patches/commit/c68cde3a896450874cc571be5c4723387db96032))
* **YouTube:** Support version `20.13.41` ([#5253](https://github.com/ReVanced/revanced-patches/issues/5253)) ([d284c3d](https://github.com/ReVanced/revanced-patches/commit/d284c3dd3277430b6885e7c27ee02d062dcefc85))
# [5.29.0-dev.11](https://github.com/ReVanced/revanced-patches/compare/v5.29.0-dev.10...v5.29.0-dev.11) (2025-06-26)
### Features
* **Cricbuzz:** Add `Hide ads` patch ([#4998](https://github.com/ReVanced/revanced-patches/issues/4998)) ([83ccfa8](https://github.com/ReVanced/revanced-patches/commit/83ccfa8e1b5d5a44c55ef659484acf3cc08d3346))
# [5.29.0-dev.10](https://github.com/ReVanced/revanced-patches/compare/v5.29.0-dev.9...v5.29.0-dev.10) (2025-06-25)

3
build.gradle.kts Normal file
View File

@@ -0,0 +1,3 @@
plugins {
alias(libs.plugins.android.library) apply false
}

View File

@@ -1,5 +1,5 @@
plugins {
id(libs.plugins.android.library.get().pluginId)
alias(libs.plugins.android.library)
}
android {

View File

@@ -1,5 +1,5 @@
plugins {
id(libs.plugins.android.library.get().pluginId)
alias(libs.plugins.android.library)
}
android {

View File

@@ -1,5 +1,5 @@
plugins {
id(libs.plugins.android.library.get().pluginId)
alias(libs.plugins.android.library)
}
android {

View File

@@ -1,5 +1,5 @@
plugins {
id(libs.plugins.android.library.get().pluginId)
alias(libs.plugins.android.library)
}
android {

View File

@@ -1,5 +1,5 @@
plugins {
id("com.android.library")
alias(libs.plugins.android.library)
}
android {

View File

@@ -311,6 +311,10 @@ public class Utils {
return getContext().getResources().getDimension(getResourceIdentifier(resourceIdentifierName, "dimen"));
}
public static String[] getResourceStringArray(String resourceIdentifierName) throws Resources.NotFoundException {
return getContext().getResources().getStringArray(getResourceIdentifier(resourceIdentifierName, "array"));
}
public interface MatchFilter<T> {
boolean matches(T object);
}
@@ -579,7 +583,7 @@ public class Utils {
Context currentContext = context;
if (currentContext == null) {
Logger.printException(() -> "Cannot show toast (context is null): " + messageToToast, null);
Logger.printException(() -> "Cannot show toast (context is null): " + messageToToast);
} else {
Logger.printDebug(() -> "Showing toast: " + messageToToast);
Toast.makeText(currentContext, messageToToast, toastDuration).show();
@@ -809,7 +813,7 @@ public class Utils {
// Create content container (message/EditText) inside a ScrollView only if message or editText is provided.
ScrollView contentScrollView = null;
LinearLayout contentContainer = null;
LinearLayout contentContainer;
if (message != null || editText != null) {
contentScrollView = new ScrollView(context);
contentScrollView.setVerticalScrollBarEnabled(false); // Disable the vertical scrollbar.
@@ -833,7 +837,7 @@ public class Utils {
contentScrollView.addView(contentContainer);
// Message (if not replaced by EditText).
if (editText == null && message != null) {
if (editText == null) {
TextView messageView = new TextView(context);
messageView.setText(message); // Supports Spanned (HTML).
messageView.setTextSize(16);

View File

@@ -71,15 +71,20 @@ public class EnumSetting<T extends Enum<?>> extends Setting<T> {
json.put(importExportKey, value.name().toLowerCase(Locale.ENGLISH));
}
@NonNull
private T getEnumFromString(String enumName) {
/**
* @param enumName Enum name. Casing does not matter.
* @return Enum of this type with the same declared name.
* @throws IllegalArgumentException if the name is not a valid enum of this type.
*/
protected T getEnumFromString(String enumName) {
//noinspection ConstantConditions
for (Enum<?> value : defaultValue.getClass().getEnumConstants()) {
if (value.name().equalsIgnoreCase(enumName)) {
// noinspection unchecked
//noinspection unchecked
return (T) value;
}
}
throw new IllegalArgumentException("Unknown enum value: " + enumName);
}
@@ -103,7 +108,9 @@ public class EnumSetting<T extends Enum<?>> extends Setting<T> {
* Availability based on if this setting is currently set to any of the provided types.
*/
@SafeVarargs
public final Setting.Availability availability(@NonNull T... types) {
public final Setting.Availability availability(T... types) {
Objects.requireNonNull(types);
return () -> {
T currentEnumType = get();
for (T enumType : types) {

View File

@@ -28,16 +28,14 @@ public abstract class Setting<T> {
/**
* Availability based on a single parent setting being enabled.
*/
@NonNull
public static Availability parent(@NonNull BooleanSetting parent) {
public static Availability parent(BooleanSetting parent) {
return parent::get;
}
/**
* Availability based on all parents being enabled.
*/
@NonNull
public static Availability parentsAll(@NonNull BooleanSetting... parents) {
public static Availability parentsAll(BooleanSetting... parents) {
return () -> {
for (BooleanSetting parent : parents) {
if (!parent.get()) return false;
@@ -49,8 +47,7 @@ public abstract class Setting<T> {
/**
* Availability based on any parent being enabled.
*/
@NonNull
public static Availability parentsAny(@NonNull BooleanSetting... parents) {
public static Availability parentsAny(BooleanSetting... parents) {
return () -> {
for (BooleanSetting parent : parents) {
if (parent.get()) return true;
@@ -79,7 +76,7 @@ public abstract class Setting<T> {
/**
* Adds a callback for {@link #importFromJSON(Context, String)} and {@link #exportToJson(Context)}.
*/
public static void addImportExportCallback(@NonNull ImportExportCallback callback) {
public static void addImportExportCallback(ImportExportCallback callback) {
importExportCallbacks.add(Objects.requireNonNull(callback));
}
@@ -100,14 +97,13 @@ public abstract class Setting<T> {
public static final SharedPrefCategory preferences = new SharedPrefCategory("revanced_prefs");
@Nullable
public static Setting<?> getSettingFromPath(@NonNull String str) {
public static Setting<?> getSettingFromPath(String str) {
return PATH_TO_SETTINGS.get(str);
}
/**
* @return All settings that have been created.
*/
@NonNull
public static List<Setting<?>> allLoadedSettings() {
return Collections.unmodifiableList(SETTINGS);
}
@@ -115,7 +111,6 @@ public abstract class Setting<T> {
/**
* @return All settings that have been created, sorted by keys.
*/
@NonNull
private static List<Setting<?>> allLoadedSettingsSorted() {
Collections.sort(SETTINGS, (Setting<?> o1, Setting<?> o2) -> o1.key.compareTo(o2.key));
return allLoadedSettings();
@@ -124,13 +119,11 @@ public abstract class Setting<T> {
/**
* The key used to store the value in the shared preferences.
*/
@NonNull
public final String key;
/**
* The default value of the setting.
*/
@NonNull
public final T defaultValue;
/**
@@ -161,7 +154,6 @@ public abstract class Setting<T> {
/**
* The value of the setting.
*/
@NonNull
protected volatile T value;
public Setting(String key, T defaultValue) {
@@ -199,8 +191,8 @@ public abstract class Setting<T> {
* @param userDialogMessage Confirmation message to display, if the user tries to change the setting from the default value.
* @param availability Condition that must be true, for this setting to be available to configure.
*/
public Setting(@NonNull String key,
@NonNull T defaultValue,
public Setting(String key,
T defaultValue,
boolean rebootApp,
boolean includeWithImportExport,
@Nullable String userDialogMessage,
@@ -227,7 +219,7 @@ public abstract class Setting<T> {
/**
* Migrate a setting value if the path is renamed but otherwise the old and new settings are identical.
*/
public static <T> void migrateOldSettingToNew(@NonNull Setting<T> oldSetting, @NonNull Setting<T> newSetting) {
public static <T> void migrateOldSettingToNew(Setting<T> oldSetting, Setting<T> newSetting) {
if (oldSetting == newSetting) throw new IllegalArgumentException();
if (!oldSetting.isSetToDefault()) {
@@ -243,7 +235,7 @@ public abstract class Setting<T> {
* This method will be deleted in the future.
*/
@SuppressWarnings("rawtypes")
public static void migrateFromOldPreferences(@NonNull SharedPrefCategory oldPrefs, @NonNull Setting setting, String settingKey) {
public static void migrateFromOldPreferences(SharedPrefCategory oldPrefs, Setting setting, String settingKey) {
if (!oldPrefs.preferences.contains(settingKey)) {
return; // Nothing to do.
}
@@ -285,7 +277,7 @@ public abstract class Setting<T> {
* This intentionally is a static method to deter
* accidental usage when {@link #save(Object)} was intended.
*/
public static void privateSetValueFromString(@NonNull Setting<?> setting, @NonNull String newValue) {
public static void privateSetValueFromString(Setting<?> setting, String newValue) {
setting.setValueFromString(newValue);
// Clear the preference value since default is used, to allow changing
@@ -299,7 +291,7 @@ public abstract class Setting<T> {
/**
* Sets the value of {@link #value}, but do not save to {@link #preferences}.
*/
protected abstract void setValueFromString(@NonNull String newValue);
protected abstract void setValueFromString(String newValue);
/**
* Load and set the value of {@link #value}.
@@ -309,7 +301,7 @@ public abstract class Setting<T> {
/**
* Persistently saves the value.
*/
public final void save(@NonNull T newValue) {
public final void save(T newValue) {
if (value.equals(newValue)) {
return;
}
@@ -406,7 +398,6 @@ public abstract class Setting<T> {
json.put(importExportKey, value);
}
@NonNull
public static String exportToJson(@Nullable Context alertDialogContext) {
try {
JSONObject json = new JSONObject();
@@ -445,7 +436,7 @@ public abstract class Setting<T> {
/**
* @return if any settings that require a reboot were changed.
*/
public static boolean importFromJSON(@NonNull Context alertDialogContext, @NonNull String settingsJsonString) {
public static boolean importFromJSON(Context alertDialogContext, String settingsJsonString) {
try {
if (!settingsJsonString.matches("[\\s\\S]*\\{")) {
settingsJsonString = '{' + settingsJsonString + '}'; // Restore outer JSON braces

View File

@@ -1,7 +1,15 @@
plugins {
alias(libs.plugins.protobuf)
}
dependencies {
compileOnly(project(":extensions:shared:library"))
compileOnly(project(":extensions:spotify:stub"))
compileOnly(libs.annotation)
implementation(project(":extensions:spotify:utils"))
implementation(libs.nanohttpd)
implementation(libs.protobuf.javalite)
}
android {
@@ -14,3 +22,19 @@ android {
targetCompatibility = JavaVersion.VERSION_1_8
}
}
protobuf {
protoc {
artifact = libs.protobuf.protoc.get().toString()
}
generateProtoTasks {
all().forEach { task ->
task.builtins {
create("java") {
option("lite")
}
}
}
}
}

View File

@@ -0,0 +1,158 @@
package app.revanced.extension.spotify.misc.fix;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import app.revanced.extension.shared.Logger;
import app.revanced.extension.spotify.login5.v4.proto.Login5.*;
import com.google.protobuf.ByteString;
import com.google.protobuf.MessageLite;
import fi.iki.elonen.NanoHTTPD;
import java.io.ByteArrayInputStream;
import java.io.FilterInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Objects;
import static app.revanced.extension.spotify.misc.fix.Session.FAILED_TO_RENEW_SESSION;
import static fi.iki.elonen.NanoHTTPD.Response.Status.INTERNAL_ERROR;
class LoginRequestListener extends NanoHTTPD {
LoginRequestListener(int port) {
super(port);
try {
start();
} catch (IOException ex) {
Logger.printException(() -> "Failed to start login request listener on port " + port, ex);
throw new RuntimeException(ex);
}
}
@NonNull
@Override
public Response serve(IHTTPSession request) {
Logger.printInfo(() -> "Serving request for URI: " + request.getUri());
InputStream requestBodyInputStream = getRequestBodyInputStream(request);
LoginRequest loginRequest;
try {
loginRequest = LoginRequest.parseFrom(requestBodyInputStream);
} catch (IOException ex) {
Logger.printException(() -> "Failed to parse LoginRequest", ex);
return newResponse(INTERNAL_ERROR);
}
MessageLite loginResponse;
// A request may be made concurrently by Spotify,
// however a webview can only handle one request at a time due to singleton cookie manager.
// Therefore, synchronize to ensure that only one webview handles the request at a time.
synchronized (this) {
try {
loginResponse = getLoginResponse(loginRequest);
} catch (Exception ex) {
Logger.printException(() -> "Failed to get login response", ex);
return newResponse(INTERNAL_ERROR);
}
}
return newResponse(Response.Status.OK, loginResponse);
}
private static LoginResponse getLoginResponse(@NonNull LoginRequest loginRequest) {
Session session;
if (!loginRequest.hasStoredCredential()) {
Logger.printInfo(() -> "Received request for initial login");
session = WebApp.currentSession; // Session obtained from WebApp.launchLogin, can be null if still in progress.
} else {
Logger.printInfo(() -> "Received request to restore saved session");
session = Session.read(loginRequest.getStoredCredential().getUsername());
}
return toLoginResponse(session);
}
private static LoginResponse toLoginResponse(@Nullable Session session) {
LoginResponse.Builder builder = LoginResponse.newBuilder();
if (session == null) {
Logger.printException(() -> "Session is null. An initial login may still be in progress, returning try again later error");
builder.setError(LoginError.TRY_AGAIN_LATER);
} else if (session.accessTokenExpired()) {
Logger.printInfo(() -> "Access token expired, renewing session");
WebApp.renewSessionBlocking(session.cookies);
return toLoginResponse(WebApp.currentSession);
} else if (session.username == null) {
Logger.printException(() -> "Session username is null, likely caused by invalid cookies, returning invalid credentials error");
session.delete();
builder.setError(LoginError.INVALID_CREDENTIALS);
} else if (session == FAILED_TO_RENEW_SESSION) {
Logger.printException(() -> "Failed to renew session, likely caused by a timeout, returning try again later error");
builder.setError(LoginError.TRY_AGAIN_LATER);
} else {
session.save();
Logger.printInfo(() -> "Returning session for username: " + session.username);
builder.setOk(LoginOk.newBuilder()
.setUsername(session.username)
.setAccessToken(session.accessToken)
.setStoredCredential(ByteString.fromHex("00")) // Placeholder, as it cannot be null or empty.
.setAccessTokenExpiresIn(session.accessTokenExpiresInSeconds())
.build());
}
return builder.build();
}
@NonNull
private static InputStream limitedInputStream(InputStream inputStream, long contentLength) {
return new FilterInputStream(inputStream) {
private long remaining = contentLength;
@Override
public int read() throws IOException {
if (remaining <= 0) return -1;
int result = super.read();
if (result != -1) remaining--;
return result;
}
@Override
public int read(byte[] b, int off, int len) throws IOException {
if (remaining <= 0) return -1;
len = (int) Math.min(len, remaining);
int result = super.read(b, off, len);
if (result != -1) remaining -= result;
return result;
}
};
}
@NonNull
private static InputStream getRequestBodyInputStream(@NonNull IHTTPSession request) {
long requestContentLength =
Long.parseLong(Objects.requireNonNull(request.getHeaders().get("content-length")));
return limitedInputStream(request.getInputStream(), requestContentLength);
}
@SuppressWarnings("SameParameterValue")
@NonNull
private static Response newResponse(Response.Status status) {
return newResponse(status, null);
}
@NonNull
private static Response newResponse(Response.IStatus status, MessageLite messageLite) {
if (messageLite == null) {
return newFixedLengthResponse(status, "application/x-protobuf", null);
}
byte[] messageBytes = messageLite.toByteArray();
InputStream stream = new ByteArrayInputStream(messageBytes);
return newFixedLengthResponse(status, "application/x-protobuf", stream, messageBytes.length);
}
}

View File

@@ -0,0 +1,136 @@
package app.revanced.extension.spotify.misc.fix;
import android.content.SharedPreferences;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import app.revanced.extension.shared.Logger;
import app.revanced.extension.shared.Utils;
import org.json.JSONException;
import org.json.JSONObject;
import static android.content.Context.MODE_PRIVATE;
class Session {
/**
* Username of the account. Null if this session does not have an authenticated user.
*/
@Nullable
final String username;
/**
* Access token for this session.
*/
final String accessToken;
/**
* Session expiration timestamp in milliseconds.
*/
final Long expirationTime;
/**
* Authentication cookies for this session.
*/
final String cookies;
/**
* Session that represents a failed attempt to renew the session.
*/
static final Session FAILED_TO_RENEW_SESSION = new Session("", "", "");
/**
* @param username Username of the account. Empty if this session does not have an authenticated user.
* @param accessToken Access token for this session.
* @param cookies Authentication cookies for this session.
*/
Session(@Nullable String username, String accessToken, String cookies) {
this(username, accessToken, System.currentTimeMillis() + 60 * 60 * 1000, cookies);
}
private Session(@Nullable String username, String accessToken, long expirationTime, String cookies) {
this.username = username;
this.accessToken = accessToken;
this.expirationTime = expirationTime;
this.cookies = cookies;
}
/**
* @return The number of milliseconds until the access token expires.
*/
long accessTokenExpiresInMillis() {
long currentTime = System.currentTimeMillis();
return expirationTime - currentTime;
}
/**
* @return The number of seconds until the access token expires.
*/
int accessTokenExpiresInSeconds() {
return (int) accessTokenExpiresInMillis() / 1000;
}
/**
* @return True if the access token has expired, false otherwise.
*/
boolean accessTokenExpired() {
return accessTokenExpiresInMillis() <= 0;
}
void save() {
Logger.printInfo(() -> "Saving session: " + this);
SharedPreferences.Editor editor = Utils.getContext().getSharedPreferences("revanced", MODE_PRIVATE).edit();
String json;
try {
json = new JSONObject()
.put("accessToken", accessToken)
.put("expirationTime", expirationTime)
.put("cookies", cookies).toString();
} catch (JSONException ex) {
Logger.printException(() -> "Failed to convert session to stored credential", ex);
return;
}
editor.putString("session_" + username, json);
editor.apply();
}
void delete() {
Logger.printInfo(() -> "Deleting saved session for username: " + username);
SharedPreferences.Editor editor = Utils.getContext().getSharedPreferences("revanced", MODE_PRIVATE).edit();
editor.remove("session_" + username);
editor.apply();
}
@Nullable
static Session read(String username) {
Logger.printInfo(() -> "Reading saved session for username: " + username);
SharedPreferences sharedPreferences = Utils.getContext().getSharedPreferences("revanced", MODE_PRIVATE);
String savedJson = sharedPreferences.getString("session_" + username, null);
if (savedJson == null) {
Logger.printInfo(() -> "No session found in shared preferences");
return null;
}
try {
JSONObject json = new JSONObject(savedJson);
String accessToken = json.getString("accessToken");
long expirationTime = json.getLong("expirationTime");
String cookies = json.getString("cookies");
return new Session(username, accessToken, expirationTime, cookies);
} catch (JSONException ex) {
Logger.printException(() -> "Failed to read session from shared preferences", ex);
return null;
}
}
@NonNull
@Override
public String toString() {
return "Session(" +
"username=" + username +
", accessToken=" + accessToken +
", expirationTime=" + expirationTime +
", cookies=" + cookies +
')';
}
}

View File

@@ -0,0 +1,54 @@
package app.revanced.extension.spotify.misc.fix;
import android.view.LayoutInflater;
import android.view.View;
import app.revanced.extension.shared.Logger;
@SuppressWarnings("unused")
public class SpoofClientPatch {
private static LoginRequestListener listener;
/**
* Injection point.
* <br>
* Launch login server.
*/
public static void launchListener(int port) {
if (listener != null) {
Logger.printInfo(() -> "Listener already running on port " + port);
return;
}
try {
Logger.printInfo(() -> "Launching listener on port " + port);
listener = new LoginRequestListener(port);
} catch (Exception ex) {
Logger.printException(() -> "launchListener failure", ex);
}
}
/**
* Injection point.
* <br>
* Launch login web view.
*/
public static void launchLogin(LayoutInflater inflater) {
try {
WebApp.launchLogin(inflater.getContext());
} catch (Exception ex) {
Logger.printException(() -> "launchLogin failure", ex);
}
}
/**
* Injection point.
* <br>
* Set handler to call the native login after the webview login.
*/
public static void setNativeLoginHandler(View startLoginButton) {
WebApp.nativeLoginHandler = (() -> {
startLoginButton.setSoundEffectsEnabled(false);
startLoginButton.performClick();
});
}
}

View File

@@ -0,0 +1,297 @@
package app.revanced.extension.spotify.misc.fix;
import android.annotation.SuppressLint;
import android.app.Dialog;
import android.content.Context;
import android.graphics.Bitmap;
import android.os.Build;
import android.view.Window;
import android.view.WindowInsets;
import android.webkit.*;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import app.revanced.extension.shared.Logger;
import app.revanced.extension.shared.Utils;
import app.revanced.extension.spotify.UserAgent;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
import static app.revanced.extension.spotify.misc.fix.Session.FAILED_TO_RENEW_SESSION;
class WebApp {
private static final String OPEN_SPOTIFY_COM = "open.spotify.com";
private static final String OPEN_SPOTIFY_COM_URL = "https://" + OPEN_SPOTIFY_COM;
private static final String OPEN_SPOTIFY_COM_PREFERENCES_URL = OPEN_SPOTIFY_COM_URL + "/preferences";
private static final String ACCOUNTS_SPOTIFY_COM_LOGIN_URL = "https://accounts.spotify.com/login?allow_password=1"
+ "&continue=https%3A%2F%2Fopen.spotify.com%2Fpreferences";
private static final int GET_SESSION_TIMEOUT_SECONDS = 10;
private static final String JAVASCRIPT_INTERFACE_NAME = "androidInterface";
private static final String USER_AGENT = getWebUserAgent();
/**
* A session obtained from the webview after logging in.
*/
@Nullable
static volatile Session currentSession = null;
/**
* Current webview in use. Any use of the object must be done on the main thread.
*/
@SuppressLint("StaticFieldLeak")
private static volatile WebView currentWebView;
interface NativeLoginHandler {
void login();
}
static NativeLoginHandler nativeLoginHandler;
static void launchLogin(Context context) {
final Dialog dialog = newDialog(context);
Utils.runOnBackgroundThread(() -> {
Logger.printInfo(() -> "Launching login");
// A session must be obtained from a login. Repeat until a session is acquired.
boolean isAcquired = false;
do {
CountDownLatch onLoggedInLatch = new CountDownLatch(1);
CountDownLatch getSessionLatch = new CountDownLatch(1);
// Can't use Utils.getContext() here, because autofill won't work.
// See https://stackoverflow.com/a/79182053/11213244.
launchWebView(context, ACCOUNTS_SPOTIFY_COM_LOGIN_URL, new WebViewCallback() {
@Override
void onInitialized(WebView webView) {
super.onInitialized(webView);
dialog.setContentView(webView);
dialog.show();
}
@Override
void onLoggedIn(String cookies) {
onLoggedInLatch.countDown();
}
@Override
void onReceivedSession(Session session) {
super.onReceivedSession(session);
getSessionLatch.countDown();
dialog.dismiss();
try {
nativeLoginHandler.login();
} catch (Exception ex) {
Logger.printException(() -> "nativeLoginHandler failure", ex);
}
}
});
try {
// Wait indefinitely until the user logs in.
onLoggedInLatch.await();
// Wait until the session is received, or timeout.
isAcquired = getSessionLatch.await(GET_SESSION_TIMEOUT_SECONDS, TimeUnit.SECONDS);
} catch (InterruptedException ex) {
Logger.printException(() -> "Login interrupted", ex);
Thread.currentThread().interrupt();
}
} while (!isAcquired);
});
}
static void renewSessionBlocking(String cookies) {
Logger.printInfo(() -> "Renewing session with cookies: " + cookies);
CountDownLatch getSessionLatch = new CountDownLatch(1);
launchWebView(Utils.getContext(), OPEN_SPOTIFY_COM_PREFERENCES_URL, new WebViewCallback() {
@Override
public void onInitialized(WebView webView) {
setCookies(cookies);
super.onInitialized(webView);
}
public void onReceivedSession(Session session) {
super.onReceivedSession(session);
getSessionLatch.countDown();
}
});
boolean isAcquired = false;
try {
isAcquired = getSessionLatch.await(GET_SESSION_TIMEOUT_SECONDS, TimeUnit.SECONDS);
} catch (InterruptedException ex) {
Logger.printException(() -> "Session renewal interrupted", ex);
Thread.currentThread().interrupt();
}
if (!isAcquired) {
Logger.printException(() -> "Failed to retrieve session within " + GET_SESSION_TIMEOUT_SECONDS + " seconds");
currentSession = FAILED_TO_RENEW_SESSION;
destructWebView();
}
}
/**
* All methods are called on the main thread.
*/
abstract static class WebViewCallback {
void onInitialized(WebView webView) {
currentWebView = webView;
currentSession = null; // Reset current session.
}
void onLoggedIn(String cookies) {
}
void onReceivedSession(Session session) {
Logger.printInfo(() -> "Received session: " + session);
currentSession = session;
destructWebView();
}
}
@SuppressLint("SetJavaScriptEnabled")
private static void launchWebView(
Context context,
String initialUrl,
WebViewCallback webViewCallback
) {
Utils.runOnMainThreadNowOrLater(() -> {
WebView webView = new WebView(context);
WebSettings settings = webView.getSettings();
settings.setDomStorageEnabled(true);
settings.setJavaScriptEnabled(true);
settings.setUserAgentString(USER_AGENT);
// WebViewClient is always called off the main thread,
// but callback interface methods are called on the main thread.
webView.setWebViewClient(new WebViewClient() {
@Override
public WebResourceResponse shouldInterceptRequest(WebView view, WebResourceRequest request) {
if (OPEN_SPOTIFY_COM.equals(request.getUrl().getHost())) {
Utils.runOnMainThread(() -> webViewCallback.onLoggedIn(getCurrentCookies()));
}
return super.shouldInterceptRequest(view, request);
}
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
Logger.printInfo(() -> "Page started loading: " + url);
if (!url.startsWith(OPEN_SPOTIFY_COM_URL)) {
return;
}
Logger.printInfo(() -> "Evaluating script to get session on url: " + url);
String getSessionScript = "Object.defineProperty(Object.prototype, \"_username\", {" +
" configurable: true," +
" set(username) {" +
" accessToken = this._builder?.accessToken;" +
" if (accessToken) {" +
" " + JAVASCRIPT_INTERFACE_NAME + ".getSession(username, accessToken);" +
" delete Object.prototype._username;" +
" }" +
" " +
" Object.defineProperty(this, \"_username\", {" +
" configurable: true," +
" enumerable: true," +
" writable: true," +
" value: username" +
" })" +
" " +
" }" +
"});" +
"if (new URLSearchParams(window.location.search).get('_authfailed') != null) {" +
" " + JAVASCRIPT_INTERFACE_NAME + ".getSession(null, null);" +
"}";
view.evaluateJavascript(getSessionScript, null);
}
});
webView.addJavascriptInterface(new Object() {
@SuppressWarnings("unused")
@JavascriptInterface
public void getSession(String username, String accessToken) {
Session session = new Session(username, accessToken, getCurrentCookies());
Utils.runOnMainThread(() -> webViewCallback.onReceivedSession(session));
}
}, JAVASCRIPT_INTERFACE_NAME);
CookieManager.getInstance().removeAllCookies((anyRemoved) -> {
Logger.printInfo(() -> "Loading URL: " + initialUrl);
webView.loadUrl(initialUrl);
Logger.printInfo(() -> "WebView initialized with user agent: " + USER_AGENT);
webViewCallback.onInitialized(webView);
});
});
}
private static void destructWebView() {
Utils.runOnMainThreadNowOrLater(() -> {
currentWebView.stopLoading();
currentWebView.destroy();
currentWebView = null;
});
}
private static String getWebUserAgent() {
String userAgentString = WebSettings.getDefaultUserAgent(Utils.getContext());
try {
return new UserAgent(userAgentString)
.withCommentReplaced("Android", "Windows NT 10.0; Win64; x64")
.withoutProduct("Mobile")
.toString();
} catch (IllegalArgumentException ex) {
userAgentString = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) " +
"AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36 Edge/137.0.0.0";
String fallback = userAgentString;
Logger.printException(() -> "Failed to get user agent, falling back to " + fallback, ex);
}
return userAgentString;
}
@NonNull
private static Dialog newDialog(Context context) {
Dialog dialog = new Dialog(context, android.R.style.Theme_Black_NoTitleBar_Fullscreen);
dialog.setCancelable(false);
// Ensure that the keyboard does not cover the webview content.
Window window = dialog.getWindow();
//noinspection StatementWithEmptyBody
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
window.getDecorView().setOnApplyWindowInsetsListener((v, insets) -> {
v.setPadding(0, 0, 0, insets.getInsets(WindowInsets.Type.ime()).bottom);
return WindowInsets.CONSUMED;
});
} else {
// TODO: Implement for lower Android versions.
}
return dialog;
}
private static String getCurrentCookies() {
CookieManager cookieManager = CookieManager.getInstance();
return cookieManager.getCookie(OPEN_SPOTIFY_COM_URL);
}
private static void setCookies(@NonNull String cookies) {
CookieManager cookieManager = CookieManager.getInstance();
String[] cookiesList = cookies.split(";");
for (String cookie : cookiesList) {
cookieManager.setCookie(OPEN_SPOTIFY_COM_URL, cookie);
}
}
}

View File

@@ -0,0 +1,43 @@
syntax = "proto3";
package spotify.login5.v4;
option optimize_for = LITE_RUNTIME;
option java_package = "app.revanced.extension.spotify.login5.v4.proto";
message StoredCredential {
string username = 1;
bytes data = 2;
}
message LoginRequest {
oneof login_method {
StoredCredential stored_credential = 100;
}
}
message LoginOk {
string username = 1;
string access_token = 2;
bytes stored_credential = 3;
int32 access_token_expires_in = 4;
}
message LoginResponse {
oneof response {
LoginOk ok = 1;
LoginError error = 2;
}
}
enum LoginError {
UNKNOWN_ERROR = 0;
INVALID_CREDENTIALS = 1;
BAD_REQUEST = 2;
UNSUPPORTED_LOGIN_PROTOCOL = 3;
TIMEOUT = 4;
UNKNOWN_IDENTIFIER = 5;
TOO_MANY_ATTEMPTS = 6;
INVALID_PHONENUMBER = 7;
TRY_AGAIN_LATER = 8;
}

View File

@@ -1,5 +1,5 @@
plugins {
id(libs.plugins.android.library.get().pluginId)
alias(libs.plugins.android.library)
}
android {

View File

@@ -0,0 +1,5 @@
package app.revanced;
public interface ContextMenuItemPlaceholder {
Object getViewModel();
}

View File

@@ -0,0 +1,8 @@
package com.spotify.browsita.v1.resolved;
public final class Section {
public static final int BRAND_ADS_FIELD_NUMBER = 6;
public static final int PROMOTION_V1_FIELD_NUMBER = 3;
public static final int PROMOTION_V3_FIELD_NUMBER = 5;
public int sectionTypeCase_;
}

View File

@@ -0,0 +1,19 @@
plugins {
java
antlr
}
dependencies {
antlr(libs.antlr4)
}
java {
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
}
tasks {
generateGrammarSource {
arguments = listOf("-visitor")
}
}

View File

@@ -0,0 +1,35 @@
grammar UserAgent;
@header { package app.revanced.extension.spotify; }
userAgent
: product (WS product)* EOF
;
product
: name ('/' version)? (WS comment)?
;
name
: STRING
;
version
: STRING ('.' STRING)*
;
comment
: COMMENT
;
COMMENT
: '(' ~ ')'* ')'
;
STRING
: [a-zA-Z0-9]+
;
WS
: [ \r\n]+
;

View File

@@ -0,0 +1,60 @@
package app.revanced.extension.spotify;
import org.antlr.v4.runtime.CharStream;
import org.antlr.v4.runtime.CharStreams;
import org.antlr.v4.runtime.CommonTokenStream;
import org.antlr.v4.runtime.TokenStreamRewriter;
import org.antlr.v4.runtime.tree.ParseTreeWalker;
public class UserAgent {
private final UserAgentParser.UserAgentContext tree;
private final TokenStreamRewriter rewriter;
private final ParseTreeWalker walker;
public UserAgent(String userAgentString) {
CharStream input = CharStreams.fromString(userAgentString);
UserAgentLexer lexer = new UserAgentLexer(input);
CommonTokenStream tokens = new CommonTokenStream(lexer);
tree = new UserAgentParser(tokens).userAgent();
walker = new ParseTreeWalker();
rewriter = new TokenStreamRewriter(tokens);
}
public UserAgent withoutProduct(String name) {
walker.walk(new UserAgentBaseListener() {
@Override
public void exitProduct(UserAgentParser.ProductContext ctx) {
if (!ctx.name().getText().contains(name)) return;
int startIndex = ctx.getStart().getTokenIndex();
if (startIndex != 0) startIndex -= 1; // Also remove the preceding whitespace.
int stopIndex = ctx.getStop().getTokenIndex();
rewriter.delete(startIndex, stopIndex);
}
}, tree);
return new UserAgent(rewriter.getText().trim());
}
public UserAgent withCommentReplaced(String containing, String replacement) {
walker.walk(new UserAgentBaseListener() {
@Override
public void exitComment(UserAgentParser.CommentContext ctx) {
if (ctx.getText().contains(containing)) {
rewriter.replace(ctx.getStart(), ctx.getStop(), "(" + replacement + ")");
}
}
}, tree);
return new UserAgent(rewriter.getText());
}
@Override
public String toString() {
return rewriter.getText();
}
}

View File

@@ -1,5 +1,5 @@
plugins {
id(libs.plugins.android.library.get().pluginId)
alias(libs.plugins.android.library)
}
android {

View File

@@ -1,5 +1,5 @@
plugins {
id(libs.plugins.android.library.get().pluginId)
alias(libs.plugins.android.library)
}
android {

View File

@@ -1,7 +1,7 @@
android.namespace = "app.revanced.extension"
plugins {
id(libs.plugins.android.library.get().pluginId)
alias(libs.plugins.android.library)
}
android {

View File

@@ -1,5 +1,5 @@
plugins {
id(libs.plugins.android.library.get().pluginId)
alias(libs.plugins.android.library)
}
android {

View File

@@ -0,0 +1,50 @@
package app.revanced.extension.youtube.patches;
import androidx.annotation.Nullable;
import java.util.Objects;
import app.revanced.extension.shared.Utils;
import app.revanced.extension.youtube.settings.Settings;
@SuppressWarnings("unused")
public class ChangeHeaderPatch {
public enum HeaderLogo {
DEFAULT(null),
REGULAR("ytWordmarkHeader"),
PREMIUM("ytPremiumWordmarkHeader"),
REVANCED("revanced_header_logo"),
REVANCED_MINIMAL("revanced_header_logo_minimal"),
CUSTOM("custom_header");
@Nullable
private final String resourceName;
HeaderLogo(@Nullable String resourceName) {
this.resourceName = resourceName;
}
/**
* @return The attribute id of this header logo, or NULL if the logo should not be replaced.
*/
@Nullable
private Integer getAttributeId() {
if (resourceName == null) {
return null;
}
return Utils.getResourceIdentifier(resourceName, "attr");
}
}
@Nullable
private static final Integer headerLogoResource = Settings.HEADER_LOGO.get().getAttributeId();
/**
* Injection point.
*/
public static int getHeaderAttributeId(int original) {
return Objects.requireNonNullElse(headerLogoResource, original);
}
}

View File

@@ -34,10 +34,6 @@ public final class AdsFilter extends Filter {
private final StringFilterGroup playerShoppingShelf;
private final ByteArrayFilterGroup playerShoppingShelfBuffer;
private final StringFilterGroup channelProfile;
private final ByteArrayFilterGroup visitStoreButton;
private final StringFilterGroup shoppingLinks;
public AdsFilter() {
exceptions.addPatterns(
@@ -91,6 +87,7 @@ public final class AdsFilter extends Filter {
"text_image_no_button_layout", // Tablet layout search results.
"video_display_button_group_layout",
"video_display_carousel_button_group_layout",
"video_display_carousel_buttoned_short_dr_layout",
"video_display_full_buttoned_short_dr_layout",
"video_display_full_layout",
"watch_metadata_app_promo"
@@ -107,41 +104,27 @@ public final class AdsFilter extends Filter {
);
final var viewProducts = new StringFilterGroup(
Settings.HIDE_PRODUCTS_BANNER,
Settings.HIDE_VIEW_PRODUCTS_BANNER,
"product_item",
"products_in_video",
"shopping_overlay.eml", // Video player overlay shopping links.
"shopping_carousel.eml" // Channel profile shopping shelf.
"shopping_overlay.eml" // Video player overlay shopping links.
);
shoppingLinks = new StringFilterGroup(
final var shoppingLinks = new StringFilterGroup(
Settings.HIDE_SHOPPING_LINKS,
"expandable_list"
"shopping_description_shelf.eml"
);
playerShoppingShelf = new StringFilterGroup(
Settings.HIDE_PLAYER_STORE_SHELF,
"expandable_list.eml",
Settings.HIDE_CREATOR_STORE_SHELF,
"horizontal_shelf.eml"
);
playerShoppingShelfBuffer = new ByteArrayFilterGroup(
null,
"shopping_link_item",
"shopping_item_card_list"
);
channelProfile = new StringFilterGroup(
Settings.HIDE_VISIT_STORE_BUTTON,
"channel_profile.eml",
"page_header.eml"
);
visitStoreButton = new ByteArrayFilterGroup(
null,
"header_store_button"
);
final var webLinkPanel = new StringFilterGroup(
Settings.HIDE_WEB_SEARCH_RESULTS,
"web_link_panel"
@@ -149,7 +132,8 @@ public final class AdsFilter extends Filter {
final var merchandise = new StringFilterGroup(
Settings.HIDE_MERCHANDISE_BANNERS,
"product_carousel"
"product_carousel",
"shopping_carousel.eml" // Channel profile shopping shelf.
);
final var selfSponsor = new StringFilterGroup(
@@ -158,16 +142,15 @@ public final class AdsFilter extends Filter {
);
addPathCallbacks(
fullscreenAd,
generalAds,
merchandise,
viewProducts,
selfSponsor,
fullscreenAd,
channelProfile,
webLinkPanel,
shoppingLinks,
movieAds,
playerShoppingShelf,
movieAds
selfSponsor,
shoppingLinks,
viewProducts,
webLinkPanel
);
}
@@ -178,11 +161,6 @@ public final class AdsFilter extends Filter {
return contentIndex == 0 && playerShoppingShelfBuffer.check(protobufBufferArray).isFiltered();
}
// Check for the index because of likelihood of false positives.
if (contentIndex != 0 && matchedGroup == shoppingLinks) {
return false;
}
if (exceptions.matches(path)) {
return false;
}
@@ -194,10 +172,6 @@ public final class AdsFilter extends Filter {
return false;
}
if (matchedGroup == channelProfile) {
return visitStoreButton.check(protobufBufferArray).isFiltered();
}
return true;
}

View File

@@ -7,7 +7,7 @@ import app.revanced.extension.youtube.settings.Settings;
@SuppressWarnings("unused")
final class CommentsFilter extends Filter {
private final StringFilterGroup filterChipBar;
private final StringFilterGroup chipBar;
private final ByteArrayFilterGroup aiCommentsSummary;
public CommentsFilter() {
@@ -16,6 +16,21 @@ final class CommentsFilter extends Filter {
"live_chat_summary_banner.eml"
);
chipBar = new StringFilterGroup(
Settings.HIDE_COMMENTS_AI_SUMMARY,
"chip_bar.eml"
);
aiCommentsSummary = new ByteArrayFilterGroup(
null,
"yt_fill_spark_"
);
var channelGuidelines = new StringFilterGroup(
Settings.HIDE_COMMENTS_CHANNEL_GUIDELINES,
"channel_guidelines_entry_banner"
);
var commentsByMembers = new StringFilterGroup(
Settings.HIDE_COMMENTS_BY_MEMBERS_HEADER,
"sponsorships_comments_header.eml",
@@ -28,6 +43,11 @@ final class CommentsFilter extends Filter {
"_comments"
);
var communityGuidelines = new StringFilterGroup(
Settings.HIDE_COMMENTS_COMMUNITY_GUIDELINES,
"community_guidelines"
);
var createAShort = new StringFilterGroup(
Settings.HIDE_COMMENTS_CREATE_A_SHORT_BUTTON,
"composer_short_creation_button.eml"
@@ -50,32 +70,25 @@ final class CommentsFilter extends Filter {
"composer_timestamp_button.eml"
);
filterChipBar = new StringFilterGroup(
Settings.HIDE_COMMENTS_AI_SUMMARY,
"filter_chip_bar.eml"
);
aiCommentsSummary = new ByteArrayFilterGroup(
null,
"yt_fill_spark_"
);
addPathCallbacks(
channelGuidelines,
chatSummary,
chipBar,
commentsByMembers,
comments,
communityGuidelines,
createAShort,
previewComment,
thanksButton,
timestampButton,
filterChipBar
timestampButton
);
}
@Override
boolean isFiltered(@Nullable String identifier, String path, byte[] protobufBufferArray,
StringFilterGroup matchedGroup, FilterContentType contentType, int contentIndex) {
if (matchedGroup == filterChipBar) {
if (matchedGroup == chipBar) {
return aiCommentsSummary.check(protobufBufferArray).isFiltered();
}

View File

@@ -4,6 +4,7 @@ import androidx.annotation.Nullable;
import app.revanced.extension.youtube.StringTrieSearch;
import app.revanced.extension.youtube.settings.Settings;
import app.revanced.extension.youtube.shared.PlayerType;
@SuppressWarnings("unused")
final class DescriptionComponentsFilter extends Filter {
@@ -17,6 +18,8 @@ final class DescriptionComponentsFilter extends Filter {
private final StringFilterGroup horizontalShelf;
private final ByteArrayFilterGroup cellVideoAttribute;
private final StringFilterGroup aiGeneratedVideoSummarySection;
public DescriptionComponentsFilter() {
exceptions.addPatterns(
"compact_channel",
@@ -26,7 +29,7 @@ final class DescriptionComponentsFilter extends Filter {
"metadata"
);
final StringFilterGroup aiGeneratedVideoSummarySection = new StringFilterGroup(
aiGeneratedVideoSummarySection = new StringFilterGroup(
Settings.HIDE_AI_GENERATED_VIDEO_SUMMARY_SECTION,
"cell_expandable_metadata.eml"
);
@@ -104,6 +107,12 @@ final class DescriptionComponentsFilter extends Filter {
@Override
boolean isFiltered(@Nullable String identifier, String path, byte[] protobufBufferArray,
StringFilterGroup matchedGroup, FilterContentType contentType, int contentIndex) {
if (matchedGroup == aiGeneratedVideoSummarySection) {
// Only hide if player is open, in case this component is used somewhere else.
return PlayerType.getCurrent().isMaximizedOrFullscreen();
}
if (exceptions.matches(path)) return false;
if (matchedGroup == macroMarkersCarousel) {

View File

@@ -39,6 +39,9 @@ public final class LayoutComponentsFilter extends Filter {
private final ByteArrayFilterGroup joinMembershipButton;
private final StringFilterGroup horizontalShelves;
private final ByteArrayFilterGroup ticketShelf;
private final StringFilterGroup chipBar;
private final StringFilterGroup channelProfile;
private final ByteArrayFilterGroupList channelProfileBuffer;
public LayoutComponentsFilter() {
exceptions.addPatterns(
@@ -80,18 +83,13 @@ public final class LayoutComponentsFilter extends Filter {
"poll_post_responsive_root.eml"
);
final var communityGuidelines = new StringFilterGroup(
Settings.HIDE_COMMUNITY_GUIDELINES,
"community_guidelines"
);
final var subscribersCommunityGuidelines = new StringFilterGroup(
Settings.HIDE_SUBSCRIBERS_COMMUNITY_GUIDELINES,
"sponsorships_comments_upsell"
);
final var channelMemberShelf = new StringFilterGroup(
Settings.HIDE_CHANNEL_MEMBER_SHELF,
final var channelMembersShelf = new StringFilterGroup(
Settings.HIDE_MEMBERS_SHELF,
"member_recognition_shelf"
);
@@ -105,6 +103,11 @@ public final class LayoutComponentsFilter extends Filter {
"subscriptions_chip_bar"
);
chipBar = new StringFilterGroup(
Settings.HIDE_FILTER_BAR_FEED_IN_HISTORY,
"chip_bar"
);
inFeedSurvey = new StringFilterGroup(
Settings.HIDE_FEED_SURVEY,
"in_feed_survey",
@@ -133,13 +136,13 @@ public final class LayoutComponentsFilter extends Filter {
);
final var latestPosts = new StringFilterGroup(
Settings.HIDE_HIDE_LATEST_POSTS,
Settings.HIDE_LATEST_POSTS,
"post_shelf"
);
final var channelGuidelines = new StringFilterGroup(
Settings.HIDE_HIDE_CHANNEL_GUIDELINES,
"channel_guidelines_entry_banner"
final var channelLinksPreview = new StringFilterGroup(
Settings.HIDE_LINKS_PREVIEW,
"attribution.eml"
);
final var emergencyBox = new StringFilterGroup(
@@ -194,7 +197,6 @@ public final class LayoutComponentsFilter extends Filter {
"image_shelf"
);
final var timedReactions = new StringFilterGroup(
Settings.HIDE_TIMED_REACTIONS,
"emoji_control_panel",
@@ -221,7 +223,6 @@ public final class LayoutComponentsFilter extends Filter {
"sponsorships"
);
final var channelWatermark = new StringFilterGroup(
Settings.HIDE_VIDEO_CHANNEL_WATERMARK,
"featured_channel_watermark_overlay"
@@ -237,6 +238,22 @@ public final class LayoutComponentsFilter extends Filter {
"endorsement_header_footer.eml"
);
channelProfile = new StringFilterGroup(
null,
"channel_profile.eml",
"page_header.eml"
);
channelProfileBuffer = new ByteArrayFilterGroupList();
channelProfileBuffer.addAll(new ByteArrayFilterGroup(
Settings.HIDE_VISIT_STORE_BUTTON,
"header_store_button"
),
new ByteArrayFilterGroup(
Settings.HIDE_VISIT_COMMUNITY_BUTTON,
"community_button"
)
);
horizontalShelves = new StringFilterGroup(
Settings.HIDE_HORIZONTAL_SHELVES,
"horizontal_video_shelf.eml",
@@ -247,7 +264,7 @@ public final class LayoutComponentsFilter extends Filter {
ticketShelf = new ByteArrayFilterGroup(
Settings.HIDE_TICKET_SHELF,
"ticket"
"ticket.eml"
);
addPathCallbacks(
@@ -260,7 +277,6 @@ public final class LayoutComponentsFilter extends Filter {
searchResultRecommendationLabels,
latestPosts,
channelWatermark,
communityGuidelines,
playables,
quickActions,
relatedVideos,
@@ -272,12 +288,14 @@ public final class LayoutComponentsFilter extends Filter {
emergencyBox,
subscribersCommunityGuidelines,
subscriptionsChipBar,
channelGuidelines,
chipBar,
channelLinksPreview,
channelProfile,
audioTrackButton,
artistCard,
timedReactions,
imageShelf,
channelMemberShelf,
channelMembersShelf,
forYouShelf,
horizontalShelves
);
@@ -301,6 +319,10 @@ public final class LayoutComponentsFilter extends Filter {
return true;
}
if (matchedGroup == channelProfile) {
return channelProfileBuffer.check(protobufBufferArray).isFiltered();
}
if (exceptions.matches(path)) return false; // Exceptions are not filtered.
if (matchedGroup == compactChannelBarInner) {
@@ -314,6 +336,10 @@ public final class LayoutComponentsFilter extends Filter {
return contentIndex == 0 && (hideShelves() || ticketShelf.check(protobufBufferArray).isFiltered());
}
if (matchedGroup == chipBar) {
return contentIndex == 0 && NavigationButton.getSelectedNavigationButton() == NavigationButton.LIBRARY;
}
return true;
}
@@ -321,7 +347,7 @@ public final class LayoutComponentsFilter extends Filter {
* Injection point.
* Called from a different place then the other filters.
*/
public static boolean filterMixPlaylists(final Object conversionContext, @Nullable final byte[] bytes) {
public static boolean filterMixPlaylists(Object conversionContext, @Nullable final byte[] bytes) {
try {
if (!Settings.HIDE_MIX_PLAYLISTS.get()) {
return false;
@@ -448,7 +474,7 @@ public final class LayoutComponentsFilter extends Filter {
}
// Do not hide if the navigation back button is visible,
// otherwise the content shelves in the explore/music/courses pages are hidde.
// otherwise the content shelves in the explore/music/courses pages are hidden.
if (NavigationBar.isBackButtonVisible()) {
return false;
}

View File

@@ -48,7 +48,7 @@ public final class LithoFilterPatch {
/**
* Search through a byte array for all ASCII strings.
*/
private static void findAsciiStrings(StringBuilder builder, byte[] buffer) {
static void findAsciiStrings(StringBuilder builder, byte[] buffer) {
// Valid ASCII values (ignore control characters).
final int minimumAscii = 32; // 32 = space character
final int maximumAscii = 126; // 127 = delete character
@@ -96,7 +96,7 @@ public final class LithoFilterPatch {
private static final class DummyFilter extends Filter { }
private static final Filter[] filters = new Filter[] {
new DummyFilter() // Replaced by patch.
new DummyFilter() // Replaced patching, do not touch.
};
private static final StringTrieSearch pathSearchTree = new StringTrieSearch();
@@ -108,11 +108,7 @@ public final class LithoFilterPatch {
* Because litho filtering is multi-threaded and the buffer is passed in from a different injection point,
* the buffer is saved to a ThreadLocal so each calling thread does not interfere with other threads.
*/
private static final ThreadLocal<ByteBuffer> bufferThreadLocal = new ThreadLocal<>();
/**
* Results of calling {@link #filter(String, StringBuilder)}.
*/
private static final ThreadLocal<Boolean> filterResult = new ThreadLocal<>();
private static final ThreadLocal<byte[]> bufferThreadLocal = new ThreadLocal<>();
static {
for (Filter filter : filters) {
@@ -168,57 +164,50 @@ public final class LithoFilterPatch {
/**
* Injection point. Called off the main thread.
*/
@SuppressWarnings("unused")
public static void setProtoBuffer(@Nullable ByteBuffer protobufBuffer) {
public static void setProtoBuffer(byte[] buffer) {
// Set the buffer to a thread local. The buffer will remain in memory, even after the call to #filter completes.
// This is intentional, as it appears the buffer can be set once and then filtered multiple times.
// The buffer will be cleared from memory after a new buffer is set by the same thread,
// or when the calling thread eventually dies.
if (protobufBuffer == null) {
bufferThreadLocal.set(buffer);
}
/**
* Injection point. Called off the main thread.
* Targets 20.21 and lower.
*/
public static void setProtoBuffer(@Nullable ByteBuffer buffer) {
// Set the buffer to a thread local. The buffer will remain in memory, even after the call to #filter completes.
// This is intentional, as it appears the buffer can be set once and then filtered multiple times.
// The buffer will be cleared from memory after a new buffer is set by the same thread,
// or when the calling thread eventually dies.
if (buffer == null || !buffer.hasArray()) {
// It appears the buffer can be cleared out just before the call to #filter()
// Ignore this null value and retain the last buffer that was set.
Logger.printDebug(() -> "Ignoring null protobuffer");
Logger.printDebug(() -> "Ignoring null or empty buffer: " + buffer);
} else {
bufferThreadLocal.set(protobufBuffer);
setProtoBuffer(buffer.array());
}
}
/**
* Injection point.
*/
public static boolean shouldFilter() {
Boolean shouldFilter = filterResult.get();
return shouldFilter != null && shouldFilter;
}
/**
* Injection point. Called off the main thread, and commonly called by multiple threads at the same time.
*/
public static void filter(@Nullable String lithoIdentifier, StringBuilder pathBuilder) {
filterResult.set(handleFiltering(lithoIdentifier, pathBuilder));
}
private static boolean handleFiltering(@Nullable String lithoIdentifier, StringBuilder pathBuilder) {
public static boolean shouldFilter(@Nullable String lithoIdentifier, StringBuilder pathBuilder) {
try {
if (pathBuilder.length() == 0) {
return false;
}
ByteBuffer protobufBuffer = bufferThreadLocal.get();
final byte[] bufferArray;
byte[] buffer = bufferThreadLocal.get();
// Potentially the buffer may have been null or never set up until now.
// Use an empty buffer so the litho id/path filters still work correctly.
if (protobufBuffer == null) {
bufferArray = EMPTY_BYTE_ARRAY;
} else if (!protobufBuffer.hasArray()) {
Logger.printDebug(() -> "Proto buffer does not have an array, using an empty buffer array");
bufferArray = EMPTY_BYTE_ARRAY;
} else {
bufferArray = protobufBuffer.array();
if (buffer == null) {
buffer = EMPTY_BYTE_ARRAY;
}
LithoFilterParameters parameter = new LithoFilterParameters(lithoIdentifier,
pathBuilder.toString(), bufferArray);
LithoFilterParameters parameter = new LithoFilterParameters(
lithoIdentifier, pathBuilder.toString(), buffer);
Logger.printDebug(() -> "Searching " + parameter);
if (parameter.identifier != null && identifierSearchTree.matches(parameter.identifier, parameter)) {

View File

@@ -44,6 +44,8 @@ public final class ShortsFilter extends Filter {
private final ByteArrayFilterGroup shortsCompactFeedVideoBuffer;
private final StringFilterGroup useSoundButton;
private final ByteArrayFilterGroup useSoundButtonBuffer;
private final StringFilterGroup useTemplateButton;
private final ByteArrayFilterGroup useTemplateButtonBuffer;
private final StringFilterGroup subscribeButton;
private final StringFilterGroup joinButton;
@@ -178,7 +180,10 @@ public final class ShortsFilter extends Filter {
useSoundButton = new StringFilterGroup(
Settings.HIDE_SHORTS_USE_SOUND_BUTTON,
// First filter needed for "Use this sound" that can appear when viewing Shorts
// through the "Short remixing this video" section.
"floating_action_button.eml",
// Second filter needed for "Use this sound" that can appear below the video title.
REEL_METAPANEL_PATH
);
@@ -187,6 +192,17 @@ public final class ShortsFilter extends Filter {
"yt_outline_camera_"
);
useTemplateButton = new StringFilterGroup(
Settings.HIDE_SHORTS_USE_TEMPLATE_BUTTON,
// Second filter needed for "Use this template" that can appear below the video title.
REEL_METAPANEL_PATH
);
useTemplateButtonBuffer = new ByteArrayFilterGroup(
null,
"yt_outline_template_add_"
);
videoActionButton = new StringFilterGroup(
null,
// Can be simply 'button.eml', 'shorts_video_action_button.eml' or 'reel_action_button.eml'
@@ -195,8 +211,7 @@ public final class ShortsFilter extends Filter {
suggestedAction = new StringFilterGroup(
null,
"suggested_action.eml",
REEL_METAPANEL_PATH
"suggested_action.eml"
);
addPathCallbacks(
@@ -268,6 +283,7 @@ public final class ShortsFilter extends Filter {
),
new ByteArrayFilterGroup(
Settings.HIDE_SHORTS_USE_TEMPLATE_BUTTON,
// "Use this template" can appear in two different places.
"yt_outline_template_add_"
),
new ByteArrayFilterGroup(
@@ -317,6 +333,10 @@ public final class ShortsFilter extends Filter {
return useSoundButtonBuffer.check(protobufBufferArray).isFiltered();
}
if (matchedGroup == useTemplateButton) {
return useTemplateButtonBuffer.check(protobufBufferArray).isFiltered();
}
if (matchedGroup == shortsCompactFeedVideo) {
return shouldHideShortsFeedItems() && shortsCompactFeedVideoBuffer.check(protobufBufferArray).isFiltered();
}
@@ -402,17 +422,6 @@ public final class ShortsFilter extends Filter {
};
}
/**
* Injection point. Only used if patching older than 19.03.
* This hook may be obsolete even for old versions
* as they now use a litho layout like newer versions.
*/
public static void hideShortsShelf(final View shortsShelfView) {
if (shouldHideShortsFeedItems()) {
Utils.hideViewByLayoutParams(shortsShelfView);
}
}
public static int getSoundButtonSize(int original) {
if (Settings.HIDE_SHORTS_SOUND_BUTTON.get()) {
return 0;

View File

@@ -5,8 +5,10 @@ import static java.lang.Boolean.TRUE;
import static app.revanced.extension.shared.settings.Setting.Availability;
import static app.revanced.extension.shared.settings.Setting.migrateOldSettingToNew;
import static app.revanced.extension.shared.settings.Setting.parent;
import static app.revanced.extension.shared.settings.Setting.parentsAll;
import static app.revanced.extension.shared.settings.Setting.parentsAny;
import static app.revanced.extension.youtube.patches.ChangeFormFactorPatch.FormFactor;
import static app.revanced.extension.youtube.patches.ChangeHeaderPatch.HeaderLogo;
import static app.revanced.extension.youtube.patches.ChangeStartPagePatch.ChangeStartPageTypeAvailability;
import static app.revanced.extension.youtube.patches.ChangeStartPagePatch.StartPage;
import static app.revanced.extension.youtube.patches.ExitFullscreenPatch.FullscreenMode;
@@ -22,6 +24,7 @@ import static app.revanced.extension.youtube.patches.OpenShortsInRegularPlayerPa
import static app.revanced.extension.youtube.patches.SeekbarThumbnailsPatch.SeekbarThumbnailsHighQualityAvailability;
import static app.revanced.extension.youtube.patches.components.PlayerFlyoutMenuItemsFilter.HideAudioFlyoutMenuAvailability;
import static app.revanced.extension.youtube.patches.theme.ThemePatch.SplashScreenAnimationStyle;
import static app.revanced.extension.youtube.sponsorblock.SegmentPlaybackController.SponsorBlockDuration;
import static app.revanced.extension.youtube.sponsorblock.objects.CategoryBehaviour.IGNORE;
import static app.revanced.extension.youtube.sponsorblock.objects.CategoryBehaviour.MANUAL_SKIP;
import static app.revanced.extension.youtube.sponsorblock.objects.CategoryBehaviour.SKIP_AUTOMATICALLY;
@@ -52,11 +55,11 @@ public class Settings extends BaseSettings {
public static final IntegerSetting VIDEO_QUALITY_DEFAULT_WIFI = new IntegerSetting("revanced_video_quality_default_wifi", -2);
public static final IntegerSetting VIDEO_QUALITY_DEFAULT_MOBILE = new IntegerSetting("revanced_video_quality_default_mobile", -2);
public static final BooleanSetting REMEMBER_VIDEO_QUALITY_LAST_SELECTED = new BooleanSetting("revanced_remember_video_quality_last_selected", FALSE);
public static final BooleanSetting REMEMBER_VIDEO_QUALITY_LAST_SELECTED_TOAST = new BooleanSetting("revanced_remember_video_quality_last_selected_toast", TRUE, false,
parent(REMEMBER_VIDEO_QUALITY_LAST_SELECTED));
public static final IntegerSetting SHORTS_QUALITY_DEFAULT_WIFI = new IntegerSetting("revanced_shorts_quality_default_wifi", -2, true);
public static final IntegerSetting SHORTS_QUALITY_DEFAULT_MOBILE = new IntegerSetting("revanced_shorts_quality_default_mobile", -2, true);
public static final BooleanSetting REMEMBER_SHORTS_QUALITY_LAST_SELECTED = new BooleanSetting("revanced_remember_shorts_quality_last_selected", FALSE);
public static final BooleanSetting REMEMBER_VIDEO_QUALITY_LAST_SELECTED_TOAST = new BooleanSetting("revanced_remember_video_quality_last_selected_toast", TRUE, false,
parentsAny(REMEMBER_VIDEO_QUALITY_LAST_SELECTED, REMEMBER_SHORTS_QUALITY_LAST_SELECTED));
public static final BooleanSetting ADVANCED_VIDEO_QUALITY_MENU = new BooleanSetting("revanced_advanced_video_quality_menu", TRUE);
public static final BooleanSetting DISABLE_HDR_VIDEO = new BooleanSetting("revanced_disable_hdr_video", FALSE);
// Speed
@@ -72,19 +75,18 @@ public class Settings extends BaseSettings {
public static final BooleanSetting FORCE_ORIGINAL_AUDIO = new BooleanSetting("revanced_force_original_audio", FALSE, new ForceOriginalAudioAvailability());
// Ads
public static final BooleanSetting HIDE_CREATOR_STORE_SHELF = new BooleanSetting("revanced_hide_creator_store_shelf", TRUE);
public static final BooleanSetting HIDE_END_SCREEN_STORE_BANNER = new BooleanSetting("revanced_hide_end_screen_store_banner", TRUE, true);
public static final BooleanSetting HIDE_FULLSCREEN_ADS = new BooleanSetting("revanced_hide_fullscreen_ads", TRUE);
public static final BooleanSetting HIDE_GENERAL_ADS = new BooleanSetting("revanced_hide_general_ads", TRUE);
public static final BooleanSetting HIDE_GET_PREMIUM = new BooleanSetting("revanced_hide_get_premium", TRUE);
public static final BooleanSetting HIDE_HIDE_LATEST_POSTS = new BooleanSetting("revanced_hide_latest_posts_ads", TRUE);
public static final BooleanSetting HIDE_LATEST_POSTS = new BooleanSetting("revanced_hide_latest_posts", TRUE);
public static final BooleanSetting HIDE_MERCHANDISE_BANNERS = new BooleanSetting("revanced_hide_merchandise_banners", TRUE);
public static final BooleanSetting HIDE_PAID_PROMOTION_LABEL = new BooleanSetting("revanced_hide_paid_promotion_label", TRUE);
public static final BooleanSetting HIDE_PLAYER_STORE_SHELF = new BooleanSetting("revanced_hide_player_store_shelf", TRUE);
public static final BooleanSetting HIDE_PRODUCTS_BANNER = new BooleanSetting("revanced_hide_products_banner", TRUE);
public static final BooleanSetting HIDE_SELF_SPONSOR = new BooleanSetting("revanced_hide_self_sponsor_ads", TRUE);
public static final BooleanSetting HIDE_SHOPPING_LINKS = new BooleanSetting("revanced_hide_shopping_links", TRUE);
public static final BooleanSetting HIDE_VIDEO_ADS = new BooleanSetting("revanced_hide_video_ads", TRUE, true);
public static final BooleanSetting HIDE_VISIT_STORE_BUTTON = new BooleanSetting("revanced_hide_visit_store_button", TRUE);
public static final BooleanSetting HIDE_VIEW_PRODUCTS_BANNER = new BooleanSetting("revanced_hide_view_products_banner", TRUE);
public static final BooleanSetting HIDE_WEB_SEARCH_RESULTS = new BooleanSetting("revanced_hide_web_search_results", TRUE);
// Feed
@@ -98,10 +100,10 @@ public class Settings extends BaseSettings {
public static final BooleanSetting HIDE_EXPANDABLE_CHIP = new BooleanSetting("revanced_hide_expandable_chip", TRUE);
public static final BooleanSetting HIDE_FEED_SURVEY = new BooleanSetting("revanced_hide_feed_survey", TRUE);
public static final BooleanSetting HIDE_FILTER_BAR_FEED_IN_FEED = new BooleanSetting("revanced_hide_filter_bar_feed_in_feed", FALSE, true);
public static final BooleanSetting HIDE_FILTER_BAR_FEED_IN_HISTORY = new BooleanSetting("revanced_hide_filter_bar_feed_in_history", FALSE);
public static final BooleanSetting HIDE_FILTER_BAR_FEED_IN_RELATED_VIDEOS = new BooleanSetting("revanced_hide_filter_bar_feed_in_related_videos", FALSE, true);
public static final BooleanSetting HIDE_FILTER_BAR_FEED_IN_SEARCH = new BooleanSetting("revanced_hide_filter_bar_feed_in_search", FALSE, true);
public static final BooleanSetting HIDE_FLOATING_MICROPHONE_BUTTON = new BooleanSetting("revanced_hide_floating_microphone_button", TRUE, true);
public static final BooleanSetting HIDE_FOR_YOU_SHELF = new BooleanSetting("revanced_hide_for_you_shelf", TRUE);
public static final BooleanSetting HIDE_HORIZONTAL_SHELVES = new BooleanSetting("revanced_hide_horizontal_shelves", TRUE);
public static final BooleanSetting HIDE_IMAGE_SHELF = new BooleanSetting("revanced_hide_image_shelf", TRUE);
public static final BooleanSetting HIDE_MIX_PLAYLISTS = new BooleanSetting("revanced_hide_mix_playlists", TRUE);
@@ -128,6 +130,12 @@ public class Settings extends BaseSettings {
public static final BooleanSetting HIDE_KEYWORD_CONTENT_SEARCH = new BooleanSetting("revanced_hide_keyword_content_search", FALSE);
public static final StringSetting HIDE_KEYWORD_CONTENT_PHRASES = new StringSetting("revanced_hide_keyword_content_phrases", "",
parentsAny(HIDE_KEYWORD_CONTENT_HOME, HIDE_KEYWORD_CONTENT_SUBSCRIPTIONS, HIDE_KEYWORD_CONTENT_SEARCH));
// Channel page
public static final BooleanSetting HIDE_FOR_YOU_SHELF = new BooleanSetting("revanced_hide_for_you_shelf", FALSE);
public static final BooleanSetting HIDE_LINKS_PREVIEW = new BooleanSetting("revanced_hide_links_preview", TRUE);
public static final BooleanSetting HIDE_MEMBERS_SHELF = new BooleanSetting("revanced_hide_members_shelf", TRUE);
public static final BooleanSetting HIDE_VISIT_COMMUNITY_BUTTON = new BooleanSetting("revanced_hide_visit_community_button", TRUE);
public static final BooleanSetting HIDE_VISIT_STORE_BUTTON = new BooleanSetting("revanced_hide_visit_store_button", TRUE);
// Player
public static final BooleanSetting COPY_VIDEO_URL = new BooleanSetting("revanced_copy_video_url", FALSE);
@@ -141,13 +149,10 @@ public class Settings extends BaseSettings {
public static final BooleanSetting HIDE_CAST_BUTTON = new BooleanSetting("revanced_hide_cast_button", TRUE, true);
public static final BooleanSetting HIDE_PLAYER_CONTROL_BUTTONS_BACKGROUND = new BooleanSetting("revanced_hide_player_control_buttons_background", FALSE, true);
public static final BooleanSetting HIDE_CHANNEL_BAR = new BooleanSetting("revanced_hide_channel_bar", FALSE);
public static final BooleanSetting HIDE_CHANNEL_MEMBER_SHELF = new BooleanSetting("revanced_hide_channel_member_shelf", TRUE);
public static final BooleanSetting HIDE_COMMUNITY_GUIDELINES = new BooleanSetting("revanced_hide_community_guidelines", TRUE);
public static final BooleanSetting HIDE_EMERGENCY_BOX = new BooleanSetting("revanced_hide_emergency_box", TRUE);
public static final BooleanSetting HIDE_ENDSCREEN_CARDS = new BooleanSetting("revanced_hide_endscreen_cards", FALSE);
public static final BooleanSetting HIDE_END_SCREEN_SUGGESTED_VIDEO = new BooleanSetting("revanced_end_screen_suggested_video", FALSE, true);
public static final BooleanSetting HIDE_RELATED_VIDEO_OVERLAY = new BooleanSetting("revanced_hide_related_video_overlay", FALSE, true);
public static final BooleanSetting HIDE_HIDE_CHANNEL_GUIDELINES = new BooleanSetting("revanced_hide_channel_guidelines", TRUE);
public static final BooleanSetting HIDE_INFO_PANELS = new BooleanSetting("revanced_hide_info_panels", TRUE);
public static final BooleanSetting HIDE_INFO_CARDS = new BooleanSetting("revanced_hide_info_cards", FALSE);
public static final BooleanSetting HIDE_JOIN_MEMBERSHIP_BUTTON = new BooleanSetting("revanced_hide_join_membership_button", TRUE);
@@ -182,12 +187,14 @@ public class Settings extends BaseSettings {
// Comments
public static final BooleanSetting HIDE_COMMENTS_AI_CHAT_SUMMARY = new BooleanSetting("revanced_hide_comments_ai_chat_summary", FALSE);
public static final BooleanSetting HIDE_COMMENTS_AI_SUMMARY = new BooleanSetting("revanced_hide_comments_ai_summary", FALSE);
public static final BooleanSetting HIDE_COMMENTS_CHANNEL_GUIDELINES = new BooleanSetting("revanced_hide_comments_channel_guidelines", TRUE);
public static final BooleanSetting HIDE_COMMENTS_BY_MEMBERS_HEADER = new BooleanSetting("revanced_hide_comments_by_members_header", FALSE);
public static final BooleanSetting HIDE_COMMENTS_COMMUNITY_GUIDELINES = new BooleanSetting("revanced_hide_comments_community_guidelines", TRUE);
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_TIMESTAMP_BUTTON = new BooleanSetting("revanced_hide_comments_timestamp_button", FALSE);
public static final BooleanSetting HIDE_COMMENTS_PREVIEW_COMMENT = new BooleanSetting("revanced_hide_comments_preview_comment", FALSE);
public static final BooleanSetting HIDE_COMMENTS_SECTION = new BooleanSetting("revanced_hide_comments_section", FALSE);
public static final BooleanSetting HIDE_COMMENTS_THANKS_BUTTON = new BooleanSetting("revanced_hide_comments_thanks_button", TRUE);
public static final BooleanSetting HIDE_COMMENTS_TIMESTAMP_BUTTON = new BooleanSetting("revanced_hide_comments_timestamp_button", FALSE);
// Description
public static final BooleanSetting HIDE_AI_GENERATED_VIDEO_SUMMARY_SECTION = new BooleanSetting("revanced_hide_ai_generated_video_summary_section", FALSE);
public static final BooleanSetting HIDE_ASK_SECTION = new BooleanSetting("revanced_hide_ask_section", FALSE);
@@ -232,7 +239,8 @@ public class Settings extends BaseSettings {
public static final EnumSetting<FormFactor> CHANGE_FORM_FACTOR = new EnumSetting<>("revanced_change_form_factor", FormFactor.DEFAULT, true, "revanced_change_form_factor_user_dialog_message");
public static final BooleanSetting BYPASS_IMAGE_REGION_RESTRICTIONS = new BooleanSetting("revanced_bypass_image_region_restrictions", FALSE, true);
public static final BooleanSetting GRADIENT_LOADING_SCREEN = new BooleanSetting("revanced_gradient_loading_screen", FALSE, true);
public static final EnumSetting<SplashScreenAnimationStyle> SPLASH_SCREEN_ANIMATION_STYLE = new EnumSetting<>("splash_screen_animation_style", SplashScreenAnimationStyle.FPS_60_ONE_SECOND, true);
public static final EnumSetting<SplashScreenAnimationStyle> SPLASH_SCREEN_ANIMATION_STYLE = new EnumSetting<>("revanced_splash_screen_animation_style", SplashScreenAnimationStyle.FPS_60_ONE_SECOND, true);
public static final EnumSetting<HeaderLogo> HEADER_LOGO = new EnumSetting<>("revanced_header_logo", HeaderLogo.DEFAULT, true);
public static final BooleanSetting REMOVE_VIEWER_DISCRETION_DIALOG = new BooleanSetting("revanced_remove_viewer_discretion_dialog", FALSE,
"revanced_remove_viewer_discretion_dialog_user_dialog_message");
@@ -380,7 +388,11 @@ public class Settings extends BaseSettings {
public static final BooleanSetting SB_SQUARE_LAYOUT = new BooleanSetting("sb_square_layout", FALSE, parent(SB_ENABLED));
public static final BooleanSetting SB_COMPACT_SKIP_BUTTON = new BooleanSetting("sb_compact_skip_button", FALSE, parent(SB_ENABLED));
public static final BooleanSetting SB_AUTO_HIDE_SKIP_BUTTON = new BooleanSetting("sb_auto_hide_skip_button", TRUE, parent(SB_ENABLED));
public static final EnumSetting<SponsorBlockDuration> SB_AUTO_HIDE_SKIP_BUTTON_DURATION = new EnumSetting<>("sb_auto_hide_skip_button_duration",
SponsorBlockDuration.FOUR_SECONDS, parent(SB_ENABLED));
public static final BooleanSetting SB_TOAST_ON_SKIP = new BooleanSetting("sb_toast_on_skip", TRUE, parent(SB_ENABLED));
public static final EnumSetting<SponsorBlockDuration> SB_TOAST_ON_SKIP_DURATION = new EnumSetting<>("sb_toast_on_skip_duration",
SponsorBlockDuration.FOUR_SECONDS, parentsAll(SB_ENABLED, SB_TOAST_ON_SKIP));
public static final BooleanSetting SB_TOAST_ON_CONNECTION_ERROR = new BooleanSetting("sb_toast_on_connection_error", TRUE, parent(SB_ENABLED));
public static final BooleanSetting SB_TRACK_SKIP_COUNT = new BooleanSetting("sb_track_skip_count", TRUE, parent(SB_ENABLED));
public static final FloatSetting SB_SEGMENT_MIN_DURATION = new FloatSetting("sb_min_segment_duration", 0F, parent(SB_ENABLED));

View File

@@ -1,16 +1,37 @@
package app.revanced.extension.youtube.sponsorblock;
import static app.revanced.extension.shared.StringRef.str;
import static app.revanced.extension.shared.Utils.dipToPixels;
import static app.revanced.extension.youtube.sponsorblock.objects.CategoryBehaviour.SKIP_AUTOMATICALLY;
import android.app.Dialog;
import android.content.Context;
import android.content.res.Configuration;
import android.content.res.Resources;
import android.graphics.Canvas;
import android.graphics.Rect;
import android.graphics.drawable.ShapeDrawable;
import android.graphics.drawable.shapes.RoundRectShape;
import android.text.TextUtils;
import android.util.DisplayMetrics;
import android.util.Range;
import android.view.Gravity;
import android.view.ViewGroup;
import android.view.Window;
import android.view.WindowManager;
import android.view.animation.Animation;
import android.widget.LinearLayout;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import java.lang.ref.WeakReference;
import java.lang.reflect.Field;
import java.util.*;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Locale;
import java.util.Objects;
import app.revanced.extension.shared.Logger;
import app.revanced.extension.shared.Utils;
@@ -23,6 +44,7 @@ import app.revanced.extension.youtube.sponsorblock.objects.SegmentCategory;
import app.revanced.extension.youtube.sponsorblock.objects.SponsorSegment;
import app.revanced.extension.youtube.sponsorblock.requests.SBRequester;
import app.revanced.extension.youtube.sponsorblock.ui.SponsorBlockViewController;
import kotlin.Unit;
/**
* Handles showing, scheduling, and skipping of all {@link SponsorSegment} for the current video.
@@ -30,20 +52,37 @@ import app.revanced.extension.youtube.sponsorblock.ui.SponsorBlockViewController
* Class is not thread safe. All methods must be called on the main thread unless otherwise specified.
*/
public class SegmentPlaybackController {
/**
* Length of time to show a skip button for a highlight segment,
* or a regular segment if {@link Settings#SB_AUTO_HIDE_SKIP_BUTTON} is enabled.
*
* Effectively this value is rounded up to the next second.
* Enum for configurable durations (1 to 10 seconds) for skip button and toast display.
*/
private static final long DURATION_TO_SHOW_SKIP_BUTTON = 3800;
public enum SponsorBlockDuration {
ONE_SECOND(1),
TWO_SECONDS(2),
THREE_SECONDS(3),
FOUR_SECONDS(4),
FIVE_SECONDS(5),
SIX_SECONDS(6),
SEVEN_SECONDS(7),
EIGHT_SECONDS(8),
NINE_SECONDS(9),
TEN_SECONDS(10);
/**
* Duration, minus 200ms to adjust for exclusive end time checking in scheduled show/hides.
*/
private final long adjustedDuration;
SponsorBlockDuration(int seconds) {
adjustedDuration = seconds * 1000L - 200;
}
}
/*
* Highlight segments have zero length as they are a point in time.
* Draw them on screen using a fixed width bar.
* Value is independent of device dpi.
*/
private static final int HIGHLIGHT_SEGMENT_DRAW_BAR_WIDTH = 7;
private static final int HIGHLIGHT_SEGMENT_DRAW_BAR_WIDTH = dipToPixels(7);
@Nullable
private static String currentVideoId;
@@ -59,7 +98,7 @@ public class SegmentPlaybackController {
/**
* Because loading can take time, show the skip to highlight for a few seconds after the segments load.
* This is the system time (in milliseconds) to no longer show the initial display skip to highlight.
* Value will be zero if no highlight segment exists, or if the system time to show the highlight has passed.
* Value is zero if no highlight segment exists, or if the system time to show the highlight has passed.
*/
private static long highlightSegmentInitialShowEndTime;
@@ -70,7 +109,7 @@ public class SegmentPlaybackController {
private static SponsorSegment segmentCurrentlyPlaying;
/**
* Currently playing manual skip segment that is scheduled to hide.
* This will always be NULL or equal to {@link #segmentCurrentlyPlaying}.
* This is always NULL or equal to {@link #segmentCurrentlyPlaying}.
*/
@Nullable
private static SponsorSegment scheduledHideSegment;
@@ -89,31 +128,95 @@ public class SegmentPlaybackController {
*/
private static final List<SponsorSegment> hiddenSkipSegmentsForCurrentVideoTime = new ArrayList<>();
/**
* Current segments that have been auto skipped.
* If field is non null then the range will always contain the current video time.
* Range is used to prevent auto-skipping after undo.
* Android Range object has inclusive end time, unlike {@link SponsorSegment}.
*/
@Nullable
private static Range<Long> undoAutoSkipRange;
/**
* Range to undo if the toast is tapped.
* Is always null or identical to the last non null value of {@link #undoAutoSkipRange}.
*/
@Nullable
private static Range<Long> undoAutoSkipRangeToast;
/**
* System time (in milliseconds) of when to hide the skip button of {@link #segmentCurrentlyPlaying}.
* Value is zero if playback is not inside a segment ({@link #segmentCurrentlyPlaying} is null),
* or if {@link Settings#SB_AUTO_HIDE_SKIP_BUTTON} is not enabled.
*/
private static long skipSegmentButtonEndTime;
@Nullable
private static String timeWithoutSegments;
private static int sponsorBarAbsoluteLeft;
private static int sponsorAbsoluteBarRight;
private static int sponsorBarThickness;
@Nullable
private static SponsorSegment lastSegmentSkipped;
private static long lastSegmentSkippedTime;
@Nullable
private static SponsorSegment toastSegmentSkipped;
private static int toastNumberOfSegmentsSkipped;
/**
* The last toast dialog showing on screen.
*/
private static WeakReference<Dialog> toastDialogRef = new WeakReference<>(null);
static {
// Dismiss toast if app changes to PiP while undo skip is shown.
PlayerType.getOnChange().addObserver((PlayerType type) -> {
if (type == PlayerType.WATCH_WHILE_PICTURE_IN_PICTURE && dismissUndoToast()) {
Logger.printDebug(() -> "Dismissed undo toast as playback is PiP");
}
return Unit.INSTANCE;
});
}
/**
* @return If the toast was on screen and is now dismissed.
*/
private static boolean dismissUndoToast() {
Dialog toastDialog = toastDialogRef.get();
if (toastDialog != null && toastDialog.isShowing()) {
toastDialog.dismiss();
return true;
}
return false;
}
/**
* @return The adjusted duration to show the skip button, in milliseconds.
*/
private static long getSkipButtonDuration() {
return Settings.SB_AUTO_HIDE_SKIP_BUTTON_DURATION.get().adjustedDuration;
}
/**
* @return The adjusted duration to show the skipped toast, in milliseconds.
*/
private static long getToastDuration() {
return Settings.SB_TOAST_ON_SKIP_DURATION.get().adjustedDuration;
}
@Nullable
static SponsorSegment[] getSegments() {
return segments;
}
private static void setSegments(@NonNull SponsorSegment[] videoSegments) {
private static void setSegments(SponsorSegment[] videoSegments) {
Arrays.sort(videoSegments);
segments = videoSegments;
calculateTimeWithoutSegments();
if (SegmentCategory.HIGHLIGHT.behaviour == CategoryBehaviour.SKIP_AUTOMATICALLY
if (SegmentCategory.HIGHLIGHT.behaviour == SKIP_AUTOMATICALLY
|| SegmentCategory.HIGHLIGHT.behaviour == CategoryBehaviour.MANUAL_SKIP) {
for (SponsorSegment segment : videoSegments) {
if (segment.category == SegmentCategory.HIGHLIGHT) {
@@ -125,7 +228,7 @@ public class SegmentPlaybackController {
highlightSegment = null;
}
static void addUnsubmittedSegment(@NonNull SponsorSegment segment) {
static void addUnsubmittedSegment(SponsorSegment segment) {
Objects.requireNonNull(segment);
if (segments == null) {
segments = new SponsorSegment[1];
@@ -140,6 +243,7 @@ public class SegmentPlaybackController {
if (segments == null || segments.length == 0) {
return;
}
List<SponsorSegment> replacement = new ArrayList<>();
for (SponsorSegment segment : segments) {
if (segment.category != SegmentCategory.UNSUBMITTED) {
@@ -156,7 +260,7 @@ public class SegmentPlaybackController {
}
/**
* Clears all downloaded data.
* Clear all data.
*/
private static void clearData() {
currentVideoId = null;
@@ -170,6 +274,8 @@ public class SegmentPlaybackController {
skipSegmentButtonEndTime = 0;
toastSegmentSkipped = null;
toastNumberOfSegmentsSkipped = 0;
undoAutoSkipRange = null;
undoAutoSkipRangeToast = null;
hiddenSkipSegmentsForCurrentVideoTime.clear();
}
@@ -186,7 +292,7 @@ public class SegmentPlaybackController {
SponsorBlockUtils.clearUnsubmittedSegmentTimes();
Logger.printDebug(() -> "Initialized SponsorBlock");
} catch (Exception ex) {
Logger.printException(() -> "Failed to initialize SponsorBlock", ex);
Logger.printException(() -> "initialize failure", ex);
}
}
@@ -203,7 +309,7 @@ public class SegmentPlaybackController {
return;
}
if (PlayerType.getCurrent().isNoneOrHidden()) {
Logger.printDebug(() -> "ignoring Short");
Logger.printDebug(() -> "Ignoring Short");
return;
}
if (!Utils.isNetworkConnected()) {
@@ -212,7 +318,7 @@ public class SegmentPlaybackController {
}
currentVideoId = videoId;
Logger.printDebug(() -> "setCurrentVideoId: " + videoId);
Logger.printDebug(() -> "New video ID: " + videoId);
Utils.runOnBackgroundThread(() -> {
try {
@@ -227,42 +333,39 @@ public class SegmentPlaybackController {
}
/**
* Must be called off main thread
* Must be called off main thread.
*/
static void executeDownloadSegments(@NonNull String videoId) {
static void executeDownloadSegments(String videoId) {
Objects.requireNonNull(videoId);
try {
SponsorSegment[] segments = SBRequester.getSegments(videoId);
Utils.runOnMainThread(()-> {
if (!videoId.equals(currentVideoId)) {
// user changed videos before get segments network call could complete
Logger.printDebug(() -> "Ignoring segments for prior video: " + videoId);
return;
}
setSegments(segments);
SponsorSegment[] segments = SBRequester.getSegments(videoId);
final long videoTime = VideoInformation.getVideoTime();
if (highlightSegment != null) {
// If the current video time is before the highlight.
final long timeUntilHighlight = highlightSegment.start - videoTime;
if (timeUntilHighlight > 0) {
if (highlightSegment.shouldAutoSkip()) {
skipSegment(highlightSegment, false);
return;
}
highlightSegmentInitialShowEndTime = System.currentTimeMillis() + Math.min(
(long) (timeUntilHighlight / VideoInformation.getPlaybackSpeed()),
DURATION_TO_SHOW_SKIP_BUTTON);
Utils.runOnMainThread(() -> {
if (!videoId.equals(currentVideoId)) {
// user changed videos before get segments network call could complete
Logger.printDebug(() -> "Ignoring segments for prior video: " + videoId);
return;
}
setSegments(segments);
final long videoTime = VideoInformation.getVideoTime();
if (highlightSegment != null) {
// If the current video time is before the highlight.
final long timeUntilHighlight = highlightSegment.start - videoTime;
if (timeUntilHighlight > 0) {
if (highlightSegment.shouldAutoSkip()) {
skipSegment(highlightSegment, false);
return;
}
highlightSegmentInitialShowEndTime = System.currentTimeMillis() + Math.min(
(long) (timeUntilHighlight / VideoInformation.getPlaybackSpeed()),
getSkipButtonDuration());
}
}
// check for any skips now, instead of waiting for the next update to setVideoTime()
setVideoTime(videoTime);
});
} catch (Exception ex) {
Logger.printException(() -> "executeDownloadSegments failure", ex);
}
// check for any skips now, instead of waiting for the next update to setVideoTime()
setVideoTime(videoTime);
});
}
/**
@@ -273,8 +376,8 @@ public class SegmentPlaybackController {
public static void setVideoTime(long millis) {
try {
if (!Settings.SB_ENABLED.get()
|| PlayerType.getCurrent().isNoneOrHidden() // Shorts playback.
|| segments == null || segments.length == 0) {
|| PlayerType.getCurrent().isNoneOrHidden() // Shorts playback.
|| segments == null || segments.length == 0) {
return;
}
Logger.printDebug(() -> "setVideoTime: " + millis);
@@ -290,7 +393,7 @@ public class SegmentPlaybackController {
//
// To debug the stale skip logic, set this to a very large value (5000 or more)
// then try manually seeking just before playback reaches a segment skip.
final long speedAdjustedTimeThreshold = (long)(playbackSpeed * 1200);
final long speedAdjustedTimeThreshold = (long) (playbackSpeed * 1200);
final long startTimerLookAheadThreshold = millis + speedAdjustedTimeThreshold;
SponsorSegment foundSegmentCurrentlyPlaying = null;
@@ -298,22 +401,24 @@ public class SegmentPlaybackController {
for (final SponsorSegment segment : segments) {
if (segment.category.behaviour == CategoryBehaviour.SHOW_IN_SEEKBAR
|| segment.category.behaviour == CategoryBehaviour.IGNORE
|| segment.category == SegmentCategory.HIGHLIGHT) {
|| segment.category.behaviour == CategoryBehaviour.IGNORE
|| segment.category == SegmentCategory.HIGHLIGHT) {
continue;
}
if (segment.end <= millis) {
continue; // past this segment
continue; // Past this segment.
}
final boolean segmentShouldAutoSkip = shouldAutoSkipAndUndoSkipNotActive(segment, millis);
if (segment.start <= millis) {
// we are in the segment!
if (segment.shouldAutoSkip()) {
// We are in the segment!
if (segmentShouldAutoSkip) {
skipSegment(segment, false);
return; // must return, as skipping causes a recursive call back into this method
return; // Must return, as skipping causes a recursive call back into this method.
}
// first found segment, or it's an embedded segment and fully inside the outer segment
// First found segment, or it's an embedded segment and fully inside the outer segment.
if (foundSegmentCurrentlyPlaying == null || foundSegmentCurrentlyPlaying.containsSegment(segment)) {
// If the found segment is not currently displayed, then do not show if the segment is nearly over.
// This check prevents the skip button text from rapidly changing when multiple segments end at nearly the same time.
@@ -327,25 +432,27 @@ public class SegmentPlaybackController {
}
}
// Keep iterating and looking. There may be an upcoming autoskip,
// or there may be another smaller segment nested inside this segment
// or there may be another smaller segment nested inside this segment.
continue;
}
// segment is upcoming
// Segment is upcoming.
if (startTimerLookAheadThreshold < segment.start) {
break; // segment is not close enough to schedule, and no segments after this are of interest
// Segment is not close enough to schedule, and no segments after this are of interest.
break;
}
if (segment.shouldAutoSkip()) { // upcoming autoskip
if (segmentShouldAutoSkip) {
foundUpcomingSegment = segment;
break; // must stop here
break; // Must stop here.
}
// upcoming manual skip
// Upcoming manual skip.
// do not schedule upcoming segment, if it is not fully contained inside the current segment
// Do not schedule upcoming segment, if it is not fully contained inside the current segment.
if ((foundSegmentCurrentlyPlaying == null || foundSegmentCurrentlyPlaying.containsSegment(segment))
// use the most inner upcoming segment
&& (foundUpcomingSegment == null || foundUpcomingSegment.containsSegment(segment))) {
// Use the most inner upcoming segment.
&& (foundUpcomingSegment == null || foundUpcomingSegment.containsSegment(segment))) {
// Only schedule, if the segment start time is not near the end time of the current segment.
// This check is needed to prevent scheduled hide and show from clashing with each other.
@@ -361,8 +468,8 @@ public class SegmentPlaybackController {
}
if (highlightSegment != null) {
if (millis < DURATION_TO_SHOW_SKIP_BUTTON || (highlightSegmentInitialShowEndTime != 0
&& System.currentTimeMillis() < highlightSegmentInitialShowEndTime)) {
if (millis < getSkipButtonDuration() || (highlightSegmentInitialShowEndTime != 0
&& System.currentTimeMillis() < highlightSegmentInitialShowEndTime)) {
SponsorBlockViewController.showSkipHighlightButton(highlightSegment);
} else {
highlightSegmentInitialShowEndTime = 0;
@@ -373,16 +480,17 @@ public class SegmentPlaybackController {
if (segmentCurrentlyPlaying != foundSegmentCurrentlyPlaying) {
setSegmentCurrentlyPlaying(foundSegmentCurrentlyPlaying);
} else if (foundSegmentCurrentlyPlaying != null
&& skipSegmentButtonEndTime != 0 && skipSegmentButtonEndTime <= System.currentTimeMillis()) {
&& skipSegmentButtonEndTime != 0
&& skipSegmentButtonEndTime <= System.currentTimeMillis()) {
Logger.printDebug(() -> "Auto hiding skip button for segment: " + segmentCurrentlyPlaying);
skipSegmentButtonEndTime = 0;
hiddenSkipSegmentsForCurrentVideoTime.add(foundSegmentCurrentlyPlaying);
SponsorBlockViewController.hideSkipSegmentButton();
}
// schedule a hide, only if the segment end is near
final SponsorSegment segmentToHide =
(foundSegmentCurrentlyPlaying != null && foundSegmentCurrentlyPlaying.endIsNear(millis, speedAdjustedTimeThreshold))
// Schedule a hide, but only if the segment end is near.
final SponsorSegment segmentToHide = (foundSegmentCurrentlyPlaying != null &&
foundSegmentCurrentlyPlaying.endIsNear(millis, speedAdjustedTimeThreshold))
? foundSegmentCurrentlyPlaying
: null;
@@ -407,7 +515,7 @@ public class SegmentPlaybackController {
final long videoTime = VideoInformation.getVideoTime();
if (!segmentToHide.endIsNear(videoTime, speedAdjustedTimeThreshold)) {
// current video time is not what's expected. User paused playback
// Current video time is not what's expected. User paused playback.
Logger.printDebug(() -> "Ignoring outdated scheduled hide: " + segmentToHide
+ " videoInformation time: " + videoTime);
return;
@@ -416,7 +524,7 @@ public class SegmentPlaybackController {
// Need more than just hide the skip button, as this may have been an embedded segment
// Instead call back into setVideoTime to check everything again.
// Should not use VideoInformation time as it is less accurate,
// but this scheduled handler was scheduled precisely so we can just use the segment end time
// but this scheduled handler was scheduled precisely so we can just use the segment end time.
setSegmentCurrentlyPlaying(null);
setVideoTime(segmentToHide.end);
}, delayUntilHide);
@@ -446,12 +554,12 @@ public class SegmentPlaybackController {
final long videoTime = VideoInformation.getVideoTime();
if (!segmentToSkip.startIsNear(videoTime, speedAdjustedTimeThreshold)) {
// current video time is not what's expected. User paused playback
// Current video time is not what's expected. User paused playback.
Logger.printDebug(() -> "Ignoring outdated scheduled segment: " + segmentToSkip
+ " videoInformation time: " + videoTime);
return;
}
if (segmentToSkip.shouldAutoSkip()) {
if (shouldAutoSkipAndUndoSkipNotActive(segmentToSkip, videoTime)) {
Logger.printDebug(() -> "Running scheduled skip segment: " + segmentToSkip);
skipSegment(segmentToSkip, false);
} else {
@@ -461,6 +569,12 @@ public class SegmentPlaybackController {
}, delayUntilSkip);
}
}
// Clear undo range if video time is outside the segment. Must check last.
if (undoAutoSkipRange != null && !undoAutoSkipRange.contains(millis)) {
Logger.printDebug(() -> "Clearing undo range as current time is now outside range: " + undoAutoSkipRange);
undoAutoSkipRange = null;
}
} catch (Exception e) {
Logger.printException(() -> "setVideoTime failure", e);
}
@@ -470,14 +584,13 @@ public class SegmentPlaybackController {
* Removes all previously hidden segments that are not longer contained in the given video time.
*/
private static void updateHiddenSegments(long currentVideoTime) {
Iterator<SponsorSegment> i = hiddenSkipSegmentsForCurrentVideoTime.iterator();
while (i.hasNext()) {
SponsorSegment hiddenSegment = i.next();
hiddenSkipSegmentsForCurrentVideoTime.removeIf((hiddenSegment) -> {
if (!hiddenSegment.containsTime(currentVideoTime)) {
Logger.printDebug(() -> "Resetting hide skip button: " + hiddenSegment);
i.remove();
return true;
}
}
return false;
});
}
private static void setSegmentCurrentlyPlaying(@Nullable SponsorSegment segment) {
@@ -488,8 +601,10 @@ public class SegmentPlaybackController {
SponsorBlockViewController.hideSkipSegmentButton();
return;
}
segmentCurrentlyPlaying = segment;
skipSegmentButtonEndTime = 0;
if (Settings.SB_AUTO_HIDE_SKIP_BUTTON.get()) {
if (hiddenSkipSegmentsForCurrentVideoTime.contains(segment)) {
// Playback exited a nested segment and the outer segment skip button was previously hidden.
@@ -497,16 +612,13 @@ public class SegmentPlaybackController {
SponsorBlockViewController.hideSkipSegmentButton();
return;
}
skipSegmentButtonEndTime = System.currentTimeMillis() + DURATION_TO_SHOW_SKIP_BUTTON;
skipSegmentButtonEndTime = System.currentTimeMillis() + getSkipButtonDuration();
}
Logger.printDebug(() -> "Showing segment: " + segment);
SponsorBlockViewController.showSkipSegmentButton(segment);
}
private static SponsorSegment lastSegmentSkipped;
private static long lastSegmentSkippedTime;
private static void skipSegment(@NonNull SponsorSegment segmentToSkip, boolean userManuallySkipped) {
private static void skipSegment(SponsorSegment segmentToSkip, boolean userManuallySkipped) {
try {
SponsorBlockViewController.hideSkipHighlightButton();
SponsorBlockViewController.hideSkipSegmentButton();
@@ -525,7 +637,7 @@ public class SegmentPlaybackController {
}
}
Logger.printDebug(() -> "Skipping segment: " + segmentToSkip);
Logger.printDebug(() -> "Skipping segment: " + segmentToSkip + " videoState: " + VideoState.getCurrent());
lastSegmentSkipped = segmentToSkip;
lastSegmentSkippedTime = now;
setSegmentCurrentlyPlaying(null);
@@ -535,29 +647,39 @@ public class SegmentPlaybackController {
highlightSegmentInitialShowEndTime = 0;
}
// Set or update undo skip range.
Range<Long> range = segmentToSkip.getUndoRange();
if (undoAutoSkipRange == null) {
Logger.printDebug(() -> "Setting new undo range to: " + range);
undoAutoSkipRange = range;
} else {
Range<Long> extendedRange = undoAutoSkipRange.extend(range);
Logger.printDebug(() -> "Extending undo range from: " + undoAutoSkipRange +
" to: " + extendedRange);
undoAutoSkipRange = extendedRange;
}
undoAutoSkipRangeToast = undoAutoSkipRange;
// If the seek is successful, then the seek causes a recursive call back into this class.
final boolean seekSuccessful = VideoInformation.seekTo(segmentToSkip.end);
if (!seekSuccessful) {
// can happen when switching videos and is normal
// Can happen when switching videos and is normal.
Logger.printDebug(() -> "Could not skip segment (seek unsuccessful): " + segmentToSkip);
return;
}
final boolean videoIsPaused = VideoState.getCurrent() == VideoState.PAUSED;
if (!userManuallySkipped) {
// check for any smaller embedded segments, and count those as autoskipped
// Check for any smaller embedded segments, and count those as auto-skipped.
final boolean showSkipToast = Settings.SB_TOAST_ON_SKIP.get();
for (final SponsorSegment otherSegment : Objects.requireNonNull(segments)) {
for (SponsorSegment otherSegment : Objects.requireNonNull(segments)) {
if (segmentToSkip.end < otherSegment.start) {
break; // no other segments can be contained
break; // No other segments can be contained.
}
if (otherSegment == segmentToSkip ||
(otherSegment.category != SegmentCategory.HIGHLIGHT && segmentToSkip.containsSegment(otherSegment))) {
otherSegment.didAutoSkipped = true;
// Do not show a toast if the user is scrubbing thru a paused video.
// Cannot do this video state check in setTime or earlier in this method, as the video state may not be up to date.
// So instead, only hide toasts because all other skip logic done while paused causes no harm.
if (showSkipToast && !videoIsPaused) {
if (showSkipToast) {
showSkippedSegmentToast(otherSegment);
}
}
@@ -567,7 +689,7 @@ public class SegmentPlaybackController {
if (segmentToSkip.category == SegmentCategory.UNSUBMITTED) {
removeUnsubmittedSegments();
SponsorBlockUtils.setNewSponsorSegmentPreviewed();
} else if (!videoIsPaused) {
} else if (VideoState.getCurrent() != VideoState.PAUSED) {
SponsorBlockUtils.sendViewRequestAsync(segmentToSkip);
}
} catch (Exception ex) {
@@ -575,31 +697,49 @@ public class SegmentPlaybackController {
}
}
/**
* Checks if the segment should be auto-skipped _and_ if undo autoskip is not active.
*/
private static boolean shouldAutoSkipAndUndoSkipNotActive(SponsorSegment segment, long currentVideoTime) {
return segment.shouldAutoSkip() && (undoAutoSkipRange == null
|| !undoAutoSkipRange.contains(currentVideoTime));
}
private static int toastNumberOfSegmentsSkipped;
@Nullable
private static SponsorSegment toastSegmentSkipped;
private static void showSkippedSegmentToast(@NonNull SponsorSegment segment) {
private static void showSkippedSegmentToast(SponsorSegment segment) {
Utils.verifyOnMainThread();
toastNumberOfSegmentsSkipped++;
if (toastNumberOfSegmentsSkipped > 1) {
return; // toast already scheduled
}
toastSegmentSkipped = segment;
if (toastNumberOfSegmentsSkipped++ > 0) {
return; // Toast is already scheduled.
}
final long delayToToastMilliseconds = 250; // also the maximum time between skips to be considered skipping multiple segments
// Maximum time between skips to be considered skipping multiple segments.
final long delayToToastMilliseconds = 250;
Utils.runOnMainThreadDelayed(() -> {
try {
if (toastSegmentSkipped == null) { // video was changed just after skipping segment
// Do not show a toast if the user is scrubbing thru a paused video.
// Cannot do this video state check in setTime or before calling this this method,
// as the video state may not be up to date. So instead, only ignore the toast
// just before it's about to show since the video state is up to date.
if (VideoState.getCurrent() == VideoState.PAUSED) {
Logger.printDebug(() -> "Ignoring scheduled toast as video state is paused");
return;
}
if (PlayerType.getCurrent() == PlayerType.WATCH_WHILE_PICTURE_IN_PICTURE) {
Logger.printDebug(() -> "Not showing autoskip toast as playback is PiP");
return;
}
if (toastSegmentSkipped == null || undoAutoSkipRangeToast == null) {
// Video was changed immediately after skipping segment.
Logger.printDebug(() -> "Ignoring old scheduled show toast");
return;
}
Utils.showToastShort(toastNumberOfSegmentsSkipped == 1
String message = toastNumberOfSegmentsSkipped == 1
? toastSegmentSkipped.getSkippedToastText()
: str("revanced_sb_skipped_multiple_segments"));
} catch (Exception ex) {
Logger.printException(() -> "showSkippedSegmentToast failure", ex);
: str("revanced_sb_skipped_multiple_segments");
showAutoSkipToast(message, undoAutoSkipRangeToast);
} finally {
toastNumberOfSegmentsSkipped = 0;
toastSegmentSkipped = null;
@@ -607,13 +747,126 @@ public class SegmentPlaybackController {
}, delayToToastMilliseconds);
}
private static void showAutoSkipToast(String messageToToast, Range<Long> rangeToUndo) {
Objects.requireNonNull(messageToToast);
Utils.verifyOnMainThread();
Context currentContext = SponsorBlockViewController.getOverLaysViewGroupContext();
if (currentContext == null) {
Logger.printException(() -> "Cannot show toast (context is null): " + messageToToast);
return;
}
Logger.printDebug(() -> "Showing toast: " + messageToToast);
Dialog dialog = new Dialog(currentContext);
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
// Do not dismiss dialog if tapped outside the dialog bounds.
dialog.setCanceledOnTouchOutside(false);
LinearLayout mainLayout = new LinearLayout(currentContext);
mainLayout.setOrientation(LinearLayout.VERTICAL);
final int dip8 = dipToPixels(8);
final int dip16 = dipToPixels(16);
mainLayout.setPadding(dip16, dip8, dip16, dip8);
mainLayout.setGravity(Gravity.CENTER);
mainLayout.setMinimumHeight(dipToPixels(48));
ShapeDrawable background = new ShapeDrawable(new RoundRectShape(
Utils.createCornerRadii(20), null, null));
background.getPaint().setColor(Utils.getDialogBackgroundColor());
mainLayout.setBackground(background);
TextView textView = new TextView(currentContext);
textView.setText(messageToToast);
textView.setTextSize(14);
textView.setTextColor(Utils.getAppForegroundColor());
textView.setGravity(Gravity.CENTER);
LinearLayout.LayoutParams textParams = new LinearLayout.LayoutParams(
ViewGroup.LayoutParams.WRAP_CONTENT,
ViewGroup.LayoutParams.WRAP_CONTENT
);
textParams.gravity = Gravity.CENTER;
textView.setLayoutParams(textParams);
mainLayout.addView(textView);
mainLayout.setAlpha(0.8f); // Opacity for the entire dialog.
final int fadeDurationFast = Utils.getResourceInteger("fade_duration_fast");
Animation fadeIn = Utils.getResourceAnimation("fade_in");
Animation fadeOut = Utils.getResourceAnimation("fade_out");
fadeIn.setDuration(fadeDurationFast);
fadeOut.setDuration(fadeDurationFast);
fadeOut.setAnimationListener(new Animation.AnimationListener() {
public void onAnimationStart(Animation animation) { }
public void onAnimationEnd(Animation animation) {
if (dialog.isShowing()) {
dialog.dismiss();
}
}
public void onAnimationRepeat(Animation animation) { }
});
mainLayout.setOnClickListener(v -> {
try {
Logger.printDebug(() -> "Undoing autoskip using range: " + rangeToUndo);
// Restore undo autoskip range since it's already cleared by now.
undoAutoSkipRange = rangeToUndo;
VideoInformation.seekTo(rangeToUndo.getLower());
mainLayout.startAnimation(fadeOut);
} catch (Exception ex) {
Logger.printException(() -> "showToastShortWithTapAction setOnClickListener failure", ex);
dialog.dismiss();
}
});
mainLayout.setClickable(true);
dialog.setContentView(mainLayout);
Window window = dialog.getWindow();
if (window != null) {
// Remove window animations and use custom fade animation.
window.setWindowAnimations(0);
WindowManager.LayoutParams params = window.getAttributes();
params.gravity = Gravity.BOTTOM;
params.y = dipToPixels(72);
DisplayMetrics displayMetrics = Resources.getSystem().getDisplayMetrics();
int portraitWidth = (int) (displayMetrics.widthPixels * 0.6);
if (Resources.getSystem().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) {
portraitWidth = (int) Math.min(portraitWidth, displayMetrics.heightPixels * 0.6);
}
params.width = portraitWidth;
params.dimAmount = 0.0f;
window.setAttributes(params);
window.setBackgroundDrawable(null);
window.addFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL);
window.addFlags(WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH);
}
if (dismissUndoToast()) {
Logger.printDebug(() -> "Dismissed previous skip toast that was still on screen");
}
toastDialogRef = new WeakReference<>(dialog);
mainLayout.startAnimation(fadeIn);
dialog.show();
// Fade out and dismiss the dialog if the user does not undo the skip.
Utils.runOnMainThreadDelayed(() -> {
if (dialog.isShowing()) {
mainLayout.startAnimation(fadeOut);
}
}, getToastDuration());
}
/**
* @param segment can be either a highlight or a regular manual skip segment.
*/
public static void onSkipSegmentClicked(@NonNull SponsorSegment segment) {
public static void onSkipSegmentClicked(SponsorSegment segment) {
try {
if (segment != highlightSegment && segment != segmentCurrentlyPlaying) {
Logger.printException(() -> "error: segment not available to skip"); // should never happen
Logger.printException(() -> "error: segment not available to skip"); // Should never happen.
SponsorBlockViewController.hideSkipSegmentButton();
SponsorBlockViewController.hideSkipHighlightButton();
return;
@@ -628,7 +881,7 @@ public class SegmentPlaybackController {
* Injection point
*/
@SuppressWarnings("unused")
public static void setSponsorBarRect(final Object self) {
public static void setSponsorBarRect(Object self) {
try {
Field field = self.getClass().getDeclaredField("replaceMeWithsetSponsorBarRect");
field.setAccessible(true);
@@ -651,7 +904,7 @@ public class SegmentPlaybackController {
private static void setSponsorBarAbsoluteRight(Rect rect) {
final int right = rect.right;
if (sponsorAbsoluteBarRight != right) {
Logger.printDebug(() -> "setSponsorBarAbsoluteRight: " + right);
Logger.printDebug(() -> "setSponsorBarAbsoluteRight: " + right);
sponsorAbsoluteBarRight = right;
}
}
@@ -726,12 +979,6 @@ public class SegmentPlaybackController {
}
}
/**
* Actual screen pixel width to use for the highlight segment time bar.
*/
private static final int highlightSegmentTimeBarScreenWidth
= Utils.dipToPixels(HIGHLIGHT_SEGMENT_DRAW_BAR_WIDTH);
/**
* Injection point.
*/
@@ -752,9 +999,9 @@ public class SegmentPlaybackController {
final float left = leftPadding + segment.start * videoMillisecondsToPixels;
final float right;
if (segment.category == SegmentCategory.HIGHLIGHT) {
right = left + highlightSegmentTimeBarScreenWidth;
right = left + HIGHLIGHT_SEGMENT_DRAW_BAR_WIDTH;
} else {
right = leftPadding + segment.end * videoMillisecondsToPixels;
right = leftPadding + segment.end * videoMillisecondsToPixels;
}
canvas.drawRect(left, top, right, bottom, segment.category.paint);
}
@@ -762,5 +1009,4 @@ public class SegmentPlaybackController {
Logger.printException(() -> "drawSponsorTimeBars failure", ex);
}
}
}

View File

@@ -223,13 +223,18 @@ public class SponsorBlockUtils {
Logger.printException(() -> "invalid parameters");
return;
}
clearUnsubmittedSegmentTimes();
Utils.runOnBackgroundThread(() -> {
SBRequester.submitSegments(videoId, segmentCategory.keyValue, start, end, videoLength);
SegmentPlaybackController.executeDownloadSegments(videoId);
try {
SBRequester.submitSegments(videoId, segmentCategory.keyValue, start, end, videoLength);
SegmentPlaybackController.executeDownloadSegments(videoId);
} catch (Exception ex) {
Logger.printException(() -> "submitNewSegment failure", ex);
}
});
} catch (Exception e) {
Logger.printException(() -> "Unable to submit segment", e);
} catch (Exception ex) {
Logger.printException(() -> "submitNewSegment failure", ex);
}
}
@@ -366,7 +371,7 @@ public class SponsorBlockUtils {
}
static void sendViewRequestAsync(@NonNull SponsorSegment segment) {
static void sendViewRequestAsync(SponsorSegment segment) {
if (segment.recordedAsSkipped || segment.category == SegmentCategory.UNSUBMITTED) {
return;
}
@@ -409,7 +414,7 @@ public class SponsorBlockUtils {
return statsNumberFormatter.format(viewCount);
}
private static long parseSegmentTime(@NonNull String time) {
private static long parseSegmentTime(String time) {
Matcher matcher = manualEditTimePattern.matcher(time);
if (!matcher.matches()) {
return -1;
@@ -419,9 +424,12 @@ public class SponsorBlockUtils {
String secondsStr = matcher.group(4);
String millisecondsStr = matcher.group(6); // Milliseconds is optional.
try {
final int hours = (hoursStr != null) ? Integer.parseInt(hoursStr) : 0;
//noinspection ConstantConditions
final int minutes = Integer.parseInt(minutesStr);
//noinspection ConstantConditions
final int seconds = Integer.parseInt(secondsStr);
final int milliseconds;
if (millisecondsStr != null) {
@@ -468,32 +476,29 @@ public class SponsorBlockUtils {
}
public static String getTimeSavedString(long totalSecondsSaved) {
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {
Duration duration = Duration.ofSeconds(totalSecondsSaved);
final long hours = duration.toHours();
final long minutes = duration.toMinutes() % 60;
Duration duration = Duration.ofSeconds(totalSecondsSaved);
final long hours = duration.toHours();
final long minutes = duration.toMinutes() % 60;
// Format all numbers so non-western numbers use a consistent appearance.
String minutesFormatted = statsNumberFormatter.format(minutes);
if (hours > 0) {
String hoursFormatted = statsNumberFormatter.format(hours);
return str("revanced_sb_stats_saved_hour_format", hoursFormatted, minutesFormatted);
}
final long seconds = duration.getSeconds() % 60;
String secondsFormatted = statsNumberFormatter.format(seconds);
if (minutes > 0) {
return str("revanced_sb_stats_saved_minute_format", minutesFormatted, secondsFormatted);
}
return str("revanced_sb_stats_saved_second_format", secondsFormatted);
// Format all numbers so non-western numbers use a consistent appearance.
String minutesFormatted = statsNumberFormatter.format(minutes);
if (hours > 0) {
String hoursFormatted = statsNumberFormatter.format(hours);
return str("revanced_sb_stats_saved_hour_format", hoursFormatted, minutesFormatted);
}
return "error"; // will never be reached. YouTube requires Android O or greater
final long seconds = duration.getSeconds() % 60;
String secondsFormatted = statsNumberFormatter.format(seconds);
if (minutes > 0) {
return str("revanced_sb_stats_saved_minute_format", minutesFormatted, secondsFormatted);
}
return str("revanced_sb_stats_saved_second_format", secondsFormatted);
}
private static class EditByHandSaveDialogListener implements DialogInterface.OnClickListener {
boolean settingStart;
WeakReference<EditText> editTextRef = new WeakReference<>(null);
private boolean settingStart;
private WeakReference<EditText> editTextRef = new WeakReference<>(null);
@Override
public void onClick(DialogInterface dialog, int which) {
@@ -512,10 +517,11 @@ public class SponsorBlockUtils {
}
}
if (settingStart)
if (settingStart) {
newSponsorSegmentStartMillis = Math.max(time, 0);
else
} else {
newSponsorSegmentEndMillis = time;
}
if (which == DialogInterface.BUTTON_NEUTRAL)
editByHandDialogListener.onClick(dialog, settingStart ?

View File

@@ -9,7 +9,10 @@ import java.util.Objects;
import static app.revanced.extension.shared.StringRef.sf;
import android.util.Range;
public class SponsorSegment implements Comparable<SponsorSegment> {
public enum SegmentVote {
UPVOTE(sf("revanced_sb_vote_upvote"), 1,false),
DOWNVOTE(sf("revanced_sb_vote_downvote"), 0, true),
@@ -38,7 +41,7 @@ public class SponsorSegment implements Comparable<SponsorSegment> {
@NonNull
public final SegmentCategory category;
/**
* NULL if segment is unsubmitted
* NULL if segment is unsubmitted.
*/
@Nullable
public final String UUID;
@@ -64,33 +67,54 @@ public class SponsorSegment implements Comparable<SponsorSegment> {
}
/**
* @param nearThreshold threshold to declare the time parameter is near this segment. Must be a positive number
* @param nearThreshold threshold to declare the time parameter is near this segment. Must be a positive number.
*/
public boolean startIsNear(long videoTime, long nearThreshold) {
return Math.abs(start - videoTime) <= nearThreshold;
}
/**
* @param nearThreshold threshold to declare the time parameter is near this segment. Must be a positive number
* @param nearThreshold threshold to declare the time parameter is near this segment. Must be a positive number.
*/
public boolean endIsNear(long videoTime, long nearThreshold) {
return Math.abs(end - videoTime) <= nearThreshold;
}
/**
* @return if the time parameter is within this segment
* @return if the time parameter is within this segment.
*/
public boolean containsTime(long videoTime) {
return start <= videoTime && videoTime < end;
}
/**
* @return if the segment is completely contained inside this segment
* @return if the segment is completely contained inside this segment.
*/
public boolean containsSegment(SponsorSegment other) {
return start <= other.start && other.end <= end;
}
/**
* @return If the range has any overlap with this segment.
*/
public boolean intersectsRange(Range<Long> range) {
return range.getLower() < end && range.getUpper() >= start;
}
/**
* @return The start/end time in range form.
* Range times are adjusted since it uses inclusive and Segments use exclusive.
*
* {@link SegmentCategory#HIGHLIGHT} is unique and
* returns a range from the start of the video until the highlight.
*/
public Range<Long> getUndoRange() {
final long undoStart = category == SegmentCategory.HIGHLIGHT
? 0
: start;
return Range.create(undoStart, end - 1);
}
/**
* @return the length of this segment, in milliseconds. Always a positive number.
*/
@@ -99,7 +123,7 @@ public class SponsorSegment implements Comparable<SponsorSegment> {
}
/**
* @return 'skip segment' UI overlay button text
* @return 'skip segment' UI overlay button text.
*/
@NonNull
public String getSkipButtonText() {
@@ -107,7 +131,7 @@ public class SponsorSegment implements Comparable<SponsorSegment> {
}
/**
* @return 'skipped segment' toast message
* @return 'skipped segment' toast message.
*/
@NonNull
public String getSkippedToastText() {

View File

@@ -53,7 +53,7 @@ public class SBRequester {
private SBRequester() {
}
private static void handleConnectionError(@NonNull String toastMessage, @Nullable Exception ex) {
private static void handleConnectionError(String toastMessage, @Nullable Exception ex) {
if (Settings.SB_TOAST_ON_CONNECTION_ERROR.get()) {
Utils.showToastShort(toastMessage);
}
@@ -63,7 +63,7 @@ public class SBRequester {
}
@NonNull
public static SponsorSegment[] getSegments(@NonNull String videoId) {
public static SponsorSegment[] getSegments(String videoId) {
Utils.verifyOffMainThread();
List<SponsorSegment> segments = new ArrayList<>();
try {
@@ -113,10 +113,10 @@ public class SBRequester {
Logger.printException(() -> "getSegments failure", ex);
}
// Crude debug tests to verify random features
// Crude debug tests to verify random features.
// Could benefit from:
// 1) collection of YouTube videos with test segment times (verify client skip timing matches the video, verify seekbar draws correctly)
// 2) unit tests (verify everything else)
// 1) Collection of YouTube videos with test segment times (verify client skip timing matches the video, verify seekbar draws correctly).
// 2) Unit tests (verify everything else).
//noinspection ConstantValue
if (false) {
segments.clear();
@@ -140,10 +140,30 @@ public class SBRequester {
segments.add(new SponsorSegment(SegmentCategory.SELF_PROMO, "debug", 200000, 330000, false));
}
// Test undo skip functionality.
// To test enable 'Autoskip always' for intro and self promo.
//noinspection ConstantValue
if (false) {
// Should autoskip to 12 seconds.
// Undoing skip should seek to 2 seconds.
// Skip button should show at 2 seconds, and again at 8 seconds.
// Self promo at 8 second time should not autoskip.
segments.clear();
segments.add(new SponsorSegment(SegmentCategory.INTRO, "debug", 2000, 12000, false));
segments.add(new SponsorSegment(SegmentCategory.SELF_PROMO, "debug", 8000, 15000, false));
// Test multiple autoskip dialogs rapidly showing.
// Only one toast should be shown at anytime.
segments.add(new SponsorSegment(SegmentCategory.INTRO, "debug", 16000, 17000, false));
segments.add(new SponsorSegment(SegmentCategory.INTRO, "debug", 18000, 19000, false));
segments.add(new SponsorSegment(SegmentCategory.INTRO, "debug", 20000, 21000, false));
segments.add(new SponsorSegment(SegmentCategory.INTRO, "debug", 22000, 23000, false));
}
return segments.toArray(new SponsorSegment[0]);
}
public static void submitSegments(@NonNull String videoId, @NonNull String category,
public static void submitSegments(String videoId, String category,
long startTime, long endTime, long videoLength) {
Utils.verifyOffMainThread();
@@ -189,7 +209,7 @@ public class SBRequester {
}
}
public static void sendSegmentSkippedViewedRequest(@NonNull SponsorSegment segment) {
public static void sendSegmentSkippedViewedRequest(SponsorSegment segment) {
Utils.verifyOffMainThread();
try {
HttpURLConnection connection = getConnectionFromRoute(SBRoutes.VIEWED_SEGMENT, segment.UUID);
@@ -208,13 +228,13 @@ public class SBRequester {
}
}
public static void voteForSegmentOnBackgroundThread(@NonNull SponsorSegment segment, @NonNull SegmentVote voteOption) {
public static void voteForSegmentOnBackgroundThread(SponsorSegment segment, SegmentVote voteOption) {
voteOrRequestCategoryChange(segment, voteOption, null);
}
public static void voteToChangeCategoryOnBackgroundThread(@NonNull SponsorSegment segment, @NonNull SegmentCategory categoryToVoteFor) {
public static void voteToChangeCategoryOnBackgroundThread(SponsorSegment segment, SegmentCategory categoryToVoteFor) {
voteOrRequestCategoryChange(segment, SegmentVote.CATEGORY_CHANGE, categoryToVoteFor);
}
private static void voteOrRequestCategoryChange(@NonNull SponsorSegment segment, @NonNull SegmentVote voteOption, SegmentCategory categoryToVoteFor) {
private static void voteOrRequestCategoryChange(SponsorSegment segment, SegmentVote voteOption, SegmentCategory categoryToVoteFor) {
Utils.runOnBackgroundThread(() -> {
try {
String segmentUuid = segment.UUID;
@@ -280,7 +300,7 @@ public class SBRequester {
* @return NULL if the call was successful. If unsuccessful, an error message is returned.
*/
@Nullable
public static String setUsername(@NonNull String username) {
public static String setUsername(String username) {
Utils.verifyOffMainThread();
try {
HttpURLConnection connection = getConnectionFromRoute(SBRoutes.CHANGE_USERNAME, SponsorBlockSettings.getSBPrivateUserID(), username);
@@ -320,14 +340,14 @@ public class SBRequester {
// helpers
private static HttpURLConnection getConnectionFromRoute(@NonNull Route route, String... params) throws IOException {
private static HttpURLConnection getConnectionFromRoute(Route route, String... params) throws IOException {
HttpURLConnection connection = Requester.getConnectionFromRoute(Settings.SB_API_URL.get(), route, params);
connection.setConnectTimeout(TIMEOUT_TCP_DEFAULT_MILLISECONDS);
connection.setReadTimeout(TIMEOUT_HTTP_DEFAULT_MILLISECONDS);
return connection;
}
private static JSONObject getJSONObject(@NonNull Route route, String... params) throws IOException, JSONException {
private static JSONObject getJSONObject(Route route, String... params) throws IOException, JSONException {
return Requester.parseJSONObject(getConnectionFromRoute(route, params));
}
}

View File

@@ -1,6 +1,7 @@
package app.revanced.extension.youtube.sponsorblock.ui;
import static app.revanced.extension.shared.StringRef.str;
import static app.revanced.extension.youtube.sponsorblock.SegmentPlaybackController.SponsorBlockDuration;
import android.annotation.SuppressLint;
import android.app.Dialog;
@@ -28,6 +29,7 @@ import java.util.List;
import app.revanced.extension.shared.Logger;
import app.revanced.extension.shared.Utils;
import app.revanced.extension.shared.settings.preference.CustomDialogListPreference;
import app.revanced.extension.shared.settings.preference.ResettableEditTextPreference;
import app.revanced.extension.youtube.settings.Settings;
import app.revanced.extension.youtube.sponsorblock.SegmentPlaybackController;
@@ -62,6 +64,8 @@ public class SponsorBlockPreferenceGroup extends PreferenceGroup {
private SwitchPreference trackSkips;
private SwitchPreference showTimeWithoutSegments;
private SwitchPreference toastOnConnectionError;
private CustomDialogListPreference autoHideSkipSegmentButtonDuration;
private CustomDialogListPreference showSkipToastDuration;
private ResettableEditTextPreference newSegmentStep;
private ResettableEditTextPreference minSegmentDuration;
@@ -69,8 +73,8 @@ public class SponsorBlockPreferenceGroup extends PreferenceGroup {
private EditTextPreference importExport;
private Preference apiUrl;
private final List<SegmentCategoryListPreference> segmentCategories = new ArrayList<>();
private PreferenceCategory segmentCategory;
private final List<SegmentCategoryListPreference> segmentCategories = new ArrayList<>();
public SponsorBlockPreferenceGroup(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
@@ -114,17 +118,23 @@ public class SponsorBlockPreferenceGroup extends PreferenceGroup {
votingEnabled.setChecked(Settings.SB_VOTING_BUTTON.get());
votingEnabled.setEnabled(enabled);
autoHideSkipSegmentButton.setEnabled(enabled);
autoHideSkipSegmentButton.setChecked(Settings.SB_AUTO_HIDE_SKIP_BUTTON.get());
autoHideSkipSegmentButton.setEnabled(enabled);
autoHideSkipSegmentButtonDuration.setValue(Settings.SB_AUTO_HIDE_SKIP_BUTTON_DURATION.get().toString());
autoHideSkipSegmentButtonDuration.setEnabled(Settings.SB_AUTO_HIDE_SKIP_BUTTON_DURATION.isAvailable());
compactSkipButton.setChecked(Settings.SB_COMPACT_SKIP_BUTTON.get());
compactSkipButton.setEnabled(enabled);
showSkipToast.setChecked(Settings.SB_TOAST_ON_SKIP.get());
showSkipToast.setEnabled(enabled);
squareLayout.setChecked(Settings.SB_SQUARE_LAYOUT.get());
squareLayout.setEnabled(enabled);
showSkipToast.setChecked(Settings.SB_TOAST_ON_SKIP.get());
showSkipToast.setEnabled(enabled);
showSkipToastDuration.setValue(Settings.SB_TOAST_ON_SKIP_DURATION.get().toString());
showSkipToastDuration.setEnabled(Settings.SB_TOAST_ON_SKIP_DURATION.isAvailable());
toastOnConnectionError.setChecked(Settings.SB_TOAST_ON_CONNECTION_ERROR.get());
toastOnConnectionError.setEnabled(enabled);
@@ -166,7 +176,7 @@ public class SponsorBlockPreferenceGroup extends PreferenceGroup {
try {
super.onAttachedToActivity();
if (preferencesInitialized) {
if (preferencesInitialized) {
if (settingsImported) {
settingsImported = false;
updateUI();
@@ -205,17 +215,6 @@ public class SponsorBlockPreferenceGroup extends PreferenceGroup {
});
appearanceCategory.addPreference(votingEnabled);
autoHideSkipSegmentButton = new SwitchPreference(context);
autoHideSkipSegmentButton.setTitle(str("revanced_sb_enable_auto_hide_skip_segment_button"));
autoHideSkipSegmentButton.setSummaryOn(str("revanced_sb_enable_auto_hide_skip_segment_button_sum_on"));
autoHideSkipSegmentButton.setSummaryOff(str("revanced_sb_enable_auto_hide_skip_segment_button_sum_off"));
autoHideSkipSegmentButton.setOnPreferenceChangeListener((preference1, newValue) -> {
Settings.SB_AUTO_HIDE_SKIP_BUTTON.save((Boolean) newValue);
updateUI();
return true;
});
appearanceCategory.addPreference(autoHideSkipSegmentButton);
compactSkipButton = new SwitchPreference(context);
compactSkipButton.setTitle(str("revanced_sb_enable_compact_skip_button"));
compactSkipButton.setSummaryOn(str("revanced_sb_enable_compact_skip_button_sum_on"));
@@ -227,25 +226,38 @@ public class SponsorBlockPreferenceGroup extends PreferenceGroup {
});
appearanceCategory.addPreference(compactSkipButton);
squareLayout = new SwitchPreference(context);
squareLayout.setTitle(str("revanced_sb_square_layout"));
squareLayout.setSummaryOn(str("revanced_sb_square_layout_sum_on"));
squareLayout.setSummaryOff(str("revanced_sb_square_layout_sum_off"));
squareLayout.setOnPreferenceChangeListener((preference1, newValue) -> {
Settings.SB_SQUARE_LAYOUT.save((Boolean) newValue);
autoHideSkipSegmentButton = new SwitchPreference(context);
autoHideSkipSegmentButton.setTitle(str("revanced_sb_enable_auto_hide_skip_segment_button"));
autoHideSkipSegmentButton.setSummaryOn(str("revanced_sb_enable_auto_hide_skip_segment_button_sum_on"));
autoHideSkipSegmentButton.setSummaryOff(str("revanced_sb_enable_auto_hide_skip_segment_button_sum_off"));
autoHideSkipSegmentButton.setOnPreferenceChangeListener((preference1, newValue) -> {
Settings.SB_AUTO_HIDE_SKIP_BUTTON.save((Boolean) newValue);
updateUI();
return true;
});
appearanceCategory.addPreference(squareLayout);
appearanceCategory.addPreference(autoHideSkipSegmentButton);
String[] durationEntries = Utils.getResourceStringArray("revanced_sb_duration_entries");
String[] durationEntryValues = Utils.getResourceStringArray("revanced_sb_duration_entry_values");
autoHideSkipSegmentButtonDuration = new CustomDialogListPreference(context);
autoHideSkipSegmentButtonDuration.setTitle(str("revanced_sb_auto_hide_skip_button_duration"));
autoHideSkipSegmentButtonDuration.setSummary(str("revanced_sb_auto_hide_skip_button_duration_sum"));
autoHideSkipSegmentButtonDuration.setEntries(durationEntries);
autoHideSkipSegmentButtonDuration.setEntryValues(durationEntryValues);
autoHideSkipSegmentButtonDuration.setOnPreferenceChangeListener((preference1, newValue) -> {
Settings.SB_AUTO_HIDE_SKIP_BUTTON_DURATION.save(
SponsorBlockDuration.valueOf((String) newValue)
);
updateUI();
return true;
});
appearanceCategory.addPreference(autoHideSkipSegmentButtonDuration);
showSkipToast = new SwitchPreference(context);
showSkipToast.setTitle(str("revanced_sb_general_skiptoast"));
showSkipToast.setSummaryOn(str("revanced_sb_general_skiptoast_sum_on"));
showSkipToast.setSummaryOff(str("revanced_sb_general_skiptoast_sum_off"));
showSkipToast.setOnPreferenceClickListener(preference1 -> {
Utils.showToastShort(str("revanced_sb_skipped_sponsor"));
return false;
});
showSkipToast.setOnPreferenceChangeListener((preference1, newValue) -> {
Settings.SB_TOAST_ON_SKIP.save((Boolean) newValue);
updateUI();
@@ -253,6 +265,20 @@ public class SponsorBlockPreferenceGroup extends PreferenceGroup {
});
appearanceCategory.addPreference(showSkipToast);
showSkipToastDuration = new CustomDialogListPreference(context);
showSkipToastDuration.setTitle(str("revanced_sb_toast_on_skip_duration"));
showSkipToastDuration.setSummary(str("revanced_sb_toast_on_skip_duration_sum"));
showSkipToastDuration.setEntries(durationEntries);
showSkipToastDuration.setEntryValues(durationEntryValues);
showSkipToastDuration.setOnPreferenceChangeListener((preference1, newValue) -> {
Settings.SB_TOAST_ON_SKIP_DURATION.save(
SponsorBlockDuration.valueOf((String) newValue)
);
updateUI();
return true;
});
appearanceCategory.addPreference(showSkipToastDuration);
showTimeWithoutSegments = new SwitchPreference(context);
showTimeWithoutSegments.setTitle(str("revanced_sb_general_time_without"));
showTimeWithoutSegments.setSummaryOn(str("revanced_sb_general_time_without_sum_on"));
@@ -264,6 +290,17 @@ public class SponsorBlockPreferenceGroup extends PreferenceGroup {
});
appearanceCategory.addPreference(showTimeWithoutSegments);
squareLayout = new SwitchPreference(context);
squareLayout.setTitle(str("revanced_sb_square_layout"));
squareLayout.setSummaryOn(str("revanced_sb_square_layout_sum_on"));
squareLayout.setSummaryOff(str("revanced_sb_square_layout_sum_off"));
squareLayout.setOnPreferenceChangeListener((preference1, newValue) -> {
Settings.SB_SQUARE_LAYOUT.save((Boolean) newValue);
updateUI();
return true;
});
appearanceCategory.addPreference(squareLayout);
segmentCategory = new PreferenceCategory(context);
segmentCategory.setTitle(str("revanced_sb_diff_segments"));
addPreference(segmentCategory);

View File

@@ -203,7 +203,7 @@ public class SponsorBlockViewController {
setSkipButtonMargins(skipSponsorButton, isWatchFullScreen);
setViewVisibility(skipSponsorButton, skipSegment != null);
} catch (Exception ex) {
Logger.printException(() -> "Player type changed failure", ex);
Logger.printException(() -> "playerTypeChanged failure", ex);
}
}

View File

@@ -1,5 +1,5 @@
plugins {
id(libs.plugins.android.library.get().pluginId)
alias(libs.plugins.android.library)
}
android {

View File

@@ -3,4 +3,4 @@ org.gradle.jvmargs = -Xms512M -Xmx2048M
org.gradle.parallel = true
android.useAndroidX = true
kotlin.code.style = official
version = 5.29.0-dev.10
version = 5.31.0-dev.5

View File

@@ -11,15 +11,25 @@ appcompat = "1.7.0"
okhttp = "5.0.0-alpha.14"
retrofit = "2.11.0"
guava = "33.4.0-jre"
protobuf-javalite = "4.31.1"
protoc = "4.31.1"
protobuf = "0.9.5"
antlr4 = "4.13.2"
nanohttpd = "2.3.1"
apksig = "8.10.1"
[libraries]
annotation = { module = "androidx.annotation:annotation", version.ref = "annotation" }
antlr4 = { module = "org.antlr:antlr4", version.ref = "antlr4" }
appcompat = { group = "androidx.appcompat", name = "appcompat", version.ref = "appcompat" }
nanohttpd = { module = "org.nanohttpd:nanohttpd", version.ref = "nanohttpd" }
okhttp = { module = "com.squareup.okhttp3:okhttp", version.ref = "okhttp" }
protobuf-javalite = { module = "com.google.protobuf:protobuf-javalite", version.ref = "protobuf-javalite" }
protobuf-protoc = { module = "com.google.protobuf:protoc", version.ref = "protoc" }
retrofit = { module = "com.squareup.retrofit2:retrofit", version.ref = "retrofit" }
guava = { module = "com.google.guava:guava", version.ref = "guava" }
apksig = { group = "com.android.tools.build", name = "apksig", version.ref = "apksig" }
[plugins]
android-library = { id = "com.android.library", version.ref = "agp" }
android-library = { id = "com.android.library" }
protobuf = { id = "com.google.protobuf", version.ref = "protobuf" }

View File

@@ -1,8 +1,6 @@
#Mon Jun 16 14:39:32 CEST 2025
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionSha256Sum=d725d707bfabd4dfdc958c624003b3c80accc03f7037b5122c4b1d0ef15cecab
distributionUrl=https\://services.gradle.org/distributions/gradle-8.9-bin.zip
networkTimeout=10000
validateDistributionUrl=true
distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.2-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists

1318
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -4,6 +4,6 @@
"@semantic-release/changelog": "^6.0.3",
"@semantic-release/git": "^10.0.1",
"gradle-semantic-release-plugin": "^1.10.1",
"semantic-release": "^24.2.5"
"semantic-release": "^24.2.6"
}
}

View File

@@ -164,6 +164,10 @@ public final class app/revanced/patches/cieid/restrictions/root/BypassRootChecks
public static final fun getBypassRootChecksPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
}
public final class app/revanced/patches/cricbuzz/ads/DisableAdsPatchKt {
public static final fun getDisableAdsPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
}
public final class app/revanced/patches/crunchyroll/ads/HideAdsPatchKt {
public static final fun getHideAdsPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
}
@@ -641,10 +645,10 @@ public final class app/revanced/patches/shared/misc/extension/ExtensionHook {
}
public final class app/revanced/patches/shared/misc/extension/SharedExtensionPatchKt {
public static final fun extensionHook (Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lapp/revanced/patcher/Fingerprint;)Lapp/revanced/patches/shared/misc/extension/ExtensionHook;
public static final fun extensionHook (Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;)Lapp/revanced/patches/shared/misc/extension/ExtensionHook;
public static synthetic fun extensionHook$default (Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lapp/revanced/patcher/Fingerprint;ILjava/lang/Object;)Lapp/revanced/patches/shared/misc/extension/ExtensionHook;
public static synthetic fun extensionHook$default (Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)Lapp/revanced/patches/shared/misc/extension/ExtensionHook;
public static final fun extensionHook (Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;Lapp/revanced/patcher/Fingerprint;)Lapp/revanced/patches/shared/misc/extension/ExtensionHook;
public static final fun extensionHook (Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function1;)Lapp/revanced/patches/shared/misc/extension/ExtensionHook;
public static synthetic fun extensionHook$default (Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;Lapp/revanced/patcher/Fingerprint;ILjava/lang/Object;)Lapp/revanced/patches/shared/misc/extension/ExtensionHook;
public static synthetic fun extensionHook$default (Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)Lapp/revanced/patches/shared/misc/extension/ExtensionHook;
public static final fun sharedExtensionPatch (Ljava/lang/String;[Lapp/revanced/patches/shared/misc/extension/ExtensionHook;)Lapp/revanced/patcher/patch/BytecodePatch;
public static final fun sharedExtensionPatch ([Lapp/revanced/patches/shared/misc/extension/ExtensionHook;)Lapp/revanced/patcher/patch/BytecodePatch;
}
@@ -664,17 +668,39 @@ public final class app/revanced/patches/shared/misc/gms/GmsCoreSupportPatchKt {
public static synthetic fun gmsCoreSupportResourcePatch$default (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lapp/revanced/patcher/patch/Option;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)Lapp/revanced/patcher/patch/ResourcePatch;
}
public final class app/revanced/patches/shared/misc/hex/HexPatchKt {
public static final fun hexPatch (Lkotlin/jvm/functions/Function0;)Lapp/revanced/patcher/patch/RawResourcePatch;
public final class app/revanced/patches/shared/misc/hex/HexPatchBuilder : java/util/Set, kotlin/jvm/internal/markers/KMappedMarker {
public fun <init> ()V
public fun add (Lapp/revanced/patches/shared/misc/hex/Replacement;)Z
public synthetic fun add (Ljava/lang/Object;)Z
public fun addAll (Ljava/util/Collection;)Z
public final fun asPatternTo (Ljava/lang/String;Ljava/lang/String;)Lkotlin/Pair;
public fun clear ()V
public fun contains (Lapp/revanced/patches/shared/misc/hex/Replacement;)Z
public final fun contains (Ljava/lang/Object;)Z
public fun containsAll (Ljava/util/Collection;)Z
public fun getSize ()I
public final fun inFile (Lkotlin/Pair;Ljava/lang/String;)V
public fun isEmpty ()Z
public fun iterator ()Ljava/util/Iterator;
public fun remove (Ljava/lang/Object;)Z
public fun removeAll (Ljava/util/Collection;)Z
public fun retainAll (Ljava/util/Collection;)Z
public final fun size ()I
public fun toArray ()[Ljava/lang/Object;
public fun toArray ([Ljava/lang/Object;)[Ljava/lang/Object;
}
public final class app/revanced/patches/shared/misc/hex/HexPatchBuilderKt {
public static final fun hexPatch (ZLkotlin/jvm/functions/Function0;)Lapp/revanced/patcher/patch/RawResourcePatch;
public static final fun hexPatch (ZLkotlin/jvm/functions/Function1;)Lapp/revanced/patcher/patch/RawResourcePatch;
public static synthetic fun hexPatch$default (ZLkotlin/jvm/functions/Function0;ILjava/lang/Object;)Lapp/revanced/patcher/patch/RawResourcePatch;
public static synthetic fun hexPatch$default (ZLkotlin/jvm/functions/Function1;ILjava/lang/Object;)Lapp/revanced/patcher/patch/RawResourcePatch;
}
public final class app/revanced/patches/shared/misc/hex/Replacement {
public static final field Companion Lapp/revanced/patches/shared/misc/hex/Replacement$Companion;
public fun <init> (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
public final fun replacePattern ([B)V
}
public final class app/revanced/patches/shared/misc/hex/Replacement$Companion {
public fun <init> ([B[BLjava/lang/String;)V
public final fun getReplacementBytesPadded ()[B
}
public final class app/revanced/patches/shared/misc/mapping/ResourceElement {
@@ -918,6 +944,10 @@ public final class app/revanced/patches/spotify/misc/extension/ExtensionPatchKt
public static final fun getSharedExtensionPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
}
public final class app/revanced/patches/spotify/misc/fix/SpoofClientPatchKt {
public static final fun getSpoofClientPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
}
public final class app/revanced/patches/spotify/misc/fix/SpoofPackageInfoPatchKt {
public static final fun getSpoofPackageInfoPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
}

View File

@@ -3,7 +3,7 @@ package app.revanced.patches.all.misc.hex
import app.revanced.patcher.patch.PatchException
import app.revanced.patcher.patch.rawResourcePatch
import app.revanced.patcher.patch.stringsOption
import app.revanced.patches.shared.misc.hex.Replacement
import app.revanced.patches.shared.misc.hex.HexPatchBuilder
import app.revanced.patches.shared.misc.hex.hexPatch
import app.revanced.util.Utils.trimIndentMultiline
@@ -13,44 +13,42 @@ val hexPatch = rawResourcePatch(
description = "Replaces a hexadecimal patterns of bytes of files in an APK.",
use = false,
) {
// TODO: Instead of stringArrayOption, use a custom option type to work around
// https://github.com/ReVanced/revanced-library/issues/48.
// Replace the custom option type with a stringArrayOption once the issue is resolved.
val replacements by stringsOption(
key = "replacements",
title = "Replacements",
description = """
Hexadecimal patterns to search for and replace with another in a target file.
A pattern is a sequence of case insensitive strings, each representing hexadecimal bytes, separated by spaces.
An example pattern is 'aa 01 02 FF'.
Every pattern must be followed by a pipe ('|'), the replacement pattern,
another pipe ('|'), and the path to the file to make the changes in relative to the APK root.
The replacement pattern must have the same length as the original pattern.
The replacement pattern must be shorter or equal in length to the pattern.
Full example of a valid input:
'aa 01 02 FF|00 00 00 00|path/to/file'
Full example of a valid replacement:
'01 02 aa FF|03 04|path/to/file'
""".trimIndentMultiline(),
required = true,
)
dependsOn(
hexPatch {
replacements!!.map { from ->
val (pattern, replacementPattern, targetFilePath) = try {
from.split("|", limit = 3)
} catch (e: Exception) {
throw PatchException(
"Invalid input: $from.\n" +
"Every pattern must be followed by a pipe ('|'), " +
"the replacement pattern, another pipe ('|'), " +
"and the path to the file to make the changes in relative to the APK root. ",
)
hexPatch(
block = fun HexPatchBuilder.() {
replacements!!.forEach { replacement ->
try {
val (pattern, replacementPattern, targetFilePath) = replacement.split("|", limit = 3)
pattern asPatternTo replacementPattern inFile targetFilePath
} catch (e: Exception) {
throw PatchException(
"Invalid replacement: $replacement.\n" +
"Every pattern must be followed by a pipe ('|'), " +
"the replacement pattern, another pipe ('|'), " +
"and the path to the file to make the changes in relative to the APK root. ",
)
}
}
Replacement(pattern, replacementPattern, targetFilePath)
}.toSet()
},
},
)
)
}

View File

@@ -0,0 +1,27 @@
package app.revanced.patches.cricbuzz.ads
import app.revanced.patcher.extensions.InstructionExtensions.addInstruction
import app.revanced.patcher.extensions.InstructionExtensions.getInstruction
import app.revanced.patcher.patch.bytecodePatch
import app.revanced.util.indexOfFirstInstructionOrThrow
import com.android.tools.smali.dexlib2.Opcode
import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
@Suppress("unused")
val disableAdsPatch = bytecodePatch (
name = "Hide ads",
) {
compatibleWith("com.cricbuzz.android"("6.23.02"))
execute {
userStateSwitchFingerprint.method.apply {
val opcodeIndex = indexOfFirstInstructionOrThrow(Opcode.MOVE_RESULT_OBJECT)
val register = getInstruction<OneRegisterInstruction>(opcodeIndex).registerA
addInstruction(
opcodeIndex + 1,
"const-string v$register, \"ACTIVE\""
)
}
}
}

View File

@@ -0,0 +1,9 @@
package app.revanced.patches.cricbuzz.ads
import app.revanced.patcher.fingerprint
import com.android.tools.smali.dexlib2.Opcode
internal val userStateSwitchFingerprint = fingerprint {
strings("key.user.state", "NA")
opcodes(Opcode.SPARSE_SWITCH)
}

View File

@@ -7,7 +7,7 @@ import app.revanced.patcher.patch.bytecodePatch
val disableMandatoryLoginPatch = bytecodePatch(
name = "Disable mandatory login",
) {
compatibleWith("com.adobe.lrmobile"("10.0.2"))
compatibleWith("com.adobe.lrmobile"("9.3.0"))
execute {
isLoggedInFingerprint.method.apply {

View File

@@ -7,7 +7,7 @@ import app.revanced.patcher.patch.bytecodePatch
val unlockPremiumPatch = bytecodePatch(
name = "Unlock Premium",
) {
compatibleWith("com.adobe.lrmobile"("10.0.2"))
compatibleWith("com.adobe.lrmobile"("9.3.0"))
execute {
// Set hasPremium = true.

View File

@@ -87,8 +87,8 @@ fun sharedExtensionPatch(
class ExtensionHook internal constructor(
internal val fingerprint: Fingerprint,
private val insertIndexResolver: ((Method) -> Int),
private val contextRegisterResolver: (Method) -> String,
private val insertIndexResolver: BytecodePatchContext.(Method) -> Int,
private val contextRegisterResolver: BytecodePatchContext.(Method) -> String,
) {
context(BytecodePatchContext)
operator fun invoke(extensionClassDescriptor: String) {
@@ -98,19 +98,19 @@ class ExtensionHook internal constructor(
fingerprint.method.addInstruction(
insertIndex,
"invoke-static/range { $contextRegister .. $contextRegister }, " +
"$extensionClassDescriptor->setContext(Landroid/content/Context;)V",
"$extensionClassDescriptor->setContext(Landroid/content/Context;)V",
)
}
}
fun extensionHook(
insertIndexResolver: ((Method) -> Int) = { 0 },
contextRegisterResolver: (Method) -> String = { "p0" },
insertIndexResolver: BytecodePatchContext.(Method) -> Int = { 0 },
contextRegisterResolver: BytecodePatchContext.(Method) -> String = { "p0" },
fingerprint: Fingerprint,
) = ExtensionHook(fingerprint, insertIndexResolver, contextRegisterResolver)
fun extensionHook(
insertIndexResolver: ((Method) -> Int) = { 0 },
contextRegisterResolver: (Method) -> String = { "p0" },
insertIndexResolver: BytecodePatchContext.(Method) -> Int = { 0 },
contextRegisterResolver: BytecodePatchContext.(Method) -> String = { "p0" },
fingerprintBuilderBlock: FingerprintBuilder.() -> Unit,
) = extensionHook(insertIndexResolver, contextRegisterResolver, fingerprint(block = fingerprintBuilderBlock))

View File

@@ -1,123 +0,0 @@
package app.revanced.patches.shared.misc.hex
import app.revanced.patcher.patch.PatchException
import app.revanced.patcher.patch.rawResourcePatch
import kotlin.math.max
// The replacements being passed using a function is intended.
// Previously the replacements were a property of the patch. Getter were being delegated to that property.
// This late evaluation was being leveraged in app.revanced.patches.all.misc.hex.HexPatch.
// Without the function, the replacements would be evaluated at the time of patch creation.
// This isn't possible because the delegated property is not accessible at that time.
fun hexPatch(replacementsSupplier: () -> Set<Replacement>) = rawResourcePatch {
execute {
replacementsSupplier().groupBy { it.targetFilePath }.forEach { (targetFilePath, replacements) ->
val targetFile = try {
get(targetFilePath, true)
} catch (e: Exception) {
throw PatchException("Could not find target file: $targetFilePath")
}
// TODO: Use a file channel to read and write the file instead of reading the whole file into memory,
// in order to reduce memory usage.
val targetFileBytes = targetFile.readBytes()
replacements.forEach { replacement ->
replacement.replacePattern(targetFileBytes)
}
targetFile.writeBytes(targetFileBytes)
}
}
}
/**
* Represents a pattern to search for and its replacement pattern.
*
* @property pattern The pattern to search for.
* @property replacementPattern The pattern to replace the [pattern] with.
* @property targetFilePath The path to the file to make the changes in relative to the APK root.
*/
class Replacement(
private val pattern: String,
replacementPattern: String,
internal val targetFilePath: String,
) {
private val patternBytes = pattern.toByteArrayPattern()
private val replacementPattern = replacementPattern.toByteArrayPattern()
init {
if (this.patternBytes.size != this.replacementPattern.size) {
throw PatchException("Pattern and replacement pattern must have the same length: $pattern")
}
}
/**
* Replaces the [patternBytes] with the [replacementPattern] in the [targetFileBytes].
*
* @param targetFileBytes The bytes of the file to make the changes in.
*/
fun replacePattern(targetFileBytes: ByteArray) {
val startIndex = indexOfPatternIn(targetFileBytes)
if (startIndex == -1) {
throw PatchException("Pattern not found in target file: $pattern")
}
replacementPattern.copyInto(targetFileBytes, startIndex)
}
// TODO: Allow searching in a file channel instead of a byte array to reduce memory usage.
/**
* Returns the index of the first occurrence of [patternBytes] in the haystack
* using the Boyer-Moore algorithm.
*
* @param haystack The array to search in.
*
* @return The index of the first occurrence of the [patternBytes] in the haystack or -1
* if the [patternBytes] is not found.
*/
private fun indexOfPatternIn(haystack: ByteArray): Int {
val needle = patternBytes
val haystackLength = haystack.size - 1
val needleLength = needle.size - 1
val right = IntArray(256) { -1 }
for (i in 0 until needleLength) right[needle[i].toInt().and(0xFF)] = i
var skip: Int
for (i in 0..haystackLength - needleLength) {
skip = 0
for (j in needleLength - 1 downTo 0) {
if (needle[j] != haystack[i + j]) {
skip = max(1, j - right[haystack[i + j].toInt().and(0xFF)])
break
}
}
if (skip == 0) return i
}
return -1
}
companion object {
/**
* Convert a string representing a pattern of hexadecimal bytes to a byte array.
*
* @return The byte array representing the pattern.
* @throws PatchException If the pattern is invalid.
*/
private fun String.toByteArrayPattern() = try {
split(" ").map { it.toInt(16).toByte() }.toByteArray()
} catch (e: NumberFormatException) {
throw PatchException(
"Could not parse pattern: $this. A pattern is a sequence of case insensitive strings " +
"representing hexadecimal bytes separated by spaces",
e,
)
}
}
}

View File

@@ -0,0 +1,154 @@
package app.revanced.patches.shared.misc.hex
import app.revanced.patcher.patch.PatchException
import app.revanced.patcher.patch.rawResourcePatch
import kotlin.collections.component1
import kotlin.collections.component2
import kotlin.math.max
fun hexPatch(ignoreMissingTargetFiles: Boolean = false, block: HexPatchBuilder.() -> Unit) =
hexPatch(ignoreMissingTargetFiles, fun(): Set<Replacement> = HexPatchBuilder().apply(block))
@Suppress("JavaDefaultMethodsNotOverriddenByDelegation")
class HexPatchBuilder internal constructor(
private val replacements: MutableSet<Replacement> = mutableSetOf(),
) : Set<Replacement> by replacements {
infix fun String.asPatternTo(replacementPattern: String) = byteArrayOf(this) to byteArrayOf(replacementPattern)
infix fun <T> Pair<T, T>.inFile(filePath: String) {
if (first is String && second is String) {
val first = first as String
val second = second as String
replacements += Replacement(
first.toByteArray(), second.toByteArray(),
filePath
)
} else if (first is ByteArray && second is ByteArray) {
val first = first as ByteArray
val second = second as ByteArray
replacements += Replacement(first, second, filePath)
} else {
throw PatchException("Unsupported types for pattern and replacement: $first, $second")
}
}
}
// The replacements being passed using a function is intended.
// Previously the replacements were a property of the patch. Getter were being delegated to that property.
// This late evaluation was being leveraged in app.revanced.patches.all.misc.hex.HexPatch.
// Without the function, the replacements would be evaluated at the time of patch creation.
// This isn't possible because the delegated property is not accessible at that time.
@Deprecated("Use the hexPatch function with the builder parameter instead.")
fun hexPatch(ignoreMissingTargetFiles: Boolean = false, replacementsSupplier: () -> Set<Replacement>) =
rawResourcePatch {
execute {
replacementsSupplier().groupBy { it.targetFilePath }.forEach { (targetFilePath, replacements) ->
val targetFile = get(targetFilePath, true)
if (ignoreMissingTargetFiles && !targetFile.exists()) return@forEach
// TODO: Use a file channel to read and write the file instead of reading the whole file into memory,
// in order to reduce memory usage.
val targetFileBytes = targetFile.readBytes()
replacements.forEach { it.replacePattern(targetFileBytes) }
targetFile.writeBytes(targetFileBytes)
}
}
}
/**
* Represents a pattern to search for and its replacement pattern in a file.
*
* @property bytes The bytes to search for.
* @property replacementBytes The bytes to replace the [bytes] with.
* @property targetFilePath The path to the file to make the changes in relative to the APK root.
*/
class Replacement(
private val bytes: ByteArray,
replacementBytes: ByteArray,
internal val targetFilePath: String,
) {
val replacementBytesPadded = replacementBytes + ByteArray(bytes.size - replacementBytes.size)
@Deprecated("Use the constructor with ByteArray parameters instead.")
constructor(
pattern: String,
replacementPattern: String,
targetFilePath: String,
) : this(
byteArrayOf(pattern),
byteArrayOf(replacementPattern),
targetFilePath
)
/**
* Replaces the [bytes] with the [replacementBytes] in the [targetFileBytes].
*
* @param targetFileBytes The bytes of the file to make the changes in.
*/
internal fun replacePattern(targetFileBytes: ByteArray) {
val startIndex = indexOfPatternIn(targetFileBytes)
if (startIndex == -1) {
throw PatchException(
"Pattern not found in target file: " +
bytes.joinToString(" ") { "%02x".format(it) }
)
}
replacementBytesPadded.copyInto(targetFileBytes, startIndex)
}
// TODO: Allow searching in a file channel instead of a byte array to reduce memory usage.
/**
* Returns the index of the first occurrence of [bytes] in the haystack
* using the Boyer-Moore algorithm.
*
* @param haystack The array to search in.
*
* @return The index of the first occurrence of the [bytes] in the haystack or -1
* if the [bytes] is not found.
*/
private fun indexOfPatternIn(haystack: ByteArray): Int {
val needle = bytes
val haystackLength = haystack.size - 1
val needleLength = needle.size - 1
val right = IntArray(256) { -1 }
for (i in 0 until needleLength) right[needle[i].toInt().and(0xFF)] = i
var skip: Int
for (i in 0..haystackLength - needleLength) {
skip = 0
for (j in needleLength - 1 downTo 0) {
if (needle[j] != haystack[i + j]) {
skip = max(1, j - right[haystack[i + j].toInt().and(0xFF)])
break
}
}
if (skip == 0) return i
}
return -1
}
}
/**
* Convert a string representing a pattern of hexadecimal bytes to a byte array.
*
* @return The byte array representing the pattern.
* @throws PatchException If the pattern is invalid.
*/
private fun byteArrayOf(pattern: String) = try {
pattern.split(" ").map { it.toInt(16).toByte() }.toByteArray()
} catch (e: NumberFormatException) {
throw PatchException(
"Could not parse pattern: $pattern. A pattern is a sequence of case insensitive strings " +
"representing hexadecimal bytes separated by spaces",
e,
)
}

View File

@@ -12,7 +12,7 @@ import app.revanced.patches.soundcloud.shared.featureConstructorFingerprint
val hideAdsPatch = bytecodePatch(
name = "Hide ads",
) {
compatibleWith("com.soundcloud.android")
compatibleWith("com.soundcloud.android"("2025.05.27-release"))
execute {
// Enable a preset feature to disable audio ads by modifying the JSON server response.

View File

@@ -8,7 +8,7 @@ val disableTelemetryPatch = bytecodePatch(
name = "Disable telemetry",
description = "Disables SoundCloud's telemetry system.",
) {
compatibleWith("com.soundcloud.android")
compatibleWith("com.soundcloud.android"("2025.05.27-release"))
execute {
// Empty the "backend" argument to abort the initializer.

View File

@@ -17,7 +17,7 @@ import com.android.tools.smali.dexlib2.iface.reference.FieldReference
val enableOfflineSync = bytecodePatch(
name = "Enable offline sync",
) {
compatibleWith("com.soundcloud.android")
compatibleWith("com.soundcloud.android"("2025.05.27-release"))
execute {
// Enable the feature to allow offline track syncing by modifying the JSON server response.

View File

@@ -42,7 +42,10 @@ internal val contextMenuViewModelClassFingerprint = fingerprint {
strings("ContextMenuViewModel(header=")
}
internal val contextMenuViewModelAddItemFingerprint = fingerprint {
/**
* Used in versions older than "9.0.60.128".
*/
internal val oldContextMenuViewModelAddItemFingerprint = fingerprint {
parameters("L")
returns("V")
custom { method, _ ->
@@ -52,6 +55,27 @@ internal val contextMenuViewModelAddItemFingerprint = fingerprint {
}
}
internal val contextMenuViewModelConstructorFingerprint = fingerprint {
accessFlags(AccessFlags.PUBLIC, AccessFlags.CONSTRUCTOR)
}
/**
* Used to find the interface name of a context menu item.
*/
internal val browsePodcastsContextMenuItemClassFingerprint = fingerprint {
strings("browse_podcast_item", "ui_navigate")
}
internal const val CONTEXT_MENU_ITEM_CLASS_DESCRIPTOR_PLACEHOLDER = "Lapp/revanced/ContextMenuItemPlaceholder;"
internal val extensionFilterContextMenuItemsFingerprint = fingerprint {
accessFlags(AccessFlags.PUBLIC, AccessFlags.STATIC)
returns("Ljava/util/List;")
parameters("Ljava/util/List;")
custom { method, classDef ->
method.name == "filterContextMenuItems" && classDef.type == EXTENSION_CLASS_DESCRIPTOR
}
}
internal val getViewModelFingerprint = fingerprint {
custom { method, _ -> method.name == "getViewModel" }
}
@@ -93,18 +117,28 @@ internal val abstractProtobufListEnsureIsMutableFingerprint = fingerprint {
}
}
internal val homeSectionFingerprint = fingerprint {
custom { _, classDef -> classDef.endsWith("homeapi/proto/Section;") }
}
internal val homeStructureGetSectionsFingerprint = fingerprint {
internal fun structureGetSectionsFingerprint(className: String) = fingerprint {
custom { method, classDef ->
classDef.endsWith("homeapi/proto/HomeStructure;") && method.indexOfFirstInstruction {
classDef.endsWith(className) && method.indexOfFirstInstruction {
opcode == Opcode.IGET_OBJECT && getReference<FieldReference>()?.name == "sections_"
} >= 0
}
}
internal val homeSectionFingerprint = fingerprint {
custom { _, classDef -> classDef.endsWith("homeapi/proto/Section;") }
}
internal val homeStructureGetSectionsFingerprint =
structureGetSectionsFingerprint("homeapi/proto/HomeStructure;")
internal val browseSectionFingerprint = fingerprint {
custom { _, classDef-> classDef.endsWith("browsita/v1/resolved/Section;") }
}
internal val browseStructureGetSectionsFingerprint =
structureGetSectionsFingerprint("browsita/v1/resolved/BrowseStructure;")
internal fun reactivexFunctionApplyWithClassInitFingerprint(className: String) = fingerprint {
returns("Ljava/lang/Object;")
parameters("Ljava/lang/Object;")

View File

@@ -2,4 +2,8 @@ package app.revanced.patches.spotify.misc.extension
import app.revanced.patches.shared.misc.extension.sharedExtensionPatch
val sharedExtensionPatch = sharedExtensionPatch("spotify", mainActivityOnCreateHook)
val sharedExtensionPatch = sharedExtensionPatch(
"spotify",
mainActivityOnCreateHook,
loadOrbitLibraryHook
)

View File

@@ -0,0 +1,7 @@
package app.revanced.patches.spotify.misc.extension
import app.revanced.patcher.fingerprint
internal val loadOrbitLibraryFingerprint = fingerprint {
strings("OrbitLibraryLoader", "cst")
}

View File

@@ -1,6 +1,26 @@
package app.revanced.patches.spotify.misc.extension
import app.revanced.patcher.extensions.InstructionExtensions.getInstruction
import app.revanced.patches.shared.misc.extension.extensionHook
import app.revanced.patches.spotify.shared.mainActivityOnCreateFingerprint
import app.revanced.util.getReference
import app.revanced.util.indexOfFirstInstruction
import com.android.tools.smali.dexlib2.iface.instruction.TwoRegisterInstruction
import com.android.tools.smali.dexlib2.iface.reference.FieldReference
internal val mainActivityOnCreateHook = extensionHook(fingerprint = mainActivityOnCreateFingerprint)
internal val loadOrbitLibraryHook = extensionHook(
insertIndexResolver = {
loadOrbitLibraryFingerprint.stringMatches!!.last().index
},
contextRegisterResolver = { method ->
val contextReferenceIndex = method.indexOfFirstInstruction {
getReference<FieldReference>()?.type == "Landroid/content/Context;"
}
val contextRegister = method.getInstruction<TwoRegisterInstruction>(contextReferenceIndex).registerA
"v$contextRegister"
},
fingerprint = loadOrbitLibraryFingerprint,
)

View File

@@ -1,9 +1,61 @@
package app.revanced.patches.spotify.misc.fix
import app.revanced.patcher.fingerprint
import app.revanced.util.getReference
import app.revanced.util.indexOfFirstInstruction
import com.android.tools.smali.dexlib2.AccessFlags
import com.android.tools.smali.dexlib2.Opcode
import com.android.tools.smali.dexlib2.iface.reference.MethodReference
internal val getPackageInfoFingerprint = fingerprint {
strings(
"Failed to get the application signatures"
)
}
internal val loadOrbitLibraryFingerprint = fingerprint {
strings("/liborbit-jni-spotify.so")
}
internal val startupPageLayoutInflateFingerprint = fingerprint {
accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL)
returns("Landroid/view/View;")
parameters("Landroid/view/LayoutInflater;", "Landroid/view/ViewGroup;", "Landroid/os/Bundle;")
strings("blueprintContainer", "gradient", "valuePropositionTextView")
}
internal val renderStartLoginScreenFingerprint = fingerprint {
strings("authenticationButtonFactory", "MORE_OPTIONS")
}
internal val renderSecondLoginScreenFingerprint = fingerprint {
strings("authenticationButtonFactory", "intent_login")
}
internal val renderThirdLoginScreenFingerprint = fingerprint {
strings("EMAIL_OR_USERNAME", "listener")
}
internal val thirdLoginScreenLoginOnClickFingerprint = fingerprint {
strings("login", "listener", "none")
}
internal val runIntegrityVerificationFingerprint = fingerprint {
accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL)
returns("V")
opcodes(
Opcode.CHECK_CAST,
Opcode.INVOKE_VIRTUAL,
Opcode.INVOKE_STATIC, // Calendar.getInstance()
Opcode.MOVE_RESULT_OBJECT,
Opcode.INVOKE_VIRTUAL, // instance.get(6)
Opcode.MOVE_RESULT,
Opcode.IF_EQ, // if (x == instance.get(6)) return
)
custom { method, _ ->
method.indexOfFirstInstruction {
val reference = getReference<MethodReference>()
reference?.definingClass == "Ljava/util/Calendar;" && reference.name == "get"
} >= 0
}
}

View File

@@ -0,0 +1,191 @@
package app.revanced.patches.spotify.misc.fix
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.replaceInstruction
import app.revanced.patcher.patch.bytecodePatch
import app.revanced.patcher.patch.intOption
import app.revanced.patches.shared.misc.hex.HexPatchBuilder
import app.revanced.patches.shared.misc.hex.hexPatch
import app.revanced.patches.spotify.misc.extension.sharedExtensionPatch
import app.revanced.util.*
import com.android.tools.smali.dexlib2.Opcode
import com.android.tools.smali.dexlib2.iface.instruction.FiveRegisterInstruction
import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
import com.android.tools.smali.dexlib2.iface.reference.MethodReference
internal const val EXTENSION_CLASS_DESCRIPTOR = "Lapp/revanced/extension/spotify/misc/fix/SpoofClientPatch;"
@Suppress("unused")
val spoofClientPatch = bytecodePatch(
name = "Spoof client",
description = "Spoofs the client to fix various functions of the app.",
) {
val requestListenerPort by intOption(
key = "requestListenerPort",
default = 4345,
title = " Login request listener port",
description = "The port to use for the listener that intercepts and handles login requests. " +
"Port must be between 0 and 65535.",
required = true,
validator = {
it!!
!(it < 0 || it > 65535)
}
)
dependsOn(
sharedExtensionPatch,
hexPatch(ignoreMissingTargetFiles = true, block = fun HexPatchBuilder.() {
listOf(
"arm64-v8a",
"armeabi-v7a",
"x86",
"x86_64"
).forEach { architecture ->
"https://login5.spotify.com/v3/login" to "http://127.0.0.1:$requestListenerPort/v3/login" inFile
"lib/$architecture/liborbit-jni-spotify.so"
"https://login5.spotify.com/v4/login" to "http://127.0.0.1:$requestListenerPort/v4/login" inFile
"lib/$architecture/liborbit-jni-spotify.so"
}
})
)
compatibleWith("com.spotify.music")
execute {
// region Spoof package info.
getPackageInfoFingerprint.method.apply {
// region Spoof signature.
val failedToGetSignaturesStringIndex =
getPackageInfoFingerprint.stringMatches!!.first().index
val concatSignaturesIndex = indexOfFirstInstructionReversedOrThrow(
failedToGetSignaturesStringIndex,
Opcode.MOVE_RESULT_OBJECT,
)
val signatureRegister = getInstruction<OneRegisterInstruction>(concatSignaturesIndex).registerA
val expectedSignature = "d6a6dced4a85f24204bf9505ccc1fce114cadb32"
replaceInstruction(concatSignaturesIndex, "const-string v$signatureRegister, \"$expectedSignature\"")
// endregion
// region Spoof installer name.
val expectedInstallerName = "com.android.vending"
findInstructionIndicesReversedOrThrow {
val reference = getReference<MethodReference>()
reference?.name == "getInstallerPackageName" || reference?.name == "getInstallingPackageName"
}.forEach { index ->
val returnObjectIndex = index + 1
val installerPackageNameRegister = getInstruction<OneRegisterInstruction>(
returnObjectIndex
).registerA
addInstruction(
returnObjectIndex + 1,
"const-string v$installerPackageNameRegister, \"$expectedInstallerName\""
)
}
// endregion
}
// endregion
// region Spoof client.
loadOrbitLibraryFingerprint.method.addInstructions(
0,
"""
const/16 v0, $requestListenerPort
invoke-static { v0 }, $EXTENSION_CLASS_DESCRIPTOR->launchListener(I)V
"""
)
startupPageLayoutInflateFingerprint.method.apply {
val openLoginWebViewDescriptor =
"$EXTENSION_CLASS_DESCRIPTOR->launchLogin(Landroid/view/LayoutInflater;)V"
addInstructions(
0,
"invoke-static/range { p1 .. p1 }, $openLoginWebViewDescriptor"
)
}
renderStartLoginScreenFingerprint.method.apply {
val onEventIndex = indexOfFirstInstructionOrThrow {
opcode == Opcode.INVOKE_INTERFACE && getReference<MethodReference>()?.name == "getView"
}
val buttonRegister = getInstruction<OneRegisterInstruction>(onEventIndex + 1).registerA
addInstruction(
onEventIndex + 2,
"invoke-static { v$buttonRegister }, $EXTENSION_CLASS_DESCRIPTOR->setNativeLoginHandler(Landroid/view/View;)V"
)
}
renderSecondLoginScreenFingerprint.method.apply {
val getViewIndex = indexOfFirstInstructionOrThrow {
opcode == Opcode.INVOKE_INTERFACE && getReference<MethodReference>()?.name == "getView"
}
val buttonRegister = getInstruction<OneRegisterInstruction>(getViewIndex + 1).registerA
// Early return the render for loop since the first item of the loop is the login button.
addInstructions(
getViewIndex + 2,
"""
invoke-virtual { v$buttonRegister }, Landroid/view/View;->performClick()Z
return-void
"""
)
}
renderThirdLoginScreenFingerprint.method.apply {
val invokeSetListenerIndex = indexOfFirstInstructionOrThrow {
val reference = getReference<MethodReference>()
reference?.definingClass == "Landroid/view/View;" && reference.name == "setOnClickListener"
}
val buttonRegister = getInstruction<FiveRegisterInstruction>(invokeSetListenerIndex).registerC
addInstruction(
invokeSetListenerIndex + 1,
"invoke-virtual { v$buttonRegister }, Landroid/view/View;->performClick()Z"
)
}
thirdLoginScreenLoginOnClickFingerprint.method.apply {
// Use placeholder credentials to pass the login screen.
val loginActionIndex = indexOfFirstInstructionOrThrow(Opcode.RETURN_VOID) - 1
val loginActionInstruction = getInstruction<FiveRegisterInstruction>(loginActionIndex)
addInstructions(
loginActionIndex,
"""
const-string v${loginActionInstruction.registerD}, "placeholder"
const-string v${loginActionInstruction.registerE}, "placeholder"
"""
)
}
// endregion
// region Disable verdicts.
// Early return to block sending bad verdicts to the API.
runIntegrityVerificationFingerprint.method.returnEarly()
// endregion
}
}

View File

@@ -1,63 +1,11 @@
package app.revanced.patches.spotify.misc.fix
import app.revanced.patcher.extensions.InstructionExtensions.addInstruction
import app.revanced.patcher.extensions.InstructionExtensions.getInstruction
import app.revanced.patcher.extensions.InstructionExtensions.replaceInstruction
import app.revanced.patcher.patch.bytecodePatch
import app.revanced.util.findInstructionIndicesReversedOrThrow
import app.revanced.util.getReference
import app.revanced.util.indexOfFirstInstructionReversedOrThrow
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
@Deprecated("Superseded by spoofClientPatch", ReplaceWith("spoofClientPatch"))
@Suppress("unused")
val spoofPackageInfoPatch = bytecodePatch(
name = "Spoof package info",
description = "Spoofs the package info of the app to fix various functions of the app.",
) {
compatibleWith("com.spotify.music")
execute {
getPackageInfoFingerprint.method.apply {
// region Spoof signature.
val failedToGetSignaturesStringIndex =
getPackageInfoFingerprint.stringMatches!!.first().index
val concatSignaturesIndex = indexOfFirstInstructionReversedOrThrow(
failedToGetSignaturesStringIndex,
Opcode.MOVE_RESULT_OBJECT,
)
val signatureRegister = getInstruction<OneRegisterInstruction>(concatSignaturesIndex).registerA
val expectedSignature = "d6a6dced4a85f24204bf9505ccc1fce114cadb32"
replaceInstruction(concatSignaturesIndex, "const-string v$signatureRegister, \"$expectedSignature\"")
// endregion
// region Spoof installer name.
val expectedInstallerName = "com.android.vending"
findInstructionIndicesReversedOrThrow {
val reference = getReference<MethodReference>()
reference?.name == "getInstallerPackageName" || reference?.name == "getInstallingPackageName"
}.forEach { index ->
val returnObjectIndex = index + 1
val installerPackageNameRegister = getInstruction<OneRegisterInstruction>(
returnObjectIndex
).registerA
addInstruction(
returnObjectIndex + 1,
"const-string v$installerPackageNameRegister, \"$expectedInstallerName\""
)
}
// endregion
}
}
dependsOn(spoofClientPatch)
}

View File

@@ -2,10 +2,10 @@ package app.revanced.patches.spotify.misc.fix
import app.revanced.patcher.patch.bytecodePatch
@Deprecated("Superseded by spoofPackageInfoPatch", ReplaceWith("spoofPackageInfoPatch"))
@Deprecated("Superseded by spoofClientPatch", ReplaceWith("spoofClientPatch"))
@Suppress("unused")
val spoofSignaturePatch = bytecodePatch(
description = "Spoofs the signature of the app fix various functions of the app.",
) {
dependsOn(spoofPackageInfoPatch)
dependsOn(spoofClientPatch)
}

View File

@@ -2,7 +2,7 @@ package app.revanced.patches.spotify.shared
import app.revanced.patcher.fingerprint
import app.revanced.patcher.patch.BytecodePatchContext
import app.revanced.patches.spotify.misc.extension.mainActivityOnCreateHook
import com.android.tools.smali.dexlib2.AccessFlags
private const val SPOTIFY_MAIN_ACTIVITY = "Lcom/spotify/music/SpotifyMainActivity;"
@@ -12,6 +12,9 @@ private const val SPOTIFY_MAIN_ACTIVITY = "Lcom/spotify/music/SpotifyMainActivit
internal const val SPOTIFY_MAIN_ACTIVITY_LEGACY = "Lcom/spotify/music/MainActivity;"
internal val mainActivityOnCreateFingerprint = fingerprint {
accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL)
returns("V")
parameters("Landroid/os/Bundle;")
custom { method, classDef ->
method.name == "onCreate" && (classDef.type == SPOTIFY_MAIN_ACTIVITY
|| classDef.type == SPOTIFY_MAIN_ACTIVITY_LEGACY)
@@ -26,9 +29,10 @@ private var isLegacyAppTarget: Boolean? = null
* supports Spotify integration on Kenwood/Pioneer car stereos.
*/
context(BytecodePatchContext)
internal val IS_SPOTIFY_LEGACY_APP_TARGET get(): Boolean {
if (isLegacyAppTarget == null) {
isLegacyAppTarget = mainActivityOnCreateHook.fingerprint.originalClassDef.type == SPOTIFY_MAIN_ACTIVITY_LEGACY
internal val IS_SPOTIFY_LEGACY_APP_TARGET
get(): Boolean {
if (isLegacyAppTarget == null) {
isLegacyAppTarget = mainActivityOnCreateFingerprint.originalClassDef.type == SPOTIFY_MAIN_ACTIVITY_LEGACY
}
return isLegacyAppTarget!!
}
return isLegacyAppTarget!!
}

View File

@@ -43,17 +43,16 @@ private val hideAdsResourcePatch = resourcePatch {
addResources("youtube", "ad.general.hideAdsResourcePatch")
PreferenceScreen.ADS.addPreferences(
SwitchPreference("revanced_hide_general_ads"),
SwitchPreference("revanced_hide_creator_store_shelf"),
SwitchPreference("revanced_hide_end_screen_store_banner"),
SwitchPreference("revanced_hide_fullscreen_ads"),
SwitchPreference("revanced_hide_paid_promotion_label"),
SwitchPreference("revanced_hide_player_store_shelf"),
SwitchPreference("revanced_hide_self_sponsor_ads"),
SwitchPreference("revanced_hide_products_banner"),
SwitchPreference("revanced_hide_shopping_links"),
SwitchPreference("revanced_hide_visit_store_button"),
SwitchPreference("revanced_hide_web_search_results"),
SwitchPreference("revanced_hide_general_ads"),
SwitchPreference("revanced_hide_merchandise_banners"),
SwitchPreference("revanced_hide_paid_promotion_label"),
SwitchPreference("revanced_hide_self_sponsor_ads"),
SwitchPreference("revanced_hide_shopping_links"),
SwitchPreference("revanced_hide_view_products_banner"),
SwitchPreference("revanced_hide_web_search_results"),
)
addLithoFilter("Lapp/revanced/extension/youtube/patches/components/AdsFilter;")

View File

@@ -1,43 +1,83 @@
package app.revanced.patches.youtube.layout.branding.header
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
import app.revanced.patcher.patch.stringOption
import app.revanced.patches.youtube.misc.playservice.is_19_25_or_greater
import app.revanced.patches.youtube.misc.playservice.versionCheckPatch
import app.revanced.patcher.util.Document
import app.revanced.patches.all.misc.resources.addResources
import app.revanced.patches.all.misc.resources.addResourcesPatch
import app.revanced.patches.shared.misc.mapping.get
import app.revanced.patches.shared.misc.mapping.resourceMappingPatch
import app.revanced.patches.shared.misc.mapping.resourceMappings
import app.revanced.patches.shared.misc.settings.preference.ListPreference
import app.revanced.patches.youtube.misc.settings.PreferenceScreen
import app.revanced.util.ResourceGroup
import app.revanced.util.Utils.trimIndentMultiline
import app.revanced.util.copyResources
import app.revanced.util.findElementByAttributeValueOrThrow
import app.revanced.util.forEachLiteralValueInstruction
import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
import java.io.File
private const val HEADER_FILE_NAME = "yt_wordmark_header"
private const val PREMIUM_HEADER_FILE_NAME = "yt_premium_wordmark_header"
private const val EXTENSION_CLASS_DESCRIPTOR =
"Lapp/revanced/extension/youtube/patches/ChangeHeaderPatch;"
private const val HEADER_OPTION = "header*"
private const val PREMIUM_HEADER_OPTION = "premium*header"
private const val REVANCED_HEADER_OPTION = "revanced*"
private const val REVANCED_BORDERLESS_HEADER_OPTION = "revanced*borderless"
private val changeHeaderBytecodePatch = bytecodePatch {
dependsOn(resourceMappingPatch)
execute {
arrayOf(
"ytWordmarkHeader",
"ytPremiumWordmarkHeader"
).forEach { resourceName ->
val resourceId = resourceMappings["attr", resourceName]
forEachLiteralValueInstruction(resourceId) { literalIndex ->
val register = getInstruction<OneRegisterInstruction>(literalIndex).registerA
addInstructions(
literalIndex + 1,
"""
invoke-static { v$register }, $EXTENSION_CLASS_DESCRIPTOR->getHeaderAttributeId(I)I
move-result v$register
"""
)
}
}
}
}
private val targetResourceDirectoryNames = mapOf(
"xxxhdpi" to "512px x 192px",
"xxhdpi" to "387px x 144px",
"xhdpi" to "258px x 96px",
"hdpi" to "194px x 72px",
"mdpi" to "129px x 48px",
).map { (dpi, dim) ->
"drawable-$dpi" to dim
}.toMap()
"mdpi" to "129px x 48px"
).mapKeys { (dpi, _) -> "drawable-$dpi" }
private val variants = arrayOf("light", "dark")
/**
* Header logos built into this patch.
*/
private val logoResourceNames = arrayOf(
"revanced_header_logo_minimal",
"revanced_header_logo",
)
/**
* Custom header resource/file name.
*/
private const val CUSTOM_HEADER_RESOURCE_NAME = "custom_header"
@Suppress("unused")
val changeHeaderPatch = resourcePatch(
name = "Change header",
description = "Applies a custom header in the top left corner within the app. Defaults to the ReVanced header.",
use = false,
description = "Adds an option to change the header logo in the top left corner of the app.",
) {
dependsOn(versionCheckPatch)
dependsOn(addResourcesPatch, changeHeaderBytecodePatch)
compatibleWith(
"com.google.android.youtube"(
@@ -50,85 +90,46 @@ val changeHeaderPatch = resourcePatch(
)
)
val header by stringOption(
key = "header",
default = REVANCED_BORDERLESS_HEADER_OPTION,
values = mapOf(
"YouTube" to HEADER_OPTION,
"YouTube Premium" to PREMIUM_HEADER_OPTION,
"ReVanced" to REVANCED_HEADER_OPTION,
"ReVanced (borderless logo)" to REVANCED_BORDERLESS_HEADER_OPTION,
),
title = "Header",
val custom by stringOption(
key = "custom",
title = "Custom header logo",
description = """
The header to apply to the app.
If a path to a folder is provided, the folder must contain one or more of the following folders, depending on the DPI of the device:
Folder with images to use as a custom header logo.
The folder must contain one or more of the following folders, depending on the DPI of the device:
${targetResourceDirectoryNames.keys.joinToString("\n") { "- $it" }}
Each of the folders must contain all of the following files:
${variants.joinToString("\n") { variant -> "- ${HEADER_FILE_NAME}_$variant.png" }}
${variants.joinToString("\n") { variant -> "- ${CUSTOM_HEADER_RESOURCE_NAME}_$variant.png" }}
The image dimensions must be as follows:
${targetResourceDirectoryNames.map { (dpi, dim) -> "- $dpi: $dim" }.joinToString("\n")}
""".trimIndentMultiline(),
required = true,
""".trimIndentMultiline()
)
execute {
// The directories to copy the header to.
val targetResourceDirectories = targetResourceDirectoryNames.keys.mapNotNull {
get("res").resolve(it).takeIf(File::exists)
}
// The files to replace in the target directories.
val targetResourceFiles = targetResourceDirectoryNames.keys.map { directoryName ->
ResourceGroup(
directoryName,
*variants.map { variant -> "${HEADER_FILE_NAME}_$variant.png" }.toTypedArray(),
)
}
addResources("youtube", "layout.branding.changeHeaderPatch")
/**
* A function that overwrites both header variants in the target resource directories.
*/
fun overwriteFromTo(from: String, to: String) {
targetResourceDirectories.forEach { directory ->
variants.forEach { variant ->
val fromPath = directory.resolve("${from}_$variant.png")
val toPath = directory.resolve("${to}_$variant.png")
fun getLightDarkFileNames(vararg resourceNames: String): Array<String> =
variants.flatMap { variant ->
resourceNames.map { resource -> "${resource}_$variant.png" }
}.toTypedArray()
fromPath.copyTo(toPath, true)
}
}
}
val logoResourceFileNames = getLightDarkFileNames(*logoResourceNames)
copyResources(
"change-header",
ResourceGroup("drawable-hdpi", *logoResourceFileNames),
ResourceGroup("drawable-mdpi", *logoResourceFileNames),
ResourceGroup("drawable-xhdpi", *logoResourceFileNames),
ResourceGroup("drawable-xxhdpi", *logoResourceFileNames),
ResourceGroup("drawable-xxxhdpi", *logoResourceFileNames),
)
// Functions to overwrite the header to the different variants.
fun toPremium() { overwriteFromTo(PREMIUM_HEADER_FILE_NAME, HEADER_FILE_NAME) }
fun toHeader() { overwriteFromTo(HEADER_FILE_NAME, PREMIUM_HEADER_FILE_NAME) }
fun toReVanced() {
// Copy the ReVanced header to the resource directories.
targetResourceFiles.forEach { copyResources("change-header/revanced", it) }
if (custom != null) {
val sourceFolders = File(custom!!).listFiles { file -> file.isDirectory }
?: throw PatchException("The provided path is not a directory: $custom")
// Overwrite the premium with the custom header as well.
toHeader()
}
fun toReVancedBorderless() {
// Copy the ReVanced borderless header to the resource directories.
targetResourceFiles.forEach {
copyResources(
"change-header/revanced-borderless",
it
)
}
// Overwrite the premium with the custom header as well.
toHeader()
}
fun toCustom() {
val sourceFolders = File(header!!).listFiles { file -> file.isDirectory }
?: throw PatchException("The provided path is not a directory: $header")
val customResourceFileNames = getLightDarkFileNames(CUSTOM_HEADER_RESOURCE_NAME)
var copiedFiles = false
@@ -137,62 +138,87 @@ val changeHeaderPatch = resourcePatch(
val targetDpiFolder = get("res").resolve(dpiSourceFolder.name)
if (!targetDpiFolder.exists()) return@forEach
val imgSourceFiles = dpiSourceFolder.listFiles { file -> file.isFile }!!
imgSourceFiles.forEach { imgSourceFile ->
val customFiles = dpiSourceFolder.listFiles { file ->
file.isFile && file.name in customResourceFileNames
}!!
if (customFiles.size > 0 && customFiles.size != variants.size) {
throw PatchException("Both light/dark mode images " +
"must be specified but only found: " + customFiles.map { it.name })
}
customFiles.forEach { imgSourceFile ->
val imgTargetFile = targetDpiFolder.resolve(imgSourceFile.name)
imgSourceFile.copyTo(imgTargetFile, true)
imgSourceFile.copyTo(imgTargetFile)
copiedFiles = true
}
}
if (!copiedFiles) {
throw PatchException("No header files were copied from the provided path: $header.")
throw PatchException("No custom header images found in the provided path: $custom")
}
}
// Logo is replaced using an attribute reference.
document("res/values/attrs.xml").use { document ->
val resources = document.childNodes.item(0)
fun addAttributeReference(logoName: String) {
val item = document.createElement("attr")
item.setAttribute("format", "reference")
item.setAttribute("name", logoName)
resources.appendChild(item)
}
// Overwrite the premium with the custom header as well.
toHeader()
logoResourceNames.forEach { logoName ->
addAttributeReference(logoName)
}
if (custom != null) {
addAttributeReference(CUSTOM_HEADER_RESOURCE_NAME)
}
}
when (header) {
HEADER_OPTION -> toHeader()
PREMIUM_HEADER_OPTION -> toPremium()
REVANCED_HEADER_OPTION -> toReVanced()
REVANCED_BORDERLESS_HEADER_OPTION -> toReVancedBorderless()
else -> toCustom()
}
// Add custom drawables to all styles that use the regular and premium logo.
document("res/values/styles.xml").use { document ->
arrayOf(
"Base.Theme.YouTube.Light" to "light",
"Base.Theme.YouTube.Dark" to "dark",
"CairoLightThemeRingo2Updates" to "light",
"CairoDarkThemeRingo2Updates" to "dark"
).forEach { (style, mode) ->
val styleElement = document.childNodes.findElementByAttributeValueOrThrow(
"name", style
)
// Fix 19.25+ A/B layout with different header icons:
// yt_ringo2_wordmark_header, yt_ringo2_premium_wordmark_header
//
// These images are webp and not png, so overwriting them is not so simple.
// Instead change styles.xml to use the old drawable resources.
if (is_19_25_or_greater) {
document("res/values/styles.xml").use { document ->
val documentChildNodes = document.childNodes
fun addDrawableElement(document: Document, logoName: String, mode: String) {
val item = document.createElement("item")
item.setAttribute("name", logoName)
item.textContent = "@drawable/${logoName}_$mode"
styleElement.appendChild(item)
}
arrayOf(
"CairoLightThemeRingo2Updates" to variants[0],
"CairoDarkThemeRingo2Updates" to variants[1]
).forEach { (styleName, theme) ->
val styleNodes = documentChildNodes.findElementByAttributeValueOrThrow(
"name",
styleName,
).childNodes
logoResourceNames.forEach { logoName ->
addDrawableElement(document, logoName, mode)
}
val drawable = "@drawable/${HEADER_FILE_NAME}_${theme}"
arrayOf(
"ytWordmarkHeader",
"ytPremiumWordmarkHeader"
).forEach { itemName ->
styleNodes.findElementByAttributeValueOrThrow(
"name",
itemName,
).textContent = drawable
}
if (custom != null) {
addDrawableElement(document, CUSTOM_HEADER_RESOURCE_NAME, mode)
}
}
}
PreferenceScreen.GENERAL_LAYOUT.addPreferences(
if (custom == null) {
ListPreference("revanced_header_logo")
} else {
ListPreference(
key = "revanced_header_logo",
entriesKey = "revanced_header_logo_custom_entries",
entryValuesKey = "revanced_header_logo_custom_entry_values"
)
}
)
}
}

View File

@@ -157,20 +157,19 @@ val hideLayoutComponentsPatch = bytecodePatch(
preferences = setOf(
SwitchPreference("revanced_hide_comments_ai_chat_summary"),
SwitchPreference("revanced_hide_comments_ai_summary"),
SwitchPreference("revanced_hide_comments_channel_guidelines"),
SwitchPreference("revanced_hide_comments_by_members_header"),
SwitchPreference("revanced_hide_comments_section"),
SwitchPreference("revanced_hide_comments_community_guidelines"),
SwitchPreference("revanced_hide_comments_create_a_short_button"),
SwitchPreference("revanced_hide_comments_timestamp_button"),
SwitchPreference("revanced_hide_comments_preview_comment"),
SwitchPreference("revanced_hide_comments_thanks_button"),
SwitchPreference("revanced_hide_comments_timestamp_button"),
),
sorting = PreferenceScreenPreference.Sorting.UNSORTED,
),
SwitchPreference("revanced_hide_channel_bar"),
SwitchPreference("revanced_hide_channel_guidelines"),
SwitchPreference("revanced_hide_channel_member_shelf"),
SwitchPreference("revanced_hide_channel_watermark"),
SwitchPreference("revanced_hide_community_guidelines"),
SwitchPreference("revanced_hide_emergency_box"),
SwitchPreference("revanced_hide_info_panels"),
SwitchPreference("revanced_hide_join_membership_button"),
@@ -201,10 +200,21 @@ val hideLayoutComponentsPatch = bytecodePatch(
key = "revanced_hide_filter_bar_screen",
preferences = setOf(
SwitchPreference("revanced_hide_filter_bar_feed_in_feed"),
SwitchPreference("revanced_hide_filter_bar_feed_in_history"),
SwitchPreference("revanced_hide_filter_bar_feed_in_search"),
SwitchPreference("revanced_hide_filter_bar_feed_in_related_videos"),
),
),
PreferenceScreenPreference(
key = "revanced_channel_screen",
preferences = setOf(
SwitchPreference("revanced_hide_for_you_shelf"),
SwitchPreference("revanced_hide_links_preview"),
SwitchPreference("revanced_hide_members_shelf"),
SwitchPreference("revanced_hide_visit_community_button"),
SwitchPreference("revanced_hide_visit_store_button"),
),
),
SwitchPreference("revanced_hide_album_cards"),
SwitchPreference("revanced_hide_artist_cards"),
SwitchPreference("revanced_hide_community_posts"),
@@ -214,10 +224,9 @@ val hideLayoutComponentsPatch = bytecodePatch(
SwitchPreference("revanced_hide_expandable_chip"),
SwitchPreference("revanced_hide_feed_survey"),
SwitchPreference("revanced_hide_floating_microphone_button"),
SwitchPreference("revanced_hide_for_you_shelf"),
SwitchPreference("revanced_hide_horizontal_shelves"),
SwitchPreference("revanced_hide_image_shelf"),
SwitchPreference("revanced_hide_latest_posts_ads"),
SwitchPreference("revanced_hide_latest_posts"),
SwitchPreference("revanced_hide_mix_playlists"),
SwitchPreference("revanced_hide_movies_section"),
SwitchPreference("revanced_hide_notify_me_button"),

View File

@@ -222,7 +222,7 @@ val themePatch = bytecodePatch(
if (is_19_47_or_greater) {
PreferenceScreen.GENERAL_LAYOUT.addPreferences(
ListPreference("splash_screen_animation_style")
ListPreference("revanced_splash_screen_animation_style")
)
}

View File

@@ -7,26 +7,18 @@ import com.android.tools.smali.dexlib2.AccessFlags
import com.android.tools.smali.dexlib2.Opcode
internal val componentContextParserFingerprint = fingerprint {
strings(
"TreeNode result must be set.",
// String is a partial match and changed slightly in 20.03+
"it was removed due to duplicate converter bindings."
)
strings("Number of bits must be positive")
}
/**
* Resolves to the class found in [componentContextParserFingerprint].
* When patching 19.16 this fingerprint matches the same method as [componentContextParserFingerprint].
*/
internal val componentContextSubParserFingerprint = fingerprint {
internal val componentCreateFingerprint = fingerprint {
strings(
"Number of bits must be positive"
"Element missing correct type extension",
"Element missing type"
)
}
internal val lithoFilterFingerprint = fingerprint {
accessFlags(AccessFlags.STATIC, AccessFlags.CONSTRUCTOR)
returns("V")
custom { _, classDef ->
classDef.endsWith("/LithoFilterPatch;")
}
@@ -58,7 +50,7 @@ internal val lithoThreadExecutorFingerprint = fingerprint {
parameters("I", "I", "I")
custom { method, classDef ->
classDef.superclass == "Ljava/util/concurrent/ThreadPoolExecutor;" &&
method.containsLiteralInstruction(1L) // 1L = default thread timeout.
method.containsLiteralInstruction(1L) // 1L = default thread timeout.
}
}

View File

@@ -9,13 +9,13 @@ import app.revanced.patcher.extensions.InstructionExtensions.removeInstructions
import app.revanced.patcher.extensions.InstructionExtensions.replaceInstruction
import app.revanced.patcher.patch.bytecodePatch
import app.revanced.patches.youtube.misc.extension.sharedExtensionPatch
import app.revanced.patches.youtube.misc.playservice.is_19_17_or_greater
import app.revanced.patches.youtube.misc.playservice.is_19_25_or_greater
import app.revanced.patches.youtube.misc.playservice.is_20_05_or_greater
import app.revanced.patches.youtube.misc.playservice.versionCheckPatch
import app.revanced.patches.youtube.shared.conversionContextFingerprintToString
import app.revanced.util.addInstructionsAtControlFlowLabel
import app.revanced.util.findFreeRegister
import app.revanced.util.findInstructionIndicesReversedOrThrow
import app.revanced.util.getReference
import app.revanced.util.indexOfFirstInstructionOrThrow
import app.revanced.util.indexOfFirstInstructionReversedOrThrow
@@ -24,7 +24,6 @@ import com.android.tools.smali.dexlib2.Opcode
import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
import com.android.tools.smali.dexlib2.iface.instruction.ReferenceInstruction
import com.android.tools.smali.dexlib2.iface.reference.FieldReference
import com.android.tools.smali.dexlib2.iface.reference.MethodReference
lateinit var addLithoFilter: (String) -> Unit
private set
@@ -66,17 +65,11 @@ val lithoFilterPatch = bytecodePatch(
* }
* }
*
* class ComponentContextParser {
* public Component parseComponent() {
* class CreateComponentClass {
* public Component createComponent() {
* ...
*
* // Checks if the component should be filtered.
* // Sets a thread local with the filtering result.
* extensionClass.filter(identifier, pathBuilder); // Inserted by this patch.
*
* ...
*
* if (extensionClass.shouldFilter()) { // Inserted by this patch.
* if (extensionClass.shouldFilter(identifier, path)) { // Inserted by this patch.
* return emptyComponent;
* }
* return originalUnpatchedComponent; // Original code.
@@ -116,95 +109,68 @@ val lithoFilterPatch = bytecodePatch(
// Allow the method to run to completion, and override the
// return value with an empty component if it should be filtered.
// It is important to allow the original code to always run to completion,
// otherwise memory leaks and poor app performance can occur.
//
// The extension filtering result needs to be saved off somewhere, but cannot
// save to a class field since the target class is called by multiple threads.
// It would be great if there was a way to change the register count of the
// method implementation and save the result to a high register to later use
// in the method, but there is no simple way to do that.
// Instead save the extension filter result to a thread local and check the
// filtering result at each method return index.
// String field for the litho identifier.
componentContextParserFingerprint.method.apply {
val conversionContextClass = conversionContextFingerprintToString.originalClassDef
// otherwise high memory usage and poor app performance can occur.
val conversionContextIdentifierField = componentContextSubParserFingerprint.match(
componentContextParserFingerprint.originalClassDef
).let {
// Identifier field is loaded just before the string declaration.
val index = it.method.indexOfFirstInstructionReversedOrThrow(
it.stringMatches!!.first().index
) {
val reference = getReference<FieldReference>()
reference?.definingClass == conversionContextClass.type
&& reference.type == "Ljava/lang/String;"
}
it.method.getInstruction<ReferenceInstruction>(index).getReference<FieldReference>()
// Find the identifier/path fields of the conversion context.
val conversionContextIdentifierField = componentContextParserFingerprint.let {
// Identifier field is loaded just before the string declaration.
val index = it.method.indexOfFirstInstructionReversedOrThrow(
it.stringMatches!!.first().index
) {
val reference = getReference<FieldReference>()
reference?.definingClass == conversionContextFingerprintToString.originalClassDef.type
&& reference.type == "Ljava/lang/String;"
}
// StringBuilder field for the litho path.
val conversionContextPathBuilderField = conversionContextClass.fields
.single { field -> field.type == "Ljava/lang/StringBuilder;" }
it.method.getInstruction<ReferenceInstruction>(index).getReference<FieldReference>()!!
}
val conversionContextResultIndex = indexOfFirstInstructionOrThrow {
val reference = getReference<MethodReference>()
reference?.returnType == conversionContextClass.type
} + 1
val conversionContextPathBuilderField = conversionContextFingerprintToString.originalClassDef
.fields.single { field -> field.type == "Ljava/lang/StringBuilder;" }
val conversionContextResultRegister = getInstruction<OneRegisterInstruction>(
conversionContextResultIndex
).registerA
val identifierRegister = findFreeRegister(
conversionContextResultIndex, conversionContextResultRegister
)
val stringBuilderRegister = findFreeRegister(
conversionContextResultIndex, conversionContextResultRegister, identifierRegister
)
// Check if the component should be filtered, and save the result to a thread local.
addInstructionsAtControlFlowLabel(
conversionContextResultIndex + 1,
"""
iget-object v$identifierRegister, v$conversionContextResultRegister, $conversionContextIdentifierField
iget-object v$stringBuilderRegister, v$conversionContextResultRegister, $conversionContextPathBuilderField
invoke-static { v$identifierRegister, v$stringBuilderRegister }, $EXTENSION_CLASS_DESCRIPTOR->filter(Ljava/lang/String;Ljava/lang/StringBuilder;)V
"""
)
// Get the only static method in the class.
val builderMethodDescriptor = emptyComponentFingerprint.classDef.methods.single {
// Find class and methods to create an empty component.
val builderMethodDescriptor = emptyComponentFingerprint.classDef.methods.single {
// The only static method in the class.
method -> AccessFlags.STATIC.isSet(method.accessFlags)
}
// Only one field.
val emptyComponentField = classBy { classDef ->
classDef.type == builderMethodDescriptor.returnType
}!!.immutableClass.fields.single()
}
val emptyComponentField = classBy {
// Only one field that matches.
it.type == builderMethodDescriptor.returnType
}!!.immutableClass.fields.single()
// Check at each return value if the component is filtered,
// and return an empty component if filtering is needed.
findInstructionIndicesReversedOrThrow(Opcode.RETURN_OBJECT).forEach { returnIndex ->
val freeRegister = findFreeRegister(returnIndex)
addInstructionsAtControlFlowLabel(
returnIndex,
"""
invoke-static { }, $EXTENSION_CLASS_DESCRIPTOR->shouldFilter()Z
move-result v$freeRegister
if-eqz v$freeRegister, :unfiltered
move-object/from16 v$freeRegister, p1
invoke-static { v$freeRegister }, $builderMethodDescriptor
move-result-object v$freeRegister
iget-object v$freeRegister, v$freeRegister, $emptyComponentField
return-object v$freeRegister
:unfiltered
nop
"""
)
componentCreateFingerprint.method.apply {
val insertIndex = if (is_19_17_or_greater) {
indexOfFirstInstructionOrThrow(Opcode.RETURN_OBJECT)
} else {
// 19.16 clobbers p2 so must check at start of the method and not at the return index.
0
}
val freeRegister = findFreeRegister(insertIndex)
val identifierRegister = findFreeRegister(insertIndex, freeRegister)
val pathRegister = findFreeRegister(insertIndex, freeRegister, identifierRegister)
addInstructionsAtControlFlowLabel(
insertIndex,
"""
move-object/from16 v$freeRegister, p2
iget-object v$identifierRegister, v$freeRegister, $conversionContextIdentifierField
iget-object v$pathRegister, v$freeRegister, $conversionContextPathBuilderField
invoke-static { v$identifierRegister, v$pathRegister }, $EXTENSION_CLASS_DESCRIPTOR->shouldFilter(Ljava/lang/String;Ljava/lang/StringBuilder;)Z
move-result v$freeRegister
if-eqz v$freeRegister, :unfiltered
# Return an empty component
move-object/from16 v$freeRegister, p1
invoke-static { v$freeRegister }, $builderMethodDescriptor
move-result-object v$freeRegister
iget-object v$freeRegister, v$freeRegister, $emptyComponentField
return-object v$freeRegister
:unfiltered
nop
"""
)
}
// endregion

View File

@@ -355,7 +355,7 @@ fun Method.indexOfFirstLiteralInstructionOrThrow(literal: Float): Int {
* @see indexOfFirstLiteralInstructionOrThrow
*/
fun Method.indexOfFirstLiteralInstruction(literal: Double) =
indexOfFirstLiteralInstruction(literal.toRawBits().toLong())
indexOfFirstLiteralInstruction(literal.toRawBits())
/**
* Find the index of the first literal instruction with the given double value,
@@ -421,7 +421,7 @@ fun Method.indexOfFirstLiteralInstructionReversedOrThrow(literal: Float): Int {
* @see indexOfFirstLiteralInstructionOrThrow
*/
fun Method.indexOfFirstLiteralInstructionReversed(literal: Double) =
indexOfFirstLiteralInstructionReversed(literal.toRawBits().toLong())
indexOfFirstLiteralInstructionReversed(literal.toRawBits())
/**
* Find the index of the last wide literal instruction with the given double value,
@@ -715,24 +715,50 @@ internal fun MutableMethod.insertLiteralOverride(literal: Long, override: Boolea
}
/**
* Called for _all_ instructions with the given literal value.
* Called for _all_ methods with the given literal value.
* Method indices are iterated from last to first.
*/
fun BytecodePatchContext.forEachLiteralValueInstruction(
literal: Long,
block: MutableMethod.(literalInstructionIndex: Int) -> Unit,
block: MutableMethod.(matchingIndex: Int) -> Unit,
) {
val matchingIndexes = ArrayList<Int>()
classes.forEach { classDef ->
classDef.methods.forEach { method ->
method.implementation?.instructions?.forEachIndexed { index, instruction ->
if (instruction.opcode == CONST &&
(instruction as WideLiteralInstruction).wideLiteral == literal
) {
method.implementation?.instructions?.let { instructions ->
matchingIndexes.clear()
instructions.forEachIndexed { index, instruction ->
if ((instruction as? WideLiteralInstruction)?.wideLiteral == literal) {
matchingIndexes.add(index)
}
}
if (matchingIndexes.isNotEmpty()) {
val mutableMethod = proxy(classDef).mutableClass.findMutableMethodOf(method)
block.invoke(mutableMethod, index)
// FIXME: Until patcher V22 is merged, this workaround is needed
// because if multiple patches modify the same class
// then after modifying the method indexes of immutable classes
// are no longer correct.
matchingIndexes.clear()
mutableMethod.instructions.forEachIndexed { index, instruction ->
if ((instruction as? WideLiteralInstruction)?.wideLiteral == literal) {
matchingIndexes.add(index)
}
}
if (matchingIndexes.isEmpty()) return@forEach
// FIXME Remove code above after V22 merge.
matchingIndexes.asReversed().forEach { index ->
block.invoke(mutableMethod, index)
}
}
}
}
}
}
private const val RETURN_TYPE_MISMATCH = "Mismatch between override type and Method return type"

View File

@@ -41,12 +41,14 @@ Second \"item\" text"</string>
<patch id="layout.hide.general.hideLayoutComponentsPatch">
<!-- 'Join' should be translated using the same localized wording YouTube displays.
This appears in the video player for certain videos. -->
<!-- 'For you' should be translated using the same localized wording YouTube displays. -->
<!-- '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. -->
<!-- 'People also watched' and 'You might also like' should be translated using the same localized wording YouTube displays. -->
<!-- 'Show more' should be translated with the same localized wording that YouTube displays.
This button usually appears when searching for a YT creator. -->
<!-- 'For You' should be translated using the same localized wording YouTube displays. -->
<!-- 'Visit Community' should be translated with the same localized wording that YouTube displays. -->
<!-- 'Visit store' should be translated with the same localized wording that YouTube displays. -->
<!-- https://logos.fandom.com/wiki/YouTube/Yoodles -->
<!-- '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. -->
<!-- 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.
@@ -55,8 +57,8 @@ Second \"item\" text"</string>
<!-- Translations of this should not be longer than the original English text, otherwise the text can be clipped and not entirely shown. -->
</patch>
<patch id="ad.general.hideAdsResourcePatch">
<!-- 'Visit store' should be translated with the same localized wording that YouTube displays. -->
<!-- Translations of this should not be longer than the original English text, otherwise the text can be clipped and not entirely shown. -->
<!-- 'View products' should be translated with the same localized wording that YouTube displays. -->
</patch>
<patch id="ad.getpremium.hideGetPremiumPatch">
</patch>

View File

@@ -41,12 +41,14 @@ Second \"item\" text"</string>
<patch id="layout.hide.general.hideLayoutComponentsPatch">
<!-- 'Join' should be translated using the same localized wording YouTube displays.
This appears in the video player for certain videos. -->
<!-- 'For you' should be translated using the same localized wording YouTube displays. -->
<!-- '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. -->
<!-- 'People also watched' and 'You might also like' should be translated using the same localized wording YouTube displays. -->
<!-- 'Show more' should be translated with the same localized wording that YouTube displays.
This button usually appears when searching for a YT creator. -->
<!-- 'For You' should be translated using the same localized wording YouTube displays. -->
<!-- 'Visit Community' should be translated with the same localized wording that YouTube displays. -->
<!-- 'Visit store' should be translated with the same localized wording that YouTube displays. -->
<!-- https://logos.fandom.com/wiki/YouTube/Yoodles -->
<!-- '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. -->
<!-- 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.
@@ -55,8 +57,8 @@ Second \"item\" text"</string>
<!-- Translations of this should not be longer than the original English text, otherwise the text can be clipped and not entirely shown. -->
</patch>
<patch id="ad.general.hideAdsResourcePatch">
<!-- 'Visit store' should be translated with the same localized wording that YouTube displays. -->
<!-- Translations of this should not be longer than the original English text, otherwise the text can be clipped and not entirely shown. -->
<!-- 'View products' should be translated with the same localized wording that YouTube displays. -->
</patch>
<patch id="ad.getpremium.hideGetPremiumPatch">
</patch>

View File

@@ -156,22 +156,19 @@ Second \"item\" text"</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">"تكون الرفوف مخفية مثل:
<string name="revanced_hide_horizontal_shelves_summary_on">"الأرفف مخفية، مثل:
• الأخبار العاجلة
• متابعة المشاهدة
• استكشاف المزيد من القنوات
• الأكثر صلة
• التسوق
مشاهدة مرة أخرى"</string>
• شاهدها مرة أخرى"</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>
<!-- '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>
<!-- '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>
@@ -192,15 +189,12 @@ Second \"item\" text"</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_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_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>
@@ -213,15 +207,9 @@ Second \"item\" text"</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_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_emergency_box_title">إخفاء صناديق الطوارئ</string>
<string name="revanced_hide_emergency_box_summary_on">تم إخفاء صناديق الطوارئ</string>
<string name="revanced_hide_emergency_box_summary_off">يتم عرض صناديق الطوارئ</string>
@@ -237,18 +225,18 @@ Second \"item\" text"</string>
<string name="revanced_hide_playables_title">إخفاء هيّا نلعب</string>
<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_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_latest_posts_ads_title">إخفاء آخر المشاركات</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_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_latest_posts_title">إخفاء آخر المشاركات</string>
<string name="revanced_hide_latest_posts_summary_on">تم إخفاء أحدث المشاركات</string>
<string name="revanced_hide_latest_posts_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>
@@ -285,16 +273,39 @@ Second \"item\" text"</string>
<string name="revanced_hide_description_components_screen_title">وصف الفيديو</string>
<string name="revanced_hide_description_components_screen_summary">إخفاء أو عرض مكونات وصف الفيديو</string>
<string name="revanced_hide_filter_bar_screen_title">شريط التصفية</string>
<string name="revanced_hide_filter_bar_screen_summary">إخفاء أو عرض شريط الفلتر في الموجز ونتائج البحث والفيديوهات ذات الصلة</string>
<string name="revanced_hide_filter_bar_screen_summary">إخفاء أو إظهار شريط الفلترة في الخلاصات، السجل، نتائج البحث، والفيديوهات ذات الصلة</string>
<string name="revanced_hide_filter_bar_feed_in_feed_title">إخفاء في الموجز</string>
<string name="revanced_hide_filter_bar_feed_in_feed_summary_on">مخفي في الموجز</string>
<string name="revanced_hide_filter_bar_feed_in_feed_summary_off">يُعرض في الموجز</string>
<string name="revanced_hide_filter_bar_feed_in_feed_summary_off">معروض في الموجز</string>
<string name="revanced_hide_filter_bar_feed_in_history_title">إخفاء في السجل</string>
<string name="revanced_hide_filter_bar_feed_in_history_summary_on">مخفي في السجل</string>
<string name="revanced_hide_filter_bar_feed_in_history_summary_off">معروض في السجل</string>
<string name="revanced_hide_filter_bar_feed_in_search_title">إخفاء في نتائج البحث</string>
<string name="revanced_hide_filter_bar_feed_in_search_summary_on">مخفي في نتائج البحث</string>
<string name="revanced_hide_filter_bar_feed_in_search_summary_off">يُعرض في نتائج البحث</string>
<string name="revanced_hide_filter_bar_feed_in_related_videos_title">إخفاء في الفيديوهات ذات الصلة</string>
<string name="revanced_hide_filter_bar_feed_in_related_videos_summary_on">مخفي في الفيديوهات ذات الصلة</string>
<string name="revanced_hide_filter_bar_feed_in_related_videos_summary_off">يُعرض في الفيديوهات ذات الصلة</string>
<string name="revanced_channel_screen_title">صفحة القناة</string>
<string name="revanced_channel_screen_summary">إخفاء أو إظهار مكونات صفحة القناة</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_links_preview_title">إخفاء معاينة الروابط</string>
<string name="revanced_hide_links_preview_summary_on">معاينة الروابط مخفية</string>
<string name="revanced_hide_links_preview_summary_off">معاينة الروابط معروضة</string>
<string name="revanced_hide_members_shelf_title">إخفاء رف الأعضاء</string>
<string name="revanced_hide_members_shelf_summary_on">رف الأعضاء مخفي</string>
<string name="revanced_hide_members_shelf_summary_off">يتم عرض رف الأعضاء</string>
<!-- 'Visit Community' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_visit_community_button_title">إخفاء زر \"زيارة المنتدى\"</string>
<string name="revanced_hide_visit_community_button_summary_on">زر \"زيارة المنتدى\" مخفي</string>
<string name="revanced_hide_visit_community_button_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_comments_screen_title">التعليقات</string>
<string name="revanced_comments_screen_summary">إخفاء أو عرض مكونات قسم التعليقات</string>
<string name="revanced_hide_comments_ai_chat_summary_title">إخفاء ملخص محادثات الذكاء الاصطناعي</string>
@@ -303,24 +314,30 @@ Second \"item\" text"</string>
<string name="revanced_hide_comments_ai_summary_title">إخفاء ملخص تعليقات الذكاء الاصطناعي</string>
<string name="revanced_hide_comments_ai_summary_summary_on">تم إخفاء ملخص التعليقات</string>
<string name="revanced_hide_comments_ai_summary_summary_off">يتم عرض ملخص التعليقات</string>
<string name="revanced_hide_comments_channel_guidelines_title">إخفاء إرشادات القناة</string>
<string name="revanced_hide_comments_channel_guidelines_summary_on">إرشادات القناة مخفية</string>
<string name="revanced_hide_comments_channel_guidelines_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_community_guidelines_title">إخفاء إرشادات المنتدى</string>
<string name="revanced_hide_comments_community_guidelines_summary_on">إرشادات المجتمع مخفية</string>
<string name="revanced_hide_comments_community_guidelines_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_timestamp_button_title">زر إخفاء الطابع الزمني</string>
<string name="revanced_hide_comments_timestamp_button_summary_on">زر الطابع الزمني مخفي</string>
<string name="revanced_hide_comments_timestamp_button_summary_off">زر الطابع الزمني معروض</string>
<string name="revanced_hide_comments_preview_comment_title">إخفاء تعليق المعاينة</string>
<string name="revanced_hide_comments_preview_comment_summary_on">تم إخفاء تعليق المعاينة</string>
<string name="revanced_hide_comments_preview_comment_summary_off">يتم عرض تعليق المعاينة</string>
<string name="revanced_hide_comments_thanks_button_title">إخفاء زر شكرًا</string>
<string name="revanced_hide_comments_thanks_button_summary_on">تم إخفاء زر شكرًا</string>
<string name="revanced_hide_comments_thanks_button_summary_off">يتم عرض زر شكرًا</string>
<string name="revanced_hide_comments_timestamp_button_title">إخفاء زر الطابع الزمني</string>
<string name="revanced_hide_comments_timestamp_button_summary_on">زر الطابع الزمني مخفي</string>
<string name="revanced_hide_comments_timestamp_button_summary_off">زر الطابع الزمني معروض</string>
<!-- https://logos.fandom.com/wiki/YouTube/Yoodles -->
<string name="revanced_hide_doodles_title">إخفاء رسومات YouTube</string>
<string name="revanced_hide_doodles_summary_on">تم إخفاء رسومات شريط البحث</string>
@@ -374,44 +391,41 @@ Second \"item\" text"</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_creator_store_shelf_title">إخفاء رف متجر المبدع</string>
<string name="revanced_hide_creator_store_shelf_summary_on">رف المتجر تحت مشغل الفيديو مخفي</string>
<string name="revanced_hide_creator_store_shelf_summary_off">رف المتجر أسفل مشغل الفيديو معروض</string>
<string name="revanced_hide_end_screen_store_banner_title">إخفاء لافتة شاشة المتجر النهائية</string>
<string name="revanced_hide_end_screen_store_banner_summary_on">تم إخفاء لافتة المتجر</string>
<string name="revanced_hide_end_screen_store_banner_summary_off">يتم عرض لافتة المتجر</string>
<string name="revanced_hide_fullscreen_ads_title">إخفاء إعلانات ملء الشاشة</string>
<string name="revanced_hide_fullscreen_ads_summary_on">"يتم إخفاء إعلانات ملء الشاشة
هذه الميزة متاحة فقط للأجهزة القديمة"</string>
<string name="revanced_hide_fullscreen_ads_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>
<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_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_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>
<string name="revanced_hide_self_sponsor_ads_title">إخفاء بطاقات الرعاية الذاتية</string>
<string name="revanced_hide_self_sponsor_ads_summary_on">تم إخفاء بطاقات الرعاية الذاتية</string>
<string name="revanced_hide_self_sponsor_ads_summary_off">يتم عرض بطاقات الرعاية الذاتية</string>
<string name="revanced_hide_products_banner_title">إخفاء لافتة \'عرض المنتجات\'</string>
<string name="revanced_hide_products_banner_summary_on">تم إخفاء البانر</string>
<string name="revanced_hide_products_banner_summary_off">يتم عرض البانر</string>
<string name="revanced_hide_end_screen_store_banner_title">إخفاء لافتة شاشة المتجر النهائية</string>
<string name="revanced_hide_end_screen_store_banner_summary_on">تم إخفاء لافتة المتجر</string>
<string name="revanced_hide_end_screen_store_banner_summary_off">يتم عرض لافتة المتجر</string>
<string name="revanced_hide_player_store_shelf_title">إخفاء رف مشغل التسوق</string>
<string name="revanced_hide_player_store_shelf_summary_on">تم إخفاء رف التسوق</string>
<string name="revanced_hide_player_store_shelf_summary_off">يتم عرض رف التسوق</string>
<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>
<!-- '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_shopping_links_title">إخفاء روابط التسوق</string>
<string name="revanced_hide_shopping_links_summary_on">الروابط في وصف الفيديو مخفية</string>
<string name="revanced_hide_shopping_links_summary_off">الروابط في وصف الفيديو معروضة</string>
<!-- 'View products' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_view_products_banner_title">إخفاء لافتة \'عرض المنتجات\'</string>
<string name="revanced_hide_view_products_banner_summary_on">الشعار في تراكب الفيديو مخفي</string>
<string name="revanced_hide_view_products_banner_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_merchandise_banners_title">إخفاء لافتات البضائع</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>
@@ -773,6 +787,9 @@ Second \"item\" text"</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_effect_button_title">إخفاء زر التأثير</string>
<string name="revanced_hide_shorts_effect_button_summary_on">زر التأثير مخفي</string>
<string name="revanced_hide_shorts_effect_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>
@@ -820,7 +837,7 @@ Second \"item\" text"</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_full_video_link_label_title">إخفاء تسمية رابط الفيديو الكامل</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>
<string name="revanced_hide_shorts_sound_button_title">إخفاء زر الصوت</string>
@@ -954,11 +971,25 @@ Second \"item\" text"</string>
<string name="revanced_sb_enable_auto_hide_skip_segment_button">إخفاء زر التخطي تلقائيًا</string>
<string name="revanced_sb_enable_auto_hide_skip_segment_button_sum_on">إخفاء زر التخطي بعد بضع ثوانٍ</string>
<string name="revanced_sb_enable_auto_hide_skip_segment_button_sum_off">يتم عرض زر التخطي للمقطع بأكمله</string>
<string name="revanced_sb_general_skiptoast">عرض ملاحظة عند التخطي</string>
<string name="revanced_sb_general_skiptoast_sum_on">يتم عرض ملاحظة عندما يتم تخطي مقطع تلقائيًا. انقر هنا لمشاهدة مثال</string>
<string name="revanced_sb_general_skiptoast_sum_off">لن يتم عرض الملاحظة. انقر هنا لمشاهدة مثال</string>
<string name="revanced_sb_auto_hide_skip_button_duration">مدة زر التخطي</string>
<string name="revanced_sb_auto_hide_skip_button_duration_sum">كم المدة لعرض أزرار التخطي والتخطي إلى التمييز قبل الإخفاء التلقائي</string>
<string name="revanced_sb_general_skiptoast">إظهار إشعار التراجع عن التخطي</string>
<string name="revanced_sb_general_skiptoast_sum_on">يظهر إشعار عند تخطي مقطع تلقائيًا. انقر على الإشعار للتراجع عن التخطي</string>
<string name="revanced_sb_general_skiptoast_sum_off">لا يتم عرض التوست</string>
<string name="revanced_sb_toast_on_skip_duration">مدة توست التخطي</string>
<string name="revanced_sb_toast_on_skip_duration_sum">كم المدة لعرض رسالة التراجع عن التخطي المنبثقة</string>
<string name="revanced_sb_duration_1s">ثانية واحدة</string>
<string name="revanced_sb_duration_2s">ثانيتان</string>
<string name="revanced_sb_duration_3s">3 ثوانٍ</string>
<string name="revanced_sb_duration_4s">4 ثوانٍ</string>
<string name="revanced_sb_duration_5s">5 ثوانٍ</string>
<string name="revanced_sb_duration_6s">6 ثوانٍ</string>
<string name="revanced_sb_duration_7s">7 ثوانٍ</string>
<string name="revanced_sb_duration_8s">8 ثوانٍ</string>
<string name="revanced_sb_duration_9s">9 ثوانٍ</string>
<string name="revanced_sb_duration_10s">10 ثوانٍ</string>
<string name="revanced_sb_general_time_without">عرض مدة الفيديو بدون المقاطع</string>
<string name="revanced_sb_general_time_without_sum_on">يعرض مدة الفيديو ناقصًا منه جميع المقاطع بين قوسين بجوار مدة الفيديو الكاملة</string>
<string name="revanced_sb_general_time_without_sum_on">يتم عرض طول الفيديو مطروحًا منه جميع المقاطع على شريط التقدم</string>
<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>
@@ -1136,6 +1167,7 @@ Second \"item\" text"</string>
<string name="revanced_change_form_factor_entry_1">الافتراضي</string>
<string name="revanced_change_form_factor_entry_2">الجوّال</string>
<string name="revanced_change_form_factor_entry_3">الجهاز اللوحي</string>
<string name="revanced_change_form_factor_entry_4">السيارات</string>
<string name="revanced_change_form_factor_user_dialog_message">"التغييرات تشمل:
تصميم الجهاز اللوحي
@@ -1262,9 +1294,9 @@ Second \"item\" text"</string>
<string name="revanced_gradient_loading_screen_title">تمكين شاشة التحميل المتدرجة</string>
<string name="revanced_gradient_loading_screen_summary_on">ستحتوي شاشة التحميل على خلفية متدرجة</string>
<string name="revanced_gradient_loading_screen_summary_off">ستحتوي شاشة التحميل على خلفية ثابتة</string>
<string name="splash_screen_animation_style_title">نمط الشاشة الترحيبية</string>
<string name="splash_screen_animation_style_entry_1">اللون</string>
<string name="splash_screen_animation_style_entry_2">أبيض وأسود</string>
<string name="revanced_splash_screen_animation_style_title">نمط الشاشة الترحيبية</string>
<string name="revanced_splash_screen_animation_style_entry_1">اللون</string>
<string name="revanced_splash_screen_animation_style_entry_2">أبيض وأسود</string>
<string name="revanced_seekbar_custom_color_title">تمكين لون شريط تقدم الفيديو المخصص</string>
<string name="revanced_seekbar_custom_color_summary_on">يتم عرض لون شريط تقدم الفيديو المخصص</string>
<string name="revanced_seekbar_custom_color_summary_off">يتم عرض لون شريط تقدم الفيديو الاصلي</string>

View File

@@ -41,12 +41,14 @@ Second \"item\" text"</string>
<patch id="layout.hide.general.hideLayoutComponentsPatch">
<!-- 'Join' should be translated using the same localized wording YouTube displays.
This appears in the video player for certain videos. -->
<!-- 'For you' should be translated using the same localized wording YouTube displays. -->
<!-- '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. -->
<!-- 'People also watched' and 'You might also like' should be translated using the same localized wording YouTube displays. -->
<!-- 'Show more' should be translated with the same localized wording that YouTube displays.
This button usually appears when searching for a YT creator. -->
<!-- 'For You' should be translated using the same localized wording YouTube displays. -->
<!-- 'Visit Community' should be translated with the same localized wording that YouTube displays. -->
<!-- 'Visit store' should be translated with the same localized wording that YouTube displays. -->
<!-- https://logos.fandom.com/wiki/YouTube/Yoodles -->
<!-- '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. -->
<!-- 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.
@@ -55,8 +57,8 @@ Second \"item\" text"</string>
<!-- Translations of this should not be longer than the original English text, otherwise the text can be clipped and not entirely shown. -->
</patch>
<patch id="ad.general.hideAdsResourcePatch">
<!-- 'Visit store' should be translated with the same localized wording that YouTube displays. -->
<!-- Translations of this should not be longer than the original English text, otherwise the text can be clipped and not entirely shown. -->
<!-- 'View products' should be translated with the same localized wording that YouTube displays. -->
</patch>
<patch id="ad.getpremium.hideGetPremiumPatch">
</patch>

View File

@@ -156,22 +156,12 @@ Gözlənilməz hallardan xəbərdar olmayacaqsınız."</string>
<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">"Hissələr gizlidir, nümunə:
• Son xəbərlər
• İzləməyə davam et
• Daha çox kanallar kəşf et
• Mağaza
• Təkrar 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. -->
<string name="revanced_hide_join_membership_button_title">Qoşul düyməsin gizlət</string>
<string name="revanced_hide_join_membership_button_summary_on">Düymə gizlidir</string>
<string name="revanced_hide_join_membership_button_summary_off">Düymə göstərilir</string>
<!-- 'For you' should be translated using the same localized wording YouTube displays. -->
<string name="revanced_hide_for_you_shelf_title">\"Sizin üçün\" bölməsin gizlət</string>
<string name="revanced_hide_for_you_shelf_summary_on">Kanal səhifəsində bölmə gizlidir</string>
<string name="revanced_hide_for_you_shelf_summary_off">Kanal səhifəsində bölmə görünür</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">\"Mənə bildir\" düyməsini gizlət</string>
@@ -192,15 +182,9 @@ Gözlənilməz hallardan xəbərdar olmayacaqsınız."</string>
<string name="revanced_hide_timed_reactions_title">Vaxtlı reaksiyaları gizlət</string>
<string name="revanced_hide_timed_reactions_summary_on">Zamanlanmış reaksiyalar gizlədilir</string>
<string name="revanced_hide_timed_reactions_summary_off">Zamanlanmış reaksiyalar göstərilir</string>
<string name="revanced_hide_channel_guidelines_title">Kanal təlimatlarını gizlət</string>
<string name="revanced_hide_channel_guidelines_summary_on">Kanal təlimatları gizlidir</string>
<string name="revanced_hide_channel_guidelines_summary_off">Kanal təlimatları göstərilir</string>
<string name="revanced_hide_chips_shelf_title">Çip bölməsin gizlət</string>
<string name="revanced_hide_chips_shelf_summary_on">Çip bölməsi gizlidir</string>
<string name="revanced_hide_chips_shelf_summary_off">Çip bölməsi göstərilir</string>
<string name="revanced_hide_expandable_chip_title">Videoların aşağısında açılan kartı gizlət</string>
<string name="revanced_hide_expandable_chip_summary_on">Genişləndirilən kart gizlidir</string>
<string name="revanced_hide_expandable_chip_summary_off">Genişləndirilən kart görünür</string>
<string name="revanced_hide_community_posts_title">İcma elanların gizlət</string>
<string name="revanced_hide_community_posts_summary_on">İcma elanları gizlədilib</string>
<string name="revanced_hide_community_posts_summary_off">İcma elanları göstərilir</string>
@@ -213,15 +197,9 @@ Gözlənilməz hallardan xəbərdar olmayacaqsınız."</string>
<string name="revanced_hide_feed_survey_title">Axın sorğuların gizlət</string>
<string name="revanced_hide_feed_survey_summary_on">Axın sorğuları gizlidir</string>
<string name="revanced_hide_feed_survey_summary_off">Axın sorğuları göstərilir</string>
<string name="revanced_hide_community_guidelines_title">İcma təlimatlarını gizlət</string>
<string name="revanced_hide_community_guidelines_summary_on">İcma təlimatları gizlidir</string>
<string name="revanced_hide_community_guidelines_summary_off">İcma təlimatları göstərilir</string>
<string name="revanced_hide_subscribers_community_guidelines_title">Abunəçi təlimatlarını gizlət</string>
<string name="revanced_hide_subscribers_community_guidelines_summary_on">Abunəliklərin icma təlimatları gizlidir</string>
<string name="revanced_hide_subscribers_community_guidelines_summary_off">Abunəliklərin icma təlimatları göstərilir</string>
<string name="revanced_hide_channel_member_shelf_title">Kanal üzvü bölməsin gizlət</string>
<string name="revanced_hide_channel_member_shelf_summary_on">Kanal üzvü bölməsi gizlidir</string>
<string name="revanced_hide_channel_member_shelf_summary_off">Kanal üzvü bölməsi göstərilir</string>
<string name="revanced_hide_emergency_box_title">Ciddi vəziyyət qutularını gizlət</string>
<string name="revanced_hide_emergency_box_summary_on">Ciddi vəziyyət qutuları gizlidir</string>
<string name="revanced_hide_emergency_box_summary_off">Ciddi vəziyyət qutuları göstərilir</string>
@@ -237,18 +215,9 @@ Gözlənilməz hallardan xəbərdar olmayacaqsınız."</string>
<string name="revanced_hide_playables_title">Oynadılan elementləri gizlət</string>
<string name="revanced_hide_playables_summary_on">Oynadılanlar gizlidir</string>
<string name="revanced_hide_playables_summary_off">Oynadılanlar göstərilir</string>
<string name="revanced_hide_quick_actions_title">Tam ekranda cəld fəaliyyətləri gizlət</string>
<string name="revanced_hide_quick_actions_summary_on">Cəld fəaliyyətlər gizlədilir</string>
<string name="revanced_hide_quick_actions_summary_off">Cəld fəaliyyətlər göstərilir</string>
<string name="revanced_hide_related_videos_title">Cəld fəaliyyətlərdə əlaqəli videoları gizlə</string>
<string name="revanced_hide_related_videos_summary_on">Əlaqədar videolar gizlədilib</string>
<string name="revanced_hide_related_videos_summary_off">Əlaqədar videolar göstərilir</string>
<string name="revanced_hide_image_shelf_title">Axtarış nəticəsində şəkil bölməsin gizlə</string>
<string name="revanced_hide_image_shelf_summary_on">Şəkil bölməsi gizlidir</string>
<string name="revanced_hide_image_shelf_summary_off">Şəkil bölməsi göstərilir</string>
<string name="revanced_hide_latest_posts_ads_title">Son elanları gizlət</string>
<string name="revanced_hide_latest_posts_ads_summary_on">Ən son elanlar gizlədilib</string>
<string name="revanced_hide_latest_posts_ads_summary_off">Ən son elanlar göstərilir</string>
<string name="revanced_hide_latest_posts_title">Son elanları gizlət</string>
<string name="revanced_hide_latest_posts_summary_on">Ən son elanlar gizlədilib</string>
<string name="revanced_hide_latest_posts_summary_off">Ən son elanlar göstərilir</string>
<string name="revanced_hide_mix_playlists_title">Qarışıq pleylistləri gizlət</string>
<string name="revanced_hide_mix_playlists_summary_on">Qarışıq oynatma siyahıları gizlədilir</string>
<string name="revanced_hide_mix_playlists_summary_off">Qarışıq oynatma siyahıları göstərilir</string>
@@ -285,16 +254,24 @@ Gözlənilməz hallardan xəbərdar olmayacaqsınız."</string>
<string name="revanced_hide_description_components_screen_title">Video təsviri</string>
<string name="revanced_hide_description_components_screen_summary">Video təsviri elementlərini gizlət və ya göstər</string>
<string name="revanced_hide_filter_bar_screen_title">Filtr çubuğu</string>
<string name="revanced_hide_filter_bar_screen_summary">Axında, axtarış nəticələrində və əlaqəli videolarda filtr cərgəsin gizlət və ya göstər</string>
<string name="revanced_hide_filter_bar_feed_in_feed_title">Axında gizlət</string>
<string name="revanced_hide_filter_bar_feed_in_feed_summary_on">Axında gizlidir</string>
<string name="revanced_hide_filter_bar_feed_in_feed_summary_off">Axında göstərilir</string>
<string name="revanced_hide_filter_bar_screen_summary">Axınlar, tarixçə, axtarış nəticələri və əlaqəli videolarda filtr panelini gizlət və ya göstər</string>
<string name="revanced_hide_filter_bar_feed_in_feed_title">Axınlarda gizlət</string>
<string name="revanced_hide_filter_bar_feed_in_feed_summary_on">Axınlarda gizlidir</string>
<string name="revanced_hide_filter_bar_feed_in_feed_summary_off">Axınlarda göstər</string>
<string name="revanced_hide_filter_bar_feed_in_history_title">Tarixçədə gizlət</string>
<string name="revanced_hide_filter_bar_feed_in_history_summary_on">Tarixçədə gizlədilib</string>
<string name="revanced_hide_filter_bar_feed_in_history_summary_off">Tarixçədə göstərilib</string>
<string name="revanced_hide_filter_bar_feed_in_search_title">Axtarış nəticələrində gizlət</string>
<string name="revanced_hide_filter_bar_feed_in_search_summary_on">Axtarış nəticələrində gizlədilib</string>
<string name="revanced_hide_filter_bar_feed_in_search_summary_off">Axtarış nəticələrində göstərilir</string>
<string name="revanced_hide_filter_bar_feed_in_related_videos_title">Əlaqəli videolarda gizlət</string>
<string name="revanced_hide_filter_bar_feed_in_related_videos_summary_on">Əlaqəli videolarda gizlidir</string>
<string name="revanced_hide_filter_bar_feed_in_related_videos_summary_off">Əlaqəli videolarda görünür</string>
<!-- 'For You' should be translated using the same localized wording YouTube displays. -->
<string name="revanced_hide_for_you_shelf_title">\"Sizin üçün\" bölməsin gizlət</string>
<!-- 'Visit Community' should be translated with the same localized wording that YouTube displays. -->
<!-- 'Visit store' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_visit_store_button_title">Kanalda \"Mağazaya baxın\" düyməsin gizlə</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_ai_chat_summary_title">AI Söhbət Xülasəsini Gizlət</string>
@@ -312,15 +289,14 @@ Gözlənilməz hallardan xəbərdar olmayacaqsınız."</string>
<string name="revanced_hide_comments_create_a_short_button_title">\"Shorts Yarat\" düyməsini gizlət</string>
<string name="revanced_hide_comments_create_a_short_button_summary_on">Short yarat düyməsi gizlidir</string>
<string name="revanced_hide_comments_create_a_short_button_summary_off">Short yarat düyməsi görünür</string>
<string name="revanced_hide_comments_timestamp_button_title">Vaxt möhürü düyməsini gizlət</string>
<string name="revanced_hide_comments_timestamp_button_summary_on">Vaxt damğası düyməsi gizlidir</string>
<string name="revanced_hide_comments_timestamp_button_summary_off">Vaxt möhürü düyməsi göstərilir</string>
<string name="revanced_hide_comments_preview_comment_title">Önbaxış şərhin gizlət</string>
<string name="revanced_hide_comments_preview_comment_summary_on">Önbaxış şərhi gizlədilib</string>
<string name="revanced_hide_comments_preview_comment_summary_off">Önbaxış şərhi göstərilir</string>
<string name="revanced_hide_comments_thanks_button_title">Təşəkkür Düyməsini Gizlət</string>
<string name="revanced_hide_comments_thanks_button_summary_on">Təşəkkür düyməsi gizlidir</string>
<string name="revanced_hide_comments_thanks_button_summary_off">Təşəkkür düyməsi göstərilir</string>
<string name="revanced_hide_comments_timestamp_button_summary_on">Vaxt damğası düyməsi gizlidir</string>
<string name="revanced_hide_comments_timestamp_button_summary_off">Vaxt möhürü düyməsi göstərilir</string>
<!-- https://logos.fandom.com/wiki/YouTube/Yoodles -->
<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>
@@ -374,44 +350,35 @@ Məhdudiyyətlər
<string name="revanced_hide_keyword_toast_invalid_broad">Açar söz, bütün videoları gizlədəcək: %s</string>
</patch>
<patch id="ad.general.hideAdsResourcePatch">
<string name="revanced_hide_general_ads_title">Ümumi reklamları gizlət</string>
<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_end_screen_store_banner_title">Son ekran mağaza etiketini gizlət</string>
<string name="revanced_hide_end_screen_store_banner_summary_on">Mağaza etiketi gizlidir</string>
<string name="revanced_hide_end_screen_store_banner_summary_off">Mağaza etiketi görünür</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
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>
<!-- 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">Tam ekran reklamları gizlətmə yalnız köhnə cihazlarda işləyir</string>
<string name="revanced_hide_general_ads_title">Ümumi reklamları gizlət</string>
<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_merchandise_banners_title">Məhsul etiketlərini gizlət</string>
<string name="revanced_hide_merchandise_banners_summary_on">Məhsul etiketləri gizlədilir</string>
<string name="revanced_hide_merchandise_banners_summary_off">Məhsul etiketləri göstərilir</string>
<string name="revanced_hide_paid_promotion_label_title">Ödənişli tanıtım etiketini gizlət</string>
<string name="revanced_hide_paid_promotion_label_summary_on">Ödənişli reklam etiketi gizlədilib</string>
<string name="revanced_hide_paid_promotion_label_summary_off">Ödənişli reklam etiketi göstərilir</string>
<string name="revanced_hide_self_sponsor_ads_title">Öz-sponsorlu kartları gizlət</string>
<string name="revanced_hide_self_sponsor_ads_summary_on">Özünə sponsorluq edilən kartlar gizlidir</string>
<string name="revanced_hide_self_sponsor_ads_summary_off">Özünə sponsorluq edilən kartlar göstərilir</string>
<string name="revanced_hide_products_banner_title">\"Məhsullara baxın\" etiketin gizlət</string>
<string name="revanced_hide_products_banner_summary_on">Etiket gizlədilib</string>
<string name="revanced_hide_products_banner_summary_off">Etiket göstərilir</string>
<string name="revanced_hide_end_screen_store_banner_title">Son ekran mağaza etiketini gizlət</string>
<string name="revanced_hide_end_screen_store_banner_summary_on">Mağaza etiketi gizlidir</string>
<string name="revanced_hide_end_screen_store_banner_summary_off">Mağaza etiketi görünür</string>
<string name="revanced_hide_player_store_shelf_title">Oynadıcı mağaza bölməsin gizlət</string>
<string name="revanced_hide_player_store_shelf_summary_on">Alış-veriş rəfi gizlidir</string>
<string name="revanced_hide_player_store_shelf_summary_off">Alış-veriş rəfi göstərilir</string>
<string name="revanced_hide_shopping_links_title">Video təsvirdə mağaza linklərin gizlə</string>
<string name="revanced_hide_shopping_links_summary_on">Video təsvirində alış-veriş linkləri gizlədilib</string>
<string name="revanced_hide_shopping_links_summary_off">Video təsvirində alış-veriş linkləri görünür</string>
<!-- 'Visit store' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_visit_store_button_title">Kanalda \"Mağazaya baxın\" düyməsin gizlə</string>
<string name="revanced_hide_visit_store_button_summary_on">Kanal səhifəsindəki düymə gizlidir</string>
<string name="revanced_hide_visit_store_button_summary_off">Kanal səhifəsindəki düymə görünür</string>
<!-- 'View products' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_view_products_banner_title">“Məhsullara baxın” panelin gizlət</string>
<string name="revanced_hide_view_products_banner_summary_on">Video örtüyündəki panel gizlədilib</string>
<string name="revanced_hide_view_products_banner_summary_off">Video örtüyündəki panel görünür</string>
<string name="revanced_hide_web_search_results_title">Veb axtarış nəticələrini gizlət</string>
<string name="revanced_hide_web_search_results_summary_on">Veb axtarış nəticələri gizlədilir</string>
<string name="revanced_hide_web_search_results_summary_off">Veb axtarış nəticələri göstərilir</string>
<string name="revanced_hide_merchandise_banners_title">Məhsul etiketlərini gizlət</string>
<string name="revanced_hide_merchandise_banners_summary_on">Məhsul etiketləri gizlədilir</string>
<string name="revanced_hide_merchandise_banners_summary_off">Məhsul etiketləri göstərilir</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">Tam ekran reklamları gizlətmə yalnız köhnə cihazlarda işləyir</string>
</patch>
<patch id="ad.getpremium.hideGetPremiumPatch">
<string name="revanced_hide_get_premium_title">YouTube Premium reklamlarını gizlət</string>
@@ -773,6 +740,9 @@ Audio trek seçimin göstərmək üçün \"Video axınları saxtalaşdır\"ı iO
<string name="revanced_hide_shorts_upcoming_button_title">Yaxınlaşan düyməsini gizlət</string>
<string name="revanced_hide_shorts_upcoming_button_summary_on">\"Yaxınlaşan\" düyməsi gizlidir</string>
<string name="revanced_hide_shorts_upcoming_button_summary_off">\"Yaxınlaşan\" düyməsi göstərilir</string>
<string name="revanced_hide_shorts_effect_button_title">Effekt düyməsini gizlət</string>
<string name="revanced_hide_shorts_effect_button_summary_on">Effekt düyməsi gizlidir</string>
<string name="revanced_hide_shorts_effect_button_summary_off">Effekt düyməsi görünür</string>
<string name="revanced_hide_shorts_green_screen_button_title">Yaşıl ekran düyməsini gizlət</string>
<string name="revanced_hide_shorts_green_screen_button_summary_on">\"Yaşıl ekran\" düyməsi gizlidir</string>
<string name="revanced_hide_shorts_green_screen_button_summary_off">\"Yaşıl ekran\" düyməsi göstərilir</string>
@@ -820,7 +790,7 @@ Audio trek seçimin göstərmək üçün \"Video axınları saxtalaşdır\"ı iO
<string name="revanced_hide_shorts_sound_metadata_label_title">Səs üst məlumat etiketini gizlət</string>
<string name="revanced_hide_shorts_sound_metadata_label_summary_on">Üst məlumat etiketi gizlidir</string>
<string name="revanced_hide_shorts_sound_metadata_label_summary_off">Üst məlumat etiketi göstərilir</string>
<string name="revanced_hide_shorts_full_video_link_label_title">Tam video bağlantısı etiketini gizlət</string>
<string name="revanced_hide_shorts_full_video_link_label_title">Video keçidi etiketini gizlət</string>
<string name="revanced_hide_shorts_full_video_link_label_summary_on">Video linki etiketi gizlidir</string>
<string name="revanced_hide_shorts_full_video_link_label_summary_off">Video link etiketi göstərilir</string>
<string name="revanced_hide_shorts_sound_button_title">Səs düyməsini gizlət</string>
@@ -953,11 +923,23 @@ Bu funksiya 720p və ya daha aşağı video keyfiyyəti ilə və çox sürətli
<string name="revanced_sb_enable_auto_hide_skip_segment_button">Ötürmə düyməsini avtomatik gizlət</string>
<string name="revanced_sb_enable_auto_hide_skip_segment_button_sum_on">Ötürmə düyməsi bir neçə saniyə sonra gizlənir</string>
<string name="revanced_sb_enable_auto_hide_skip_segment_button_sum_off">Ötürmə düyməsi bütün bölüm ərzində göstərilir</string>
<string name="revanced_sb_general_skiptoast">Ötürüləndə ani bildiriş göstər</string>
<string name="revanced_sb_general_skiptoast_sum_on">Bölüm avto-ötürüləndə bildiriş göstərilir. Nümunə görmək üçün bura toxun</string>
<string name="revanced_sb_general_skiptoast_sum_off">Bildiriş göstərilmir. Nümunə görmək üçün bura toxun</string>
<string name="revanced_sb_auto_hide_skip_button_duration">Ötür düyməsi müddəti</string>
<string name="revanced_sb_general_skiptoast">Ötürməni geri al bildirişin göstər</string>
<string name="revanced_sb_general_skiptoast_sum_on">Ani bildiriş bölüm birbaşa ötürüldükdə görünür. Ötürməni geri qaytarmaq üçün bildirişə toxun</string>
<string name="revanced_sb_general_skiptoast_sum_off">Ani bildiriş görünmür</string>
<string name="revanced_sb_toast_on_skip_duration">Ötür ani bildiriş müddəti</string>
<string name="revanced_sb_duration_1s">1 saniyə</string>
<string name="revanced_sb_duration_2s">2 saniyə</string>
<string name="revanced_sb_duration_3s">3 saniyə</string>
<string name="revanced_sb_duration_4s">4 saniyə</string>
<string name="revanced_sb_duration_5s">5 saniyə</string>
<string name="revanced_sb_duration_6s">6 saniyə</string>
<string name="revanced_sb_duration_7s">7 saniyə</string>
<string name="revanced_sb_duration_8s">8 saniyə</string>
<string name="revanced_sb_duration_9s">9 saniyə</string>
<string name="revanced_sb_duration_10s">10 saniyə</string>
<string name="revanced_sb_general_time_without">Bölümsüz video uzunluğun göstər</string>
<string name="revanced_sb_general_time_without_sum_on">Video uzunluğu bütün bölümləri silir, tam video uzunluğu yanaşı mötərizədə göstərilir</string>
<string name="revanced_sb_general_time_without_sum_on">Video uzunluğu bütün bölümləri çıxarır, irəliləyiş cizgisində göstərir</string>
<string name="revanced_sb_general_time_without_sum_off">Tam video uzunluğu göstərilir</string>
<string name="revanced_sb_create_segment_category">Yeni bölümlər yaradılır</string>
<string name="revanced_sb_enable_create_segment">Yeni Bölüm Yarat Düyməsini Göstər</string>
@@ -1262,9 +1244,9 @@ Kiçik oynadıcı ekrandan sola və ya sağa sürüklənə bilər"</string>
<string name="revanced_gradient_loading_screen_title">Dəyişkən yükləmə ekranını aktivləşdir</string>
<string name="revanced_gradient_loading_screen_summary_on">Yükləmə ekranı, dəyişkən arxa plana malik olacaq</string>
<string name="revanced_gradient_loading_screen_summary_off">Yükləmə ekranı, vahid arxa plana malik olacaq</string>
<string name="splash_screen_animation_style_title">Sıçrama ekran üslubu</string>
<string name="splash_screen_animation_style_entry_1">Rəng</string>
<string name="splash_screen_animation_style_entry_2">Qara və ağ</string>
<string name="revanced_splash_screen_animation_style_title">Sıçrama ekran üslubu</string>
<string name="revanced_splash_screen_animation_style_entry_1">Rəng</string>
<string name="revanced_splash_screen_animation_style_entry_2">Qara və ağ</string>
<string name="revanced_seekbar_custom_color_title">Fərdi irəliləmə cizgisi rəngini aktivləşdir</string>
<string name="revanced_seekbar_custom_color_summary_on">Fərdi irəliləmə cizgisi rəngi göstərilir</string>
<string name="revanced_seekbar_custom_color_summary_off">Orijinal irəliləmə cizgisi rəngi göstərilir</string>

View File

@@ -156,22 +156,19 @@ Second \"item\" text"</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">"Схаваны паліцы, такія як:
Навіны
• Працяг прагляду
• Даведайцеся больш пра каналы
<string name="revanced_hide_horizontal_shelves_summary_on">"Паліцы схаваныя, такія як:
Апошнія навіны
• Працягнуць прагляд
• Даследаваць больш каналаў
• Самыя рэлевантныя
• Пакупкі
• Паглядзець яшчэ раз"</string>
• Прагледзець яшчэ раз"</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>
<!-- '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>
<!-- '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>
@@ -192,15 +189,12 @@ Second \"item\" text"</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_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_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>
@@ -213,15 +207,9 @@ Second \"item\" text"</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_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_emergency_box_title">Схаваць экстранныя скрыні</string>
<string name="revanced_hide_emergency_box_summary_on">Аварыйныя скрыні схаваныя</string>
<string name="revanced_hide_emergency_box_summary_off">Паказваюцца скрыні экстранай дапамогі</string>
@@ -237,18 +225,18 @@ Second \"item\" text"</string>
<string name="revanced_hide_playables_title">Схаваць гульнявыя элементы</string>
<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_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_latest_posts_ads_title">Схаваць апошнія паведамленні</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_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_latest_posts_title">Схаваць апошнія паведамленні</string>
<string name="revanced_hide_latest_posts_summary_on">Апошнія паведамленні схаваны</string>
<string name="revanced_hide_latest_posts_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>
@@ -285,16 +273,39 @@ Second \"item\" text"</string>
<string name="revanced_hide_description_components_screen_title">Апісанне відэа</string>
<string name="revanced_hide_description_components_screen_summary">Схаваць або паказаць кампаненты апісання відэа</string>
<string name="revanced_hide_filter_bar_screen_title">Панэль фільтраў</string>
<string name="revanced_hide_filter_bar_screen_summary">Схаваць ці паказаць панэль фільтраў у стужцы, выніках пошуку і звязаных відэа</string>
<string name="revanced_hide_filter_bar_feed_in_feed_title">Схаваць у карме</string>
<string name="revanced_hide_filter_bar_feed_in_feed_summary_on">Схаваны ў стужцы</string>
<string name="revanced_hide_filter_bar_feed_in_feed_summary_off">Паказваецца ў стужцы</string>
<string name="revanced_hide_filter_bar_screen_summary">Схаваць ці паказаць панэль фільтраў у стужках, гісторыі, выніках пошуку і звязаных відэа</string>
<string name="revanced_hide_filter_bar_feed_in_feed_title">Схаваць у стужках</string>
<string name="revanced_hide_filter_bar_feed_in_feed_summary_on">Схавана ў стужках</string>
<string name="revanced_hide_filter_bar_feed_in_feed_summary_off">Паказана ў стужках</string>
<string name="revanced_hide_filter_bar_feed_in_history_title">Схаваць у гісторыі</string>
<string name="revanced_hide_filter_bar_feed_in_history_summary_on">Схавана ў гісторыі</string>
<string name="revanced_hide_filter_bar_feed_in_history_summary_off">Паказана ў гісторыі</string>
<string name="revanced_hide_filter_bar_feed_in_search_title">Схаваць у выніках пошуку</string>
<string name="revanced_hide_filter_bar_feed_in_search_summary_on">Схавана ў выніках пошуку</string>
<string name="revanced_hide_filter_bar_feed_in_search_summary_off">Паказана ў выніках пошуку</string>
<string name="revanced_hide_filter_bar_feed_in_related_videos_title">Схаваць у звязаных відэа</string>
<string name="revanced_hide_filter_bar_feed_in_related_videos_summary_on">Схавана ў звязаных відэа</string>
<string name="revanced_hide_filter_bar_feed_in_related_videos_summary_off">Паказана ў звязаных відэа</string>
<string name="revanced_channel_screen_title">Старонка канала</string>
<string name="revanced_channel_screen_summary">Схаваць або паказаць кампаненты старонкі канала</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_links_preview_title">Схаваць папярэдні прагляд спасылак</string>
<string name="revanced_hide_links_preview_summary_on">Папярэдні прагляд спасылак схаваны</string>
<string name="revanced_hide_links_preview_summary_off">Папярэдні прагляд спасылак паказаны</string>
<string name="revanced_hide_members_shelf_title">Схаваць паліцу ўдзельнікаў</string>
<string name="revanced_hide_members_shelf_summary_on">Паліца ўдзельнікаў схаваная</string>
<string name="revanced_hide_members_shelf_summary_off">Паліца ўдзельнікаў паказана</string>
<!-- 'Visit Community' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_visit_community_button_title">Схаваць кнопку \"Наведаць супольнасць\"</string>
<string name="revanced_hide_visit_community_button_summary_on">Кнопка \"Наведаць супольнасць\" схавана</string>
<string name="revanced_hide_visit_community_button_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_comments_screen_title">Каментарыі</string>
<string name="revanced_comments_screen_summary">Схаваць або паказаць кампаненты раздзела каментарыяў</string>
<string name="revanced_hide_comments_ai_chat_summary_title">Схаваць зводку чата са штучным інтэлектам</string>
@@ -303,24 +314,30 @@ Second \"item\" text"</string>
<string name="revanced_hide_comments_ai_summary_title">Схаваць зводку каментарыяў са штучным інтэлектам</string>
<string name="revanced_hide_comments_ai_summary_summary_on">Зводка каментарыяў схаваная</string>
<string name="revanced_hide_comments_ai_summary_summary_off">Зводка каментарыяў паказаная</string>
<string name="revanced_hide_comments_channel_guidelines_title">Схаваць правілы канала</string>
<string name="revanced_hide_comments_channel_guidelines_summary_on">Рэкамендацыі канала схаваны</string>
<string name="revanced_hide_comments_channel_guidelines_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_community_guidelines_title">Схаваць рэкамендацыі супольнасці</string>
<string name="revanced_hide_comments_community_guidelines_summary_on">Правілы супольнасці схаваныя</string>
<string name="revanced_hide_comments_community_guidelines_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">Кнопка «Стварыць Shorts» схаваная</string>
<string name="revanced_hide_comments_create_a_short_button_summary_off">Кнопка «Стварыць Shorts» паказаная</string>
<string name="revanced_hide_comments_timestamp_button_title">Схаваць кнопку часу</string>
<string name="revanced_hide_comments_timestamp_button_summary_on">Кнопка часу схаваная</string>
<string name="revanced_hide_comments_timestamp_button_summary_off">Кнопка часу паказаная</string>
<string name="revanced_hide_comments_preview_comment_title">Схаваць каментарый для папярэдняга прагляду</string>
<string name="revanced_hide_comments_preview_comment_summary_on">Каментарый перад праглядам схаваны</string>
<string name="revanced_hide_comments_preview_comment_summary_off">Паказваецца папярэдні прагляд каментарыя</string>
<string name="revanced_hide_comments_thanks_button_title">Схаваць кнопку \"Дзякуй\"\"</string>
<string name="revanced_hide_comments_thanks_button_summary_on">Кнопка падзякі схавана</string>
<string name="revanced_hide_comments_thanks_button_summary_off">Паказана кнопка падзякі</string>
<string name="revanced_hide_comments_timestamp_button_title">Схаваць кнопку \"Пазнака часу\"</string>
<string name="revanced_hide_comments_timestamp_button_summary_on">Кнопка часу схаваная</string>
<string name="revanced_hide_comments_timestamp_button_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>
@@ -374,44 +391,41 @@ Second \"item\" text"</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_creator_store_shelf_title">Схаваць паліцу крамы стваральнікаў</string>
<string name="revanced_hide_creator_store_shelf_summary_on">Паліца крамы пад відэапрайгравальнікам схавана</string>
<string name="revanced_hide_creator_store_shelf_summary_off">Паліца крамы пад відэаплэерам паказаная</string>
<string name="revanced_hide_end_screen_store_banner_title">Схаваць банер крамы на канчатковым экране</string>
<string name="revanced_hide_end_screen_store_banner_summary_on">Банэр крамы схаваны</string>
<string name="revanced_hide_end_screen_store_banner_summary_off">Банэр крамы паказаны</string>
<string name="revanced_hide_fullscreen_ads_title">Схаваць поўнаэкранную рэкламу</string>
<string name="revanced_hide_fullscreen_ads_summary_on">"Схаваны поўнаэкранныя рэкламныя ролікі
Гэтая функцыя даступная толькі для старых прылад"</string>
<string name="revanced_hide_fullscreen_ads_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>
<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_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_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>
<string name="revanced_hide_self_sponsor_ads_title">Схаваць самі спансаваныя карты</string>
<string name="revanced_hide_self_sponsor_ads_summary_on">Спонсарскія карткі схаваныя</string>
<string name="revanced_hide_self_sponsor_ads_summary_off">Паказваюцца ўласныя карты</string>
<string name="revanced_hide_products_banner_title">Схаваць банер «Паглядзець прадукты»</string>
<string name="revanced_hide_products_banner_summary_on">Банэр схаваны</string>
<string name="revanced_hide_products_banner_summary_off">Паказваецца банэр</string>
<string name="revanced_hide_end_screen_store_banner_title">Схаваць банер крамы на канчатковым экране</string>
<string name="revanced_hide_end_screen_store_banner_summary_on">Банэр крамы схаваны</string>
<string name="revanced_hide_end_screen_store_banner_summary_off">Банэр крамы паказаны</string>
<string name="revanced_hide_player_store_shelf_title">Схаваць полку крамы прайгравальніка</string>
<string name="revanced_hide_player_store_shelf_summary_on">Паліца крамы схавана</string>
<string name="revanced_hide_player_store_shelf_summary_off">Паліца крамы паказана</string>
<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>
<!-- '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_shopping_links_title">Схаваць спасылкі для пакупак</string>
<string name="revanced_hide_shopping_links_summary_on">Спасылкі ў апісанні відэа схаваныя</string>
<string name="revanced_hide_shopping_links_summary_off">Спасылкі ў апісанні відэа паказаныя</string>
<!-- 'View products' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_view_products_banner_title">Схаваць банэр \"Прагледзець тавары\"</string>
<string name="revanced_hide_view_products_banner_summary_on">Банэр у накладцы відэа схаваны</string>
<string name="revanced_hide_view_products_banner_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_merchandise_banners_title">Схаваць банеры з таварамі</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>
@@ -773,6 +787,9 @@ Second \"item\" text"</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_effect_button_title">Схаваць кнопку эфекту</string>
<string name="revanced_hide_shorts_effect_button_summary_on">Кнопка эфекту схавана</string>
<string name="revanced_hide_shorts_effect_button_summary_off">Кнопка эфекту паказана</string>
<string name="revanced_hide_shorts_green_screen_button_title">Схаваць кнопку «Зялёны экран»</string>
<string name="revanced_hide_shorts_green_screen_button_summary_on">Кнопка с зелёным экраном Shorts скрыта</string>
<string name="revanced_hide_shorts_green_screen_button_summary_off">Кнопка с зелёным экраном Shorts отображается</string>
@@ -820,7 +837,7 @@ Second \"item\" text"</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_full_video_link_label_title">Схаваць поўную метку спасылкі на відэа</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>
<string name="revanced_hide_shorts_sound_button_title">Кнопка \"Схаваць гук\"</string>
@@ -954,11 +971,25 @@ Second \"item\" text"</string>
<string name="revanced_sb_enable_auto_hide_skip_segment_button">Аўтаматычна хаваць кнопку «Прапусціць»</string>
<string name="revanced_sb_enable_auto_hide_skip_segment_button_sum_on">Кнопка \"Прапусціць\" скрываецца праз некалькі секунд</string>
<string name="revanced_sb_enable_auto_hide_skip_segment_button_sum_off">Кнопка «Прапусціць» паказана для ўсяго сегмента</string>
<string name="revanced_sb_general_skiptoast">Паказваць toast пры пропуску</string>
<string name="revanced_sb_general_skiptoast_sum_on">Тост паказваецца, калі сегмент аўтаматычна прапускаецца. Націсніце тут, каб убачыць прыклад</string>
<string name="revanced_sb_general_skiptoast_sum_off">Тост не паказваецца. Націсніце тут, каб убачыць прыклад</string>
<string name="revanced_sb_auto_hide_skip_button_duration">Працягласць кнопкі пропуску</string>
<string name="revanced_sb_auto_hide_skip_button_duration_sum">Як доўга паказваць кнопкі прапусціць і прапусціць да асноўнага моманту перад аўтаматычным схаваннем</string>
<string name="revanced_sb_general_skiptoast">Паказаць усплываючае паведамленне для адмены прапуску</string>
<string name="revanced_sb_general_skiptoast_sum_on">Усплываючае паведамленне паказваецца, калі сегмент аўтаматычна прапускаецца. Націсніце на ўсплываючае паведамленне, каб адмяніць прапуск</string>
<string name="revanced_sb_general_skiptoast_sum_off">Усплывальнае апавяшчэнне не паказваецца</string>
<string name="revanced_sb_toast_on_skip_duration">Працягласць усплывальнага апавяшчэння пра пропуск</string>
<string name="revanced_sb_toast_on_skip_duration_sum">Як доўга паказваць паведамленне пра адмену пропуску</string>
<string name="revanced_sb_duration_1s">1 секунда</string>
<string name="revanced_sb_duration_2s">2 секунды</string>
<string name="revanced_sb_duration_3s">3 секунды</string>
<string name="revanced_sb_duration_4s">4 секунды</string>
<string name="revanced_sb_duration_5s">5 секунд</string>
<string name="revanced_sb_duration_6s">6 секунд</string>
<string name="revanced_sb_duration_7s">7 секунд</string>
<string name="revanced_sb_duration_8s">8 секунд</string>
<string name="revanced_sb_duration_9s">9 секунд</string>
<string name="revanced_sb_duration_10s">10 секунд</string>
<string name="revanced_sb_general_time_without">Паказаць працягласць відэа без сегментаў</string>
<string name="revanced_sb_general_time_without_sum_on">Працягласць відэа мінус усе сегменты, паказана ў дужках побач з поўнай працягласцю відэа</string>
<string name="revanced_sb_general_time_without_sum_on">Даўжыня відэа без усіх сегментаў паказваецца на шкале пракруткі</string>
<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>
@@ -1264,9 +1295,9 @@ Second \"item\" text"</string>
<string name="revanced_gradient_loading_screen_title">Уключыць градыентны экран загрузкі</string>
<string name="revanced_gradient_loading_screen_summary_on">Экран загрузкі будзе мець градыентны фон</string>
<string name="revanced_gradient_loading_screen_summary_off">Экран загрузкі будзе мець суцэльны фон</string>
<string name="splash_screen_animation_style_title">Стыль застаўкі</string>
<string name="splash_screen_animation_style_entry_1">Колер</string>
<string name="splash_screen_animation_style_entry_2">Чорна-белы</string>
<string name="revanced_splash_screen_animation_style_title">Стыль застаўкі</string>
<string name="revanced_splash_screen_animation_style_entry_1">Колер</string>
<string name="revanced_splash_screen_animation_style_entry_2">Чорна-белы</string>
<string name="revanced_seekbar_custom_color_title">Уключыць уласны колер панэлі пошуку</string>
<string name="revanced_seekbar_custom_color_summary_on">Паказваецца карыстальніцкі колер панэлі пошуку</string>
<string name="revanced_seekbar_custom_color_summary_off">Паказаны зыходны колер панэлі пошуку</string>

View File

@@ -156,22 +156,13 @@ Second \"item\" text"</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">"Рафтовете са скрити, такива като:
• Актуални новини
• Продължавай да гледаш
• Разгледай още канали
• Пазаруване
• Гледай отново"</string>
<string name="revanced_hide_horizontal_shelves_summary_on">"Рафтовете са скрити, като:\n• Извънредни новини\n• Продължи гледането\n• Разгледайте още канали\n• Най-подходящи\n• Пазаруване\n• Гледайте отново"</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>
<!-- '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>
<!-- '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>
@@ -192,15 +183,12 @@ Second \"item\" text"</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_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">Рафтът \"Chip\" е скрит</string>
<string name="revanced_hide_chips_shelf_summary_off">Рафтовете със снимки се показват</string>
<string name="revanced_hide_expandable_chip_title">Скрий разширяемата карта под видеоклиповете</string>
<string name="revanced_hide_expandable_chip_summary_on">Разгъваемата карта е скрита</string>
<string name="revanced_hide_expandable_chip_summary_off">Разгъваемата карта е показана</string>
<string name="revanced_hide_expandable_chip_title">Скриване на разгъваемата карта</string>
<string name="revanced_hide_expandable_chip_summary_on">Разгъваемата карта под видеоклиповете е скрита</string>
<string name="revanced_hide_expandable_chip_summary_off">Разгъваемата карта под видеоклиповете е показана</string>
<string name="revanced_hide_community_posts_title">Скриване на публикациите от общността</string>
<string name="revanced_hide_community_posts_summary_on">Насоките на общността са скрити</string>
<string name="revanced_hide_community_posts_summary_off">Последните публикации са показани</string>
@@ -213,15 +201,9 @@ Second \"item\" text"</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_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_emergency_box_title">Скриване аварийните кутии</string>
<string name="revanced_hide_emergency_box_summary_on">Спешни кутии са скрити</string>
<string name="revanced_hide_emergency_box_summary_off">Спешни кутии са показани</string>
@@ -237,18 +219,18 @@ Second \"item\" text"</string>
<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_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_latest_posts_ads_title">Скриване на последните публикации</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_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_latest_posts_title">Скриване на последните публикации</string>
<string name="revanced_hide_latest_posts_summary_on">Най-новите публикации са скрити</string>
<string name="revanced_hide_latest_posts_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>
@@ -285,16 +267,39 @@ Second \"item\" text"</string>
<string name="revanced_hide_description_components_screen_title">Описание на видеото</string>
<string name="revanced_hide_description_components_screen_summary">Скриване или показване на компонентите за описание на видеоклиповете</string>
<string name="revanced_hide_filter_bar_screen_title">Лента с филтри</string>
<string name="revanced_hide_filter_bar_screen_summary">Скриване или показване на лентата за филтриране в емисията, резултатите от търсенето и свързаните видеоклипове</string>
<string name="revanced_hide_filter_bar_feed_in_feed_title">Скриване на горната лента с категории в емисията</string>
<string name="revanced_hide_filter_bar_feed_in_feed_summary_on">Скрита</string>
<string name="revanced_hide_filter_bar_feed_in_feed_summary_off">Показва се</string>
<string name="revanced_hide_filter_bar_screen_summary">Скриване или показване на лентата с филтри в емисиите, историята, резултатите от търсенето и свързаните видеоклипове</string>
<string name="revanced_hide_filter_bar_feed_in_feed_title">Скриване в емисии</string>
<string name="revanced_hide_filter_bar_feed_in_feed_summary_on">Скрити в емисии</string>
<string name="revanced_hide_filter_bar_feed_in_feed_summary_off">Показани в емисии</string>
<string name="revanced_hide_filter_bar_feed_in_history_title">Скриване в историята</string>
<string name="revanced_hide_filter_bar_feed_in_history_summary_on">Скрити в историята</string>
<string name="revanced_hide_filter_bar_feed_in_history_summary_off">Показани в историята</string>
<string name="revanced_hide_filter_bar_feed_in_search_title">Скриване в резултатите от търсенето</string>
<string name="revanced_hide_filter_bar_feed_in_search_summary_on">Скрито в резултатите от търсенето</string>
<string name="revanced_hide_filter_bar_feed_in_search_summary_off">Показано в резултатите от търсенето</string>
<string name="revanced_hide_filter_bar_feed_in_related_videos_title">Скриване в сродни видеоклипове</string>
<string name="revanced_hide_filter_bar_feed_in_related_videos_summary_on">Скриване в сродни видеоклипове</string>
<string name="revanced_hide_filter_bar_feed_in_related_videos_summary_off">Показано в сродни видеоклипове</string>
<string name="revanced_channel_screen_title">Страница на канала</string>
<string name="revanced_channel_screen_summary">Скриване или показване на компоненти на страницата на канала</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_links_preview_title">Скриване на преглед на връзки</string>
<string name="revanced_hide_links_preview_summary_on">Прегледът на връзки е скрит</string>
<string name="revanced_hide_links_preview_summary_off">Прегледът на връзки е показан</string>
<string name="revanced_hide_members_shelf_title">Скриване на рафта за членове</string>
<string name="revanced_hide_members_shelf_summary_on">Рафтът за членове е скрит</string>
<string name="revanced_hide_members_shelf_summary_off">Рафтът за членове е показан</string>
<!-- 'Visit Community' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_visit_community_button_title">Скриване на бутона \"Посетете общността\"</string>
<string name="revanced_hide_visit_community_button_summary_on">Бутонът \"Посетете общността\" е скрит</string>
<string name="revanced_hide_visit_community_button_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_comments_screen_title">Коментари</string>
<string name="revanced_comments_screen_summary">Скриване или показване на секцията за коментари</string>
<string name="revanced_hide_comments_ai_chat_summary_title">Скриване на резюмето на AI Chat</string>
@@ -303,24 +308,30 @@ Second \"item\" text"</string>
<string name="revanced_hide_comments_ai_summary_title">Скриване на резюмето на AI коментарите</string>
<string name="revanced_hide_comments_ai_summary_summary_on">Резюмето на коментарите е скрито</string>
<string name="revanced_hide_comments_ai_summary_summary_off">Резюмето на коментарите е показано</string>
<string name="revanced_hide_comments_channel_guidelines_title">Скриване на насоките на канала</string>
<string name="revanced_hide_comments_channel_guidelines_summary_on">Указанията за канала са скрити</string>
<string name="revanced_hide_comments_channel_guidelines_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_community_guidelines_title">Скриване на указанията за общността</string>
<string name="revanced_hide_comments_community_guidelines_summary_on">Насоките на общността са скрити</string>
<string name="revanced_hide_comments_community_guidelines_summary_off">Насоките на общността са показани</string>
<string name="revanced_hide_comments_create_a_short_button_title">Бутон за създаване на Shorts</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_timestamp_button_title">Скриване на бутона за времеви печат</string>
<string name="revanced_hide_comments_timestamp_button_summary_on">Бутонът за времеви печат е скрит</string>
<string name="revanced_hide_comments_timestamp_button_summary_off">Бутонът за времеви печат е показан</string>
<string name="revanced_hide_comments_preview_comment_title">Преглед на коментари</string>
<string name="revanced_hide_comments_preview_comment_summary_on">Прегледа на коментари е скрит</string>
<string name="revanced_hide_comments_preview_comment_summary_off">Прегледа на коментари се показва</string>
<string name="revanced_hide_comments_thanks_button_title">Скрий бутона за харесване</string>
<string name="revanced_hide_comments_thanks_button_summary_on">Бутона за благодарност е скрит</string>
<string name="revanced_hide_comments_thanks_button_summary_off">Бутона за благодарност се показва</string>
<string name="revanced_hide_comments_timestamp_button_title">Скриване на бутона за клеймо за време</string>
<string name="revanced_hide_comments_timestamp_button_summary_on">Бутонът за времеви печат е скрит</string>
<string name="revanced_hide_comments_timestamp_button_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>
@@ -374,44 +385,41 @@ Second \"item\" text"</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_creator_store_shelf_title">Скриване на рафта на магазина на създателя</string>
<string name="revanced_hide_creator_store_shelf_summary_on">Рафтът на магазина под видеоплейъра е скрит</string>
<string name="revanced_hide_creator_store_shelf_summary_off">Рафтът на магазина под видеоплейъра е показан</string>
<string name="revanced_hide_end_screen_store_banner_title">Скрий банера за реклама в края на екрана</string>
<string name="revanced_hide_end_screen_store_banner_summary_on">Банерът на магазина е скрит</string>
<string name="revanced_hide_end_screen_store_banner_summary_off">Банерът на магазина се показва</string>
<string name="revanced_hide_fullscreen_ads_title">Скриване на рекламите в режим на цял екран</string>
<string name="revanced_hide_fullscreen_ads_summary_on">"Всички реклами на цял екран са скрити
Тази функция е налична само за по-стари устройства"</string>
<string name="revanced_hide_fullscreen_ads_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>
<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_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_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>
<string name="revanced_hide_self_sponsor_ads_title">Скриване на самоспонсорирани карти</string>
<string name="revanced_hide_self_sponsor_ads_summary_on">Самоспонсорираните карти са скрити</string>
<string name="revanced_hide_self_sponsor_ads_summary_off">Самоспонсорираните карти са показани</string>
<string name="revanced_hide_products_banner_title">Скриване на банера \"Преглед на продукти\"</string>
<string name="revanced_hide_products_banner_summary_on">Банерът е скрит</string>
<string name="revanced_hide_products_banner_summary_off">Банерът е показан</string>
<string name="revanced_hide_end_screen_store_banner_title">Скрий банера за реклама в края на екрана</string>
<string name="revanced_hide_end_screen_store_banner_summary_on">Банерът на магазина е скрит</string>
<string name="revanced_hide_end_screen_store_banner_summary_off">Банерът на магазина се показва</string>
<string name="revanced_hide_player_store_shelf_title">Скриване на рафта за пазаруване</string>
<string name="revanced_hide_player_store_shelf_summary_on">Рафта за пазаруване е скрит</string>
<string name="revanced_hide_player_store_shelf_summary_off">Рафта за пазаруване се показва</string>
<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>
<!-- '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_shopping_links_summary_on">Връзките в описанието на видеоклипа са скрити</string>
<string name="revanced_hide_shopping_links_summary_off">Връзките в описанието на видеоклипа са показани</string>
<!-- 'View products' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_view_products_banner_title">Скриване на банера „Преглед на продукти“</string>
<string name="revanced_hide_view_products_banner_summary_on">Банерът в наслагването на видеоклипа е скрит</string>
<string name="revanced_hide_view_products_banner_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_merchandise_banners_title">Скриване на банерите за стоки</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>
@@ -773,6 +781,9 @@ Second \"item\" text"</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_effect_button_title">Скрий бутона за ефект</string>
<string name="revanced_hide_shorts_effect_button_summary_on">Бутонът за ефекти е скрит</string>
<string name="revanced_hide_shorts_effect_button_summary_off">Бутонът за ефекти е видим</string>
<string name="revanced_hide_shorts_green_screen_button_title">Скриване на бутона Green screen</string>
<string name="revanced_hide_shorts_green_screen_button_summary_on">Бутон \"Зелен екран\" е скрит</string>
<string name="revanced_hide_shorts_green_screen_button_summary_off">Бутон \"Зелен екран\" се показва</string>
@@ -820,7 +831,7 @@ Second \"item\" text"</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_full_video_link_label_title">Скриване на етикет за връзка към видеоклипа</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>
<string name="revanced_hide_shorts_sound_button_title">Скрийте бутона „Звук“</string>
@@ -954,11 +965,25 @@ Second \"item\" text"</string>
<string name="revanced_sb_enable_auto_hide_skip_segment_button">Автоматично скриване на бутона \"Пропускане\"</string>
<string name="revanced_sb_enable_auto_hide_skip_segment_button_sum_on">Бутона за пропускане се скрива след няколко секунди</string>
<string name="revanced_sb_enable_auto_hide_skip_segment_button_sum_off">Бутонът \"Пропускане\" е показан за целия сегмент</string>
<string name="revanced_sb_general_skiptoast">Показване на toast при пропускане</string>
<string name="revanced_sb_general_skiptoast_sum_on">Показване на известие при автоматично пропусната част. Докоснете тук за пример</string>
<string name="revanced_sb_general_skiptoast_sum_off">Известието не се показва. Докоснете тук за пример</string>
<string name="revanced_sb_auto_hide_skip_button_duration">Продължителност на бутона за пропускане</string>
<string name="revanced_sb_auto_hide_skip_button_duration_sum">Колко дълго да се показват бутоните за пропускане и преминаване към акцент, преди да се скрият автоматично</string>
<string name="revanced_sb_general_skiptoast">Показване на известие за отмяна на пропускането</string>
<string name="revanced_sb_general_skiptoast_sum_on">Показва се известие, когато сегмент е автоматично пропуснат. Докоснете известието, за да отмените пропускането</string>
<string name="revanced_sb_general_skiptoast_sum_off">Изскачащо съобщение не се показва</string>
<string name="revanced_sb_toast_on_skip_duration">Продължителност на изскачащото съобщение за пропускане</string>
<string name="revanced_sb_toast_on_skip_duration_sum">Колко дълго да се показва известието за отмяна на пропускането</string>
<string name="revanced_sb_duration_1s">1 секунда</string>
<string name="revanced_sb_duration_2s">2 секунди</string>
<string name="revanced_sb_duration_3s">3 секунди</string>
<string name="revanced_sb_duration_4s">4 секунди</string>
<string name="revanced_sb_duration_5s">5 секунди</string>
<string name="revanced_sb_duration_6s">6 секунди</string>
<string name="revanced_sb_duration_7s">7 секунди</string>
<string name="revanced_sb_duration_8s">8 секунди</string>
<string name="revanced_sb_duration_9s">9 секунди</string>
<string name="revanced_sb_duration_10s">10 секунди</string>
<string name="revanced_sb_general_time_without">Показване на дължината на видеото без сигментите</string>
<string name="revanced_sb_general_time_without_sum_on">Дължината на видеото без всички части показана в скоби до цялата дължина</string>
<string name="revanced_sb_general_time_without_sum_on">Дължината на видеото без всички сегменти се показва на лентата за напредък</string>
<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>
@@ -1263,9 +1288,9 @@ Second \"item\" text"</string>
<string name="revanced_gradient_loading_screen_title">Фон на екрана при зареждане на видео</string>
<string name="revanced_gradient_loading_screen_summary_on">Екранът за зареждане ще има градиентен фон</string>
<string name="revanced_gradient_loading_screen_summary_off">Екранът за зареждане ще има плътен фон</string>
<string name="splash_screen_animation_style_title">Стил на началния екран</string>
<string name="splash_screen_animation_style_entry_1">Цвят</string>
<string name="splash_screen_animation_style_entry_2">Черно и бяло</string>
<string name="revanced_splash_screen_animation_style_title">Стил на началния екран</string>
<string name="revanced_splash_screen_animation_style_entry_1">Цвят</string>
<string name="revanced_splash_screen_animation_style_entry_2">Черно и бяло</string>
<string name="revanced_seekbar_custom_color_title">Промяна на цвета на индикатора за време</string>
<string name="revanced_seekbar_custom_color_summary_on">Показва се персонализиран цвят на лентата за напредък</string>
<string name="revanced_seekbar_custom_color_summary_off">Показва се оригиналния цвят на лентата за напредък</string>

View File

@@ -152,10 +152,11 @@ MicroG-এর জন্য ব্যাটারি অপ্টিমাইজ
<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">"শেল্ফগুলি লুকানো হয় যেমন:
তাজা সংবাদ
• দেখা চালিয়ে যান
• আরও চ্যানেল অন্বেষণ করুন
<string name="revanced_hide_horizontal_shelves_summary_on">"শেল্ফগুলি লুকানো আছে, যেমন:
ব্রেকিং নিউজ
• দেখা চালিে যান
• আরও চ্যানেল এক্সপ্লোর করুন
• সবচেয়ে প্রাসঙ্গিক
• কেনাকাটা
• আবার দেখুন"</string>
<string name="revanced_hide_horizontal_shelves_summary_off">শেলফ প্রদর্শিত হয়েছে</string>
@@ -164,10 +165,6 @@ MicroG-এর জন্য ব্যাটারি অপ্টিমাইজ
<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>
<!-- '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>
<!-- '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>
@@ -188,15 +185,12 @@ MicroG-এর জন্য ব্যাটারি অপ্টিমাইজ
<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_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_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>
@@ -209,15 +203,9 @@ MicroG-এর জন্য ব্যাটারি অপ্টিমাইজ
<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_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_emergency_box_title">জরুরী বাক্সগুলো লুকান</string>
<string name="revanced_hide_emergency_box_summary_on">জরুরী বাক্সগুলো লুকিয়ে রয়েছে</string>
<string name="revanced_hide_emergency_box_summary_off">জরুরী বাক্সগুলো প্রদর্শিত হয়েছে</string>
@@ -233,18 +221,18 @@ MicroG-এর জন্য ব্যাটারি অপ্টিমাইজ
<string name="revanced_hide_playables_title">খেলার উপযুক্ত লুকান</string>
<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_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_latest_posts_ads_title">সর্বশেষ পোস্ট লুকান</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_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_latest_posts_title">সর্বশেষ পোস্ট লুকান</string>
<string name="revanced_hide_latest_posts_summary_on">সর্বশেষ পোস্ট লুকিয়ে রয়েছে</string>
<string name="revanced_hide_latest_posts_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>
@@ -281,16 +269,39 @@ MicroG-এর জন্য ব্যাটারি অপ্টিমাইজ
<string name="revanced_hide_description_components_screen_title">ভিডিওর বিবরণ</string>
<string name="revanced_hide_description_components_screen_summary">ভিডিও বিবরণ এর উপাদান লুকান বা প্রদর্শন করুন</string>
<string name="revanced_hide_filter_bar_screen_title">ফিল্টার বার</string>
<string name="revanced_hide_filter_bar_screen_summary">ফিড, অনুসন্ধানের ফলাফল এবং সম্পর্কিত ভিডিওগুলতে ফিল্টার বার লুকান অথবা দেখান</string>
<string name="revanced_hide_filter_bar_screen_summary">ফিড, ইতিহাস, অনুসন্ধান ফলাফল এবং সম্পর্কিত ভিডিওগুলিতে ফিল্টার বার লুকান বা দেখান</string>
<string name="revanced_hide_filter_bar_feed_in_feed_title">ফিডে লুকান</string>
<string name="revanced_hide_filter_bar_feed_in_feed_summary_on">ফিডে লুকিয়ে রয়েছে</string>
<string name="revanced_hide_filter_bar_feed_in_feed_summary_off">ফিডে প্রদর্শিত হয়েছে</string>
<string name="revanced_hide_filter_bar_feed_in_feed_summary_on">ফিডে লুকানো</string>
<string name="revanced_hide_filter_bar_feed_in_feed_summary_off">ফিডে দেখানো হয়েছে</string>
<string name="revanced_hide_filter_bar_feed_in_history_title">ইতিহাসে লুকান</string>
<string name="revanced_hide_filter_bar_feed_in_history_summary_on">ইতিহাসে লুকানো</string>
<string name="revanced_hide_filter_bar_feed_in_history_summary_off">ইতিহাসে দেখানো হয়েছে</string>
<string name="revanced_hide_filter_bar_feed_in_search_title">অনুসন্ধান ফলাফলে লুকান</string>
<string name="revanced_hide_filter_bar_feed_in_search_summary_on">অনুসন্ধান ফলাফলে লুকানো আছে</string>
<string name="revanced_hide_filter_bar_feed_in_search_summary_off">অনুসন্ধান ফলাফলে দেখানো হয়েছে</string>
<string name="revanced_hide_filter_bar_feed_in_related_videos_title">সম্পর্কিত ভিডিওতে লুকান</string>
<string name="revanced_hide_filter_bar_feed_in_related_videos_summary_on">সম্পর্কিত ভিডিওতে লুকিয়ে রয়েছে</string>
<string name="revanced_hide_filter_bar_feed_in_related_videos_summary_off">সম্পর্কিত ভিডিওতে প্রদর্শিত হয়েছে</string>
<string name="revanced_channel_screen_title">চ্যানেল পৃষ্ঠা</string>
<string name="revanced_channel_screen_summary">চ্যানেল পৃষ্ঠার উপাদানগুলি লুকান বা দেখান</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_links_preview_title">লিঙ্ক পূর্বরূপ লুকান</string>
<string name="revanced_hide_links_preview_summary_on">লিঙ্ক পূর্বরূপ লুকানো আছে</string>
<string name="revanced_hide_links_preview_summary_off">লিঙ্ক পূর্বরূপ দেখানো আছে</string>
<string name="revanced_hide_members_shelf_title">সদস্য শেল্ফ লুকান</string>
<string name="revanced_hide_members_shelf_summary_on">সদস্য শেল্ফ লুকানো আছে</string>
<string name="revanced_hide_members_shelf_summary_off">সদস্যদের শেল্ফ দেখানো হয়েছে</string>
<!-- 'Visit Community' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_visit_community_button_title">\'কমিউনিটি দেখুন\' বোতাম লুকান</string>
<string name="revanced_hide_visit_community_button_summary_on">\'কমিউনিটি দেখুন\' বোতাম লুকানো হয়েছে</string>
<string name="revanced_hide_visit_community_button_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_comments_screen_title">মন্তব্য</string>
<string name="revanced_comments_screen_summary">মন্তব্য বিভাগের উপাদানগুলি লুকান বা দেখান৷</string>
<string name="revanced_hide_comments_ai_chat_summary_title">এআই চ্যাট সংক্ষিপ্তসার লুকান</string>
@@ -299,24 +310,30 @@ MicroG-এর জন্য ব্যাটারি অপ্টিমাইজ
<string name="revanced_hide_comments_ai_summary_title">এআই মন্তব্য সংক্ষিপ্তসার লুকান</string>
<string name="revanced_hide_comments_ai_summary_summary_on">মন্তব্য সংক্ষিপ্তসার লুকানো আছে</string>
<string name="revanced_hide_comments_ai_summary_summary_off">মন্তব্য সংক্ষিপ্তসার দেখানো হয়েছে</string>
<string name="revanced_hide_comments_channel_guidelines_title">চ্যানেল নির্দেশিকা লুকান</string>
<string name="revanced_hide_comments_channel_guidelines_summary_on">চ্যানেল নির্দেশিকা লুকানো হয়েছে</string>
<string name="revanced_hide_comments_channel_guidelines_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_community_guidelines_title">কমিউনিটি নির্দেশিকা লুকান</string>
<string name="revanced_hide_comments_community_guidelines_summary_on">কমিউনিটি নির্দেশিকা লুকানো আছে</string>
<string name="revanced_hide_comments_community_guidelines_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">একটি Shorts বোতাম তৈরি করুন লুকানো আছে</string>
<string name="revanced_hide_comments_create_a_short_button_summary_off">একটি Shorts বোতাম তৈরি করুন দেখানো হয়েছে</string>
<string name="revanced_hide_comments_timestamp_button_title">সময় চিহ্নিত করার বোতাম লুকান</string>
<string name="revanced_hide_comments_timestamp_button_summary_on">সময় চিহ্নিত করার বোতাম লুকানো আছে</string>
<string name="revanced_hide_comments_timestamp_button_summary_off">সময় চিহ্নিত করার বোতাম দেখানো হয়েছে</string>
<string name="revanced_hide_comments_preview_comment_title">মন্তব্যের পূর্বরূপ লুকান</string>
<string name="revanced_hide_comments_preview_comment_summary_on">মন্তব্যের পূর্বরূপ লুকিয়ে রয়েছে</string>
<string name="revanced_hide_comments_preview_comment_summary_off">মন্তব্যের পূর্বরূপ প্রদর্শিত হয়েছে</string>
<string name="revanced_hide_comments_thanks_button_title">ধন্যবাদ বাটন লুকান</string>
<string name="revanced_hide_comments_thanks_button_summary_on">ধন্যবাদ বোতাম লুকিয়ে রয়েছে</string>
<string name="revanced_hide_comments_thanks_button_summary_off">ধন্যবাদ বোতাম প্রদর্শিত হয়েছে</string>
<string name="revanced_hide_comments_timestamp_button_title">টাইমস্ট্যাম্প বোতাম লুকান</string>
<string name="revanced_hide_comments_timestamp_button_summary_on">সময় চিহ্নিত করার বোতাম লুকানো আছে</string>
<string name="revanced_hide_comments_timestamp_button_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>
@@ -370,44 +387,41 @@ MicroG-এর জন্য ব্যাটারি অপ্টিমাইজ
<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_creator_store_shelf_title">ক্রিয়েটর স্টোর শেল্ফ লুকান</string>
<string name="revanced_hide_creator_store_shelf_summary_on">ভিডিও প্লেয়ারের নিচে স্টোর শেল্ফ লুকানো হয়েছে</string>
<string name="revanced_hide_creator_store_shelf_summary_off">ভিডিও প্লেয়ারের নিচে স্টোর শেল্ফ দেখানো আছে</string>
<string name="revanced_hide_end_screen_store_banner_title">শেষ পর্দার স্টোর ব্যানার লুকান</string>
<string name="revanced_hide_end_screen_store_banner_summary_on">স্টোর ব্যানারটি লুকানো আছে</string>
<string name="revanced_hide_end_screen_store_banner_summary_off">স্টোর ব্যানারটি প্রদর্শন করা হবে</string>
<string name="revanced_hide_fullscreen_ads_title">পূর্ণ স্ক্রীন প্যানেল লুকান</string>
<string name="revanced_hide_fullscreen_ads_summary_on">"পূর্ণ পর্দার বিজ্ঞাপন লুকানো হয়
এই বৈশিষ্ট্যটি কেবল পুরনো ডিভাইসের জন্য উপলব্ধ"</string>
<string name="revanced_hide_fullscreen_ads_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>
<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_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_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>
<string name="revanced_hide_self_sponsor_ads_title">স্ব-স্পন্সর কার্ড লুকান</string>
<string name="revanced_hide_self_sponsor_ads_summary_on">স্ব-স্পন্সর কার্ড লুকিয়ে রয়েছে</string>
<string name="revanced_hide_self_sponsor_ads_summary_off">স্ব-স্পন্সর কার্ড প্রদর্শিত হয়েছে</string>
<string name="revanced_hide_products_banner_title">\'পণ্য দেখুন\' ব্যানার লুকান</string>
<string name="revanced_hide_products_banner_summary_on">ব্যানার লুকিয়ে রয়েছে</string>
<string name="revanced_hide_products_banner_summary_off">ব্যানার প্রদর্শিত হয়েছে</string>
<string name="revanced_hide_end_screen_store_banner_title">শেষ পর্দার স্টোর ব্যানার লুকান</string>
<string name="revanced_hide_end_screen_store_banner_summary_on">স্টোর ব্যানারটি লুকানো আছে</string>
<string name="revanced_hide_end_screen_store_banner_summary_off">স্টোর ব্যানারটি প্রদর্শন করা হব</string>
<string name="revanced_hide_player_store_shelf_title">প্লেয়ার শপিং শেলফ লুকান</string>
<string name="revanced_hide_player_store_shelf_summary_on">শপিং শেলফ লুকানো আছে</string>
<string name="revanced_hide_player_store_shelf_summary_off">শপিং শেলফ দেখানো হচ্ছে</string>
<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>
<!-- '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_shopping_links_title">কেনাকাটার লিঙ্ক লুকান</string>
<string name="revanced_hide_shopping_links_summary_on">ভিডিও বিবরণে লিঙ্কগুলি লুকানো আছে</string>
<string name="revanced_hide_shopping_links_summary_off">ভিডিও বিবরণে লিঙ্কগুলি দেখানো আছে</string>
<!-- 'View products' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_view_products_banner_title">\'পণ্য দেখুন\' ব্যানার লুকান</string>
<string name="revanced_hide_view_products_banner_summary_on">ভিডিও ওভারলেতে থাকা ব্যানারটি লুকানো হয়েছ</string>
<string name="revanced_hide_view_products_banner_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_merchandise_banners_title">পণ্যদ্রব্য ব্যানার লুকান</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 প্রিমিয়াম প্রচারণা লুকান</string>
@@ -769,6 +783,9 @@ MicroG-এর জন্য ব্যাটারি অপ্টিমাইজ
<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_effect_button_title">ইফেক্ট বোতাম লুকান</string>
<string name="revanced_hide_shorts_effect_button_summary_on">ইফেক্ট বাটন লুকানো আছে</string>
<string name="revanced_hide_shorts_effect_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>
@@ -816,7 +833,7 @@ MicroG-এর জন্য ব্যাটারি অপ্টিমাইজ
<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_full_video_link_label_title">সম্পূর্ণ ভিডিও লিঙ্ক লেবেল লুকান</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>
<string name="revanced_hide_shorts_sound_button_title">সাউন্ড বোতাম লুকান</string>
@@ -950,11 +967,25 @@ YouTube সেটিংসে অটো প্লে পরিবর্তন
<string name="revanced_sb_enable_auto_hide_skip_segment_button">Skip বোতামটি স্বয়ংক্রিয়ভাবে লুকান</string>
<string name="revanced_sb_enable_auto_hide_skip_segment_button_sum_on">কয়েক সেকেন্ড পরে স্কিপ বোতাম লুকিয়ে যায়</string>
<string name="revanced_sb_enable_auto_hide_skip_segment_button_sum_off">পুরো অংশের জন্য Skip বোতাম দেখানো হয়েছে</string>
<string name="revanced_sb_general_skiptoast">বাদ দেওয়ার সময় একটি toast দেখান</string>
<string name="revanced_sb_general_skiptoast_sum_on">েগমেন্ট স্বয়ংক্রিয়ভাবে এড়িয়ে যেতে একটি টোস্ট দেখানো হয়। উদাহরণ দেখতে এখানে ট্যাপ করুন</string>
<string name="revanced_sb_general_skiptoast_sum_off">টোস্ট দেখানো হচ্ছে না। উদাহরণ দেখতে এখানে ট্যাপ করু</string>
<string name="revanced_sb_auto_hide_skip_button_duration">স্কিপ বোতামের সময়কাল</string>
<string name="revanced_sb_auto_hide_skip_button_duration_sum">স্বয়ংক্রিয়ভাবে লুকানোর আগে এড়িয়ে যাওয়া এবং হাইলাইট করা বোতামগুলি কতক্ষণ দেখানো হবে</string>
<string name="revanced_sb_general_skiptoast">স্কিপ পূর্বাবস্থায় ফিরিয়ে আনার টোস্ট দেখা</string>
<string name="revanced_sb_general_skiptoast_sum_on">যখন একটি সেগমেন্ট স্বয়ংক্রিয়ভাবে এড়িয়ে যাওয়া হয় তখন টোস্ট দেখানো হয়। স্কিপ পূর্বাবস্থায় ফিরিয়ে আনতে টোস্ট বিজ্ঞপ্তিতে ট্যাপ করুন</string>
<string name="revanced_sb_general_skiptoast_sum_off">টোস্ট দেখানো হয়নি</string>
<string name="revanced_sb_toast_on_skip_duration">টোস্ট এড়িয়ে যাওয়ার সময়কাল</string>
<string name="revanced_sb_toast_on_skip_duration_sum">এড়িয়ে যাওয়া বাতিল করার টোস্ট কতক্ষণ দেখানো হবে</string>
<string name="revanced_sb_duration_1s">১ সেকেন্ড</string>
<string name="revanced_sb_duration_2s">২ সেকেন্ড</string>
<string name="revanced_sb_duration_3s">৩ সেকেন্ড</string>
<string name="revanced_sb_duration_4s"> সেকেন্ড</string>
<string name="revanced_sb_duration_5s">৫ সেকেন্ড</string>
<string name="revanced_sb_duration_6s">৬ সেকেন্ড</string>
<string name="revanced_sb_duration_7s"> সেকেন্ড</string>
<string name="revanced_sb_duration_8s">৮ সেকেন্ড</string>
<string name="revanced_sb_duration_9s">৯ সেকেন্ড</string>
<string name="revanced_sb_duration_10s">১০ সেকেন্ড</string>
<string name="revanced_sb_general_time_without">সেগমেন্ট ছাড়া ভিডিওর দৈর্ঘ্য দেখান</string>
<string name="revanced_sb_general_time_without_sum_on">সমস্ত সেগমেন্ট ছাড়াই ভিডিওর দৈর্ঘ্য, পূর্ণ ভিডিওর দৈর্ঘ্যের পাশে বন্ধনীতে উল্লেখ করা হয়</string>
<string name="revanced_sb_general_time_without_sum_on">ভিডিওর দৈর্ঘ্য থেকে সব অংশ বাদ দিয়ে সিকারবারে দেখানো হবে</string>
<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>
@@ -1259,9 +1290,9 @@ Miniplayer স্ক্রিন থেকে বামে বা ডানে
<string name="revanced_gradient_loading_screen_title">গ্রেডিয়েন্ট লোডিং স্ক্রিণ সক্রিয় করুন</string>
<string name="revanced_gradient_loading_screen_summary_on">লোডিং স্ক্রিণে একটি গ্রেডিয়েন্ড ব্যাকগ্রাউন্ড থাকবে</string>
<string name="revanced_gradient_loading_screen_summary_off">লোডিং স্ক্রিণে একটি সলিড ব্যাকগ্রাউন্ড থাকবে</string>
<string name="splash_screen_animation_style_title">স্প্ল্যাশ স্ক্রিন শৈলী</string>
<string name="splash_screen_animation_style_entry_1">রং</string>
<string name="splash_screen_animation_style_entry_2">কালো এবং সাদা</string>
<string name="revanced_splash_screen_animation_style_title">স্প্ল্যাশ স্ক্রিন শৈলী</string>
<string name="revanced_splash_screen_animation_style_entry_1">রং</string>
<string name="revanced_splash_screen_animation_style_entry_2">কালো এবং সাদা</string>
<string name="revanced_seekbar_custom_color_title">সিকবারে নিজস্ব রং সক্রিয় করুন</string>
<string name="revanced_seekbar_custom_color_summary_on">সিকবারে নিজস্ব রং প্রদর্শিত হয়েছে</string>
<string name="revanced_seekbar_custom_color_summary_off">সিকবারে মূল রং প্রদর্শিত হয়েছে</string>

View File

@@ -41,12 +41,14 @@ Second \"item\" text"</string>
<patch id="layout.hide.general.hideLayoutComponentsPatch">
<!-- 'Join' should be translated using the same localized wording YouTube displays.
This appears in the video player for certain videos. -->
<!-- 'For you' should be translated using the same localized wording YouTube displays. -->
<!-- '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. -->
<!-- 'People also watched' and 'You might also like' should be translated using the same localized wording YouTube displays. -->
<!-- 'Show more' should be translated with the same localized wording that YouTube displays.
This button usually appears when searching for a YT creator. -->
<!-- 'For You' should be translated using the same localized wording YouTube displays. -->
<!-- 'Visit Community' should be translated with the same localized wording that YouTube displays. -->
<!-- 'Visit store' should be translated with the same localized wording that YouTube displays. -->
<!-- https://logos.fandom.com/wiki/YouTube/Yoodles -->
<!-- '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. -->
<!-- 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.
@@ -55,8 +57,8 @@ Second \"item\" text"</string>
<!-- Translations of this should not be longer than the original English text, otherwise the text can be clipped and not entirely shown. -->
</patch>
<patch id="ad.general.hideAdsResourcePatch">
<!-- 'Visit store' should be translated with the same localized wording that YouTube displays. -->
<!-- Translations of this should not be longer than the original English text, otherwise the text can be clipped and not entirely shown. -->
<!-- 'View products' should be translated with the same localized wording that YouTube displays. -->
</patch>
<patch id="ad.getpremium.hideGetPremiumPatch">
</patch>

View File

@@ -41,12 +41,14 @@ Second \"item\" text"</string>
<patch id="layout.hide.general.hideLayoutComponentsPatch">
<!-- 'Join' should be translated using the same localized wording YouTube displays.
This appears in the video player for certain videos. -->
<!-- 'For you' should be translated using the same localized wording YouTube displays. -->
<!-- '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. -->
<!-- 'People also watched' and 'You might also like' should be translated using the same localized wording YouTube displays. -->
<!-- 'Show more' should be translated with the same localized wording that YouTube displays.
This button usually appears when searching for a YT creator. -->
<!-- 'For You' should be translated using the same localized wording YouTube displays. -->
<!-- 'Visit Community' should be translated with the same localized wording that YouTube displays. -->
<!-- 'Visit store' should be translated with the same localized wording that YouTube displays. -->
<!-- https://logos.fandom.com/wiki/YouTube/Yoodles -->
<!-- '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. -->
<!-- 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.
@@ -55,8 +57,8 @@ Second \"item\" text"</string>
<!-- Translations of this should not be longer than the original English text, otherwise the text can be clipped and not entirely shown. -->
</patch>
<patch id="ad.general.hideAdsResourcePatch">
<!-- 'Visit store' should be translated with the same localized wording that YouTube displays. -->
<!-- Translations of this should not be longer than the original English text, otherwise the text can be clipped and not entirely shown. -->
<!-- 'View products' should be translated with the same localized wording that YouTube displays. -->
</patch>
<patch id="ad.getpremium.hideGetPremiumPatch">
</patch>

View File

@@ -156,22 +156,19 @@ Nebudete informováni o žádné neočekávané události."</string>
<string name="revanced_hide_channel_watermark_summary_on">Vodoznak kanálu je skrytý</string>
<string name="revanced_hide_channel_watermark_summary_off">Vodoznak je zobrazen</string>
<string name="revanced_hide_horizontal_shelves_title">Skrýt horizontální police</string>
<string name="revanced_hide_horizontal_shelves_summary_on">"Police jsou skryté, například:
• Novinky
• Pokračovat v sledování
<string name="revanced_hide_horizontal_shelves_summary_on">"Police jsou skryty, například:
• Nejnovější zprávy
• Pokračovat ve sledování
• Prozkoumat další kanály
• Nákupy
Podívat se znovu"</string>
• Nejdůležitější
Nakupování
• Zhlédnout znovu"</string>
<string name="revanced_hide_horizontal_shelves_summary_off">Police jsou zobrazené</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">Skrýt tlačítko Připojit se</string>
<string name="revanced_hide_join_membership_button_summary_on">Tlačitko je skryté</string>
<string name="revanced_hide_join_membership_button_summary_off">Tlačítko je zobrazeno</string>
<!-- 'For you' should be translated using the same localized wording YouTube displays. -->
<string name="revanced_hide_for_you_shelf_title">Skrýt panel „Pro vás“</string>
<string name="revanced_hide_for_you_shelf_summary_on">Panel polic ve stránce kanálu je skrytý</string>
<string name="revanced_hide_for_you_shelf_summary_off">Panel polic ve stránce kanálu je zobrazen</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">Skrýt tlačitko \'Upozorněte mě\'</string>
@@ -192,15 +189,12 @@ Nebudete informováni o žádné neočekávané události."</string>
<string name="revanced_hide_timed_reactions_title">Skrýt reakce zobrazené po čase</string>
<string name="revanced_hide_timed_reactions_summary_on">Reakce zobrazené po čase jsou skryty</string>
<string name="revanced_hide_timed_reactions_summary_off">Reakce se zobrazují po čase</string>
<string name="revanced_hide_channel_guidelines_title">Skrýt pravidla kanálu</string>
<string name="revanced_hide_channel_guidelines_summary_on">Pokyny kanálu sa nezobrazujú</string>
<string name="revanced_hide_channel_guidelines_summary_off">Zobrazují se pokyny kanálu</string>
<string name="revanced_hide_chips_shelf_title">Skryť police \"Ďalsej videá\"</string>
<string name="revanced_hide_chips_shelf_summary_on">Police \"Další videá\" sa nezobrazuje</string>
<string name="revanced_hide_chips_shelf_summary_off">Zobrazuje sa polícia \"Další videá\"</string>
<string name="revanced_hide_expandable_chip_title">Skrýt rozbalovací kartu pod videy</string>
<string name="revanced_hide_expandable_chip_summary_on">Rozbalitelná karta je skrytá</string>
<string name="revanced_hide_expandable_chip_summary_off">Rozbalitelná karta je zobrazena</string>
<string name="revanced_hide_expandable_chip_title">Skrýt rozbalitelnou kartu</string>
<string name="revanced_hide_expandable_chip_summary_on">Rozbalitelná karta pod videi je skryta</string>
<string name="revanced_hide_expandable_chip_summary_off">Rozbalitelná karta pod videi je zobrazena</string>
<string name="revanced_hide_community_posts_title">Skrýt příspěvky komunity</string>
<string name="revanced_hide_community_posts_summary_on">Příspěvky komunity jsou skryté</string>
<string name="revanced_hide_community_posts_summary_off">Příspěvky komunity jsou zobrazeny</string>
@@ -213,15 +207,9 @@ Nebudete informováni o žádné neočekávané události."</string>
<string name="revanced_hide_feed_survey_title">Skrýt průzkumy feedu</string>
<string name="revanced_hide_feed_survey_summary_on">Průzkumy feedu jsou skryty</string>
<string name="revanced_hide_feed_survey_summary_off">Průzkumy feedu jsou zobrazeny</string>
<string name="revanced_hide_community_guidelines_title">Skrýt pokyny pro komunitu</string>
<string name="revanced_hide_community_guidelines_summary_on">Pokyny pro komunitu jsou skryty</string>
<string name="revanced_hide_community_guidelines_summary_off">Pokyny pro komunitu se zobrazují</string>
<string name="revanced_hide_subscribers_community_guidelines_title">Skrýt pokyny pro odběratele</string>
<string name="revanced_hide_subscribers_community_guidelines_summary_on">Pokyny pro komunitu předplatitelů jsou skryté</string>
<string name="revanced_hide_subscribers_community_guidelines_summary_off">Pokyny pro komunitu odběratelů se zobrazují</string>
<string name="revanced_hide_channel_member_shelf_title">Skryj polici členů kanálu</string>
<string name="revanced_hide_channel_member_shelf_summary_on">Polici členů kanálu je skrytá</string>
<string name="revanced_hide_channel_member_shelf_summary_off">Police na kanálu jsou zobrazeny</string>
<string name="revanced_hide_emergency_box_title">Skrýt nouzová pole</string>
<string name="revanced_hide_emergency_box_summary_on">Nouzová pole jsou skrytá</string>
<string name="revanced_hide_emergency_box_summary_off">Nouzová pole jsou zobrazena</string>
@@ -237,18 +225,18 @@ Nebudete informováni o žádné neočekávané události."</string>
<string name="revanced_hide_playables_title">Skrýt Playables</string>
<string name="revanced_hide_playables_summary_on">Playables jsou skryté</string>
<string name="revanced_hide_playables_summary_off">Přehrávání se zobrazuje</string>
<string name="revanced_hide_quick_actions_title">Skrýt rychlé akce v režimu celé obrazovky</string>
<string name="revanced_hide_quick_actions_summary_on">Rychlé akce jsou skryty</string>
<string name="revanced_hide_quick_actions_summary_off">Rychlé akce se zobrazují</string>
<string name="revanced_hide_related_videos_title">Skrýt související videa v rychlých akcích</string>
<string name="revanced_hide_related_videos_summary_on">Související videa jsou skryta</string>
<string name="revanced_hide_related_videos_summary_off">Související videa se zobrazují</string>
<string name="revanced_hide_image_shelf_title">Skrýt polici s obrázky ve výsledcích vyhledávání</string>
<string name="revanced_hide_image_shelf_summary_on">Police s obrázky je skryta</string>
<string name="revanced_hide_image_shelf_summary_off">Police s obrázky je zobrazena</string>
<string name="revanced_hide_latest_posts_ads_title">Skrýt nejnovější příspěvky</string>
<string name="revanced_hide_latest_posts_ads_summary_on">Nejnovější příspěvky jsou skryty</string>
<string name="revanced_hide_latest_posts_ads_summary_off">Nejnovější příspěvky jsou zobrazeny</string>
<string name="revanced_hide_quick_actions_title">Skrýt rychlé akce</string>
<string name="revanced_hide_quick_actions_summary_on">Rychlé akce na celé obrazovce jsou skryty</string>
<string name="revanced_hide_quick_actions_summary_off">Rychlé akce na celé obrazovce jsou zobrazeny</string>
<string name="revanced_hide_related_videos_title">Skrýt související videa</string>
<string name="revanced_hide_related_videos_summary_on">Související videa v rychlých akcích jsou skryta</string>
<string name="revanced_hide_related_videos_summary_off">Související videa v rychlých akcích jsou zobrazena</string>
<string name="revanced_hide_image_shelf_title">Skrýt obrázkovou poličku</string>
<string name="revanced_hide_image_shelf_summary_on">Obrázková polička ve výsledcích vyhledávání je skryta</string>
<string name="revanced_hide_image_shelf_summary_off">Obrázková polička ve výsledcích vyhledávání je zobrazena</string>
<string name="revanced_hide_latest_posts_title">Skrýt nejnovější příspěvky</string>
<string name="revanced_hide_latest_posts_summary_on">Nejnovější příspěvky jsou skryty</string>
<string name="revanced_hide_latest_posts_summary_off">Nejnovější příspěvky jsou zobrazeny</string>
<string name="revanced_hide_mix_playlists_title">Skrýt seznamy přehrávání Mix</string>
<string name="revanced_hide_mix_playlists_summary_on">Mix seznamy skladeb jsou skryty</string>
<string name="revanced_hide_mix_playlists_summary_off">Mix seznamy skladeb se zobrazují</string>
@@ -285,16 +273,39 @@ Nebudete informováni o žádné neočekávané události."</string>
<string name="revanced_hide_description_components_screen_title">Popis videa</string>
<string name="revanced_hide_description_components_screen_summary">Skrýt nebo zobrazit komponenty popisu videa</string>
<string name="revanced_hide_filter_bar_screen_title">Lišta filtrů</string>
<string name="revanced_hide_filter_bar_screen_summary">Skrýt nebo zobrazit lištu filtrů v kanálu, výsledcích hledání a souvisejících videích</string>
<string name="revanced_hide_filter_bar_feed_in_feed_title">Skrýt ve feedu</string>
<string name="revanced_hide_filter_bar_feed_in_feed_summary_on">Ve feedu skryto</string>
<string name="revanced_hide_filter_bar_feed_in_feed_summary_off">Ve feedu zobrazeno</string>
<string name="revanced_hide_filter_bar_screen_summary">Skrýt nebo zobrazit panel filtru v kanálech, historii, výsledcích vyhledání a souvisejících videích</string>
<string name="revanced_hide_filter_bar_feed_in_feed_title">Skrýt v kanálech</string>
<string name="revanced_hide_filter_bar_feed_in_feed_summary_on">Skryto v kanálech</string>
<string name="revanced_hide_filter_bar_feed_in_feed_summary_off">Zobrazeno v kanálech</string>
<string name="revanced_hide_filter_bar_feed_in_history_title">Skrýt v historii</string>
<string name="revanced_hide_filter_bar_feed_in_history_summary_on">Skryto v historii</string>
<string name="revanced_hide_filter_bar_feed_in_history_summary_off">Zobrazeno v historii</string>
<string name="revanced_hide_filter_bar_feed_in_search_title">Skrýt ve výsledcích vyhledávání</string>
<string name="revanced_hide_filter_bar_feed_in_search_summary_on">Skryto ve výsledcích vyhledávání</string>
<string name="revanced_hide_filter_bar_feed_in_search_summary_off">Zobrazeno ve výsledcích vyhledávání</string>
<string name="revanced_hide_filter_bar_feed_in_related_videos_title">Skrýt v souvisejících videích</string>
<string name="revanced_hide_filter_bar_feed_in_related_videos_summary_on">V souvisejících videích skryto</string>
<string name="revanced_hide_filter_bar_feed_in_related_videos_summary_off">V souvisejících videích zobrazeno</string>
<string name="revanced_channel_screen_title">Stránka kanálu</string>
<string name="revanced_channel_screen_summary">Skrýt nebo zobrazit komponenty stránky kanálu</string>
<!-- 'For You' should be translated using the same localized wording YouTube displays. -->
<string name="revanced_hide_for_you_shelf_title">Skrýt panel „Pro vás“</string>
<string name="revanced_hide_for_you_shelf_summary_on">Polička Pro vás je skryta</string>
<string name="revanced_hide_for_you_shelf_summary_off">Polička Pro vás je zobrazena</string>
<string name="revanced_hide_links_preview_title">Skrýt náhled odkazů</string>
<string name="revanced_hide_links_preview_summary_on">Náhled odkazů je skryt</string>
<string name="revanced_hide_links_preview_summary_off">Náhled odkazů je zobrazen</string>
<string name="revanced_hide_members_shelf_title">Skrýt poličku členů</string>
<string name="revanced_hide_members_shelf_summary_on">Polička členů je skryta</string>
<string name="revanced_hide_members_shelf_summary_off">Police pro členy je zobrazena</string>
<!-- 'Visit Community' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_visit_community_button_title">Skrýt tlačítko „Navštívit komunitu“</string>
<string name="revanced_hide_visit_community_button_summary_on">Tlačítko Navštívit komunitu je skryto</string>
<string name="revanced_hide_visit_community_button_summary_off">Tlačítko Navštívit komunitu je zobrazeno</string>
<!-- 'Visit store' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_visit_store_button_title">Skrýt tlačítko \'Navštívit obchod\' na stránkách kanálů</string>
<string name="revanced_hide_visit_store_button_summary_on">Tlačítko Navštívit obchod je skryto</string>
<string name="revanced_hide_visit_store_button_summary_off">Tlačítko Navštívit obchod je zobrazeno</string>
<string name="revanced_comments_screen_title">Komentáře</string>
<string name="revanced_comments_screen_summary">Skrýt nebo zobrazit komponenty sekce komentářů</string>
<string name="revanced_hide_comments_ai_chat_summary_title">Skrýt souhrn chatu AI</string>
@@ -303,24 +314,30 @@ Nebudete informováni o žádné neočekávané události."</string>
<string name="revanced_hide_comments_ai_summary_title">Skrýt souhrn komentářů AI</string>
<string name="revanced_hide_comments_ai_summary_summary_on">Souhrn komentářů je skrytý</string>
<string name="revanced_hide_comments_ai_summary_summary_off">Souhrn komentářů je zobrazen</string>
<string name="revanced_hide_comments_channel_guidelines_title">Skrýt pravidla kanálu</string>
<string name="revanced_hide_comments_channel_guidelines_summary_on">Pokyny ke kanálu jsou skryty</string>
<string name="revanced_hide_comments_channel_guidelines_summary_off">Pokyny ke kanálu jsou zobrazeny</string>
<string name="revanced_hide_comments_by_members_header_title">Skrýt záhlaví \"Komentáře od členů\"</string>
<string name="revanced_hide_comments_by_members_header_summary_on">Záhlaví Komentáře od členů je skryto</string>
<string name="revanced_hide_comments_by_members_header_summary_off">Záhlaví Komentáře od členů je zobrazeno</string>
<string name="revanced_hide_comments_section_title">Skrýt sekci komentářů</string>
<string name="revanced_hide_comments_section_summary_on">Sekce komentářů je skrytá</string>
<string name="revanced_hide_comments_section_summary_off">Sekce komentářů je zobrazena</string>
<string name="revanced_hide_comments_community_guidelines_title">Skrýt pokyny pro komunitu</string>
<string name="revanced_hide_comments_community_guidelines_summary_on">Pravidla komunity jsou skryta</string>
<string name="revanced_hide_comments_community_guidelines_summary_off">Pravidla komunity jsou zobrazena</string>
<string name="revanced_hide_comments_create_a_short_button_title">Skrýt tlačítko \"Vytvořit Short\"</string>
<string name="revanced_hide_comments_create_a_short_button_summary_on">Tlačítko Vytvořit Short je skryté</string>
<string name="revanced_hide_comments_create_a_short_button_summary_off">Tlačítko Vytvořit Short je zobrazeno</string>
<string name="revanced_hide_comments_timestamp_button_title">Skrýt tlačítko časové osy</string>
<string name="revanced_hide_comments_timestamp_button_summary_on">Tlačítko časové osy je skryté</string>
<string name="revanced_hide_comments_timestamp_button_summary_off">Tlačítko časové osy je zobrazeno</string>
<string name="revanced_hide_comments_preview_comment_title">Skrýt náhled komentáře</string>
<string name="revanced_hide_comments_preview_comment_summary_on">Náhled komentáře je skryt</string>
<string name="revanced_hide_comments_preview_comment_summary_off">Náhled komentáře je zobrazen</string>
<string name="revanced_hide_comments_thanks_button_title">Skrýt tlačítko děk」、「</string>
<string name="revanced_hide_comments_thanks_button_summary_on">Tlačítko poděkování je skryto</string>
<string name="revanced_hide_comments_thanks_button_summary_off">Tlačítko poděkování je zobrazeno</string>
<string name="revanced_hide_comments_timestamp_button_title">Skrýt tlačítko časové značky</string>
<string name="revanced_hide_comments_timestamp_button_summary_on">Tlačítko časové osy je skryté</string>
<string name="revanced_hide_comments_timestamp_button_summary_off">Tlačítko časové osy je zobrazeno</string>
<!-- https://logos.fandom.com/wiki/YouTube/Yoodles -->
<string name="revanced_hide_doodles_title">Skrýt YouTube Doodles</string>
<string name="revanced_hide_doodles_summary_on">Doodles na liště vyhledávání jsou skryty</string>
@@ -374,44 +391,41 @@ Omezení:
<string name="revanced_hide_keyword_toast_invalid_broad">Klíčové slovo skryje všechna videa: %s</string>
</patch>
<patch id="ad.general.hideAdsResourcePatch">
<string name="revanced_hide_general_ads_title">Skrýt běžné reklamy</string>
<string name="revanced_hide_general_ads_summary_on">Běžné reklamy jsou skryty</string>
<string name="revanced_hide_general_ads_summary_off">Běžné reklamy jsou zobrazeny</string>
<string name="revanced_hide_creator_store_shelf_title">Skrýt poličku obchodu tvůrce</string>
<string name="revanced_hide_creator_store_shelf_summary_on">Police obchodu pod přehrávačem videí je skryta</string>
<string name="revanced_hide_creator_store_shelf_summary_off">Polička obchodu pod přehrávačem videa je zobrazena</string>
<string name="revanced_hide_end_screen_store_banner_title">Skrýt koncový banner obchodu</string>
<string name="revanced_hide_end_screen_store_banner_summary_on">Banner obchodu je skrytý</string>
<string name="revanced_hide_end_screen_store_banner_summary_off">Banner obchodu je zobrazen</string>
<string name="revanced_hide_fullscreen_ads_title">Skrýt celostránkové reklamy</string>
<string name="revanced_hide_fullscreen_ads_summary_on">"Celoobrazovkové reklamy jsou skryty
Tato funkce je dostupná pouze pro starší zařízení"</string>
<string name="revanced_hide_fullscreen_ads_summary_off">Celostránkové reklamy jsou zobrazeny</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">Blokování reklam na celou obrazovku je funkční pouze na starších zařízeních</string>
<string name="revanced_hide_general_ads_title">Skrýt běžné reklamy</string>
<string name="revanced_hide_general_ads_summary_on">Běžné reklamy jsou skryty</string>
<string name="revanced_hide_general_ads_summary_off">Běžné reklamy jsou zobrazeny</string>
<string name="revanced_hide_merchandise_banners_title">Skrýt reklamní bannery</string>
<string name="revanced_hide_merchandise_banners_summary_on">Merchandise bannery jsou skryty</string>
<string name="revanced_hide_merchandise_banners_summary_off">Merchandise bannery jsou zobrazeny</string>
<string name="revanced_hide_paid_promotion_label_title">Skrýt štítek placené propagace</string>
<string name="revanced_hide_paid_promotion_label_summary_on">Štítek placené propagace je skryt</string>
<string name="revanced_hide_paid_promotion_label_summary_off">Štítek placené propagace je zobrazen</string>
<string name="revanced_hide_self_sponsor_ads_title">Skrýt karty se sponzorovanými produkty</string>
<string name="revanced_hide_self_sponsor_ads_summary_on">Karty se sponzorovanými produkty jsou skryty</string>
<string name="revanced_hide_self_sponsor_ads_summary_off">Karty se sponzorovanými produkty jsou zobrazeny</string>
<string name="revanced_hide_products_banner_title">Skrýt banner „Zobrazit produkty“</string>
<string name="revanced_hide_products_banner_summary_on">Banner je skryt</string>
<string name="revanced_hide_products_banner_summary_off">Banner je zobrazen</string>
<string name="revanced_hide_end_screen_store_banner_title">Skrýt koncový banner obchodu</string>
<string name="revanced_hide_end_screen_store_banner_summary_on">Banner obchodu je skrytý</string>
<string name="revanced_hide_end_screen_store_banner_summary_off">Banner obchodu je zobrazen</string>
<string name="revanced_hide_player_store_shelf_title">Skrýt nákupní polici přehrávače</string>
<string name="revanced_hide_player_store_shelf_summary_on">Nákupní police je skryta</string>
<string name="revanced_hide_player_store_shelf_summary_off">Nákupní police je zobrazena</string>
<string name="revanced_hide_shopping_links_title">Skrýt odkazy na nakupování v popisu videa</string>
<string name="revanced_hide_shopping_links_summary_on">Nákupní odkazy v popisu videa jsou skryty</string>
<string name="revanced_hide_shopping_links_summary_off">Nákupní odkazy v popisu videa jsou zobrazeny</string>
<!-- 'Visit store' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_visit_store_button_title">Skrýt tlačítko \'Navštívit obchod\' na stránkách kanálů</string>
<string name="revanced_hide_visit_store_button_summary_on">Tlačítko na stránce kanálu je skryto</string>
<string name="revanced_hide_visit_store_button_summary_off">Tlačítko na stránce kanálu je zobrazeno</string>
<string name="revanced_hide_shopping_links_title">Skrýt nákupní odkazy</string>
<string name="revanced_hide_shopping_links_summary_on">Odkazy v popisu videa jsou skryty</string>
<string name="revanced_hide_shopping_links_summary_off">Odkazy v popisu videa jsou zobrazeny</string>
<!-- 'View products' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_view_products_banner_title">Skrýt banner „Zobrazit produkty“</string>
<string name="revanced_hide_view_products_banner_summary_on">Banner v překryvu videa je skryt</string>
<string name="revanced_hide_view_products_banner_summary_off">Banner v překrytí videa je zobrazen</string>
<string name="revanced_hide_web_search_results_title">Skryté webové výsledky vyhledávání</string>
<string name="revanced_hide_web_search_results_summary_on">Webové výsledky vyhledávání jsou skryté</string>
<string name="revanced_hide_web_search_results_summary_off">Webové výsledky vyhledávání jsou zobrazeny</string>
<string name="revanced_hide_merchandise_banners_title">Skrýt reklamní bannery</string>
<string name="revanced_hide_merchandise_banners_summary_on">Merchandise bannery jsou skryty</string>
<string name="revanced_hide_merchandise_banners_summary_off">Merchandise bannery jsou zobrazeny</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">Blokování reklam na celou obrazovku je funkční pouze na starších zařízeních</string>
</patch>
<patch id="ad.getpremium.hideGetPremiumPatch">
<string name="revanced_hide_get_premium_title">Skrýt nabídky YouTube Premium</string>
@@ -773,6 +787,9 @@ Chcete-li zobrazit nabídku zvukové stopy, změňte možnost „Zfalšovat stre
<string name="revanced_hide_shorts_upcoming_button_title">Skrýt tlačítko Nadcházející</string>
<string name="revanced_hide_shorts_upcoming_button_summary_on">Tlačítko \"Další\" je skryté</string>
<string name="revanced_hide_shorts_upcoming_button_summary_off">Tlačítko \"Další\" je zobrazeno</string>
<string name="revanced_hide_shorts_effect_button_title">Skrýt tlačítko efektu</string>
<string name="revanced_hide_shorts_effect_button_summary_on">Tlačítko Efekt je skryté</string>
<string name="revanced_hide_shorts_effect_button_summary_off">Tlačítko Efekt je zobrazeno</string>
<string name="revanced_hide_shorts_green_screen_button_title">Skrýt tlačítko Zelená obrazovka</string>
<string name="revanced_hide_shorts_green_screen_button_summary_on">Tlačítko zelené obrazovky je skryté</string>
<string name="revanced_hide_shorts_green_screen_button_summary_off">Tlačítko zelené obrazovky je zobrazeno</string>
@@ -820,7 +837,7 @@ Chcete-li zobrazit nabídku zvukové stopy, změňte možnost „Zfalšovat stre
<string name="revanced_hide_shorts_sound_metadata_label_title">Skrýt štítek zvukového metadata</string>
<string name="revanced_hide_shorts_sound_metadata_label_summary_on">Štítek metadata je skrytý</string>
<string name="revanced_hide_shorts_sound_metadata_label_summary_off">Štítek metadata je zobrazen</string>
<string name="revanced_hide_shorts_full_video_link_label_title">Skrýt štítek odkazu na celé video</string>
<string name="revanced_hide_shorts_full_video_link_label_title">Skrýt popisek odkazu na video</string>
<string name="revanced_hide_shorts_full_video_link_label_summary_on">Štítek odkazu na video je skrytý</string>
<string name="revanced_hide_shorts_full_video_link_label_summary_off">Štítek odkazu na video je zobrazen</string>
<string name="revanced_hide_shorts_sound_button_title">Skrýt tlačítko zvuku</string>
@@ -955,11 +972,25 @@ Tato funkce funguje nejlépe s kvalitou videa 720p nebo nižší a při použit
<string name="revanced_sb_enable_auto_hide_skip_segment_button">Automaticky skrýt tlačítko Přeskočit</string>
<string name="revanced_sb_enable_auto_hide_skip_segment_button_sum_on">Tlačítko pro přeskočení se skrývá po několika sekundách</string>
<string name="revanced_sb_enable_auto_hide_skip_segment_button_sum_off">Tlačítko Přeskočit se zobrazuje pro celý segment</string>
<string name="revanced_sb_general_skiptoast">Zobrazit toast při přeskaková</string>
<string name="revanced_sb_general_skiptoast_sum_on">\"Toast\" se zobrazí, když se segment automaticky přeskočí. Klepněte zde, abyste se podívali na příklad</string>
<string name="revanced_sb_general_skiptoast_sum_off">\"Toast\" se nezobrazí. Klepněte zde, abyste se podívali na příklad</string>
<string name="revanced_sb_auto_hide_skip_button_duration">Doba trvání tlačítka přeskoče</string>
<string name="revanced_sb_auto_hide_skip_button_duration_sum">Jak dlouho zobrazovat tlačítka přeskočit a přeskočit na zvýraznění před automatickým skrytím</string>
<string name="revanced_sb_general_skiptoast">Zobrazit hlásku pro zrušení přeskočení</string>
<string name="revanced_sb_general_skiptoast_sum_on">Hláska se zobrazí, když je segment automaticky přeskočen. Klepněte na hlásku pro zrušení přeskočení</string>
<string name="revanced_sb_general_skiptoast_sum_off">Toast se nezobrazuje</string>
<string name="revanced_sb_toast_on_skip_duration">Doba trvání toastu přeskočení</string>
<string name="revanced_sb_toast_on_skip_duration_sum">Jak dlouho zobrazovat hlášení o zrušení přeskočení</string>
<string name="revanced_sb_duration_1s">1 sekunda</string>
<string name="revanced_sb_duration_2s">2 sekundy</string>
<string name="revanced_sb_duration_3s">3 sekundy</string>
<string name="revanced_sb_duration_4s">4 sekundy</string>
<string name="revanced_sb_duration_5s">5 sekund</string>
<string name="revanced_sb_duration_6s">6 sekund</string>
<string name="revanced_sb_duration_7s">7 sekund</string>
<string name="revanced_sb_duration_8s">8 sekund</string>
<string name="revanced_sb_duration_9s">9 sekund</string>
<string name="revanced_sb_duration_10s">10 sekund</string>
<string name="revanced_sb_general_time_without">Zobrazit délku videa bez segmentů</string>
<string name="revanced_sb_general_time_without_sum_on">Délka videa minus všechny segmenty, zobrazená v závorkách vedle úplné délky videa</string>
<string name="revanced_sb_general_time_without_sum_on">Na posuvníku je zobrazena délka videa minus všechny segmenty</string>
<string name="revanced_sb_general_time_without_sum_off">Zobrazena úplná délka videa</string>
<string name="revanced_sb_create_segment_category">Vytváření nových segmentů</string>
<string name="revanced_sb_enable_create_segment">Zobrazit tlačítko Vytvořit nový segment</string>
@@ -1263,9 +1294,9 @@ Omezení: Použití tlačítka zpět na panelu nástrojů nemusí fungovat"</str
<string name="revanced_gradient_loading_screen_title">Povolit přechodovou obrazovku načítání</string>
<string name="revanced_gradient_loading_screen_summary_on">Obrazovka načítání bude mít přechodové pozadí</string>
<string name="revanced_gradient_loading_screen_summary_off">Obrazovka načítání bude mít pevné pozadí</string>
<string name="splash_screen_animation_style_title">Styl úvodní obrazovky</string>
<string name="splash_screen_animation_style_entry_1">Barva</string>
<string name="splash_screen_animation_style_entry_2">Černobílá</string>
<string name="revanced_splash_screen_animation_style_title">Styl úvodní obrazovky</string>
<string name="revanced_splash_screen_animation_style_entry_1">Barva</string>
<string name="revanced_splash_screen_animation_style_entry_2">Černobílá</string>
<string name="revanced_seekbar_custom_color_title">Povolit vlastní barvu posuvníku</string>
<string name="revanced_seekbar_custom_color_summary_on">Vlasní barva posuvníku je zobrazena</string>
<string name="revanced_seekbar_custom_color_summary_off">Původní barva posuvníku je zobrazena</string>

View File

@@ -156,22 +156,13 @@ Du modtager ikke notifikationer om uventede hændelser."</string>
<string name="revanced_hide_channel_watermark_summary_on">Vandmærke er skjult</string>
<string name="revanced_hide_channel_watermark_summary_off">Vandmærke er vist</string>
<string name="revanced_hide_horizontal_shelves_title">Skjul vandrette hylder</string>
<string name="revanced_hide_horizontal_shelves_summary_on">"Hylder er skjult, f.eks.:
• Seneste nyheder
• Fortsæt med at se
• Udforsk flere kanaler
• Shopping
• Se igen"</string>
<string name="revanced_hide_horizontal_shelves_summary_on">"Hylder er skjult, såsom:\n• Seneste nyheder\n• Fortsæt med at se\n• Udforsk flere kanaler\n• Mest relevante\n• Shopping\n• Se igen"</string>
<string name="revanced_hide_horizontal_shelves_summary_off">Hylder er vist</string>
<!-- 'Join' should be translated using the same localized wording YouTube displays.
This appears in the video player for certain videos. -->
<string name="revanced_hide_join_membership_button_title">Skjul knappen \"Deltag\"</string>
<string name="revanced_hide_join_membership_button_summary_on">Knappen er skjult</string>
<string name="revanced_hide_join_membership_button_summary_off">Knappen er vist</string>
<!-- 'For you' should be translated using the same localized wording YouTube displays. -->
<string name="revanced_hide_for_you_shelf_title">Skjul hylden \"Til dig\"</string>
<string name="revanced_hide_for_you_shelf_summary_on">Hylde på kanalsiden er skjult</string>
<string name="revanced_hide_for_you_shelf_summary_off">Hylde på kanalsiden vises</string>
<!-- 'Notify me' should be translated using the same localized wording YouTube displays.
This item appear in the subscription feed for future livestreams or unreleased videos. -->
<string name="revanced_hide_notify_me_button_title">Skjul knappen \'Underret mig\'</string>
@@ -192,15 +183,12 @@ Du modtager ikke notifikationer om uventede hændelser."</string>
<string name="revanced_hide_timed_reactions_title">Skjul tidsreaktioner</string>
<string name="revanced_hide_timed_reactions_summary_on">Tidsreaktioner skjules</string>
<string name="revanced_hide_timed_reactions_summary_off">Tidsreaktioner vises</string>
<string name="revanced_hide_channel_guidelines_title">Skjul kanalretningslinjer</string>
<string name="revanced_hide_channel_guidelines_summary_on">Kanalretningslinjer er skjult</string>
<string name="revanced_hide_channel_guidelines_summary_off">Kanalretningslinjer er vist</string>
<string name="revanced_hide_chips_shelf_title">Skjul chips hylde</string>
<string name="revanced_hide_chips_shelf_summary_on">Chips hylde er skjult</string>
<string name="revanced_hide_chips_shelf_summary_off">Chips hylde er vist</string>
<string name="revanced_hide_expandable_chip_title">Skjul udvidelige kort under videoer</string>
<string name="revanced_hide_expandable_chip_summary_on">Udvidelseskort er skjult</string>
<string name="revanced_hide_expandable_chip_summary_off">Udvidelseskort vises</string>
<string name="revanced_hide_expandable_chip_title">Skjul udvideligt kort</string>
<string name="revanced_hide_expandable_chip_summary_on">Udvideligt kort under videoer er skjult</string>
<string name="revanced_hide_expandable_chip_summary_off">Udvideligt kort under videoer er vist</string>
<string name="revanced_hide_community_posts_title">Skjul fællesskabs indlæg</string>
<string name="revanced_hide_community_posts_summary_on">Fællesskabs indlæg er skjult</string>
<string name="revanced_hide_community_posts_summary_off">Fællesskabs indlæg er vist</string>
@@ -213,15 +201,9 @@ Du modtager ikke notifikationer om uventede hændelser."</string>
<string name="revanced_hide_feed_survey_title">Skjul feed-undersøgelser</string>
<string name="revanced_hide_feed_survey_summary_on">Foderundersøgelser er skjult</string>
<string name="revanced_hide_feed_survey_summary_off">Foderundersøgelser er vist</string>
<string name="revanced_hide_community_guidelines_title">Skjul fællesskabs retningslinjer</string>
<string name="revanced_hide_community_guidelines_summary_on">Fællesskabets retningslinjer er skjult</string>
<string name="revanced_hide_community_guidelines_summary_off">Der er opstillet EF-retningslinjer</string>
<string name="revanced_hide_subscribers_community_guidelines_title">Skjul retningslinjer for abonnenter</string>
<string name="revanced_hide_subscribers_community_guidelines_summary_on">Abonnenter community retningslinjer er skjult</string>
<string name="revanced_hide_subscribers_community_guidelines_summary_off">Abonnenter community retningslinjer er vist</string>
<string name="revanced_hide_channel_member_shelf_title">Skjul kanalmedlems hylde</string>
<string name="revanced_hide_channel_member_shelf_summary_on">Kanalmedlems hylde er skjult</string>
<string name="revanced_hide_channel_member_shelf_summary_off">Kanal medlem hylde er vist</string>
<string name="revanced_hide_emergency_box_title">Skjul nødbokse</string>
<string name="revanced_hide_emergency_box_summary_on">Nødbokse er skjult</string>
<string name="revanced_hide_emergency_box_summary_off">Nødbokse vises</string>
@@ -237,18 +219,18 @@ Du modtager ikke notifikationer om uventede hændelser."</string>
<string name="revanced_hide_playables_title">Skjul Spilleobjekter</string>
<string name="revanced_hide_playables_summary_on">Spilleobjekter er skjult</string>
<string name="revanced_hide_playables_summary_off">Afspilningstabeller vises</string>
<string name="revanced_hide_quick_actions_title">Skjul hurtige handlinger i fuldskærm</string>
<string name="revanced_hide_quick_actions_summary_on">Hurtige handlinger er skjult</string>
<string name="revanced_hide_quick_actions_summary_off">Hurtige handlinger vises</string>
<string name="revanced_hide_related_videos_title">Skjul relaterede videoer i hurtige handlinger</string>
<string name="revanced_hide_related_videos_summary_on">Relaterede videoer er skjult</string>
<string name="revanced_hide_related_videos_summary_off">Relaterede videoer vises</string>
<string name="revanced_hide_image_shelf_title">Skjul billedhylde i søgeresultater</string>
<string name="revanced_hide_image_shelf_summary_on">Billede hylde er skjult</string>
<string name="revanced_hide_image_shelf_summary_off">Billede hylde er vist</string>
<string name="revanced_hide_latest_posts_ads_title">Skjul seneste indlæg</string>
<string name="revanced_hide_latest_posts_ads_summary_on">Seneste indlæg er skjult</string>
<string name="revanced_hide_latest_posts_ads_summary_off">Seneste indlæg vises</string>
<string name="revanced_hide_quick_actions_title">Skjul hurtige handlinger</string>
<string name="revanced_hide_quick_actions_summary_on">Hurtige handlinger i fuldskærm er skjult</string>
<string name="revanced_hide_quick_actions_summary_off">Hurtige handlinger i fuldskærm er vist</string>
<string name="revanced_hide_related_videos_title">Skjul relaterede videoer</string>
<string name="revanced_hide_related_videos_summary_on">Relaterede videoer i hurtige handlinger er skjult</string>
<string name="revanced_hide_related_videos_summary_off">Relaterede videoer i hurtige handlinger er vist</string>
<string name="revanced_hide_image_shelf_title">Skjul billedhylde</string>
<string name="revanced_hide_image_shelf_summary_on">Billedhylde i søgeresultater er skjult</string>
<string name="revanced_hide_image_shelf_summary_off">Billedhylde i søgeresultater er vist</string>
<string name="revanced_hide_latest_posts_title">Skjul seneste indlæg</string>
<string name="revanced_hide_latest_posts_summary_on">Seneste indlæg er skjult</string>
<string name="revanced_hide_latest_posts_summary_off">Seneste indlæg vises</string>
<string name="revanced_hide_mix_playlists_title">Skjul miks afspilningslister</string>
<string name="revanced_hide_mix_playlists_summary_on">Mix afspilningslister er skjult</string>
<string name="revanced_hide_mix_playlists_summary_off">Mix afspilningslister vises</string>
@@ -285,16 +267,39 @@ Du modtager ikke notifikationer om uventede hændelser."</string>
<string name="revanced_hide_description_components_screen_title">Video beskrivelse</string>
<string name="revanced_hide_description_components_screen_summary">Skjul eller vis komponenter til videobeskrivelse</string>
<string name="revanced_hide_filter_bar_screen_title">Filtrer bjælke</string>
<string name="revanced_hide_filter_bar_screen_summary">Skjul eller vis filterlinjen i feedet, søgeresultaterne og relaterede videoer</string>
<string name="revanced_hide_filter_bar_feed_in_feed_title">Skjul i feed</string>
<string name="revanced_hide_filter_bar_feed_in_feed_summary_on">Skjult i feed</string>
<string name="revanced_hide_filter_bar_feed_in_feed_summary_off">Vist i feed</string>
<string name="revanced_hide_filter_bar_screen_summary">Skjul eller vis filterlinjen i feeds, historik, søgeresultater og relaterede videoer</string>
<string name="revanced_hide_filter_bar_feed_in_feed_title">Skjul i feeds</string>
<string name="revanced_hide_filter_bar_feed_in_feed_summary_on">Skjult i feeds</string>
<string name="revanced_hide_filter_bar_feed_in_feed_summary_off">Vist i feeds</string>
<string name="revanced_hide_filter_bar_feed_in_history_title">Skjul i historik</string>
<string name="revanced_hide_filter_bar_feed_in_history_summary_on">Skjult i historik</string>
<string name="revanced_hide_filter_bar_feed_in_history_summary_off">Vist i historik</string>
<string name="revanced_hide_filter_bar_feed_in_search_title">Skjul i søgeresultater</string>
<string name="revanced_hide_filter_bar_feed_in_search_summary_on">Skjult i søgeresultater</string>
<string name="revanced_hide_filter_bar_feed_in_search_summary_off">Vises i søgeresultater</string>
<string name="revanced_hide_filter_bar_feed_in_related_videos_title">Skjul i relaterede videoer</string>
<string name="revanced_hide_filter_bar_feed_in_related_videos_summary_on">Skjult i relaterede videoer</string>
<string name="revanced_hide_filter_bar_feed_in_related_videos_summary_off">Vist i relaterede videoer</string>
<string name="revanced_channel_screen_title">Kanalside</string>
<string name="revanced_channel_screen_summary">Skjul eller vis kanalsidekomponenter</string>
<!-- 'For You' should be translated using the same localized wording YouTube displays. -->
<string name="revanced_hide_for_you_shelf_title">Skjul hylden \"Til dig\"</string>
<string name="revanced_hide_for_you_shelf_summary_on">Til dig-hylden er skjult</string>
<string name="revanced_hide_for_you_shelf_summary_off">Til dig-hylden er vist</string>
<string name="revanced_hide_links_preview_title">Skjul forhåndsvisning af links</string>
<string name="revanced_hide_links_preview_summary_on">Forhåndsvisning af links er skjult</string>
<string name="revanced_hide_links_preview_summary_off">Forhåndsvisning af links er vist</string>
<string name="revanced_hide_members_shelf_title">Skjul medlemshylden</string>
<string name="revanced_hide_members_shelf_summary_on">Medlemshylden er skjult</string>
<string name="revanced_hide_members_shelf_summary_off">Medlemsvisning er vist</string>
<!-- 'Visit Community' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_visit_community_button_title">Skjul knappen \"Besøg fællesskab\"</string>
<string name="revanced_hide_visit_community_button_summary_on">Knappen \"Besøg fællesskab\" er skjult</string>
<string name="revanced_hide_visit_community_button_summary_off">Besøg fællesskab-knap er vist</string>
<!-- 'Visit store' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_visit_store_button_title">Skjul knappen \'Besøg butik\' på kanalsider</string>
<string name="revanced_hide_visit_store_button_summary_on">Besøg butik-knap er skjult</string>
<string name="revanced_hide_visit_store_button_summary_off">Besøg butik-knap er vist</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_ai_chat_summary_title">Skjul AI Chat-oversigt</string>
@@ -303,24 +308,30 @@ Du modtager ikke notifikationer om uventede hændelser."</string>
<string name="revanced_hide_comments_ai_summary_title">Skjul AI Kommentar-oversigt</string>
<string name="revanced_hide_comments_ai_summary_summary_on">Kommentar-oversigt er skjult</string>
<string name="revanced_hide_comments_ai_summary_summary_off">Kommentar-oversigt er vist</string>
<string name="revanced_hide_comments_channel_guidelines_title">Skjul kanalretningslinjer</string>
<string name="revanced_hide_comments_channel_guidelines_summary_on">Kanalretningslinjer er skjult</string>
<string name="revanced_hide_comments_channel_guidelines_summary_off">Kanalretningslinjer 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 medlemmers overskrift er skjult</string>
<string name="revanced_hide_comments_by_members_header_summary_off">Kommentarer fra medlemmers 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_community_guidelines_title">Skjul fællesskabsretningslinjer</string>
<string name="revanced_hide_comments_community_guidelines_summary_on">Fællesskabsretningslinjer er skjult</string>
<string name="revanced_hide_comments_community_guidelines_summary_off">Fællesskabsretningslinjer 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">Opret en Short knap er skjult</string>
<string name="revanced_hide_comments_create_a_short_button_summary_off">Opret en Short knap vises</string>
<string name="revanced_hide_comments_timestamp_button_title">Skjul tidsstempelknap</string>
<string name="revanced_hide_comments_timestamp_button_summary_on">Tidsstempelknappen er skjult</string>
<string name="revanced_hide_comments_timestamp_button_summary_off">Tidsstempelknappen 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>
<string name="revanced_hide_comments_thanks_button_title">Skjul \"Tak\"-knap</string>
<string name="revanced_hide_comments_thanks_button_summary_on">Tak knappen er skjult</string>
<string name="revanced_hide_comments_thanks_button_summary_off">Tak knappen er vist</string>
<string name="revanced_hide_comments_timestamp_button_title">Skjul Tidsstempel-knap</string>
<string name="revanced_hide_comments_timestamp_button_summary_on">Tidsstempelknappen er skjult</string>
<string name="revanced_hide_comments_timestamp_button_summary_off">Tidsstempelknappen vises</string>
<!-- https://logos.fandom.com/wiki/YouTube/Yoodles -->
<string name="revanced_hide_doodles_title">Skjul YouTube-Doudler</string>
<string name="revanced_hide_doodles_summary_on">Søgebjælke Doudler er skjult</string>
@@ -374,44 +385,41 @@ Begrænsninger
<string name="revanced_hide_keyword_toast_invalid_broad">Nøgleord vil skjule alle videoer: %s</string>
</patch>
<patch id="ad.general.hideAdsResourcePatch">
<string name="revanced_hide_general_ads_title">Skjul generelle annoncer</string>
<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_creator_store_shelf_title">Skjul butikshylde for skabere</string>
<string name="revanced_hide_creator_store_shelf_summary_on">Butikshylde under videoafspiller er skjult</string>
<string name="revanced_hide_creator_store_shelf_summary_off">Butikshylde under videoafspiller er vist</string>
<string name="revanced_hide_end_screen_store_banner_title">Skjul banner fra butikken på slutskærmen</string>
<string name="revanced_hide_end_screen_store_banner_summary_on">Gem banner skjult</string>
<string name="revanced_hide_end_screen_store_banner_summary_off">Gem banner vises</string>
<string name="revanced_hide_fullscreen_ads_title">Skjul fuldskærmsannoncer</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>
<!-- 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">Skjul reklamer på fuld skærm virker kun med ældre enheder</string>
<string name="revanced_hide_general_ads_title">Skjul generelle annoncer</string>
<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_merchandise_banners_title">Skjul merchandise bannere</string>
<string name="revanced_hide_merchandise_banners_summary_on">Varer bannere er skjult</string>
<string name="revanced_hide_merchandise_banners_summary_off">Varer bannere er vist</string>
<string name="revanced_hide_paid_promotion_label_title">Skjul betalt kampagneetiket</string>
<string name="revanced_hide_paid_promotion_label_summary_on">Betalt reklamemærke er skjult</string>
<string name="revanced_hide_paid_promotion_label_summary_off">Betalt salgsfremmende mærke er vist</string>
<string name="revanced_hide_self_sponsor_ads_title">Skjul selvsponsorerede kort</string>
<string name="revanced_hide_self_sponsor_ads_summary_on">Selvsponsorerede kort er skjult</string>
<string name="revanced_hide_self_sponsor_ads_summary_off">Selvsponsorerede kort vises</string>
<string name="revanced_hide_products_banner_title">Skjul banneret \"Se produkter\"</string>
<string name="revanced_hide_products_banner_summary_on">Banner er skjult</string>
<string name="revanced_hide_products_banner_summary_off">Banner er vist</string>
<string name="revanced_hide_end_screen_store_banner_title">Skjul banner fra butikken på slutskærmen</string>
<string name="revanced_hide_end_screen_store_banner_summary_on">Gem banner skjult</string>
<string name="revanced_hide_end_screen_store_banner_summary_off">Gem banner vises</string>
<string name="revanced_hide_player_store_shelf_title">Skjul spillerens indkøbshylde</string>
<string name="revanced_hide_player_store_shelf_summary_on">Shopping hylde er skjult</string>
<string name="revanced_hide_player_store_shelf_summary_off">Shopping hylde er vist</string>
<string name="revanced_hide_shopping_links_title">Skjul shopping links i video beskrivelse</string>
<string name="revanced_hide_shopping_links_summary_on">Shopping links i videobeskrivelsen er skjult</string>
<string name="revanced_hide_shopping_links_summary_off">Shopping links i videobeskrivelsen vises</string>
<!-- 'Visit store' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_visit_store_button_title">Skjul knappen \'Besøg butik\' på kanalsider</string>
<string name="revanced_hide_visit_store_button_summary_on">Knap på kanalsiden er skjult</string>
<string name="revanced_hide_visit_store_button_summary_off">Knap på kanalsiden vises</string>
<string name="revanced_hide_shopping_links_title">Skjul shopping-links</string>
<string name="revanced_hide_shopping_links_summary_on">Links i videobeskrivelsen er skjult</string>
<string name="revanced_hide_shopping_links_summary_off">Links i videobeskrivelsen er vist</string>
<!-- 'View products' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_view_products_banner_title">Skjul banneret \"Se produkter\"</string>
<string name="revanced_hide_view_products_banner_summary_on">Banner i video-overlay er skjult</string>
<string name="revanced_hide_view_products_banner_summary_off">Banner i video-overlay vises</string>
<string name="revanced_hide_web_search_results_title">Skjul søgeresultater</string>
<string name="revanced_hide_web_search_results_summary_on">Websøgeresultater er skjult</string>
<string name="revanced_hide_web_search_results_summary_off">Websøgeresultater vises</string>
<string name="revanced_hide_merchandise_banners_title">Skjul merchandise bannere</string>
<string name="revanced_hide_merchandise_banners_summary_on">Varer bannere er skjult</string>
<string name="revanced_hide_merchandise_banners_summary_off">Varer bannere er vist</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">Skjul reklamer på fuld skærm virker kun med ældre enheder</string>
</patch>
<patch id="ad.getpremium.hideGetPremiumPatch">
<string name="revanced_hide_get_premium_title">Skjul YouTube Premium kampagner</string>
@@ -773,6 +781,9 @@ For at vise lydspormenuen skal du ændre \"Spoof videostream\" til iOS TV"</stri
<string name="revanced_hide_shorts_upcoming_button_title">Skjul knappen Kommende</string>
<string name="revanced_hide_shorts_upcoming_button_summary_on">Kommende knap er skjult</string>
<string name="revanced_hide_shorts_upcoming_button_summary_off">Kommende knap vises</string>
<string name="revanced_hide_shorts_effect_button_title">Skjul effektknap</string>
<string name="revanced_hide_shorts_effect_button_summary_on">Effektknap er skjult</string>
<string name="revanced_hide_shorts_effect_button_summary_off">Effektknap er vist</string>
<string name="revanced_hide_shorts_green_screen_button_title">Skjul knappen Grøn skærm</string>
<string name="revanced_hide_shorts_green_screen_button_summary_on">Grøn skærmknap er skjult</string>
<string name="revanced_hide_shorts_green_screen_button_summary_off">Grøn skærmknap vises</string>
@@ -820,7 +831,7 @@ For at vise lydspormenuen skal du ændre \"Spoof videostream\" til iOS TV"</stri
<string name="revanced_hide_shorts_sound_metadata_label_title">Skjul lyd metadata etiket</string>
<string name="revanced_hide_shorts_sound_metadata_label_summary_on">Metadata etiket er skjult</string>
<string name="revanced_hide_shorts_sound_metadata_label_summary_off">Metadata etiket er vist</string>
<string name="revanced_hide_shorts_full_video_link_label_title">Skjul fuld video link etiket</string>
<string name="revanced_hide_shorts_full_video_link_label_title">Skjul videolinketiket</string>
<string name="revanced_hide_shorts_full_video_link_label_summary_on">Videolink etiket er skjult</string>
<string name="revanced_hide_shorts_full_video_link_label_summary_off">Videolink etiket er vist</string>
<string name="revanced_hide_shorts_sound_button_title">Skjul lydknap</string>
@@ -956,11 +967,25 @@ Denne funktion fungerer bedst med en videokvalitet på 720p eller lavere og ved
<string name="revanced_sb_enable_auto_hide_skip_segment_button">Skjul automatisk Spring over-knap</string>
<string name="revanced_sb_enable_auto_hide_skip_segment_button_sum_on">Skip knap skjuler efter et par sekunder</string>
<string name="revanced_sb_enable_auto_hide_skip_segment_button_sum_off">Spring over-knappen vises for hele segmentet</string>
<string name="revanced_sb_general_skiptoast">Vis en toast ved spring</string>
<string name="revanced_sb_general_skiptoast_sum_on">Toast vises, når et segment automatisk springes over. Tryk her for at se et eksempel</string>
<string name="revanced_sb_general_skiptoast_sum_off">Toast er ikke vist. Tryk her for at se et eksempel</string>
<string name="revanced_sb_auto_hide_skip_button_duration">Spring over-knap varighed</string>
<string name="revanced_sb_auto_hide_skip_button_duration_sum">Hvor længe skal knapperne til at springe over og springe til højdepunkt vises, før de automatisk skjules</string>
<string name="revanced_sb_general_skiptoast">Vis fortryd oversprings-toast</string>
<string name="revanced_sb_general_skiptoast_sum_on">Toast vises, når et segment automatisk springes over. Tryk på toast-meddelelsen for at fortryde overspringelsen</string>
<string name="revanced_sb_general_skiptoast_sum_off">Toast vises ikke</string>
<string name="revanced_sb_toast_on_skip_duration">Spring over-toast varighed</string>
<string name="revanced_sb_toast_on_skip_duration_sum">Hvor længe skal fortryd spring over-meddelelsen vises</string>
<string name="revanced_sb_duration_1s">1 sekund</string>
<string name="revanced_sb_duration_2s">2 sekunder</string>
<string name="revanced_sb_duration_3s">3 sekunder</string>
<string name="revanced_sb_duration_4s">4 sekunder</string>
<string name="revanced_sb_duration_5s">5 sekunder</string>
<string name="revanced_sb_duration_6s">6 sekunder</string>
<string name="revanced_sb_duration_7s">7 sekunder</string>
<string name="revanced_sb_duration_8s">8 sekunder</string>
<string name="revanced_sb_duration_9s">9 sekunder</string>
<string name="revanced_sb_duration_10s">10 sekunder</string>
<string name="revanced_sb_general_time_without">Vis videolængde uden segmenter</string>
<string name="revanced_sb_general_time_without_sum_on">Videolængde minus alle segmenter, vist i parentes ved siden af den fulde videolængde</string>
<string name="revanced_sb_general_time_without_sum_on">Videolængde minus alle segmenter vises på tidslinjen</string>
<string name="revanced_sb_general_time_without_sum_off">Fuld videolængde vist</string>
<string name="revanced_sb_create_segment_category">Opretter nye segmenter</string>
<string name="revanced_sb_enable_create_segment">Vis Opret nyt segment-knap</string>
@@ -1265,9 +1290,9 @@ Miniafspiller kan trækkes ud over skærmen til venstre eller højre"</string>
<string name="revanced_gradient_loading_screen_title">Aktiver gradient indlæsning af skærmen</string>
<string name="revanced_gradient_loading_screen_summary_on">Indlæser skærmen vil have en gradient baggrund</string>
<string name="revanced_gradient_loading_screen_summary_off">Indlæser skærmen vil have en solid baggrund</string>
<string name="splash_screen_animation_style_title">Splash screens udseende</string>
<string name="splash_screen_animation_style_entry_1">Farve</string>
<string name="splash_screen_animation_style_entry_2">Sort og hvid</string>
<string name="revanced_splash_screen_animation_style_title">Splash screens udseende</string>
<string name="revanced_splash_screen_animation_style_entry_1">Farve</string>
<string name="revanced_splash_screen_animation_style_entry_2">Sort og hvid</string>
<string name="revanced_seekbar_custom_color_title">Aktivér brugerdefineret søgelinjefarve</string>
<string name="revanced_seekbar_custom_color_summary_on">Brugerdefineret søgelinje farve vises</string>
<string name="revanced_seekbar_custom_color_summary_off">Original søgelinje farve vises</string>

View File

@@ -124,7 +124,7 @@ Wenn Sie dies aktivieren, werden jedoch auch einige Benutzerdaten wie Ihre IP-Ad
<string name="revanced_debug_stacktrace_summary_off">Debug-Logs enthalten keine Stack-Traces</string>
<string name="revanced_debug_toast_on_error_title">Toast bei ReVanced Fehler anzeigen</string>
<string name="revanced_debug_toast_on_error_summary_on">Ein Toast wird angezeigt, wenn ein Fehler auftritt</string>
<string name="revanced_debug_toast_on_error_summary_off">Kein Toast wird angezeigt, wenn ein Fehler auftritt</string>
<string name="revanced_debug_toast_on_error_summary_off">Es wird keine Toast-Nachricht angezeigt, wenn ein Fehler Auftritt</string>
<string name="revanced_debug_toast_on_error_user_dialog_message">"Das Ausschalten von Fehler-Toasts blendet alle Benachrichtigungen über Fehler in ReVanced aus.
Sie werden nicht über unerwartete Ereignisse informiert."</string>
@@ -152,22 +152,13 @@ Sie werden nicht über unerwartete Ereignisse informiert."</string>
<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">"Regale sind ausgeblendet, wie z. B.:
• Eilmeldungen
• Weiterschauen
• Weitere Kanäle erkunden
• Shopping
• Nochmal ansehen"</string>
<string name="revanced_hide_horizontal_shelves_summary_on">"Regale sind ausgeblendet, wie zum Beispiel:• Aktuelle Nachrichten• Weiter ansehen• Weitere Kanäle entdecken• Relevanteste• Einkaufen• Erneut 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. -->
<string name="revanced_hide_join_membership_button_title">\"Abonnieren\"-Button ausblenden</string>
<string name="revanced_hide_join_membership_button_summary_on">Button ist ausgeblendet</string>
<string name="revanced_hide_join_membership_button_summary_off">Button wird angezeigt</string>
<!-- 'For you' should be translated using the same localized wording YouTube displays. -->
<string name="revanced_hide_for_you_shelf_title">Regal \"Für dich\" ausblenden</string>
<string name="revanced_hide_for_you_shelf_summary_on">Regal auf der Kanalseite ist ausgeblendet</string>
<string name="revanced_hide_for_you_shelf_summary_off">Regal auf der Kanalseite wird angezeigt</string>
<!-- 'Notify me' should be translated using the same localized wording YouTube displays.
This item appear in the subscription feed for future livestreams or unreleased videos. -->
<string name="revanced_hide_notify_me_button_title">\'Benachrichtigungen\' Button ausblenden</string>
@@ -188,15 +179,12 @@ Sie werden nicht über unerwartete Ereignisse informiert."</string>
<string name="revanced_hide_timed_reactions_title">Zeitliche Reaktionen ausblenden</string>
<string name="revanced_hide_timed_reactions_summary_on">Zeitgesteuerte Reaktionen sind ausgeblendet</string>
<string name="revanced_hide_timed_reactions_summary_off">Zeitgesteuerte Reaktionen werden angezeigt</string>
<string name="revanced_hide_channel_guidelines_title">Kanalrichtlinien ausblenden</string>
<string name="revanced_hide_channel_guidelines_summary_on">Kanal-Richtlinien sind ausgeblendet</string>
<string name="revanced_hide_channel_guidelines_summary_off">Kanalrichtlinien werden angezeigt</string>
<string name="revanced_hide_chips_shelf_title">Chips ausblenden</string>
<string name="revanced_hide_chips_shelf_summary_on">Chips sind ausgeblendet</string>
<string name="revanced_hide_chips_shelf_summary_off">Chips werden angezeigt</string>
<string name="revanced_hide_expandable_chip_title">Erweiterbare Karten unter Videos ausblenden</string>
<string name="revanced_hide_expandable_chip_summary_on">Erweiterbare Karte ist ausgeblendet</string>
<string name="revanced_hide_expandable_chip_summary_off">Erweiterbare Karte wird angezeigt</string>
<string name="revanced_hide_expandable_chip_title">Ausklappbare Karte ausblenden</string>
<string name="revanced_hide_expandable_chip_summary_on">Ausklappbare Karte unter Videos ist ausgeblendet</string>
<string name="revanced_hide_expandable_chip_summary_off">Ausklappbare Karte unter Videos ist angezeigt</string>
<string name="revanced_hide_community_posts_title">Community-Beiträge ausblenden</string>
<string name="revanced_hide_community_posts_summary_on">Community-Beiträge sind ausgeblendet</string>
<string name="revanced_hide_community_posts_summary_off">Gemeinschaftsbeiträge werden angezeigt</string>
@@ -209,15 +197,9 @@ Sie werden nicht über unerwartete Ereignisse informiert."</string>
<string name="revanced_hide_feed_survey_title">Feed-Umfragen ausblenden</string>
<string name="revanced_hide_feed_survey_summary_on">Feed-Umfragen sind ausgeblendet</string>
<string name="revanced_hide_feed_survey_summary_off">Feed-Umfragen werden angezeigt</string>
<string name="revanced_hide_community_guidelines_title">Community-Richtlinien ausblenden</string>
<string name="revanced_hide_community_guidelines_summary_on">Community-Richtlinien sind ausgeblendet</string>
<string name="revanced_hide_community_guidelines_summary_off">Gemeinschaftsrichtlinien werden angezeigt</string>
<string name="revanced_hide_subscribers_community_guidelines_title">Abonnentenrichtlinien ausblenden</string>
<string name="revanced_hide_subscribers_community_guidelines_summary_on">Abonnenten-Community-Richtlinien sind ausgeblendet</string>
<string name="revanced_hide_subscribers_community_guidelines_summary_off">Abonnenten-Community-Richtlinien werden angezeigt</string>
<string name="revanced_hide_channel_member_shelf_title">Kanalmitgliedschaft ausblenden</string>
<string name="revanced_hide_channel_member_shelf_summary_on">Kanalmitgliedschaft wird ausgeblendet</string>
<string name="revanced_hide_channel_member_shelf_summary_off">Kanalmitgliedschaft wird angezeigt</string>
<string name="revanced_hide_emergency_box_title">Notfall-Boxen ausblenden</string>
<string name="revanced_hide_emergency_box_summary_on">Notfall-Boxen sind ausgeblendet</string>
<string name="revanced_hide_emergency_box_summary_off">Notfall-Boxen werden angezeigt</string>
@@ -233,18 +215,18 @@ Sie werden nicht über unerwartete Ereignisse informiert."</string>
<string name="revanced_hide_playables_title">Playables ausblenden</string>
<string name="revanced_hide_playables_summary_on">Spiele sind ausgeblendet</string>
<string name="revanced_hide_playables_summary_off">Spielbare werden angezeigt</string>
<string name="revanced_hide_quick_actions_title">Schnellaktionen im Vollbildmodus ausblenden</string>
<string name="revanced_hide_quick_actions_summary_on">Schnellaktionen sind ausgeblendet</string>
<string name="revanced_hide_quick_actions_summary_off">Schnellaktionen werden angezeigt</string>
<string name="revanced_hide_related_videos_title">Verwandte Videos in Schnellaktionen ausblenden</string>
<string name="revanced_hide_related_videos_summary_on">Ähnliche Videos sind ausgeblendet</string>
<string name="revanced_hide_related_videos_summary_off">Ähnliche Videos werden angezeigt</string>
<string name="revanced_hide_image_shelf_title">Bilder-Reihe in Suchergebnissen ausblenden</string>
<string name="revanced_hide_image_shelf_summary_on">Bilder-Reihe ist ausgeblendet</string>
<string name="revanced_hide_image_shelf_summary_off">Bilder-Reihe wird angezeigt</string>
<string name="revanced_hide_latest_posts_ads_title">Neueste Beiträge ausblenden</string>
<string name="revanced_hide_latest_posts_ads_summary_on">Neueste Beiträge sind ausgeblendet</string>
<string name="revanced_hide_latest_posts_ads_summary_off">Neueste Beiträge werden angezeigt</string>
<string name="revanced_hide_quick_actions_title">Schnelle Aktionen ausblenden</string>
<string name="revanced_hide_quick_actions_summary_on">Schnelle Aktionen im Vollbildmodus sind ausgeblendet</string>
<string name="revanced_hide_quick_actions_summary_off">Schnelle Aktionen im Vollbildmodus sind angezeigt</string>
<string name="revanced_hide_related_videos_title">Ähnliche Videos ausblenden</string>
<string name="revanced_hide_related_videos_summary_on">Ähnliche Videos in den schnellen Aktionen sind ausgeblendet</string>
<string name="revanced_hide_related_videos_summary_off">Ähnliche Videos in den schnellen Aktionen sind angezeigt</string>
<string name="revanced_hide_image_shelf_title">Bild-Regal ausblenden</string>
<string name="revanced_hide_image_shelf_summary_on">Bild-Regal in den Suchergebnissen ist ausgeblendet</string>
<string name="revanced_hide_image_shelf_summary_off">Bild-Regal in den Suchergebnissen ist angezeigt</string>
<string name="revanced_hide_latest_posts_title">Neueste Beiträge ausblenden</string>
<string name="revanced_hide_latest_posts_summary_on">Neueste Beiträge sind ausgeblendet</string>
<string name="revanced_hide_latest_posts_summary_off">Neueste Beiträge werden angezeigt</string>
<string name="revanced_hide_mix_playlists_title">Mix-Wiedergabelisten ausblenden</string>
<string name="revanced_hide_mix_playlists_summary_on">Mix-Wiedergabelisten sind ausgeblendet</string>
<string name="revanced_hide_mix_playlists_summary_off">Mix-Wiedergabelisten werden angezeigt</string>
@@ -281,16 +263,39 @@ Sie werden nicht über unerwartete Ereignisse informiert."</string>
<string name="revanced_hide_description_components_screen_title">Videobeschreibung</string>
<string name="revanced_hide_description_components_screen_summary">Komponenten der Videobeschreibung ausblenden oder anzeigen</string>
<string name="revanced_hide_filter_bar_screen_title">Filterleiste</string>
<string name="revanced_hide_filter_bar_screen_summary">Die Filterleiste im Feed, in den Suchergebnissen und in verwandten Videos ein- oder ausblenden</string>
<string name="revanced_hide_filter_bar_feed_in_feed_title">Im Feed ausblenden</string>
<string name="revanced_hide_filter_bar_feed_in_feed_summary_on">Versteckt im Feed</string>
<string name="revanced_hide_filter_bar_feed_in_feed_summary_off">Im Feed angezeigt</string>
<string name="revanced_hide_filter_bar_screen_summary">Filterleiste in den Feeds, im Verlauf, in den Suchergebnissen und in ähnlichen Videos ein- oder ausblenden</string>
<string name="revanced_hide_filter_bar_feed_in_feed_title">In Feeds ausblenden</string>
<string name="revanced_hide_filter_bar_feed_in_feed_summary_on">In Feeds ausgeblendet</string>
<string name="revanced_hide_filter_bar_feed_in_feed_summary_off">In Feeds angezeigt</string>
<string name="revanced_hide_filter_bar_feed_in_history_title">Im Verlauf ausblenden</string>
<string name="revanced_hide_filter_bar_feed_in_history_summary_on">Im Verlauf ausgeblendet</string>
<string name="revanced_hide_filter_bar_feed_in_history_summary_off">Im Verlauf angezeigt</string>
<string name="revanced_hide_filter_bar_feed_in_search_title">In Suchergebnissen ausblenden</string>
<string name="revanced_hide_filter_bar_feed_in_search_summary_on">In Suchergebnissen versteckt</string>
<string name="revanced_hide_filter_bar_feed_in_search_summary_off">In den Suchergebnissen angezeigt</string>
<string name="revanced_hide_filter_bar_feed_in_related_videos_title">In verwandten Videos ausblenden</string>
<string name="revanced_hide_filter_bar_feed_in_related_videos_summary_on">Versteckt in verwandten Videos</string>
<string name="revanced_hide_filter_bar_feed_in_related_videos_summary_off">In verwandten Videos angezeigt</string>
<string name="revanced_channel_screen_title">Kanalseite</string>
<string name="revanced_channel_screen_summary">Kanalseitenkomponenten ausblenden oder anzeigen</string>
<!-- 'For You' should be translated using the same localized wording YouTube displays. -->
<string name="revanced_hide_for_you_shelf_title">\"Für dich\" Bereich ausblenden</string>
<string name="revanced_hide_for_you_shelf_summary_on">\"Für dich\" Bereich ist ausgeblendet</string>
<string name="revanced_hide_for_you_shelf_summary_off">\"Für dich\" Bereich ist angezeigt</string>
<string name="revanced_hide_links_preview_title">Linkvorschau ausblenden</string>
<string name="revanced_hide_links_preview_summary_on">Linkvorschau ist ausgeblendet</string>
<string name="revanced_hide_links_preview_summary_off">Linkvorschau ist angezeigt</string>
<string name="revanced_hide_members_shelf_title">Mitglieder-Regal ausblenden</string>
<string name="revanced_hide_members_shelf_summary_on">Mitglieder-Regal ist ausgeblendet</string>
<string name="revanced_hide_members_shelf_summary_off">Mitglieder-Regal wird angezeigt</string>
<!-- 'Visit Community' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_visit_community_button_title">Schaltfläche \'Community besuchen\' ausblenden</string>
<string name="revanced_hide_visit_community_button_summary_on">Schaltfläche \'Community besuchen\' ist ausgeblendet</string>
<string name="revanced_hide_visit_community_button_summary_off">Schaltfläche \"Community besuchen\" ist angezeigt</string>
<!-- 'Visit store' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_visit_store_button_title">Den \'Store besuchen\'-Button auf Kanalseiten ausblenden</string>
<string name="revanced_hide_visit_store_button_summary_on">Schaltfläche \"Shop besuchen\" ist ausgeblendet</string>
<string name="revanced_hide_visit_store_button_summary_off">Schaltfläche \"Shop besuchen\" ist 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_ai_chat_summary_title">KI-Chat-Zusammenfassung ausblenden</string>
@@ -299,24 +304,30 @@ Sie werden nicht über unerwartete Ereignisse informiert."</string>
<string name="revanced_hide_comments_ai_summary_title">KI-Kommentarübersicht ausblenden</string>
<string name="revanced_hide_comments_ai_summary_summary_on">Kommentarübersicht ist ausgeblendet</string>
<string name="revanced_hide_comments_ai_summary_summary_off">Kommentarübersicht wird angezeigt</string>
<string name="revanced_hide_comments_channel_guidelines_title">Kanalrichtlinien ausblenden</string>
<string name="revanced_hide_comments_channel_guidelines_summary_on">Kanalrichtlinien sind ausgeblendet</string>
<string name="revanced_hide_comments_channel_guidelines_summary_off">Kanalrichtlinien werden 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">Kopfzeile \"Kommentare von Mitgliedern\" ist ausgeblendet</string>
<string name="revanced_hide_comments_by_members_header_summary_off">Kopfzeile \"Kommentare von Mitgliedern\" wird angezeigt</string>
<string name="revanced_hide_comments_section_title">Kommentarbereich ausblenden</string>
<string name="revanced_hide_comments_section_summary_on">Kommentarbereich ist ausgeblendet</string>
<string name="revanced_hide_comments_section_summary_off">Kommentarbereich wird angezeigt</string>
<string name="revanced_hide_comments_community_guidelines_title">Community-Richtlinien ausblenden</string>
<string name="revanced_hide_comments_community_guidelines_summary_on">Community-Richtlinien sind ausgeblendet</string>
<string name="revanced_hide_comments_community_guidelines_summary_off">Community-Richtlinien sind angezeigt</string>
<string name="revanced_hide_comments_create_a_short_button_title">\'Verknüpfung erstellen\'-Button ausblenden</string>
<string name="revanced_hide_comments_create_a_short_button_summary_on">Schaltfläche \" Short erstellen\" ist ausgeblendet</string>
<string name="revanced_hide_comments_create_a_short_button_summary_off">Schaltfläche \" Short erstellen\" wird angezeigt</string>
<string name="revanced_hide_comments_timestamp_button_title">Timestamp-Button ausblenden</string>
<string name="revanced_hide_comments_timestamp_button_summary_on">Timestamp-Button ist ausgeblendet</string>
<string name="revanced_hide_comments_timestamp_button_summary_off">Timestamp-Button wird angezeigt</string>
<string name="revanced_hide_comments_preview_comment_title">Vorschaukommentar ausblenden</string>
<string name="revanced_hide_comments_preview_comment_summary_on">Vorschaukommentar ist ausgeblendet</string>
<string name="revanced_hide_comments_preview_comment_summary_off">Vorschau des Kommentars wird angezeigt</string>
<string name="revanced_hide_comments_thanks_button_title">Schließe die Dankeschön-Schaltfläche aus</string>
<string name="revanced_hide_comments_thanks_button_summary_on">Dankeschön-Taste ist ausgeblendet</string>
<string name="revanced_hide_comments_thanks_button_summary_off">Dankeschön Button wird angezeigt</string>
<string name="revanced_hide_comments_timestamp_button_title">Schaltfläche \'Zeitstempel\' ausblenden</string>
<string name="revanced_hide_comments_timestamp_button_summary_on">Timestamp-Button ist ausgeblendet</string>
<string name="revanced_hide_comments_timestamp_button_summary_off">Timestamp-Button wird angezeigt</string>
<!-- https://logos.fandom.com/wiki/YouTube/Yoodles -->
<string name="revanced_hide_doodles_title">YouTube Doodles ausblenden</string>
<string name="revanced_hide_doodles_summary_on">Suchleiste Doodles sind versteckt</string>
@@ -369,44 +380,41 @@ Einschränkungen
<string name="revanced_hide_keyword_toast_invalid_broad">Stichwort wird alle Videos ausblenden: %s</string>
</patch>
<patch id="ad.general.hideAdsResourcePatch">
<string name="revanced_hide_general_ads_title">Allgemeine Werbung ausblenden</string>
<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_creator_store_shelf_title">Creator-Shop-Regal ausblenden</string>
<string name="revanced_hide_creator_store_shelf_summary_on">Store-Regal unter dem Videoplayer ist ausgeblendet</string>
<string name="revanced_hide_creator_store_shelf_summary_off">Shop-Regal unter dem Videoplayer ist angezeigt</string>
<string name="revanced_hide_end_screen_store_banner_title">Endbild-Banner ausblenden</string>
<string name="revanced_hide_end_screen_store_banner_summary_on">Store-Banner wird ausgeblendet</string>
<string name="revanced_hide_end_screen_store_banner_summary_off">Store-Banner wird angezeigt</string>
<string name="revanced_hide_fullscreen_ads_title">Vollbild-Werbung ausblenden</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>
<!-- 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">Vollbild-Werbung ausblenden funktioniert nur mit älteren Geräten</string>
<string name="revanced_hide_general_ads_title">Allgemeine Werbung ausblenden</string>
<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_merchandise_banners_title">Merchandise-Banner ausblenden</string>
<string name="revanced_hide_merchandise_banners_summary_on">Merchandise-Banner sind ausgeblendet</string>
<string name="revanced_hide_merchandise_banners_summary_off">Warenbanner werden angezeigt</string>
<string name="revanced_hide_paid_promotion_label_title">Bezahltes Werbe-Label ausblenden</string>
<string name="revanced_hide_paid_promotion_label_summary_on">Bezahltes Werbelabel ist ausgeblendet</string>
<string name="revanced_hide_paid_promotion_label_summary_off">Bezahltes Werbe-Label wird angezeigt</string>
<string name="revanced_hide_self_sponsor_ads_title">Selbst gesponserte Karten ausblenden</string>
<string name="revanced_hide_self_sponsor_ads_summary_on">Selbst gesponserte Karten sind ausgeblendet</string>
<string name="revanced_hide_self_sponsor_ads_summary_off">Selbstgesponserte Karten werden angezeigt</string>
<string name="revanced_hide_products_banner_title">Banner \"Produkte ansehen\" ausblenden</string>
<string name="revanced_hide_products_banner_summary_on">Banner ist ausgeblendet</string>
<string name="revanced_hide_products_banner_summary_off">Banner wird angezeigt</string>
<string name="revanced_hide_end_screen_store_banner_title">Endbild-Banner ausblenden</string>
<string name="revanced_hide_end_screen_store_banner_summary_on">Store-Banner wird ausgeblendet</string>
<string name="revanced_hide_end_screen_store_banner_summary_off">Store-Banner wird angezeigt</string>
<string name="revanced_hide_player_store_shelf_title">Spieler-Einkaufsregal ausblenden</string>
<string name="revanced_hide_player_store_shelf_summary_on">Einkaufsregal ist ausgeblendet</string>
<string name="revanced_hide_player_store_shelf_summary_off">Einkaufsregal wird angezeigt</string>
<string name="revanced_hide_shopping_links_title">Einkaufslinks in der Videobeschreibung ausblenden</string>
<string name="revanced_hide_shopping_links_summary_on">Shopping-Links in der Videobeschreibung sind ausgeblendet</string>
<string name="revanced_hide_shopping_links_summary_off">Shopping-Links in der Videobeschreibung werden angezeigt</string>
<!-- 'Visit store' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_visit_store_button_title">Den \'Store besuchen\'-Button auf Kanalseiten ausblenden</string>
<string name="revanced_hide_visit_store_button_summary_on">Button auf der Kanalseite ist ausgeblendet</string>
<string name="revanced_hide_visit_store_button_summary_off">Button auf der Kanalseite wird angezeigt</string>
<string name="revanced_hide_shopping_links_title">Shopping-Links ausblenden</string>
<string name="revanced_hide_shopping_links_summary_on">Links in der Videobeschreibung sind ausgeblendet</string>
<string name="revanced_hide_shopping_links_summary_off">Links in der Videobeschreibung sind angezeigt</string>
<!-- 'View products' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_view_products_banner_title">„Produkte ansehen“-Banner ausblenden</string>
<string name="revanced_hide_view_products_banner_summary_on">Banner im Video-Overlay ist ausgeblendet</string>
<string name="revanced_hide_view_products_banner_summary_off">Banner im Video-Overlay wird angezeigt</string>
<string name="revanced_hide_web_search_results_title">Suchergebnisse ausblenden</string>
<string name="revanced_hide_web_search_results_summary_on">Web-Suchergebnisse sind ausgeblendet</string>
<string name="revanced_hide_web_search_results_summary_off">Web-Suchergebnisse werden angezeigt</string>
<string name="revanced_hide_merchandise_banners_title">Merchandise-Banner ausblenden</string>
<string name="revanced_hide_merchandise_banners_summary_on">Merchandise-Banner sind ausgeblendet</string>
<string name="revanced_hide_merchandise_banners_summary_off">Warenbanner werden angezeigt</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">Vollbild-Werbung ausblenden funktioniert nur mit älteren Geräten</string>
</patch>
<patch id="ad.getpremium.hideGetPremiumPatch">
<string name="revanced_hide_get_premium_title">YouTube Premium-Aktionen ausblenden</string>
@@ -766,6 +774,9 @@ Um das Audiotrack-Menü anzuzeigen, ändere \"Video-Streams fälschen\" zu iOS T
<string name="revanced_hide_shorts_upcoming_button_title">\'Demnächst\'-Button ausblenden</string>
<string name="revanced_hide_shorts_upcoming_button_summary_on">Kommender Button ist ausgeblendet</string>
<string name="revanced_hide_shorts_upcoming_button_summary_off">Kommende Schaltfläche wird angezeigt</string>
<string name="revanced_hide_shorts_effect_button_title">Effekt-Schaltfläche ausblenden</string>
<string name="revanced_hide_shorts_effect_button_summary_on">Effekt-Taste ist ausgeblendet</string>
<string name="revanced_hide_shorts_effect_button_summary_off">Effekt-Taste ist eingeblendet</string>
<string name="revanced_hide_shorts_green_screen_button_title">Green-Screen-Button ausblenden</string>
<string name="revanced_hide_shorts_green_screen_button_summary_on">Grünbildschirm-Taste ist ausgeblendet</string>
<string name="revanced_hide_shorts_green_screen_button_summary_off">Grünbildschirm-Taste wird angezeigt</string>
@@ -813,7 +824,7 @@ Um das Audiotrack-Menü anzuzeigen, ändere \"Video-Streams fälschen\" zu iOS T
<string name="revanced_hide_shorts_sound_metadata_label_title">Sound-Metadaten-Label ausblenden</string>
<string name="revanced_hide_shorts_sound_metadata_label_summary_on">Metadatenlabel ist ausgeblendet</string>
<string name="revanced_hide_shorts_sound_metadata_label_summary_off">Metadaten-Label wird angezeigt</string>
<string name="revanced_hide_shorts_full_video_link_label_title">Verstecke vollständige Video-Linkbezeichnung</string>
<string name="revanced_hide_shorts_full_video_link_label_title">Video-Link-Label ausblenden</string>
<string name="revanced_hide_shorts_full_video_link_label_summary_on">Video-Link-Label ist ausgeblendet</string>
<string name="revanced_hide_shorts_full_video_link_label_summary_off">Video-Link-Label wird angezeigt</string>
<string name="revanced_hide_shorts_sound_button_title">Tonschaltfläche ausblenden</string>
@@ -947,11 +958,25 @@ Diese Funktion funktioniert am besten mit einer Videoqualität von 720p oder nie
<string name="revanced_sb_enable_auto_hide_skip_segment_button">Überspringen-Button automatisch ausblenden</string>
<string name="revanced_sb_enable_auto_hide_skip_segment_button_sum_on">Überspringe Taste verbirgt sich nach ein paar Sekunden</string>
<string name="revanced_sb_enable_auto_hide_skip_segment_button_sum_off">Die Schaltfläche \"Überspringen\" wird für das gesamte Segment angezeigt</string>
<string name="revanced_sb_general_skiptoast">Einen toast beim Überspringen anzeigen</string>
<string name="revanced_sb_general_skiptoast_sum_on">Toast wird angezeigt, wenn ein Segment automatisch übersprungen wird. Tippe hier, um ein Beispiel zu sehen</string>
<string name="revanced_sb_general_skiptoast_sum_off">Toast wird nicht angezeigt. Tippe hier, um ein Beispiel zu sehen</string>
<string name="revanced_sb_auto_hide_skip_button_duration">Dauer des Überspringen-Buttons</string>
<string name="revanced_sb_auto_hide_skip_button_duration_sum">Wie lange die Schaltflächen zum Überspringen und zum Hervorheben angezeigt werden sollen, bevor sie automatisch ausgeblendet werden</string>
<string name="revanced_sb_general_skiptoast">Toast zum Rückgängigmachen des Überspringens anzeigen</string>
<string name="revanced_sb_general_skiptoast_sum_on">Ein Toast wird angezeigt, wenn ein Segment automatisch übersprungen wird. Tippen Sie auf die Toast-Benachrichtigung, um das Überspringen rückgängig zu machen</string>
<string name="revanced_sb_general_skiptoast_sum_off">Toast-Nachricht wird nicht angezeigt</string>
<string name="revanced_sb_toast_on_skip_duration">Dauer der Überspring-Toastmeldung</string>
<string name="revanced_sb_toast_on_skip_duration_sum">Wie lange der Hinweis zum Rückgängigmachen des Überspringens angezeigt werden soll</string>
<string name="revanced_sb_duration_1s">1 Sekunde</string>
<string name="revanced_sb_duration_2s">2 Sekunden</string>
<string name="revanced_sb_duration_3s">3 Sekunden</string>
<string name="revanced_sb_duration_4s">4 Sekunden</string>
<string name="revanced_sb_duration_5s">5 Sekunden</string>
<string name="revanced_sb_duration_6s">6 Sekunden</string>
<string name="revanced_sb_duration_7s">7 Sekunden</string>
<string name="revanced_sb_duration_8s">8 Sekunden</string>
<string name="revanced_sb_duration_9s">9 Sekunden</string>
<string name="revanced_sb_duration_10s">10 Sekunden</string>
<string name="revanced_sb_general_time_without">Videolänge ohne Segmente anzeigen</string>
<string name="revanced_sb_general_time_without_sum_on">Videolänge abzüglich aller Segmente in Klammern neben der vollständigen Videolänge</string>
<string name="revanced_sb_general_time_without_sum_on">Videolänge abzüglich aller Segmente wird in der Suchleiste angezeigt</string>
<string name="revanced_sb_general_time_without_sum_off">Vollständige Videolänge angezeigt</string>
<string name="revanced_sb_create_segment_category">Neue Segmente erstellen</string>
<string name="revanced_sb_enable_create_segment">Schaltfläche \"Neues Segment erstellen\" anzeigen</string>
@@ -1256,9 +1281,9 @@ Der Mini-Player kann mit einer Wischgeste vom Bildschirm nach links oder rechts
<string name="revanced_gradient_loading_screen_title">Gradientenladebildschirm aktivieren</string>
<string name="revanced_gradient_loading_screen_summary_on">Lade Bildschirm hat einen Farbverlauf Hintergrund</string>
<string name="revanced_gradient_loading_screen_summary_off">Das Laden des Bildschirms wird einen soliden Hintergrund haben</string>
<string name="splash_screen_animation_style_title">Art des Begrüßungsbildschirms</string>
<string name="splash_screen_animation_style_entry_1">Farbe</string>
<string name="splash_screen_animation_style_entry_2">Schwarz und Weiß</string>
<string name="revanced_splash_screen_animation_style_title">Art des Begrüßungsbildschirms</string>
<string name="revanced_splash_screen_animation_style_entry_1">Farbe</string>
<string name="revanced_splash_screen_animation_style_entry_2">Schwarz und Weiß</string>
<string name="revanced_seekbar_custom_color_title">Eigene Suchleistenfarbe aktivieren</string>
<string name="revanced_seekbar_custom_color_summary_on">Angepasste Suchleistenfarbe wird angezeigt</string>
<string name="revanced_seekbar_custom_color_summary_off">Originalfarbe der Suchleiste wird angezeigt</string>

View File

@@ -162,6 +162,7 @@ Second \"item\" text"</string>
• Έκτακτη είδηση
• Συνέχεια παρακολούθησης
• Εξερευνήστε περισσότερα κανάλια
• Πιο σχετικό
• Αγορές
• Παρακολουθήστε ξανά"</string>
<string name="revanced_hide_horizontal_shelves_summary_off">Εμφανίζονται</string>
@@ -170,10 +171,6 @@ Second \"item\" text"</string>
<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>
<!-- '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>
<!-- '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>
@@ -194,15 +191,12 @@ Second \"item\" text"</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_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_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>
@@ -215,15 +209,9 @@ Second \"item\" text"</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_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_emergency_box_title">Πλαίσια έκτακτης ανάγκης</string>
<string name="revanced_hide_emergency_box_summary_on">Κρυμμένα</string>
<string name="revanced_hide_emergency_box_summary_off">Εμφανίζονται</string>
@@ -239,18 +227,18 @@ Second \"item\" text"</string>
<string name="revanced_hide_playables_title">Παιχνίδια YouTube</string>
<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_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_latest_posts_ads_title">Τελευταίες δημοσιεύσεις</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_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_latest_posts_title">Τελευταίες δημοσιεύσεις</string>
<string name="revanced_hide_latest_posts_summary_on">Κρυμμένες</string>
<string name="revanced_hide_latest_posts_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>
@@ -287,16 +275,39 @@ Second \"item\" text"</string>
<string name="revanced_hide_description_components_screen_title">Περιγραφή βίντεο</string>
<string name="revanced_hide_description_components_screen_summary">Απόκρυψη ή εμφάνιση στοιχείων περιγραφής βίντεο</string>
<string name="revanced_hide_filter_bar_screen_title">Γραμμή φίλτρων</string>
<string name="revanced_hide_filter_bar_screen_summary">Απόκρυψη ή εμφάνιση της γραμμής φίλτρων στην ροή, στα αποτελέσματα αναζήτησης και στα σχετικά βίντεο</string>
<string name="revanced_hide_filter_bar_feed_in_feed_title">Απόκρυψη στη ροή</string>
<string name="revanced_hide_filter_bar_screen_summary">Απόκρυψη ή εμφάνιση της γραμμής φίλτρων στις ροές, στο ιστορικό, στα αποτελέσματα αναζήτησης και στα σχετικά βίντεο</string>
<string name="revanced_hide_filter_bar_feed_in_feed_title">Απόκρυψη στις ροές</string>
<string name="revanced_hide_filter_bar_feed_in_feed_summary_on">Κρυμμένη</string>
<string name="revanced_hide_filter_bar_feed_in_feed_summary_off">Εμφανίζεται</string>
<string name="revanced_hide_filter_bar_feed_in_history_title">Απόκρυψη στο ιστορικό</string>
<string name="revanced_hide_filter_bar_feed_in_history_summary_on">Κρυμμένη</string>
<string name="revanced_hide_filter_bar_feed_in_history_summary_off">Εμφανίζεται</string>
<string name="revanced_hide_filter_bar_feed_in_search_title">Απόκρυψη στα αποτελέσματα αναζήτησης</string>
<string name="revanced_hide_filter_bar_feed_in_search_summary_on">Κρυμμένη</string>
<string name="revanced_hide_filter_bar_feed_in_search_summary_off">Εμφανίζεται</string>
<string name="revanced_hide_filter_bar_feed_in_related_videos_title">Απόκρυψη στα σχετικά βίντεο</string>
<string name="revanced_hide_filter_bar_feed_in_related_videos_summary_on">Κρυμμένη</string>
<string name="revanced_hide_filter_bar_feed_in_related_videos_summary_off">Εμφανίζεται</string>
<string name="revanced_channel_screen_title">Σελίδα καναλιού</string>
<string name="revanced_channel_screen_summary">Απόκρυψη ή εμφάνιση στοιχείων σελίδας καναλιού</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_links_preview_title">Απόκρυψη προεπισκόπησης συνδέσμων</string>
<string name="revanced_hide_links_preview_summary_on">Η προεπισκόπηση συνδέσμων είναι κρυμμένη</string>
<string name="revanced_hide_links_preview_summary_off">Η προεπισκόπηση συνδέσμων εμφανίζεται</string>
<string name="revanced_hide_members_shelf_title">Απόκρυψη ενότητας μελών</string>
<string name="revanced_hide_members_shelf_summary_on">Η ενότητα μελών είναι κρυμμένη</string>
<string name="revanced_hide_members_shelf_summary_off">Εμφανίζεται το ράφι μελών</string>
<!-- 'Visit Community' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_visit_community_button_title">Απόκρυψη κουμπιού «Επίσκεψη στην Κοινότητα»</string>
<string name="revanced_hide_visit_community_button_summary_on">Το κουμπί «Επίσκεψη στην Κοινότητα» κρυμμένο</string>
<string name="revanced_hide_visit_community_button_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_comments_screen_title">Σχόλια</string>
<string name="revanced_comments_screen_summary">Απόκρυψη ή εμφάνιση στοιχείων στα σχόλια</string>
<string name="revanced_hide_comments_ai_chat_summary_title">Σύνοψη συνομιλίας που δημιουργήθηκε από AI</string>
@@ -305,24 +316,30 @@ Second \"item\" text"</string>
<string name="revanced_hide_comments_ai_summary_title">Σύνοψη σχολίων που δημιουργήθηκε από AI</string>
<string name="revanced_hide_comments_ai_summary_summary_on">Κρυμμένη</string>
<string name="revanced_hide_comments_ai_summary_summary_off">Εμφανίζεται</string>
<string name="revanced_hide_comments_channel_guidelines_title">Οδηγίες καναλιού</string>
<string name="revanced_hide_comments_channel_guidelines_summary_on">Κρυμμένες</string>
<string name="revanced_hide_comments_channel_guidelines_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_community_guidelines_title">Οδηγίες κοινότητας</string>
<string name="revanced_hide_comments_community_guidelines_summary_on">Κρυμμένες</string>
<string name="revanced_hide_comments_community_guidelines_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">Κρυμμένο</string>
<string name="revanced_hide_comments_create_a_short_button_summary_off">Εμφανίζεται</string>
<string name="revanced_hide_comments_timestamp_button_title">Κουμπί χρονοσήμανσης</string>
<string name="revanced_hide_comments_timestamp_button_summary_on">Κρυμμένο</string>
<string name="revanced_hide_comments_timestamp_button_summary_off">Εμφανίζεται</string>
<string name="revanced_hide_comments_preview_comment_title">Προεπισκόπηση σχολίου</string>
<string name="revanced_hide_comments_preview_comment_summary_on">Κρυμμένη</string>
<string name="revanced_hide_comments_preview_comment_summary_off">Εμφανίζεται</string>
<string name="revanced_hide_comments_thanks_button_title">Κουμπί «Σας ευχαριστούμε»</string>
<string name="revanced_hide_comments_thanks_button_summary_on">Κρυμμένο</string>
<string name="revanced_hide_comments_thanks_button_summary_off">Εμφανίζεται</string>
<string name="revanced_hide_comments_timestamp_button_title">Απόκρυψη κουμπιού χρονοσήμανσης</string>
<string name="revanced_hide_comments_timestamp_button_summary_on">Κρυμμένο</string>
<string name="revanced_hide_comments_timestamp_button_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">Κρυμμένα</string>
@@ -376,44 +393,41 @@ Second \"item\" text"</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_creator_store_shelf_title">Απόκρυψη ενότητας καταστήματος δημιουργού</string>
<string name="revanced_hide_creator_store_shelf_summary_on">Το ράφι καταστήματος κάτω από το πρόγραμμα αναπαραγωγής βίντεο είναι κρυμμένο</string>
<string name="revanced_hide_creator_store_shelf_summary_off">Η ενότητα καταστήματος κάτω από το πρόγραμμα αναπαραγωγής βίντεο εμφανίζεται</string>
<string name="revanced_hide_end_screen_store_banner_title">Ετικέτα καταστήματος στην τελική οθόνη</string>
<string name="revanced_hide_end_screen_store_banner_summary_on">Κρυμμένη</string>
<string name="revanced_hide_end_screen_store_banner_summary_off">Εμφανίζεται</string>
<string name="revanced_hide_fullscreen_ads_title">Διαφημίσεις πλήρους οθόνης</string>
<string name="revanced_hide_fullscreen_ads_summary_on">"Κρυμμένες
Αυτή η λειτουργία είναι διαθέσιμη μόνο για παλιότερες συσκευές"</string>
<string name="revanced_hide_fullscreen_ads_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>
<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_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_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>
<string name="revanced_hide_self_sponsor_ads_title">Κάρτες αυτοπροώθησης</string>
<string name="revanced_hide_self_sponsor_ads_summary_on">Κρυμμένες</string>
<string name="revanced_hide_self_sponsor_ads_summary_off">Εμφανίζονται</string>
<string name="revanced_hide_products_banner_title">Ετικέτα «Προβολή προϊόντων»</string>
<string name="revanced_hide_products_banner_summary_on">Κρυμμένες</string>
<string name="revanced_hide_products_banner_summary_off">Εμφανίζονται</string>
<string name="revanced_hide_end_screen_store_banner_title">Ετικέτα καταστήματος στην τελική οθόνη</string>
<string name="revanced_hide_end_screen_store_banner_summary_on">Κρυμμένη</string>
<string name="revanced_hide_end_screen_store_banner_summary_off">Εμφανίζεται</string>
<string name="revanced_hide_player_store_shelf_title">Ενότητα αγορών οθόνης αναπαραγωγής</string>
<string name="revanced_hide_player_store_shelf_summary_on">Κρυμμένη</string>
<string name="revanced_hide_player_store_shelf_summary_off">Εμφανίζεται</string>
<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>
<!-- '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_shopping_links_summary_on">Οι σύνδεσμοι στην περιγραφή βίντεο είναι κρυμμένοι</string>
<string name="revanced_hide_shopping_links_summary_off">Οι σύνδεσμοι στην περιγραφή βίντεο εμφανίζονται</string>
<!-- 'View products' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_view_products_banner_title">Ετικέτα «Προβολή προϊόντων»</string>
<string name="revanced_hide_view_products_banner_summary_on">Κρυμμένη</string>
<string name="revanced_hide_view_products_banner_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_merchandise_banners_title">Εμβλήματα εμπορευμάτων</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>
@@ -775,6 +789,9 @@ Second \"item\" text"</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_effect_button_title">Κουμπί «Εφέ»</string>
<string name="revanced_hide_shorts_effect_button_summary_on">Κρυμμένο</string>
<string name="revanced_hide_shorts_effect_button_summary_off">Εμφανίζεται</string>
<string name="revanced_hide_shorts_green_screen_button_title">Κουμπί «Green screen»</string>
<string name="revanced_hide_shorts_green_screen_button_summary_on">Κρυμμένο</string>
<string name="revanced_hide_shorts_green_screen_button_summary_off">Εμφανίζεται</string>
@@ -822,7 +839,7 @@ Second \"item\" text"</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_full_video_link_label_title">Ετικέτες συνδέσμων πλήρους βίντεο</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>
<string name="revanced_hide_shorts_sound_button_title">Κουμπί ήχου</string>
@@ -956,11 +973,25 @@ Second \"item\" text"</string>
<string name="revanced_sb_enable_auto_hide_skip_segment_button">Αυτόματη απόκρυψη κουμπιού παράλειψης</string>
<string name="revanced_sb_enable_auto_hide_skip_segment_button_sum_on">Το κουμπί παράλειψης κρύβεται μετά από μερικά δευτερόλεπτα</string>
<string name="revanced_sb_enable_auto_hide_skip_segment_button_sum_off">Το κουμπί παράλειψης εμφανίζεται σε όλο το τμήμα</string>
<string name="revanced_sb_general_skiptoast">Εμφάνιση μηνύματος κατά την παράλειψη</string>
<string name="revanced_sb_general_skiptoast_sum_on">Εμφανίζεται μήνυμα στο κάτω μέρος της οθόνης όταν ένα τμήμα παραλείπεται αυτόματα. Πατήστε για να δείτε ένα παράδειγμα</string>
<string name="revanced_sb_general_skiptoast_sum_off">Δεν εμφανίζεται μήνυμα στο κάτω μέρος της οθόνης. Πατήστε για να δείτε ένα παράδειγμα</string>
<string name="revanced_sb_auto_hide_skip_button_duration">Διάρκεια κουμπιού παράλειψης</string>
<string name="revanced_sb_auto_hide_skip_button_duration_sum">Διάρκεια εμφάνισης των κουμπιών παράλειψης και μετάβασης στο αποκορύφωμα πριν την αυτόματη απόκρυψη</string>
<string name="revanced_sb_general_skiptoast">Εμφάνιση μηνύματος αναίρεσης παράλειψης</string>
<string name="revanced_sb_general_skiptoast_sum_on">Εμφανίζεται μήνυμα στο κάτω μέρος της οθόνης όταν ένα τμήμα παραλείπεται αυτόματα. Πατήστε το μήνυμα για αναίρεση της παράλειψης</string>
<string name="revanced_sb_general_skiptoast_sum_off">Δεν εμφανίζεται μήνυμα στο κάτω μέρος της οθόνης όταν ένα τμήμα παραλείπεται αυτόματα</string>
<string name="revanced_sb_toast_on_skip_duration">Διάρκεια μηνύματος παράλειψης</string>
<string name="revanced_sb_toast_on_skip_duration_sum">Διάρκεια εμφάνισης του μηνύματος αναίρεσης παράλειψης</string>
<string name="revanced_sb_duration_1s">1 δευτερόλεπτο</string>
<string name="revanced_sb_duration_2s">2 δευτερόλεπτα</string>
<string name="revanced_sb_duration_3s">3 δευτερόλεπτα</string>
<string name="revanced_sb_duration_4s">4 δευτερόλεπτα</string>
<string name="revanced_sb_duration_5s">5 δευτερόλεπτα</string>
<string name="revanced_sb_duration_6s">6 δευτερόλεπτα</string>
<string name="revanced_sb_duration_7s">7 δευτερόλεπτα</string>
<string name="revanced_sb_duration_8s">8 δευτερόλεπτα</string>
<string name="revanced_sb_duration_9s">9 δευτερόλεπτα</string>
<string name="revanced_sb_duration_10s">10 δευτερόλεπτα</string>
<string name="revanced_sb_general_time_without">Εμφάνιση μήκους βίντεο χωρίς τα τμήματα</string>
<string name="revanced_sb_general_time_without_sum_on">Εμφανίζεται το μήκος βίντεο μείον όλα τα τμήματα, σε παρένθεση δίπλα στο πλήρες μήκος βίντεο</string>
<string name="revanced_sb_general_time_without_sum_on">Το μήκος του βίντεο χωρίς όλα τα τμήματα εμφανίζεται πάνω στη γραμμή προόδου</string>
<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>
@@ -1264,9 +1295,9 @@ Second \"item\" text"</string>
<string name="revanced_gradient_loading_screen_title">Διαβάθμιση οθόνης φόρτωσης</string>
<string name="revanced_gradient_loading_screen_summary_on">Η οθόνη φόρτωσης θα έχει σταδιακές αποχρώσεις φόντο</string>
<string name="revanced_gradient_loading_screen_summary_off">Η οθόνη φόρτωσης θα έχει στατική απόχρωση φόντο</string>
<string name="splash_screen_animation_style_title">Στυλ οθόνης εκκίνησης</string>
<string name="splash_screen_animation_style_entry_1">Χρωματιστή</string>
<string name="splash_screen_animation_style_entry_2">Ασπρόμαυρη</string>
<string name="revanced_splash_screen_animation_style_title">Στυλ οθόνης εκκίνησης</string>
<string name="revanced_splash_screen_animation_style_entry_1">Χρωματιστή</string>
<string name="revanced_splash_screen_animation_style_entry_2">Ασπρόμαυρη</string>
<string name="revanced_seekbar_custom_color_title">Προσαρμοσμένο χρώμα γραμμής προόδου</string>
<string name="revanced_seekbar_custom_color_summary_on">Η γραμμή προόδου εμφανίζεται με προσαρμοσμένο χρώμα</string>
<string name="revanced_seekbar_custom_color_summary_off">Η γραμμή προόδου εμφανίζεται με το αρχικό χρώμα</string>

View File

@@ -153,22 +153,19 @@ Sin embargo, si activas esto, también se registrarán algunos datos del usuario
<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, tales como:
Noticias de última hora
Continuar viendo
<string name="revanced_hide_horizontal_shelves_summary_on">"Las estanterías están ocultas, como:
Últimas noticias
Seguir viendo
• Explorar más canales
• Más relevantes
• Compras
• Verlo de nuevo"</string>
• Ver 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. -->
<string name="revanced_hide_join_membership_button_title">Ocultar el botón Unirse</string>
<string name="revanced_hide_join_membership_button_summary_on">Botón oculto</string>
<string name="revanced_hide_join_membership_button_summary_off">Se muestra el botón</string>
<!-- 'For you' should be translated using the same localized wording YouTube displays. -->
<string name="revanced_hide_for_you_shelf_title">Ocultar la sección \"Para ti\"</string>
<string name="revanced_hide_for_you_shelf_summary_on">El estante en la página del canal está oculto</string>
<string name="revanced_hide_for_you_shelf_summary_off">El estante en la página del canal se muestra</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">Ocultar el botón \'Notificarme\'</string>
@@ -189,15 +186,12 @@ Sin embargo, si activas esto, también se registrarán algunos datos del usuario
<string name="revanced_hide_timed_reactions_title">Ocultar reacciones temporizadas</string>
<string name="revanced_hide_timed_reactions_summary_on">Las reacciones temporizadas están ocultas</string>
<string name="revanced_hide_timed_reactions_summary_off">Se muestran reacciones temporizadas</string>
<string name="revanced_hide_channel_guidelines_title">Ocultar pautas de canal</string>
<string name="revanced_hide_channel_guidelines_summary_on">Las pautas del canal están ocultas</string>
<string name="revanced_hide_channel_guidelines_summary_off">Se muestran las pautas del canal</string>
<string name="revanced_hide_chips_shelf_title">Ocultar \"Más como esto\"</string>
<string name="revanced_hide_chips_shelf_summary_on">\"Más como esto\" está oculto</string>
<string name="revanced_hide_chips_shelf_summary_off">\"Más como esto\" está habilitado</string>
<string name="revanced_hide_expandable_chip_title">Ocultar tarjeta expandible debajo de los videos</string>
<string name="revanced_hide_expandable_chip_summary_on">La tarjeta expandible está oculta</string>
<string name="revanced_hide_expandable_chip_summary_off">Se muestra la tarjeta expandible</string>
<string name="revanced_hide_expandable_chip_title">Ocultar tarjeta expandible</string>
<string name="revanced_hide_expandable_chip_summary_on">Tarjeta expandible debajo de los videos oculta</string>
<string name="revanced_hide_expandable_chip_summary_off">Tarjeta expandible debajo de los videos visible</string>
<string name="revanced_hide_community_posts_title">Ocultar mensajes comunitarios</string>
<string name="revanced_hide_community_posts_summary_on">Los mensajes de la comunidad están ocultos</string>
<string name="revanced_hide_community_posts_summary_off">Se muestran las publicaciones de la comunidad</string>
@@ -210,15 +204,9 @@ Sin embargo, si activas esto, también se registrarán algunos datos del usuario
<string name="revanced_hide_feed_survey_title">Ocultar encuestas</string>
<string name="revanced_hide_feed_survey_summary_on">Las encuestas en el Inicio están ocultas</string>
<string name="revanced_hide_feed_survey_summary_off">Se muestran encuestas en el Inicio</string>
<string name="revanced_hide_community_guidelines_title">Ocultar pautas comunitarias</string>
<string name="revanced_hide_community_guidelines_summary_on">Las pautas comunitarias están ocultas</string>
<string name="revanced_hide_community_guidelines_summary_off">Se muestran las pautas comunitarias</string>
<string name="revanced_hide_subscribers_community_guidelines_title">Ocultar las directrices para suscriptores</string>
<string name="revanced_hide_subscribers_community_guidelines_summary_on">Las pautas comunitarias de los suscriptores están ocultas</string>
<string name="revanced_hide_subscribers_community_guidelines_summary_off">Se muestran las pautas de la comunidad de suscriptores</string>
<string name="revanced_hide_channel_member_shelf_title">Ocultar estante del miembro del canal</string>
<string name="revanced_hide_channel_member_shelf_summary_on">El estante del miembro del canal está oculta</string>
<string name="revanced_hide_channel_member_shelf_summary_off">Se muestra el estante del miembro del canal</string>
<string name="revanced_hide_emergency_box_title">Ocultar cajas de emergencia</string>
<string name="revanced_hide_emergency_box_summary_on">Las cajas de emergencia están ocultas</string>
<string name="revanced_hide_emergency_box_summary_off">Se muestran cajas de emergencia</string>
@@ -234,18 +222,18 @@ Sin embargo, si activas esto, también se registrarán algunos datos del usuario
<string name="revanced_hide_playables_title">Ocultar los reproducibles</string>
<string name="revanced_hide_playables_summary_on">Los reproducibles están ocultos</string>
<string name="revanced_hide_playables_summary_off">Se muestran los reproducibles</string>
<string name="revanced_hide_quick_actions_title">Ocultar acciones rápidas en pantalla completa</string>
<string name="revanced_hide_quick_actions_summary_on">Las acciones rápidas están ocultas</string>
<string name="revanced_hide_quick_actions_summary_off">Se muestran acciones rápidas</string>
<string name="revanced_hide_related_videos_title">Ocultar vídeos relacionados en acciones rápidas</string>
<string name="revanced_hide_related_videos_summary_on">Vídeos relacionados están ocultos</string>
<string name="revanced_hide_related_videos_summary_off">Vídeos relacionados se muestran</string>
<string name="revanced_hide_image_shelf_title">Ocultar la imagen en los resultados de búsqueda</string>
<string name="revanced_hide_image_shelf_summary_on">El estante de imágenes está oculto</string>
<string name="revanced_hide_image_shelf_summary_off">El estante de imágenes se muestra</string>
<string name="revanced_hide_latest_posts_ads_title">Ocultar últimos mensajes</string>
<string name="revanced_hide_latest_posts_ads_summary_on">Las últimas publicaciones están ocultas</string>
<string name="revanced_hide_latest_posts_ads_summary_off">Se muestran las últimas publicaciones</string>
<string name="revanced_hide_quick_actions_title">Ocultar acciones rápidas</string>
<string name="revanced_hide_quick_actions_summary_on">Acciones rápidas en pantalla completa ocultas</string>
<string name="revanced_hide_quick_actions_summary_off">Acciones rápidas en pantalla completa visibles</string>
<string name="revanced_hide_related_videos_title">Ocultar videos relacionados</string>
<string name="revanced_hide_related_videos_summary_on">Videos relacionados en acciones rápidas ocultos</string>
<string name="revanced_hide_related_videos_summary_off">Videos relacionados en acciones rápidas visibles</string>
<string name="revanced_hide_image_shelf_title">Ocultar estantería de imágenes</string>
<string name="revanced_hide_image_shelf_summary_on">Estantería de imágenes en los resultados de búsqueda oculta</string>
<string name="revanced_hide_image_shelf_summary_off">Estantería de imágenes en los resultados de búsqueda visible</string>
<string name="revanced_hide_latest_posts_title">Ocultar últimos mensajes</string>
<string name="revanced_hide_latest_posts_summary_on">Las últimas publicaciones están ocultas</string>
<string name="revanced_hide_latest_posts_summary_off">Se muestran las últimas publicaciones</string>
<string name="revanced_hide_mix_playlists_title">Ocultar listas de mezcla</string>
<string name="revanced_hide_mix_playlists_summary_on">Las listas de reproducción mixtas están ocultas</string>
<string name="revanced_hide_mix_playlists_summary_off">Mezclar listas de reproducción son mostradas</string>
@@ -282,16 +270,39 @@ Sin embargo, si activas esto, también se registrarán algunos datos del usuario
<string name="revanced_hide_description_components_screen_title">Descripción del vídeo</string>
<string name="revanced_hide_description_components_screen_summary">Ocultar o mostrar componentes de descripción de vídeo</string>
<string name="revanced_hide_filter_bar_screen_title">Barra de filtros</string>
<string name="revanced_hide_filter_bar_screen_summary">Ocultar o mostrar la barra de filtro en el feed, los resultados de búsqueda y los videos relacionados</string>
<string name="revanced_hide_filter_bar_feed_in_feed_title">Ocultar en el feed</string>
<string name="revanced_hide_filter_bar_feed_in_feed_summary_on">Escondido en el feed</string>
<string name="revanced_hide_filter_bar_feed_in_feed_summary_off">Mostrar en el feed</string>
<string name="revanced_hide_filter_bar_screen_summary">Ocultar o mostrar la barra de filtros en las fuentes, historial, resultados de búsqueda y deos relacionados</string>
<string name="revanced_hide_filter_bar_feed_in_feed_title">Ocultar en feeds</string>
<string name="revanced_hide_filter_bar_feed_in_feed_summary_on">Oculto en feeds</string>
<string name="revanced_hide_filter_bar_feed_in_feed_summary_off">Visible en feeds</string>
<string name="revanced_hide_filter_bar_feed_in_history_title">Ocultar en el historial</string>
<string name="revanced_hide_filter_bar_feed_in_history_summary_on">Oculto en el historial</string>
<string name="revanced_hide_filter_bar_feed_in_history_summary_off">Visible en el historial</string>
<string name="revanced_hide_filter_bar_feed_in_search_title">Ocultar en los resultados de búsqueda</string>
<string name="revanced_hide_filter_bar_feed_in_search_summary_on">Oculto en los resultados de búsqueda</string>
<string name="revanced_hide_filter_bar_feed_in_search_summary_off">Mostrado en los resultados de búsqueda</string>
<string name="revanced_hide_filter_bar_feed_in_related_videos_title">Ocultar en vídeos relacionados</string>
<string name="revanced_hide_filter_bar_feed_in_related_videos_summary_on">Escondido en videos relacionados</string>
<string name="revanced_hide_filter_bar_feed_in_related_videos_summary_off">Mostrar en vídeos relacionados</string>
<string name="revanced_channel_screen_title">Página del canal</string>
<string name="revanced_channel_screen_summary">Ocultar o mostrar componentes de la página del canal</string>
<!-- 'For You' should be translated using the same localized wording YouTube displays. -->
<string name="revanced_hide_for_you_shelf_title">Ocultar la sección \"Para ti\"</string>
<string name="revanced_hide_for_you_shelf_summary_on">La estantería \"Para ti\" está oculta</string>
<string name="revanced_hide_for_you_shelf_summary_off">La estantería \"Para ti\" está visible</string>
<string name="revanced_hide_links_preview_title">Ocultar vista previa de enlaces</string>
<string name="revanced_hide_links_preview_summary_on">Vista previa de enlaces oculta</string>
<string name="revanced_hide_links_preview_summary_off">Vista previa de enlaces visible</string>
<string name="revanced_hide_members_shelf_title">Ocultar estantería de miembros</string>
<string name="revanced_hide_members_shelf_summary_on">Estantería de miembros oculta</string>
<string name="revanced_hide_members_shelf_summary_off">El estante de miembros se muestra</string>
<!-- 'Visit Community' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_visit_community_button_title">Ocultar el botón \"Visitar comunidad\"</string>
<string name="revanced_hide_visit_community_button_summary_on">El botón Visitar comunidad está oculto</string>
<string name="revanced_hide_visit_community_button_summary_off">El botón \"Visitar comunidad\" está visible</string>
<!-- 'Visit store' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_visit_store_button_title">Ocultar el botón \'Visitar tienda\' en las páginas del canal</string>
<string name="revanced_hide_visit_store_button_summary_on">El botón \"Visitar tienda\" está oculto</string>
<string name="revanced_hide_visit_store_button_summary_off">El botón \"Visitar tienda\" está visible</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_ai_chat_summary_title">Ocultar el resumen del chat de IA</string>
@@ -300,24 +311,30 @@ Sin embargo, si activas esto, también se registrarán algunos datos del usuario
<string name="revanced_hide_comments_ai_summary_title">Ocultar el resumen de los comentarios de la IA</string>
<string name="revanced_hide_comments_ai_summary_summary_on">El resumen de los comentarios está oculto</string>
<string name="revanced_hide_comments_ai_summary_summary_off">El resumen de los comentarios se muestra</string>
<string name="revanced_hide_comments_channel_guidelines_title">Ocultar directrices del canal</string>
<string name="revanced_hide_comments_channel_guidelines_summary_on">Las directrices del canal están ocultas</string>
<string name="revanced_hide_comments_channel_guidelines_summary_off">Las directrices del canal se muestran</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 de los miembros está oculto</string>
<string name="revanced_hide_comments_by_members_header_summary_off">Se muestra el encabezado Comentarios de los miembros</string>
<string name="revanced_hide_comments_section_title">Ocultar sección de comentarios</string>
<string name="revanced_hide_comments_section_summary_on">La sección de comentarios está oculta</string>
<string name="revanced_hide_comments_section_summary_off">Sección de comentarios mostrada</string>
<string name="revanced_hide_comments_community_guidelines_title">Ocultar directrices de la comunidad</string>
<string name="revanced_hide_comments_community_guidelines_summary_on">Directrices de la comunidad ocultas</string>
<string name="revanced_hide_comments_community_guidelines_summary_off">Directrices de la comunidad visibles</string>
<string name="revanced_hide_comments_create_a_short_button_title">Ocultar botón \'Crear un Short\'</string>
<string name="revanced_hide_comments_create_a_short_button_summary_on">El botón Crear un Short está oculto</string>
<string name="revanced_hide_comments_create_a_short_button_summary_off">Se muestra el botón Crear un Short</string>
<string name="revanced_hide_comments_timestamp_button_title">Ocultar botón de marca de tiempo</string>
<string name="revanced_hide_comments_timestamp_button_summary_on">Botón de marca de tiempo oculto</string>
<string name="revanced_hide_comments_timestamp_button_summary_off">Botón de marca de tiempo mostrado</string>
<string name="revanced_hide_comments_preview_comment_title">Ocultar comentario de vista previa</string>
<string name="revanced_hide_comments_preview_comment_summary_on">El comentario de la vista previa está oculto</string>
<string name="revanced_hide_comments_preview_comment_summary_off">Vista previa del comentario se muestra</string>
<string name="revanced_hide_comments_thanks_button_title">Ocultar botón Gracias</string>
<string name="revanced_hide_comments_thanks_button_summary_on">El botón de gracias está oculto</string>
<string name="revanced_hide_comments_thanks_button_summary_off">Se muestra el botón de gracias</string>
<string name="revanced_hide_comments_timestamp_button_title">Ocultar botón de marca de tiempo</string>
<string name="revanced_hide_comments_timestamp_button_summary_on">Botón de marca de tiempo oculto</string>
<string name="revanced_hide_comments_timestamp_button_summary_off">Botón de marca de tiempo mostrado</string>
<!-- https://logos.fandom.com/wiki/YouTube/Yoodles -->
<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>
@@ -371,44 +388,41 @@ Limitaciones
<string name="revanced_hide_keyword_toast_invalid_broad">Palabra clave ocultará todos los vídeos: %s</string>
</patch>
<patch id="ad.general.hideAdsResourcePatch">
<string name="revanced_hide_general_ads_title">Ocultar anuncios generales</string>
<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_creator_store_shelf_title">Ocultar estantería de la tienda del creador</string>
<string name="revanced_hide_creator_store_shelf_summary_on">El estante de la tienda debajo del reproductor de video está oculto</string>
<string name="revanced_hide_creator_store_shelf_summary_off">Estantería de la tienda debajo del reproductor de video visible</string>
<string name="revanced_hide_end_screen_store_banner_title">Ocultar banner de la tienda en la pantalla final</string>
<string name="revanced_hide_end_screen_store_banner_summary_on">El banner de la tienda está oculto</string>
<string name="revanced_hide_end_screen_store_banner_summary_off">El banner de la tienda está mostrado</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
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>
<!-- 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">Ocultar anuncio solo con dispositivos viejos</string>
<string name="revanced_hide_general_ads_title">Ocultar anuncios generales</string>
<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_merchandise_banners_title">Ocultar banners publicitarios</string>
<string name="revanced_hide_merchandise_banners_summary_on">Los banners publicitarios están ocultos</string>
<string name="revanced_hide_merchandise_banners_summary_off">Se muestran los banners publicitarios</string>
<string name="revanced_hide_paid_promotion_label_title">Ocultar etiqueta de promoción de pago</string>
<string name="revanced_hide_paid_promotion_label_summary_on">Etiqueta de promoción pagada está oculta</string>
<string name="revanced_hide_paid_promotion_label_summary_off">Etiqueta de promoción pagada se muestra</string>
<string name="revanced_hide_self_sponsor_ads_title">Ocultar tarjetas autopatrocinadas</string>
<string name="revanced_hide_self_sponsor_ads_summary_on">Las tarjetas autopatrocinadas están ocultas</string>
<string name="revanced_hide_self_sponsor_ads_summary_off">Se muestran las tarjetas autopatrocinadas</string>
<string name="revanced_hide_products_banner_title">Ocultar el banner \"Ver productos\"</string>
<string name="revanced_hide_products_banner_summary_on">Banner oculto</string>
<string name="revanced_hide_products_banner_summary_off">Banner mostrado</string>
<string name="revanced_hide_end_screen_store_banner_title">Ocultar banner de la tienda en la pantalla final</string>
<string name="revanced_hide_end_screen_store_banner_summary_on">El banner de la tienda está oculto</string>
<string name="revanced_hide_end_screen_store_banner_summary_off">El banner de la tienda está mostrado</string>
<string name="revanced_hide_player_store_shelf_title">Ocultar estampilla de compra del jugador</string>
<string name="revanced_hide_player_store_shelf_summary_on">El armazón de compras está oculto</string>
<string name="revanced_hide_player_store_shelf_summary_off">Se muestra el shelf de la compra</string>
<string name="revanced_hide_shopping_links_title">Ocultar enlaces de compras en la descripción de vídeo</string>
<string name="revanced_hide_shopping_links_summary_on">Los enlaces de compra en la descripción del video están ocultos</string>
<string name="revanced_hide_shopping_links_summary_off">Se muestran los enlaces de compra en la descripción del video</string>
<!-- 'Visit store' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_visit_store_button_title">Ocultar el botón \'Visitar tienda\' en las páginas del canal</string>
<string name="revanced_hide_visit_store_button_summary_on">El botón en la página del canal está oculto</string>
<string name="revanced_hide_visit_store_button_summary_off">Se muestra el botón en la página del canal</string>
<string name="revanced_hide_shopping_links_title">Ocultar enlaces de compras</string>
<string name="revanced_hide_shopping_links_summary_on">Enlaces en la descripción del video ocultos</string>
<string name="revanced_hide_shopping_links_summary_off">Enlaces en la descripción del video visibles</string>
<!-- 'View products' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_view_products_banner_title">Ocultar el banner \"Ver productos\"</string>
<string name="revanced_hide_view_products_banner_summary_on">El banner en la superposición del video está oculto</string>
<string name="revanced_hide_view_products_banner_summary_off">Se muestra el banner en la superposición del video</string>
<string name="revanced_hide_web_search_results_title">Ocultar resultados de búsqueda web</string>
<string name="revanced_hide_web_search_results_summary_on">Los resultados de búsqueda web están ocultos</string>
<string name="revanced_hide_web_search_results_summary_off">Se muestran los resultados de la búsqueda web</string>
<string name="revanced_hide_merchandise_banners_title">Ocultar banners publicitarios</string>
<string name="revanced_hide_merchandise_banners_summary_on">Los banners publicitarios están ocultos</string>
<string name="revanced_hide_merchandise_banners_summary_off">Se muestran los banners publicitarios</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">Ocultar anuncio solo con dispositivos viejos</string>
</patch>
<patch id="ad.getpremium.hideGetPremiumPatch">
<string name="revanced_hide_get_premium_title">Ocultar promociones de YouTube Premium</string>
@@ -770,6 +784,9 @@ Para mostrar el menú de la pista de audio, cambia \"Suplantar transmisiones de
<string name="revanced_hide_shorts_upcoming_button_title">Ocultar el botón Próximos</string>
<string name="revanced_hide_shorts_upcoming_button_summary_on">El botón próximo está oculto</string>
<string name="revanced_hide_shorts_upcoming_button_summary_off">Se muestra el botón próximo</string>
<string name="revanced_hide_shorts_effect_button_title">Ocultar botón de efecto</string>
<string name="revanced_hide_shorts_effect_button_summary_on">El botón de efecto está oculto</string>
<string name="revanced_hide_shorts_effect_button_summary_off">El botón de efecto está visible</string>
<string name="revanced_hide_shorts_green_screen_button_title">Ocultar el botón Pantalla verde</string>
<string name="revanced_hide_shorts_green_screen_button_summary_on">El botón verde de pantalla está oculto</string>
<string name="revanced_hide_shorts_green_screen_button_summary_off">Se muestra el botón verde de pantalla</string>
@@ -817,7 +834,7 @@ Para mostrar el menú de la pista de audio, cambia \"Suplantar transmisiones de
<string name="revanced_hide_shorts_sound_metadata_label_title">Ocultar etiqueta de metadatos de sonido</string>
<string name="revanced_hide_shorts_sound_metadata_label_summary_on">Etiqueta de metadatos oculta</string>
<string name="revanced_hide_shorts_sound_metadata_label_summary_off">Etiqueta de metadatos mostrada</string>
<string name="revanced_hide_shorts_full_video_link_label_title">Ocultar etiqueta de enlace de vídeo completo</string>
<string name="revanced_hide_shorts_full_video_link_label_title">Ocultar la etiqueta del enlace del video</string>
<string name="revanced_hide_shorts_full_video_link_label_summary_on">Etiqueta de enlace de vídeo oculto</string>
<string name="revanced_hide_shorts_full_video_link_label_summary_off">Etiqueta de enlace de vídeo mostrada</string>
<string name="revanced_hide_shorts_sound_button_title">Ocultar botón de sonido</string>
@@ -951,11 +968,25 @@ Esta función funciona mejor con una calidad de vídeo de 720p o inferior y cuan
<string name="revanced_sb_enable_auto_hide_skip_segment_button">Ocultar automáticamente el botón Saltar</string>
<string name="revanced_sb_enable_auto_hide_skip_segment_button_sum_on">Omitir botón se oculta después de unos segundos</string>
<string name="revanced_sb_enable_auto_hide_skip_segment_button_sum_off">Se muestra el botón Saltar para todo el segmento</string>
<string name="revanced_sb_general_skiptoast">Mostrar un toast al saltar</string>
<string name="revanced_sb_general_skiptoast_sum_on">Toast se muestra cuando un segmento se omite automáticamente. Pulse aquí para ver un ejemplo</string>
<string name="revanced_sb_general_skiptoast_sum_off">Toast no se muestra. Toque aquí para ver un ejemplo</string>
<string name="revanced_sb_auto_hide_skip_button_duration">Duración del botón Omitir</string>
<string name="revanced_sb_auto_hide_skip_button_duration_sum">Cuánto tiempo se deben mostrar los botones de \"saltar\" y \"saltar al momento destacado\" antes de ocultarse automáticamente</string>
<string name="revanced_sb_general_skiptoast">Mostrar mensaje emergente para deshacer omisión</string>
<string name="revanced_sb_general_skiptoast_sum_on">Se muestra un mensaje emergente cuando un segmento se omite automáticamente. Toca la notificación de mensaje emergente para deshacer la omisión</string>
<string name="revanced_sb_general_skiptoast_sum_off">El mensaje emergente no se muestra</string>
<string name="revanced_sb_toast_on_skip_duration">Duración del mensaje emergente al omitir</string>
<string name="revanced_sb_toast_on_skip_duration_sum">Cuánto tiempo se debe mostrar el mensaje emergente de \"deshacer salto\"</string>
<string name="revanced_sb_duration_1s">1 segundo</string>
<string name="revanced_sb_duration_2s">2 segundos</string>
<string name="revanced_sb_duration_3s">3 segundos</string>
<string name="revanced_sb_duration_4s">4 segundos</string>
<string name="revanced_sb_duration_5s">5 segundos</string>
<string name="revanced_sb_duration_6s">6 segundos</string>
<string name="revanced_sb_duration_7s">7 segundos</string>
<string name="revanced_sb_duration_8s">8 segundos</string>
<string name="revanced_sb_duration_9s">9 segundos</string>
<string name="revanced_sb_duration_10s">10 segundos</string>
<string name="revanced_sb_general_time_without">Mostrar longitud de vídeo sin segmentos</string>
<string name="revanced_sb_general_time_without_sum_on">Longitud del vídeo menos todos los segmentos, mostrados en paréntesis junto a la longitud completa del vídeo</string>
<string name="revanced_sb_general_time_without_sum_on">La duración del vídeo, excluyendo todos los segmentos, se muestra en la barra de progreso</string>
<string name="revanced_sb_general_time_without_sum_off">Longitud completa del vídeo mostrada</string>
<string name="revanced_sb_create_segment_category">Creando nuevos segmentos</string>
<string name="revanced_sb_enable_create_segment">Mostrar el botón Crear nuevo segmento</string>
@@ -1251,9 +1282,9 @@ El minireproductor se puede arrastrar fuera de la pantalla hacia la izquierda o
<string name="revanced_gradient_loading_screen_title">Activar la pantalla de carga del degradado</string>
<string name="revanced_gradient_loading_screen_summary_on">La pantalla de carga tendrá un fondo de degradado</string>
<string name="revanced_gradient_loading_screen_summary_off">La pantalla de carga tendrá un fondo sólido</string>
<string name="splash_screen_animation_style_title">Estilo de la pantalla de presentación</string>
<string name="splash_screen_animation_style_entry_1">Color</string>
<string name="splash_screen_animation_style_entry_2">Blanco y negro</string>
<string name="revanced_splash_screen_animation_style_title">Estilo de la pantalla de presentación</string>
<string name="revanced_splash_screen_animation_style_entry_1">Color</string>
<string name="revanced_splash_screen_animation_style_entry_2">Blanco y negro</string>
<string name="revanced_seekbar_custom_color_title">Activar el color personalizado de la barra de búsqueda</string>
<string name="revanced_seekbar_custom_color_summary_on">Se muestra el color personalizado de la barra de búsqueda</string>
<string name="revanced_seekbar_custom_color_summary_off">Se muestra el color original de la barra de búsqueda</string>

View File

@@ -156,22 +156,13 @@ Teid ei teavitata ühestki ootamatust sündmusest."</string>
<string name="revanced_hide_channel_watermark_summary_on">Kanali vesimärk on peidetud</string>
<string name="revanced_hide_channel_watermark_summary_off">Kanali vesimärk on nähtav</string>
<string name="revanced_hide_horizontal_shelves_title">Peida horisontaalsed riiulid</string>
<string name="revanced_hide_horizontal_shelves_summary_on">"Riiulid on peidetud, näiteks:
• Uudised
• Jätka vaatamist
• Avasta rohkem kanaleid
• Ostud
• Vaata uuesti"</string>
<string name="revanced_hide_horizontal_shelves_summary_on">"Riiulid on peidetud, näiteks:\n• Värsked uudised\n• Jätka vaatamist\n• Uuri rohkem kanaleid\n• Kõige asjakohasem\n• Ostlemine\n• Vaata uuesti"</string>
<string name="revanced_hide_horizontal_shelves_summary_off">Näidatud on riiulid</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">Peida Liitu nupp</string>
<string name="revanced_hide_join_membership_button_summary_on">Nupp on peidetud</string>
<string name="revanced_hide_join_membership_button_summary_off">Ära näidatakse nuppu</string>
<!-- 'For you' should be translated using the same localized wording YouTube displays. -->
<string name="revanced_hide_for_you_shelf_title">Peida \"Sulle\" riiul</string>
<string name="revanced_hide_for_you_shelf_summary_on">Riiul kanali lehel on peidetud</string>
<string name="revanced_hide_for_you_shelf_summary_off">Riiul kanali lehel on kuvatud</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">Peida nupu \"Teata mulle\"</string>
@@ -192,15 +183,12 @@ Teid ei teavitata ühestki ootamatust sündmusest."</string>
<string name="revanced_hide_timed_reactions_title">Peida ajastatud reaktsioonid</string>
<string name="revanced_hide_timed_reactions_summary_on">Ajastatud reaktsioonid on peidetud</string>
<string name="revanced_hide_timed_reactions_summary_off">Ajastatud reaktsioonid on nähtavad</string>
<string name="revanced_hide_channel_guidelines_title">Vihjeleid ei kuvata</string>
<string name="revanced_hide_channel_guidelines_summary_on">Vihjeleid on peidetud</string>
<string name="revanced_hide_channel_guidelines_summary_off">Vihjeleid on nähtavad</string>
<string name="revanced_hide_chips_shelf_title">Peida kiibi riiul</string>
<string name="revanced_hide_chips_shelf_summary_on">Kiibid on peidetud</string>
<string name="revanced_hide_chips_shelf_summary_off">Kiipe on nähtaval</string>
<string name="revanced_hide_expandable_chip_title">Peida laiendatava kaart videote all</string>
<string name="revanced_hide_expandable_chip_summary_on">Laiendatav kaart on peidetud</string>
<string name="revanced_hide_expandable_chip_summary_off">Laiendatav kaart on kuvatud</string>
<string name="revanced_hide_expandable_chip_title">Peida laiendatav kaart</string>
<string name="revanced_hide_expandable_chip_summary_on">Laiendatav kaart videote all on peidetud</string>
<string name="revanced_hide_expandable_chip_summary_off">Laiendatav kaart videote all on nähtav</string>
<string name="revanced_hide_community_posts_title">Peida ühenduse postitused</string>
<string name="revanced_hide_community_posts_summary_on">Ühenduse postitused on peidetud</string>
<string name="revanced_hide_community_posts_summary_off">Ühenduse postitused on nähtavad</string>
@@ -213,15 +201,9 @@ Teid ei teavitata ühestki ootamatust sündmusest."</string>
<string name="revanced_hide_feed_survey_title">Peida kanalite küsitlused</string>
<string name="revanced_hide_feed_survey_summary_on">Kanalite küsitlused on peidetud</string>
<string name="revanced_hide_feed_survey_summary_off">Kanalite küsitlused on nähtavad</string>
<string name="revanced_hide_community_guidelines_title">Peida kogukonna juhised</string>
<string name="revanced_hide_community_guidelines_summary_on">Kogukonna juhised on peidetud</string>
<string name="revanced_hide_community_guidelines_summary_off">Kogukonna juhised on kuvatud</string>
<string name="revanced_hide_subscribers_community_guidelines_title">Peida tellijate juhised</string>
<string name="revanced_hide_subscribers_community_guidelines_summary_on">Tellijate kogukonna juhised on peidetud</string>
<string name="revanced_hide_subscribers_community_guidelines_summary_off">Tellijate kogukonna juhised on kuvatud</string>
<string name="revanced_hide_channel_member_shelf_title">Peida kanaliliikmete riiul</string>
<string name="revanced_hide_channel_member_shelf_summary_on">Kanali liikmete riiul on peidetud</string>
<string name="revanced_hide_channel_member_shelf_summary_off">Kuvatakse kanaliliikmete riiul</string>
<string name="revanced_hide_emergency_box_title">Peida eriolukastid</string>
<string name="revanced_hide_emergency_box_summary_on">Eriolukastid on peidetud</string>
<string name="revanced_hide_emergency_box_summary_off">Eriolukastid on nähtav</string>
@@ -237,18 +219,18 @@ Teid ei teavitata ühestki ootamatust sündmusest."</string>
<string name="revanced_hide_playables_title">Peida Playables</string>
<string name="revanced_hide_playables_summary_on">Playables on varjatud</string>
<string name="revanced_hide_playables_summary_off">Playables on kuvatud</string>
<string name="revanced_hide_quick_actions_title">Peida kiired toimingud täisekraanil</string>
<string name="revanced_hide_quick_actions_summary_on">Kiired toimingud on varjatud</string>
<string name="revanced_hide_quick_actions_summary_off">Kiired toimingud on kuvatud</string>
<string name="revanced_hide_related_videos_title">Peida seotud videod kiirtoimingutega</string>
<string name="revanced_hide_related_videos_summary_on">Seotud videod on peidetud</string>
<string name="revanced_hide_related_videos_summary_off">Seotud videod on kuvatud</string>
<string name="revanced_hide_image_shelf_title">Peida otsingutulemustes pildiriiul</string>
<string name="revanced_hide_image_shelf_summary_on">Pildiriiul on peidetud</string>
<string name="revanced_hide_image_shelf_summary_off">Pildiriiul on kuvatud</string>
<string name="revanced_hide_latest_posts_ads_title">Peida Shortsid</string>
<string name="revanced_hide_latest_posts_ads_summary_on">Shortsid on peidetud</string>
<string name="revanced_hide_latest_posts_ads_summary_off">Shortsid on nähtavad</string>
<string name="revanced_hide_quick_actions_title">Peida kiirtoimingud</string>
<string name="revanced_hide_quick_actions_summary_on">Kiirtoimingud täisekraanil on peidetud</string>
<string name="revanced_hide_quick_actions_summary_off">Kiirtoimingud täisekraanil on nähtavad</string>
<string name="revanced_hide_related_videos_title">Peida seotud videod</string>
<string name="revanced_hide_related_videos_summary_on">Seotud videod kiirtoimingutes on peidetud</string>
<string name="revanced_hide_related_videos_summary_off">Seotud videod kiirtoimingutes on nähtavad</string>
<string name="revanced_hide_image_shelf_title">Peida pildiriiul</string>
<string name="revanced_hide_image_shelf_summary_on">Pildiriiul otsingutulemustes on peidetud</string>
<string name="revanced_hide_image_shelf_summary_off">Pildiriiul otsingutulemustes on nähtav</string>
<string name="revanced_hide_latest_posts_title">Peida Shortsid</string>
<string name="revanced_hide_latest_posts_summary_on">Shortsid on peidetud</string>
<string name="revanced_hide_latest_posts_summary_off">Shortsid on nähtavad</string>
<string name="revanced_hide_mix_playlists_title">Peida segapleilistid</string>
<string name="revanced_hide_mix_playlists_summary_on">Segapleilistid on peidetud</string>
<string name="revanced_hide_mix_playlists_summary_off">Segapleilistid on nähtavad</string>
@@ -285,16 +267,39 @@ Teid ei teavitata ühestki ootamatust sündmusest."</string>
<string name="revanced_hide_description_components_screen_title">Video kirjeldus</string>
<string name="revanced_hide_description_components_screen_summary">Peida videokirjelduse komponendid või kuva need</string>
<string name="revanced_hide_filter_bar_screen_title">Filtriseriba</string>
<string name="revanced_hide_filter_bar_screen_summary">Peida või näita filtripaneeli voos, otsingutulemustes ja seotud videotes</string>
<string name="revanced_hide_filter_bar_feed_in_feed_title">Peida söötes</string>
<string name="revanced_hide_filter_bar_feed_in_feed_summary_on">Peidetud söötes</string>
<string name="revanced_hide_filter_bar_feed_in_feed_summary_off">Näidatud söötes</string>
<string name="revanced_hide_filter_bar_screen_summary">Peida või näita filtririba voogudes, ajaloos, otsingutulemustes ja seotud videotes</string>
<string name="revanced_hide_filter_bar_feed_in_feed_title">Peida voogudes</string>
<string name="revanced_hide_filter_bar_feed_in_feed_summary_on">Peidetud voogudes</string>
<string name="revanced_hide_filter_bar_feed_in_feed_summary_off">Näidatud voogudes</string>
<string name="revanced_hide_filter_bar_feed_in_history_title">Peida ajaloos</string>
<string name="revanced_hide_filter_bar_feed_in_history_summary_on">Peidetud ajaloos</string>
<string name="revanced_hide_filter_bar_feed_in_history_summary_off">Näidatud ajaloos</string>
<string name="revanced_hide_filter_bar_feed_in_search_title">Peida otsingutulemustes</string>
<string name="revanced_hide_filter_bar_feed_in_search_summary_on">Peidetud otsingutulemustes</string>
<string name="revanced_hide_filter_bar_feed_in_search_summary_off">Kuvatakse otsingutulemustes</string>
<string name="revanced_hide_filter_bar_feed_in_related_videos_title">Peida seotud videotes</string>
<string name="revanced_hide_filter_bar_feed_in_related_videos_summary_on">Peidetud seotud videotes</string>
<string name="revanced_hide_filter_bar_feed_in_related_videos_summary_off">Näidatakse seotud videotes</string>
<string name="revanced_channel_screen_title">Kanali leht</string>
<string name="revanced_channel_screen_summary">Peida või näita kanali lehe komponente</string>
<!-- 'For You' should be translated using the same localized wording YouTube displays. -->
<string name="revanced_hide_for_you_shelf_title">Peida \"Sulle\" riiul</string>
<string name="revanced_hide_for_you_shelf_summary_on">Sulle mõeldud riiul on peidetud</string>
<string name="revanced_hide_for_you_shelf_summary_off">Sulle mõeldud riiul on nähtav</string>
<string name="revanced_hide_links_preview_title">Peida linkide eelvaade</string>
<string name="revanced_hide_links_preview_summary_on">Linkide eelvaade on peidetud</string>
<string name="revanced_hide_links_preview_summary_off">Linkide eelvaade on nähtav</string>
<string name="revanced_hide_members_shelf_title">Peida liikmete riiul</string>
<string name="revanced_hide_members_shelf_summary_on">Liikmete riiul on peidetud</string>
<string name="revanced_hide_members_shelf_summary_off">Liikmete riiul on nähtav</string>
<!-- 'Visit Community' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_visit_community_button_title">Peida \"Külasta kogukonda\" nupp</string>
<string name="revanced_hide_visit_community_button_summary_on">\"Külasta kogukonda\" nupp on peidetud</string>
<string name="revanced_hide_visit_community_button_summary_off">Nupp \"Külasta kogukonda\" on nähtav</string>
<!-- 'Visit store' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_visit_store_button_title">Peida kanali lehelt nuppu \"Külasta poodi\"</string>
<string name="revanced_hide_visit_store_button_summary_on">Nupp \"Külasta poodi\" on peidetud</string>
<string name="revanced_hide_visit_store_button_summary_off">Nupp \"Külasta poodi\" on nähtav</string>
<string name="revanced_comments_screen_title">Kommentaarid</string>
<string name="revanced_comments_screen_summary">Peida või kuva kommentaaride sektsiooni komponendid</string>
<string name="revanced_hide_comments_ai_chat_summary_title">Peida tehisintellekti vestluse kokkuv\u00f5te</string>
@@ -303,24 +308,30 @@ Teid ei teavitata ühestki ootamatust sündmusest."</string>
<string name="revanced_hide_comments_ai_summary_title">Peida tehisintellekti kommentaaride kokkuv\u00f5te</string>
<string name="revanced_hide_comments_ai_summary_summary_on">Kommentaaride kokkuv\u00f5te on peidetud</string>
<string name="revanced_hide_comments_ai_summary_summary_off">Kommentaaride kokkuv\u00f5te on n\u00e4idatud</string>
<string name="revanced_hide_comments_channel_guidelines_title">Peida kanali juhised</string>
<string name="revanced_hide_comments_channel_guidelines_summary_on">Kanali juhised on peidetud</string>
<string name="revanced_hide_comments_channel_guidelines_summary_off">Kanali juhised on nähtaval</string>
<string name="revanced_hide_comments_by_members_header_title">Peida päis \'Liikmete kommentaarid\'</string>
<string name="revanced_hide_comments_by_members_header_summary_on">Liikmete kommentaaride päis on peidetud</string>
<string name="revanced_hide_comments_by_members_header_summary_off">Liikmete kommentaaride päis on kuvatud</string>
<string name="revanced_hide_comments_section_title">Peida kommentaaride jaotis</string>
<string name="revanced_hide_comments_section_summary_on">Kommentaaride jaotis on peidetud</string>
<string name="revanced_hide_comments_section_summary_off">Kommentaaride jaotis on näidatud</string>
<string name="revanced_hide_comments_community_guidelines_title">Peida kogukonna juhised</string>
<string name="revanced_hide_comments_community_guidelines_summary_on">Kogukonna juhised on peidetud</string>
<string name="revanced_hide_comments_community_guidelines_summary_off">Kogukonna juhised on nähtavad</string>
<string name="revanced_hide_comments_create_a_short_button_title">Peida nupp \"Loo lühis\"</string>
<string name="revanced_hide_comments_create_a_short_button_summary_on">Nupp Loo lühivideo on peidetud</string>
<string name="revanced_hide_comments_create_a_short_button_summary_off">Nupp Loo lühivideo on kuvatud</string>
<string name="revanced_hide_comments_timestamp_button_title">Peida ajatempli nupp</string>
<string name="revanced_hide_comments_timestamp_button_summary_on">Ajatempli nupp on peidetud</string>
<string name="revanced_hide_comments_timestamp_button_summary_off">Ajatempli nupp on nähtav</string>
<string name="revanced_hide_comments_preview_comment_title">Peida eelvaate kommentaar</string>
<string name="revanced_hide_comments_preview_comment_summary_on">Eelvaate kommentaar on peidetud</string>
<string name="revanced_hide_comments_preview_comment_summary_off">Eelvaate kommentaar on kuvatud</string>
<string name="revanced_hide_comments_thanks_button_title">Peida tänunupp</string>
<string name="revanced_hide_comments_thanks_button_summary_on">Tänu nupp on peidetud</string>
<string name="revanced_hide_comments_thanks_button_summary_off">Tänu nupp on kuvatud</string>
<string name="revanced_hide_comments_timestamp_button_title">Peida ajatempli nupp</string>
<string name="revanced_hide_comments_timestamp_button_summary_on">Ajatempli nupp on peidetud</string>
<string name="revanced_hide_comments_timestamp_button_summary_off">Ajatempli nupp on nähtav</string>
<!-- https://logos.fandom.com/wiki/YouTube/Yoodles -->
<string name="revanced_hide_doodles_title">Peida YouTube Doodles</string>
<string name="revanced_hide_doodles_summary_on">Otsinguriba Doodled on peidetud</string>
@@ -374,44 +385,41 @@ Piirangud
<string name="revanced_hide_keyword_toast_invalid_broad">Võti sõna: %s peidab kõik videod</string>
</patch>
<patch id="ad.general.hideAdsResourcePatch">
<string name="revanced_hide_general_ads_title">Peida üldine reklaamid</string>
<string name="revanced_hide_general_ads_summary_on">Üldine reklaamid on peidetud</string>
<string name="revanced_hide_general_ads_summary_off">Üldreklaamid kuvatakse</string>
<string name="revanced_hide_creator_store_shelf_title">Peida looja poe riiul</string>
<string name="revanced_hide_creator_store_shelf_summary_on">Poe riiul videopleieri all on peidetud</string>
<string name="revanced_hide_creator_store_shelf_summary_off">Poe riiul videopleieri all on nähtav</string>
<string name="revanced_hide_end_screen_store_banner_title">Peida lõpuekraani poe bänner</string>
<string name="revanced_hide_end_screen_store_banner_summary_on">Poebanner on peidetud</string>
<string name="revanced_hide_end_screen_store_banner_summary_off">Poebanner on nähtav</string>
<string name="revanced_hide_fullscreen_ads_title">Peida täisekraanireklaamid</string>
<string name="revanced_hide_fullscreen_ads_summary_on">"Täisekraani reklaamid on peidetud
See funktsioon on saadaval ainult vanemates seadmetes"</string>
<string name="revanced_hide_fullscreen_ads_summary_off">Täisekraanireklaamid kuvatakse</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">Terveekraanireklaamide peitmine toimib ainult vanemate seadmetega</string>
<string name="revanced_hide_general_ads_title">Peida üldine reklaamid</string>
<string name="revanced_hide_general_ads_summary_on">Üldine reklaamid on peidetud</string>
<string name="revanced_hide_general_ads_summary_off">Üldreklaamid kuvatakse</string>
<string name="revanced_hide_merchandise_banners_title">Peida reklaamipõhjad</string>
<string name="revanced_hide_merchandise_banners_summary_on">Reklaamipõhjad on peidetud</string>
<string name="revanced_hide_merchandise_banners_summary_off">Reklaamipõhjad on nähtavad</string>
<string name="revanced_hide_paid_promotion_label_title">Peida makstud edendamise silt</string>
<string name="revanced_hide_paid_promotion_label_summary_on">Makstud edendamise silt on peidus</string>
<string name="revanced_hide_paid_promotion_label_summary_off">Makstud edendamise silt on näidatud</string>
<string name="revanced_hide_self_sponsor_ads_title">Peida ise-sponsoritud kaardid</string>
<string name="revanced_hide_self_sponsor_ads_summary_on">Ise-sponsoritud kaardid on peidus</string>
<string name="revanced_hide_self_sponsor_ads_summary_off">Ise-sponsoritud kaardid on näidatud</string>
<string name="revanced_hide_products_banner_title">Peida bänner „Vaata tooteid</string>
<string name="revanced_hide_products_banner_summary_on">Bänner on peidetud</string>
<string name="revanced_hide_products_banner_summary_off">Bänner on nähtav</string>
<string name="revanced_hide_end_screen_store_banner_title">Peida lõpuekraani poe bänner</string>
<string name="revanced_hide_end_screen_store_banner_summary_on">Poebanner on peidetud</string>
<string name="revanced_hide_end_screen_store_banner_summary_off">Poebanner on nähtav</string>
<string name="revanced_hide_player_store_shelf_title">Peida poes ostukorvi riiul</string>
<string name="revanced_hide_player_store_shelf_summary_on">Ostukorvi riiul on peidetud</string>
<string name="revanced_hide_player_store_shelf_summary_off">Ostukorvi riiul on nähtav</string>
<string name="revanced_hide_shopping_links_title">Peida ostulinkid video kirjelduses</string>
<string name="revanced_hide_shopping_links_summary_on">Ostulinkid video kirjelduses on peidetud</string>
<string name="revanced_hide_shopping_links_summary_off">Ostulinkid video kirjelduses on kuvatud</string>
<!-- 'Visit store' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_visit_store_button_title">Peida kanali lehelt nuppu \"Külasta poodi\"</string>
<string name="revanced_hide_visit_store_button_summary_on">Nupp kanali lehel on peidetud</string>
<string name="revanced_hide_visit_store_button_summary_off">Nupp kanali lehel on kuvatud</string>
<string name="revanced_hide_shopping_links_title">Peida ostulingid</string>
<string name="revanced_hide_shopping_links_summary_on">Lingid video kirjelduses on peidetud</string>
<string name="revanced_hide_shopping_links_summary_off">Lingid video kirjelduses on nähtavad</string>
<!-- 'View products' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_view_products_banner_title">Peida bänner \"Vaata tooteid\"</string>
<string name="revanced_hide_view_products_banner_summary_on">Video ülekatte bänner on peidetud</string>
<string name="revanced_hide_view_products_banner_summary_off">Bänner videokatte all on näha</string>
<string name="revanced_hide_web_search_results_title">Peida veebiotsingu tulemused</string>
<string name="revanced_hide_web_search_results_summary_on">Veebiotsingu tulemused on peidetud</string>
<string name="revanced_hide_web_search_results_summary_off">Veebiotsingu tulemused on nähtavad</string>
<string name="revanced_hide_merchandise_banners_title">Peida reklaamipõhjad</string>
<string name="revanced_hide_merchandise_banners_summary_on">Reklaamipõhjad on peidetud</string>
<string name="revanced_hide_merchandise_banners_summary_off">Reklaamipõhjad on nähtavad</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">Terveekraanireklaamide peitmine toimib ainult vanemate seadmetega</string>
</patch>
<patch id="ad.getpremium.hideGetPremiumPatch">
<string name="revanced_hide_get_premium_title">Peida YouTube Premiumi reklaamid</string>
@@ -486,6 +494,7 @@ Helitugevuse reguleerimiseks pühkige ekraani paremal küljel vertikaalselt"</st
<string name="revanced_swipe_lowest_value_enable_auto_brightness_title">Luba automaatse heleduse žest</string>
<string name="revanced_swipe_lowest_value_enable_auto_brightness_summary_on">Pühkige alla heleduse žesti madalaima väärtuseni, et lubada automaatne heleduse</string>
<string name="revanced_swipe_lowest_value_enable_auto_brightness_summary_off">Pühkimine alla madalaima väärtuseni ei luba automaatset heleduse</string>
<string name="revanced_swipe_lowest_value_enable_auto_brightness_overlay_text">Automaatne</string>
<string name="revanced_swipe_overlay_timeout_title">Pühkimise katte aegumisaeg</string>
<string name="revanced_swipe_overlay_timeout_summary">Katte näitamise millisekundite arv</string>
<string name="revanced_swipe_overlay_background_opacity_title">Pühkiva katte tausta läbipaistvus</string>
@@ -772,6 +781,9 @@ Heliriba menüü kuvamiseks muutke valikut „Võltsitud videovoogedastus“ vä
<string name="revanced_hide_shorts_upcoming_button_title">Peida Eelseisvad nupp</string>
<string name="revanced_hide_shorts_upcoming_button_summary_on">Eelseisva nuppu on peidetud</string>
<string name="revanced_hide_shorts_upcoming_button_summary_off">Eelseisva nuppu on nähtav</string>
<string name="revanced_hide_shorts_effect_button_title">Peida efekti nupp</string>
<string name="revanced_hide_shorts_effect_button_summary_on">Efekti nupp on peidetud</string>
<string name="revanced_hide_shorts_effect_button_summary_off">Efekti nupp on nähtav</string>
<string name="revanced_hide_shorts_green_screen_button_title">Peida Roheline ekraan nupp</string>
<string name="revanced_hide_shorts_green_screen_button_summary_on">Rohelise ekraani nupp on peidetud</string>
<string name="revanced_hide_shorts_green_screen_button_summary_off">Rohelise ekraani nupp on nähtav</string>
@@ -819,7 +831,7 @@ Heliriba menüü kuvamiseks muutke valikut „Võltsitud videovoogedastus“ vä
<string name="revanced_hide_shorts_sound_metadata_label_title">Peida heli metaandmete silt</string>
<string name="revanced_hide_shorts_sound_metadata_label_summary_on">Metaandmete silt on peidetud</string>
<string name="revanced_hide_shorts_sound_metadata_label_summary_off">Metaandmete silt on nähtav</string>
<string name="revanced_hide_shorts_full_video_link_label_title">Peida täispika video lingi silt</string>
<string name="revanced_hide_shorts_full_video_link_label_title">Peida videolingi silt</string>
<string name="revanced_hide_shorts_full_video_link_label_summary_on">Video lingi silt on peidetud</string>
<string name="revanced_hide_shorts_full_video_link_label_summary_off">Video lingi silt on nähtav</string>
<string name="revanced_hide_shorts_sound_button_title">Peida heli nupp</string>
@@ -953,11 +965,25 @@ See funktsioon toimib kõige paremini 720p või madalama video kvaliteedi ja vä
<string name="revanced_sb_enable_auto_hide_skip_segment_button">Peida vahelejätmisnupp automaatselt</string>
<string name="revanced_sb_enable_auto_hide_skip_segment_button_sum_on">Vahelejätmisnupp peitub mõne sekundi pärast</string>
<string name="revanced_sb_enable_auto_hide_skip_segment_button_sum_off">Vahelejätmise nupp on kuvatud kogu segmendi jaoks</string>
<string name="revanced_sb_general_skiptoast">Näita toast teadet vahelejätmisel</string>
<string name="revanced_sb_general_skiptoast_sum_on">Teatis näidatakse, kui segment vahele etakse automaatselt. Puuduta siia, et näha näidet</string>
<string name="revanced_sb_general_skiptoast_sum_off">Teatist ei näidata. Puuduta siia, et näha näidet</string>
<string name="revanced_sb_auto_hide_skip_button_duration">Vahelejätnud nupu kestus</string>
<string name="revanced_sb_auto_hide_skip_button_duration_sum">Kui kaua näidata vahelejätmise ja esiletõstmise nuppe enne automaatset peitmist</string>
<string name="revanced_sb_general_skiptoast">Kuva tühista vahelejätmise teavitus (toast)</string>
<string name="revanced_sb_general_skiptoast_sum_on">Teavitus kuvatakse, kui segment jäetakse automaatselt vahele. Vahelejätmise tühistamiseks puudutage teavitust</string>
<string name="revanced_sb_general_skiptoast_sum_off">Hüpikut ei kuvata</string>
<string name="revanced_sb_toast_on_skip_duration">Vahelejätnud hüpiku kestus</string>
<string name="revanced_sb_toast_on_skip_duration_sum">Kui kaua näidata vahelejätmise tagasivõtmise hüpikut</string>
<string name="revanced_sb_duration_1s">1 sekund</string>
<string name="revanced_sb_duration_2s">2 sekundit</string>
<string name="revanced_sb_duration_3s">3 sekundit</string>
<string name="revanced_sb_duration_4s">4 sekundit</string>
<string name="revanced_sb_duration_5s">5 sekundit</string>
<string name="revanced_sb_duration_6s">6 sekundit</string>
<string name="revanced_sb_duration_7s">7 sekundit</string>
<string name="revanced_sb_duration_8s">8 sekundit</string>
<string name="revanced_sb_duration_9s">9 sekundit</string>
<string name="revanced_sb_duration_10s">10 sekundit</string>
<string name="revanced_sb_general_time_without">Näita video pikkust ilma segmentideta</string>
<string name="revanced_sb_general_time_without_sum_on">Video pikkus miinus kõik segmendid, kuvatakse sulgudes täispika video pikkuse kõrval</string>
<string name="revanced_sb_general_time_without_sum_on">Video pikkus miinus kõik segmendid kuvatakse edenemisribal</string>
<string name="revanced_sb_general_time_without_sum_off">Näidatakse täispikk video pikkust</string>
<string name="revanced_sb_create_segment_category">Uute segmentide loomine</string>
<string name="revanced_sb_enable_create_segment">Näita Uue segmendi loomise nuppu</string>
@@ -1179,6 +1205,7 @@ Kui see hiljem välja lülitatakse, on soovitatav rakenduse andmed kustutada, et
<string name="revanced_change_start_page_entry_notifications">Teatised</string>
<string name="revanced_change_start_page_entry_playlists">Esitusloendid</string>
<string name="revanced_change_start_page_entry_search">Otsi</string>
<string name="revanced_change_start_page_entry_shopping">Ostlemine</string>
<string name="revanced_change_start_page_entry_sports">Sport</string>
<string name="revanced_change_start_page_entry_subscriptions">Tellimused</string>
<string name="revanced_change_start_page_entry_trending">Trendikas</string>
@@ -1261,9 +1288,9 @@ Minimaalset mängijat saab lohistada ekraanilt vasakule või paremale"</string>
<string name="revanced_gradient_loading_screen_title">Lülita gradientega laadimiskuva sisse</string>
<string name="revanced_gradient_loading_screen_summary_on">Laadimiskuval on gradientega taust</string>
<string name="revanced_gradient_loading_screen_summary_off">Laadimiskuval on tahke taust</string>
<string name="splash_screen_animation_style_title">Sissejuhatava ekraani stiil</string>
<string name="splash_screen_animation_style_entry_1">Värv</string>
<string name="splash_screen_animation_style_entry_2">Mustvalge</string>
<string name="revanced_splash_screen_animation_style_title">Sissejuhatava ekraani stiil</string>
<string name="revanced_splash_screen_animation_style_entry_1">Värv</string>
<string name="revanced_splash_screen_animation_style_entry_2">Mustvalge</string>
<string name="revanced_seekbar_custom_color_title">Lülita kohandatud edastusriba värv sisse</string>
<string name="revanced_seekbar_custom_color_summary_on">Kohandatud edastusriba värv on nähtav</string>
<string name="revanced_seekbar_custom_color_summary_off">Originaal edastusriba värv on nähtav</string>
@@ -1406,6 +1433,7 @@ Selle lubamine võib avada kõrgema video kvaliteedi"</string>
<string name="revanced_shorts_quality_default_wifi_title">Vaikimisi [Shorts] kvaliteet WiFi võrgus</string>
<string name="revanced_shorts_quality_default_mobile_title">Vaikimisi [Shorts] kvaliteet mobiilivõrgus</string>
<string name="revanced_remember_video_quality_mobile">mobiil</string>
<string name="revanced_remember_video_quality_wifi">WiFi</string>
<string name="revanced_remember_video_quality_toast">Vaikimisi %1$s kvaliteet muudeti: %2$s</string>
<string name="revanced_remember_video_quality_toast_shorts">Muudetud Shorts %1$s kvaliteet: %2$s</string>
</patch>

View File

@@ -41,12 +41,14 @@ Second \"item\" text"</string>
<patch id="layout.hide.general.hideLayoutComponentsPatch">
<!-- 'Join' should be translated using the same localized wording YouTube displays.
This appears in the video player for certain videos. -->
<!-- 'For you' should be translated using the same localized wording YouTube displays. -->
<!-- '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. -->
<!-- 'People also watched' and 'You might also like' should be translated using the same localized wording YouTube displays. -->
<!-- 'Show more' should be translated with the same localized wording that YouTube displays.
This button usually appears when searching for a YT creator. -->
<!-- 'For You' should be translated using the same localized wording YouTube displays. -->
<!-- 'Visit Community' should be translated with the same localized wording that YouTube displays. -->
<!-- 'Visit store' should be translated with the same localized wording that YouTube displays. -->
<!-- https://logos.fandom.com/wiki/YouTube/Yoodles -->
<!-- '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. -->
<!-- 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.
@@ -55,8 +57,8 @@ Second \"item\" text"</string>
<!-- Translations of this should not be longer than the original English text, otherwise the text can be clipped and not entirely shown. -->
</patch>
<patch id="ad.general.hideAdsResourcePatch">
<!-- 'Visit store' should be translated with the same localized wording that YouTube displays. -->
<!-- Translations of this should not be longer than the original English text, otherwise the text can be clipped and not entirely shown. -->
<!-- 'View products' should be translated with the same localized wording that YouTube displays. -->
</patch>
<patch id="ad.getpremium.hideGetPremiumPatch">
</patch>

View File

@@ -88,7 +88,6 @@ Second \"item\" text"</string>
This appears in the video player for certain videos. -->
<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. -->
<!-- '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_summary_on">دکمه پنهان است</string>
@@ -100,6 +99,9 @@ Second \"item\" text"</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_ticket_shelf_title">پنهان سازی قفسه بلیط</string>
<!-- 'For You' should be translated using the same localized wording YouTube displays. -->
<!-- 'Visit Community' should be translated with the same localized wording that YouTube displays. -->
<!-- 'Visit store' should be translated with the same localized wording that YouTube displays. -->
<!-- https://logos.fandom.com/wiki/YouTube/Yoodles -->
<!-- '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. -->
<!-- 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.
@@ -108,8 +110,8 @@ Second \"item\" text"</string>
<!-- Translations of this should not be longer than the original English text, otherwise the text can be clipped and not entirely shown. -->
</patch>
<patch id="ad.general.hideAdsResourcePatch">
<!-- 'Visit store' should be translated with the same localized wording that YouTube displays. -->
<!-- Translations of this should not be longer than the original English text, otherwise the text can be clipped and not entirely shown. -->
<!-- 'View products' should be translated with the same localized wording that YouTube displays. -->
</patch>
<patch id="ad.getpremium.hideGetPremiumPatch">
</patch>

View File

@@ -156,22 +156,12 @@ Et saa ilmoituksia odottamattomista tapahtumista."</string>
<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">"Näiden kaltaiset hyllyt on piilotettu:
• Ajankohtaiset uutiset
• Jatka katsomista
• Tutki lisää kanavia
• Shopping
• Katso uudestaan"</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. -->
<string name="revanced_hide_join_membership_button_title">Piilota Liity-painike</string>
<string name="revanced_hide_join_membership_button_summary_on">Painike on piilotettu</string>
<string name="revanced_hide_join_membership_button_summary_off">Painike näytetään</string>
<!-- 'For you' should be translated using the same localized wording YouTube displays. -->
<string name="revanced_hide_for_you_shelf_title">Piilota \"\'Sinulle\" -hylly</string>
<string name="revanced_hide_for_you_shelf_summary_on">Hylly on piilotettu kanavasivuilla</string>
<string name="revanced_hide_for_you_shelf_summary_off">Kanavasivun hylly näytetään</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">Piilota \"Ilmoita minulle\" -painike</string>
@@ -192,15 +182,9 @@ Et saa ilmoituksia odottamattomista tapahtumista."</string>
<string name="revanced_hide_timed_reactions_title">Piilota ajoitetut reaktiot</string>
<string name="revanced_hide_timed_reactions_summary_on">Ajoitetut reaktiot on piilotettu</string>
<string name="revanced_hide_timed_reactions_summary_off">Ajoitetut reaktiot näytetään</string>
<string name="revanced_hide_channel_guidelines_title">Piilota kanavan säännöt</string>
<string name="revanced_hide_channel_guidelines_summary_on">Kanavan säännöt on piilotettu</string>
<string name="revanced_hide_channel_guidelines_summary_off">Kanavan säännöt näytetään</string>
<string name="revanced_hide_chips_shelf_title">Piilota siruhylly</string>
<string name="revanced_hide_chips_shelf_summary_on">Siruhylly on piilotettu</string>
<string name="revanced_hide_chips_shelf_summary_off">Siruhylly näytetään</string>
<string name="revanced_hide_expandable_chip_title">Piilota laajennettava kortti videoiden alla</string>
<string name="revanced_hide_expandable_chip_summary_on">Laajennettava kortti on piilotettu</string>
<string name="revanced_hide_expandable_chip_summary_off">Laajennettava kortti näytetään</string>
<string name="revanced_hide_community_posts_title">Piilota yhteisöpostaukset</string>
<string name="revanced_hide_community_posts_summary_on">Yhteisöpostaukset on piilotettu</string>
<string name="revanced_hide_community_posts_summary_off">Yhteisöpostaukset näytetään</string>
@@ -213,15 +197,9 @@ Et saa ilmoituksia odottamattomista tapahtumista."</string>
<string name="revanced_hide_feed_survey_title">Piilota syötteen kyselyt</string>
<string name="revanced_hide_feed_survey_summary_on">Syötteen kyselyt on piilotettu</string>
<string name="revanced_hide_feed_survey_summary_off">Syötteen kyselyt näytetään</string>
<string name="revanced_hide_community_guidelines_title">Piilota yhteisön säännöt</string>
<string name="revanced_hide_community_guidelines_summary_on">Yhteisön säännöt on piilotettu</string>
<string name="revanced_hide_community_guidelines_summary_off">Yhteisön säännöt näytetään</string>
<string name="revanced_hide_subscribers_community_guidelines_title">Piilota tilaajien ohjeet</string>
<string name="revanced_hide_subscribers_community_guidelines_summary_on">Tilaajien yhteisön säännöt on piilotettu</string>
<string name="revanced_hide_subscribers_community_guidelines_summary_off">Tilaajien yhteisön säännöt näytetään</string>
<string name="revanced_hide_channel_member_shelf_title">Piilota kanavan jäsen -hylly</string>
<string name="revanced_hide_channel_member_shelf_summary_on">Kanavan jäsen -hylly on piilotettu</string>
<string name="revanced_hide_channel_member_shelf_summary_off">Kanavan jäsen -hylly näytetään</string>
<string name="revanced_hide_emergency_box_title">Piilota hätätilannelaatikot</string>
<string name="revanced_hide_emergency_box_summary_on">Hätätilannelaatikot on piilotettu</string>
<string name="revanced_hide_emergency_box_summary_off">Hätätilannelaatikot näytetään</string>
@@ -237,18 +215,9 @@ Et saa ilmoituksia odottamattomista tapahtumista."</string>
<string name="revanced_hide_playables_title">Piilota Pelattavat</string>
<string name="revanced_hide_playables_summary_on">Pelattavat on piilotettu</string>
<string name="revanced_hide_playables_summary_off">Pelattavat näytetään</string>
<string name="revanced_hide_quick_actions_title">Piilota pikatoiminnot kokoruututilassa</string>
<string name="revanced_hide_quick_actions_summary_on">Pikatoiminnot on piilotettu</string>
<string name="revanced_hide_quick_actions_summary_off">Pikatoiminnot näytetään</string>
<string name="revanced_hide_related_videos_title">Piilota liittyvät videot pikatoiminnoissa</string>
<string name="revanced_hide_related_videos_summary_on">Liittyvät videot on piilotettu</string>
<string name="revanced_hide_related_videos_summary_off">Liittyvät videot näytetään</string>
<string name="revanced_hide_image_shelf_title">Piilota kuvahylly hakutuloksissa</string>
<string name="revanced_hide_image_shelf_summary_on">Kuvahylly on piilotettu</string>
<string name="revanced_hide_image_shelf_summary_off">Kuvahylly näytetään</string>
<string name="revanced_hide_latest_posts_ads_title">Piilota uusimmat postaukset</string>
<string name="revanced_hide_latest_posts_ads_summary_on">Uusimmat postaukset on piilotettu</string>
<string name="revanced_hide_latest_posts_ads_summary_off">Uusimmat postaukset näytetään</string>
<string name="revanced_hide_latest_posts_title">Piilota uusimmat postaukset</string>
<string name="revanced_hide_latest_posts_summary_on">Uusimmat postaukset on piilotettu</string>
<string name="revanced_hide_latest_posts_summary_off">Uusimmat postaukset näytetään</string>
<string name="revanced_hide_mix_playlists_title">Piilota mix-soittolistat</string>
<string name="revanced_hide_mix_playlists_summary_on">Mix-soittolistat piilotettu</string>
<string name="revanced_hide_mix_playlists_summary_off">Mix-soittolistat näytetään</string>
@@ -285,16 +254,24 @@ Et saa ilmoituksia odottamattomista tapahtumista."</string>
<string name="revanced_hide_description_components_screen_title">Videon kuvaus</string>
<string name="revanced_hide_description_components_screen_summary">Piilota tai näytä videon kuvauksen osia</string>
<string name="revanced_hide_filter_bar_screen_title">Suodatinpalkki</string>
<string name="revanced_hide_filter_bar_screen_summary">Piilota tai näytä suodatinpalkki syötteessä, haussa ja liittyvissä videoissa</string>
<string name="revanced_hide_filter_bar_feed_in_feed_title">Piilota syötteessä</string>
<string name="revanced_hide_filter_bar_feed_in_feed_summary_on">Piilotettu syötteessä</string>
<string name="revanced_hide_filter_bar_feed_in_feed_summary_off">Näytetään syötteessä</string>
<string name="revanced_hide_filter_bar_screen_summary">Piilota tai näytä suodatinpalkki syötteissä, historiassa, hakutuloksissa ja liittyvissä videoissa</string>
<string name="revanced_hide_filter_bar_feed_in_feed_title">Piilota syötteissä</string>
<string name="revanced_hide_filter_bar_feed_in_feed_summary_on">Piilotettu syötteissä</string>
<string name="revanced_hide_filter_bar_feed_in_feed_summary_off">Näytetään syötteissä</string>
<string name="revanced_hide_filter_bar_feed_in_history_title">Piilota historiassa</string>
<string name="revanced_hide_filter_bar_feed_in_history_summary_on">Piilotettu historiassa</string>
<string name="revanced_hide_filter_bar_feed_in_history_summary_off">Näytetään historiassa</string>
<string name="revanced_hide_filter_bar_feed_in_search_title">Piilota hakutuloksissa</string>
<string name="revanced_hide_filter_bar_feed_in_search_summary_on">Piilotettu hakutuloksissa</string>
<string name="revanced_hide_filter_bar_feed_in_search_summary_off">Näytetään hakutuloksissa</string>
<string name="revanced_hide_filter_bar_feed_in_related_videos_title">Piilota liittyvissä videoissa</string>
<string name="revanced_hide_filter_bar_feed_in_related_videos_summary_on">Piilotettu liittyvissä videoissa</string>
<string name="revanced_hide_filter_bar_feed_in_related_videos_summary_off">Näytetään liittyvissä videoissa</string>
<!-- 'For You' should be translated using the same localized wording YouTube displays. -->
<string name="revanced_hide_for_you_shelf_title">Piilota \"\'Sinulle\" -hylly</string>
<!-- 'Visit Community' should be translated with the same localized wording that YouTube displays. -->
<!-- 'Visit store' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_visit_store_button_title">Piilota \"Vieraile kaupassa\" -painike kanavasivuilla</string>
<string name="revanced_comments_screen_title">Kommentit</string>
<string name="revanced_comments_screen_summary">Piilota tai näytä kommenttiosion osia</string>
<string name="revanced_hide_comments_ai_chat_summary_title">Piilota tekoälyn luoma chat-yhteenveto</string>
@@ -312,15 +289,14 @@ Et saa ilmoituksia odottamattomista tapahtumista."</string>
<string name="revanced_hide_comments_create_a_short_button_title">Piilota \"Luo Shorts-video\" -painike</string>
<string name="revanced_hide_comments_create_a_short_button_summary_on">Luo Shorts-video -painike on piilotettu</string>
<string name="revanced_hide_comments_create_a_short_button_summary_off">Luo Shorts-video -painike näytetään</string>
<string name="revanced_hide_comments_timestamp_button_title">Piilota aikaleimapainike</string>
<string name="revanced_hide_comments_timestamp_button_summary_on">Aikaleimapainike on piilotettu</string>
<string name="revanced_hide_comments_timestamp_button_summary_off">Aikaleimapainike näytetään</string>
<string name="revanced_hide_comments_preview_comment_title">Piilota kommentin esikatselu</string>
<string name="revanced_hide_comments_preview_comment_summary_on">Kommentin esikatselu on piilotettu</string>
<string name="revanced_hide_comments_preview_comment_summary_off">Kommentin esikatselu näytetään</string>
<string name="revanced_hide_comments_thanks_button_title">Piilota Kiitos-painike</string>
<string name="revanced_hide_comments_thanks_button_summary_on">Kiitos-painike on piilotettu</string>
<string name="revanced_hide_comments_thanks_button_summary_off">Kiitos-painike näytetään</string>
<string name="revanced_hide_comments_timestamp_button_summary_on">Aikaleimapainike on piilotettu</string>
<string name="revanced_hide_comments_timestamp_button_summary_off">Aikaleimapainike näytetään</string>
<!-- https://logos.fandom.com/wiki/YouTube/Yoodles -->
<string name="revanced_hide_doodles_title">Piilota YouTube Doodlet</string>
<string name="revanced_hide_doodles_summary_on">Hakupalkin Doodlet on piilotettu</string>
@@ -374,44 +350,32 @@ Rajoitukset
<string name="revanced_hide_keyword_toast_invalid_broad">Avainsana piilottaa kaikki videot: %s</string>
</patch>
<patch id="ad.general.hideAdsResourcePatch">
<string name="revanced_hide_general_ads_title">Piilota yleiset mainokset</string>
<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_end_screen_store_banner_title">Piilota loppunäytön kauppabanneri</string>
<string name="revanced_hide_end_screen_store_banner_summary_on">Kauppabanneri on piilotettu</string>
<string name="revanced_hide_end_screen_store_banner_summary_off">Kauppabanneri 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
Tämä ominaisuus on käytettävissä vain vanhemmilla laitteilla"</string>
<string name="revanced_hide_fullscreen_ads_summary_off">Koko näytön mainokset näytetään</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">Koko näytön mainosten piilottaminen toimii vain vanhemmilla laitteilla</string>
<string name="revanced_hide_general_ads_title">Piilota yleiset mainokset</string>
<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_merchandise_banners_title">Piilota tuotebannerit</string>
<string name="revanced_hide_merchandise_banners_summary_on">Tuotebannerit on piilotettu</string>
<string name="revanced_hide_merchandise_banners_summary_off">Tuotebannerit näytetään</string>
<string name="revanced_hide_paid_promotion_label_title">Piilota maksetun mainostuksen tunniste</string>
<string name="revanced_hide_paid_promotion_label_summary_on">Maksetun mainostuksen tunniste on piilotettu</string>
<string name="revanced_hide_paid_promotion_label_summary_off">Maksetun mainostuksen tunniste näytetään</string>
<string name="revanced_hide_self_sponsor_ads_title">Piilota itse-sponsoroidut kortit</string>
<string name="revanced_hide_self_sponsor_ads_summary_on">Itse-sponsoroidut kortit ovat piilotettu</string>
<string name="revanced_hide_self_sponsor_ads_summary_off">Itse-sponsoroidut kortit näytetään</string>
<string name="revanced_hide_products_banner_title">Piilota \"Näytä tuotteet\" -banneri</string>
<string name="revanced_hide_products_banner_summary_on">Banneri on piilotettu</string>
<string name="revanced_hide_products_banner_summary_off">Banneri näytetään</string>
<string name="revanced_hide_end_screen_store_banner_title">Piilota loppunäytön kauppabanneri</string>
<string name="revanced_hide_end_screen_store_banner_summary_on">Kauppabanneri on piilotettu</string>
<string name="revanced_hide_end_screen_store_banner_summary_off">Kauppabanneri näytetään</string>
<string name="revanced_hide_player_store_shelf_title">Piilota soittimen tuotehylly</string>
<string name="revanced_hide_player_store_shelf_summary_on">Tuotehylly on piilotettu</string>
<string name="revanced_hide_player_store_shelf_summary_off">Tuotehylly näytetään</string>
<string name="revanced_hide_shopping_links_title">Piilota kauppalinkit</string>
<string name="revanced_hide_shopping_links_summary_on">Shopping-linkit on piilotettu videoiden kuvauksissa</string>
<string name="revanced_hide_shopping_links_summary_off">Shopping-linkit näytetään videoiden kuvauksissa</string>
<!-- 'Visit store' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_visit_store_button_title">Piilota \"Vieraile kaupassa\" -painike kanavasivuilla</string>
<string name="revanced_hide_visit_store_button_summary_on">Painike on piilotettu kanavasivuilla</string>
<string name="revanced_hide_visit_store_button_summary_off">Painike näytetään kanavasivuilla</string>
<!-- 'View products' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_web_search_results_title">Piilota verkkohakutulokset</string>
<string name="revanced_hide_web_search_results_summary_on">Verkkohakutulokset on piilotettu</string>
<string name="revanced_hide_web_search_results_summary_off">Verkkohakutulokset näytetään</string>
<string name="revanced_hide_merchandise_banners_title">Piilota tuotebannerit</string>
<string name="revanced_hide_merchandise_banners_summary_on">Tuotebannerit on piilotettu</string>
<string name="revanced_hide_merchandise_banners_summary_off">Tuotebannerit näytetään</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">Koko näytön mainosten piilottaminen toimii vain vanhemmilla laitteilla</string>
</patch>
<patch id="ad.getpremium.hideGetPremiumPatch">
<string name="revanced_hide_get_premium_title">Piilota YouTube Premium -mainokset</string>
@@ -561,6 +525,9 @@ Säädä äänenvoimakkuutta pyyhkäisemällä pystysuoraan näytön oikealta pu
<string name="revanced_hide_clip_button_summary_on">Klippi-painike on piilotettu</string>
<string name="revanced_hide_clip_button_summary_off">Klippi-painike näytetään</string>
<!-- 'Save' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_save_button_title">Piilota Tallenna</string>
<string name="revanced_hide_save_button_summary_on">Tallenna-painike on piilotettu</string>
<string name="revanced_hide_save_button_summary_off">Tallenna-painike näytetään</string>
</patch>
<patch id="layout.buttons.navigation.navigationButtonsPatch">
<string name="revanced_navigation_buttons_screen_title">Navigointipainikkeet</string>
@@ -667,7 +634,7 @@ Jos haluat nähdä sen, aseta \"Naamioi videovirrat\" iOS TV:ksi"</string>
<string name="revanced_hide_player_flyout_video_quality_footer_summary_off">Videolaatuvalikon alatunniste näytetään</string>
</patch>
<patch id="layout.buttons.overlay.hidePlayerOverlayButtonsPatch">
<string name="revanced_hide_player_previous_next_buttons_title">Piilota Edellinen ja Seuraava -painikkeeet</string>
<string name="revanced_hide_player_previous_next_buttons_title">Piilota Edellinen &amp; Seuraava -painikkeet</string>
<string name="revanced_hide_player_previous_next_buttons_summary_on">Painikkeet on piilotettu</string>
<string name="revanced_hide_player_previous_next_buttons_summary_off">Painikkeet näytetään</string>
<string name="revanced_hide_cast_button_title">Piilota Cast-painike</string>
@@ -767,6 +734,9 @@ Jos haluat nähdä sen, aseta \"Naamioi videovirrat\" iOS TV:ksi"</string>
<string name="revanced_hide_shorts_upcoming_button_title">Piilota Tulossa-painike</string>
<string name="revanced_hide_shorts_upcoming_button_summary_on">Tulossa-painike on piilotettu</string>
<string name="revanced_hide_shorts_upcoming_button_summary_off">Tulossa-painike näytetään</string>
<string name="revanced_hide_shorts_effect_button_title">Piilota Tehoste-painike</string>
<string name="revanced_hide_shorts_effect_button_summary_on">Tehoste-painike on piilotettu</string>
<string name="revanced_hide_shorts_effect_button_summary_off">Tehoste-painike näytetään</string>
<string name="revanced_hide_shorts_green_screen_button_title">Piilota Vihertausta-painike</string>
<string name="revanced_hide_shorts_green_screen_button_summary_on">Vihertausta-painike on piilotettu</string>
<string name="revanced_hide_shorts_green_screen_button_summary_off">Vihertausta-painike näytetään</string>
@@ -814,7 +784,6 @@ Jos haluat nähdä sen, aseta \"Naamioi videovirrat\" iOS TV:ksi"</string>
<string name="revanced_hide_shorts_sound_metadata_label_title">Piilota äänen metadata-tunniste</string>
<string name="revanced_hide_shorts_sound_metadata_label_summary_on">Metadata-tunniste on piilotettu</string>
<string name="revanced_hide_shorts_sound_metadata_label_summary_off">Metadata-tunniste näytetään</string>
<string name="revanced_hide_shorts_full_video_link_label_title">Piilota koko videon linkin tunniste</string>
<string name="revanced_hide_shorts_full_video_link_label_summary_on">Videolinkin tunniste on piilotettu</string>
<string name="revanced_hide_shorts_full_video_link_label_summary_off">Videolinkin tunniste näytetään</string>
<string name="revanced_hide_shorts_sound_button_title">Piilota äänipainike</string>
@@ -948,11 +917,19 @@ Tämä ominaisuus toimii parhaiten, kun videon laatu on 720p tai alhaisempi ja k
<string name="revanced_sb_enable_auto_hide_skip_segment_button">Piilota ohita-painike automaattisesti</string>
<string name="revanced_sb_enable_auto_hide_skip_segment_button_sum_on">Ohita-painike piiloutuu muutaman sekunnin kuluttua</string>
<string name="revanced_sb_enable_auto_hide_skip_segment_button_sum_off">Ohita-painike näytetään koko osion ajan</string>
<string name="revanced_sb_general_skiptoast">Näytä ilmoitus ohitettaessa</string>
<string name="revanced_sb_general_skiptoast_sum_on">Ponnahdusilmoitus näytetään, kun osio ohitetaan automaattisesti. Napauta tästä nähdäksesi esimerkin</string>
<string name="revanced_sb_general_skiptoast_sum_off">Ponnahdusilmoitusta ei näytetä. Napauta tästä nähdäksesi esimerkin</string>
<string name="revanced_sb_general_skiptoast_sum_off">Ponnahdusilmoitusta ei näytetä</string>
<string name="revanced_sb_duration_1s">1 sekunti</string>
<string name="revanced_sb_duration_2s">2 sekuntia</string>
<string name="revanced_sb_duration_3s">3 sekuntia</string>
<string name="revanced_sb_duration_4s">4 sekuntia</string>
<string name="revanced_sb_duration_5s">5 sekuntia</string>
<string name="revanced_sb_duration_6s">6 sekuntia</string>
<string name="revanced_sb_duration_7s">7 sekuntia</string>
<string name="revanced_sb_duration_8s">8 sekuntia</string>
<string name="revanced_sb_duration_9s">9 sekuntia</string>
<string name="revanced_sb_duration_10s">10 sekuntia</string>
<string name="revanced_sb_general_time_without">Näytä videon pituus ilman osioita</string>
<string name="revanced_sb_general_time_without_sum_on">Videon pituus ilman osioita,ytetään suluissa koko videon pituuden vieressä</string>
<string name="revanced_sb_general_time_without_sum_on">Videon pituus ilman kaikkia osioita näkyy etenemispalkissa</string>
<string name="revanced_sb_general_time_without_sum_off">Videon koko pituus näytetään</string>
<string name="revanced_sb_create_segment_category">Uusien osioiden luominen</string>
<string name="revanced_sb_enable_create_segment">Näytä Luo uusi osio -painike</string>
@@ -999,7 +976,7 @@ UserID on kuin salasana, eikä sitä pidä jakaa kenellekään.
<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>
<string name="revanced_sb_segments_sponsor_sum">Maksettu mainostus, maksetut viittaukset ja suorat mainokset. Ei itsensä mainostukselle tai ilmaisille maininnoille kampanjoista/luojista/nettisivuista/tuotteista, joista he pitävät</string>
<string name="revanced_sb_segments_sponsor_sum">Maksettu mainostus, maksetut viittaukset ja suorat mainokset. Ei itsensä mainostukselle tai ilmaisille maininnoille kampanjoista/sisällöntuottajista/nettisivuista/tuotteista, joista he pitävät</string>
<string name="revanced_sb_segments_selfpromo">Maksamaton/Itsensä mainostus</string>
<string name="revanced_sb_segments_selfpromo_sum">Samankaltainen \"Sponsorin\" kanssa, mutta maksamattomalle tai itsensä mainostukselle. Tämä sisältää osioita kauppatavarasta, lahjoituksista tai tietoa siitä, kenen kanssa he ovat tehneet yhteistyötä</string>
<string name="revanced_sb_segments_interaction">Vuorovaikutusmuistutus (tilaaminen)</string>
@@ -1257,9 +1234,9 @@ Minisoitin voidaan vetää pois näytöltä vasemmalle tai oikealle"</string>
<string name="revanced_gradient_loading_screen_title">Ota liukuvärillinen latausruutu käyttöön</string>
<string name="revanced_gradient_loading_screen_summary_on">Latausruudulla on liukuvärillinen tausta</string>
<string name="revanced_gradient_loading_screen_summary_off">Latausruudulla on yksivärinen tausta</string>
<string name="splash_screen_animation_style_title">Aloitussivun tyyli</string>
<string name="splash_screen_animation_style_entry_1">Väri</string>
<string name="splash_screen_animation_style_entry_2">Musta ja valkoinen</string>
<string name="revanced_splash_screen_animation_style_title">Aloitussivun tyyli</string>
<string name="revanced_splash_screen_animation_style_entry_1">Väri</string>
<string name="revanced_splash_screen_animation_style_entry_2">Mustavalkoinen</string>
<string name="revanced_seekbar_custom_color_title">Ota mukautettu etenemispalkin väri käyttöön</string>
<string name="revanced_seekbar_custom_color_summary_on">Mukautettu etenemispalkin väri näytetään</string>
<string name="revanced_seekbar_custom_color_summary_off">Alkuperäinen etenemispalkin väri näytetään</string>

View File

@@ -156,22 +156,19 @@ Hindi ka aabisuhan ng anumang hindi inaasahang mga kaganapan."</string>
<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">"Ang mga istante ay nakatago tulad ng:
Mga balitang pang-agham
Patuloy na panonood
Galugarin ang higit pang mga channel
<string name="revanced_hide_horizontal_shelves_summary_on">"Nakago na ang mga shelf, tulad ng:
Nagbabagang balita
Ipagpatuloy ang panonood
Tuklasin ang higit pang channel
• Pinakarelebante
• Pamimili
• Panoorin muli"</string>
• Panoorin itong 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. -->
<string name="revanced_hide_join_membership_button_title">Itago ang button na Sumali</string>
<string name="revanced_hide_join_membership_button_summary_on">Nakatago ang button</string>
<string name="revanced_hide_join_membership_button_summary_off">Ang pindutan ay ipinapakita</string>
<!-- 'For you' should be translated using the same localized wording YouTube displays. -->
<string name="revanced_hide_for_you_shelf_title">Itago ang shelf na \'Para sa iyo\'</string>
<string name="revanced_hide_for_you_shelf_summary_on">Nakatago ang Shelf sa page ng channel</string>
<string name="revanced_hide_for_you_shelf_summary_off">Ipinapakita ang Shelf sa page ng channel</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">Itago ang button na \"Abisuhan ako\"</string>
@@ -192,15 +189,12 @@ Hindi ka aabisuhan ng anumang hindi inaasahang mga kaganapan."</string>
<string name="revanced_hide_timed_reactions_title">Itago ang mga naka-time na reaksyon</string>
<string name="revanced_hide_timed_reactions_summary_on">Nakatago ang mga naka-time na reaksyon</string>
<string name="revanced_hide_timed_reactions_summary_off">Ang mga naka-time na reaksyon ay ipinapakita</string>
<string name="revanced_hide_channel_guidelines_title">Itago ang mga alituntunin ng channel</string>
<string name="revanced_hide_channel_guidelines_summary_on">Nakatago ang mga alituntunin ng channel</string>
<string name="revanced_hide_channel_guidelines_summary_off">Ipinapakita ang mga alituntunin sa channel</string>
<string name="revanced_hide_chips_shelf_title">Itago ang shelf ng chips</string>
<string name="revanced_hide_chips_shelf_summary_on">Nakatago ang istante ng chips</string>
<string name="revanced_hide_chips_shelf_summary_off">Ipinapakita ang istante ng chips</string>
<string name="revanced_hide_expandable_chip_title">Itago ang mae-expand na card sa ilalim ng mga video</string>
<string name="revanced_hide_expandable_chip_summary_on">Nakatago ang mae-expand na card</string>
<string name="revanced_hide_expandable_chip_summary_off">Ipinapakita ang mae-expand na card</string>
<string name="revanced_hide_expandable_chip_title">Itago ang expandable card</string>
<string name="revanced_hide_expandable_chip_summary_on">Nakago na ang expandable card sa ilalim ng mga video</string>
<string name="revanced_hide_expandable_chip_summary_off">Ipinapakita ang expandable card sa ilalim ng mga video</string>
<string name="revanced_hide_community_posts_title">Itago ang mga post sa komunidad</string>
<string name="revanced_hide_community_posts_summary_on">Nakatago ang mga post sa komunidad</string>
<string name="revanced_hide_community_posts_summary_off">Ipinapakita ang mga post sa komunidad</string>
@@ -213,15 +207,9 @@ Hindi ka aabisuhan ng anumang hindi inaasahang mga kaganapan."</string>
<string name="revanced_hide_feed_survey_title">Itago ang mga survey ng feed</string>
<string name="revanced_hide_feed_survey_summary_on">Nakatago ang mga survey ng feed</string>
<string name="revanced_hide_feed_survey_summary_off">Ipinapakita ang mga survey ng feed</string>
<string name="revanced_hide_community_guidelines_title">Itago ang mga alituntunin ng komunidad</string>
<string name="revanced_hide_community_guidelines_summary_on">Nakatago ang mga alituntunin ng komunidad</string>
<string name="revanced_hide_community_guidelines_summary_off">Ipinapakita ang mga alituntunin ng komunidad</string>
<string name="revanced_hide_subscribers_community_guidelines_title">Itago ang mga alituntunin ng mga subscriber</string>
<string name="revanced_hide_subscribers_community_guidelines_summary_on">Nakatago ang mga alituntunin ng komunidad ng mga subscriber</string>
<string name="revanced_hide_subscribers_community_guidelines_summary_off">Ang mga alituntunin ng komunidad ng mga subscriber ay ipinapakita</string>
<string name="revanced_hide_channel_member_shelf_title">Itago ang shelf ng miyembro ng channel</string>
<string name="revanced_hide_channel_member_shelf_summary_on">Nakatago ang shelf ng miyembro ng channel</string>
<string name="revanced_hide_channel_member_shelf_summary_off">Ipinapakita ang shelf ng miyembro ng channel</string>
<string name="revanced_hide_emergency_box_title">Itago ang mga emergency box</string>
<string name="revanced_hide_emergency_box_summary_on">Nakatago ang mga emergency box</string>
<string name="revanced_hide_emergency_box_summary_off">Ipinapakita ang mga emergency box</string>
@@ -237,18 +225,18 @@ Hindi ka aabisuhan ng anumang hindi inaasahang mga kaganapan."</string>
<string name="revanced_hide_playables_title">Itago ang mga Playable</string>
<string name="revanced_hide_playables_summary_on">Nakatago ang mga laruin</string>
<string name="revanced_hide_playables_summary_off">Ipinapakita ang mga puwedeng laruin</string>
<string name="revanced_hide_quick_actions_title">Itago ang mga mabilisang pagkilos sa fullscreen</string>
<string name="revanced_hide_quick_actions_summary_on">Nakatago ang mga mabilisang pagkilos</string>
<string name="revanced_hide_quick_actions_summary_off">Ang mga mabilisang aksyon ay ipinapakita</string>
<string name="revanced_hide_related_videos_title">Itago ang mga kaugnay na video sa mabilisang pagkilos</string>
<string name="revanced_hide_related_videos_summary_on">Nakatago ang mga kaugnay na video</string>
<string name="revanced_hide_related_videos_summary_off">Ang mga kaugnay na video ay ipinapakita</string>
<string name="revanced_hide_image_shelf_title">Itago ang shelf ng larawan sa mga resulta ng paghahanap</string>
<string name="revanced_hide_image_shelf_summary_on">Nakatago ang istante ng larawan</string>
<string name="revanced_hide_image_shelf_summary_off">Ipinapakita ang istante ng larawan</string>
<string name="revanced_hide_latest_posts_ads_title">Itago ang mga pinakabagong post</string>
<string name="revanced_hide_latest_posts_ads_summary_on">Nakatago ang pinakabagong mga post</string>
<string name="revanced_hide_latest_posts_ads_summary_off">Pinakabagong mga post ay ipinapakita</string>
<string name="revanced_hide_quick_actions_title">Itago ang mga mabilisang pagkilos</string>
<string name="revanced_hide_quick_actions_summary_on">Nakago na ang mga mabilisang pagkilos sa fullscreen</string>
<string name="revanced_hide_quick_actions_summary_off">Ipinapakita ang mga mabilisang pagkilos sa fullscreen</string>
<string name="revanced_hide_related_videos_title">Itago ang mga kaugnay na video</string>
<string name="revanced_hide_related_videos_summary_on">Nakago na ang mga kaugnay na video sa mga mabilisang pagkilos</string>
<string name="revanced_hide_related_videos_summary_off">Ipinapakita ang mga kaugnay na video sa mga mabilisang pagkilos</string>
<string name="revanced_hide_image_shelf_title">Itago ang image shelf</string>
<string name="revanced_hide_image_shelf_summary_on">Nakago na ang image shelf sa mga resulta ng paghahanap</string>
<string name="revanced_hide_image_shelf_summary_off">Ipinapakita ang image shelf sa mga resulta ng paghahanap</string>
<string name="revanced_hide_latest_posts_title">Itago ang mga pinakabagong post</string>
<string name="revanced_hide_latest_posts_summary_on">Nakatago ang pinakabagong mga post</string>
<string name="revanced_hide_latest_posts_summary_off">Pinakabagong mga post ay ipinapakita</string>
<string name="revanced_hide_mix_playlists_title">Itago ang mga mix playlist</string>
<string name="revanced_hide_mix_playlists_summary_on">Nakatago ang mga mix playlist</string>
<string name="revanced_hide_mix_playlists_summary_off">Ang mga mix playlist ay ipinapakita</string>
@@ -285,16 +273,39 @@ Hindi ka aabisuhan ng anumang hindi inaasahang mga kaganapan."</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">Bar ng filter</string>
<string name="revanced_hide_filter_bar_screen_summary">Itago o ipakita ang filter bar sa feed, mga resulta ng 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>
<string name="revanced_hide_filter_bar_feed_in_feed_summary_off">Ipinapakita sa feed</string>
<string name="revanced_hide_filter_bar_screen_summary">Itago o ipakita ang filter bar sa mga feed, history, mga resulta ng paghahanap, at mga kaugnay na video</string>
<string name="revanced_hide_filter_bar_feed_in_feed_title">Itago sa mga feed</string>
<string name="revanced_hide_filter_bar_feed_in_feed_summary_on">Nakatago sa mga feed</string>
<string name="revanced_hide_filter_bar_feed_in_feed_summary_off">Ipinapakita sa mga feed</string>
<string name="revanced_hide_filter_bar_feed_in_history_title">Itago sa kasaysayan</string>
<string name="revanced_hide_filter_bar_feed_in_history_summary_on">Nakatago sa kasaysayan</string>
<string name="revanced_hide_filter_bar_feed_in_history_summary_off">Ipinapakita sa kasaysayan</string>
<string name="revanced_hide_filter_bar_feed_in_search_title">Itago sa mga resulta ng paghahanap</string>
<string name="revanced_hide_filter_bar_feed_in_search_summary_on">Nakatago sa mga resulta ng paghahanap</string>
<string name="revanced_hide_filter_bar_feed_in_search_summary_off">Ipinapakita sa mga resulta ng paghahanap</string>
<string name="revanced_hide_filter_bar_feed_in_related_videos_title">Itago sa mga kaugnay na video</string>
<string name="revanced_hide_filter_bar_feed_in_related_videos_summary_on">Nakatago sa mga kaugnay na video</string>
<string name="revanced_hide_filter_bar_feed_in_related_videos_summary_off">Ipinapakita sa mga kaugnay na video</string>
<string name="revanced_channel_screen_title">Pahina ng Channel</string>
<string name="revanced_channel_screen_summary">Itago o ipakita ang mga bahagi ng pahina ng channel</string>
<!-- 'For You' should be translated using the same localized wording YouTube displays. -->
<string name="revanced_hide_for_you_shelf_title">Itago ang shelf na \'Para sa iyo\'</string>
<string name="revanced_hide_for_you_shelf_summary_on">Nakago na ang For You shelf</string>
<string name="revanced_hide_for_you_shelf_summary_off">Ipinapakita ang For You shelf</string>
<string name="revanced_hide_links_preview_title">Itago ang preview ng mga link</string>
<string name="revanced_hide_links_preview_summary_on">Nakago na ang preview ng mga link</string>
<string name="revanced_hide_links_preview_summary_off">Ipinapakita ang preview ng mga link</string>
<string name="revanced_hide_members_shelf_title">Itago ang members shelf</string>
<string name="revanced_hide_members_shelf_summary_on">Nakago na ang members shelf</string>
<string name="revanced_hide_members_shelf_summary_off">Ipinapakita ang shelf ng Mga Miyembro</string>
<!-- 'Visit Community' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_visit_community_button_title">Itago ang button na \"Bisitahin ang Komunidad\"</string>
<string name="revanced_hide_visit_community_button_summary_on">Nakatago ang button na Bisitahin ang Komunidad</string>
<string name="revanced_hide_visit_community_button_summary_off">Ipinapakita ang button na Bisitahin ang Komunidad</string>
<!-- 'Visit store' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_visit_store_button_title">Itago ang button na \"Bisitahin ang tindahan\" sa mga page ng channel</string>
<string name="revanced_hide_visit_store_button_summary_on">Nakago na ang button na Bisitahin ang tindahan</string>
<string name="revanced_hide_visit_store_button_summary_off">Ipinapakita ang button na Bisitahin ang tindahan</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_ai_chat_summary_title">Itago ang Buod ng Chat ng AI</string>
@@ -303,24 +314,30 @@ Hindi ka aabisuhan ng anumang hindi inaasahang mga kaganapan."</string>
<string name="revanced_hide_comments_ai_summary_title">Itago ang Buod ng Mga Komento ng AI</string>
<string name="revanced_hide_comments_ai_summary_summary_on">Nakatago ang buod ng mga komento</string>
<string name="revanced_hide_comments_ai_summary_summary_off">Ipinapakita ang buod ng mga komento</string>
<string name="revanced_hide_comments_channel_guidelines_title">Itago ang mga guideline ng channel</string>
<string name="revanced_hide_comments_channel_guidelines_summary_on">Nakatago ang mga alituntunin ng channel</string>
<string name="revanced_hide_comments_channel_guidelines_summary_off">Ipinapakita ang mga alituntunin ng channel</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_community_guidelines_title">Itago ang mga alituntunin ng komunidad</string>
<string name="revanced_hide_comments_community_guidelines_summary_on">Nakago na ang mga guideline ng komunidad</string>
<string name="revanced_hide_comments_community_guidelines_summary_off">Ipinapakita ang mga guideline ng komunidad</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">Nakatago ang button na Gumawa ng isang Short</string>
<string name="revanced_hide_comments_create_a_short_button_summary_off">Ipinapakita ang button na Gumawa ng isang Short</string>
<string name="revanced_hide_comments_timestamp_button_title">Itago ang button na timestamp</string>
<string name="revanced_hide_comments_timestamp_button_summary_on">Nakatago ang button na timestamp</string>
<string name="revanced_hide_comments_timestamp_button_summary_off">Ipinapakita ang button na timestamp</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>
<string name="revanced_hide_comments_thanks_button_title">Itago ang pindutang Salamat</string>
<string name="revanced_hide_comments_thanks_button_summary_on">Nakatago ang buton ng salamat</string>
<string name="revanced_hide_comments_thanks_button_summary_off">Ang pindutan ng salamat ay ipinapakita</string>
<string name="revanced_hide_comments_timestamp_button_title">Itago ang button ng Timestamp</string>
<string name="revanced_hide_comments_timestamp_button_summary_on">Nakatago ang button na timestamp</string>
<string name="revanced_hide_comments_timestamp_button_summary_off">Ipinapakita ang button na timestamp</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>
@@ -374,44 +391,41 @@ Mga limitasyon
<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_creator_store_shelf_title">Itago ang creator store shelf</string>
<string name="revanced_hide_creator_store_shelf_summary_on">Nakatago ang shelf ng Tindahan sa ilalim ng video player</string>
<string name="revanced_hide_creator_store_shelf_summary_off">Ipinapakita ang store shelf sa ilalim ng video player</string>
<string name="revanced_hide_end_screen_store_banner_title">Itago ang banner ng tindahan ng end screen</string>
<string name="revanced_hide_end_screen_store_banner_summary_on">Nakatago ang banner ng tindahan</string>
<string name="revanced_hide_end_screen_store_banner_summary_off">Ipinakita ang banner ng tindahan</string>
<string name="revanced_hide_fullscreen_ads_title">Itago ang mga fullscreen na ad</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>
<!-- 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">Gumagana lang ang Itago ang mga fullscreen na ad sa mga mas lumang device</string>
<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_merchandise_banners_title">Itago ang mga merchandise banner</string>
<string name="revanced_hide_merchandise_banners_summary_on">Nakatago ang mga banner ng merchandise</string>
<string name="revanced_hide_merchandise_banners_summary_off">Ipinapakita ang mga banner ng merchandise</string>
<string name="revanced_hide_paid_promotion_label_title">Itago ang may bayad na label ng promosyon</string>
<string name="revanced_hide_paid_promotion_label_summary_on">Nakatago ang label ng bayad na promosyon</string>
<string name="revanced_hide_paid_promotion_label_summary_off">Ipinapakita ang may bayad na label ng promosyon</string>
<string name="revanced_hide_self_sponsor_ads_title">Itago ang mga self sponsored card</string>
<string name="revanced_hide_self_sponsor_ads_summary_on">Nakatago ang mga self sponsored card</string>
<string name="revanced_hide_self_sponsor_ads_summary_off">Ipinapakita ang mga self sponsored card</string>
<string name="revanced_hide_products_banner_title">Itago ang banner na \'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_end_screen_store_banner_title">Itago ang banner ng tindahan ng end screen</string>
<string name="revanced_hide_end_screen_store_banner_summary_on">Nakatago ang banner ng tindahan</string>
<string name="revanced_hide_end_screen_store_banner_summary_off">Ipinakita ang banner ng tindahan</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 sa paglalarawan ng video</string>
<string name="revanced_hide_shopping_links_summary_off">Ipinapakita ang mga link sa pamimili sa paglalarawan ng video</string>
<!-- 'Visit store' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_visit_store_button_title">Itago ang button na \"Bisitahin ang tindahan\" sa mga page ng channel</string>
<string name="revanced_hide_visit_store_button_summary_on">Nakatago ang button sa page ng channel</string>
<string name="revanced_hide_visit_store_button_summary_off">Ipinapakita ang button sa page ng channel</string>
<string name="revanced_hide_shopping_links_title">Itago ang mga link ng pamimili</string>
<string name="revanced_hide_shopping_links_summary_on">Nakago na ang mga link sa deskripsyon ng video</string>
<string name="revanced_hide_shopping_links_summary_off">Ipinapakita ang mga link sa deskripsyon ng video</string>
<!-- 'View products' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_view_products_banner_title">Itago ang banner na \"Tingnan ang mga produkto\"</string>
<string name="revanced_hide_view_products_banner_summary_on">Nakatago ang banner sa overlay ng video</string>
<string name="revanced_hide_view_products_banner_summary_off">Ipinapakita ang banner sa overlay ng video</string>
<string name="revanced_hide_web_search_results_title">Itago ang mga resulta ng paghahanap sa web</string>
<string name="revanced_hide_web_search_results_summary_on">Nakatago ang mga resulta ng paghahanap sa web</string>
<string name="revanced_hide_web_search_results_summary_off">Ipinapakita ang mga resulta ng paghahanap sa web</string>
<string name="revanced_hide_merchandise_banners_title">Itago ang mga merchandise banner</string>
<string name="revanced_hide_merchandise_banners_summary_on">Nakatago ang mga banner ng merchandise</string>
<string name="revanced_hide_merchandise_banners_summary_off">Ipinapakita ang mga banner ng merchandise</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">Gumagana lang ang Itago ang mga fullscreen na ad sa mga mas lumang device</string>
</patch>
<patch id="ad.getpremium.hideGetPremiumPatch">
<string name="revanced_hide_get_premium_title">Itago ang mga promosyon sa YouTube Premium</string>
@@ -717,6 +731,7 @@ Upang ipakita ang menu ng Audio track, baguhin ang 'Spoof video streams' sa iOS
<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 Manlalaro</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>
@@ -770,6 +785,9 @@ Upang ipakita ang menu ng Audio track, baguhin ang 'Spoof video streams' sa iOS
<string name="revanced_hide_shorts_upcoming_button_title">Itago ang Upcoming button</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_effect_button_title">Itago ang Button ng Epekto</string>
<string name="revanced_hide_shorts_effect_button_summary_on">Nakatago ang button ng epekto</string>
<string name="revanced_hide_shorts_effect_button_summary_off">Nakikita ang button ng epekto</string>
<string name="revanced_hide_shorts_green_screen_button_title">Itago ang Green screen button</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>
@@ -817,7 +835,7 @@ Upang ipakita ang menu ng Audio track, baguhin ang 'Spoof video streams' sa iOS
<string name="revanced_hide_shorts_sound_metadata_label_title">Itago ang sound metadata label</string>
<string name="revanced_hide_shorts_sound_metadata_label_summary_on">Nakatago ang label ng metadata</string>
<string name="revanced_hide_shorts_sound_metadata_label_summary_off">Ang label ng metadata ay ipinapakita</string>
<string name="revanced_hide_shorts_full_video_link_label_title">Itago ang buong label ng link ng video</string>
<string name="revanced_hide_shorts_full_video_link_label_title">Itago ang label ng link ng video</string>
<string name="revanced_hide_shorts_full_video_link_label_summary_on">Nakatago ang label ng link ng video</string>
<string name="revanced_hide_shorts_full_video_link_label_summary_off">Ipinapakita ang label ng link ng video</string>
<string name="revanced_hide_shorts_sound_button_title">Itago ang pindutan ng tunog</string>
@@ -853,6 +871,8 @@ Mga Setting → Pag-playback → I-autoplay ang susunod na video"</string>
<patch id="layout.player.fullscreen.exitFullscreenPatch">
<string name="revanced_exit_fullscreen_title">Lumabas sa fullscreen mode sa katapusan ng video</string>
<string name="revanced_exit_fullscreen_entry_1">Na-disable</string>
<string name="revanced_exit_fullscreen_entry_2">Patayo</string>
<string name="revanced_exit_fullscreen_entry_3">Pahalang</string>
<string name="revanced_exit_fullscreen_entry_4">Portrait at landscape</string>
</patch>
<patch id="layout.player.fullscreen.openVideosFullscreen">
@@ -886,6 +906,7 @@ Limitasyon: Maaaring hindi lumabas ang mga Dislike sa incognito mode"</string>
<string name="revanced_ryd_dislike_percentage_summary_on">Ipinapakita ang mga Dislike bilang isang porsyento</string>
<string name="revanced_ryd_dislike_percentage_summary_off">Ipinapakita ang mga Dislike bilang isang numero</string>
<!-- Translations should use language similar to 'revanced_sb_enable_compact_skip_button' -->
<string name="revanced_ryd_compact_layout_title">Siksik na Pindutan ng Like</string>
<string name="revanced_ryd_compact_layout_summary_on">Like button na naka-istilong para sa minimum na lapad</string>
<string name="revanced_ryd_compact_layout_summary_off">I-style na button para sa pinakamahusay na hitsura</string>
<string name="revanced_ryd_estimated_like_title">Ipakita ang tinantyang mga gusto</string>
@@ -948,11 +969,25 @@ Ang tampok na ito ay pinakamahusay na gumagana sa kalidad ng video na 720p o mas
<string name="revanced_sb_enable_auto_hide_skip_segment_button">Awtomatikong itago ang button na Laktawan</string>
<string name="revanced_sb_enable_auto_hide_skip_segment_button_sum_on">Tinatago ang pindutan ng skip pagkatapos ng ilang segundo</string>
<string name="revanced_sb_enable_auto_hide_skip_segment_button_sum_off">Ipinapakita ang button na Laktawan para sa buong segment</string>
<string name="revanced_sb_general_skiptoast">Magpakita ng toast kapag lumaktaw</string>
<string name="revanced_sb_general_skiptoast_sum_on">Ang toast ay ipinapakita kapag ang isang segment ay awtomatikong nilaktawan. Mag-tap dito para makakita ng halimbawa</string>
<string name="revanced_sb_general_skiptoast_sum_off">Hindi ipinapakita ang toast. Mag-tap dito para makakita ng halimbawa</string>
<string name="revanced_sb_auto_hide_skip_button_duration">Tagal ng pindutan ng Paglaktaw</string>
<string name="revanced_sb_auto_hide_skip_button_duration_sum">Gaano katagal ipakita ang mga pindutan ng paglaktaw at paglaktaw sa highlight bago awtomatikong itago</string>
<string name="revanced_sb_general_skiptoast">Ipakita ang undo skip toast</string>
<string name="revanced_sb_general_skiptoast_sum_on">Ipinapakita ang toast kapag awtomatikong nilaktawan ang isang segment. Tapikin ang notipikasyon ng toast upang i-undo ang paglaktaw</string>
<string name="revanced_sb_general_skiptoast_sum_off">Hindi ipinapakita ang toast</string>
<string name="revanced_sb_toast_on_skip_duration">Tagal ng toast sa paglaktaw</string>
<string name="revanced_sb_toast_on_skip_duration_sum">Gaano katagal ipakita ang paalala ng pag-undo ng paglaktaw</string>
<string name="revanced_sb_duration_1s">1 segundo</string>
<string name="revanced_sb_duration_2s">2 segundo</string>
<string name="revanced_sb_duration_3s">3 segundo</string>
<string name="revanced_sb_duration_4s">4 segundo</string>
<string name="revanced_sb_duration_5s">5 segundo</string>
<string name="revanced_sb_duration_6s">6 segundo</string>
<string name="revanced_sb_duration_7s">7 segundo</string>
<string name="revanced_sb_duration_8s">8 segundo</string>
<string name="revanced_sb_duration_9s">9 segundo</string>
<string name="revanced_sb_duration_10s">10 segundo</string>
<string name="revanced_sb_general_time_without">Ipakita ang haba ng video nang walang mga segment</string>
<string name="revanced_sb_general_time_without_sum_on">Haba ng video na binawasan ang lahat ng mga segment, na ipinapakita sa mga panaklong sa tabi ng buong haba ng video</string>
<string name="revanced_sb_general_time_without_sum_on">Ang haba ng video nang walang lahat ng segment ay ipinapakita sa seekbar</string>
<string name="revanced_sb_general_time_without_sum_off">Ipinapakita ang buong haba ng video</string>
<string name="revanced_sb_create_segment_category">Paglikha ng mga bagong segment</string>
<string name="revanced_sb_enable_create_segment">Ipakita ang button na Gumawa ng bagong segment</string>
@@ -998,6 +1033,7 @@ 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 promotion. Kasama ang mga seksyon tungkol sa merchandise, donasyon, o impormasyon tungkol sa kung sino ang kanilang nakasama</string>
@@ -1066,6 +1102,7 @@ Umiiral na"</string>
<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">Itaas na Boto</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>
@@ -1108,6 +1145,7 @@ Isumite na ba?"</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 Talaan ng mga Nangunguna</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>
@@ -1117,13 +1155,16 @@ Isumite na ba?"</string>
<string name="revanced_sb_stats_saved_hour_format">%1$s oras %2$s minuto</string>
<string name="revanced_sb_stats_saved_minute_format">%1$s minuto %2$s segundo</string>
<string name="revanced_sb_stats_saved_second_format">%s segundo</string>
<string name="revanced_sb_color_opacity_label">Opacity:</string>
<string name="revanced_sb_color_dot_label">Kulay:</string>
<string name="revanced_sb_about_title">Tungkol</string>
<string name="revanced_sb_about_api_summary">Ang data ay ibinibigay ng SponsorBlock API. Mag-tap dito para matuto pa at makakita ng mga download para sa iba pang platform</string>
</patch>
<patch id="layout.formfactor.changeFormFactorPatch">
<string name="revanced_change_form_factor_title">Kaayusan ng Form Factor</string>
<string name="revanced_change_form_factor_entry_1">Regular</string>
<string name="revanced_change_form_factor_entry_2">Telepono</string>
<string name="revanced_change_form_factor_entry_3">Tablet</string>
<string name="revanced_change_form_factor_entry_4">Awtomatiko</string>
<string name="revanced_change_form_factor_user_dialog_message">"Kasama sa mga pagbabago:
@@ -1161,6 +1202,7 @@ Kung mamaya ay patayin, inirerekumenda na i-clear ang data ng app upang maiwasan
<string name="revanced_change_start_page_entry_history">Kasaysayan</string>
<string name="revanced_change_start_page_entry_library">Aklatan</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">Mga Pelikula</string>
<string name="revanced_change_start_page_entry_music">Musika</string>
<string name="revanced_change_start_page_entry_news">Mga Balita</string>
@@ -1170,6 +1212,8 @@ Kung mamaya ay patayin, inirerekumenda na i-clear ang data ng app upang maiwasan
<string name="revanced_change_start_page_entry_shopping">Pamimili</string>
<string name="revanced_change_start_page_entry_sports">Isports</string>
<string name="revanced_change_start_page_entry_subscriptions">Mga subscription</string>
<string name="revanced_change_start_page_entry_trending">Uso</string>
<string name="revanced_change_start_page_entry_virtual_reality">Birtuwal na Katotohanan</string>
<string name="revanced_change_start_page_entry_watch_later">Panoorin mamaya</string>
<string name="revanced_change_start_page_entry_your_clips">Mga clip mo</string>
<string name="revanced_change_start_page_always_title">Palaging baguhin ang panimulang pahina</string>
@@ -1185,6 +1229,9 @@ Limitasyon: Maaaring hindi gumana ang paggamit ng back button sa toolbar"</strin
</patch>
<patch id="layout.shortsplayer.shortsPlayerTypePatch">
<string name="revanced_shorts_player_type_title">Buksan ang Shorts gamit ang</string>
<string name="revanced_shorts_player_type_shorts">Shorts player</string>
<string name="revanced_shorts_player_type_regular_player">Regular player</string>
<string name="revanced_shorts_player_type_regular_player_fullscreen">Regular player fullscreen</string>
</patch>
<patch id="layout.shortsautoplay.shortsAutoplayPatch">
<string name="revanced_shorts_autoplay_title">Awtomatikong pag-play ng Shorts</string>
@@ -1195,10 +1242,12 @@ Limitasyon: Maaaring hindi gumana ang paggamit ng back button sa toolbar"</strin
<string name="revanced_shorts_autoplay_background_summary_off">Uulitin ang mga Shorts sa background</string>
</patch>
<patch id="layout.miniplayer.miniplayerPatch">
<string name="revanced_miniplayer_screen_title">Miniplayer</string>
<string name="revanced_miniplayer_screen_summary">Baguhin ang estilo ng naka-minimize na in-app 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">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>
@@ -1243,9 +1292,9 @@ Ang \"miniplayer\" ay maaaring i-drag palabas ng screen sa kaliwa o kanan"</stri
<string name="revanced_gradient_loading_screen_title">Paganahin ang gradient loading screen</string>
<string name="revanced_gradient_loading_screen_summary_on">Ang paglo-load ng screen ay magkakaroon ng gradient na background</string>
<string name="revanced_gradient_loading_screen_summary_off">Ang paglo-load ng screen ay magkakaroon ng solidong background</string>
<string name="splash_screen_animation_style_title">Estilo ng splash screen</string>
<string name="splash_screen_animation_style_entry_1">Kulay</string>
<string name="splash_screen_animation_style_entry_2">Itim at puti</string>
<string name="revanced_splash_screen_animation_style_title">Estilo ng splash screen</string>
<string name="revanced_splash_screen_animation_style_entry_1">Kulay</string>
<string name="revanced_splash_screen_animation_style_entry_2">Itim at puti</string>
<string name="revanced_seekbar_custom_color_title">Paganahin ang custom na kulay ng seekbar</string>
<string name="revanced_seekbar_custom_color_summary_on">Ipinapakita ang kulay ng custom na seekbar</string>
<string name="revanced_seekbar_custom_color_summary_off">Ipinapakita ang orihinal na kulay ng seekbar</string>
@@ -1283,6 +1332,7 @@ 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>
@@ -1330,6 +1380,7 @@ Ang pagpapagana nito ay maaaring magbukas ng mas mataas na kalidad ng video"</st
<string name="microg_settings_summary">Mga setting para sa GmsCore</string>
</patch>
<patch id="misc.hapticfeedback.disableHapticFeedbackPatch">
<string name="revanced_disable_haptic_feedback_title">Haptic feedback</string>
<string name="revanced_disable_haptic_feedback_summary">Baguhin ang haptic feedback</string>
<string name="revanced_disable_haptic_feedback_chapters_title">Huwag paganahin ang chapters haptics</string>
<string name="revanced_disable_haptic_feedback_chapters_summary_on">Hindi pinagana ang Chapters haptics</string>
@@ -1506,6 +1557,7 @@ Ang AVC ay may pinakamataas na resolusyon na 1080p, ang codec ng audio ng Opus a
<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>

View File

@@ -156,10 +156,11 @@ Vous ne serez pas informé des événements inattendus."</string>
<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">"Des étagères sont masquées, telles que :
• Alerte info
<string name="revanced_hide_horizontal_shelves_summary_on">"Les étagères sont masquées, telles que :
• Actualités
• Continuer à regarder
• Explorer plus de chaînes
• Les plus pertinents
• Shopping
• Regarder à nouveau"</string>
<string name="revanced_hide_horizontal_shelves_summary_off">Les étagères sont affichées</string>
@@ -168,10 +169,6 @@ Vous ne serez pas informé des événements inattendus."</string>
<string name="revanced_hide_join_membership_button_title">Masquer le bouton Rejoindre</string>
<string name="revanced_hide_join_membership_button_summary_on">Le bouton est masqué</string>
<string name="revanced_hide_join_membership_button_summary_off">Le bouton est affiché</string>
<!-- 'For you' should be translated using the same localized wording YouTube displays. -->
<string name="revanced_hide_for_you_shelf_title">Masquer l\'étagère \"Pour vous\"</string>
<string name="revanced_hide_for_you_shelf_summary_on">L\'étagère est masquée sur la page de chaîne</string>
<string name="revanced_hide_for_you_shelf_summary_off">L\'étagère est affichée sur la page de chaîne</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">Masquer le bouton M\'avertir</string>
@@ -192,15 +189,12 @@ Vous ne serez pas informé des événements inattendus."</string>
<string name="revanced_hide_timed_reactions_title">Masquer les réactions minutées</string>
<string name="revanced_hide_timed_reactions_summary_on">Les réactions minutées sont masquées</string>
<string name="revanced_hide_timed_reactions_summary_off">Les réactions minutées sont affichées</string>
<string name="revanced_hide_channel_guidelines_title">Masquer les consignes de chaîne</string>
<string name="revanced_hide_channel_guidelines_summary_on">Les consignes de chaîne sont masquées</string>
<string name="revanced_hide_channel_guidelines_summary_off">Les consignes de chaîne sont affichées</string>
<string name="revanced_hide_chips_shelf_title">Masquer l\'étagère des filtres</string>
<string name="revanced_hide_chips_shelf_summary_on">L\'étagère des filtres est masquée</string>
<string name="revanced_hide_chips_shelf_summary_off">L\'étagère des filtres est affichée</string>
<string name="revanced_hide_expandable_chip_title">Masquer la carte extensible sous les vidéos</string>
<string name="revanced_hide_expandable_chip_summary_on">La carte extensible est masquée</string>
<string name="revanced_hide_expandable_chip_summary_off">La carte extensible est affichée</string>
<string name="revanced_hide_expandable_chip_title">Masquer la carte extensible</string>
<string name="revanced_hide_expandable_chip_summary_on">La carte extensible sous les vidéos est masquée</string>
<string name="revanced_hide_expandable_chip_summary_off">La carte extensible sous les vidéos est affichée</string>
<string name="revanced_hide_community_posts_title">Masquer les posts</string>
<string name="revanced_hide_community_posts_summary_on">Les posts destinés à la communauté sont masqués</string>
<string name="revanced_hide_community_posts_summary_off">Les posts destinés à la communauté sont affichés</string>
@@ -213,15 +207,9 @@ Vous ne serez pas informé des événements inattendus."</string>
<string name="revanced_hide_feed_survey_title">Masquer les enquêtes dans le flux</string>
<string name="revanced_hide_feed_survey_summary_on">Les enquêtes dans le flux sont masquées</string>
<string name="revanced_hide_feed_survey_summary_off">Les enquêtes dans le flux sont affichées</string>
<string name="revanced_hide_community_guidelines_title">Masquer le règlement de la communauté</string>
<string name="revanced_hide_community_guidelines_summary_on">Le règlement de la communauté est masqué</string>
<string name="revanced_hide_community_guidelines_summary_off">Le règlement de la communauté est affiché</string>
<string name="revanced_hide_subscribers_community_guidelines_title">Masquer les consignes pour les abonnés</string>
<string name="revanced_hide_subscribers_community_guidelines_summary_on">Les consignes de la communauté des abonnés sont masquées</string>
<string name="revanced_hide_subscribers_community_guidelines_summary_off">Les consignes de la communauté des abonnés sont affichées</string>
<string name="revanced_hide_channel_member_shelf_title">Masquer l\'étagère des membres de chaîne</string>
<string name="revanced_hide_channel_member_shelf_summary_on">L\'étagère des membres de chaîne est masquée</string>
<string name="revanced_hide_channel_member_shelf_summary_off">L\'étagère des membres de chaîne est affichée</string>
<string name="revanced_hide_emergency_box_title">Masquer les boîtes d\'urgence</string>
<string name="revanced_hide_emergency_box_summary_on">Les boîtes d\'urgence sont masquées</string>
<string name="revanced_hide_emergency_box_summary_off">Les boîtes d\'urgence sont affichées</string>
@@ -237,18 +225,18 @@ Vous ne serez pas informé des événements inattendus."</string>
<string name="revanced_hide_playables_title">Masquer les jeux intégrés</string>
<string name="revanced_hide_playables_summary_on">Les jeux intégrés sont masqués</string>
<string name="revanced_hide_playables_summary_off">Les jeux intégrés sont affichés</string>
<string name="revanced_hide_quick_actions_title">Masquer les actions rapides en plein écran</string>
<string name="revanced_hide_quick_actions_summary_on">Les actions rapides sont masquées</string>
<string name="revanced_hide_quick_actions_summary_off">Les actions rapides sont affichées</string>
<string name="revanced_hide_related_videos_title">Masquer les vidéos similaires dans les actions rapides</string>
<string name="revanced_hide_related_videos_summary_on">Les vidéos similaires sont masquées</string>
<string name="revanced_hide_related_videos_summary_off">Les vidéos similaires sont affichées</string>
<string name="revanced_hide_image_shelf_title">Masquer l\'étagère d\'images dans les résultats de recherche</string>
<string name="revanced_hide_image_shelf_summary_on">L\'étagère d\'images est masquée</string>
<string name="revanced_hide_image_shelf_summary_off">L\'étagère d\'images est affichée</string>
<string name="revanced_hide_latest_posts_ads_title">Masquer les posts récents</string>
<string name="revanced_hide_latest_posts_ads_summary_on">Les posts récents sont masqués</string>
<string name="revanced_hide_latest_posts_ads_summary_off">Les posts récents sont affichés</string>
<string name="revanced_hide_quick_actions_title">Masquer les actions rapides</string>
<string name="revanced_hide_quick_actions_summary_on">Les actions rapides en plein écran sont masquées</string>
<string name="revanced_hide_quick_actions_summary_off">Les actions rapides en plein écran sont affichées</string>
<string name="revanced_hide_related_videos_title">Masquer les vidéos associées</string>
<string name="revanced_hide_related_videos_summary_on">Les vidéos associées dans les actions rapides sont masquées</string>
<string name="revanced_hide_related_videos_summary_off">Les vidéos associées dans les actions rapides sont affichées</string>
<string name="revanced_hide_image_shelf_title">Masquer l\'étagère d\'images</string>
<string name="revanced_hide_image_shelf_summary_on">L\'étagère d\'images dans les résultats de recherche est masquée</string>
<string name="revanced_hide_image_shelf_summary_off">L\'étagère d\'images dans les résultats de recherche est affichée</string>
<string name="revanced_hide_latest_posts_title">Masquer les posts récents</string>
<string name="revanced_hide_latest_posts_summary_on">Les posts récents sont masqués</string>
<string name="revanced_hide_latest_posts_summary_off">Les posts récents sont affichés</string>
<string name="revanced_hide_mix_playlists_title">Masquer les playlists mix</string>
<string name="revanced_hide_mix_playlists_summary_on">Les playlists mix sont masquées</string>
<string name="revanced_hide_mix_playlists_summary_off">Les playlists mix sont affichées</string>
@@ -285,16 +273,39 @@ Vous ne serez pas informé des événements inattendus."</string>
<string name="revanced_hide_description_components_screen_title">Description de la vidéo</string>
<string name="revanced_hide_description_components_screen_summary">Masquez ou affichez des éléments dans la description des vidéos</string>
<string name="revanced_hide_filter_bar_screen_title">Barre des filtres</string>
<string name="revanced_hide_filter_bar_screen_summary">Masquez ou affichez la barre des filtres dans le flux, les résultats de recherche et les vidéos similaires</string>
<string name="revanced_hide_filter_bar_feed_in_feed_title">Masquer dans le flux</string>
<string name="revanced_hide_filter_bar_feed_in_feed_summary_on">Masquée dans le flux</string>
<string name="revanced_hide_filter_bar_feed_in_feed_summary_off">Affichée dans le flux</string>
<string name="revanced_hide_filter_bar_screen_summary">Masquez ou affichez la barre des filtres dans les flux, l\'historique, les résultats de recherche et les vidéos associées</string>
<string name="revanced_hide_filter_bar_feed_in_feed_title">Masquer dans les flux</string>
<string name="revanced_hide_filter_bar_feed_in_feed_summary_on">Masquée dans les flux</string>
<string name="revanced_hide_filter_bar_feed_in_feed_summary_off">Affichée dans les flux</string>
<string name="revanced_hide_filter_bar_feed_in_history_title">Masquer dans l\'historique</string>
<string name="revanced_hide_filter_bar_feed_in_history_summary_on">Masquée dans l\'historique</string>
<string name="revanced_hide_filter_bar_feed_in_history_summary_off">Affichée dans l\'historique</string>
<string name="revanced_hide_filter_bar_feed_in_search_title">Masquer dans les résultats de recherche</string>
<string name="revanced_hide_filter_bar_feed_in_search_summary_on">Masquée dans les résultats de recherche</string>
<string name="revanced_hide_filter_bar_feed_in_search_summary_off">Affichée dans les résultats de recherche</string>
<string name="revanced_hide_filter_bar_feed_in_related_videos_title">Masquer dans les vidéos similaires</string>
<string name="revanced_hide_filter_bar_feed_in_related_videos_summary_on">Masquée dans les vidéos similaires</string>
<string name="revanced_hide_filter_bar_feed_in_related_videos_summary_off">Affichée dans les vidéos similaires</string>
<string name="revanced_channel_screen_title">Page de la chaîne</string>
<string name="revanced_channel_screen_summary">Masquer ou afficher les composants de la page de la chaîne</string>
<!-- 'For You' should be translated using the same localized wording YouTube displays. -->
<string name="revanced_hide_for_you_shelf_title">Masquer l\'étagère \"Pour vous\"</string>
<string name="revanced_hide_for_you_shelf_summary_on">L\'étagère Pour vous est masquée</string>
<string name="revanced_hide_for_you_shelf_summary_off">L\'étagère Pour vous est affichée</string>
<string name="revanced_hide_links_preview_title">Masquer l\'aperçu des liens</string>
<string name="revanced_hide_links_preview_summary_on">L\'aperçu des liens est masqué</string>
<string name="revanced_hide_links_preview_summary_off">L\'aperçu des liens est affiché</string>
<string name="revanced_hide_members_shelf_title">Masquer l\'étagère des membres</string>
<string name="revanced_hide_members_shelf_summary_on">L\'étagère des membres est masquée</string>
<string name="revanced_hide_members_shelf_summary_off">L\'étagère des membres est affichée</string>
<!-- 'Visit Community' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_visit_community_button_title">Masquer le bouton \"Visiter la communauté\"</string>
<string name="revanced_hide_visit_community_button_summary_on">Le bouton \"Visiter la communauté\" est masqué</string>
<string name="revanced_hide_visit_community_button_summary_off">Le bouton Visiter la Communauté est affiché</string>
<!-- 'Visit store' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_visit_store_button_title">Masquer le bouton Visiter la boutique</string>
<string name="revanced_hide_visit_store_button_summary_on">Le bouton Visiter la boutique est masqué</string>
<string name="revanced_hide_visit_store_button_summary_off">Le bouton Visiter la boutique est affiché</string>
<string name="revanced_comments_screen_title">Commentaires</string>
<string name="revanced_comments_screen_summary">Masquez ou affichez des composants de la section commentaires</string>
<string name="revanced_hide_comments_ai_chat_summary_title">Masquer le résumé IA du chat</string>
@@ -303,24 +314,30 @@ Vous ne serez pas informé des événements inattendus."</string>
<string name="revanced_hide_comments_ai_summary_title">Masquer le résumé IA des commentaires</string>
<string name="revanced_hide_comments_ai_summary_summary_on">Le résumé des commentaires est masqué</string>
<string name="revanced_hide_comments_ai_summary_summary_off">Le résumé des commentaires est affiché</string>
<string name="revanced_hide_comments_channel_guidelines_title">Masquer les règles de la chaîne</string>
<string name="revanced_hide_comments_channel_guidelines_summary_on">Les règles de la chaîne sont masquées</string>
<string name="revanced_hide_comments_channel_guidelines_summary_off">Les règles de la chaîne sont affichées</string>
<string name="revanced_hide_comments_by_members_header_title">Masquer l\'en-tête \"Commentaires des membres\"</string>
<string name="revanced_hide_comments_by_members_header_summary_on">L\'en-tête \"Commentaires des membres\" est masqué</string>
<string name="revanced_hide_comments_by_members_header_summary_off">L\'en-tête \"Commentaires des membres\" est affiché</string>
<string name="revanced_hide_comments_section_title">Masquer la section Commentaires</string>
<string name="revanced_hide_comments_section_summary_on">La section Commentaires est masquée</string>
<string name="revanced_hide_comments_section_summary_off">La section Commentaires est affichée</string>
<string name="revanced_hide_comments_community_guidelines_title">Masquer les règles de la communauté</string>
<string name="revanced_hide_comments_community_guidelines_summary_on">Les règles de la communauté sont masquées</string>
<string name="revanced_hide_comments_community_guidelines_summary_off">Les règles de la communauté sont affichées</string>
<string name="revanced_hide_comments_create_a_short_button_title">Masquer le bouton Créer un Short</string>
<string name="revanced_hide_comments_create_a_short_button_summary_on">Le bouton \"Créer un Short\" est masqué</string>
<string name="revanced_hide_comments_create_a_short_button_summary_off">Le bouton \"Créer un Short\" est affiché</string>
<string name="revanced_hide_comments_timestamp_button_title">Masquer le bouton d\'horodatage</string>
<string name="revanced_hide_comments_timestamp_button_summary_on">Le bouton d\'horodatage est masqué</string>
<string name="revanced_hide_comments_timestamp_button_summary_off">Le bouton d\'horodatage est affiché</string>
<string name="revanced_hide_comments_preview_comment_title">Masquer le commentaire servant d\'aperçu</string>
<string name="revanced_hide_comments_preview_comment_summary_on">Le commentaire servant d\'aperçu est masqué</string>
<string name="revanced_hide_comments_preview_comment_summary_off">Le commentaire servant d\'aperçu est affiché</string>
<string name="revanced_hide_comments_thanks_button_title">Masquer le bouton Merci</string>
<string name="revanced_hide_comments_thanks_button_summary_on">Le bouton Merci est masqué</string>
<string name="revanced_hide_comments_thanks_button_summary_off">Le bouton Merci est affiché</string>
<string name="revanced_hide_comments_timestamp_button_title">Masquer le bouton d\'horodatage</string>
<string name="revanced_hide_comments_timestamp_button_summary_on">Le bouton d\'horodatage est masqué</string>
<string name="revanced_hide_comments_timestamp_button_summary_off">Le bouton d\'horodatage est affiché</string>
<!-- https://logos.fandom.com/wiki/YouTube/Yoodles -->
<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és</string>
@@ -374,44 +391,41 @@ Limitations
<string name="revanced_hide_keyword_toast_invalid_broad">Ce mot-clé va masquer toutes les vidéos : %s</string>
</patch>
<patch id="ad.general.hideAdsResourcePatch">
<string name="revanced_hide_general_ads_title">Masquer les annonces générales</string>
<string name="revanced_hide_general_ads_summary_on">Les annonces générales sont masquées</string>
<string name="revanced_hide_general_ads_summary_off">Les annonces générales sont affichées</string>
<string name="revanced_hide_creator_store_shelf_title">Masquer l\'étagère de la boutique du créateur</string>
<string name="revanced_hide_creator_store_shelf_summary_on">L\'étagère du magasin sous le lecteur vidéo est masquée</string>
<string name="revanced_hide_creator_store_shelf_summary_off">L\'étagère de la boutique sous le lecteur vidéo est affichée</string>
<string name="revanced_hide_end_screen_store_banner_title">Masquer l\'écran de fin de bannière de boutique</string>
<string name="revanced_hide_end_screen_store_banner_summary_on">La bannière de boutique est masquée</string>
<string name="revanced_hide_end_screen_store_banner_summary_off">La bannière de boutique est affichée</string>
<string name="revanced_hide_fullscreen_ads_title">Masquer les annonces plein écran</string>
<string name="revanced_hide_fullscreen_ads_summary_on">"Les annonces plein écran sont masquées
Cette fonctionnalité est disponible uniquement pour les appareils anciens"</string>
<string name="revanced_hide_fullscreen_ads_summary_off">Les annonces plein écran sont affichées</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 annonces plein écran ne fonctionne que sur les appareils anciens</string>
<string name="revanced_hide_general_ads_title">Masquer les annonces générales</string>
<string name="revanced_hide_general_ads_summary_on">Les annonces générales sont masquées</string>
<string name="revanced_hide_general_ads_summary_off">Les annonces générales sont affichées</string>
<string name="revanced_hide_merchandise_banners_title">Masquer les bannières Produits dérivés</string>
<string name="revanced_hide_merchandise_banners_summary_on">Les bannières Produits dérivés sont masquées</string>
<string name="revanced_hide_merchandise_banners_summary_off">Les bannières Produits dérivés sont affichées</string>
<string name="revanced_hide_paid_promotion_label_title">Masquer la bannière de promotion rémunérée</string>
<string name="revanced_hide_paid_promotion_label_summary_on">La bannière \"Inclut une promotion rémunérée\" est masquée</string>
<string name="revanced_hide_paid_promotion_label_summary_off">La bannière \"Inclut une promotion rémunérée\" est affichée</string>
<string name="revanced_hide_self_sponsor_ads_title">Masquer les cartes d\'autopromotion</string>
<string name="revanced_hide_self_sponsor_ads_summary_on">Les cartes d\'autopromotion sont masquées</string>
<string name="revanced_hide_self_sponsor_ads_summary_off">Les cartes d\'autopromotion sont affichées</string>
<string name="revanced_hide_products_banner_title">Masquer la bannière Afficher les produits</string>
<string name="revanced_hide_products_banner_summary_on">La bannière est masquée</string>
<string name="revanced_hide_products_banner_summary_off">La bannière est affichée</string>
<string name="revanced_hide_end_screen_store_banner_title">Masquer l\'écran de fin de bannière de boutique</string>
<string name="revanced_hide_end_screen_store_banner_summary_on">La bannière de boutique est masquée</string>
<string name="revanced_hide_end_screen_store_banner_summary_off">La bannière de boutique est affichée</string>
<string name="revanced_hide_player_store_shelf_title">Masquer l\'étagère Shopping dans le lecteur</string>
<string name="revanced_hide_player_store_shelf_summary_on">L\'étagère Shopping est masquée</string>
<string name="revanced_hide_player_store_shelf_summary_off">L\'étagère Shopping est affichée</string>
<string name="revanced_hide_shopping_links_title">Masquer les liens de shopping</string>
<string name="revanced_hide_shopping_links_summary_on">Les liens de shopping dans la description des vidéos sont masqués</string>
<string name="revanced_hide_shopping_links_summary_off">Les liens de shopping dans la description des vidéos sont affichés</string>
<!-- 'Visit store' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_visit_store_button_title">Masquer le bouton Visiter la boutique</string>
<string name="revanced_hide_visit_store_button_summary_on">Le bouton est masqué sur la page de chaîne</string>
<string name="revanced_hide_visit_store_button_summary_off">Le bouton est affiché sur la page de chaîne</string>
<string name="revanced_hide_shopping_links_title">Masquer les liens d\'achat</string>
<string name="revanced_hide_shopping_links_summary_on">Les liens dans la description de la vidéo sont masqués</string>
<string name="revanced_hide_shopping_links_summary_off">Les liens dans la description de la vidéo sont affichés</string>
<!-- 'View products' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_view_products_banner_title">Masquer la bannière \"Afficher les produits\"</string>
<string name="revanced_hide_view_products_banner_summary_on">La bannière dans l\'overlay de la vidéo est masquée</string>
<string name="revanced_hide_view_products_banner_summary_off">La bannière dans l\'overlay de la vidéo est affichée</string>
<string name="revanced_hide_web_search_results_title">Masquer les résultats Web</string>
<string name="revanced_hide_web_search_results_summary_on">Les résultats Web sont masqués</string>
<string name="revanced_hide_web_search_results_summary_off">Les résultats Web sont affichés</string>
<string name="revanced_hide_merchandise_banners_title">Masquer les bannières Produits dérivés</string>
<string name="revanced_hide_merchandise_banners_summary_on">Les bannières Produits dérivés sont masquées</string>
<string name="revanced_hide_merchandise_banners_summary_off">Les bannières Produits dérivés sont affichées</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 annonces plein écran ne fonctionne que sur les appareils anciens</string>
</patch>
<patch id="ad.getpremium.hideGetPremiumPatch">
<string name="revanced_hide_get_premium_title">Masquer les publicités pour YouTube Premium</string>
@@ -534,9 +548,9 @@ Réglez le volume en balayant verticalement sur le côté droit de l'écran"</st
<string name="revanced_hide_share_button_summary_on">Le bouton Partager est masqué</string>
<string name="revanced_hide_share_button_summary_off">Le bouton Partager est affiché</string>
<!-- 'Stop ads' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_stop_ads_button_title">Masquer l\'arrêt des publicités</string>
<string name="revanced_hide_stop_ads_button_summary_on">Le bouton Arrêter les publicités est masqué</string>
<string name="revanced_hide_stop_ads_button_summary_off">Le bouton Arrêter les publicités est affiché</string>
<string name="revanced_hide_stop_ads_button_title">Masquer \"Zéro annonce\"</string>
<string name="revanced_hide_stop_ads_button_summary_on">Le bouton Zéro annonce est masqué</string>
<string name="revanced_hide_stop_ads_button_summary_off">Le bouton Zéro annonce est affiché</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">Masquer \"Signaler\"</string>
@@ -564,7 +578,7 @@ Réglez le volume en balayant verticalement sur le côté droit de l'écran"</st
<string name="revanced_hide_clip_button_summary_on">Le bouton Clip est masqué</string>
<string name="revanced_hide_clip_button_summary_off">Le bouton Clip est affiché</string>
<!-- 'Save' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_save_button_title">Masquer Enregistrer</string>
<string name="revanced_hide_save_button_title">Masquer \"Enregistrer\"</string>
<string name="revanced_hide_save_button_summary_on">Le bouton Enregistrer est masqué</string>
<string name="revanced_hide_save_button_summary_off">Le bouton Enregistrer est affiché</string>
</patch>
@@ -773,6 +787,9 @@ Pour afficher le menu Piste audio, définissez \"Falsifier les flux vidéo\" sur
<string name="revanced_hide_shorts_upcoming_button_title">Masquer le bouton Diffusion prévue</string>
<string name="revanced_hide_shorts_upcoming_button_summary_on">Le bouton Diffusion prévue est masqué</string>
<string name="revanced_hide_shorts_upcoming_button_summary_off">Le bouton Diffusion prévue est affiché</string>
<string name="revanced_hide_shorts_effect_button_title">Masquer le bouton d\'effet</string>
<string name="revanced_hide_shorts_effect_button_summary_on">Le bouton d\'effet est masqué</string>
<string name="revanced_hide_shorts_effect_button_summary_off">Le bouton d\'effet est affiché</string>
<string name="revanced_hide_shorts_green_screen_button_title">Masquer le bouton Écran vert</string>
<string name="revanced_hide_shorts_green_screen_button_summary_on">Le bouton Écran vert est masqué</string>
<string name="revanced_hide_shorts_green_screen_button_summary_off">Le bouton Écran vert est affiché</string>
@@ -820,7 +837,7 @@ Pour afficher le menu Piste audio, définissez \"Falsifier les flux vidéo\" sur
<string name="revanced_hide_shorts_sound_metadata_label_title">Masquer le libellé des métadonnées audio</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 le libellé de lien vers la vidéo complète</string>
<string name="revanced_hide_shorts_full_video_link_label_title">Masquer le libellé du lien vidéo</string>
<string name="revanced_hide_shorts_full_video_link_label_summary_on">Le libellé de lien est masqué</string>
<string name="revanced_hide_shorts_full_video_link_label_summary_off">Le libellé de lien est affiché</string>
<string name="revanced_hide_shorts_sound_button_title">Masquer le bouton du son</string>
@@ -956,12 +973,26 @@ Cette fonctionnalité fonctionne de manière optimale avec une qualité vidéo d
<string name="revanced_sb_enable_auto_hide_skip_segment_button">Masquer automatiquement le bouton Passer</string>
<string name="revanced_sb_enable_auto_hide_skip_segment_button_sum_on">Le bouton Passer est masqué après quelques secondes</string>
<string name="revanced_sb_enable_auto_hide_skip_segment_button_sum_off">Le bouton Passer est affiché pendant toute la durée du segment</string>
<string name="revanced_sb_general_skiptoast">Afficher un message toast lorsqu\'un segment est passé</string>
<string name="revanced_sb_general_skiptoast_sum_on">Un message toast est affiché lorsqu\'un segment est passé automatiquement. Appuyez ici pour voir un exemple.</string>
<string name="revanced_sb_general_skiptoast_sum_off">Message toast non affiché. Appuyez ici pour voir un exemple.</string>
<string name="revanced_sb_auto_hide_skip_button_duration">Durée du bouton Passer</string>
<string name="revanced_sb_auto_hide_skip_button_duration_sum">Durée d\'affichage des boutons \"Passer\" et \"Passer au temps fort\" avant masquage automatique</string>
<string name="revanced_sb_general_skiptoast">Afficher le message toast d\'annulation de saut</string>
<string name="revanced_sb_general_skiptoast_sum_on">Un message toast est affiché lorsqu\'un segment est automatiquement passé. Appuyez dessus pour annuler le saut.</string>
<string name="revanced_sb_general_skiptoast_sum_off">Le message toast n\'est pas affiché</string>
<string name="revanced_sb_toast_on_skip_duration">Durée du message toast de saut</string>
<string name="revanced_sb_toast_on_skip_duration_sum">Durée d\'affichage du message toast d\'annulation de saut</string>
<string name="revanced_sb_duration_1s">1 seconde</string>
<string name="revanced_sb_duration_2s">2 secondes</string>
<string name="revanced_sb_duration_3s">3 secondes</string>
<string name="revanced_sb_duration_4s">4 secondes</string>
<string name="revanced_sb_duration_5s">5 secondes</string>
<string name="revanced_sb_duration_6s">6 secondes</string>
<string name="revanced_sb_duration_7s">7 secondes</string>
<string name="revanced_sb_duration_8s">8 secondes</string>
<string name="revanced_sb_duration_9s">9 secondes</string>
<string name="revanced_sb_duration_10s">10 secondes</string>
<string name="revanced_sb_general_time_without">Afficher la durée de la vidéo 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 totale de la vidéo</string>
<string name="revanced_sb_general_time_without_sum_off">Affichage de la durée totale de la vidéo</string>
<string name="revanced_sb_general_time_without_sum_on">La durée de la vidéo moins tous les segments est affichée sur la barre de progression</string>
<string name="revanced_sb_general_time_without_sum_off">La durée totale de la vidéo 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 segment</string>
<string name="revanced_sb_enable_create_segment_sum_on">Le bouton de création de segment est affiché</string>
@@ -1179,7 +1210,9 @@ Si désactivé ultérieurement, il est recommandé d'effacer les données de l'a
<string name="revanced_change_start_page_entry_music">Musique</string>
<string name="revanced_change_start_page_entry_news">Actualités</string>
<string name="revanced_change_start_page_entry_notifications">Notifications</string>
<string name="revanced_change_start_page_entry_playlists">Playlists</string>
<string name="revanced_change_start_page_entry_search">Recherche</string>
<string name="revanced_change_start_page_entry_shopping">Shopping</string>
<string name="revanced_change_start_page_entry_sports">Sport</string>
<string name="revanced_change_start_page_entry_subscriptions">Abonnements</string>
<string name="revanced_change_start_page_entry_trending">Tendances</string>
@@ -1262,9 +1295,9 @@ Le lecteur réduit peut être déplacé hors de l'écran, à gauche comme à dro
<string name="revanced_gradient_loading_screen_title">Activer le dégradé sur l\'écran de chargement</string>
<string name="revanced_gradient_loading_screen_summary_on">Le fond de l\'écran de chargement sera un dégradé de couleurs</string>
<string name="revanced_gradient_loading_screen_summary_off">Le fond de l\'écran de chargement sera une couleur unie</string>
<string name="splash_screen_animation_style_title">Style de l\'écran de lancement</string>
<string name="splash_screen_animation_style_entry_1">Couleur </string>
<string name="splash_screen_animation_style_entry_2">Noir et blanc</string>
<string name="revanced_splash_screen_animation_style_title">Style de l\'écran de lancement</string>
<string name="revanced_splash_screen_animation_style_entry_1">Couleur </string>
<string name="revanced_splash_screen_animation_style_entry_2">Noir et blanc</string>
<string name="revanced_seekbar_custom_color_title">Personnaliser la couleur de la barre de progression</string>
<string name="revanced_seekbar_custom_color_summary_on">La couleur de la barre de progression est personnalisée</string>
<string name="revanced_seekbar_custom_color_summary_off">La couleur originale de la barre de progression est affichée</string>
@@ -1406,6 +1439,7 @@ Activer cette option peut déverrouiller des qualités vidéo supérieures"</str
<string name="revanced_remember_shorts_quality_last_selected_summary_off">Les changements de qualité s\'appliquent uniquement au Short actuel</string>
<string name="revanced_shorts_quality_default_wifi_title">Qualité par défaut des Shorts sur les réseaux Wi-Fi</string>
<string name="revanced_shorts_quality_default_mobile_title">Qualité par défaut des Shorts 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">Nouvelle qualité %1$s par défaut : %2$s</string>
<string name="revanced_remember_video_quality_toast_shorts">Nouvelle qualité %1$s des Shorts par défaut : %2$s</string>
@@ -1527,6 +1561,7 @@ AVC a une résolution maximale de 1080p et ne prend pas en charge le codec audio
<string name="revanced_about_summary">À propos de ReVanced</string>
<string name="revanced_ads_screen_title">Annonces</string>
<string name="revanced_ads_screen_summary">Paramètres de blocage des annonces</string>
<string name="revanced_chat_screen_title">Chat</string>
<string name="revanced_chat_screen_summary">Paramètres du chat</string>
<string name="revanced_misc_screen_title">Divers</string>
<string name="revanced_misc_screen_summary">Paramètres divers</string>

View File

@@ -156,22 +156,19 @@ Ní chuirfear ar an eolas thú faoi aon imeachtaí gan choinne."</string>
<string name="revanced_hide_channel_watermark_summary_on">Tá comhartha uisce i bhfolach</string>
<string name="revanced_hide_channel_watermark_summary_off">Taispeántar comhartha uisce</string>
<string name="revanced_hide_horizontal_shelves_title">Folaigh seilfeanna cothromán</string>
<string name="revanced_hide_horizontal_shelves_summary_on">"Tá seilfeanna folaithe mar shampla:
• Nuacht bhriste
<string name="revanced_hide_horizontal_shelves_summary_on">"Tá seilfeanna i bhfolach, mar shampla:
• Nuacht úrnua
• Lean ar aghaidh ag féachaint
Tuilleadh cainéal a iniúchadh
Déan iniúchadh ar níos mó cainéal
• An ceann is ábhartha
• Siopadóireacht
• Féach arís é"</string>
• Féach air arís"</string>
<string name="revanced_hide_horizontal_shelves_summary_off">Taispeántar seilfeanna</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">Folaigh cnaipe Ballraíochta</string>
<string name="revanced_hide_join_membership_button_summary_on">Tá an cnaipe i bhfolach</string>
<string name="revanced_hide_join_membership_button_summary_off">Taispeántar an cnaipe</string>
<!-- 'For you' should be translated using the same localized wording YouTube displays. -->
<string name="revanced_hide_for_you_shelf_title">Folaigh seilf \'Duit\'</string>
<string name="revanced_hide_for_you_shelf_summary_on">Tá seilf i leathanach an chainéil i bhfolach</string>
<string name="revanced_hide_for_you_shelf_summary_off">Taispeántar seilf i leathanach an chainéil</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">Folaigh cnaipe \'Cuir in iúl dom\'</string>
@@ -192,15 +189,12 @@ Ní chuirfear ar an eolas thú faoi aon imeachtaí gan choinne."</string>
<string name="revanced_hide_timed_reactions_title">Folaigh frithghníomhartha ama</string>
<string name="revanced_hide_timed_reactions_summary_on">Tá frithghníomhartha ama i bhfolach</string>
<string name="revanced_hide_timed_reactions_summary_off">Taispeántar frithghníomhartha ama</string>
<string name="revanced_hide_channel_guidelines_title">Folaigh treoirlínte cainéal</string>
<string name="revanced_hide_channel_guidelines_summary_on">Tá treoirlínte cainéal i bhfolach</string>
<string name="revanced_hide_channel_guidelines_summary_off">Taispeántar treoirlínte cainéal</string>
<string name="revanced_hide_chips_shelf_title">Folaigh an seilf scagairí </string>
<string name="revanced_hide_chips_shelf_summary_on">Tá seilf scagairí i bhfolach</string>
<string name="revanced_hide_chips_shelf_summary_off">Taispeántar seilf scagairí</string>
<string name="revanced_hide_expandable_chip_title">Folaigh cártaí inmhéadaithe faoi fhíseáin</string>
<string name="revanced_hide_expandable_chip_summary_on">Tá cárta inscálaithe i bhfolach</string>
<string name="revanced_hide_expandable_chip_summary_off">Taispeántar cárta inscálaithe</string>
<string name="revanced_hide_expandable_chip_title">Folaigh cárta insínte</string>
<string name="revanced_hide_expandable_chip_summary_on">Tá cárta insínte faoi fhíseáin i bhfolach</string>
<string name="revanced_hide_expandable_chip_summary_off">Tá cárta insínte faoi fhíseáin le feiceáil</string>
<string name="revanced_hide_community_posts_title">Folaigh postálacha pobail</string>
<string name="revanced_hide_community_posts_summary_on">Tá postálacha pobail i bhfolach</string>
<string name="revanced_hide_community_posts_summary_off">Taispeántar postálacha pobail</string>
@@ -213,15 +207,9 @@ Ní chuirfear ar an eolas thú faoi aon imeachtaí gan choinne."</string>
<string name="revanced_hide_feed_survey_title">Folaigh suirbhéanna na fotha</string>
<string name="revanced_hide_feed_survey_summary_on">Tá suirbhéanna fotha i bhfolach</string>
<string name="revanced_hide_feed_survey_summary_off">Taispeántar suirbhéanna fotha</string>
<string name="revanced_hide_community_guidelines_title">Folaigh treoirlínte pobail</string>
<string name="revanced_hide_community_guidelines_summary_on">Tá treoirlínte pobail i bhfolach</string>
<string name="revanced_hide_community_guidelines_summary_off">Taispeántar treoirlínte pobail</string>
<string name="revanced_hide_subscribers_community_guidelines_title">Folaigh treoirlínte síntiúsóirí</string>
<string name="revanced_hide_subscribers_community_guidelines_summary_on">Tá treoirlínte pobail síntiúsóirí i bhfolach</string>
<string name="revanced_hide_subscribers_community_guidelines_summary_off">Taispeántar treoirlínte pobail do shíntiúsóirí</string>
<string name="revanced_hide_channel_member_shelf_title">Folaigh seilf ball cainéil</string>
<string name="revanced_hide_channel_member_shelf_summary_on">Tá seilf ball chainéil i bhfolach</string>
<string name="revanced_hide_channel_member_shelf_summary_off">Taispeántar seilf ball chainéil</string>
<string name="revanced_hide_emergency_box_title">Folaigh boscaí éigeandála</string>
<string name="revanced_hide_emergency_box_summary_on">Tá bosca éigeandála i bhfolach</string>
<string name="revanced_hide_emergency_box_summary_off">Taispeántar boscaí éigeandála</string>
@@ -237,18 +225,18 @@ Ní chuirfear ar an eolas thú faoi aon imeachtaí gan choinne."</string>
<string name="revanced_hide_playables_title">Folaigh na heilimintí inseinnte</string>
<string name="revanced_hide_playables_summary_on">Tá na heilimintí inseinnte i bhfolach</string>
<string name="revanced_hide_playables_summary_off">Taispeántar na heilimintí inseinnte</string>
<string name="revanced_hide_quick_actions_title">Folaigh gníomhartha gasta i lánscáileán</string>
<string name="revanced_hide_quick_actions_summary_on">Tá gníomhartha gasta i bhfolach</string>
<string name="revanced_hide_quick_actions_summary_off">Taispeántar gníomhartha tapa</string>
<string name="revanced_hide_related_videos_title">Folaigh físeáin gaolmhara i ngníomhartha</string>
<string name="revanced_hide_related_videos_summary_on">Tá físeáin ghaolmhara i bhfolach</string>
<string name="revanced_hide_related_videos_summary_off">Taispeántar físeáin gaolmhara</string>
<string name="revanced_hide_image_shelf_title">Folaigh seilf íomhá sna torthaí cuardaigh</string>
<string name="revanced_hide_image_shelf_summary_on">Tá seilf íomhá i bhfolach</string>
<string name="revanced_hide_image_shelf_summary_off">Taispeántar seilf íomhá</string>
<string name="revanced_hide_latest_posts_ads_title">Folaigh na postanna is déanaí</string>
<string name="revanced_hide_latest_posts_ads_summary_on">Tá postanna is déanaí i bhfolach</string>
<string name="revanced_hide_latest_posts_ads_summary_off">Taispeántar na postálacha is déanaí</string>
<string name="revanced_hide_quick_actions_title">Folaigh gníomhartha tapa</string>
<string name="revanced_hide_quick_actions_summary_on">Tá gníomhartha tapa sa scáileán iomlán i bhfolach</string>
<string name="revanced_hide_quick_actions_summary_off">Tá gníomhartha tapa sa scáileán iomlán le feiceáil</string>
<string name="revanced_hide_related_videos_title">Folaigh físeáin ghaolmhara</string>
<string name="revanced_hide_related_videos_summary_on">Tá físeáin ghaolmhara i ngníomhartha tapa i bhfolach</string>
<string name="revanced_hide_related_videos_summary_off">Tá físeáin ghaolmhara i ngníomhartha tapa le feiceáil</string>
<string name="revanced_hide_image_shelf_title">Folaigh seilf íomhá</string>
<string name="revanced_hide_image_shelf_summary_on">Tá seilf íomhá i dtorthaí cuardaigh i bhfolach</string>
<string name="revanced_hide_image_shelf_summary_off">Tá seilf íomhá i dtorthaí cuardaigh le feiceáil</string>
<string name="revanced_hide_latest_posts_title">Folaigh na postanna is déanaí</string>
<string name="revanced_hide_latest_posts_summary_on">Tá postanna is déanaí i bhfolach</string>
<string name="revanced_hide_latest_posts_summary_off">Taispeántar na postálacha is déanaí</string>
<string name="revanced_hide_mix_playlists_title">Folaigh seinmliostaí meascán</string>
<string name="revanced_hide_mix_playlists_summary_on">Tá seinmliostaí measctha i bhfolach</string>
<string name="revanced_hide_mix_playlists_summary_off">Taispeántar seinmliostaí measctha</string>
@@ -285,16 +273,39 @@ Ní chuirfear ar an eolas thú faoi aon imeachtaí gan choinne."</string>
<string name="revanced_hide_description_components_screen_title">Cur síos físeán</string>
<string name="revanced_hide_description_components_screen_summary">Folaigh nó taispeáint comhpháirteanna tuairisc</string>
<string name="revanced_hide_filter_bar_screen_title">Barra scagaire</string>
<string name="revanced_hide_filter_bar_screen_summary">Folaigh nó taispeáin an barra scagaire sa sruth, torthaí cuardaigh agus físeáin ghaolmhara</string>
<string name="revanced_hide_filter_bar_feed_in_feed_title">Folaigh i mbeatha</string>
<string name="revanced_hide_filter_bar_feed_in_feed_summary_on">I bhfolach i mbeatha</string>
<string name="revanced_hide_filter_bar_feed_in_feed_summary_off">Taispeántar i mbeatha</string>
<string name="revanced_hide_filter_bar_screen_summary">Folaigh nó taispeáin an barra scagaire sna fothaí, stair, torthaí cuardaigh, agus físeáin ghaolmhara</string>
<string name="revanced_hide_filter_bar_feed_in_feed_title">Folaigh i bhfothaí</string>
<string name="revanced_hide_filter_bar_feed_in_feed_summary_on">I bhfolach i bhfothaí</string>
<string name="revanced_hide_filter_bar_feed_in_feed_summary_off">Taispeánta i bhfothaí</string>
<string name="revanced_hide_filter_bar_feed_in_history_title">Folaigh sa stair</string>
<string name="revanced_hide_filter_bar_feed_in_history_summary_on">I bhfolach sa stair</string>
<string name="revanced_hide_filter_bar_feed_in_history_summary_off">Taispeánta sa stair</string>
<string name="revanced_hide_filter_bar_feed_in_search_title">Folaigh i dtorthaí cuardaigh</string>
<string name="revanced_hide_filter_bar_feed_in_search_summary_on">Folaigh i dtorthaí cuardaigh</string>
<string name="revanced_hide_filter_bar_feed_in_search_summary_off">Taispeáin i dtorthaí cuardaigh</string>
<string name="revanced_hide_filter_bar_feed_in_related_videos_title">Folaigh i bhfíseáin gaolmhara</string>
<string name="revanced_hide_filter_bar_feed_in_related_videos_summary_on">I bhfolach i bhfíseáin ghaolmhara</string>
<string name="revanced_hide_filter_bar_feed_in_related_videos_summary_off">Taispeántar i bhfíseáin ghaolmhara</string>
<string name="revanced_channel_screen_title">Leathanach cainéil</string>
<string name="revanced_channel_screen_summary">Folaigh nó taispeáin comhpháirteanna leathanach cainéil</string>
<!-- 'For You' should be translated using the same localized wording YouTube displays. -->
<string name="revanced_hide_for_you_shelf_title">Folaigh seilf \'Duit\'</string>
<string name="revanced_hide_for_you_shelf_summary_on">Tá seilf \'Maidir Leat\' i bhfolach</string>
<string name="revanced_hide_for_you_shelf_summary_off">Tá seilf \'Maidir Leat\' le feiceáil</string>
<string name="revanced_hide_links_preview_title">Folaigh réamhamharc ar naisc</string>
<string name="revanced_hide_links_preview_summary_on">Tá réamhamharc ar naisc i bhfolach</string>
<string name="revanced_hide_links_preview_summary_off">Tá réamhamharc ar naisc le feiceáil</string>
<string name="revanced_hide_members_shelf_title">Folaigh seilf na mball</string>
<string name="revanced_hide_members_shelf_summary_on">Tá seilf na mball i bhfolach</string>
<string name="revanced_hide_members_shelf_summary_off">Taispeántar seilf na gcomhaltaí</string>
<!-- 'Visit Community' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_visit_community_button_title">Folaigh cnaipe \"Tabhair cuairt ar an gComhphobal\"</string>
<string name="revanced_hide_visit_community_button_summary_on">Tá cnaipe \"Tabhair cuairt ar an gComhphobal\" i bhfolach</string>
<string name="revanced_hide_visit_community_button_summary_off">Tá cnaipe \'Tabhair Cuairt ar an bPobal\' le feiceáil</string>
<!-- 'Visit store' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_visit_store_button_title">Folaigh an cnaipe \'Tabhair cuairt ar an siopa\' ar leathanaigh chainéil</string>
<string name="revanced_hide_visit_store_button_summary_on">Tá cnaipe \'Tabhair Cuairt ar an Siopa\' i bhfolach</string>
<string name="revanced_hide_visit_store_button_summary_off">Tá cnaipe \'Tabhair Cuairt ar an Siopa\' le feiceáil</string>
<string name="revanced_comments_screen_title">Tráchtanna</string>
<string name="revanced_comments_screen_summary">Folaigh nó taispeáin comhpháirteanna na rannóige tráchtanna</string>
<string name="revanced_hide_comments_ai_chat_summary_title">Folaigh achoimre Comhrá AI</string>
@@ -303,24 +314,30 @@ Ní chuirfear ar an eolas thú faoi aon imeachtaí gan choinne."</string>
<string name="revanced_hide_comments_ai_summary_title">Folaigh achoimre Tuairimí AI</string>
<string name="revanced_hide_comments_ai_summary_summary_on">Tá achoimre tuairimí i bhfolach</string>
<string name="revanced_hide_comments_ai_summary_summary_off">Taispeántar achoimre tuairimí</string>
<string name="revanced_hide_comments_channel_guidelines_title">Folaigh treoirlínte an chainéil</string>
<string name="revanced_hide_comments_channel_guidelines_summary_on">Tá treoirlínte an chainéil i bhfolach</string>
<string name="revanced_hide_comments_channel_guidelines_summary_off">Taispeántar treoirlínte an chainéil</string>
<string name="revanced_hide_comments_by_members_header_title">Folaigh ceanntásc \'Tuairimí ag baill \'</string>
<string name="revanced_hide_comments_by_members_header_summary_on">Tá ceanntásc na dtuairimí ó chomhaltaí i bhfolach</string>
<string name="revanced_hide_comments_by_members_header_summary_off">Taispeántar ceanntásc na dtuairimí ó chomhaltaí</string>
<string name="revanced_hide_comments_section_title">Folaigh roinn tuairimí</string>
<string name="revanced_hide_comments_section_summary_on">Tá an chuid tuairimí i bhfolach</string>
<string name="revanced_hide_comments_section_summary_off">Taispeántar an chuid tuairimí</string>
<string name="revanced_hide_comments_community_guidelines_title">Folaigh treoirlínte an chomhphobail</string>
<string name="revanced_hide_comments_community_guidelines_summary_on">Tá treoirlínte an phobail i bhfolach</string>
<string name="revanced_hide_comments_community_guidelines_summary_off">Tá treoirlínte an phobail le feiceáil</string>
<string name="revanced_hide_comments_create_a_short_button_title">Folaigh an cnaipe \'Cruthaigh Short\'</string>
<string name="revanced_hide_comments_create_a_short_button_summary_on">Tá cnaipe Cruthaigh gearrscéal i bhfolach</string>
<string name="revanced_hide_comments_create_a_short_button_summary_off">Taispeántar cnaipe Cruthaigh gearrscéal</string>
<string name="revanced_hide_comments_timestamp_button_title">Folaigh cnaipe an stampa ama</string>
<string name="revanced_hide_comments_timestamp_button_summary_on">Tá cnaipe an stampa ama i bhfolach</string>
<string name="revanced_hide_comments_timestamp_button_summary_off">Taispeántar cnaipe an stampa ama</string>
<string name="revanced_hide_comments_preview_comment_title">Folaigh trácht réamhamharc</string>
<string name="revanced_hide_comments_preview_comment_summary_on">Tá trácht réamhamhar i bhfolach</string>
<string name="revanced_hide_comments_preview_comment_summary_off">Taispeántar trácht réamhamharc</string>
<string name="revanced_hide_comments_thanks_button_title">Folaigh cnaipe Buíochas</string>
<string name="revanced_hide_comments_thanks_button_summary_on">Tá cnaipe buíochas i bhfolach</string>
<string name="revanced_hide_comments_thanks_button_summary_off">Taispeántar cnaipe buíochas</string>
<string name="revanced_hide_comments_timestamp_button_title">Folaigh cnaipe Stampa Ama</string>
<string name="revanced_hide_comments_timestamp_button_summary_on">Tá cnaipe an stampa ama i bhfolach</string>
<string name="revanced_hide_comments_timestamp_button_summary_off">Taispeántar cnaipe an stampa ama</string>
<!-- https://logos.fandom.com/wiki/YouTube/Yoodles -->
<string name="revanced_hide_doodles_title">Folaigh YouTube Doodles</string>
<string name="revanced_hide_doodles_summary_on">Barra cuardaigh Tá Doodles i bhfolach</string>
@@ -374,44 +391,41 @@ Teorainneacha
<string name="revanced_hide_keyword_toast_invalid_broad">Folaigh eochairfhocal gach físeán: %s</string>
</patch>
<patch id="ad.general.hideAdsResourcePatch">
<string name="revanced_hide_general_ads_title">Folaigh fógraí ginearálta</string>
<string name="revanced_hide_general_ads_summary_on">Tá fógraí ginearálta i bhfolach</string>
<string name="revanced_hide_general_ads_summary_off">Taispeántar fógraí ginearálta</string>
<string name="revanced_hide_creator_store_shelf_title">Folaigh seilf siopa an chruthaitheora</string>
<string name="revanced_hide_creator_store_shelf_summary_on">Tá seilf an tsiopa faoi imreoir físeáin i bhfolach</string>
<string name="revanced_hide_creator_store_shelf_summary_off">Tá seilf siopa faoin imreoir físeáin le feiceáil</string>
<string name="revanced_hide_end_screen_store_banner_title">Folaigh brat bhranda siopa scáileáin deiridh</string>
<string name="revanced_hide_end_screen_store_banner_summary_on">Tá an bhratach Siopa i bhfolach</string>
<string name="revanced_hide_end_screen_store_banner_summary_off">Taispeántar an bhratach Siopa</string>
<string name="revanced_hide_fullscreen_ads_title">Folaigh fógraí lánscáileáin</string>
<string name="revanced_hide_fullscreen_ads_summary_on">"Tá fógraí lána scáileáin i bhfolach
Níl an ghné seo ar fáil ach do ghléasanna níos sine"</string>
<string name="revanced_hide_fullscreen_ads_summary_off">Taispeántar fógraí lánscáileáin</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">Ní oibríonn folaigh fógraí lánscáileáin ach le gléasanna níos sine</string>
<string name="revanced_hide_general_ads_title">Folaigh fógraí ginearálta</string>
<string name="revanced_hide_general_ads_summary_on">Tá fógraí ginearálta i bhfolach</string>
<string name="revanced_hide_general_ads_summary_off">Taispeántar fógraí ginearálta</string>
<string name="revanced_hide_merchandise_banners_title">Folaigh meirgí marsantais</string>
<string name="revanced_hide_merchandise_banners_summary_on">Tá meirgí marsantais i bhfolach</string>
<string name="revanced_hide_merchandise_banners_summary_off">Taispeántar meirgí marsantais</string>
<string name="revanced_hide_paid_promotion_label_title">Folaigh lipéad chun cinn íoctha</string>
<string name="revanced_hide_paid_promotion_label_summary_on">Tá an lipéad promóisin íoctha i bhfolach</string>
<string name="revanced_hide_paid_promotion_label_summary_off">Taispeántar lipéad promóisin íoctha</string>
<string name="revanced_hide_self_sponsor_ads_title">Folaigh cártaí féin-urraithe</string>
<string name="revanced_hide_self_sponsor_ads_summary_on">Tá cártaí féin-urraithe i bhfolach</string>
<string name="revanced_hide_self_sponsor_ads_summary_off">Taispeántar cártaí féin-urraithe</string>
<string name="revanced_hide_products_banner_title">Folaigh an bhratach \'Féach ar tháirgí\'</string>
<string name="revanced_hide_products_banner_summary_on">bratach i bhfolach</string>
<string name="revanced_hide_products_banner_summary_off">Taispeántar an bhratach</string>
<string name="revanced_hide_end_screen_store_banner_title">Folaigh brat bhranda siopa scáileáin deiridh</string>
<string name="revanced_hide_end_screen_store_banner_summary_on">Tá an bhratach Siopa i bhfolach</string>
<string name="revanced_hide_end_screen_store_banner_summary_off">Taispeántar an bhratach Siopa</string>
<string name="revanced_hide_player_store_shelf_title">Folaigh seilf siopadóireachta an t-imreoir</string>
<string name="revanced_hide_player_store_shelf_summary_on">Tá seilf siopadóireachta i bhfolach</string>
<string name="revanced_hide_player_store_shelf_summary_off">Taispeántar seilf siopadóireachta</string>
<string name="revanced_hide_shopping_links_title">Folaigh naisc siopadóireachta sa chur síos físeáin</string>
<string name="revanced_hide_shopping_links_summary_on">Tá naisc siopadóireachta i dtuairisc an fhíseáin i bhfolach</string>
<string name="revanced_hide_shopping_links_summary_off">Taispeántar naisc siopadóireachta i dtuairisc an fhíseáin</string>
<!-- 'Visit store' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_visit_store_button_title">Folaigh an cnaipe \'Tabhair cuairt ar an siopa\' ar leathanaigh chainéil</string>
<string name="revanced_hide_visit_store_button_summary_on">Tá cnaipe i leathanach an chainéil i bhfolach</string>
<string name="revanced_hide_visit_store_button_summary_off">Taispeántar cnaipe i leathanach an chainéil</string>
<string name="revanced_hide_shopping_links_title">Folaigh naisc siopadóireachta</string>
<string name="revanced_hide_shopping_links_summary_on">naisc i gcur síos an fhíseáin i bhfolach</string>
<string name="revanced_hide_shopping_links_summary_off">Tá naisc i gcur síos an fhíseáin le feiceáil</string>
<!-- 'View products' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_view_products_banner_title">Folaigh an meirge \'Féach ar tháirgí\'</string>
<string name="revanced_hide_view_products_banner_summary_on">Tá meirge i bhforleagan físeáin folaithe</string>
<string name="revanced_hide_view_products_banner_summary_off">Taispeántar meirge san fhorleagan físeáin</string>
<string name="revanced_hide_web_search_results_title">Folaigh torthaí cuardaigh gréasáin</string>
<string name="revanced_hide_web_search_results_summary_on">Tá torthaí cuardaigh gréasáin i bhfolach</string>
<string name="revanced_hide_web_search_results_summary_off">Taispeántar torthaí cuardaigh gréasáin</string>
<string name="revanced_hide_merchandise_banners_title">Folaigh meirgí marsantais</string>
<string name="revanced_hide_merchandise_banners_summary_on">Tá meirgí marsantais i bhfolach</string>
<string name="revanced_hide_merchandise_banners_summary_off">Taispeántar meirgí marsantais</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">Ní oibríonn folaigh fógraí lánscáileáin ach le gléasanna níos sine</string>
</patch>
<patch id="ad.getpremium.hideGetPremiumPatch">
<string name="revanced_hide_get_premium_title">Folaigh cur chun cinn Préimhe YouTube</string>
@@ -773,6 +787,9 @@ Chun roghchlár na rian fuaime a thaispeáint, athraigh 'Srutháin físeáin bhr
<string name="revanced_hide_shorts_upcoming_button_title">Folaigh cnaipe \'Le teacht\'</string>
<string name="revanced_hide_shorts_upcoming_button_summary_on">Tá cnaipe atá le teacht i bhfolach</string>
<string name="revanced_hide_shorts_upcoming_button_summary_off">Taispeántar an cnaipe atá le teacht</string>
<string name="revanced_hide_shorts_effect_button_title">Folaigh cnaipe éifeachta</string>
<string name="revanced_hide_shorts_effect_button_summary_on">Tá an cnaipe Éifeacht i bhfolach</string>
<string name="revanced_hide_shorts_effect_button_summary_off">Tá an cnaipe Éifeacht taispeánta</string>
<string name="revanced_hide_shorts_green_screen_button_title">Folaigh cnaipe \'Scáileán glas\'</string>
<string name="revanced_hide_shorts_green_screen_button_summary_on">Tá cnaipe an scáileáin glas i bhfolach</string>
<string name="revanced_hide_shorts_green_screen_button_summary_off">Taispeántar cnaipe an scáileáin glas</string>
@@ -820,7 +837,7 @@ Chun roghchlár na rian fuaime a thaispeáint, athraigh 'Srutháin físeáin bhr
<string name="revanced_hide_shorts_sound_metadata_label_title">Folaigh lipéad meiteashonraí fuaime</string>
<string name="revanced_hide_shorts_sound_metadata_label_summary_on">Tá lipéad meiteashonraí folach</string>
<string name="revanced_hide_shorts_sound_metadata_label_summary_off">Léirítear lipéad meiteashonraí</string>
<string name="revanced_hide_shorts_full_video_link_label_title">Folaigh lipéad nasc físe iomlán</string>
<string name="revanced_hide_shorts_full_video_link_label_title">Folaigh lipéad nasc físeáin</string>
<string name="revanced_hide_shorts_full_video_link_label_summary_on">Tá lipéad nasc físe i bhfolach</string>
<string name="revanced_hide_shorts_full_video_link_label_summary_off">Taispeántar lipéad nasc físe</string>
<string name="revanced_hide_shorts_sound_button_title">Folaigh an cnaipe fuaime</string>
@@ -954,11 +971,25 @@ Oibríonn an ghné seo is fearr le caighdeán físeáin 720p nó níos ísle agu
<string name="revanced_sb_enable_auto_hide_skip_segment_button">Folaigh cnaipe Scipeála go huathoibríoch</string>
<string name="revanced_sb_enable_auto_hide_skip_segment_button_sum_on">Folaíonn cnaipe scipeáil tar éis cúpla soicindí</string>
<string name="revanced_sb_enable_auto_hide_skip_segment_button_sum_off">Taispeántar cnaipe Scipeála don deighleog iomlán</string>
<string name="revanced_sb_general_skiptoast">Taispeáin tósta agus tú ag scipeáil</string>
<string name="revanced_sb_general_skiptoast_sum_on">Taispeántar tósta nuair a scipeántar deighleog go huathoibríoch. Tapáil anseo chun sampla a fheiceáil</string>
<string name="revanced_sb_general_skiptoast_sum_off">Ní thaispeántar tósta. Tapáil anseo chun sampla a fheiceáil</string>
<string name="revanced_sb_auto_hide_skip_button_duration">Fad an chnaipe scipeála</string>
<string name="revanced_sb_auto_hide_skip_button_duration_sum">Cá fhad chun na cnaipí scipeála agus scipeála go dtí an aibhsigh a thaispeáint sula bhfolóidh siad go huathoibríoch</string>
<string name="revanced_sb_general_skiptoast">Taispeáin teast cealaigh scipeála</string>
<string name="revanced_sb_general_skiptoast_sum_on">Taispeántar teast nuair a scipeáiltear deighleog go huathoibríoch. Tapáil an fógra teast chun an scipeáil a chealú</string>
<string name="revanced_sb_general_skiptoast_sum_off">Ní thaispeántar an tóstas</string>
<string name="revanced_sb_toast_on_skip_duration">Fad an tóstais scipeála</string>
<string name="revanced_sb_toast_on_skip_duration_sum">Cá fhad chun an fógra dísciption a thaispeáint</string>
<string name="revanced_sb_duration_1s">1 soicind</string>
<string name="revanced_sb_duration_2s">2 soicind</string>
<string name="revanced_sb_duration_3s">3 soicind</string>
<string name="revanced_sb_duration_4s">4 soicind</string>
<string name="revanced_sb_duration_5s">5 soicind</string>
<string name="revanced_sb_duration_6s">6 soicind</string>
<string name="revanced_sb_duration_7s">7 soicindí</string>
<string name="revanced_sb_duration_8s">8 soicindí</string>
<string name="revanced_sb_duration_9s">9 soicindí</string>
<string name="revanced_sb_duration_10s">10 soicindí</string>
<string name="revanced_sb_general_time_without">Taispeáin fad físeáin gan codanna</string>
<string name="revanced_sb_general_time_without_sum_on">Fad físeáin lúide gach mír, léirithe i lúibíní in aice le fad iomlán an fhíse</string>
<string name="revanced_sb_general_time_without_sum_on">Taispeántar fad an fhíseáin lúide na deighleoga uile ar an mbarra cuardaigh</string>
<string name="revanced_sb_general_time_without_sum_off">Taispeántar fad físe iomlán</string>
<string name="revanced_sb_create_segment_category">Deighleoga nua a chruthú</string>
<string name="revanced_sb_enable_create_segment">Taispeáin cnaipe Cruthaigh deighleog nua</string>
@@ -1263,9 +1294,9 @@ Is féidir an mhion-imreoir a tharraingt as an scáileán ar chlé nó ar dheis"
<string name="revanced_gradient_loading_screen_title">Cumasaigh scáileán luchtaithe</string>
<string name="revanced_gradient_loading_screen_summary_on">Beidh cúlra grádáin ag an scáileán lódála</string>
<string name="revanced_gradient_loading_screen_summary_off">Beidh cúlra láidir ag scáileán luchtaithe</string>
<string name="splash_screen_animation_style_title">Stíl scáileáin splancais</string>
<string name="splash_screen_animation_style_entry_1">Dath</string>
<string name="splash_screen_animation_style_entry_2">Dubh agus bán</string>
<string name="revanced_splash_screen_animation_style_title">Stíl scáileáin splancais</string>
<string name="revanced_splash_screen_animation_style_entry_1">Dath</string>
<string name="revanced_splash_screen_animation_style_entry_2">Dubh agus bán</string>
<string name="revanced_seekbar_custom_color_title">Cumasaigh dath barra cuardaigh saincheaptha</string>
<string name="revanced_seekbar_custom_color_summary_on">Taispeántar dath barra cuardaigh saincheaptha</string>
<string name="revanced_seekbar_custom_color_summary_off">Taispeántar dath barr cuardaigh bunaidh</string>

View File

@@ -41,12 +41,14 @@ Second \"item\" text"</string>
<patch id="layout.hide.general.hideLayoutComponentsPatch">
<!-- 'Join' should be translated using the same localized wording YouTube displays.
This appears in the video player for certain videos. -->
<!-- 'For you' should be translated using the same localized wording YouTube displays. -->
<!-- '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. -->
<!-- 'People also watched' and 'You might also like' should be translated using the same localized wording YouTube displays. -->
<!-- 'Show more' should be translated with the same localized wording that YouTube displays.
This button usually appears when searching for a YT creator. -->
<!-- 'For You' should be translated using the same localized wording YouTube displays. -->
<!-- 'Visit Community' should be translated with the same localized wording that YouTube displays. -->
<!-- 'Visit store' should be translated with the same localized wording that YouTube displays. -->
<!-- https://logos.fandom.com/wiki/YouTube/Yoodles -->
<!-- '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. -->
<!-- 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.
@@ -55,8 +57,8 @@ Second \"item\" text"</string>
<!-- Translations of this should not be longer than the original English text, otherwise the text can be clipped and not entirely shown. -->
</patch>
<patch id="ad.general.hideAdsResourcePatch">
<!-- 'Visit store' should be translated with the same localized wording that YouTube displays. -->
<!-- Translations of this should not be longer than the original English text, otherwise the text can be clipped and not entirely shown. -->
<!-- 'View products' should be translated with the same localized wording that YouTube displays. -->
</patch>
<patch id="ad.getpremium.hideGetPremiumPatch">
</patch>

View File

@@ -41,12 +41,14 @@ Second \"item\" text"</string>
<patch id="layout.hide.general.hideLayoutComponentsPatch">
<!-- 'Join' should be translated using the same localized wording YouTube displays.
This appears in the video player for certain videos. -->
<!-- 'For you' should be translated using the same localized wording YouTube displays. -->
<!-- '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. -->
<!-- 'People also watched' and 'You might also like' should be translated using the same localized wording YouTube displays. -->
<!-- 'Show more' should be translated with the same localized wording that YouTube displays.
This button usually appears when searching for a YT creator. -->
<!-- 'For You' should be translated using the same localized wording YouTube displays. -->
<!-- 'Visit Community' should be translated with the same localized wording that YouTube displays. -->
<!-- 'Visit store' should be translated with the same localized wording that YouTube displays. -->
<!-- https://logos.fandom.com/wiki/YouTube/Yoodles -->
<!-- '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. -->
<!-- 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.
@@ -55,8 +57,8 @@ Second \"item\" text"</string>
<!-- Translations of this should not be longer than the original English text, otherwise the text can be clipped and not entirely shown. -->
</patch>
<patch id="ad.general.hideAdsResourcePatch">
<!-- 'Visit store' should be translated with the same localized wording that YouTube displays. -->
<!-- Translations of this should not be longer than the original English text, otherwise the text can be clipped and not entirely shown. -->
<!-- 'View products' should be translated with the same localized wording that YouTube displays. -->
</patch>
<patch id="ad.getpremium.hideGetPremiumPatch">
</patch>

View File

@@ -41,12 +41,14 @@ Second \"item\" text"</string>
<patch id="layout.hide.general.hideLayoutComponentsPatch">
<!-- 'Join' should be translated using the same localized wording YouTube displays.
This appears in the video player for certain videos. -->
<!-- 'For you' should be translated using the same localized wording YouTube displays. -->
<!-- '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. -->
<!-- 'People also watched' and 'You might also like' should be translated using the same localized wording YouTube displays. -->
<!-- 'Show more' should be translated with the same localized wording that YouTube displays.
This button usually appears when searching for a YT creator. -->
<!-- 'For You' should be translated using the same localized wording YouTube displays. -->
<!-- 'Visit Community' should be translated with the same localized wording that YouTube displays. -->
<!-- 'Visit store' should be translated with the same localized wording that YouTube displays. -->
<!-- https://logos.fandom.com/wiki/YouTube/Yoodles -->
<!-- '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. -->
<!-- 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.
@@ -55,8 +57,8 @@ Second \"item\" text"</string>
<!-- Translations of this should not be longer than the original English text, otherwise the text can be clipped and not entirely shown. -->
</patch>
<patch id="ad.general.hideAdsResourcePatch">
<!-- 'Visit store' should be translated with the same localized wording that YouTube displays. -->
<!-- Translations of this should not be longer than the original English text, otherwise the text can be clipped and not entirely shown. -->
<!-- 'View products' should be translated with the same localized wording that YouTube displays. -->
</patch>
<patch id="ad.getpremium.hideGetPremiumPatch">
</patch>

View File

@@ -41,12 +41,14 @@ Second \"item\" text"</string>
<patch id="layout.hide.general.hideLayoutComponentsPatch">
<!-- 'Join' should be translated using the same localized wording YouTube displays.
This appears in the video player for certain videos. -->
<!-- 'For you' should be translated using the same localized wording YouTube displays. -->
<!-- '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. -->
<!-- 'People also watched' and 'You might also like' should be translated using the same localized wording YouTube displays. -->
<!-- 'Show more' should be translated with the same localized wording that YouTube displays.
This button usually appears when searching for a YT creator. -->
<!-- 'For You' should be translated using the same localized wording YouTube displays. -->
<!-- 'Visit Community' should be translated with the same localized wording that YouTube displays. -->
<!-- 'Visit store' should be translated with the same localized wording that YouTube displays. -->
<!-- https://logos.fandom.com/wiki/YouTube/Yoodles -->
<!-- '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. -->
<!-- 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.
@@ -55,8 +57,8 @@ Second \"item\" text"</string>
<!-- Translations of this should not be longer than the original English text, otherwise the text can be clipped and not entirely shown. -->
</patch>
<patch id="ad.general.hideAdsResourcePatch">
<!-- 'Visit store' should be translated with the same localized wording that YouTube displays. -->
<!-- Translations of this should not be longer than the original English text, otherwise the text can be clipped and not entirely shown. -->
<!-- 'View products' should be translated with the same localized wording that YouTube displays. -->
</patch>
<patch id="ad.getpremium.hideGetPremiumPatch">
</patch>

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