Compare commits

...

56 Commits

Author SHA1 Message Date
semantic-release-bot
a2185bce09 chore: Release v5.13.0-dev.17 [skip ci]
# [5.13.0-dev.17](https://github.com/ReVanced/revanced-patches/compare/v5.13.0-dev.16...v5.13.0-dev.17) (2025-02-27)

### Bug Fixes

* **YouTube - Hide filter bar:** Fix `Hide in feed` not working in subscriptions feed ([#4512](https://github.com/ReVanced/revanced-patches/issues/4512)) ([1b60a72](1b60a72ede))
2025-02-27 13:23:12 +00:00
ILoveOpenSourceApplications
1b60a72ede fix(YouTube - Hide filter bar): Fix Hide in feed not working in subscriptions feed (#4512) 2025-02-27 15:20:30 +02:00
semantic-release-bot
12b4ee04ad chore: Release v5.13.0-dev.16 [skip ci]
# [5.13.0-dev.16](https://github.com/ReVanced/revanced-patches/compare/v5.13.0-dev.15...v5.13.0-dev.16) (2025-02-27)

### Features

* **NU.nl:** Add `Hide ads` and `Spoof Certificate` patch ([#4368](https://github.com/ReVanced/revanced-patches/issues/4368)) ([93ea250](93ea250bf3))
2025-02-27 06:12:28 +00:00
github-actions[bot]
f9a6cc96de chore: Sync translations (#4510) 2025-02-27 08:09:23 +02:00
Jasper Abbink
93ea250bf3 feat(NU.nl): Add Hide ads and Spoof Certificate patch (#4368)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2025-02-27 08:07:54 +02:00
semantic-release-bot
fdb946a2cc chore: Release v5.13.0-dev.15 [skip ci]
# [5.13.0-dev.15](https://github.com/ReVanced/revanced-patches/compare/v5.13.0-dev.14...v5.13.0-dev.15) (2025-02-25)

### Bug Fixes

* **YouTube - Hide player components:** Show correct end video thumbnail if `Hide end screen suggested video` is enabled ([#4502](https://github.com/ReVanced/revanced-patches/issues/4502)) ([7cc939a](7cc939ab03))
2025-02-25 15:42:36 +00:00
ILoveOpenSourceApplications
7cc939ab03 fix(YouTube - Hide player components): Show correct end video thumbnail if Hide end screen suggested video is enabled (#4502)
Co-authored-by: LisoUseInAIKyrios <118716522+LisoUseInAIKyrios@users.noreply.github.com>
2025-02-25 17:38:16 +02:00
github-actions[bot]
228d72428d chore: Sync translations (#4505) 2025-02-25 16:55:10 +02:00
semantic-release-bot
4db7ab4207 chore: Release v5.13.0-dev.14 [skip ci]
# [5.13.0-dev.14](https://github.com/ReVanced/revanced-patches/compare/v5.13.0-dev.13...v5.13.0-dev.14) (2025-02-25)

### Bug Fixes

* **YouTube - Swipe controls:** Adjust the overlay text size ([#4503](https://github.com/ReVanced/revanced-patches/issues/4503)) ([329f993](329f993024))
2025-02-25 13:37:45 +00:00
MarcaD
329f993024 fix(YouTube - Swipe controls): Adjust the overlay text size (#4503) 2025-02-25 15:34:37 +02:00
github-actions[bot]
7cd1fb22d8 chore: Sync translations (#4504) 2025-02-25 15:34:19 +02:00
LisoUseInAIKyrios
ae111bc0b9 refactor(YouTube - Force original audio): Adjust settings text 2025-02-25 11:35:44 +02:00
semantic-release-bot
79f1dfd3e8 chore: Release v5.13.0-dev.13 [skip ci]
# [5.13.0-dev.13](https://github.com/ReVanced/revanced-patches/compare/v5.13.0-dev.12...v5.13.0-dev.13) (2025-02-24)

### Bug Fixes

* **YouTube:** Resolve button flickering when taping seekbar ([#4500](https://github.com/ReVanced/revanced-patches/issues/4500)) ([f5dd902](f5dd902915))
2025-02-24 18:37:58 +00:00
MarcaD
f5dd902915 fix(YouTube): Resolve button flickering when taping seekbar (#4500) 2025-02-24 20:34:28 +02:00
semantic-release-bot
10e2b08eb2 chore: Release v5.13.0-dev.12 [skip ci]
# [5.13.0-dev.12](https://github.com/ReVanced/revanced-patches/compare/v5.13.0-dev.11...v5.13.0-dev.12) (2025-02-24)

### Bug Fixes

* **YouTube - Return YouTube Dislike:** Use correct number formatting if using a different ReVanced language ([4ae1155](4ae1155e51))
2025-02-24 10:01:52 +00:00
LisoUseInAIKyrios
4ae1155e51 fix(YouTube - Return YouTube Dislike): Use correct number formatting if using a different ReVanced language 2025-02-24 11:58:57 +02:00
github-actions[bot]
69fbfaea19 chore: Sync translations (#4499)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-02-24 11:56:46 +02:00
semantic-release-bot
f44fede67c chore: Release v5.13.0-dev.11 [skip ci]
# [5.13.0-dev.11](https://github.com/ReVanced/revanced-patches/compare/v5.13.0-dev.10...v5.13.0-dev.11) (2025-02-23)

### Bug Fixes

* **TikTok:** Resolve startup app crash ([3c52ab8](3c52ab8017))
2025-02-23 07:31:27 +00:00
LisoUseInAIKyrios
3c52ab8017 fix(TikTok): Resolve startup app crash 2025-02-23 09:28:37 +02:00
github-actions[bot]
d1641a6e3d chore: Sync translations (#4495) 2025-02-23 09:26:22 +02:00
semantic-release-bot
09773e8934 chore: Release v5.13.0-dev.10 [skip ci]
# [5.13.0-dev.10](https://github.com/ReVanced/revanced-patches/compare/v5.13.0-dev.9...v5.13.0-dev.10) (2025-02-22)

### Bug Fixes

* **YouTube - Copy video URL:** Use correct button ordering ([d77d5bf](d77d5bfbdd))
2025-02-22 16:31:11 +00:00
LisoUseInAIKyrios
d77d5bfbdd fix(YouTube - Copy video URL): Use correct button ordering
Fixes refactoring oversight of button fade fix
2025-02-22 18:28:47 +02:00
semantic-release-bot
a84bded9e7 chore: Release v5.13.0-dev.9 [skip ci]
# [5.13.0-dev.9](https://github.com/ReVanced/revanced-patches/compare/v5.13.0-dev.8...v5.13.0-dev.9) (2025-02-22)

### Bug Fixes

* **YouTube:** Do not hide player controls when using double tap to skip forward ([#4487](https://github.com/ReVanced/revanced-patches/issues/4487)) ([e664a24](e664a24f73))
2025-02-22 15:48:25 +00:00
LisoUseInAIKyrios
e664a24f73 fix(YouTube): Do not hide player controls when using double tap to skip forward (#4487)
Co-authored-by: MarcaDian <tolan.sheremeev@gmail.com>
2025-02-22 17:44:53 +02:00
semantic-release-bot
5bf964fff6 chore: Release v5.13.0-dev.8 [skip ci]
# [5.13.0-dev.8](https://github.com/ReVanced/revanced-patches/compare/v5.13.0-dev.7...v5.13.0-dev.8) (2025-02-22)

### Bug Fixes

* **YouTube - Spoof app version:** Force old settings menus if spoofing to older app targets ([#4490](https://github.com/ReVanced/revanced-patches/issues/4490)) ([0c0bbb8](0c0bbb8713))
2025-02-22 09:43:04 +00:00
LisoUseInAIKyrios
0c0bbb8713 fix(YouTube - Spoof app version): Force old settings menus if spoofing to older app targets (#4490) 2025-02-22 11:40:06 +02:00
github-actions[bot]
8afe48cd92 chore: Sync translations (#4492) 2025-02-22 11:39:54 +02:00
github-actions[bot]
dde8ea31cb chore: Sync translations (#4491) 2025-02-22 11:34:59 +02:00
semantic-release-bot
d3abbe3e93 chore: Release v5.13.0-dev.7 [skip ci]
# [5.13.0-dev.7](https://github.com/ReVanced/revanced-patches/compare/v5.13.0-dev.6...v5.13.0-dev.7) (2025-02-22)

### Bug Fixes

* **TikTok:** Resolve startup app crash ([c817977](c8179776ed))
2025-02-22 06:25:32 +00:00
LisoUseInAIKyrios
c8179776ed fix(TikTok): Resolve startup app crash 2025-02-22 08:20:19 +02:00
semantic-release-bot
c6c6516b12 chore: Release v5.13.0-dev.6 [skip ci]
# [5.13.0-dev.6](https://github.com/ReVanced/revanced-patches/compare/v5.13.0-dev.5...v5.13.0-dev.6) (2025-02-21)

### Features

* **YouTube - Navigation buttons:** Add 'Hide notifications' setting ([#4485](https://github.com/ReVanced/revanced-patches/issues/4485)) ([d6eae01](d6eae01e12))
2025-02-21 12:13:01 +00:00
LisoUseInAIKyrios
d6eae01e12 feat(YouTube - Navigation buttons): Add 'Hide notifications' setting (#4485) 2025-02-21 14:09:01 +02:00
semantic-release-bot
ba88603f4b chore: Release v5.13.0-dev.5 [skip ci]
# [5.13.0-dev.5](https://github.com/ReVanced/revanced-patches/compare/v5.13.0-dev.4...v5.13.0-dev.5) (2025-02-19)

### Bug Fixes

* **TikTok:** Resolve startup app crash ([d5aab3d](d5aab3d464))
2025-02-19 14:39:51 +00:00
LisoUseInAIKyrios
d5aab3d464 fix(TikTok): Resolve startup app crash 2025-02-19 16:36:07 +02:00
semantic-release-bot
fca2f70c0e chore: Release v5.13.0-dev.4 [skip ci]
# [5.13.0-dev.4](https://github.com/ReVanced/revanced-patches/compare/v5.13.0-dev.3...v5.13.0-dev.4) (2025-02-19)

### Bug Fixes

* **TikTok:** Resolve startup app crash ([348f7e1](348f7e12cb))
2025-02-19 13:57:05 +00:00
LisoUseInAIKyrios
348f7e12cb fix(TikTok): Resolve startup app crash 2025-02-19 15:53:12 +02:00
semantic-release-bot
b6b7208eeb chore: Release v5.13.0-dev.3 [skip ci]
# [5.13.0-dev.3](https://github.com/ReVanced/revanced-patches/compare/v5.13.0-dev.2...v5.13.0-dev.3) (2025-02-19)

### Bug Fixes

* **YouTube:** Fix player button fade out animations ([#4469](https://github.com/ReVanced/revanced-patches/issues/4469)) ([a2c79f1](a2c79f1349))
2025-02-19 11:25:29 +00:00
MarcaD
a2c79f1349 fix(YouTube): Fix player button fade out animations (#4469) 2025-02-19 13:22:46 +02:00
github-actions[bot]
4f5bb3c915 chore: Sync translations (#4478) 2025-02-19 13:22:17 +02:00
semantic-release-bot
4b77d27c77 chore: Release v5.13.0-dev.2 [skip ci]
# [5.13.0-dev.2](https://github.com/ReVanced/revanced-patches/compare/v5.13.0-dev.1...v5.13.0-dev.2) (2025-02-18)

### Bug Fixes

* **YouTube - Hide video action buttons:** Move 'Disable Like and Subscribe glow' to action buttons settings menu ([7991c80](7991c80129))
2025-02-18 07:29:55 +00:00
LisoUseInAIKyrios
7991c80129 fix(YouTube - Hide video action buttons): Move 'Disable Like and Subscribe glow' to action buttons settings menu 2025-02-18 09:26:30 +02:00
github-actions[bot]
6baf4ea2ac chore: Sync translations (#4473) 2025-02-18 09:24:59 +02:00
semantic-release-bot
c89538c8f5 chore: Release v5.13.0-dev.1 [skip ci]
# [5.13.0-dev.1](https://github.com/ReVanced/revanced-patches/compare/v5.12.0...v5.13.0-dev.1) (2025-02-18)

### Bug Fixes

* **YouTube - Hide layout components:** Do not hide 'Show anyway' button in search results ([94fb367](94fb367618))

### Features

* **YouTube - Swipe controls:** Swipe controls UI improvements ([#4422](https://github.com/ReVanced/revanced-patches/issues/4422)) ([3548359](354835966d))
2025-02-18 07:11:45 +00:00
LisoUseInAIKyrios
94fb367618 fix(YouTube - Hide layout components): Do not hide 'Show anyway' button in search results 2025-02-18 09:08:37 +02:00
MarcaD
354835966d feat(YouTube - Swipe controls): Swipe controls UI improvements (#4422) 2025-02-18 09:07:28 +02:00
github-actions[bot]
168f9b769e chore: Sync translations (#4472) 2025-02-18 09:06:39 +02:00
ILoveOpenSourceApplications
e4c4b3a73a refactor(YouTube): Use more consistent strings (#4376) 2025-02-17 10:07:24 +02:00
semantic-release-bot
fce98b4960 chore: Release v5.12.0 [skip ci]
# [5.12.0](https://github.com/ReVanced/revanced-patches/compare/v5.11.0...v5.12.0) (2025-02-17)

### Bug Fixes

* Allow changing default settings for existing app installs ([#4464](https://github.com/ReVanced/revanced-patches/issues/4464)) ([a959d79](a959d798e8))
* **Windy.app:** Remove obsolete `Unlock pro` patch ([#4428](https://github.com/ReVanced/revanced-patches/issues/4428)) ([421af92](421af92f4c))
* **YouTube - Spoof video streams:** Change default client to `Android TV` ([#4465](https://github.com/ReVanced/revanced-patches/issues/4465)) ([04b37dd](04b37dd55a))
* **YouTube:** Remove obsolete 18.x targets ([#4454](https://github.com/ReVanced/revanced-patches/issues/4454)) ([92c38b2](92c38b2cb4))

### Features

* **Return YouTube Dislike:** add `Show estimated likes` setting ([#4443](https://github.com/ReVanced/revanced-patches/issues/4443)) ([7c4285e](7c4285e3e6))
* **YouTube - SponsorBlock:** Redesign skip buttons ([#4427](https://github.com/ReVanced/revanced-patches/issues/4427)) ([0079ece](0079eceb87))
* **YouTube Music:** Support version `8.05.50` ([#4439](https://github.com/ReVanced/revanced-patches/issues/4439)) ([bcd157d](bcd157dd2b))
* **YouTube Music:** Support version `8.05.51` ([2382e9d](2382e9d09e))
2025-02-17 06:23:44 +00:00
LisoUseInAIKyrios
839aa81e9c chore: Merge branch dev to main (#4437) 2025-02-17 08:20:23 +02:00
semantic-release-bot
905bb0ea5f chore: Release v5.12.0-dev.7 [skip ci]
# [5.12.0-dev.7](https://github.com/ReVanced/revanced-patches/compare/v5.12.0-dev.6...v5.12.0-dev.7) (2025-02-16)

### Bug Fixes

* **YouTube - Spoof video streams:** Change default client to `Android TV` ([#4465](https://github.com/ReVanced/revanced-patches/issues/4465)) ([04b37dd](04b37dd55a))

### Features

* **YouTube Music:** Support version `8.05.51` ([2382e9d](2382e9d09e))
2025-02-16 16:41:43 +00:00
github-actions[bot]
a94a663859 chore: Sync translations (#4468) 2025-02-16 18:38:36 +02:00
LisoUseInAIKyrios
04b37dd55a fix(YouTube - Spoof video streams): Change default client to Android TV (#4465) 2025-02-16 18:34:12 +02:00
LisoUseInAIKyrios
2382e9d09e feat(YouTube Music): Support version 8.05.51 2025-02-16 18:31:52 +02:00
github-actions[bot]
97f504976a chore: Sync translations (#4467) 2025-02-16 18:30:04 +02:00
semantic-release-bot
0a6c5158e0 chore: Release v5.12.0-dev.6 [skip ci]
# [5.12.0-dev.6](https://github.com/ReVanced/revanced-patches/compare/v5.12.0-dev.5...v5.12.0-dev.6) (2025-02-16)

### Bug Fixes

* Allow changing default settings for existing app installs ([#4464](https://github.com/ReVanced/revanced-patches/issues/4464)) ([a959d79](a959d798e8))
2025-02-16 13:19:31 +00:00
LisoUseInAIKyrios
a959d798e8 fix: Allow changing default settings for existing app installs (#4464) 2025-02-16 15:16:24 +02:00
180 changed files with 7073 additions and 4500 deletions

View File

@@ -1,3 +1,164 @@
# [5.13.0-dev.17](https://github.com/ReVanced/revanced-patches/compare/v5.13.0-dev.16...v5.13.0-dev.17) (2025-02-27)
### Bug Fixes
* **YouTube - Hide filter bar:** Fix `Hide in feed` not working in subscriptions feed ([#4512](https://github.com/ReVanced/revanced-patches/issues/4512)) ([634d0ee](https://github.com/ReVanced/revanced-patches/commit/634d0ee12e31491c7ee1d4ceb002daf8366a3c15))
# [5.13.0-dev.16](https://github.com/ReVanced/revanced-patches/compare/v5.13.0-dev.15...v5.13.0-dev.16) (2025-02-27)
### Features
* **NU.nl:** Add `Hide ads` and `Spoof Certificate` patch ([#4368](https://github.com/ReVanced/revanced-patches/issues/4368)) ([f3268fb](https://github.com/ReVanced/revanced-patches/commit/f3268fb03ca25fb5465e36015b6c9dec2c84a655))
# [5.13.0-dev.15](https://github.com/ReVanced/revanced-patches/compare/v5.13.0-dev.14...v5.13.0-dev.15) (2025-02-25)
### Bug Fixes
* **YouTube - Hide player components:** Show correct end video thumbnail if `Hide end screen suggested video` is enabled ([#4502](https://github.com/ReVanced/revanced-patches/issues/4502)) ([6c4885a](https://github.com/ReVanced/revanced-patches/commit/6c4885a1d5dfff50100b01840b5552d92e83ee4a))
# [5.13.0-dev.14](https://github.com/ReVanced/revanced-patches/compare/v5.13.0-dev.13...v5.13.0-dev.14) (2025-02-25)
### Bug Fixes
* **YouTube - Swipe controls:** Adjust the overlay text size ([#4503](https://github.com/ReVanced/revanced-patches/issues/4503)) ([6dc4bf7](https://github.com/ReVanced/revanced-patches/commit/6dc4bf75e09ed6f05534919d7b769b720043abce))
# [5.13.0-dev.13](https://github.com/ReVanced/revanced-patches/compare/v5.13.0-dev.12...v5.13.0-dev.13) (2025-02-24)
### Bug Fixes
* **YouTube:** Resolve button flickering when taping seekbar ([#4500](https://github.com/ReVanced/revanced-patches/issues/4500)) ([1f08047](https://github.com/ReVanced/revanced-patches/commit/1f08047b48cc9555a4887d16ec7219a55a77251f))
# [5.13.0-dev.12](https://github.com/ReVanced/revanced-patches/compare/v5.13.0-dev.11...v5.13.0-dev.12) (2025-02-24)
### Bug Fixes
* **YouTube - Return YouTube Dislike:** Use correct number formatting if using a different ReVanced language ([edf66f4](https://github.com/ReVanced/revanced-patches/commit/edf66f4e16d46156cb8b8e31d18cb8dbcb87737e))
# [5.13.0-dev.11](https://github.com/ReVanced/revanced-patches/compare/v5.13.0-dev.10...v5.13.0-dev.11) (2025-02-23)
### Bug Fixes
* **TikTok:** Resolve startup app crash ([18c0fc2](https://github.com/ReVanced/revanced-patches/commit/18c0fc2a7f186f50a904fd25dbaa739abdd24993))
# [5.13.0-dev.10](https://github.com/ReVanced/revanced-patches/compare/v5.13.0-dev.9...v5.13.0-dev.10) (2025-02-22)
### Bug Fixes
* **YouTube - Copy video URL:** Use correct button ordering ([5e622cc](https://github.com/ReVanced/revanced-patches/commit/5e622ccf66d34af31c6026fa7f4d332460c6ecb0))
# [5.13.0-dev.9](https://github.com/ReVanced/revanced-patches/compare/v5.13.0-dev.8...v5.13.0-dev.9) (2025-02-22)
### Bug Fixes
* **YouTube:** Do not hide player controls when using double tap to skip forward ([#4487](https://github.com/ReVanced/revanced-patches/issues/4487)) ([63fe870](https://github.com/ReVanced/revanced-patches/commit/63fe870d48ca2217327b952bde241b7f16ced850))
# [5.13.0-dev.8](https://github.com/ReVanced/revanced-patches/compare/v5.13.0-dev.7...v5.13.0-dev.8) (2025-02-22)
### Bug Fixes
* **YouTube - Spoof app version:** Force old settings menus if spoofing to older app targets ([#4490](https://github.com/ReVanced/revanced-patches/issues/4490)) ([45e7c46](https://github.com/ReVanced/revanced-patches/commit/45e7c46dd9c70c926b8b1a97ada668f90f5f6f8c))
# [5.13.0-dev.7](https://github.com/ReVanced/revanced-patches/compare/v5.13.0-dev.6...v5.13.0-dev.7) (2025-02-22)
### Bug Fixes
* **TikTok:** Resolve startup app crash ([6466398](https://github.com/ReVanced/revanced-patches/commit/64663983b84de1f28636205f61bf0a24c83968d1))
# [5.13.0-dev.6](https://github.com/ReVanced/revanced-patches/compare/v5.13.0-dev.5...v5.13.0-dev.6) (2025-02-21)
### Features
* **YouTube - Navigation buttons:** Add 'Hide notifications' setting ([#4485](https://github.com/ReVanced/revanced-patches/issues/4485)) ([506d241](https://github.com/ReVanced/revanced-patches/commit/506d2414bbc760e764e5a514b32926083d6ecb6b))
# [5.13.0-dev.5](https://github.com/ReVanced/revanced-patches/compare/v5.13.0-dev.4...v5.13.0-dev.5) (2025-02-19)
### Bug Fixes
* **TikTok:** Resolve startup app crash ([c14bc24](https://github.com/ReVanced/revanced-patches/commit/c14bc244550de30eca975ca7c09e8eb0c47534b5))
# [5.13.0-dev.4](https://github.com/ReVanced/revanced-patches/compare/v5.13.0-dev.3...v5.13.0-dev.4) (2025-02-19)
### Bug Fixes
* **TikTok:** Resolve startup app crash ([d700076](https://github.com/ReVanced/revanced-patches/commit/d7000768a5e5a688c9f4e48858ac34e352222c1e))
# [5.13.0-dev.3](https://github.com/ReVanced/revanced-patches/compare/v5.13.0-dev.2...v5.13.0-dev.3) (2025-02-19)
### Bug Fixes
* **YouTube:** Fix player button fade out animations ([#4469](https://github.com/ReVanced/revanced-patches/issues/4469)) ([bf8e775](https://github.com/ReVanced/revanced-patches/commit/bf8e7759f9bdbdfef419a879fb3dd7cf0dff0098))
# [5.13.0-dev.2](https://github.com/ReVanced/revanced-patches/compare/v5.13.0-dev.1...v5.13.0-dev.2) (2025-02-18)
### Bug Fixes
* **YouTube - Hide video action buttons:** Move 'Disable Like and Subscribe glow' to action buttons settings menu ([29b265d](https://github.com/ReVanced/revanced-patches/commit/29b265d8fdaa48502650be9623bfc518a57a0bb1))
# [5.13.0-dev.1](https://github.com/ReVanced/revanced-patches/compare/v5.12.0...v5.13.0-dev.1) (2025-02-18)
### Bug Fixes
* **YouTube - Hide layout components:** Do not hide 'Show anyway' button in search results ([4ac8854](https://github.com/ReVanced/revanced-patches/commit/4ac8854b99808a8957f3b0b7438e1e0cdedffbaf))
### Features
* **YouTube - Swipe controls:** Swipe controls UI improvements ([#4422](https://github.com/ReVanced/revanced-patches/issues/4422)) ([198e4d2](https://github.com/ReVanced/revanced-patches/commit/198e4d2a2315c24a09eb9ecfefbd131a75384d2c))
# [5.12.0](https://github.com/ReVanced/revanced-patches/compare/v5.11.0...v5.12.0) (2025-02-17)
### Bug Fixes
* Allow changing default settings for existing app installs ([#4464](https://github.com/ReVanced/revanced-patches/issues/4464)) ([1bd7986](https://github.com/ReVanced/revanced-patches/commit/1bd7986823e774a929c8a9102a7cc96e245d5274))
* **Windy.app:** Remove obsolete `Unlock pro` patch ([#4428](https://github.com/ReVanced/revanced-patches/issues/4428)) ([83d116e](https://github.com/ReVanced/revanced-patches/commit/83d116e8fd3935ee431cfdf0b8e095d04ee77259))
* **YouTube - Spoof video streams:** Change default client to `Android TV` ([#4465](https://github.com/ReVanced/revanced-patches/issues/4465)) ([0412c79](https://github.com/ReVanced/revanced-patches/commit/0412c7901dc8599b6079d9c3ba26452f88af642b))
* **YouTube:** Remove obsolete 18.x targets ([#4454](https://github.com/ReVanced/revanced-patches/issues/4454)) ([a006758](https://github.com/ReVanced/revanced-patches/commit/a0067581d0f877e1b4eb1f888a25786f09676b2e))
### Features
* **Return YouTube Dislike:** add `Show estimated likes` setting ([#4443](https://github.com/ReVanced/revanced-patches/issues/4443)) ([9a88b42](https://github.com/ReVanced/revanced-patches/commit/9a88b4239fd63d5f91105fec8e7d59d318a5d09a))
* **YouTube - SponsorBlock:** Redesign skip buttons ([#4427](https://github.com/ReVanced/revanced-patches/issues/4427)) ([8f4883f](https://github.com/ReVanced/revanced-patches/commit/8f4883fc002420bfb4056401e23445c99e1d3fce))
* **YouTube Music:** Support version `8.05.50` ([#4439](https://github.com/ReVanced/revanced-patches/issues/4439)) ([b31fed9](https://github.com/ReVanced/revanced-patches/commit/b31fed98901fcda1bce6f05eb0de63280c689fa0))
* **YouTube Music:** Support version `8.05.51` ([128441e](https://github.com/ReVanced/revanced-patches/commit/128441e78bc0d096c3fc2f57782ab90c39c3ae4b))
# [5.12.0-dev.7](https://github.com/ReVanced/revanced-patches/compare/v5.12.0-dev.6...v5.12.0-dev.7) (2025-02-16)
### Bug Fixes
* **YouTube - Spoof video streams:** Change default client to `Android TV` ([#4465](https://github.com/ReVanced/revanced-patches/issues/4465)) ([0412c79](https://github.com/ReVanced/revanced-patches/commit/0412c7901dc8599b6079d9c3ba26452f88af642b))
### Features
* **YouTube Music:** Support version `8.05.51` ([128441e](https://github.com/ReVanced/revanced-patches/commit/128441e78bc0d096c3fc2f57782ab90c39c3ae4b))
# [5.12.0-dev.6](https://github.com/ReVanced/revanced-patches/compare/v5.12.0-dev.5...v5.12.0-dev.6) (2025-02-16)
### Bug Fixes
* Allow changing default settings for existing app installs ([#4464](https://github.com/ReVanced/revanced-patches/issues/4464)) ([1bd7986](https://github.com/ReVanced/revanced-patches/commit/1bd7986823e774a929c8a9102a7cc96e245d5274))
# [5.12.0-dev.5](https://github.com/ReVanced/revanced-patches/compare/v5.12.0-dev.4...v5.12.0-dev.5) (2025-02-13)

View File

@@ -0,0 +1,4 @@
dependencies {
compileOnly(project(":extensions:shared:library"))
compileOnly(project(":extensions:nunl:stub"))
}

View File

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

View File

@@ -0,0 +1,114 @@
package app.revanced.extension.nunl.ads;
import nl.nu.performance.api.client.interfaces.Block;
import nl.nu.performance.api.client.unions.SmallArticleLinkFlavor;
import nl.nu.performance.api.client.objects.*;
import java.util.ArrayList;
import java.util.List;
import app.revanced.extension.shared.Logger;
@SuppressWarnings("unused")
public class HideAdsPatch {
private static final String[] blockedHeaderBlocks = {
"Aanbiedingen (Adverteerders)",
"Aangeboden door NUshop"
};
// "Rubrieken" menu links to ads.
private static final String[] blockedLinkBlocks = {
"Van onze adverteerders"
};
public static void filterAds(List<Block> blocks) {
try {
ArrayList<Block> cleanedList = new ArrayList<>();
boolean skipFullHeader = false;
boolean skipUntilDivider = false;
int index = 0;
while (index < blocks.size()) {
Block currentBlock = blocks.get(index);
// Because of pagination, we might not see the Divider in front of it.
// Just remove it as is and leave potential extra spacing visible on the screen.
if (currentBlock instanceof DpgBannerBlock) {
index++;
continue;
}
if (index + 1 < blocks.size()) {
// Filter Divider -> DpgMediaBanner -> Divider.
if (currentBlock instanceof DividerBlock
&& blocks.get(index + 1) instanceof DpgBannerBlock) {
index += 2;
continue;
}
// Filter Divider -> LinkBlock (... -> LinkBlock -> LinkBlock-> LinkBlock -> Divider).
if (currentBlock instanceof DividerBlock
&& blocks.get(index + 1) instanceof LinkBlock linkBlock) {
Link link = linkBlock.getLink();
if (link != null && link.getTitle() != null) {
for (String blockedLinkBlock : blockedLinkBlocks) {
if (blockedLinkBlock.equals(link.getTitle().getText())) {
skipUntilDivider = true;
break;
}
}
if (skipUntilDivider) {
index++;
continue;
}
}
}
}
// Skip LinkBlocks with a "flavor" claiming to be "isPartner" (sponsored inline ads).
if (currentBlock instanceof LinkBlock linkBlock
&& linkBlock.getLink() != null
&& linkBlock.getLink().getLinkFlavor() instanceof SmallArticleLinkFlavor smallArticleLinkFlavor
&& smallArticleLinkFlavor.isPartner() != null
&& smallArticleLinkFlavor.isPartner()) {
index++;
continue;
}
if (currentBlock instanceof DividerBlock) {
skipUntilDivider = false;
}
// Filter HeaderBlock with known ads until next HeaderBlock.
if (currentBlock instanceof HeaderBlock headerBlock) {
StyledText headerText = headerBlock.component20();
if (headerText != null) {
skipFullHeader = false;
for (String blockedHeaderBlock : blockedHeaderBlocks) {
if (blockedHeaderBlock.equals(headerText.getText())) {
skipFullHeader = true;
break;
}
}
if (skipFullHeader) {
index++;
continue;
}
}
}
if (!skipFullHeader && !skipUntilDivider) {
cleanedList.add(currentBlock);
}
index++;
}
// Replace list in-place to not deal with moving the result to the correct register in smali.
blocks.clear();
blocks.addAll(cleanedList);
} catch (Exception ex) {
Logger.printException(() -> "filterAds failure", ex);
}
}
}

View File

@@ -0,0 +1,17 @@
plugins {
id(libs.plugins.android.library.get().pluginId)
}
android {
namespace = "app.revanced.extension"
compileSdk = 34
defaultConfig {
minSdk = 26
}
compileOptions {
sourceCompatibility = JavaVersion.VERSION_17
targetCompatibility = JavaVersion.VERSION_17
}
}

View File

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

View File

@@ -0,0 +1,5 @@
package nl.nu.performance.api.client.interfaces;
public class Block {
}

View File

@@ -0,0 +1,7 @@
package nl.nu.performance.api.client.objects;
import nl.nu.performance.api.client.interfaces.Block;
public class DividerBlock extends Block {
}

View File

@@ -0,0 +1,7 @@
package nl.nu.performance.api.client.objects;
import nl.nu.performance.api.client.interfaces.Block;
public class DpgBannerBlock extends Block {
}

View File

@@ -0,0 +1,10 @@
package nl.nu.performance.api.client.objects;
import nl.nu.performance.api.client.interfaces.Block;
public class HeaderBlock extends Block {
// returns title
public final StyledText component20() {
throw new UnsupportedOperationException("Stub");
}
}

View File

@@ -0,0 +1,13 @@
package nl.nu.performance.api.client.objects;
import nl.nu.performance.api.client.unions.LinkFlavor;
public class Link {
public final StyledText getTitle() {
throw new UnsupportedOperationException("Stub");
}
public final LinkFlavor getLinkFlavor() {
throw new UnsupportedOperationException("Stub");
}
}

View File

@@ -0,0 +1,10 @@
package nl.nu.performance.api.client.objects;
import android.os.Parcelable;
import nl.nu.performance.api.client.interfaces.Block;
public abstract class LinkBlock extends Block implements Parcelable {
public final Link getLink() {
throw new UnsupportedOperationException("Stub");
}
}

View File

@@ -0,0 +1,7 @@
package nl.nu.performance.api.client.objects;
public class StyledText {
public final String getText() {
throw new UnsupportedOperationException("Stub");
}
}

View File

@@ -0,0 +1,4 @@
package nl.nu.performance.api.client.unions;
public interface LinkFlavor {
}

View File

@@ -0,0 +1,7 @@
package nl.nu.performance.api.client.unions;
public class SmallArticleLinkFlavor implements LinkFlavor {
public final Boolean isPartner() {
throw new UnsupportedOperationException("Stub");
}
}

View File

@@ -356,7 +356,7 @@ public class Utils {
public static Context getContext() {
if (context == null) {
Logger.initializationException(Utils.class, "Context is null, returning null!", null);
Logger.initializationException(Utils.class, "Context is not set by extension hook, returning null", null);
}
return context;
}

View File

@@ -29,6 +29,6 @@ public class BaseSettings {
public static final BooleanSetting SPOOF_VIDEO_STREAMS_IOS_FORCE_AVC = new BooleanSetting("revanced_spoof_video_streams_ios_force_avc", FALSE, true,
"revanced_spoof_video_streams_ios_force_avc_user_dialog_message", new SpoofiOSAvailability());
// Client type must be last spoof setting due to cyclic references.
public static final EnumSetting<ClientType> SPOOF_VIDEO_STREAMS_CLIENT_TYPE = new EnumSetting<>("revanced_spoof_video_streams_client_type", ClientType.ANDROID_VR, true, parent(SPOOF_VIDEO_STREAMS));
public static final EnumSetting<ClientType> SPOOF_VIDEO_STREAMS_CLIENT_TYPE = new EnumSetting<>("revanced_spoof_video_streams_client_type", ClientType.ANDROID_UNPLUGGED, true, parent(SPOOF_VIDEO_STREAMS));
}

View File

@@ -47,6 +47,10 @@ public class BooleanSetting extends Setting<Boolean> {
*/
public static void privateSetValue(@NonNull BooleanSetting setting, @NonNull Boolean newValue) {
setting.value = Objects.requireNonNull(newValue);
if (setting.isSetToDefault()) {
setting.removeFromPreferences();
}
}
@Override
@@ -65,10 +69,8 @@ public class BooleanSetting extends Setting<Boolean> {
}
@Override
public void save(@NonNull Boolean newValue) {
// Must set before saving to preferences (otherwise importing fails to update UI correctly).
value = Objects.requireNonNull(newValue);
preferences.saveBoolean(key, newValue);
public void saveToPreferences() {
preferences.saveBoolean(key, value);
}
@NonNull

View File

@@ -89,10 +89,8 @@ public class EnumSetting<T extends Enum<?>> extends Setting<T> {
}
@Override
public void save(@NonNull T newValue) {
// Must set before saving to preferences (otherwise importing fails to update UI correctly).
value = Objects.requireNonNull(newValue);
preferences.saveEnumAsString(key, newValue);
public void saveToPreferences() {
preferences.saveEnumAsString(key, value);
}
@NonNull

View File

@@ -55,10 +55,8 @@ public class FloatSetting extends Setting<Float> {
}
@Override
public void save(@NonNull Float newValue) {
// Must set before saving to preferences (otherwise importing fails to update UI correctly).
value = Objects.requireNonNull(newValue);
preferences.saveFloatString(key, newValue);
public void saveToPreferences() {
preferences.saveFloatString(key, value);
}
@NonNull

View File

@@ -55,10 +55,8 @@ public class IntegerSetting extends Setting<Integer> {
}
@Override
public void save(@NonNull Integer newValue) {
// Must set before saving to preferences (otherwise importing fails to update UI correctly).
value = Objects.requireNonNull(newValue);
preferences.saveIntegerString(key, newValue);
public void saveToPreferences() {
preferences.saveIntegerString(key, value);
}
@NonNull

View File

@@ -55,10 +55,8 @@ public class LongSetting extends Setting<Long> {
}
@Override
public void save(@NonNull Long newValue) {
// Must set before saving to preferences (otherwise importing fails to update UI correctly).
value = Objects.requireNonNull(newValue);
preferences.saveLongString(key, newValue);
public void saveToPreferences() {
preferences.saveLongString(key, value);
}
@NonNull

View File

@@ -14,7 +14,6 @@ import java.util.*;
import static app.revanced.extension.shared.StringRef.str;
@SuppressWarnings("unused")
public abstract class Setting<T> {
/**
@@ -288,6 +287,13 @@ public abstract class Setting<T> {
*/
public static void privateSetValueFromString(@NonNull Setting<?> setting, @NonNull String newValue) {
setting.setValueFromString(newValue);
// Clear the preference value since default is used, to allow changing
// the changing the default for a future release. Without this after upgrading
// the saved value will be whatever was the default when the app was first installed.
if (setting.isSetToDefault()) {
setting.removeFromPreferences();
}
}
/**
@@ -303,7 +309,33 @@ public abstract class Setting<T> {
/**
* Persistently saves the value.
*/
public abstract void save(@NonNull T newValue);
public final void save(@NonNull T newValue) {
if (value.equals(newValue)) {
return;
}
// Must set before saving to preferences (otherwise importing fails to update UI correctly).
value = Objects.requireNonNull(newValue);
if (defaultValue.equals(newValue)) {
removeFromPreferences();
} else {
saveToPreferences();
}
}
/**
* Save {@link #value} to {@link #preferences}.
*/
protected abstract void saveToPreferences();
/**
* Remove {@link #value} from {@link #preferences}.
*/
protected final void removeFromPreferences() {
Logger.printDebug(() -> "Clearing stored preference value (reset to default): " + key);
preferences.removeKey(key);
}
@NonNull
public abstract T get();

View File

@@ -55,10 +55,8 @@ public class StringSetting extends Setting<String> {
}
@Override
public void save(@NonNull String newValue) {
// Must set before saving to preferences (otherwise importing fails to update UI correctly).
value = Objects.requireNonNull(newValue);
preferences.saveString(key, newValue);
public void saveToPreferences() {
preferences.saveString(key, value);
}
@NonNull

View File

@@ -66,22 +66,6 @@ public enum ClientType {
true,
"Android Creator"
),
ANDROID_VR(
ANDROID_VR_NO_AUTH.id,
ANDROID_VR_NO_AUTH.clientName,
ANDROID_VR_NO_AUTH.packageName,
ANDROID_VR_NO_AUTH.deviceMake,
ANDROID_VR_NO_AUTH.deviceModel,
ANDROID_VR_NO_AUTH.osName,
ANDROID_VR_NO_AUTH.osVersion,
ANDROID_VR_NO_AUTH.androidSdkVersion,
ANDROID_VR_NO_AUTH.buildId,
ANDROID_VR_NO_AUTH.cronetVersion,
ANDROID_VR_NO_AUTH.clientVersion,
ANDROID_VR_NO_AUTH.requiresAuth,
true,
"Android VR"
),
IOS_UNPLUGGED(
33,
"IOS_UNPLUGGED",
@@ -112,6 +96,22 @@ public enum ClientType {
forceAVC()
? "iOS TV Force AVC"
: "iOS TV"
),
ANDROID_VR_AUTH(
ANDROID_VR_NO_AUTH.id,
ANDROID_VR_NO_AUTH.clientName,
ANDROID_VR_NO_AUTH.packageName,
ANDROID_VR_NO_AUTH.deviceMake,
ANDROID_VR_NO_AUTH.deviceModel,
ANDROID_VR_NO_AUTH.osName,
ANDROID_VR_NO_AUTH.osVersion,
ANDROID_VR_NO_AUTH.androidSdkVersion,
ANDROID_VR_NO_AUTH.buildId,
ANDROID_VR_NO_AUTH.cronetVersion,
ANDROID_VR_NO_AUTH.clientVersion,
ANDROID_VR_NO_AUTH.requiresAuth,
true,
"Android VR Auth"
);
private static boolean forceAVC() {

View File

@@ -1,37 +1,60 @@
package app.revanced.extension.tiktok.spoof.sim;
import app.revanced.extension.shared.Logger;
import app.revanced.extension.shared.Utils;
import app.revanced.extension.tiktok.settings.Settings;
@SuppressWarnings("unused")
public class SpoofSimPatch {
private static final boolean ENABLED = Settings.SIM_SPOOF.get();
/**
* During app startup native code can be called with no obvious way to set the context.
* Cannot check if sim spoofing is enabled or the app will crash since no context is set.
*/
private static boolean isContextNotSet(String fieldSpoofed) {
if (Utils.getContext() != null) {
return false;
}
Logger.initializationException(SpoofSimPatch.class,
"Context is not yet set, cannot spoof: " + fieldSpoofed, null);
return true;
}
public static String getCountryIso(String value) {
if (ENABLED) {
if (isContextNotSet("countryIso")) return value;
if (Settings.SIM_SPOOF.get()) {
String iso = Settings.SIM_SPOOF_ISO.get();
Logger.printDebug(() -> "Spoofing sim ISO from: " + value + " to: " + iso);
Logger.printDebug(() -> "Spoofing countryIso from: " + value + " to: " + iso);
return iso;
}
return value;
}
public static String getOperator(String value) {
if (ENABLED) {
if (isContextNotSet("MCC-MNC")) return value;
if (Settings.SIM_SPOOF.get()) {
String mcc_mnc = Settings.SIMSPOOF_MCCMNC.get();
Logger.printDebug(() -> "Spoofing sim MCC-MNC from: " + value + " to: " + mcc_mnc);
return mcc_mnc;
}
return value;
}
public static String getOperatorName(String value) {
if (ENABLED) {
if (isContextNotSet("operatorName")) return value;
if (Settings.SIM_SPOOF.get()) {
String operator = Settings.SIMSPOOF_OP_NAME.get();
Logger.printDebug(() -> "Spoofing sim operator from: " + value + " to: " + operator);
Logger.printDebug(() -> "Spoofing sim operatorName from: " + value + " to: " + operator);
return operator;
}
return value;
}
}

View File

@@ -5,8 +5,6 @@ dependencies {
}
android {
compileSdk = 33 // TODO: Update Swipe controls code to allow updating this to the latest sdk.
defaultConfig {
minSdk = 26
}

View File

@@ -1,24 +0,0 @@
package app.revanced.extension.youtube.patches;
import android.annotation.SuppressLint;
import android.widget.ImageView;
import app.revanced.extension.youtube.settings.Settings;
/** @noinspection unused*/
public final class DisableSuggestedVideoEndScreenPatch {
@SuppressLint("StaticFieldLeak")
private static ImageView lastView;
public static void closeEndScreen(final ImageView imageView) {
if (!Settings.DISABLE_SUGGESTED_VIDEO_END_SCREEN.get()) return;
// Prevent adding the listener multiple times.
if (lastView == imageView) return;
lastView = imageView;
imageView.getViewTreeObserver().addOnGlobalLayoutListener(() -> {
if (imageView.isShown()) imageView.callOnClick();
});
}
}

View File

@@ -0,0 +1,13 @@
package app.revanced.extension.youtube.patches;
import app.revanced.extension.youtube.settings.Settings;
@SuppressWarnings("unused")
public final class HideEndScreenSuggestedVideoPatch {
/**
* Injection point.
*/
public static boolean hideEndScreenSuggestedVideo() {
return Settings.HIDE_END_SCREEN_SUGGESTED_VIDEO.get();
}
}

View File

@@ -21,6 +21,7 @@ public final class NavigationButtonsPatch {
{
put(NavigationButton.HOME, Settings.HIDE_HOME_BUTTON.get());
put(NavigationButton.CREATE, Settings.HIDE_CREATE_BUTTON.get());
put(NavigationButton.NOTIFICATIONS, Settings.HIDE_NOTIFICATIONS_BUTTON.get());
put(NavigationButton.SHORTS, Settings.HIDE_SHORTS_BUTTON.get());
put(NavigationButton.SUBSCRIPTIONS, Settings.HIDE_SUBSCRIPTIONS_BUTTON.get());
}

View File

@@ -1,9 +1,6 @@
package app.revanced.extension.youtube.patches;
import android.app.Activity;
import android.os.Build;
import androidx.annotation.RequiresApi;
import java.lang.ref.WeakReference;
import java.util.Objects;
@@ -58,7 +55,6 @@ public class ShortsAutoplayPatch {
/**
* @return If the app is currently in background PiP mode.
*/
@RequiresApi(api = Build.VERSION_CODES.N)
private static boolean isAppInBackgroundPiPMode() {
Activity activity = mainActivityRef.get();
return activity != null && activity.isInPictureInPictureMode();
@@ -80,7 +76,6 @@ public class ShortsAutoplayPatch {
/**
* Injection point.
*/
@RequiresApi(api = Build.VERSION_CODES.N)
public static Enum<?> changeShortsRepeatBehavior(Enum<?> original) {
try {
final boolean autoplay;

View File

@@ -7,13 +7,10 @@ import static app.revanced.extension.youtube.patches.announcements.requests.Anno
import android.app.Activity;
import android.app.AlertDialog;
import android.os.Build;
import android.text.Html;
import android.text.method.LinkMovementMethod;
import android.widget.TextView;
import androidx.annotation.RequiresApi;
import org.json.JSONArray;
import java.io.IOException;
@@ -31,7 +28,6 @@ public final class AnnouncementsPatch {
private AnnouncementsPatch() {
}
@RequiresApi(api = Build.VERSION_CODES.O)
private static boolean isLatestAlready() throws IOException {
HttpURLConnection connection =
AnnouncementsRoutes.getAnnouncementsConnectionFromRoute(GET_LATEST_ANNOUNCEMENT_IDS);
@@ -70,7 +66,6 @@ public final class AnnouncementsPatch {
return Settings.ANNOUNCEMENT_LAST_ID.get() == id;
}
@RequiresApi(api = Build.VERSION_CODES.O)
public static void showAnnouncement(final Activity context) {
if (!Settings.ANNOUNCEMENTS.get()) return;

View File

@@ -6,8 +6,12 @@ import app.revanced.extension.youtube.settings.Settings;
@SuppressWarnings("unused")
final class ButtonsFilter extends Filter {
private static final String COMPACT_CHANNEL_BAR_PATH_PREFIX = "compact_channel_bar.eml";
private static final String VIDEO_ACTION_BAR_PATH_PREFIX = "video_action_bar.eml";
private static final String VIDEO_ACTION_BAR_PATH = "video_action_bar.eml";
private static final String ANIMATED_VECTOR_TYPE_PATH = "AnimatedVectorType";
private final StringFilterGroup likeSubscribeGlow;
private final StringFilterGroup actionBarGroup;
private final StringFilterGroup bufferFilterPathGroup;
private final ByteArrayFilterGroupList bufferButtonsGroupList = new ByteArrayFilterGroupList();
@@ -20,11 +24,19 @@ final class ButtonsFilter extends Filter {
addIdentifierCallbacks(actionBarGroup);
likeSubscribeGlow = new StringFilterGroup(
Settings.DISABLE_LIKE_SUBSCRIBE_GLOW,
"animated_button_border.eml"
);
bufferFilterPathGroup = new StringFilterGroup(
null,
"|ContainerType|button.eml|"
);
addPathCallbacks(
likeSubscribeGlow,
bufferFilterPathGroup,
new StringFilterGroup(
Settings.HIDE_LIKE_DISLIKE_BUTTON,
"|segmented_like_dislike_button"
@@ -40,8 +52,7 @@ final class ButtonsFilter extends Filter {
new StringFilterGroup(
Settings.HIDE_CLIP_BUTTON,
"|clip_button.eml|"
),
bufferFilterPathGroup
)
);
bufferButtonsGroupList.addAll(
@@ -83,6 +94,15 @@ final class ButtonsFilter extends Filter {
@Override
boolean isFiltered(@Nullable String identifier, String path, byte[] protobufBufferArray,
StringFilterGroup matchedGroup, FilterContentType contentType, int contentIndex) {
if (matchedGroup == likeSubscribeGlow) {
if ((path.startsWith(VIDEO_ACTION_BAR_PATH_PREFIX) || path.startsWith(COMPACT_CHANNEL_BAR_PATH_PREFIX))
&& path.contains(ANIMATED_VECTOR_TYPE_PATH)) {
return super.isFiltered(identifier, path, protobufBufferArray, matchedGroup, contentType, contentIndex);
}
return false;
}
// If the current matched group is the action bar group,
// in case every filter group is enabled, hide the action bar.
if (matchedGroup == actionBarGroup) {

View File

@@ -1,9 +1,6 @@
package app.revanced.extension.youtube.patches.components;
import android.os.Build;
import androidx.annotation.NonNull;
import androidx.annotation.RequiresApi;
import java.util.*;
import java.util.function.Consumer;
@@ -44,13 +41,11 @@ abstract class FilterGroupList<V, T extends FilterGroup<V>> implements Iterable<
return filterGroups.iterator();
}
@RequiresApi(api = Build.VERSION_CODES.N)
@Override
public void forEach(@NonNull Consumer<? super T> action) {
filterGroups.forEach(action);
}
@RequiresApi(api = Build.VERSION_CODES.N)
@NonNull
@Override
public Spliterator<T> spliterator() {

View File

@@ -4,11 +4,8 @@ import static app.revanced.extension.shared.StringRef.str;
import static app.revanced.extension.youtube.shared.NavigationBar.NavigationButton;
import static java.lang.Character.UnicodeBlock.*;
import android.os.Build;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.RequiresApi;
import java.nio.charset.StandardCharsets;
import java.util.LinkedHashMap;
@@ -44,7 +41,6 @@ import app.revanced.extension.youtube.shared.PlayerType;
* - When using whole word syntax, some keywords may need additional pluralized variations.
*/
@SuppressWarnings("unused")
@RequiresApi(api = Build.VERSION_CODES.N)
final class KeywordContentFilter extends Filter {
/**

View File

@@ -3,11 +3,9 @@ package app.revanced.extension.youtube.patches.components;
import static app.revanced.extension.youtube.shared.NavigationBar.NavigationButton;
import android.graphics.drawable.Drawable;
import android.os.Build;
import android.view.View;
import androidx.annotation.Nullable;
import androidx.annotation.RequiresApi;
import app.revanced.extension.shared.Logger;
import app.revanced.extension.shared.Utils;
@@ -18,10 +16,6 @@ import app.revanced.extension.youtube.shared.PlayerType;
@SuppressWarnings("unused")
public final class LayoutComponentsFilter extends Filter {
private static final String COMPACT_CHANNEL_BAR_PATH_PREFIX = "compact_channel_bar.eml";
private static final String VIDEO_ACTION_BAR_PATH_PREFIX = "video_action_bar.eml";
private static final String ANIMATED_VECTOR_TYPE_PATH = "AnimatedVectorType";
private static final StringTrieSearch mixPlaylistsExceptions = new StringTrieSearch(
"V.ED", // Playlist browse id.
"java.lang.ref.WeakReference"
@@ -38,16 +32,15 @@ public final class LayoutComponentsFilter extends Filter {
private final StringTrieSearch exceptions = new StringTrieSearch();
private final StringFilterGroup inFeedSurvey;
private final StringFilterGroup notifyMe;
private final StringFilterGroup singleItemInformationPanel;
private final StringFilterGroup expandableMetadata;
private final ByteArrayFilterGroup searchResultRecommendations;
private final StringFilterGroup searchResultVideo;
private final StringFilterGroup compactChannelBarInner;
private final StringFilterGroup compactChannelBarInnerButton;
private final ByteArrayFilterGroup joinMembershipButton;
private final StringFilterGroup likeSubscribeGlow;
private final StringFilterGroup horizontalShelves;
@RequiresApi(api = Build.VERSION_CODES.N)
public LayoutComponentsFilter() {
exceptions.addPatterns(
"home_video_with_context",
@@ -105,6 +98,11 @@ public final class LayoutComponentsFilter extends Filter {
"compact_banner"
);
final var subscriptionsChipBar = new StringFilterGroup(
Settings.HIDE_FILTER_BAR_FEED_IN_FEED,
"subscriptions_chip_bar"
);
inFeedSurvey = new StringFilterGroup(
Settings.HIDE_FEED_SURVEY,
"in_feed_survey",
@@ -123,8 +121,12 @@ public final class LayoutComponentsFilter extends Filter {
);
final var infoPanel = new StringFilterGroup(
Settings.HIDE_HIDE_INFO_PANELS,
"publisher_transparency_panel",
Settings.HIDE_INFO_PANELS,
"publisher_transparency_panel"
);
singleItemInformationPanel = new StringFilterGroup(
Settings.HIDE_INFO_PANELS,
"single_item_information_panel"
);
@@ -217,10 +219,6 @@ public final class LayoutComponentsFilter extends Filter {
"sponsorships"
);
likeSubscribeGlow = new StringFilterGroup(
Settings.DISABLE_LIKE_SUBSCRIBE_GLOW,
"animated_button_border.eml"
);
final var channelWatermark = new StringFilterGroup(
Settings.HIDE_VIDEO_CHANNEL_WATERMARK,
@@ -254,7 +252,6 @@ public final class LayoutComponentsFilter extends Filter {
expandableMetadata,
inFeedSurvey,
notifyMe,
likeSubscribeGlow,
compactChannelBar,
communityPosts,
paidPromotion,
@@ -269,8 +266,10 @@ public final class LayoutComponentsFilter extends Filter {
compactChannelBarInner,
medicalPanel,
infoPanel,
singleItemInformationPanel,
emergencyBox,
subscribersCommunityGuidelines,
subscriptionsChipBar,
channelGuidelines,
audioTrackButton,
artistCard,
@@ -285,6 +284,19 @@ public final class LayoutComponentsFilter extends Filter {
@Override
boolean isFiltered(@Nullable String identifier, String path, byte[] protobufBufferArray,
StringFilterGroup matchedGroup, FilterContentType contentType, int contentIndex) {
// This identifier is used not only in players but also in search results:
// https://github.com/ReVanced/revanced-patches/issues/3245
// Until 2024, medical information panels such as Covid 19 also used this identifier and were shown in the search results.
// From 2025, the medical information panel is no longer shown in the search results.
// Therefore, this identifier does not filter when the search bar is activated.
if (matchedGroup == singleItemInformationPanel) {
if (PlayerType.getCurrent().isMaximizedOrFullscreen() || !NavigationBar.isSearchBarActive()) {
return super.isFiltered(identifier, path, protobufBufferArray, matchedGroup, contentType, contentIndex);
}
return false;
}
if (matchedGroup == searchResultVideo) {
if (searchResultRecommendations.check(protobufBufferArray).isFiltered()) {
return super.isFiltered(identifier, path, protobufBufferArray, matchedGroup, contentType, contentIndex);
@@ -292,15 +304,6 @@ public final class LayoutComponentsFilter extends Filter {
return false;
}
if (matchedGroup == likeSubscribeGlow) {
if ((path.startsWith(VIDEO_ACTION_BAR_PATH_PREFIX) || path.startsWith(COMPACT_CHANNEL_BAR_PATH_PREFIX))
&& path.contains(ANIMATED_VECTOR_TYPE_PATH)) {
return super.isFiltered(identifier, path, protobufBufferArray, matchedGroup, contentType, contentIndex);
}
return false;
}
// The groups are excluded from the filter due to the exceptions list below.
// Filter them separately here.
if (matchedGroup == notifyMe || matchedGroup == inFeedSurvey || matchedGroup == expandableMetadata)

View File

@@ -1,9 +1,6 @@
package app.revanced.extension.youtube.patches.components;
import android.os.Build;
import androidx.annotation.Nullable;
import androidx.annotation.RequiresApi;
import app.revanced.extension.youtube.settings.Settings;
import app.revanced.extension.youtube.shared.PlayerType;
@@ -16,7 +13,6 @@ public class PlayerFlyoutMenuItemsFilter extends Filter {
private final ByteArrayFilterGroup exception;
private final StringFilterGroup videoQualityMenuFooter;
@RequiresApi(api = Build.VERSION_CODES.N)
public PlayerFlyoutMenuItemsFilter() {
exception = new ByteArrayFilterGroup(
// Whitelist Quality menu item when "Hide Additional settings menu" is enabled

View File

@@ -352,13 +352,16 @@ public class ReturnYouTubeDislike {
}
private static String formatDislikeCount(long dislikeCount) {
synchronized (ReturnYouTubeDislike.class) { // number formatter is not thread safe, must synchronize
synchronized (ReturnYouTubeDislike.class) { // Number formatter is not thread safe.
if (dislikeCountFormatter == null) {
Locale locale = Objects.requireNonNull(Utils.getContext()).getResources().getConfiguration().locale;
// Must use default locale and not Utils context locale,
// otherwise if using a different settings language then the
// formatting will use that of the different language.
Locale locale = Locale.getDefault();
dislikeCountFormatter = CompactDecimalFormat.getInstance(locale, CompactDecimalFormat.CompactStyle.SHORT);
// YouTube disregards locale specific number characters
// and instead shows english number characters everywhere.
// and instead shows English number characters everywhere.
// To use the same behavior, override the digit characters to use English
// so languages such as Arabic will show "1.234" instead of the native "۱,۲۳٤"
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
@@ -375,15 +378,15 @@ public class ReturnYouTubeDislike {
private static String formatDislikePercentage(float dislikePercentage) {
synchronized (ReturnYouTubeDislike.class) { // Number formatter is not thread safe, must synchronize.
if (dislikePercentageFormatter == null) {
Locale locale = Objects.requireNonNull(Utils.getContext()).getResources().getConfiguration().locale;
Locale locale = Locale.getDefault();
dislikePercentageFormatter = NumberFormat.getPercentInstance(locale);
// Want to set the digit strings, and the simplest way is to cast to the implementation NumberFormat returns.
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P
&& dislikePercentageFormatter instanceof DecimalFormat) {
&& dislikePercentageFormatter instanceof DecimalFormat decimalFormatter) {
DecimalFormatSymbols symbols = DecimalFormatSymbols.getInstance(locale);
symbols.setDigitStrings(DecimalFormatSymbols.getInstance(Locale.ENGLISH).getDigitStrings());
((DecimalFormat) dislikePercentageFormatter).setDecimalFormatSymbols(symbols);
decimalFormatter.setDecimalFormatSymbols(symbols);
}
}

View File

@@ -5,15 +5,12 @@ import static app.revanced.extension.shared.Utils.getResourceIdentifier;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Context;
import android.os.Build;
import android.preference.PreferenceFragment;
import android.util.TypedValue;
import android.view.ViewGroup;
import android.widget.TextView;
import android.widget.Toolbar;
import androidx.annotation.RequiresApi;
import java.util.Objects;
import app.revanced.extension.shared.Logger;
@@ -22,6 +19,7 @@ import app.revanced.extension.shared.settings.AppLanguage;
import app.revanced.extension.shared.settings.BaseSettings;
import app.revanced.extension.youtube.ThemeHelper;
import app.revanced.extension.youtube.patches.VersionCheckPatch;
import app.revanced.extension.youtube.patches.spoof.SpoofAppVersionPatch;
import app.revanced.extension.youtube.settings.preference.ReVancedPreferenceFragment;
import app.revanced.extension.youtube.settings.preference.ReturnYouTubeDislikePreferenceFragment;
import app.revanced.extension.youtube.settings.preference.SponsorBlockPreferenceFragment;
@@ -66,6 +64,10 @@ public class LicenseActivityHook {
if (Settings.RESTORE_OLD_SETTINGS_MENUS.get()) {
return false;
}
// Spoofing can cause half broken settings menus of old and new settings.
if (SpoofAppVersionPatch.isSpoofingToLessThan("19.35.36")) {
return false;
}
// On the first launch of a clean install, forcing the cairo menu can give a
// half broken appearance because all the preference icons may not be available yet.
@@ -79,7 +81,6 @@ public class LicenseActivityHook {
* <p>
* Hooks LicenseActivity#onCreate in order to inject our own fragment.
*/
@RequiresApi(api = Build.VERSION_CODES.N)
public static void initialize(Activity licenseActivity) {
try {
ThemeHelper.setActivityTheme(licenseActivity);
@@ -119,15 +120,13 @@ public class LicenseActivityHook {
}
}
@RequiresApi(api = Build.VERSION_CODES.N)
@SuppressLint("UseCompatLoadingForDrawables")
private static void createToolbar(Activity activity, String toolbarTitleResourceName) {
// Replace dummy placeholder toolbar.
// This is required to fix submenu title alignment issue with Android ASOP 15+
ViewGroup toolBarParent = activity.findViewById(
getResourceIdentifier("revanced_toolbar_parent", "id"));
ViewGroup dummyToolbar = toolBarParent.findViewById(getResourceIdentifier(
"revanced_toolbar", "id"));
ViewGroup dummyToolbar = Utils.getChildViewByResourceName(toolBarParent,"revanced_toolbar");
toolbarLayoutParams = dummyToolbar.getLayoutParams();
toolBarParent.removeView(dummyToolbar);

View File

@@ -124,9 +124,7 @@ public class Settings extends BaseSettings {
public static final BooleanSetting COPY_VIDEO_URL = new BooleanSetting("revanced_copy_video_url", FALSE);
public static final BooleanSetting COPY_VIDEO_URL_TIMESTAMP = new BooleanSetting("revanced_copy_video_url_timestamp", TRUE);
public static final BooleanSetting DISABLE_FULLSCREEN_AMBIENT_MODE = new BooleanSetting("revanced_disable_fullscreen_ambient_mode", TRUE, true);
public static final BooleanSetting DISABLE_LIKE_SUBSCRIBE_GLOW = new BooleanSetting("revanced_disable_like_subscribe_glow", FALSE);
public static final BooleanSetting DISABLE_ROLLING_NUMBER_ANIMATIONS = new BooleanSetting("revanced_disable_rolling_number_animations", FALSE);
public static final BooleanSetting DISABLE_SUGGESTED_VIDEO_END_SCREEN = new BooleanSetting("revanced_disable_suggested_video_end_screen", FALSE, true);
public static final EnumSetting<FullscreenMode> EXIT_FULLSCREEN = new EnumSetting<>("revanced_exit_fullscreen", FullscreenMode.DISABLED);
public static final BooleanSetting HIDE_AUTOPLAY_BUTTON = new BooleanSetting("revanced_hide_autoplay_button", TRUE, true);
public static final BooleanSetting HIDE_CAPTIONS_BUTTON = new BooleanSetting("revanced_hide_captions_button", FALSE);
@@ -136,8 +134,9 @@ public class Settings extends BaseSettings {
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_HIDE_CHANNEL_GUIDELINES = new BooleanSetting("revanced_hide_channel_guidelines", TRUE);
public static final BooleanSetting HIDE_HIDE_INFO_PANELS = new BooleanSetting("revanced_hide_info_panels", 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);
public static final BooleanSetting HIDE_MEDICAL_PANELS = new BooleanSetting("revanced_hide_medical_panels", TRUE);
@@ -185,6 +184,7 @@ public class Settings extends BaseSettings {
public static final BooleanSetting HIDE_PODCAST_SECTION = new BooleanSetting("revanced_hide_podcast_section", TRUE);
public static final BooleanSetting HIDE_TRANSCRIPT_SECTION = new BooleanSetting("revanced_hide_transcript_section", TRUE);
// Action buttons
public static final BooleanSetting DISABLE_LIKE_SUBSCRIBE_GLOW = new BooleanSetting("revanced_disable_like_subscribe_glow", FALSE);
public static final BooleanSetting HIDE_CLIP_BUTTON = new BooleanSetting("revanced_hide_clip_button", TRUE);
public static final BooleanSetting HIDE_DOWNLOAD_BUTTON = new BooleanSetting("revanced_hide_download_button", FALSE);
public static final BooleanSetting HIDE_LIKE_DISLIKE_BUTTON = new BooleanSetting("revanced_hide_like_dislike_button", FALSE);
@@ -228,7 +228,9 @@ public class Settings extends BaseSettings {
public static final BooleanSetting HIDE_SHORTS_BUTTON = new BooleanSetting("revanced_hide_shorts_button", TRUE, true);
public static final BooleanSetting HIDE_SUBSCRIPTIONS_BUTTON = new BooleanSetting("revanced_hide_subscriptions_button", FALSE, true);
public static final BooleanSetting HIDE_NAVIGATION_BUTTON_LABELS = new BooleanSetting("revanced_hide_navigation_button_labels", FALSE, true);
public static final BooleanSetting SWITCH_CREATE_WITH_NOTIFICATIONS_BUTTON = new BooleanSetting("revanced_switch_create_with_notifications_button", TRUE, true);
public static final BooleanSetting HIDE_NOTIFICATIONS_BUTTON = new BooleanSetting("revanced_hide_notifications_button", FALSE, true);
public static final BooleanSetting SWITCH_CREATE_WITH_NOTIFICATIONS_BUTTON = new BooleanSetting("revanced_switch_create_with_notifications_button", TRUE, true,
"revanced_switch_create_with_notifications_button_user_dialog_message");
public static final BooleanSetting DISABLE_TRANSLUCENT_STATUS_BAR = new BooleanSetting("revanced_disable_translucent_status_bar", FALSE, true);
public static final BooleanSetting DISABLE_TRANSLUCENT_NAVIGATION_BAR_LIGHT = new BooleanSetting("revanced_disable_translucent_navigation_bar_light", FALSE, true);
public static final BooleanSetting DISABLE_TRANSLUCENT_NAVIGATION_BAR_DARK = new BooleanSetting("revanced_disable_translucent_navigation_bar_dark", FALSE, true);
@@ -282,7 +284,6 @@ public class Settings extends BaseSettings {
"revanced_seekbar_thumbnails_high_quality_dialog_message", new SeekbarThumbnailsHighQualityAvailability());
public static final BooleanSetting SLIDE_TO_SEEK = new BooleanSetting("revanced_slide_to_seek", FALSE, true);
public static final BooleanSetting SEEKBAR_CUSTOM_COLOR = new BooleanSetting("revanced_seekbar_custom_color", FALSE, true);
private static final StringSetting DEPRECATED_SEEKBAR_CUSTOM_COLOR_PRIMARY = new StringSetting("revanced_seekbar_custom_color_value", "#FF0033");
public static final StringSetting SEEKBAR_CUSTOM_COLOR_PRIMARY = new StringSetting("revanced_seekbar_custom_color_primary", "#FF0033", true, parent(SEEKBAR_CUSTOM_COLOR));
public static final StringSetting SEEKBAR_CUSTOM_COLOR_ACCENT = new StringSetting("revanced_seekbar_custom_color_accent", "#FF2791", true, parent(SEEKBAR_CUSTOM_COLOR));
@@ -306,20 +307,19 @@ public class Settings extends BaseSettings {
// Swipe controls
public static final BooleanSetting SWIPE_CHANGE_VIDEO = new BooleanSetting("revanced_swipe_change_video", FALSE, true);
public static final BooleanSetting SWIPE_BRIGHTNESS = new BooleanSetting("revanced_swipe_brightness", FALSE);
public static final BooleanSetting SWIPE_VOLUME = new BooleanSetting("revanced_swipe_volume", FALSE);
public static final BooleanSetting SWIPE_BRIGHTNESS = new BooleanSetting("revanced_swipe_brightness", FALSE, true);
public static final BooleanSetting SWIPE_VOLUME = new BooleanSetting("revanced_swipe_volume", FALSE, true);
public static final BooleanSetting SWIPE_PRESS_TO_ENGAGE = new BooleanSetting("revanced_swipe_press_to_engage", FALSE, true,
parentsAny(SWIPE_BRIGHTNESS, SWIPE_VOLUME));
public static final BooleanSetting SWIPE_HAPTIC_FEEDBACK = new BooleanSetting("revanced_swipe_haptic_feedback", TRUE, true,
parentsAny(SWIPE_BRIGHTNESS, SWIPE_VOLUME));
public static final IntegerSetting SWIPE_MAGNITUDE_THRESHOLD = new IntegerSetting("revanced_swipe_threshold", 30, true,
parentsAny(SWIPE_BRIGHTNESS, SWIPE_VOLUME));
public static final IntegerSetting SWIPE_OVERLAY_OPACITY = new IntegerSetting("revanced_swipe_overlay_background_opacity", 50, true,
public static final BooleanSetting SWIPE_SHOW_CIRCULAR_OVERLAY = new BooleanSetting("revanced_swipe_show_circular_overlay", FALSE, true,
parentsAny(SWIPE_BRIGHTNESS, SWIPE_VOLUME));
private static final IntegerSetting DEPRECATED_SWIPE_OVERLAY_BACKGROUND_ALPHA = new IntegerSetting("revanced_swipe_overlay_background_alpha", 127);
// Debugging
public static final IntegerSetting SWIPE_OVERLAY_TEXT_SIZE = new IntegerSetting("revanced_swipe_text_overlay_size", 22, true,
public static final BooleanSetting SWIPE_OVERLAY_MINIMAL_STYLE = new BooleanSetting("revanced_swipe_overlay_minimal_style", FALSE, true,
parentsAny(SWIPE_BRIGHTNESS, SWIPE_VOLUME));
public static final IntegerSetting SWIPE_OVERLAY_OPACITY = new IntegerSetting("revanced_swipe_overlay_background_opacity", 60, true,
parentsAny(SWIPE_BRIGHTNESS, SWIPE_VOLUME));
public static final LongSetting SWIPE_OVERLAY_TIMEOUT = new LongSetting("revanced_swipe_overlay_timeout", 500L, true,
parentsAny(SWIPE_BRIGHTNESS, SWIPE_VOLUME));
@@ -382,9 +382,12 @@ public class Settings extends BaseSettings {
public static final StringSetting SB_CATEGORY_UNSUBMITTED_COLOR = new StringSetting("sb_unsubmitted_color", "#FFFFFF");
// Deprecated migrations
public static final StringSetting DEPRECATED_SB_UUID_OLD_MIGRATION_SETTING = new StringSetting("uuid", ""); // Delete sometime in 2024
private static final StringSetting DEPRECATED_SB_UUID_OLD_MIGRATION_SETTING = new StringSetting("uuid", ""); // Delete sometime in 2024
private static final BooleanSetting DEPRECATED_HIDE_PLAYER_BUTTONS = new BooleanSetting("revanced_hide_player_buttons", FALSE, true);
private static final BooleanSetting DEPRECATED_HIDE_PLAYER_FLYOUT_VIDEO_QUALITY_FOOTER = new BooleanSetting("revanced_hide_video_quality_menu_footer", FALSE);
private static final IntegerSetting DEPRECATED_SWIPE_OVERLAY_BACKGROUND_ALPHA = new IntegerSetting("revanced_swipe_overlay_background_alpha", 127);
private static final StringSetting DEPRECATED_SEEKBAR_CUSTOM_COLOR_PRIMARY = new StringSetting("revanced_seekbar_custom_color_value", "#FF0033");
private static final BooleanSetting DEPRECATED_DISABLE_SUGGESTED_VIDEO_END_SCREEN = new BooleanSetting("revanced_disable_suggested_video_end_screen", FALSE);
static {
// region Migration
@@ -403,11 +406,7 @@ public class Settings extends BaseSettings {
migrateOldSettingToNew(DEPRECATED_HIDE_PLAYER_FLYOUT_VIDEO_QUALITY_FOOTER, HIDE_PLAYER_FLYOUT_VIDEO_QUALITY_FOOTER);
// Old spoof versions that no longer work reliably.
if (SPOOF_APP_VERSION_TARGET.get().compareTo(SPOOF_APP_VERSION_TARGET.defaultValue) < 0) {
Logger.printInfo(() -> "Resetting spoof app version target");
SPOOF_APP_VERSION_TARGET.resetToDefault();
}
migrateOldSettingToNew(DEPRECATED_DISABLE_SUGGESTED_VIDEO_END_SCREEN, HIDE_END_SCREEN_SUGGESTED_VIDEO);
// Migrate renamed enum.
//noinspection deprecation

View File

@@ -3,18 +3,14 @@ package app.revanced.extension.youtube.settings.preference;
import static android.text.Html.FROM_HTML_MODE_COMPACT;
import android.content.Context;
import android.os.Build;
import android.preference.Preference;
import android.text.Html;
import android.util.AttributeSet;
import androidx.annotation.RequiresApi;
/**
* Allows using basic html for the summary text.
*/
@SuppressWarnings({"unused", "deprecation"})
@RequiresApi(api = Build.VERSION_CODES.O)
public class HtmlPreference extends Preference {
{
setSummary(Html.fromHtml(getSummary().toString(), FROM_HTML_MODE_COMPACT));

View File

@@ -17,8 +17,6 @@ import android.view.WindowInsets;
import android.widget.TextView;
import android.widget.Toolbar;
import androidx.annotation.RequiresApi;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
@@ -98,7 +96,6 @@ public class ReVancedPreferenceFragment extends AbstractPreferenceFragment {
listPreference.setEntryValues(sortedEntryValues);
}
@RequiresApi(api = Build.VERSION_CODES.O)
@Override
protected void initialize() {
super.initialize();

View File

@@ -85,7 +85,7 @@ public class SpoofStreamingDataSideEffectsPreference extends Preference {
String summary = str(key + "_summary");
// Android VR supports AV1 but all other clients do not.
if (clientType != ClientType.ANDROID_VR && clientType != ClientType.ANDROID_VR_NO_AUTH) {
if (clientType != ClientType.ANDROID_VR_AUTH && clientType != ClientType.ANDROID_VR_NO_AUTH) {
summary += '\n' + str("revanced_spoof_video_streams_about_no_av1");
}

View File

@@ -3,11 +3,9 @@ package app.revanced.extension.youtube.shared;
import static app.revanced.extension.youtube.shared.NavigationBar.NavigationButton.CREATE;
import android.app.Activity;
import android.os.Build;
import android.view.View;
import androidx.annotation.Nullable;
import androidx.annotation.RequiresApi;
import java.lang.ref.WeakReference;
import java.util.Arrays;
@@ -257,7 +255,6 @@ public final class NavigationBar {
* Injection point.
* Fixes missing drawable.
*/
@RequiresApi(api = Build.VERSION_CODES.N)
@SuppressWarnings({"unchecked", "rawtypes"})
public static void setCairoNotificationFilledIcon(EnumMap enumMap, Enum tabActivityCairo) {
if (fillBellCairoBlack != 0) {

View File

@@ -21,9 +21,6 @@ enum class PlayerType {
/**
* A regular video is minimized.
*
* When spoofing to 16.x YouTube and watching a short with a regular video in the background,
* the type can be this (and not [HIDDEN]).
*/
WATCH_WHILE_MINIMIZED,
WATCH_WHILE_MAXIMIZED,
@@ -56,8 +53,7 @@ enum class PlayerType {
val newType = nameToPlayerType[enumName]
if (newType == null) {
Logger.printException { "Unknown PlayerType encountered: $enumName" }
} else if (current != newType) {
Logger.printDebug { "PlayerType changed to: $newType" }
} else {
current = newType
}
}
@@ -68,9 +64,13 @@ enum class PlayerType {
@JvmStatic
var current
get() = currentPlayerType
private set(value) {
currentPlayerType = value
onChange(currentPlayerType)
private set(type) {
if (currentPlayerType != type) {
Logger.printDebug { "Changed to: $type" }
currentPlayerType = type
onChange(type)
}
}
@Volatile // Read/write from different threads.

View File

@@ -0,0 +1,56 @@
package app.revanced.extension.youtube.sponsorblock.ui;
import android.view.View;
import androidx.annotation.Nullable;
import app.revanced.extension.shared.Logger;
import app.revanced.extension.youtube.patches.VideoInformation;
import app.revanced.extension.youtube.settings.Settings;
import app.revanced.extension.youtube.videoplayer.PlayerControlButton;
public class CreateSegmentButton {
@Nullable
private static PlayerControlButton instance;
public static void hideControls() {
if (instance != null) instance.hide();
}
/**
* injection point
*/
public static void initialize(View controlsView) {
try {
instance = new PlayerControlButton(
controlsView,
"revanced_sb_create_segment_button",
null,
CreateSegmentButton::shouldBeShown,
v -> SponsorBlockViewController.toggleNewSegmentLayoutVisibility(),
null
);
} catch (Exception ex) {
Logger.printException(() -> "initialize failure", ex);
}
}
/**
* Injection point
*/
public static void setVisibilityImmediate(boolean visible) {
if (instance != null) instance.setVisibilityImmediate(visible);
}
/**
* Injection point
*/
public static void setVisibility(boolean visible, boolean animated) {
if (instance != null) instance.setVisibility(visible, animated);
}
private static boolean shouldBeShown() {
return Settings.SB_ENABLED.get() && Settings.SB_CREATE_NEW_SEGMENT.get()
&& !VideoInformation.isAtEndOfVideo();
}
}

View File

@@ -1,111 +0,0 @@
package app.revanced.extension.youtube.sponsorblock.ui;
import static app.revanced.extension.shared.Utils.getResourceIdentifier;
import android.view.View;
import android.widget.ImageView;
import java.lang.ref.WeakReference;
import java.util.Objects;
import app.revanced.extension.youtube.patches.VideoInformation;
import app.revanced.extension.youtube.settings.Settings;
import app.revanced.extension.shared.Logger;
import app.revanced.extension.shared.Utils;
import app.revanced.extension.youtube.videoplayer.PlayerControlButton;
// Edit: This should be a subclass of PlayerControlButton
public class CreateSegmentButtonController {
private static WeakReference<ImageView> buttonReference = new WeakReference<>(null);
private static boolean isShowing;
/**
* injection point
*/
public static void initialize(View youtubeControlsLayout) {
try {
Logger.printDebug(() -> "initializing new segment button");
ImageView imageView = Objects.requireNonNull(Utils.getChildViewByResourceName(
youtubeControlsLayout, "revanced_sb_create_segment_button"));
imageView.setVisibility(View.GONE);
imageView.setOnClickListener(v -> SponsorBlockViewController.toggleNewSegmentLayoutVisibility());
buttonReference = new WeakReference<>(imageView);
} catch (Exception ex) {
Logger.printException(() -> "initialize failure", ex);
}
}
/**
* injection point
*/
public static void changeVisibilityImmediate(boolean visible) {
if (visible) {
// Fix button flickering, by pushing this call to the back of
// the main thread and letting other layout code run first.
Utils.runOnMainThread(() -> setVisibility(true, false));
} else {
setVisibility(false, false);
}
}
/**
* injection point
*/
public static void changeVisibility(boolean visible, boolean animated) {
// Ignore this call, otherwise with full screen thumbnails the buttons are visible while seeking.
if (visible && !animated) return;
setVisibility(visible, animated);
}
private static void setVisibility(boolean visible, boolean animated) {
try {
if (isShowing == visible) return;
isShowing = visible;
ImageView iView = buttonReference.get();
if (iView == null) return;
if (visible) {
iView.clearAnimation();
if (!shouldBeShown()) {
return;
}
if (animated) {
iView.startAnimation(PlayerControlButton.getButtonFadeIn());
}
iView.setVisibility(View.VISIBLE);
return;
}
if (iView.getVisibility() == View.VISIBLE) {
iView.clearAnimation();
if (animated) {
iView.startAnimation(PlayerControlButton.getButtonFadeOut());
}
iView.setVisibility(View.GONE);
}
} catch (Exception ex) {
Logger.printException(() -> "changeVisibility failure", ex);
}
}
private static boolean shouldBeShown() {
return Settings.SB_ENABLED.get() && Settings.SB_CREATE_NEW_SEGMENT.get()
&& !VideoInformation.isAtEndOfVideo();
}
public static void hide() {
if (!isShowing) {
return;
}
Utils.verifyOnMainThread();
View v = buttonReference.get();
if (v == null) {
return;
}
v.setVisibility(View.GONE);
isShowing = false;
}
}

View File

@@ -238,8 +238,8 @@ public class SponsorBlockViewController {
// but if buttons are showing when the end of the video is reached then they need
// to be forcefully hidden
if (!Settings.AUTO_REPEAT.get()) {
CreateSegmentButtonController.hide();
VotingButtonController.hide();
CreateSegmentButton.hideControls();
VotingButton.hideControls();
}
} catch (Exception ex) {
Logger.printException(() -> "endOfVideoReached failure", ex);

View File

@@ -0,0 +1,58 @@
package app.revanced.extension.youtube.sponsorblock.ui;
import android.view.View;
import androidx.annotation.Nullable;
import app.revanced.extension.shared.Logger;
import app.revanced.extension.youtube.patches.VideoInformation;
import app.revanced.extension.youtube.settings.Settings;
import app.revanced.extension.youtube.sponsorblock.SegmentPlaybackController;
import app.revanced.extension.youtube.sponsorblock.SponsorBlockUtils;
import app.revanced.extension.youtube.videoplayer.PlayerControlButton;
public class VotingButton {
@Nullable
private static PlayerControlButton instance;
public static void hideControls() {
if (instance != null) instance.hide();
}
/**
* injection point
*/
public static void initialize(View controlsView) {
try {
instance = new PlayerControlButton(
controlsView,
"revanced_sb_voting_button",
null,
VotingButton::shouldBeShown,
v -> SponsorBlockUtils.onVotingClicked(v.getContext()),
null
);
} catch (Exception ex) {
Logger.printException(() -> "initialize failure", ex);
}
}
/**
* Injection point
*/
public static void setVisibilityImmediate(boolean visible) {
if (instance != null) instance.setVisibilityImmediate(visible);
}
/**
* Injection point
*/
public static void setVisibility(boolean visible, boolean animated) {
if (instance != null) instance.setVisibility(visible, animated);
}
private static boolean shouldBeShown() {
return Settings.SB_ENABLED.get() && Settings.SB_VOTING_BUTTON.get()
&& SegmentPlaybackController.videoHasSegments() && !VideoInformation.isAtEndOfVideo();
}
}

View File

@@ -1,116 +0,0 @@
package app.revanced.extension.youtube.sponsorblock.ui;
import static app.revanced.extension.shared.Utils.getResourceIdentifier;
import android.view.View;
import android.widget.ImageView;
import java.lang.ref.WeakReference;
import java.util.Objects;
import app.revanced.extension.youtube.patches.VideoInformation;
import app.revanced.extension.youtube.settings.Settings;
import app.revanced.extension.youtube.sponsorblock.SegmentPlaybackController;
import app.revanced.extension.youtube.sponsorblock.SponsorBlockUtils;
import app.revanced.extension.shared.Logger;
import app.revanced.extension.shared.Utils;
import app.revanced.extension.youtube.videoplayer.PlayerControlButton;
// Edit: This should be a subclass of PlayerControlButton
public class VotingButtonController {
private static WeakReference<ImageView> buttonReference = new WeakReference<>(null);
private static boolean isShowing;
/**
* injection point
*/
public static void initialize(View youtubeControlsLayout) {
try {
Logger.printDebug(() -> "initializing voting button");
ImageView imageView = Objects.requireNonNull(Utils.getChildViewByResourceName(
youtubeControlsLayout, "revanced_sb_voting_button"));
imageView.setVisibility(View.GONE);
imageView.setOnClickListener(v -> SponsorBlockUtils.onVotingClicked(v.getContext()));
buttonReference = new WeakReference<>(imageView);
} catch (Exception ex) {
Logger.printException(() -> "initialize failure", ex);
}
}
/**
* injection point
*/
public static void changeVisibilityImmediate(boolean visible) {
if (visible) {
// Fix button flickering, by pushing this call to the back of
// the main thread and letting other layout code run first.
Utils.runOnMainThread(() -> setVisibility(true, false));
} else {
setVisibility(false, false);
}
}
/**
* injection point
*/
public static void changeVisibility(boolean visible, boolean animated) {
// Ignore this call, otherwise with full screen thumbnails the buttons are visible while seeking.
if (visible && !animated) return;
setVisibility(visible, animated);
}
/**
* injection point
*/
private static void setVisibility(boolean visible, boolean animated) {
try {
if (isShowing == visible) return;
isShowing = visible;
ImageView iView = buttonReference.get();
if (iView == null) return;
if (visible) {
iView.clearAnimation();
if (!shouldBeShown()) {
return;
}
if (animated) {
iView.startAnimation(PlayerControlButton.getButtonFadeIn());
}
iView.setVisibility(View.VISIBLE);
return;
}
if (iView.getVisibility() == View.VISIBLE) {
iView.clearAnimation();
if (animated) {
iView.startAnimation(PlayerControlButton.getButtonFadeOut());
}
iView.setVisibility(View.GONE);
}
} catch (Exception ex) {
Logger.printException(() -> "changeVisibility failure", ex);
}
}
private static boolean shouldBeShown() {
return Settings.SB_ENABLED.get() && Settings.SB_VOTING_BUTTON.get()
&& SegmentPlaybackController.videoHasSegments() && !VideoInformation.isAtEndOfVideo();
}
public static void hide() {
if (!isShowing) {
return;
}
Utils.verifyOnMainThread();
View v = buttonReference.get();
if (v == null) {
return;
}
v.setVisibility(View.GONE);
isShowing = false;
}
}

View File

@@ -20,19 +20,17 @@ class SwipeControlsConfigurationProvider(
* should swipe controls be enabled? (global setting)
*/
val enableSwipeControls: Boolean
get() = isFullscreenVideo && (enableVolumeControls || enableBrightnessControl)
get() = (enableVolumeControls || enableBrightnessControl) && isFullscreenVideo
/**
* should swipe controls for volume be enabled?
*/
val enableVolumeControls: Boolean
get() = Settings.SWIPE_VOLUME.get()
val enableVolumeControls = Settings.SWIPE_VOLUME.get()
/**
* should swipe controls for volume be enabled?
*/
val enableBrightnessControl: Boolean
get() = Settings.SWIPE_BRIGHTNESS.get()
val enableBrightnessControl = Settings.SWIPE_BRIGHTNESS.get()
/**
* is the video player currently in fullscreen mode?
@@ -46,7 +44,7 @@ class SwipeControlsConfigurationProvider(
* should volume key controls be overwritten? (global setting)
*/
val overwriteVolumeKeyControls: Boolean
get() = isFullscreenVideo && enableVolumeControls
get() = enableVolumeControls && isFullscreenVideo
//endregion
//region gesture adjustments
@@ -65,7 +63,6 @@ class SwipeControlsConfigurationProvider(
//endregion
//region overlay adjustments
/**
* should the overlay enable haptic feedback?
*/
@@ -79,15 +76,10 @@ class SwipeControlsConfigurationProvider(
get() = Settings.SWIPE_OVERLAY_TIMEOUT.get()
/**
* text size for the overlay, in sp
* Gets the opacity value (0-100%) is converted to an alpha value (0-255) for transparency.
* If the opacity value is out of range, it resets to the default and displays a warning message.
*/
val overlayTextSize: Int
get() = Settings.SWIPE_OVERLAY_TEXT_SIZE.get()
/**
* get the background color for text on the overlay, as a color int
*/
val overlayTextBackgroundColor: Int
val overlayBackgroundOpacity: Int
get() {
var opacity = Settings.SWIPE_OVERLAY_OPACITY.get()
@@ -102,11 +94,34 @@ class SwipeControlsConfigurationProvider(
}
/**
* get the foreground color for text on the overlay, as a color int
* The color of the progress overlay.
*/
val overlayForegroundColor: Int
val overlayProgressColor: Int
get() = 0xBFFFFFFF.toInt()
/**
* The color used for the background of the progress overlay fill.
*/
val overlayFillBackgroundPaint: Int
get() = 0x80D3D3D3.toInt()
/**
* The color used for the text and icons in the overlay.
*/
val overlayTextColor: Int
get() = Color.WHITE
/**
* A flag that determines if the overlay should only show the icon.
*/
val overlayShowOverlayMinimalStyle: Boolean
get() = Settings.SWIPE_OVERLAY_MINIMAL_STYLE.get()
/**
* A flag that determines if the progress bar should be circular.
*/
val isCircularProgressBar: Boolean
get() = Settings.SWIPE_SHOW_CIRCULAR_OVERLAY.get()
//endregion
//region behaviour

View File

@@ -82,11 +82,15 @@ abstract class BaseGestureController(
}
override fun onScroll(
from: MotionEvent,
from: MotionEvent?,
to: MotionEvent,
distanceX: Float,
distanceY: Float,
): Boolean {
if (from == null) {
return false
}
// submit to swipe detector
submitForSwipe(from, to, distanceX, distanceY)

View File

@@ -1,138 +1,145 @@
package app.revanced.extension.youtube.swipecontrols.views
import android.content.Context
import android.graphics.Canvas
import android.graphics.Paint
import android.graphics.RectF
import android.graphics.drawable.Drawable
import android.graphics.drawable.GradientDrawable
import android.os.Handler
import android.os.Looper
import android.util.TypedValue
import android.util.AttributeSet
import android.view.HapticFeedbackConstants
import android.view.View
import android.view.ViewGroup
import android.widget.RelativeLayout
import android.widget.TextView
import app.revanced.extension.shared.StringRef.str
import app.revanced.extension.shared.Utils
import app.revanced.extension.youtube.swipecontrols.SwipeControlsConfigurationProvider
import app.revanced.extension.youtube.swipecontrols.misc.SwipeControlsOverlay
import app.revanced.extension.youtube.swipecontrols.misc.applyDimension
import kotlin.math.min
import kotlin.math.round
/**
* main overlay layout for volume and brightness swipe controls
*
* @param context context to create in
* Main overlay layout for displaying volume and brightness level with both circular and horizontal progress bars.
*/
class SwipeControlsOverlayLayout(
context: Context,
private val config: SwipeControlsConfigurationProvider,
) : RelativeLayout(context), SwipeControlsOverlay {
/**
* DO NOT use this, for tools only
*/
constructor(context: Context) : this(context, SwipeControlsConfigurationProvider(context))
private val feedbackTextView: TextView
private val autoBrightnessIcon: Drawable
private val manualBrightnessIcon: Drawable
private val mutedVolumeIcon: Drawable
private val normalVolumeIcon: Drawable
// Drawable icons for brightness and volume
private val autoBrightnessIcon: Drawable = getDrawable("revanced_ic_sc_brightness_auto")
private val lowBrightnessIcon: Drawable = getDrawable("revanced_ic_sc_brightness_low")
private val mediumBrightnessIcon: Drawable = getDrawable("revanced_ic_sc_brightness_medium")
private val highBrightnessIcon: Drawable = getDrawable("revanced_ic_sc_brightness_high")
private val fullBrightnessIcon: Drawable = getDrawable("revanced_ic_sc_brightness_full")
private val mutedVolumeIcon: Drawable = getDrawable("revanced_ic_sc_volume_mute")
private val lowVolumeIcon: Drawable = getDrawable("revanced_ic_sc_volume_low")
private val normalVolumeIcon: Drawable = getDrawable("revanced_ic_sc_volume_normal")
private val fullVolumeIcon: Drawable = getDrawable("revanced_ic_sc_volume_high")
private fun getDrawable(name: String, width: Int, height: Int): Drawable {
return resources.getDrawable(
// Function to retrieve drawable resources by name
private fun getDrawable(name: String): Drawable {
val drawable = resources.getDrawable(
Utils.getResourceIdentifier(context, name, "drawable"),
context.theme,
).apply {
setTint(config.overlayForegroundColor)
setBounds(
0,
0,
width,
height,
)
}
)
drawable.setTint(config.overlayTextColor)
return drawable
}
// Initialize progress bars
private val circularProgressView: CircularProgressView
private val horizontalProgressView: HorizontalProgressView
init {
// init views
val feedbackTextViewPadding = 2.applyDimension(context, TypedValue.COMPLEX_UNIT_DIP)
val compoundIconPadding = 4.applyDimension(context, TypedValue.COMPLEX_UNIT_DIP)
feedbackTextView = TextView(context).apply {
layoutParams = LayoutParams(
LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT,
).apply {
// Initialize circular progress bar
circularProgressView = CircularProgressView(
context,
config.overlayBackgroundOpacity,
config.overlayShowOverlayMinimalStyle,
config.overlayProgressColor,
config.overlayFillBackgroundPaint,
config.overlayTextColor
).apply {
layoutParams = LayoutParams(300, 300).apply {
addRule(CENTER_IN_PARENT, TRUE)
setPadding(
feedbackTextViewPadding,
feedbackTextViewPadding,
feedbackTextViewPadding,
feedbackTextViewPadding,
)
}
background = GradientDrawable().apply {
cornerRadius = 8f
setColor(config.overlayTextBackgroundColor)
}
setTextColor(config.overlayForegroundColor)
setTextSize(TypedValue.COMPLEX_UNIT_SP, config.overlayTextSize.toFloat())
compoundDrawablePadding = compoundIconPadding
visibility = GONE
visibility = GONE // Initially hidden
}
addView(feedbackTextView)
addView(circularProgressView)
// get icons scaled, assuming square icons
val iconHeight = round(feedbackTextView.lineHeight * .8).toInt()
autoBrightnessIcon = getDrawable("revanced_ic_sc_brightness_auto", iconHeight, iconHeight)
manualBrightnessIcon = getDrawable("revanced_ic_sc_brightness_manual", iconHeight, iconHeight)
mutedVolumeIcon = getDrawable("revanced_ic_sc_volume_mute", iconHeight, iconHeight)
normalVolumeIcon = getDrawable("revanced_ic_sc_volume_normal", iconHeight, iconHeight)
// Initialize horizontal progress bar
val screenWidth = resources.displayMetrics.widthPixels
val layoutWidth = (screenWidth * 2 / 3).toInt() // 2/3 of screen width
horizontalProgressView = HorizontalProgressView(
context,
config.overlayBackgroundOpacity,
config.overlayShowOverlayMinimalStyle,
config.overlayProgressColor,
config.overlayFillBackgroundPaint,
config.overlayTextColor
).apply {
layoutParams = LayoutParams(layoutWidth, 100).apply {
addRule(CENTER_HORIZONTAL)
topMargin = 40 // Top margin
}
visibility = GONE // Initially hidden
}
addView(horizontalProgressView)
}
// Handler and callback for hiding progress bars
private val feedbackHideHandler = Handler(Looper.getMainLooper())
private val feedbackHideCallback = Runnable {
feedbackTextView.visibility = GONE
circularProgressView.visibility = GONE
horizontalProgressView.visibility = GONE
}
/**
* show the feedback view for a given time
*
* @param message the message to show
* @param icon the icon to use
* Displays the progress bar with the appropriate value, icon, and type (brightness or volume).
*/
private fun showFeedbackView(message: String, icon: Drawable) {
private fun showFeedbackView(value: String, progress: Int, max: Int, icon: Drawable, isBrightness: Boolean) {
feedbackHideHandler.removeCallbacks(feedbackHideCallback)
feedbackHideHandler.postDelayed(feedbackHideCallback, config.overlayShowTimeoutMillis)
feedbackTextView.apply {
text = message
setCompoundDrawablesRelative(
icon,
null,
null,
null,
)
val viewToShow = if (config.isCircularProgressBar) circularProgressView else horizontalProgressView
viewToShow.apply {
setProgress(progress, max, value, isBrightness)
this.icon = icon
visibility = VISIBLE
}
}
// Handle volume change
override fun onVolumeChanged(newVolume: Int, maximumVolume: Int) {
showFeedbackView(
"$newVolume",
if (newVolume > 0) normalVolumeIcon else mutedVolumeIcon,
)
val volumePercentage = (newVolume.toFloat() / maximumVolume) * 100
val icon = when {
newVolume == 0 -> mutedVolumeIcon
volumePercentage < 33 -> lowVolumeIcon
volumePercentage < 66 -> normalVolumeIcon
else -> fullVolumeIcon
}
showFeedbackView("$newVolume", newVolume, maximumVolume, icon, isBrightness = false)
}
// Handle brightness change
override fun onBrightnessChanged(brightness: Double) {
if (config.shouldLowestValueEnableAutoBrightness && brightness <= 0) {
showFeedbackView(
str("revanced_swipe_lowest_value_enable_auto_brightness_overlay_text"),
autoBrightnessIcon,
)
} else if (brightness >= 0) {
showFeedbackView("${round(brightness).toInt()}%", manualBrightnessIcon)
showFeedbackView("Auto", 0, 100, autoBrightnessIcon, isBrightness = true)
} else {
val brightnessValue = round(brightness).toInt()
val icon = when {
brightnessValue < 25 -> lowBrightnessIcon
brightnessValue < 50 -> mediumBrightnessIcon
brightnessValue < 75 -> highBrightnessIcon
else -> fullBrightnessIcon
}
showFeedbackView("$brightnessValue%", brightnessValue, 100, icon, isBrightness = true)
}
}
// Begin swipe session
override fun onEnterSwipeSession() {
if (config.shouldEnableHapticFeedback) {
@Suppress("DEPRECATION")
@@ -143,3 +150,229 @@ class SwipeControlsOverlayLayout(
}
}
}
/**
* Abstract base class for progress views.
*/
abstract class AbstractProgressView(
context: Context,
protected val overlayBackgroundOpacity: Int,
protected val overlayShowOverlayMinimalStyle: Boolean,
protected val overlayProgressColor: Int,
protected val overlayFillBackgroundPaint: Int,
protected val overlayTextColor: Int,
attrs: AttributeSet? = null,
defStyleAttr: Int = 0
) : View(context, attrs, defStyleAttr) {
// Combined paint creation function for both fill and stroke styles
private fun createPaint(color: Int, style: Paint.Style = Paint.Style.FILL, strokeCap: Paint.Cap = Paint.Cap.BUTT, strokeWidth: Float = 0f) = Paint(Paint.ANTI_ALIAS_FLAG).apply {
this.style = style
this.color = color
this.strokeCap = strokeCap
this.strokeWidth = strokeWidth
}
// Initialize paints
public val backgroundPaint = createPaint(overlayBackgroundOpacity, style = Paint.Style.FILL)
public val progressPaint = createPaint(overlayProgressColor, style = Paint.Style.STROKE, strokeCap = Paint.Cap.ROUND, strokeWidth = 20f)
public val fillBackgroundPaint = createPaint(overlayFillBackgroundPaint, style = Paint.Style.FILL)
public val textPaint = Paint(Paint.ANTI_ALIAS_FLAG).apply {
color = overlayTextColor
textAlign = Paint.Align.CENTER
textSize = 40f // Can adjust based on need
}
protected var progress = 0
protected var maxProgress = 100
protected var displayText: String = "0"
protected var isBrightness = true
public var icon: Drawable? = null
init {
// Stroke widths are now set in createPaint for progressPaint and fillBackgroundPaint
}
fun setProgress(value: Int, max: Int, text: String, isBrightnessMode: Boolean) {
progress = value
maxProgress = max
displayText = text
isBrightness = isBrightnessMode
invalidate()
}
override fun onDraw(canvas: Canvas) {
// Base class implementation can be empty
}
}
/**
* Custom view for rendering a circular progress indicator with icons and text.
*/
class CircularProgressView(
context: Context,
overlayBackgroundOpacity: Int,
overlayShowOverlayMinimalStyle: Boolean,
overlayProgressColor: Int,
overlayFillBackgroundPaint: Int,
overlayTextColor: Int,
attrs: AttributeSet? = null,
defStyleAttr: Int = 0
) : AbstractProgressView(
context,
overlayBackgroundOpacity,
overlayShowOverlayMinimalStyle,
overlayProgressColor,
overlayFillBackgroundPaint,
overlayTextColor,
attrs,
defStyleAttr
) {
private val rectF = RectF()
init {
textPaint.textSize = 40f // Override default text size for circular view
progressPaint.strokeWidth = 20f
fillBackgroundPaint.strokeWidth = 20f
progressPaint.strokeCap = Paint.Cap.ROUND
fillBackgroundPaint.strokeCap = Paint.Cap.BUTT
progressPaint.style = Paint.Style.STROKE
fillBackgroundPaint.style = Paint.Style.STROKE
}
override fun onDraw(canvas: Canvas) {
super.onDraw(canvas)
val size = min(width, height).toFloat()
rectF.set(20f, 20f, size - 20f, size - 20f)
canvas.drawOval(rectF, fillBackgroundPaint) // Draw the outer ring.
canvas.drawCircle(width / 2f, height / 2f, size / 3, backgroundPaint) // Draw the inner circle.
// Select the paint for drawing based on whether it's brightness or volume.
val sweepAngle = (progress.toFloat() / maxProgress) * 360
canvas.drawArc(rectF, -90f, sweepAngle, false, progressPaint) // Draw the progress arc.
// Draw the icon in the center.
icon?.let {
val iconSize = if (overlayShowOverlayMinimalStyle) 100 else 80
val iconX = (width - iconSize) / 2
val iconY = (height / 2) - if (overlayShowOverlayMinimalStyle) 50 else 80
it.setBounds(iconX, iconY, iconX + iconSize, iconY + iconSize)
it.draw(canvas)
}
// If not a minimal style mode, draw the text inside the ring.
if (!overlayShowOverlayMinimalStyle) {
canvas.drawText(displayText, width / 2f, height / 2f + 60f, textPaint)
}
}
}
/**
* Custom view for rendering a rectangular progress bar with icons and text.
*/
class HorizontalProgressView(
context: Context,
overlayBackgroundOpacity: Int,
overlayShowOverlayMinimalStyle: Boolean,
overlayProgressColor: Int,
overlayFillBackgroundPaint: Int,
overlayTextColor: Int,
attrs: AttributeSet? = null,
defStyleAttr: Int = 0
) : AbstractProgressView(
context,
overlayBackgroundOpacity,
overlayShowOverlayMinimalStyle,
overlayProgressColor,
overlayFillBackgroundPaint,
overlayTextColor,
attrs,
defStyleAttr
) {
private val iconSize = 60f
private val padding = 40f
init {
textPaint.textSize = 36f // Override default text size for horizontal view
progressPaint.strokeWidth = 0f
progressPaint.strokeCap = Paint.Cap.BUTT
progressPaint.style = Paint.Style.FILL
fillBackgroundPaint.style = Paint.Style.FILL
}
override fun onDraw(canvas: Canvas) {
super.onDraw(canvas)
val width = width.toFloat()
val height = height.toFloat()
// Radius for rounded corners
val cornerRadius = min(width, height) / 2
// Calculate the total width for the elements
val minimalElementWidth = 5 * padding + iconSize
// Calculate the starting point (X) to center the elements
val minimalStartX = (width - minimalElementWidth) / 2
// Draw the background
if (!overlayShowOverlayMinimalStyle) {
canvas.drawRoundRect(0f, 0f, width, height, cornerRadius, cornerRadius, backgroundPaint)
} else {
canvas.drawRoundRect(minimalStartX, 0f, minimalStartX + minimalElementWidth, height, cornerRadius, cornerRadius, backgroundPaint)
}
if (!overlayShowOverlayMinimalStyle) {
// Draw the fill background
val startX = 2 * padding + iconSize
val endX = width - 4 * padding
val fillWidth = endX - startX
canvas.drawRoundRect(
startX,
height / 2 - 5f,
endX,
height / 2 + 5f,
10f, 10f,
fillBackgroundPaint
)
// Draw the progress
val progressWidth = (progress.toFloat() / maxProgress) * fillWidth
canvas.drawRoundRect(
startX,
height / 2 - 5f,
startX + progressWidth,
height / 2 + 5f,
10f, 10f,
progressPaint
)
}
// Draw the icon
icon?.let {
val iconX = if (!overlayShowOverlayMinimalStyle) {
padding
} else {
padding + minimalStartX
}
val iconY = height / 2 - iconSize / 2
it.setBounds(iconX.toInt(), iconY.toInt(), (iconX + iconSize).toInt(), (iconY + iconSize).toInt())
it.draw(canvas)
}
// Draw the text on the right
val textX = if (!overlayShowOverlayMinimalStyle) {
width - 2 * padding
} else {
minimalStartX + minimalElementWidth - 2 * padding
}
val textY = height / 2 + textPaint.textSize / 3
// Draw the text
canvas.drawText(displayText, textX, textY, textPaint)
}
}

View File

@@ -1,38 +1,35 @@
package app.revanced.extension.youtube.videoplayer;
import android.view.View;
import android.view.ViewGroup;
import androidx.annotation.Nullable;
import app.revanced.extension.shared.Logger;
import app.revanced.extension.youtube.patches.CopyVideoUrlPatch;
import app.revanced.extension.youtube.settings.Settings;
import app.revanced.extension.shared.Logger;
import app.revanced.extension.youtube.shared.PlayerType;
@SuppressWarnings("unused")
public class CopyVideoUrlButton extends PlayerControlButton {
public class CopyVideoUrlButton {
@Nullable
private static CopyVideoUrlButton instance;
public CopyVideoUrlButton(ViewGroup viewGroup) {
super(
viewGroup,
"revanced_copy_video_url_button",
Settings.COPY_VIDEO_URL,
view -> CopyVideoUrlPatch.copyUrl(false),
view -> {
CopyVideoUrlPatch.copyUrl(true);
return true;
}
);
}
private static PlayerControlButton instance;
/**
* Injection point.
*/
public static void initializeButton(View view) {
public static void initializeButton(View controlsView) {
try {
instance = new CopyVideoUrlButton((ViewGroup) view);
instance = new PlayerControlButton(
controlsView,
"revanced_copy_video_url_button",
"revanced_copy_video_url_button_placeholder",
Settings.COPY_VIDEO_URL::get,
view -> CopyVideoUrlPatch.copyUrl(false),
view -> {
CopyVideoUrlPatch.copyUrl(true);
return true;
}
);
} catch (Exception ex) {
Logger.printException(() -> "initializeButton failure", ex);
}
@@ -41,14 +38,14 @@ public class CopyVideoUrlButton extends PlayerControlButton {
/**
* injection point
*/
public static void changeVisibilityImmediate(boolean visible) {
public static void setVisibilityImmediate(boolean visible) {
if (instance != null) instance.setVisibilityImmediate(visible);
}
/**
* injection point
*/
public static void changeVisibility(boolean visible, boolean animated) {
public static void setVisibility(boolean visible, boolean animated) {
if (instance != null) instance.setVisibility(visible, animated);
}
}

View File

@@ -1,38 +1,35 @@
package app.revanced.extension.youtube.videoplayer;
import android.view.View;
import android.view.ViewGroup;
import androidx.annotation.Nullable;
import app.revanced.extension.shared.Logger;
import app.revanced.extension.youtube.patches.CopyVideoUrlPatch;
import app.revanced.extension.youtube.settings.Settings;
import app.revanced.extension.shared.Logger;
import app.revanced.extension.youtube.shared.PlayerType;
@SuppressWarnings("unused")
public class CopyVideoUrlTimestampButton extends PlayerControlButton {
public class CopyVideoUrlTimestampButton {
@Nullable
private static CopyVideoUrlTimestampButton instance;
public CopyVideoUrlTimestampButton(ViewGroup bottomControlsViewGroup) {
super(
bottomControlsViewGroup,
"revanced_copy_video_url_timestamp_button",
Settings.COPY_VIDEO_URL_TIMESTAMP,
view -> CopyVideoUrlPatch.copyUrl(true),
view -> {
CopyVideoUrlPatch.copyUrl(false);
return true;
}
);
}
private static PlayerControlButton instance;
/**
* Injection point.
*/
public static void initializeButton(View bottomControlsViewGroup) {
public static void initializeButton(View controlsView) {
try {
instance = new CopyVideoUrlTimestampButton((ViewGroup) bottomControlsViewGroup);
instance = new PlayerControlButton(
controlsView,
"revanced_copy_video_url_timestamp_button",
"revanced_copy_video_url_timestamp_button_placeholder",
Settings.COPY_VIDEO_URL_TIMESTAMP::get,
view -> CopyVideoUrlPatch.copyUrl(true),
view -> {
CopyVideoUrlPatch.copyUrl(false);
return true;
}
);
} catch (Exception ex) {
Logger.printException(() -> "initializeButton failure", ex);
}
@@ -41,14 +38,14 @@ public class CopyVideoUrlTimestampButton extends PlayerControlButton {
/**
* injection point
*/
public static void changeVisibilityImmediate(boolean visible) {
public static void setVisibilityImmediate(boolean visible) {
if (instance != null) instance.setVisibilityImmediate(visible);
}
/**
* injection point
*/
public static void changeVisibility(boolean visible, boolean animated) {
public static void setVisibility(boolean visible, boolean animated) {
if (instance != null) instance.setVisibility(visible, animated);
}
}

View File

@@ -1,7 +1,6 @@
package app.revanced.extension.youtube.videoplayer;
import android.view.View;
import android.view.ViewGroup;
import androidx.annotation.Nullable;
@@ -11,26 +10,23 @@ import app.revanced.extension.youtube.patches.VideoInformation;
import app.revanced.extension.youtube.settings.Settings;
@SuppressWarnings("unused")
public class ExternalDownloadButton extends PlayerControlButton {
public class ExternalDownloadButton {
@Nullable
private static ExternalDownloadButton instance;
public ExternalDownloadButton(ViewGroup viewGroup) {
super(
viewGroup,
"revanced_external_download_button",
Settings.EXTERNAL_DOWNLOADER,
ExternalDownloadButton::onDownloadClick,
null
);
}
private static PlayerControlButton instance;
/**
* Injection point.
*/
public static void initializeButton(View view) {
public static void initializeButton(View controlsView) {
try {
instance = new ExternalDownloadButton((ViewGroup) view);
instance = new PlayerControlButton(
controlsView,
"revanced_external_download_button",
"revanced_external_download_button_placeholder",
Settings.EXTERNAL_DOWNLOADER::get,
ExternalDownloadButton::onDownloadClick,
null
);
} catch (Exception ex) {
Logger.printException(() -> "initializeButton failure", ex);
}
@@ -39,14 +35,14 @@ public class ExternalDownloadButton extends PlayerControlButton {
/**
* injection point
*/
public static void changeVisibilityImmediate(boolean visible) {
public static void setVisibilityImmediate(boolean visible) {
if (instance != null) instance.setVisibilityImmediate(visible);
}
/**
* injection point
* Injection point
*/
public static void changeVisibility(boolean visible, boolean animated) {
public static void setVisibility(boolean visible, boolean animated) {
if (instance != null) instance.setVisibility(visible, animated);
}

View File

@@ -1,35 +1,31 @@
package app.revanced.extension.youtube.videoplayer;
import android.view.View;
import android.view.ViewGroup;
import androidx.annotation.Nullable;
import app.revanced.extension.shared.Logger;
import app.revanced.extension.youtube.patches.playback.speed.CustomPlaybackSpeedPatch;
import app.revanced.extension.youtube.settings.Settings;
import app.revanced.extension.shared.Logger;
@SuppressWarnings("unused")
public class PlaybackSpeedDialogButton extends PlayerControlButton {
public class PlaybackSpeedDialogButton {
@Nullable
private static PlaybackSpeedDialogButton instance;
public PlaybackSpeedDialogButton(ViewGroup viewGroup) {
super(
viewGroup,
"revanced_playback_speed_dialog_button",
Settings.PLAYBACK_SPEED_DIALOG_BUTTON,
view -> CustomPlaybackSpeedPatch.showOldPlaybackSpeedMenu(),
null
);
}
private static PlayerControlButton instance;
/**
* Injection point.
*/
public static void initializeButton(View view) {
public static void initializeButton(View controlsView) {
try {
instance = new PlaybackSpeedDialogButton((ViewGroup) view);
instance = new PlayerControlButton(
controlsView,
"revanced_playback_speed_dialog_button",
"revanced_playback_speed_dialog_button_placeholder",
Settings.PLAYBACK_SPEED_DIALOG_BUTTON::get,
view -> CustomPlaybackSpeedPatch.showOldPlaybackSpeedMenu(),
null
);
} catch (Exception ex) {
Logger.printException(() -> "initializeButton failure", ex);
}
@@ -38,14 +34,14 @@ public class PlaybackSpeedDialogButton extends PlayerControlButton {
/**
* injection point
*/
public static void changeVisibilityImmediate(boolean visible) {
public static void setVisibilityImmediate(boolean visible) {
if (instance != null) instance.setVisibilityImmediate(visible);
}
/**
* injection point
*/
public static void changeVisibility(boolean visible, boolean animated) {
public static void setVisibility(boolean visible, boolean animated) {
if (instance != null) instance.setVisibility(visible, animated);
}
}

View File

@@ -1,73 +1,92 @@
package app.revanced.extension.youtube.videoplayer;
import android.view.View;
import android.view.ViewGroup;
import android.view.animation.Animation;
import android.widget.ImageView;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import java.lang.ref.WeakReference;
import java.util.Objects;
import app.revanced.extension.shared.Logger;
import app.revanced.extension.shared.Utils;
import app.revanced.extension.shared.settings.BooleanSetting;
import app.revanced.extension.youtube.shared.PlayerType;
import kotlin.Unit;
public abstract class PlayerControlButton {
private static final Animation fadeIn;
private static final Animation fadeOut;
public class PlayerControlButton {
public interface PlayerControlButtonVisibility {
/**
* @return If the button should be shown when the player overlay is visible.
*/
boolean shouldBeShown();
}
private static final int fadeInDuration;
private static final int fadeOutDuration;
private static final Animation fadeInAnimation;
private static final Animation fadeOutAnimation;
private static final Animation fadeOutImmediate;
private final WeakReference<ImageView> buttonRef;
protected final BooleanSetting setting;
protected boolean isVisible;
static {
// TODO: check if these durations are correct.
fadeIn = Utils.getResourceAnimation("fade_in");
fadeIn.setDuration(Utils.getResourceInteger("fade_duration_fast"));
fadeInDuration = Utils.getResourceInteger("fade_duration_fast");
fadeOutDuration = Utils.getResourceInteger("fade_duration_scheduled");
fadeOut = Utils.getResourceAnimation("fade_out");
fadeOut.setDuration(Utils.getResourceInteger("fade_duration_scheduled"));
fadeInAnimation = Utils.getResourceAnimation("fade_in");
fadeInAnimation.setDuration(fadeInDuration);
fadeOutAnimation = Utils.getResourceAnimation("fade_out");
fadeOutAnimation.setDuration(fadeOutDuration);
// Animation for the fast fade out after tapping the overlay.
// Currently not used but should be.
fadeOutImmediate = Utils.getResourceAnimation("abc_fade_out");
fadeOutImmediate.setDuration(Utils.getResourceInteger("fade_duration_fast"));
}
@NonNull
public static Animation getButtonFadeIn() {
return fadeIn;
}
private final WeakReference<View> buttonRef;
/**
* Empty view with the same layout size as the button. Used to fill empty space while the
* fade out animation runs. Without this the chapter titles overlapping the button when fading out.
*/
private final WeakReference<View> placeHolderRef;
private final PlayerControlButtonVisibility visibilityCheck;
private boolean isVisible;
@NonNull
public static Animation getButtonFadeOut() {
return fadeOut;
}
@NonNull
public static Animation getButtonFadeOutImmediately() {
return fadeOutImmediate;
}
public PlayerControlButton(@NonNull ViewGroup bottomControlsViewGroup, @NonNull String imageViewButtonId,
@NonNull BooleanSetting booleanSetting, @NonNull View.OnClickListener onClickListener,
public PlayerControlButton(View controlsViewGroup,
String imageViewButtonId,
@Nullable String placeholderId,
PlayerControlButtonVisibility buttonVisibility,
View.OnClickListener onClickListener,
@Nullable View.OnLongClickListener longClickListener) {
Logger.printDebug(() -> "Initializing button: " + imageViewButtonId);
ImageView imageView = Objects.requireNonNull(bottomControlsViewGroup.findViewById(
Utils.getResourceIdentifier(imageViewButtonId, "id")
));
ImageView imageView = Utils.getChildViewByResourceName(controlsViewGroup, imageViewButtonId);
imageView.setVisibility(View.GONE);
View tempPlaceholder = null;
if (placeholderId != null) {
tempPlaceholder = Utils.getChildViewByResourceName(controlsViewGroup, placeholderId);
tempPlaceholder.setVisibility(View.GONE);
}
placeHolderRef = new WeakReference<>(tempPlaceholder);
imageView.setOnClickListener(onClickListener);
if (longClickListener != null) {
imageView.setOnLongClickListener(longClickListener);
}
setting = booleanSetting;
visibilityCheck = buttonVisibility;
buttonRef = new WeakReference<>(imageView);
isVisible = false;
// Update the visibility after the player type changes.
// This ensures that button animations are cleared and their states are updated correctly
// when switching between states like minimized, maximized, or fullscreen, preventing
// "stuck" animations or incorrect visibility. Without this fix the issue is most noticable
// when maximizing type 3 miniplayer.
PlayerType.getOnChange().addObserver((PlayerType type) -> {
playerTypeChanged(type);
return Unit.INSTANCE;
});
}
public void setVisibilityImmediate(boolean visible) {
@@ -92,26 +111,80 @@ public abstract class PlayerControlButton {
if (isVisible == visible) return;
isVisible = visible;
ImageView iView = buttonRef.get();
if (iView == null) {
return;
}
View button = buttonRef.get();
if (button == null) return;
if (visible && setting.get()) {
iView.clearAnimation();
View placeholder = placeHolderRef.get();
final boolean shouldBeShown = visibilityCheck.shouldBeShown();
if (visible && shouldBeShown) {
button.clearAnimation();
if (animated) {
iView.startAnimation(PlayerControlButton.getButtonFadeIn());
button.startAnimation(PlayerControlButton.fadeInAnimation);
}
iView.setVisibility(View.VISIBLE);
} else if (iView.getVisibility() == View.VISIBLE) {
iView.clearAnimation();
if (animated) {
iView.startAnimation(PlayerControlButton.getButtonFadeOut());
button.setVisibility(View.VISIBLE);
if (placeholder != null) {
placeholder.setVisibility(View.GONE);
}
} else {
if (button.getVisibility() == View.VISIBLE) {
button.clearAnimation();
if (animated) {
button.startAnimation(PlayerControlButton.fadeOutAnimation);
}
button.setVisibility(View.GONE);
}
if (placeholder != null) {
placeholder.setVisibility(shouldBeShown
? View.VISIBLE
: View.GONE);
}
iView.setVisibility(View.GONE);
}
} catch (Exception ex) {
Logger.printException(() -> "setVisibility failure", ex);
Logger.printException(() -> "private_setVisibility failure", ex);
}
}
}
/**
* Synchronizes the button state after the player state changes.
*/
private void playerTypeChanged(PlayerType newType) {
if (newType != PlayerType.WATCH_WHILE_MINIMIZED && !newType.isMaximizedOrFullscreen()) {
return;
}
View button = buttonRef.get();
if (button == null) return;
button.clearAnimation();
View placeholder = placeHolderRef.get();
if (visibilityCheck.shouldBeShown()) {
if (isVisible) {
button.setVisibility(View.VISIBLE);
if (placeholder != null) placeholder.setVisibility(View.GONE);
} else {
button.setVisibility(View.GONE);
if (placeholder != null) placeholder.setVisibility(View.VISIBLE);
}
} else {
button.setVisibility(View.GONE);
if (placeholder != null) placeholder.setVisibility(View.GONE);
}
}
public void hide() {
if (!isVisible) return;
Utils.verifyOnMainThread();
View view = buttonRef.get();
if (view == null) return;
view.setVisibility(View.GONE);
view = placeHolderRef.get();
if (view != null) view.setVisibility(View.GONE);
isVisible = false;
}
}

View File

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

View File

@@ -348,6 +348,14 @@ public final class app/revanced/patches/nfctoolsse/misc/pro/UnlockProPatchKt {
public static final fun getUnlockProPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
}
public final class app/revanced/patches/nunl/ads/HideAdsPatchKt {
public static final fun getHideAdsPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
}
public final class app/revanced/patches/nunl/firebase/SpoofCertificatePatchKt {
public static final fun getSpoofCertificatePatch ()Lapp/revanced/patcher/patch/BytecodePatch;
}
public final class app/revanced/patches/nyx/misc/pro/UnlockProPatchKt {
public static final fun getUnlockProPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
}
@@ -1116,6 +1124,10 @@ public final class app/revanced/patches/youtube/layout/hide/endscreencards/HideE
public static final fun getHideEndscreenCardsPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
}
public final class app/revanced/patches/youtube/layout/hide/endscreensuggestion/HideEndScreenSuggestedVideoPatchKt {
public static final fun getHideEndScreenSuggestedVideoPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
}
public final class app/revanced/patches/youtube/layout/hide/fullscreenambientmode/DisableFullscreenAmbientModePatchKt {
public static final fun getDisableFullscreenAmbientModePatch ()Lapp/revanced/patcher/patch/BytecodePatch;
}

View File

@@ -11,7 +11,7 @@ val hideVideoAdsPatch = bytecodePatch(
compatibleWith(
"com.google.android.apps.youtube.music"(
"7.16.53",
"8.05.50"
"8.05.51"
)
)

View File

@@ -11,7 +11,7 @@ val enableExclusiveAudioPlaybackPatch = bytecodePatch(
compatibleWith(
"com.google.android.apps.youtube.music"(
"7.16.53",
"8.05.50"
"8.05.51"
)
)

View File

@@ -14,7 +14,7 @@ val permanentRepeatPatch = bytecodePatch(
compatibleWith(
"com.google.android.apps.youtube.music"(
"7.16.53",
"8.05.50"
"8.05.51"
)
)

View File

@@ -14,7 +14,7 @@ val hideCategoryBar = bytecodePatch(
compatibleWith(
"com.google.android.apps.youtube.music"(
"7.16.53",
"8.05.50"
"8.05.51"
)
)

View File

@@ -14,7 +14,7 @@ val hideGetPremiumPatch = bytecodePatch(
compatibleWith(
"com.google.android.apps.youtube.music"(
"7.16.53",
"8.05.50"
"8.05.51"
)
)

View File

@@ -21,7 +21,7 @@ val removeUpgradeButtonPatch = bytecodePatch(
compatibleWith(
"com.google.android.apps.youtube.music"(
"7.16.53",
"8.05.50"
"8.05.51"
)
)

View File

@@ -11,7 +11,7 @@ val bypassCertificateChecksPatch = bytecodePatch(
compatibleWith(
"com.google.android.apps.youtube.music"(
"7.16.53",
"8.05.50"
"8.05.51"
)
)

View File

@@ -11,7 +11,7 @@ val backgroundPlaybackPatch = bytecodePatch(
compatibleWith(
"com.google.android.apps.youtube.music"(
"7.16.53",
"8.05.50"
"8.05.51"
)
)

View File

@@ -28,7 +28,7 @@ val spoofClientPatch = bytecodePatch(
compatibleWith(
"com.google.android.apps.youtube.music"(
"7.16.53",
"8.05.50"
"8.05.51"
)
)

View File

@@ -0,0 +1,44 @@
package app.revanced.patches.nunl.ads
import app.revanced.patcher.fingerprint
import com.android.tools.smali.dexlib2.AccessFlags
import com.android.tools.smali.dexlib2.Opcode
internal val jwUtilCreateAdvertisementFingerprint = fingerprint {
accessFlags(AccessFlags.PRIVATE, AccessFlags.STATIC)
custom { methodDef, classDef ->
classDef.type == "Lnl/sanomamedia/android/nu/video/util/JWUtil;" && methodDef.name == "createAdvertising"
}
}
internal val screenMapperFingerprint = fingerprint {
accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL)
returns("Lnl/nu/android/bff/domain/models/screen/ScreenEntity;")
parameters("Lnl/nu/performance/api/client/objects/Screen;")
opcodes(
Opcode.MOVE_RESULT_OBJECT,
Opcode.IF_EQZ,
Opcode.CHECK_CAST
)
custom { methodDef, classDef ->
classDef.type == "Lnl/nu/android/bff/data/mappers/ScreenMapper;" && methodDef.name == "map"
}
}
internal val nextPageRepositoryImplFingerprint = fingerprint {
accessFlags(AccessFlags.PRIVATE, AccessFlags.FINAL)
returns("Lnl/nu/android/bff/domain/models/Page;")
parameters("Lnl/nu/performance/api/client/PacResponse;", "Ljava/lang/String;")
opcodes(
Opcode.MOVE_RESULT_OBJECT,
Opcode.IF_EQZ,
Opcode.CHECK_CAST
)
custom { methodDef, classDef ->
classDef.type == "Lnl/nu/android/bff/data/repositories/NextPageRepositoryImpl;" && methodDef.name == "mapToPage"
}
}

View File

@@ -0,0 +1,51 @@
package app.revanced.patches.nunl.ads
import app.revanced.patcher.extensions.InstructionExtensions.addInstructions
import app.revanced.patcher.extensions.InstructionExtensions.getInstruction
import app.revanced.patcher.patch.bytecodePatch
import app.revanced.patches.shared.misc.extension.sharedExtensionPatch
import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
@Suppress("unused")
val hideAdsPatch = bytecodePatch(
name = "Hide ads",
description = "Hide ads and sponsored articles in list pages and remove pre-roll ads on videos.",
) {
compatibleWith("nl.sanomamedia.android.nu"("11.0.0", "11.0.1", "11.1.0"))
dependsOn(sharedExtensionPatch("nunl", mainActivityOnCreateHook))
execute {
// Disable video pre-roll ads.
// Whenever the app tries to create an ad via JWUtils.createAdvertising, don't actually tell the underlying JWPlayer library to do so => JWPlayer will not display ads.
jwUtilCreateAdvertisementFingerprint.method.addInstructions(
0,
"""
new-instance v0, Lcom/jwplayer/pub/api/configuration/ads/VastAdvertisingConfig${'$'}Builder;
invoke-direct { v0 }, Lcom/jwplayer/pub/api/configuration/ads/VastAdvertisingConfig${'$'}Builder;-><init>()V
invoke-virtual { v0 }, Lcom/jwplayer/pub/api/configuration/ads/VastAdvertisingConfig${'$'}Builder;->build()Lcom/jwplayer/pub/api/configuration/ads/VastAdvertisingConfig;
move-result-object v0
return-object v0
""",
)
// Filter injected content from API calls out of lists.
arrayOf(screenMapperFingerprint, nextPageRepositoryImplFingerprint).forEach {
// Index of instruction moving result of BlockPage;->getBlocks(...).
val moveGetBlocksResultObjectIndex = it.patternMatch!!.startIndex
it.method.apply {
val moveInstruction = getInstruction<OneRegisterInstruction>(moveGetBlocksResultObjectIndex)
val listRegister = moveInstruction.registerA
// Add instruction after moving List<Block> to register and then filter this List<Block> in place.
addInstructions(
moveGetBlocksResultObjectIndex + 1,
"""
invoke-static { v$listRegister }, Lapp/revanced/extension/nunl/ads/HideAdsPatch;->filterAds(Ljava/util/List;)V
""",
)
}
}
}
}

View File

@@ -0,0 +1,9 @@
package app.revanced.patches.nunl.ads
import app.revanced.patches.shared.misc.extension.extensionHook
internal val mainActivityOnCreateHook = extensionHook {
custom { method, classDef ->
classDef.type == "Lnl/sanomamedia/android/nu/main/NUMainActivity;" && method.name == "onCreate"
}
}

View File

@@ -0,0 +1,20 @@
package app.revanced.patches.nunl.firebase
import app.revanced.patcher.fingerprint
import com.android.tools.smali.dexlib2.AccessFlags
internal val getFingerprintHashForPackageFingerprints = arrayOf(
"Lcom/google/firebase/installations/remote/FirebaseInstallationServiceClient;",
"Lcom/google/firebase/remoteconfig/internal/ConfigFetchHttpClient;",
"Lcom/google/firebase/remoteconfig/internal/ConfigRealtimeHttpClient;"
).map { className ->
fingerprint {
accessFlags(AccessFlags.PRIVATE)
parameters()
returns("Ljava/lang/String;")
custom { methodDef, classDef ->
classDef.type == className && methodDef.name == "getFingerprintHashForPackage"
}
}
}

View File

@@ -0,0 +1,24 @@
package app.revanced.patches.nunl.firebase
import app.revanced.patcher.extensions.InstructionExtensions.addInstructions
import app.revanced.patcher.patch.bytecodePatch
@Suppress("unused")
val spoofCertificatePatch = bytecodePatch(
name = "Spoof certificate",
description = "Spoofs the X-Android-Cert header to allow push messages.",
) {
compatibleWith("nl.sanomamedia.android.nu")
execute {
getFingerprintHashForPackageFingerprints.forEach { fingerprint ->
fingerprint.method.addInstructions(
0,
"""
const-string v0, "eae41fc018df2731a9b6ae1ac327da44a288667b"
return-object v0
""",
)
}
}
}

View File

@@ -2,4 +2,4 @@ package app.revanced.patches.tiktok.misc.extension
import app.revanced.patches.shared.misc.extension.sharedExtensionPatch
val sharedExtensionPatch = sharedExtensionPatch("tiktok", initHook)
val sharedExtensionPatch = sharedExtensionPatch("tiktok", initHook, jatoInitHook, storeRegionInitHook)

View File

@@ -3,12 +3,35 @@ package app.revanced.patches.tiktok.misc.extension
import app.revanced.patches.shared.misc.extension.extensionHook
import com.android.tools.smali.dexlib2.AccessFlags
internal val initHook = extensionHook(
insertIndexResolver = { 1 }, // Insert after call to super class.
) {
accessFlags(AccessFlags.PUBLIC, AccessFlags.CONSTRUCTOR)
internal val initHook = extensionHook {
custom { method, classDef ->
classDef.endsWith("/AwemeHostApplication;") &&
method.name == "<init>"
classDef.type == "Lcom/ss/android/ugc/aweme/main/MainActivity;" &&
method.name == "onCreate"
}
}
/**
* In some cases the extension code can be called before
* the app main activity onCreate is called.
*
* This class is called from startup code titled "BPEA RunnableGuardLancet".
*/
internal val jatoInitHook = extensionHook(
contextRegisterResolver = { "p1" }
) {
parameters("Landroid/content/Context;")
custom { method, classDef ->
classDef.type == "Lcom/ss/android/ugc/aweme/legoImp/task/JatoInitTask;" &&
method.name == "run"
}
}
internal val storeRegionInitHook = extensionHook(
contextRegisterResolver = { "p1" }
) {
parameters("Landroid/content/Context;")
custom { method, classDef ->
classDef.type == "Lcom/ss/android/ugc/aweme/legoImp/task/StoreRegionInitTask;" &&
method.name == "run"
}
}

View File

@@ -42,9 +42,10 @@ private val swipeControlsResourcePatch = resourcePatch {
SwitchPreference("revanced_swipe_haptic_feedback"),
SwitchPreference("revanced_swipe_save_and_restore_brightness"),
SwitchPreference("revanced_swipe_lowest_value_enable_auto_brightness"),
TextPreference("revanced_swipe_overlay_timeout", inputType = InputType.NUMBER),
TextPreference("revanced_swipe_text_overlay_size", inputType = InputType.NUMBER),
SwitchPreference("revanced_swipe_show_circular_overlay"),
SwitchPreference("revanced_swipe_overlay_minimal_style"),
TextPreference("revanced_swipe_overlay_background_opacity", inputType = InputType.NUMBER),
TextPreference("revanced_swipe_overlay_timeout", inputType = InputType.NUMBER),
TextPreference("revanced_swipe_threshold", inputType = InputType.NUMBER),
)
@@ -53,7 +54,12 @@ private val swipeControlsResourcePatch = resourcePatch {
ResourceGroup(
"drawable",
"revanced_ic_sc_brightness_auto.xml",
"revanced_ic_sc_brightness_manual.xml",
"revanced_ic_sc_brightness_full.xml",
"revanced_ic_sc_brightness_high.xml",
"revanced_ic_sc_brightness_low.xml",
"revanced_ic_sc_brightness_medium.xml",
"revanced_ic_sc_volume_high.xml",
"revanced_ic_sc_volume_low.xml",
"revanced_ic_sc_volume_mute.xml",
"revanced_ic_sc_volume_normal.xml",
),

View File

@@ -39,6 +39,7 @@ val hideButtonsPatch = resourcePatch(
PreferenceScreenPreference(
"revanced_hide_buttons_screen",
preferences = setOf(
SwitchPreference("revanced_disable_like_subscribe_glow"),
SwitchPreference("revanced_hide_like_dislike_button"),
SwitchPreference("revanced_hide_share_button"),
SwitchPreference("revanced_hide_report_button"),

View File

@@ -58,6 +58,7 @@ val navigationButtonsPatch = bytecodePatch(
SwitchPreference("revanced_hide_shorts_button"),
SwitchPreference("revanced_hide_create_button"),
SwitchPreference("revanced_hide_subscriptions_button"),
SwitchPreference("revanced_hide_notifications_button"),
SwitchPreference("revanced_switch_create_with_notifications_button"),
SwitchPreference("revanced_hide_navigation_button_labels"),
)

View File

@@ -44,6 +44,9 @@ private val hideEndscreenCardsResourcePatch = resourcePatch {
}
}
private const val EXTENSION_CLASS_DESCRIPTOR =
"Lapp/revanced/extension/youtube/patches/HideEndscreenCardsPatch;"
@Suppress("unused")
val hideEndscreenCardsPatch = bytecodePatch(
name = "Hide endscreen cards",
@@ -78,9 +81,7 @@ val hideEndscreenCardsPatch = bytecodePatch(
addInstruction(
insertIndex,
"invoke-static { v$viewRegister }, " +
"Lapp/revanced/extension/youtube/patches/HideEndscreenCardsPatch;->" +
"hideEndscreen(Landroid/view/View;)V",
"invoke-static { v$viewRegister }, $EXTENSION_CLASS_DESCRIPTOR->hideEndscreen(Landroid/view/View;)V",
)
}
}

View File

@@ -0,0 +1,38 @@
package app.revanced.patches.youtube.layout.hide.endscreensuggestion
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 autoNavConstructorFingerprint = fingerprint {
returns("V")
accessFlags(AccessFlags.PUBLIC, AccessFlags.CONSTRUCTOR)
strings("main_app_autonav")
}
internal val autoNavStatusFingerprint = fingerprint {
accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL)
returns("Z")
parameters()
}
internal val removeOnLayoutChangeListenerFingerprint = fingerprint {
accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL)
returns("V")
parameters()
opcodes(
Opcode.IPUT,
Opcode.INVOKE_VIRTUAL
)
// This is the only reference present in the entire smali.
custom { method, _ ->
method.indexOfFirstInstruction {
val reference = getReference<MethodReference>()
reference?.name == "removeOnLayoutChangeListener" &&
reference.definingClass.endsWith("/YouTubePlayerOverlaysLayout;")
} >= 0
}
}

View File

@@ -0,0 +1,92 @@
package app.revanced.patches.youtube.layout.hide.endscreensuggestion
import app.revanced.patcher.extensions.InstructionExtensions.addInstructionsWithLabels
import app.revanced.patcher.extensions.InstructionExtensions.getInstruction
import app.revanced.patcher.patch.bytecodePatch
import app.revanced.patcher.util.smali.ExternalLabel
import app.revanced.patches.all.misc.resources.addResources
import app.revanced.patches.all.misc.resources.addResourcesPatch
import app.revanced.patches.shared.misc.settings.preference.SwitchPreference
import app.revanced.patches.youtube.misc.extension.sharedExtensionPatch
import app.revanced.patches.youtube.misc.settings.PreferenceScreen
import app.revanced.util.getReference
import app.revanced.util.indexOfFirstInstructionOrThrow
import app.revanced.util.indexOfFirstInstructionReversedOrThrow
import com.android.tools.smali.dexlib2.Opcode
import com.android.tools.smali.dexlib2.iface.instruction.ReferenceInstruction
import com.android.tools.smali.dexlib2.iface.reference.MethodReference
private const val EXTENSION_CLASS_DESCRIPTOR =
"Lapp/revanced/extension/youtube/patches/HideEndScreenSuggestedVideoPatch;"
@Suppress("unused")
val hideEndScreenSuggestedVideoPatch = bytecodePatch(
name = "Hide end screen suggested video",
description = "Adds an option to hide the recommended video at the end of each video.",
) {
dependsOn(
sharedExtensionPatch,
addResourcesPatch,
)
compatibleWith(
"com.google.android.youtube"(
"19.16.39",
"19.25.37",
"19.34.42",
"19.43.41",
"19.45.38",
"19.46.42",
"19.47.53",
),
)
execute {
addResources("youtube", "layout.hide.endscreensuggestion.hideEndScreenSuggestedVideoPatch")
PreferenceScreen.PLAYER.addPreferences(
SwitchPreference("revanced_end_screen_suggested_video"),
)
removeOnLayoutChangeListenerFingerprint.let {
val endScreenMethod = navigate(it.originalMethod).to(it.patternMatch!!.endIndex).stop()
endScreenMethod.apply {
val autoNavStatusMethodName = autoNavStatusFingerprint.match(
autoNavConstructorFingerprint.classDef
).originalMethod.name
val invokeIndex = indexOfFirstInstructionOrThrow {
val reference = getReference<MethodReference>()
reference?.name == autoNavStatusMethodName &&
reference.returnType == "Z" &&
reference.parameterTypes.isEmpty()
}
val iGetObjectIndex = indexOfFirstInstructionReversedOrThrow(invokeIndex, Opcode.IGET_OBJECT)
val invokeReference = getInstruction<ReferenceInstruction>(invokeIndex).reference
val iGetObjectReference = getInstruction<ReferenceInstruction>(iGetObjectIndex).reference
val opcodeName = getInstruction(invokeIndex).opcode.name
addInstructionsWithLabels(
0,
"""
invoke-static {}, $EXTENSION_CLASS_DESCRIPTOR->hideEndScreenSuggestedVideo()Z
move-result v0
if-eqz v0, :show_end_screen_recommendation
iget-object v0, p0, $iGetObjectReference
# This reference checks whether autoplay is turned on.
$opcodeName { v0 }, $invokeReference
move-result v0
# Hide suggested video end screen only when autoplay is turned off.
if-nez v0, :show_end_screen_recommendation
return-void
""",
ExternalLabel("show_end_screen_recommendation", getInstruction(0))
)
}
}
}
}

View File

@@ -172,7 +172,6 @@ val hideLayoutComponentsPatch = bytecodePatch(
SwitchPreference("revanced_hide_emergency_box"),
SwitchPreference("revanced_hide_info_panels"),
SwitchPreference("revanced_hide_join_membership_button"),
SwitchPreference("revanced_disable_like_subscribe_glow"),
SwitchPreference("revanced_hide_medical_panels"),
SwitchPreference("revanced_hide_quick_actions"),
SwitchPreference("revanced_hide_related_videos"),

View File

@@ -1,79 +1,9 @@
package app.revanced.patches.youtube.layout.hide.suggestedvideoendscreen
import app.revanced.patcher.extensions.InstructionExtensions.addInstruction
import app.revanced.patcher.extensions.InstructionExtensions.getInstruction
import app.revanced.patcher.patch.bytecodePatch
import app.revanced.patcher.patch.resourcePatch
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.SwitchPreference
import app.revanced.patches.youtube.misc.extension.sharedExtensionPatch
import app.revanced.patches.youtube.misc.settings.PreferenceScreen
import app.revanced.patches.youtube.misc.settings.settingsPatch
import com.android.tools.smali.dexlib2.iface.instruction.FiveRegisterInstruction
import app.revanced.patches.youtube.layout.hide.endscreensuggestion.hideEndScreenSuggestedVideoPatch
internal var sizeAdjustableLiteAutoNavOverlay = -1L
private set
internal val disableSuggestedVideoEndScreenResourcePatch = resourcePatch {
dependsOn(
settingsPatch,
resourceMappingPatch,
addResourcesPatch,
)
execute {
addResources("youtube", "layout.hide.suggestedvideoendscreen.disableSuggestedVideoEndScreenResourcePatch")
PreferenceScreen.PLAYER.addPreferences(
SwitchPreference("revanced_disable_suggested_video_end_screen"),
)
sizeAdjustableLiteAutoNavOverlay = resourceMappings[
"layout",
"size_adjustable_lite_autonav_overlay",
]
}
}
private const val EXTENSION_CLASS_DESCRIPTOR =
"Lapp/revanced/extension/youtube/patches/DisableSuggestedVideoEndScreenPatch;"
@Suppress("unused")
val disableSuggestedVideoEndScreenPatch = bytecodePatch(
name = "Disable suggested video end screen",
description = "Adds an option to disable the suggested video end screen at the end of videos.",
) {
dependsOn(
sharedExtensionPatch,
disableSuggestedVideoEndScreenResourcePatch,
)
compatibleWith(
"com.google.android.youtube"(
"19.16.39",
"19.25.37",
"19.34.42",
"19.43.41",
"19.45.38",
"19.46.42",
"19.47.53",
),
)
execute {
createEndScreenViewFingerprint.method.apply {
val addOnClickEventListenerIndex = createEndScreenViewFingerprint.patternMatch!!.endIndex - 1
val viewRegister = getInstruction<FiveRegisterInstruction>(addOnClickEventListenerIndex).registerC
addInstruction(
addOnClickEventListenerIndex + 1,
"invoke-static {v$viewRegister}, " +
"$EXTENSION_CLASS_DESCRIPTOR->closeEndScreen(Landroid/widget/ImageView;)V",
)
}
}
}
@Deprecated("Use 'Hide suggested video end screen' instead.")
val disableSuggestedVideoEndScreenPatch = bytecodePatch {
dependsOn(hideEndScreenSuggestedVideoPatch)
}

View File

@@ -1,18 +0,0 @@
package app.revanced.patches.youtube.layout.hide.suggestedvideoendscreen
import app.revanced.patcher.fingerprint
import app.revanced.util.literal
import com.android.tools.smali.dexlib2.AccessFlags
import com.android.tools.smali.dexlib2.Opcode
internal val createEndScreenViewFingerprint = fingerprint {
accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL)
returns("Landroid/view/View;")
parameters("Landroid/content/Context;")
opcodes(
Opcode.INVOKE_DIRECT,
Opcode.INVOKE_VIRTUAL,
Opcode.CONST,
)
literal { sizeAdjustableLiteAutoNavOverlay }
}

View File

@@ -82,9 +82,9 @@ private val sponsorBlockResourcePatch = resourcePatch {
private const val EXTENSION_SEGMENT_PLAYBACK_CONTROLLER_CLASS_DESCRIPTOR =
"Lapp/revanced/extension/youtube/sponsorblock/SegmentPlaybackController;"
private const val EXTENSION_CREATE_SEGMENT_BUTTON_CONTROLLER_CLASS_DESCRIPTOR =
"Lapp/revanced/extension/youtube/sponsorblock/ui/CreateSegmentButtonController;"
"Lapp/revanced/extension/youtube/sponsorblock/ui/CreateSegmentButton;"
private const val EXTENSION_VOTING_BUTTON_CONTROLLER_CLASS_DESCRIPTOR =
"Lapp/revanced/extension/youtube/sponsorblock/ui/VotingButtonController;"
"Lapp/revanced/extension/youtube/sponsorblock/ui/VotingButton;"
private const val EXTENSION_SPONSORBLOCK_VIEW_CONTROLLER_CLASS_DESCRIPTOR =
"Lapp/revanced/extension/youtube/sponsorblock/ui/SponsorBlockViewController;"

View File

@@ -1,8 +1,29 @@
package app.revanced.patches.youtube.layout.spoofappversion
import app.revanced.patcher.fingerprint
import app.revanced.util.containsLiteralInstruction
import app.revanced.util.getReference
import app.revanced.util.indexOfFirstInstruction
import com.android.tools.smali.dexlib2.AccessFlags
import com.android.tools.smali.dexlib2.Opcode
import com.android.tools.smali.dexlib2.iface.Method
import com.android.tools.smali.dexlib2.iface.reference.MethodReference
internal val toolBarButtonFingerprint = fingerprint {
returns("V")
accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL)
parameters("Landroid/view/MenuItem;")
custom { method, _ ->
method.containsLiteralInstruction(menuItemView) &&
indexOfGetDrawableInstruction(method) >= 0
}
}
internal fun indexOfGetDrawableInstruction(method: Method) = method.indexOfFirstInstruction {
val reference = getReference<MethodReference>()
reference?.definingClass == "Landroid/content/res/Resources;" &&
reference.name == "getDrawable"
}
internal val spoofAppVersionFingerprint = fingerprint {
accessFlags(AccessFlags.PUBLIC, AccessFlags.STATIC)

View File

@@ -1,10 +1,16 @@
package app.revanced.patches.youtube.layout.spoofappversion
import app.revanced.patcher.extensions.InstructionExtensions.addInstructions
import app.revanced.patcher.extensions.InstructionExtensions.addInstructionsWithLabels
import app.revanced.patcher.extensions.InstructionExtensions.getInstruction
import app.revanced.patcher.patch.bytecodePatch
import app.revanced.patcher.patch.resourcePatch
import app.revanced.patcher.util.smali.ExternalLabel
import app.revanced.patches.all.misc.resources.addResources
import app.revanced.patches.all.misc.resources.addResourcesPatch
import app.revanced.patches.shared.misc.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.shared.misc.settings.preference.SwitchPreference
import app.revanced.patches.youtube.misc.extension.sharedExtensionPatch
@@ -12,7 +18,25 @@ import app.revanced.patches.youtube.misc.playservice.is_19_17_or_greater
import app.revanced.patches.youtube.misc.playservice.versionCheckPatch
import app.revanced.patches.youtube.misc.settings.PreferenceScreen
import app.revanced.patches.youtube.misc.settings.settingsPatch
import app.revanced.util.getReference
import app.revanced.util.indexOfFirstInstructionOrThrow
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
internal var menuItemView = -1L
private set
internal val spoofAppVersionResourcePatch = resourcePatch {
dependsOn(
resourceMappingPatch
)
execute {
menuItemView = resourceMappings["id", "menu_item_view"]
}
}
private const val EXTENSION_CLASS_DESCRIPTOR =
"Lapp/revanced/extension/youtube/patches/spoof/SpoofAppVersionPatch;"
@@ -24,6 +48,7 @@ val spoofAppVersionPatch = bytecodePatch(
"Patching 19.16.39 includes additional older spoofing targets.",
) {
dependsOn(
spoofAppVersionResourcePatch,
sharedExtensionPatch,
settingsPatch,
addResourcesPatch,
@@ -62,6 +87,32 @@ val spoofAppVersionPatch = bytecodePatch(
}
)
/**
* If a user really wants to spoof to very old versions with the latest app target
* they can modify the import/export spoof version. But when spoofing the 19.20.xx
* or earlier the Library tab can crash due to missing image resources trying to load.
* As a temporary workaround, do not set an image in the toolbar when the enum name is UNKNOWN.
*/
toolBarButtonFingerprint.method.apply {
val getDrawableIndex = indexOfGetDrawableInstruction(this)
val enumOrdinalIndex = indexOfFirstInstructionReversedOrThrow(getDrawableIndex) {
opcode == Opcode.INVOKE_INTERFACE &&
getReference<MethodReference>()?.returnType == "I"
}
val insertIndex = enumOrdinalIndex + 2
val insertRegister = getInstruction<OneRegisterInstruction>(insertIndex - 1).registerA
val jumpIndex = indexOfFirstInstructionOrThrow(insertIndex) {
opcode == Opcode.INVOKE_VIRTUAL &&
getReference<MethodReference>()?.name == "setImageDrawable"
} + 1
addInstructionsWithLabels(
insertIndex,
"if-eqz v$insertRegister, :ignore",
ExternalLabel("ignore", getInstruction(jumpIndex))
)
}
val insertIndex = spoofAppVersionFingerprint.patternMatch!!.startIndex + 1
val buildOverrideNameRegister =
spoofAppVersionFingerprint.method.getInstruction<OneRegisterInstruction>(insertIndex - 1).registerA
@@ -71,7 +122,7 @@ val spoofAppVersionPatch = bytecodePatch(
"""
invoke-static {v$buildOverrideNameRegister}, $EXTENSION_CLASS_DESCRIPTOR->getYouTubeVersionOverride(Ljava/lang/String;)Ljava/lang/String;
move-result-object v$buildOverrideNameRegister
""",
"""
)
}
}

View File

@@ -77,12 +77,9 @@ val playerControlsResourcePatch = resourcePatch {
).item(0)
val bottomTargetDocumentChildNodes = bottomTargetDocument.childNodes
var bottomInsertBeforeNode: Node = bottomTargetDocumentChildNodes.findElementByAttributeValue(
var bottomInsertBeforeNode: Node = bottomTargetDocumentChildNodes.findElementByAttributeValueOrThrow(
"android:inflatedId",
bottomLastLeftOf,
) ?: bottomTargetDocumentChildNodes.findElementByAttributeValueOrThrow(
"android:id", // Older targets use non-inflated id.
bottomLastLeftOf,
)
addTopControl = { resourceDirectoryName ->
@@ -123,7 +120,7 @@ val playerControlsResourcePatch = resourcePatch {
).item(0).childNodes
// Copy the patch layout xml into the target layout file.
for (index in 1 until sourceElements.length) {
for (index in sourceElements.length - 1 downTo 1) {
val element = sourceElements.item(index).cloneNode(true)
// If the element has no attributes there's no point adding it to the destination.
@@ -189,7 +186,7 @@ fun initializeBottomControl(descriptor: String) {
fun injectVisibilityCheckCall(descriptor: String) {
visibilityMethod.addInstruction(
visibilityInsertIndex++,
"invoke-static { p1 , p2 }, $descriptor->changeVisibility(ZZ)V",
"invoke-static { p1 , p2 }, $descriptor->setVisibility(ZZ)V",
)
if (!visibilityImmediateCallbacksExistModified) {
@@ -199,7 +196,7 @@ fun injectVisibilityCheckCall(descriptor: String) {
visibilityImmediateMethod.addInstruction(
visibilityImmediateInsertIndex++,
"invoke-static { p0 }, $descriptor->changeVisibilityImmediate(Z)V",
"invoke-static { p0 }, $descriptor->setVisibilityImmediate(Z)V",
)
}

View File

@@ -45,7 +45,7 @@ Second \"item\" text"</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. -->
<!-- 'People also watch' should be translated using the same localized wording YouTube displays. -->
<!-- 'People also watched' 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. -->
<!-- https://logos.fandom.com/wiki/YouTube/Yoodles -->
@@ -130,7 +130,7 @@ Second \"item\" text"</string>
<!-- 'remix' should be translated using the same localized wording YouTube displays for the button. -->
<!-- 'share' should be translated using the same localized wording YouTube displays for the button. -->
</patch>
<patch id="layout.hide.suggestedvideoendscreen.disableSuggestedVideoEndScreenResourcePatch">
<patch id="layout.hide.endscreensuggestion.hideEndScreenSuggestedVideoPatch">
</patch>
<patch id="layout.hide.time.hideTimestampPatch">
</patch>
@@ -206,6 +206,7 @@ Second \"item\" text"</string>
<patch id="misc.zoomhaptics.zoomHapticsPatch">
</patch>
<patch id="video.audio.forceOriginalAudioPatch">
<!-- 'Spoof video streams' should be the same translation used for revanced_spoof_video_streams_screen_title -->
</patch>
<patch id="video.quality.rememberVideoQualityPatch">
<!-- Translations should use the same text as revanced_custom_playback_speeds_auto -->
@@ -223,7 +224,6 @@ Second \"item\" text"</string>
<patch id="interaction.seekbar.enableSlideToSeekPatch">
</patch>
<patch id="misc.fix.playback.spoofVideoStreamsPatch">
<!-- 'no auth' means no authentication -->
</patch>
</app>
<app id="twitch">

View File

@@ -45,7 +45,7 @@ Second \"item\" text"</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. -->
<!-- 'People also watch' should be translated using the same localized wording YouTube displays. -->
<!-- 'People also watched' 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. -->
<!-- https://logos.fandom.com/wiki/YouTube/Yoodles -->
@@ -130,7 +130,7 @@ Second \"item\" text"</string>
<!-- 'remix' should be translated using the same localized wording YouTube displays for the button. -->
<!-- 'share' should be translated using the same localized wording YouTube displays for the button. -->
</patch>
<patch id="layout.hide.suggestedvideoendscreen.disableSuggestedVideoEndScreenResourcePatch">
<patch id="layout.hide.endscreensuggestion.hideEndScreenSuggestedVideoPatch">
</patch>
<patch id="layout.hide.time.hideTimestampPatch">
</patch>
@@ -206,6 +206,7 @@ Second \"item\" text"</string>
<patch id="misc.zoomhaptics.zoomHapticsPatch">
</patch>
<patch id="video.audio.forceOriginalAudioPatch">
<!-- 'Spoof video streams' should be the same translation used for revanced_spoof_video_streams_screen_title -->
</patch>
<patch id="video.quality.rememberVideoQualityPatch">
<!-- Translations should use the same text as revanced_custom_playback_speeds_auto -->
@@ -223,7 +224,6 @@ Second \"item\" text"</string>
<patch id="interaction.seekbar.enableSlideToSeekPatch">
</patch>
<patch id="misc.fix.playback.spoofVideoStreamsPatch">
<!-- 'no auth' means no authentication -->
</patch>
</app>
<app id="twitch">

View File

@@ -168,9 +168,6 @@ Second \"item\" text"</string>
لن يتم إعلامك بأي أخطاء غير متوقعة."</string>
</patch>
<patch id="layout.hide.general.hideLayoutComponentsPatch">
<string name="revanced_disable_like_subscribe_glow_title">تعطيل توهُّج زِرّي أعجبني واشتراك</string>
<string name="revanced_disable_like_subscribe_glow_summary_on">لن يتوهَّج زرّي أعجبني واشتراك عند ذكرهما</string>
<string name="revanced_disable_like_subscribe_glow_summary_off">سيتوهَّج زرّي أعجبني واشتراك عند ذكرهما</string>
<string name="revanced_hide_album_cards_title">إخفاء بطاقات الألبوم</string>
<string name="revanced_hide_album_cards_summary_on">تم إخفاء بطاقات الألبوم</string>
<string name="revanced_hide_album_cards_summary_off">يتم عرض بطاقات الألبوم</string>
@@ -193,22 +190,22 @@ Second \"item\" text"</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_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>
<string name="revanced_hide_for_you_shelf_title">إخفاء رف \'مقترحات لك\'</string>
<string name="revanced_hide_for_you_shelf_summary_on">تم إخفاء الرف في صفحة القناة</string>
<string name="revanced_hide_for_you_shelf_summary_off">يتم عرض الرف في صفحة القناة</string>
<!-- 'Notify me' should be translated using the same localized wording YouTube displays.
This item appear in the subscription feed for future livestreams or unreleased videos. -->
<string name="revanced_hide_notify_me_button_title">إخفاء زر \'تنبيهي\'</string>
<string name="revanced_hide_notify_me_button_summary_on">تم إخفاء الزر</string>
<string name="revanced_hide_notify_me_button_summary_off">يتم عرض الزر</string>
<!-- 'People also watch' should be translated using the same localized wording YouTube displays. -->
<string name="revanced_hide_search_result_recommendations_title">إخفاء توصيات \'شاهد الأشخاص أيضًا\'</string>
<string name="revanced_hide_search_result_recommendations_summary_on">تم إخفاء التوصيات</string>
<string name="revanced_hide_search_result_recommendations_summary_off">يتم عرض التوصيات</string>
<!-- 'People also watched' should be translated using the same localized wording YouTube displays. -->
<string name="revanced_hide_search_result_recommendations_title">إخفاء علامة \'الأشخاص الذين شاهدوا أيضًا\'</string>
<string name="revanced_hide_search_result_recommendations_summary_on">تم إخفاء العلامة</string>
<string name="revanced_hide_search_result_recommendations_summary_off">يتم عرض العلامة</string>
<!-- 'Show more' should be translated with the same localized wording that YouTube displays.
This button usually appears when searching for a YT creator. -->
<string name="revanced_hide_show_more_button_title">إخفاء زر \'عرض المزيد\'</string>
@@ -224,8 +221,8 @@ Second \"item\" text"</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_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>
@@ -241,7 +238,7 @@ Second \"item\" text"</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_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>
@@ -280,25 +277,25 @@ Second \"item\" text"</string>
<string name="revanced_hide_artist_cards_title">إخفاء بطاقات الفنان</string>
<string name="revanced_hide_artist_cards_summary_on">تم إخفاء بطاقات الفنان</string>
<string name="revanced_hide_artist_cards_summary_off">يتم عرض بطاقات الفنان</string>
<string name="revanced_hide_attributes_section_title">إخفاء قسم الصفات</string>
<string name="revanced_hide_attributes_section_summary_on">تم إخفاء \'الأماكن المميزة\'، أقسام الألعاب والموسيقى</string>
<string name="revanced_hide_attributes_section_summary_off">يتم عرض \'الأماكن المميزة\'، أقسام الألعاب والموسيقى</string>
<string name="revanced_hide_chapters_section_title">إخفاء قسم الفصول</string>
<string name="revanced_hide_attributes_section_title">إخفاء الصفات</string>
<string name="revanced_hide_attributes_section_summary_on">تم إخفاء أقسام الأماكن المميزة، الألعاب، الموسيقى والأشخاص المذكورون</string>
<string name="revanced_hide_attributes_section_summary_off">يتم عرض أقسام الأماكن المميزة، الألعاب، الموسيقى والأشخاص المذكورون</string>
<string name="revanced_hide_chapters_section_title">إخفاء الفصول</string>
<string name="revanced_hide_chapters_section_summary_on">تم إخفاء قسم الفصول</string>
<string name="revanced_hide_chapters_section_summary_off">يتم عرض قسم الفصول</string>
<string name="revanced_hide_how_this_was_made_section_title">إخفاء قسم \"كيف تم إنشاء هذا المحتوى\"</string>
<string name="revanced_hide_how_this_was_made_section_summary_on">تم إخفاء قسم \"كيف تم إنشاء هذا المحتوى\"</string>
<string name="revanced_hide_how_this_was_made_section_summary_off">يتم عرض قسم \"كيف تم إنشاء هذا المحتوى\"</string>
<string name="revanced_hide_podcast_section_title">إخفاء قسم \'استكشاف البودكاست\'</string>
<string name="revanced_hide_podcast_section_summary_on">تم إخفاء قسم \"استكشاف البودكاست\"</string>
<string name="revanced_hide_podcast_section_summary_off">يتم عرض قسم \"استكشاف البودكاست\"</string>
<string name="revanced_hide_info_cards_section_title">إخفاء قسم بطاقات المعلومات</string>
<string name="revanced_hide_how_this_was_made_section_title">إخفاء \'كيف تم إنشاء هذا المحتوى\'</string>
<string name="revanced_hide_how_this_was_made_section_summary_on">تم إخفاء قسم كيف تم إنشاء هذا المحتوى</string>
<string name="revanced_hide_how_this_was_made_section_summary_off">يتم عرض قسم كيف تم إنشاء هذا المحتوى</string>
<string name="revanced_hide_podcast_section_title">إخفاء \'استكشاف البودكاست\'</string>
<string name="revanced_hide_podcast_section_summary_on">تم إخفاء قسم استكشاف البودكاست</string>
<string name="revanced_hide_podcast_section_summary_off">يتم عرض قسم استكشاف البودكاست</string>
<string name="revanced_hide_info_cards_section_title">إخفاء بطاقات المعلومات</string>
<string name="revanced_hide_info_cards_section_summary_on">تم إخفاء قسم بطاقات المعلومات</string>
<string name="revanced_hide_info_cards_section_summary_off">يتم عرض قسم بطاقات المعلومات</string>
<string name="revanced_hide_key_concepts_section_title">إخفاء قسم \'المفاهيم الأساسية\'</string>
<string name="revanced_hide_key_concepts_section_summary_on">تم إخفاء قسم \'المفاهيم الأساسية\'</string>
<string name="revanced_hide_key_concepts_section_summary_off">يتم عرض قسم \'المفاهيم الأساسية\'</string>
<string name="revanced_hide_transcript_section_title">إخفاء قسم النص</string>
<string name="revanced_hide_key_concepts_section_title">إخفاء \'المفاهيم الأساسية\'</string>
<string name="revanced_hide_key_concepts_section_summary_on">تم إخفاء قسم المفاهيم الأساسية</string>
<string name="revanced_hide_key_concepts_section_summary_off">يتم عرض قسم المفاهيم الأساسية</string>
<string name="revanced_hide_transcript_section_title">إخفاء النص</string>
<string name="revanced_hide_transcript_section_summary_on">تم إخفاء قسم النص</string>
<string name="revanced_hide_transcript_section_summary_off">يتم عرض قسم النص</string>
<string name="revanced_hide_description_components_screen_title">وصف الفيديو</string>
@@ -316,27 +313,27 @@ Second \"item\" text"</string>
<string name="revanced_hide_filter_bar_feed_in_related_videos_summary_off">يعرض في الفيديوهات ذات الصلة</string>
<string name="revanced_comments_screen_title">التعليقات</string>
<string name="revanced_comments_screen_summary">إخفاء أو عرض مكونات قسم التعليقات</string>
<string name="revanced_hide_comments_chat_summary_title">إخفاء \"ملخص الدردشة\" </string>
<string name="revanced_hide_comments_chat_summary_summary_on">تم إخفاء ملخص الدردشة”</string>
<string name="revanced_hide_comments_chat_summary_summary_off">يتم عرض ملخص الدردشة”</string>
<string name="revanced_hide_comments_chat_summary_title">إخفاء \'ملخص المحادثة\'</string>
<string name="revanced_hide_comments_chat_summary_summary_on">تم إخفاء ملخص المحادثات</string>
<string name="revanced_hide_comments_chat_summary_summary_off">يتم عرض ملخص المحادثات</string>
<string name="revanced_hide_comments_by_members_header_title">إخفاء رأس \'تعليقات الأعضاء\'</string>
<string name="revanced_hide_comments_by_members_header_summary_on">تم إخفاء رأس \'تعليقات الأعضاء\'</string>
<string name="revanced_hide_comments_by_members_header_summary_off">يتم عرض رأس \'تعليقات الأعضاء\'</string>
<string name="revanced_hide_comments_by_members_header_summary_on">تم إخفاء علامة تعليقات من الأعضاء</string>
<string name="revanced_hide_comments_by_members_header_summary_off">يتم عرض علامة تعليقات من الأعضاء</string>
<string name="revanced_hide_comments_section_title">إخفاء قسم التعليقات</string>
<string name="revanced_hide_comments_section_summary_on">تم إخفاء قسم التعليقات</string>
<string name="revanced_hide_comments_section_summary_off">يتم عرض قسم التعليقات</string>
<string name="revanced_hide_comments_create_a_short_button_title">إخفاء زر \'إنشاء مقطع Short\'</string>
<string name="revanced_hide_comments_create_a_short_button_summary_on">تم إخفاء زر \'إنشاء Short\'</string>
<string name="revanced_hide_comments_create_a_short_button_summary_off">يتم عرض زر \'إنشاء Short\'</string>
<string name="revanced_hide_comments_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_and_emoji_buttons_title">إخفاء أزرار الرموز التعبيرية والطوابع الزمنية</string>
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_summary_on">تم إخفاء أزرار الرموز التعبيرية والطوابع الزمنية</string>
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_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_and_emoji_buttons_title">إخفاء أزرار الطابع الزمني والرموز التعبيرية</string>
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_summary_on">تم إخفاء أزرار الطابع الزمني والرموز التعبيرية</string>
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_summary_off">يتم عرض أزرار الطابع الزمني والرموز التعبيرية</string>
<!-- https://logos.fandom.com/wiki/YouTube/Yoodles -->
<string name="revanced_hide_doodles_title">إخفاء رسومات YouTube</string>
<string name="revanced_hide_doodles_summary_on">تم إخفاء رسومات شريط البحث</string>
@@ -417,12 +414,12 @@ Second \"item\" text"</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>
<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_visit_store_button_summary_on">تم إخفاء الزر في صفحة القناة</string>
<string name="revanced_hide_visit_store_button_summary_off">يتم عرض الزر في صفحة القناة</string>
<string name="revanced_hide_web_search_results_title">إخفاء نتائج بحث الويب</string>
<string name="revanced_hide_web_search_results_summary_on">تم إخفاء نتائج البحث على الويب</string>
<string name="revanced_hide_web_search_results_summary_off">يتم عرض نتائج البحث على الويب</string>
@@ -446,10 +443,10 @@ Second \"item\" text"</string>
<string name="revanced_share_copy_url_success">تم نسخ URL إلى الحافظة</string>
<string name="revanced_share_copy_url_timestamp_success">تم نسخ عنوان URL مع الطابع الزمني</string>
<string name="revanced_copy_video_url_title">عرض زر نسخ عنوان URL للفيديو</string>
<string name="revanced_copy_video_url_summary_on">يتم عرض الزر. انقر لنسخ رابط الفيديو. انقر مع الاستمرار لنسخ URL الفيديو مع الطابع الزمني</string>
<string name="revanced_copy_video_url_summary_on">يتم عرض الزر. انقر لنسخ عنوان URL للفيديو. انقر مع الاستمرار للنسخ مع الطابع الزمني</string>
<string name="revanced_copy_video_url_summary_off">لا يتم عرض الزر</string>
<string name="revanced_copy_video_url_timestamp_title">عرض زر نسخ URL مع الطابع الزمني</string>
<string name="revanced_copy_video_url_timestamp_summary_on">يتم عرض الزر. انقر لنسخ عنوان URL للفيديو مع الطابع الزمني. انقر مع الاستمرار لنسخ الفيديو بدون الطابع الزمني</string>
<string name="revanced_copy_video_url_timestamp_summary_on">يتم عرض الزر. انقر لنسخ عنوان URL للفيديو مع الطابع الزمني. انقر مع الاستمرار للنسخ بدون الطابع الزمني</string>
<string name="revanced_copy_video_url_timestamp_summary_off">لا يتم عرض الزر</string>
</patch>
<patch id="interaction.dialog.removeViewerDiscretionDialogPatch">
@@ -484,11 +481,15 @@ Second \"item\" text"</string>
</patch>
<patch id="interaction.swipecontrols.swipeControlsResourcePatch">
<string name="revanced_swipe_brightness_title">التحكم بالسطوع عن طريق ايماءة التمرير</string>
<string name="revanced_swipe_brightness_summary_on">تم تمكين التحكم بمستوى السطوع عن طريق الإيماءة</string>
<string name="revanced_swipe_brightness_summary_off">تم تعطيل التحكم بمستوى السطوع عن طريق الإيماءة</string>
<string name="revanced_swipe_brightness_summary_on">"تم تمكين التمرير السريع لضبط السطوع في وضع ملء الشاشة
اضبط السطوع عن طريق التمرير عموديًا على الجانب الأيسر من الشاشة"</string>
<string name="revanced_swipe_brightness_summary_off">تم تعطيل التمرير السريع لضبط السطوع في وضع ملء الشاشة</string>
<string name="revanced_swipe_volume_title">تمكين التحكم بالصوت عن طريق إيماءة التمرير</string>
<string name="revanced_swipe_volume_summary_on">تم تمكين التحكم بمستوى الصوت عن طريق الإيماءة</string>
<string name="revanced_swipe_volume_summary_off">تم تعطيل التحكم بمستوى الصوت عن طريق الإيماءة</string>
<string name="revanced_swipe_volume_summary_on">"تم تمكين التمرير السريع لضبط مستوى الصوت في وضع ملء الشاشة
اضبط مستوى الصوت عن طريق التمرير عموديًا على الجانب الأيمن من الشاشة"</string>
<string name="revanced_swipe_volume_summary_off">تم تعطيل التمرير السريع لضبط مستوى الصوت في وضع ملء الشاشة</string>
<string name="revanced_swipe_press_to_engage_title">تمكين إيماءة الضغط للتمرير</string>
<string name="revanced_swipe_press_to_engage_summary_on">يتم تنشيط عناصر التحكم عن طريق إيماءة التمرير فقط بضغطة طويلة</string>
<string name="revanced_swipe_press_to_engage_summary_off">تنشيط عناصر التحكم عن طريق إيماءة التمرير عند الضغط مباشرة</string>
@@ -501,16 +502,19 @@ Second \"item\" text"</string>
<string name="revanced_swipe_lowest_value_enable_auto_brightness_title">تمكين إيماءة السطوع التلقائي</string>
<string name="revanced_swipe_lowest_value_enable_auto_brightness_summary_on">التمرير لأسفل إلى أدنى قيمة للسطوع يمكّن السطوع التلقائي</string>
<string name="revanced_swipe_lowest_value_enable_auto_brightness_summary_off">لا يؤدي التمرير لأسفل إلى أدنى قيمة إلى تمكين السطوع التلقائي</string>
<string name="revanced_swipe_lowest_value_enable_auto_brightness_overlay_text">تلقائي</string>
<string name="revanced_swipe_overlay_timeout_title">مهلة واجهة التمرير</string>
<string name="revanced_swipe_overlay_timeout_summary">مقدار الوقت الذي تظهر فيه واجهة التمرير بعد التغيير بجزء الثانية</string>
<string name="revanced_swipe_text_overlay_size_title">حجم نص واجهة التمرير</string>
<string name="revanced_swipe_text_overlay_size_summary">حجم النص على واجهة التمرير</string>
<string name="revanced_swipe_overlay_background_opacity_title">تعتيم خلفية واجهة التمرير السريع</string>
<string name="revanced_swipe_overlay_background_opacity_summary">قيمة التعتيم بين 0-100</string>
<string name="revanced_swipe_overlay_background_opacity_invalid_toast">يجب أن يكون تعتيم التمرير السريع بين 0-100</string>
<string name="revanced_swipe_threshold_title">مقدار حد التمرير</string>
<string name="revanced_swipe_threshold_summary">الحد الأدنى من التمرير قبل اكتشاف الإيماءة</string>
<string name="revanced_swipe_show_circular_overlay_title">عرض الواجهة الدائرية</string>
<string name="revanced_swipe_show_circular_overlay_summary_on">يتم عرض التراكب الدائري</string>
<string name="revanced_swipe_show_circular_overlay_summary_off">يتم عرض التراكب الأفقي</string>
<string name="revanced_swipe_overlay_minimal_style_title">تمكين النمط الأدنى</string>
<string name="revanced_swipe_overlay_minimal_style_summary_on">تم تمكين النمط الواجهة الأدنى</string>
<string name="revanced_swipe_overlay_minimal_style_summary_off">تم تعطيل نمط الواجهة الأدنى</string>
<string name="revanced_swipe_change_video_title">تمكين إيماءة التمرير لتغيير الفيديو</string>
<string name="revanced_swipe_change_video_summary_on">سيؤدي التمرير في وضع ملء الشاشة إلى التغيير للفيديو التالي/السابق</string>
<string name="revanced_swipe_change_video_summary_off">لن يؤدي التمرير في وضع ملء الشاشة إلى التغيير للفيديو التالي/السابق</string>
@@ -523,6 +527,9 @@ Second \"item\" text"</string>
<patch id="layout.buttons.action.hideButtonsPatch">
<string name="revanced_hide_buttons_screen_title">أزرار الإجراء</string>
<string name="revanced_hide_buttons_screen_summary">إخفاء أو عرض الأزرار تحت الفيديوهات</string>
<string name="revanced_disable_like_subscribe_glow_title">إيقاف تفعيل توهج الإعجاب والاشتراك</string>
<string name="revanced_disable_like_subscribe_glow_summary_on">لن يتوهَّج زرّي أعجبني واشتراك عند ذكرهما</string>
<string name="revanced_disable_like_subscribe_glow_summary_off">سيتوهَّج زرّي أعجبني واشتراك عند ذكرهما</string>
<string name="revanced_hide_like_dislike_button_title">إخفاء أعجبني ولم يعجبني</string>
<string name="revanced_hide_like_dislike_button_summary_on">تم إخفاء أزرار أعجبني ولم يعجبني</string>
<string name="revanced_hide_like_dislike_button_summary_off">يتم عرض أزرار أعجبني ولم يعجبني</string>
@@ -575,12 +582,18 @@ Second \"item\" text"</string>
<string name="revanced_hide_subscriptions_button_title">إخفاء الاشتراكات</string>
<string name="revanced_hide_subscriptions_button_summary_on">تم إخفاء زر الاشتراكات</string>
<string name="revanced_hide_subscriptions_button_summary_off">يتم عرض زر الاشتراكات</string>
<string name="revanced_hide_notifications_button_title">إخفاء الإشعارات</string>
<string name="revanced_hide_notifications_button_summary_on">تم إخفاء زر الإشعارات</string>
<string name="revanced_hide_notifications_button_summary_off">يتم عرض زر الإشعارات</string>
<!-- 'Notifications' should be translated using the same localized wording YouTube displays the tab. -->
<string name="revanced_switch_create_with_notifications_button_title">تبديل الإنشاء مع الإشعارات</string>
<string name="revanced_switch_create_with_notifications_button_summary_on">"تم تبديل زر الإنشاء بـزر الإشعارات
ملاحظة: يؤدي تمكين هذا أيضًا إلى إخفاء إعلانات الفيديو بالقوة"</string>
<string name="revanced_switch_create_with_notifications_button_summary_off">لا يتم تبديل زر الإنشاء بزر الإشعارات</string>
<string name="revanced_switch_create_with_notifications_button_user_dialog_message">"سيؤدي تعطيل هذا الإعداد أيضًا إلى تعطيل حظر إعلانات Shorts.
إذا لم يتم تفعيل تغيير هذا الإعداد، فحاول التبديل إلى وضع التصفُّح المتخفي."</string>
<string name="revanced_hide_navigation_button_labels_title">إخفاء تسميات زر التنقل</string>
<string name="revanced_hide_navigation_button_labels_summary_on">تم إخفاء التسميات</string>
<string name="revanced_hide_navigation_button_labels_summary_off">يتم عرض التسميات</string>
@@ -795,10 +808,13 @@ Second \"item\" text"</string>
<string name="revanced_hide_shorts_navigation_bar_summary_on">تم إخفاء شريط التنقل</string>
<string name="revanced_hide_shorts_navigation_bar_summary_off">يتم عرض شريط التنقل</string>
</patch>
<patch id="layout.hide.suggestedvideoendscreen.disableSuggestedVideoEndScreenResourcePatch">
<string name="revanced_disable_suggested_video_end_screen_title">تعطيل شاشة نهاية الفيديو المقترح</string>
<string name="revanced_disable_suggested_video_end_screen_summary_on">الفيديوهات المقترحة سيتم تعطيلها</string>
<string name="revanced_disable_suggested_video_end_screen_summary_off">الفيديوهات المقترحة سيتم عرضها</string>
<patch id="layout.hide.endscreensuggestion.hideEndScreenSuggestedVideoPatch">
<string name="revanced_end_screen_suggested_video_title">إخفاء الفيديو المقترح في شاشة النهاية</string>
<string name="revanced_end_screen_suggested_video_summary_on">"يتم إخفاء الفيديو المقترح في شاشة النهاية عند إيقاف التشغيل التلقائي
يمكن تغيير التشغيل التلقائي في إعدادات YouTube:
الإعدادات ← التشغيل ← تشغيل الفيديو التالي تلقائيًا"</string>
<string name="revanced_end_screen_suggested_video_summary_off">يتم عرض الفيديو المقترح في شاشة النهاية</string>
</patch>
<patch id="layout.hide.time.hideTimestampPatch">
<string name="revanced_hide_timestamp_title">إخفاء الطابع الزمني للفيديو</string>
@@ -831,7 +847,7 @@ Second \"item\" text"</string>
<!-- Toast shown if network connection times out. Translations of this should not be longer than the original English or the text can be clipped and not entirely shown. -->
<string name="revanced_ryd_failure_connection_timeout">لم يعجبني غير متاح مؤقتًا (انتهت مهلة API)</string>
<string name="revanced_ryd_failure_connection_status_code">لم يعجبني غير متاح (الحالة %d)</string>
<string name="revanced_ryd_failure_client_rate_limit_requested">لم يعجبني غير متاح (تم الوصول إلى حد API العميل)</string>
<string name="revanced_ryd_failure_client_rate_limit_requested">مرات عدم الإعجاب غير متوفرة (حد واجهة برمجة تطبيقات العميل)</string>
<string name="revanced_ryd_failure_generic">لم يعجبني غير متاح (%s)</string>
<!-- Toast shown if the user enables RYD while a video is opened, and then tries to vote for the video. -->
<string name="revanced_ryd_failure_ryd_enabled_while_playing_video_then_user_voted">أعد تحميل الفيديو للتصويت بـ Return YouTube Dislike</string>
@@ -840,14 +856,14 @@ Second \"item\" text"</string>
<string name="revanced_ryd_enable_summary_on">يتم عرض لم يعجبني</string>
<string name="revanced_ryd_enable_summary_off">لا يتم عرض لم يعجبني</string>
<string name="revanced_ryd_shorts_title">عرض لم يعجني في فيديوهات Shorts</string>
<string name="revanced_ryd_shorts_summary_on">يتم عرض لم يعجني في فيديوهات Shorts</string>
<string name="revanced_ryd_shorts_summary_on_disclaimer">"إبداءات لم يعجبني التي تظهر على فيديوهات Shorts
<string name="revanced_ryd_shorts_summary_on">يتم عرض عدم الإعجاب على فيديوهات Shorts</string>
<string name="revanced_ryd_shorts_summary_on_disclaimer">"يتم عرض مرات عدم الإعجاب في فيديوهات Shorts
التقييد: قد لا تظهر إبداءات لم يعجبني في وضع التصفح المتخفي"</string>
<string name="revanced_ryd_shorts_summary_off">تم إخفاء لم يعجني في فيديوهات Shorts</string>
التقييد: قد لا تظهر مرات عدم الإعجاب في وضع التصفح المتخفي"</string>
<string name="revanced_ryd_shorts_summary_off">لا يتم عرض مرات عدم الإعجاب في فيديوهات Shorts</string>
<string name="revanced_ryd_dislike_percentage_title">لم يعجبني كــ نسبة مئوية</string>
<string name="revanced_ryd_dislike_percentage_summary_on">يعرض عدد لم يعجبني كـ نسبة مئوية</string>
<string name="revanced_ryd_dislike_percentage_summary_off">يعرض عدد لم يعجبني كـ رَقَم</string>
<string name="revanced_ryd_dislike_percentage_summary_on">يتم عرض مرات عدم الإعجاب كنسبة مئوية</string>
<string name="revanced_ryd_dislike_percentage_summary_off">يتم عرض مرات عدم الإعجاب كرقم</string>
<!-- Translations should use language similar to 'revanced_sb_enable_compact_skip_button' -->
<string name="revanced_ryd_compact_layout_title">مقاس زر أعجبني</string>
<string name="revanced_ryd_compact_layout_summary_on">زر أعجبني مصمم لأدنى عرض</string>
@@ -914,8 +930,8 @@ Second \"item\" text"</string>
<string name="revanced_sb_enable_compact_skip_button_sum_off">زر التخطي مصمم لأفضل مظهر</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_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_general_time_without">عرض مدة الفيديو بدون المقاطع</string>
@@ -1016,7 +1032,7 @@ Second \"item\" text"</string>
<string name="revanced_sb_skipped_multiple_segments">تم تخطي عدة مقاطع</string>
<string name="revanced_sb_skip_automatically">التخطي تلقائيًا</string>
<string name="revanced_sb_skip_automatically_once">التخطي تلقائيًا مرة واحدة</string>
<string name="revanced_sb_skip_showbutton">عرض زر التخطي</string>
<string name="revanced_sb_skip_showbutton">عرض زر \"التخطي\"</string>
<string name="revanced_sb_skip_seekbaronly">عرض في شريط تقدم الفيديو</string>
<string name="revanced_sb_skip_ignore">تعطيل</string>
<string name="revanced_sb_submit_failed_invalid">غير قادر على إرسال المقطع: الحالة: %s</string>
@@ -1065,7 +1081,7 @@ Second \"item\" text"</string>
<string name="revanced_sb_new_segment_edit_by_hand_parse_error">الوقت المحدد غير صحيح</string>
<string name="revanced_sb_stats">إحصائيات</string>
<!-- Shown in the settings preferences, and translations can be any text length. -->
<string name="revanced_sb_stats_connection_failure">الإحصائيات غير متوفرة مؤقتًا (API معطل)</string>
<string name="revanced_sb_stats_connection_failure">الإحصائيات غير متوفرة مؤقتًا (الواجهة غير متوفرة)</string>
<string name="revanced_sb_stats_loading">جارٍ التحميل...</string>
<string name="revanced_sb_stats_sb_disabled">تم تعطيل SponsorBlock</string>
<string name="revanced_sb_stats_username">اسم المستخدم الخاص بك: &lt;b&gt;%s&lt;/b&gt;</string>
@@ -1339,10 +1355,10 @@ Second \"item\" text"</string>
<string name="revanced_disable_zoom_haptics_summary_off">تم تمكين الاهتزاز</string>
</patch>
<patch id="video.audio.forceOriginalAudioPatch">
<string name="revanced_force_original_audio_title">فرض الصوت الأصلي</string>
<string name="revanced_force_original_audio_summary_on">استخدام الصوت الأصلي</string>
<string name="revanced_force_original_audio_summary_on">استخدام لغة الصوت الأصلية</string>
<string name="revanced_force_original_audio_summary_off">استخدام الصوت الافتراضي</string>
<string name="revanced_force_original_audio_not_available">لاستخدام هذه الميزة، قم بتغيير محاكاة بث المحتوى إلى نوع العميل iOS</string>
<!-- 'Spoof video streams' should be the same translation used for revanced_spoof_video_streams_screen_title -->
<string name="revanced_force_original_audio_not_available">لاستخدام هذه الميزة، غيّر \"انتحال دفقات الفيديو\" إلى iOS TV</string>
</patch>
<patch id="video.quality.rememberVideoQualityPatch">
<!-- Translations should use the same text as revanced_custom_playback_speeds_auto -->
@@ -1405,8 +1421,6 @@ Second \"item\" text"</string>
قد لا يعمل تشغيل الفيديو"</string>
<string name="revanced_spoof_video_streams_user_dialog_message">إيقاف تشغيل هذا الإعداد قد يسبب مشاكل في تشغيل الفيديو.</string>
<string name="revanced_spoof_video_streams_client_type_title">العميل الافتراضي</string>
<!-- 'no auth' means no authentication -->
<string name="revanced_spoof_video_streams_client_type_android_vr_no_auth">Android VR (بدون مصادقة)</string>
<string name="revanced_spoof_video_streams_ios_force_avc_title">فرض iOS AVC (H.264)</string>
<string name="revanced_spoof_video_streams_ios_force_avc_summary_on">يتم فرض ترميز فيديو على AVC (H.264)</string>
<string name="revanced_spoof_video_streams_ios_force_avc_summary_off">يتم تحديد ترميز الفيديو تلقائيًا</string>

View File

@@ -45,7 +45,7 @@ Second \"item\" text"</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. -->
<!-- 'People also watch' should be translated using the same localized wording YouTube displays. -->
<!-- 'People also watched' 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. -->
<!-- https://logos.fandom.com/wiki/YouTube/Yoodles -->
@@ -130,7 +130,7 @@ Second \"item\" text"</string>
<!-- 'remix' should be translated using the same localized wording YouTube displays for the button. -->
<!-- 'share' should be translated using the same localized wording YouTube displays for the button. -->
</patch>
<patch id="layout.hide.suggestedvideoendscreen.disableSuggestedVideoEndScreenResourcePatch">
<patch id="layout.hide.endscreensuggestion.hideEndScreenSuggestedVideoPatch">
</patch>
<patch id="layout.hide.time.hideTimestampPatch">
</patch>
@@ -208,6 +208,7 @@ Second \"item\" text"</string>
<patch id="misc.zoomhaptics.zoomHapticsPatch">
</patch>
<patch id="video.audio.forceOriginalAudioPatch">
<!-- 'Spoof video streams' should be the same translation used for revanced_spoof_video_streams_screen_title -->
</patch>
<patch id="video.quality.rememberVideoQualityPatch">
<!-- Translations should use the same text as revanced_custom_playback_speeds_auto -->
@@ -225,7 +226,6 @@ Second \"item\" text"</string>
<patch id="interaction.seekbar.enableSlideToSeekPatch">
</patch>
<patch id="misc.fix.playback.spoofVideoStreamsPatch">
<!-- 'no auth' means no authentication -->
</patch>
</app>
<app id="twitch">

View File

@@ -161,16 +161,13 @@ Davam et düyməsinə toxun və optimallaşdırma dəyişikliklərin qəbul et."
<string name="revanced_debug_stacktrace_summary_on">Sazlama jurnalına yığın izləri daxildir</string>
<string name="revanced_debug_stacktrace_summary_off">Sazlama jurnalına yığın izləri daxil deyil</string>
<string name="revanced_debug_toast_on_error_title">ReVanced xətasında ani bildiriş göstər</string>
<string name="revanced_debug_toast_on_error_summary_on">Xəta baş verərsə bildiriş göstər</string>
<string name="revanced_debug_toast_on_error_summary_off">Xəta baş verərsə bildiriş göstərmə</string>
<string name="revanced_debug_toast_on_error_summary_on">Xəta baş verərsə ani bildiriş görünür</string>
<string name="revanced_debug_toast_on_error_summary_off">Xəta baş verərsə ani bildiriş görünmür</string>
<string name="revanced_debug_toast_on_error_user_dialog_message">"Xəta ani bildirişlərin qapatmaq, bütün ReVanced xəta bildirişlərin gizlədir.
Gözlənilməz hallardan xəbərdar olmayacaqsınız."</string>
</patch>
<patch id="layout.hide.general.hideLayoutComponentsPatch">
<string name="revanced_disable_like_subscribe_glow_title">Bəyən və Abunə ol düyməsi parıltısın söndür</string>
<string name="revanced_disable_like_subscribe_glow_summary_on">Bəyən və Abunə ol düyməsinə toxunanda parlamayacaq</string>
<string name="revanced_disable_like_subscribe_glow_summary_off">Bəyən və Abunə ol düyməsinə toxunanda parlayacaq</string>
<string name="revanced_hide_album_cards_title">Albom kartlarını gizlət</string>
<string name="revanced_hide_album_cards_summary_on">Albom kartları gizlidir</string>
<string name="revanced_hide_album_cards_summary_off">Albom kartları göstərilir</string>
@@ -193,22 +190,22 @@ Gözlənilməz hallardan xəbərdar olmayacaqsınız."</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əsini gizlət</string>
<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">Kanal yerində \"Sizin üçün\" qismin gizlə</string>
<string name="revanced_hide_for_you_shelf_summary_on">Bölmə gizlidir</string>
<string name="revanced_hide_for_you_shelf_summary_off">Bölmə göstərilir</string>
<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>
<string name="revanced_hide_notify_me_button_summary_on">Düymə gizlidir</string>
<string name="revanced_hide_notify_me_button_summary_off">Düymə göstərilir</string>
<!-- 'People also watch' should be translated using the same localized wording YouTube displays. -->
<string name="revanced_hide_search_result_recommendations_title">\'İnsanların baxdıqları\' tövsiyələrin gizlə</string>
<string name="revanced_hide_search_result_recommendations_summary_on">Tövsiyələr gizlidir</string>
<string name="revanced_hide_search_result_recommendations_summary_off">Tövsiyələr göstərilir</string>
<!-- 'People also watched' should be translated using the same localized wording YouTube displays. -->
<string name="revanced_hide_search_result_recommendations_title">\"İnsanlar həmçinin izləyiblər\" etiketin gizlət</string>
<string name="revanced_hide_search_result_recommendations_summary_on">Etiket gizlidir</string>
<string name="revanced_hide_search_result_recommendations_summary_off">Etiket göstərilir</string>
<!-- 'Show more' should be translated with the same localized wording that YouTube displays.
This button usually appears when searching for a YT creator. -->
<string name="revanced_hide_show_more_button_title">\'Daha çox göstər\' düyməsini gizlət</string>
@@ -224,8 +221,8 @@ Gözlənilməz hallardan xəbərdar olmayacaqsınız."</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">ılan kartlar gizlidir</string>
<string name="revanced_hide_expandable_chip_summary_off">ılan kartlar görünür</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>
@@ -241,7 +238,7 @@ Gözlənilməz hallardan xəbərdar olmayacaqsınız."</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əliklərin icma təlimatlarını gizlət</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>
@@ -280,25 +277,25 @@ Gözlənilməz hallardan xəbərdar olmayacaqsınız."</string>
<string name="revanced_hide_artist_cards_title">Sənətçi kartlarını gizlət</string>
<string name="revanced_hide_artist_cards_summary_on">Sənətçi kartları gizlidir</string>
<string name="revanced_hide_artist_cards_summary_off">Sənətçi kartları göstərilir</string>
<string name="revanced_hide_attributes_section_title">Atributlar bölməsini gizlət</string>
<string name="revanced_hide_attributes_section_summary_on">\"Seçilən məkanlar\", Oyunlar Musiqi bölmələri gizlidir</string>
<string name="revanced_hide_attributes_section_summary_off">\"Seçilən məkanlar\", Oyunlar Musiqi bölmələri göstərilir</string>
<string name="revanced_hide_chapters_section_title">Bölümlər bölməsini gizlət</string>
<string name="revanced_hide_attributes_section_title">Atributları Gizlət</string>
<string name="revanced_hide_attributes_section_summary_on">Seçilən məkanlar, Oyunlar, Musiqi və qeyd edilən insanlar bölmələri gizlədilir</string>
<string name="revanced_hide_attributes_section_summary_off">Seçilən məkanlar, Oyunlar, Musiqi və qeyd edilən insanlar bölmələri görünür</string>
<string name="revanced_hide_chapters_section_title">Fəsilləri Gizlət</string>
<string name="revanced_hide_chapters_section_summary_on">Bölümlər bölməsi gizlidir</string>
<string name="revanced_hide_chapters_section_summary_off">Bölümlər bölməsi göstərilir</string>
<string name="revanced_hide_how_this_was_made_section_title">\"Bu məzmun necə hazırlanıb\" bölməsini gizlət</string>
<string name="revanced_hide_how_this_was_made_section_summary_on">\"Bu məzmun necə hazırlanıb\" bölməsi gizlidir</string>
<string name="revanced_hide_how_this_was_made_section_summary_off">\"Bu məzmun necə hazırlanıb\" bölməsi görünür</string>
<string name="revanced_hide_podcast_section_title">\'Podkastı kəşf et\' bölməsini gizlət</string>
<string name="revanced_hide_podcast_section_summary_on">\"Podkastı kəşf et\" bölməsi gizlədilir</string>
<string name="revanced_hide_podcast_section_summary_off">\"Podkastı kəşf et\" bölməsi göstərilir</string>
<string name="revanced_hide_info_cards_section_title">Məlumat kartları bölməsini gizlət</string>
<string name="revanced_hide_how_this_was_made_section_title">\'Bu məzmun necə hazırlanıb\'ı Gizlət</string>
<string name="revanced_hide_how_this_was_made_section_summary_on">Bu məzmunun necə hazırlandığı bölməsi gizlidir</string>
<string name="revanced_hide_how_this_was_made_section_summary_off">Bu məzmunun necə hazırlandığı bölməsi görünür</string>
<string name="revanced_hide_podcast_section_title">\'Podkastı araşdırın\"-ı Gizlət</string>
<string name="revanced_hide_podcast_section_summary_on">Podkast bölməsin araşdırın gizlidir</string>
<string name="revanced_hide_podcast_section_summary_off">Podkast bölməsin araşdırın görünür</string>
<string name="revanced_hide_info_cards_section_title">Məlumat Kartlarını Gizlət</string>
<string name="revanced_hide_info_cards_section_summary_on">Məlumat kartları bölməsi gizlədilir</string>
<string name="revanced_hide_info_cards_section_summary_off">Məlumat kartları bölməsi göstərilir</string>
<string name="revanced_hide_key_concepts_section_title">\"Əsas anlayışlar\" bölməsini gizlət</string>
<string name="revanced_hide_key_concepts_section_summary_on">\"Əsas anlayışlar\" bölməsi gizlidir</string>
<string name="revanced_hide_key_concepts_section_summary_off">\"Əsas anlayışlar\" bölməsi göstərilir</string>
<string name="revanced_hide_transcript_section_title">Transkripsiya bölməsini gizlət</string>
<string name="revanced_hide_key_concepts_section_title">\"Əsas anlayışları\" gizlət</string>
<string name="revanced_hide_key_concepts_section_summary_on">Əsas anlayışlar bölməsi gizlidir</string>
<string name="revanced_hide_key_concepts_section_summary_off">Əsas anlayışlar bölməsi görünür</string>
<string name="revanced_hide_transcript_section_title">Transkript-i Gizlət</string>
<string name="revanced_hide_transcript_section_summary_on">Transkripsiya bölməsi gizlidir</string>
<string name="revanced_hide_transcript_section_summary_off">Transkripsiya bölməsi göstərilir</string>
<string name="revanced_hide_description_components_screen_title">Video açıqlaması</string>
@@ -316,27 +313,27 @@ Gözlənilməz hallardan xəbərdar olmayacaqsınız."</string>
<string name="revanced_hide_filter_bar_feed_in_related_videos_summary_off">Əlaqəli videolarda görünür</string>
<string name="revanced_comments_screen_title">Şərhlər</string>
<string name="revanced_comments_screen_summary">Şərhlər bölməsi elementlərin gizlət və ya göstər</string>
<string name="revanced_hide_comments_chat_summary_title">\'Söhbət yekunun\' gizlət </string>
<string name="revanced_hide_comments_chat_summary_summary_on">\"Söhbət yekunu\" gizlədilir</string>
<string name="revanced_hide_comments_chat_summary_summary_off">\'Söhbət yekunu\'stərilir</string>
<string name="revanced_hide_comments_chat_summary_title">\'Söhbət yekunun\' Gizlət</string>
<string name="revanced_hide_comments_chat_summary_summary_on">Söhbət yekunu gizlidir </string>
<string name="revanced_hide_comments_chat_summary_summary_off">Söhbət yekunu görünür</string>
<string name="revanced_hide_comments_by_members_header_title">\'Üzvlərin şərhləri\' başlığını gizlət</string>
<string name="revanced_hide_comments_by_members_header_summary_on">\"Üzvlərin şərhləri\" başlığı gizlədilib</string>
<string name="revanced_hide_comments_by_members_header_summary_off">\"Üzvlərin şərhləri\" başlığıstərilir</string>
<string name="revanced_hide_comments_by_members_header_summary_on">Üzvlərin şərhləri başlığı gizlidir</string>
<string name="revanced_hide_comments_by_members_header_summary_off">Üzvlərin şərhləri başlığırünür</string>
<string name="revanced_hide_comments_section_title">Şərhlər bölməsini gizlət</string>
<string name="revanced_hide_comments_section_summary_on">Şərhlər bölməsi gizlidir</string>
<string name="revanced_hide_comments_section_summary_off">Şərhlər bölməsi göstərilir</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">\"Shorts yarat\" düyməsi gizlidir</string>
<string name="revanced_hide_comments_create_a_short_button_summary_off">\"Shorts yarat\" düyməsi göstərilir</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_and_emoji_buttons_title">Emoji və vaxt möhürü düymələrin gizlət</string>
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_summary_on">Emoji və vaxt möhürü düymələri gizlidir</string>
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_summary_off">Emoji və vaxt möhürü düymələri görünür</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_and_emoji_buttons_title">Vaxt möhürü və emoji düymələrin gizlə</string>
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_summary_on">Vaxt möhürü və emoji düymələri gizlədilib</string>
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_summary_off">Vaxt möhürü və emoji düymələri 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>
@@ -417,12 +414,12 @@ Bu xüsusiyyət yalnız köhnə cihazlar üçün mövcuddur"</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 açıqlamada alış-veriş linklərin gizlə</string>
<string name="revanced_hide_shopping_links_summary_on">Alış-veriş bağlantıları gizlədilir</string>
<string name="revanced_hide_shopping_links_summary_off">Alış-veriş bağlantıları göstərilir</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 ziyarət\" düyməsin gizlə</string>
<string name="revanced_hide_visit_store_button_summary_on">Düymə gizlidir</string>
<string name="revanced_hide_visit_store_button_summary_off">Düymə göstərilir</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>
<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>
@@ -446,10 +443,10 @@ Bu xüsusiyyət yalnız köhnə cihazlar üçün mövcuddur"</string>
<string name="revanced_share_copy_url_success">URL buferə köçürüldü</string>
<string name="revanced_share_copy_url_timestamp_success">Vaxt möhürlü URL köçürüldü</string>
<string name="revanced_copy_video_url_title">Video URL-i köçürmə düyməsin göstər</string>
<string name="revanced_copy_video_url_summary_on">Düymə göstərilir. Video URL-sini köçürmək üçün toxun. Vaxt möhürlü video URL-sini köçürmək üçün basılı saxla</string>
<string name="revanced_copy_video_url_summary_on">Düymə göstərilir. Video URL-ni köçürmək üçün toxun. Vaxt möhürü ilə köçürmək üçün basıb saxlayın</string>
<string name="revanced_copy_video_url_summary_off">Düymə göstərilmir</string>
<string name="revanced_copy_video_url_timestamp_title">Vaxt möhürü URL köçür düyməsi göstər</string>
<string name="revanced_copy_video_url_timestamp_summary_on">Düymə göstərilir. Vaxt möhürlü video URL-sini köçürmək üçün toxun. Vaxt möhürü olmadan köçürmək üçün basılı saxla</string>
<string name="revanced_copy_video_url_timestamp_summary_on">Düymə göstərilir. Video URL-ni vaxt möhürü ilə köçürmək üçün toxun. Vaxt möhürü olmadan köçürmək üçün basıb saxlayın</string>
<string name="revanced_copy_video_url_timestamp_summary_off">Düymə göstərilmir</string>
</patch>
<patch id="interaction.dialog.removeViewerDiscretionDialogPatch">
@@ -462,8 +459,8 @@ Bu xüsusiyyət yalnız köhnə cihazlar üçün mövcuddur"</string>
<string name="revanced_external_downloader_screen_title">Xarici yükləmələr</string>
<string name="revanced_external_downloader_screen_summary">Xarici yükləyici istifadəsi üçün tənzimləmələr</string>
<string name="revanced_external_downloader_title">Xarici yükləmə düyməsini göstər</string>
<string name="revanced_external_downloader_summary_on">Yükləmə düyməsi oynadıcıda göstərilir</string>
<string name="revanced_external_downloader_summary_off">Yükləmə düyməsi oynadıcıda göstərilmir</string>
<string name="revanced_external_downloader_summary_on">Endirin düyməsi oynadıcıda göstərilir</string>
<string name="revanced_external_downloader_summary_off">Endirin düyməsi oynadıcıda göstərilmir</string>
<!-- 'download action button' should be translated using the same wording as the translation of 'revanced_hide_download_button_title' -->
<string name="revanced_external_downloader_action_button_title">Yükləmə fəaliyyət düyməsin qəbul etmə</string>
<string name="revanced_external_downloader_action_button_summary_on">Yükləmə düyməsi, xarici yükləyicinizi açır</string>
@@ -484,11 +481,15 @@ Bu xüsusiyyət yalnız köhnə cihazlar üçün mövcuddur"</string>
</patch>
<patch id="interaction.swipecontrols.swipeControlsResourcePatch">
<string name="revanced_swipe_brightness_title">Parlaqlıq jestini aktivləşdir</string>
<string name="revanced_swipe_brightness_summary_on">Parlaqlıq sürüşdürmə aktivdir</string>
<string name="revanced_swipe_brightness_summary_off">Parlaqlıq sürüşdürmə qeyri-aktivdir</string>
<string name="revanced_swipe_brightness_summary_on">"Tam ekran parlaqlıq sürüşdürməsi aktivdir
Ekranın sol tərəfində dikinə sürüşdürərək parlaqlığı tənzimləyin"</string>
<string name="revanced_swipe_brightness_summary_off">Tam ekran parlaqlıq sürüşdürməsi qapalıdır</string>
<string name="revanced_swipe_volume_title">Səs səviyyəsi jestini aktivləşdir</string>
<string name="revanced_swipe_volume_summary_on">Səs səviyyəsin sürüşdürmə aktivdir</string>
<string name="revanced_swipe_volume_summary_off">Səs səviyyəsin sürüşdürmə qeyri-aktivdir</string>
<string name="revanced_swipe_volume_summary_on">"Tam ekran səs sürüşdürməsi aktivdir
Ekranın sağ tərəfində düzünə sürüşdürərək səs səviyyəsini tənzimlə"</string>
<string name="revanced_swipe_volume_summary_off">Tam ekran səs sürüşdürməsi qapalıdır</string>
<string name="revanced_swipe_press_to_engage_title">Basıb sürüşdürmə jestini aktivləşdir</string>
<string name="revanced_swipe_press_to_engage_summary_on">Sürüşdürmək üçün basma aktivdir</string>
<string name="revanced_swipe_press_to_engage_summary_off">Sürüşdürmək üçün basma qeyri-aktivdir</string>
@@ -501,16 +502,19 @@ Bu xüsusiyyət yalnız köhnə cihazlar üçün mövcuddur"</string>
<string name="revanced_swipe_lowest_value_enable_auto_brightness_title">Avto-parlaqlıq jestini aktivləşdir</string>
<string name="revanced_swipe_lowest_value_enable_auto_brightness_summary_on">Parlaqlıq ən aşağı dəyərinə sürüşdürüləndə avto-parlaqlıq aktivləşir</string>
<string name="revanced_swipe_lowest_value_enable_auto_brightness_summary_off">Parlaqlığı ən aşağı dəyərə sürüşdürəndə avto-parlaqlıq aktivləşmir</string>
<string name="revanced_swipe_lowest_value_enable_auto_brightness_overlay_text">Birbaşa</string>
<string name="revanced_swipe_overlay_timeout_title">Sürüşdürmə örtüyü müddəti</string>
<string name="revanced_swipe_overlay_timeout_summary">Örtüyün göründüyü millisaniyələrin sayı</string>
<string name="revanced_swipe_text_overlay_size_title">Örtük mətn ölçüsü dəyişdirmə</string>
<string name="revanced_swipe_text_overlay_size_summary">Sürüşdürmə örtüyü üçün mətn ölçüsü</string>
<string name="revanced_swipe_overlay_background_opacity_title">Sürüşdürmə cildi arxa plan qeyri-şəffaflığı</string>
<string name="revanced_swipe_overlay_background_opacity_summary">0-100 arası qeyri-şəffaflıq dəyəri</string>
<string name="revanced_swipe_overlay_background_opacity_invalid_toast">Sürüşmə qeyri-şəffaflığı 0-100 arası olmalıdır</string>
<string name="revanced_swipe_threshold_title">Sürüşdürmə böyüklük həddi</string>
<string name="revanced_swipe_threshold_summary">Sürüşdürmənin icra edilməsi üçün son dəyər</string>
<string name="revanced_swipe_show_circular_overlay_title">Dairəvi örtüyü göstər</string>
<string name="revanced_swipe_show_circular_overlay_summary_on">Dairəvi örtük göstərilir</string>
<string name="revanced_swipe_show_circular_overlay_summary_off">Düzünə örtük göstərilir</string>
<string name="revanced_swipe_overlay_minimal_style_title">Ən kiçik üslubu aktivləşdir</string>
<string name="revanced_swipe_overlay_minimal_style_summary_on">Ən kiçik örtük üslubu aktivləşdirilib</string>
<string name="revanced_swipe_overlay_minimal_style_summary_off">Ən kiçik örtük üslubu qapalıdır</string>
<string name="revanced_swipe_change_video_title">Videoları ötürmək üçün sürüşdürməni aktiv et</string>
<string name="revanced_swipe_change_video_summary_on">Tam ekran rejimində sürüşdürmə növbəti/əvvəlki videoya ötürəcək</string>
<string name="revanced_swipe_change_video_summary_off">Tam ekran rejimində sürüşdürmə növbəti/əvvəlki videoya ötürməyəcək</string>
@@ -523,6 +527,9 @@ Bu xüsusiyyət yalnız köhnə cihazlar üçün mövcuddur"</string>
<patch id="layout.buttons.action.hideButtonsPatch">
<string name="revanced_hide_buttons_screen_title">Fəaliyyət düymələri</string>
<string name="revanced_hide_buttons_screen_summary">Videonun altındakı düymələri gizlət və ya göstər</string>
<string name="revanced_disable_like_subscribe_glow_title">Bəyən və Abunə Ol parıltısını söndür</string>
<string name="revanced_disable_like_subscribe_glow_summary_on">Bəyən və Abunə ol düyməsinə toxunanda parlamayacaq</string>
<string name="revanced_disable_like_subscribe_glow_summary_off">Bəyən və Abunə ol düyməsinə toxunanda parlayacaq</string>
<string name="revanced_hide_like_dislike_button_title">\"Bəyənmə\" və \"Bəyənməmə\"ni gizlət</string>
<string name="revanced_hide_like_dislike_button_summary_on">Bəyənmə və Bəyənməmə düymələri gizlidir</string>
<string name="revanced_hide_like_dislike_button_summary_off">Bəyənmə və Bəyənməmə düymələri göstərilir</string>
@@ -575,12 +582,18 @@ Bu xüsusiyyət yalnız köhnə cihazlar üçün mövcuddur"</string>
<string name="revanced_hide_subscriptions_button_title">\"Abunəliklər\"i gizlət</string>
<string name="revanced_hide_subscriptions_button_summary_on">Abunəliklər düyməsi gizlidir</string>
<string name="revanced_hide_subscriptions_button_summary_off">Abunəliklər düyməsi göstərilir</string>
<string name="revanced_hide_notifications_button_title">Bildirişləri Gizlət</string>
<string name="revanced_hide_notifications_button_summary_on">Bildirişlər düyməsi gizlidir</string>
<string name="revanced_hide_notifications_button_summary_off">Bildirişlər düyməsi görünür</string>
<!-- 'Notifications' should be translated using the same localized wording YouTube displays the tab. -->
<string name="revanced_switch_create_with_notifications_button_title">\"Yarat\"ı \"Bildirişlər\" ilə dəyişdir</string>
<string name="revanced_switch_create_with_notifications_button_summary_on">"Yarat düyməsi Bildirişlər düyməsi ilə dəyişdirilir
Qeyd: Bunu aktivləşdirmə video reklamları da məcburi olaraq gizlədir"</string>
<string name="revanced_switch_create_with_notifications_button_summary_off">\"Yarat\" düyməsi, \"Bildirişlər\" düyməsi ilə əvəzlənmir</string>
<string name="revanced_switch_create_with_notifications_button_user_dialog_message">"Bu seçimin qapanması Shorts reklam əngəllənməsin də qapadacaq.
Bu seçimi dəyişdirmə işə düşmürsə, Gizli rejimə keçməyə çalışın."</string>
<string name="revanced_hide_navigation_button_labels_title">Fəaliyyət düymə etiketlərini gizlət</string>
<string name="revanced_hide_navigation_button_labels_summary_on">Etiketlər gizlidir</string>
<string name="revanced_hide_navigation_button_labels_summary_off">Etiketlər göstərilir</string>
@@ -795,10 +808,12 @@ Qeyd: Bunu aktivləşdirmə video reklamları da məcburi olaraq gizlədir"</str
<string name="revanced_hide_shorts_navigation_bar_summary_on">Fəaliyyət çubuğu gizlidir</string>
<string name="revanced_hide_shorts_navigation_bar_summary_off">Fəaliyyət çubuğu göstərilir</string>
</patch>
<patch id="layout.hide.suggestedvideoendscreen.disableSuggestedVideoEndScreenResourcePatch">
<string name="revanced_disable_suggested_video_end_screen_title">Təklif edilən video bitiş ekranın qapadın</string>
<string name="revanced_disable_suggested_video_end_screen_summary_on">Təklif olunan videolar qeyri-aktiv ediləcək</string>
<string name="revanced_disable_suggested_video_end_screen_summary_off">Təklif olunan videolar göstəriləcək</string>
<patch id="layout.hide.endscreensuggestion.hideEndScreenSuggestedVideoPatch">
<string name="revanced_end_screen_suggested_video_title">Son ekran bildirilən videonu gizlət</string>
<string name="revanced_end_screen_suggested_video_summary_on">"Avtomatik oynatma qapadılanda son ekran bildirilən video gizlədilir
Avtomatik oynatma YouTube ayarlarında dəyişdirilə bilər: Ayarlar → Oxunuş → Növbəti videonu avtomatik oxudun"</string>
<string name="revanced_end_screen_suggested_video_summary_off">Son ekranda bildirilən video göstərilir</string>
</patch>
<patch id="layout.hide.time.hideTimestampPatch">
<string name="revanced_hide_timestamp_title">Video vaxt möhürünü gizlət</string>
@@ -831,7 +846,7 @@ Qeyd: Bunu aktivləşdirmə video reklamları da məcburi olaraq gizlədir"</str
<!-- Toast shown if network connection times out. Translations of this should not be longer than the original English or the text can be clipped and not entirely shown. -->
<string name="revanced_ryd_failure_connection_timeout">\"Bəyənməmə\" müvəqqəti əlçatmazdır (API vaxtı bitdi)</string>
<string name="revanced_ryd_failure_connection_status_code">Bəyənməmə əlçatmazdır (status %d)</string>
<string name="revanced_ryd_failure_client_rate_limit_requested">Bəyənməmə əlçatmazdır (qəbuledici API limitinə çatdı)</string>
<string name="revanced_ryd_failure_client_rate_limit_requested">Bəyənməmələr mövcud deyil (qəbuledici API limiti)</string>
<string name="revanced_ryd_failure_generic">Bəyənməmə əlçatmazdır (%s)</string>
<!-- Toast shown if the user enables RYD while a video is opened, and then tries to vote for the video. -->
<string name="revanced_ryd_failure_ryd_enabled_while_playing_video_then_user_voted">Ryd ilə səsvermə üçün videonu yenidən yüklə</string>
@@ -840,14 +855,14 @@ Qeyd: Bunu aktivləşdirmə video reklamları da məcburi olaraq gizlədir"</str
<string name="revanced_ryd_enable_summary_on">Bəyənməmələr göstərilir</string>
<string name="revanced_ryd_enable_summary_off">Bəyənməmələr göstərilmir</string>
<string name="revanced_ryd_shorts_title">\"Shorts\"da bəyənməmə sayını göstər</string>
<string name="revanced_ryd_shorts_summary_on">Bəyənməmə sayı \"Shorts\"da göstərilir</string>
<string name="revanced_ryd_shorts_summary_on_disclaimer">"Shorts-da görünən bəyənməmələr
<string name="revanced_ryd_shorts_summary_on">Bəyənməmələr Shorts-da göstərilir</string>
<string name="revanced_ryd_shorts_summary_on_disclaimer">"Bəyənməmələr Shorts-da göstərilir
Məhdudiyyət: Bəyənməmələr gizli rejimdə görünmür"</string>
<string name="revanced_ryd_shorts_summary_off">\"Bəyənməmə\"lər \"Shorts\"da gizlidir</string>
Məhdudiyyət: Bəyənməmələr gizli rejimdə görünməyə bilər"</string>
<string name="revanced_ryd_shorts_summary_off">Bəyənməmələr Shorts-da göstərilmir</string>
<string name="revanced_ryd_dislike_percentage_title">\"Bəyənməmə\"lər faiz olaraq</string>
<string name="revanced_ryd_dislike_percentage_summary_on">\"Bəyənməmə\"lər faiz olaraq göstərilir</string>
<string name="revanced_ryd_dislike_percentage_summary_off">\"Bəyənməmə\"lər nömrəylə göstərilir</string>
<string name="revanced_ryd_dislike_percentage_summary_on">Bəyənməmələr faiz kimi göstərilir</string>
<string name="revanced_ryd_dislike_percentage_summary_off">Bəyənməmələr nömrə kimi göstərilir</string>
<!-- Translations should use language similar to 'revanced_sb_enable_compact_skip_button' -->
<string name="revanced_ryd_compact_layout_title">Yığcam Bəyən Düyməsi</string>
<string name="revanced_ryd_compact_layout_summary_on">Daha kiçik en üçün hazırlanmış Bəyən düyməsi</string>
@@ -909,20 +924,20 @@ Bu funksiya 720p və ya daha aşağı video keyfiyyəti ilə və çox sürətli
<string name="revanced_sb_square_layout_sum_on">Düymələr və idarəedicilər kvadratdır </string>
<string name="revanced_sb_square_layout_sum_off">Düymələr və idarəedicilər dairəvidir</string>
<!-- Translations should use language similar to 'revanced_ryd_compact_layout_title' -->
<string name="revanced_sb_enable_compact_skip_button">Yığcam ötürmə düyməsini istifadə et</string>
<string name="revanced_sb_enable_compact_skip_button">Yığcam Ötürmə düyməsini istifadə et</string>
<string name="revanced_sb_enable_compact_skip_button_sum_on">Ən kiçik en üçün hazırlanmış ötürmə düyməsi</string>
<string name="revanced_sb_enable_compact_skip_button_sum_off">Ən yaxşı görünüş üçün hazırlanan ötürmə düyməsi</string>
<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">Tam bölüm üçün göstərilən ötürmə düyməsi</string>
<string name="revanced_sb_general_skiptoast">Birbaşa ötürüləndə ani bildiriş göstər</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_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_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>
<string name="revanced_sb_enable_create_segment">Yeni Bölüm Yarat Düyməsini Göstər</string>
<string name="revanced_sb_enable_create_segment_sum_on">Yeni bölüm yarat düyməsi göstərilir</string>
<string name="revanced_sb_enable_create_segment_sum_off">Yeni bölüm yarat düyməsi göstərilmir</string>
<string name="revanced_sb_general_adjusting">Yeni bölüm irəliləyişini tənzimlə</string>
@@ -1016,7 +1031,7 @@ Sizin istifadəçi Id-niz parol kimidir və heç vaxt paylaşmaq olmaz.
<string name="revanced_sb_skipped_multiple_segments">Çoxlu bölümlər ötürüldü</string>
<string name="revanced_sb_skip_automatically">Birbaşa ötür</string>
<string name="revanced_sb_skip_automatically_once">Bir dəfə avtomatik ötür</string>
<string name="revanced_sb_skip_showbutton">Ötürmə düyməsini göstər</string>
<string name="revanced_sb_skip_showbutton">Ötürmə Düyməsini Göstər</string>
<string name="revanced_sb_skip_seekbaronly">İrəliləmə cizgisində göstər</string>
<string name="revanced_sb_skip_ignore">Qapadın</string>
<string name="revanced_sb_submit_failed_invalid">Bölüm göndərilmir: %s</string>
@@ -1042,9 +1057,9 @@ Artıq mövcuddur"</string>
<string name="revanced_sb_new_segment_disabled_category">Seçimlərdə kateqoriya qeyri-aktivdir. Göndərmək üçün kateqoriyanı aktiv et.</string>
<string name="revanced_sb_new_segment_title">Yeni SponsorBlock bölümü</string>
<string name="revanced_sb_new_segment_mark_time_as_question">%s, yeni bölümün başlanğıcı və ya sonu kimi təyin edilsin?</string>
<string name="revanced_sb_new_segment_mark_start">başlanğıc</string>
<string name="revanced_sb_new_segment_mark_end">bit</string>
<string name="revanced_sb_new_segment_now">indi</string>
<string name="revanced_sb_new_segment_mark_start">Başlanğıc</string>
<string name="revanced_sb_new_segment_mark_end">Bit</string>
<string name="revanced_sb_new_segment_now">İndi</string>
<string name="revanced_sb_new_segment_time_start">Bölüm başladığı vaxt</string>
<string name="revanced_sb_new_segment_time_end">Bölümün bitmə vaxtı</string>
<string name="revanced_sb_new_segment_confirm_title">Vaxtlar düzgündür?</string>
@@ -1065,7 +1080,7 @@ Təqdim etməyə hazırdır?"</string>
<string name="revanced_sb_new_segment_edit_by_hand_parse_error">Yanlış vaxt verilmişdir</string>
<string name="revanced_sb_stats">Statistikalar</string>
<!-- Shown in the settings preferences, and translations can be any text length. -->
<string name="revanced_sb_stats_connection_failure">Statistikalar müvəqqəti olaraq əlçatmazdır (API zəifdir)</string>
<string name="revanced_sb_stats_connection_failure">Statistikalar müvəqqəti mövcud deyil (API işləmir)</string>
<string name="revanced_sb_stats_loading">Yüklənir...</string>
<string name="revanced_sb_stats_sb_disabled">SponsorBlock qapadıldı</string>
<string name="revanced_sb_stats_username">İstifadəçi adınız: &lt;b&gt;%s&lt;/b&gt;</string>
@@ -1283,13 +1298,13 @@ DeArrow haqqında ətraflı öyrənmək üçün bura toxun"</string>
<string name="revanced_alt_thumbnail_stills_time_entry_2">Videonun ortası</string>
<string name="revanced_alt_thumbnail_stills_time_entry_3">Videonun sonu</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_alt_thumbnail_dearrow_error">DeArrow müvəqqəti əlçatan deyil (status kodu: %s)</string>
<string name="revanced_alt_thumbnail_dearrow_error_generic">DeArrow müvəqqəti olaraq əlçatan deyil</string>
<string name="revanced_alt_thumbnail_dearrow_error">DeArrow müvəqqəti mövcud deyil (status kodu: %s) </string>
<string name="revanced_alt_thumbnail_dearrow_error_generic">DeArrow müvəqqəti olaraq mövcud deyil</string>
</patch>
<patch id="misc.announcements.announcementsPatch">
<string name="revanced_announcements_title">ReVanced elanlarını göstər</string>
<string name="revanced_announcements_summary_on">Elanlar ılışda göstərilir</string>
<string name="revanced_announcements_summary_off">Elanlar ılışda göstərilmir</string>
<string name="revanced_announcements_summary_on">Elanlar başlanğıcda göstərilir</string>
<string name="revanced_announcements_summary_off">Elanlar başlanğıcda göstərilmir</string>
<string name="revanced_announcements_enabled_summary">Elanlarıılışda göstər</string>
<string name="revanced_announcements_connection_failed">Elan provayderinə bağlanmaq olmadı</string>
<string name="revanced_announcements_dialog_dismiss">Ləğv et</string>
@@ -1339,10 +1354,11 @@ Bunu aktivləşdirmə daha yüksək video keyfiyyətləri əngəlin silə bilər
<string name="revanced_disable_zoom_haptics_summary_off">Reaksiya aktivdir</string>
</patch>
<patch id="video.audio.forceOriginalAudioPatch">
<string name="revanced_force_original_audio_title">Orijinal səsi tələb et</string>
<string name="revanced_force_original_audio_summary_on">Orijinal səs istifadəsi</string>
<string name="revanced_force_original_audio_title">Orijinal səs dilini zorla</string>
<string name="revanced_force_original_audio_summary_on">Orijinal səs dilini istifadə</string>
<string name="revanced_force_original_audio_summary_off">İlkin səs istifadəsi</string>
<string name="revanced_force_original_audio_not_available">Bu xüsusiyyəti işlətmək üçün yayım saxtalaşdırmanı iOS ötürücü növünə dəyiş</string>
<!-- 'Spoof video streams' should be the same translation used for revanced_spoof_video_streams_screen_title -->
<string name="revanced_force_original_audio_not_available">Bu xüsusiyyəti istifadə etmək üçün \"Saxta video yayımların\" iOS TV-yə dəyiş</string>
</patch>
<patch id="video.quality.rememberVideoQualityPatch">
<!-- Translations should use the same text as revanced_custom_playback_speeds_auto -->
@@ -1405,8 +1421,6 @@ Bunu aktivləşdirmə daha yüksək video keyfiyyətləri əngəlin silə bilər
Video oynatma işləməyə bilər"</string>
<string name="revanced_spoof_video_streams_user_dialog_message">Bu seçimi bağlamaq, video oynatma problemlərinə səbəb olar.</string>
<string name="revanced_spoof_video_streams_client_type_title">İlkin qəbuledici</string>
<!-- 'no auth' means no authentication -->
<string name="revanced_spoof_video_streams_client_type_android_vr_no_auth">Android VR (təsdiqlənmə yoxdur)</string>
<string name="revanced_spoof_video_streams_ios_force_avc_title">IOS-da AVC (H.264)-ni məcbur et</string>
<string name="revanced_spoof_video_streams_ios_force_avc_summary_on">Video kodlama AVC (H.264)-yə məcbur edilir</string>
<string name="revanced_spoof_video_streams_ios_force_avc_summary_off">Video kodlayıcı avtomatik müəyyən edilir</string>

View File

@@ -161,16 +161,13 @@ Second \"item\" text"</string>
<string name="revanced_debug_stacktrace_summary_on">Журналы адладкі ўключаюць трасіроўку стэка</string>
<string name="revanced_debug_stacktrace_summary_off">Журналы адладкі не ўключаюць трасіроўку стэка</string>
<string name="revanced_debug_toast_on_error_title">Паказаць тост пры памылцы ReVanced</string>
<string name="revanced_debug_toast_on_error_summary_on">Тост паказваецца, калі ўзнікае памылка</string>
<string name="revanced_debug_toast_on_error_summary_off">Тост не паказваецца, калі ўзнікае памылка</string>
<string name="revanced_debug_toast_on_error_summary_on">Паказваць toast у выпадку памылкі</string>
<string name="revanced_debug_toast_on_error_summary_off">Не паказваць toast у выпадку памылкі</string>
<string name="revanced_debug_toast_on_error_user_dialog_message">"Адключэнне паведамленняў пра памылкі схавае ўсе апавяшчэнні ReVanced пра памылкі.
Вы не будзеце атрымліваць апавяшчэнні пра нечаканыя падзеі."</string>
</patch>
<patch id="layout.hide.general.hideLayoutComponentsPatch">
<string name="revanced_disable_like_subscribe_glow_title">Адключыць свецянне кнопак «Мне падабаецца» і «Падпісацца»</string>
<string name="revanced_disable_like_subscribe_glow_summary_on">Кнопкі «Падабаецца» і «Падпісацца» не будуць мігцець пры згадванні</string>
<string name="revanced_disable_like_subscribe_glow_summary_off">Кнопкі «Падабаецца» і «Падпісацца» будуць мігцець пры згадванні</string>
<string name="revanced_hide_album_cards_title">Схаваць карты альбома</string>
<string name="revanced_hide_album_cards_summary_on">Карткі альбомаў схаваныя</string>
<string name="revanced_hide_album_cards_summary_off">Паказваюцца альбомныя карткі</string>
@@ -193,22 +190,22 @@ Second \"item\" text"</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_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>
<string name="revanced_hide_for_you_shelf_title">Схаваць паліцу «Для вас»</string>
<string name="revanced_hide_for_you_shelf_summary_on">Паліца на старонцы канала схаваная</string>
<string name="revanced_hide_for_you_shelf_summary_off">Паліца на старонцы канала паказаная</string>
<!-- 'Notify me' should be translated using the same localized wording YouTube displays.
This item appear in the subscription feed for future livestreams or unreleased videos. -->
<string name="revanced_hide_notify_me_button_title">Схаваць кнопку \"Паведаміць мне\"</string>
<string name="revanced_hide_notify_me_button_summary_on">Кнопка схавана</string>
<string name="revanced_hide_notify_me_button_summary_off">Паказана кнопка</string>
<!-- 'People also watch' should be translated using the same localized wording YouTube displays. -->
<string name="revanced_hide_search_result_recommendations_title">Схаваць рэкамендацыі \"Людзі таксама глядзелі\"</string>
<string name="revanced_hide_search_result_recommendations_summary_on">Рэкамендацыі схаваныя</string>
<string name="revanced_hide_search_result_recommendations_summary_off">Паказаны рэкамендацыі</string>
<!-- 'People also watched' should be translated using the same localized wording YouTube displays. -->
<string name="revanced_hide_search_result_recommendations_title">Схаваць надпіс «Людзі таксама глядзелі»</string>
<string name="revanced_hide_search_result_recommendations_summary_on">Надпіс схаваны</string>
<string name="revanced_hide_search_result_recommendations_summary_off">Надпіс паказаны</string>
<!-- 'Show more' should be translated with the same localized wording that YouTube displays.
This button usually appears when searching for a YT creator. -->
<string name="revanced_hide_show_more_button_title">Схаваць кнопку \"Паказаць больш\"</string>
@@ -224,8 +221,8 @@ Second \"item\" text"</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_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>
@@ -241,7 +238,7 @@ Second \"item\" text"</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_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>
@@ -280,25 +277,25 @@ Second \"item\" text"</string>
<string name="revanced_hide_artist_cards_title">Схаваць карткі выканаўцаў</string>
<string name="revanced_hide_artist_cards_summary_on">Карткі выканаўцаў схаваныя</string>
<string name="revanced_hide_artist_cards_summary_off">Паказваюцца карткі выканаўцаў</string>
<string name="revanced_hide_attributes_section_title">Схаваць раздзел атрыбутаў</string>
<string name="revanced_hide_attributes_section_summary_on">Раздзелы \"Выбраныя месцы\", гульні і музыка схаваны</string>
<string name="revanced_hide_attributes_section_summary_off">Паказваюцца раздзелы \"Выбраныя месцы\", Гульні і Музыка</string>
<string name="revanced_hide_chapters_section_title">Схаваць раздзел \"Раздзелы\"</string>
<string name="revanced_hide_attributes_section_title">Схаваць атрыбуты</string>
<string name="revanced_hide_attributes_section_summary_on">Раздзелы «Папулярныя месцы», «Гульні», «Музыка» і «Людзі, якіх згадвалі» схаваныя</string>
<string name="revanced_hide_attributes_section_summary_off">Раздзелы «Папулярныя месцы», «Гульні», «Музыка» і «Людзі, якіх згадвалі» паказаныя</string>
<string name="revanced_hide_chapters_section_title">Схаваць раздзелы</string>
<string name="revanced_hide_chapters_section_summary_on">Раздзел раздзелаў схаваны</string>
<string name="revanced_hide_chapters_section_summary_off">Паказваецца раздзел раздзелаў</string>
<string name="revanced_hide_how_this_was_made_section_title">Схаваць раздзел «Як быў зроблены гэты кантэнт»</string>
<string name="revanced_hide_how_this_was_made_section_summary_on">Раздзел «Як быў зроблены гэты кантэнт» схаваны</string>
<string name="revanced_hide_how_this_was_made_section_summary_off">Раздзел «Як быў зроблены гэты кантэнт» паказаны</string>
<string name="revanced_hide_podcast_section_title">Схаваць раздзел \"Даследаваць падкаст\"</string>
<string name="revanced_hide_podcast_section_summary_on">Раздзел \"Агляд падкаста\" схаваны</string>
<string name="revanced_hide_podcast_section_summary_off">Паказаны раздзел \"Агляд падкаста\"</string>
<string name="revanced_hide_info_cards_section_title">Схаваць раздзел інфармацыйных карт</string>
<string name="revanced_hide_how_this_was_made_section_title">Схаваць «Як быў створаны гэты кантэнт»</string>
<string name="revanced_hide_how_this_was_made_section_summary_on">Раздзел «Як быў створаны гэты кантэнт» схаваны</string>
<string name="revanced_hide_how_this_was_made_section_summary_off">Раздзел «Як быў створаны гэты кантэнт» паказаны</string>
<string name="revanced_hide_podcast_section_title">Схаваць «Пазнаёмцеся з падкастам»</string>
<string name="revanced_hide_podcast_section_summary_on">Раздзел «Пазнаёмцеся з падкастам» схаваны</string>
<string name="revanced_hide_podcast_section_summary_off">Раздзел «Пазнаёмцеся з падкастам» паказаны</string>
<string name="revanced_hide_info_cards_section_title">Схаваць інфармацыйныя карткі</string>
<string name="revanced_hide_info_cards_section_summary_on">Раздзел інфармацыйных картак схаваны</string>
<string name="revanced_hide_info_cards_section_summary_off">Паказваецца раздзел інфармацыйных карт</string>
<string name="revanced_hide_key_concepts_section_title">Схаваць раздзел «Ключавыя паняцці»</string>
<string name="revanced_hide_key_concepts_section_summary_on">Раздзел \"Ключавыя паняцці\" схаваны</string>
<string name="revanced_hide_key_concepts_section_summary_off">Паказаны раздзел «Ключавыя паняцці»</string>
<string name="revanced_hide_transcript_section_title">Схаваць раздзел стэнаграмы</string>
<string name="revanced_hide_key_concepts_section_title">Схаваць «Ключавыя канцэпцыі»</string>
<string name="revanced_hide_key_concepts_section_summary_on">Раздзел «Ключавыя канцэпцыі» схаваны</string>
<string name="revanced_hide_key_concepts_section_summary_off">Раздзел «Ключавыя канцэпцыі» паказаны</string>
<string name="revanced_hide_transcript_section_title">Схаваць стэнаграму</string>
<string name="revanced_hide_transcript_section_summary_on">Раздзел стэнаграмы схаваны</string>
<string name="revanced_hide_transcript_section_summary_off">Паказваецца раздзел стэнаграмы</string>
<string name="revanced_hide_description_components_screen_title">Апісанне відэа</string>
@@ -316,27 +313,27 @@ Second \"item\" text"</string>
<string name="revanced_hide_filter_bar_feed_in_related_videos_summary_off">Паказана ў звязаных відэа</string>
<string name="revanced_comments_screen_title">Каментарыі</string>
<string name="revanced_comments_screen_summary">Схаваць або паказаць кампаненты раздзела каментарыяў</string>
<string name="revanced_hide_comments_chat_summary_title">Схаваць \"Зводка чата\" </string>
<string name="revanced_hide_comments_chat_summary_summary_on">«Агляд чата» схаваны</string>
<string name="revanced_hide_comments_chat_summary_summary_off">«Агляд чата» паказаны</string>
<string name="revanced_hide_comments_chat_summary_title">Схаваць «Зводку чата»</string>
<string name="revanced_hide_comments_chat_summary_summary_on">Зводка чата схаваная</string>
<string name="revanced_hide_comments_chat_summary_summary_off">Зводка чата паказаная</string>
<string name="revanced_hide_comments_by_members_header_title">Схаваць загаловак \"Каментарыі ўдзельнікаў\"</string>
<string name="revanced_hide_comments_by_members_header_summary_on">Загаловак \"Каментарыі ўдзельнікаў\" схаваны</string>
<string name="revanced_hide_comments_by_members_header_summary_off">Паказаны загаловак \"Каментарыі ўдзельнікаў\"</string>
<string name="revanced_hide_comments_by_members_header_summary_on">Загаловак «Каментары ўдзельнікаў» схаваны</string>
<string name="revanced_hide_comments_by_members_header_summary_off">Загаловак «Каментары ўдзельнікаў» паказаны</string>
<string name="revanced_hide_comments_section_title">Схаваць раздзел каментарыяў</string>
<string name="revanced_hide_comments_section_summary_on">Раздзел каментарыяў схаваны</string>
<string name="revanced_hide_comments_section_summary_off">Паказваецца раздзел каментарыяў</string>
<string name="revanced_hide_comments_create_a_short_button_title">Схаваць кнопку \"Створиць Short\"</string>
<string name="revanced_hide_comments_create_a_short_button_summary_on">Кнопка \"Створиць Short\" схавана</string>
<string name="revanced_hide_comments_create_a_short_button_summary_off">Кнопка \"Створиць Short\" паказана</string>
<string name="revanced_hide_comments_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_and_emoji_buttons_title">Схаваць кнопкі эмодзі і адзнак часу</string>
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_summary_on">Кнопкі эмодзі і адзнак часу схаваныя</string>
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_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_and_emoji_buttons_title">Схаваць метку часу і кнопкі эмодзі</string>
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_summary_on">Кнопкі меткі часу і эмодзі схаваны</string>
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_summary_off">Паказваюцца кнопкі меткі часу і эмодзі</string>
<!-- https://logos.fandom.com/wiki/YouTube/Yoodles -->
<string name="revanced_hide_doodles_title">Схаваць YouTube Doodles</string>
<string name="revanced_hide_doodles_summary_on">Doodles у панэлі пошуку схаваны</string>
@@ -417,12 +414,12 @@ Second \"item\" text"</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>
<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_visit_store_button_summary_on">Кнопка на старонцы канала схаваная</string>
<string name="revanced_hide_visit_store_button_summary_off">Кнопка на старонцы канала паказаная</string>
<string name="revanced_hide_web_search_results_title">Схаваць вынікі вэб-пошуку</string>
<string name="revanced_hide_web_search_results_summary_on">Вынікі вэб-пошуку схаваныя</string>
<string name="revanced_hide_web_search_results_summary_off">Паказваюцца вынікі вэб-пошуку</string>
@@ -446,10 +443,10 @@ Second \"item\" text"</string>
<string name="revanced_share_copy_url_success">URL скапіраваны ў буфер абмену</string>
<string name="revanced_share_copy_url_timestamp_success">URL-адрас з пазнакай часу скапіраваны</string>
<string name="revanced_copy_video_url_title">Паказаць кнопку скапіравання URL відэа</string>
<string name="revanced_copy_video_url_summary_on">Паказана кнопка. Націсніце, каб скапіяваць URL відэа. Націсніце і ўтрымлівайце, каб скапіяваць URL відэа з пазнакай часу</string>
<string name="revanced_copy_video_url_summary_on">Кнопка паказана. Націсніце, каб скапіяваць URL відэа. Націсніце і ўтрымлівайце, каб скапіяваць з пазнакай часу</string>
<string name="revanced_copy_video_url_summary_off">Кнопка не паказваецца</string>
<string name="revanced_copy_video_url_timestamp_title">Паказаць кнопку URL-адрас з часовай пазнакай</string>
<string name="revanced_copy_video_url_timestamp_summary_on">Паказана кнопка. Націсніце, каб скапіяваць URL відэа з пазнакай часу. Націсніце і ўтрымлівайце, каб скапіяваць відэа без пазнакі часу</string>
<string name="revanced_copy_video_url_timestamp_summary_on">Кнопка паказана. Націсніце, каб скапіяваць URL відэа з пазнакай часу. Націсніце і ўтрымлівайце, каб скапіяваць без пазнакі часу</string>
<string name="revanced_copy_video_url_timestamp_summary_off">Кнопка не паказваецца</string>
</patch>
<patch id="interaction.dialog.removeViewerDiscretionDialogPatch">
@@ -462,8 +459,8 @@ Second \"item\" text"</string>
<string name="revanced_external_downloader_screen_title">Знешнія загрузкі</string>
<string name="revanced_external_downloader_screen_summary">Налады для выкарыстання вонкавага загрузніка</string>
<string name="revanced_external_downloader_title">Паказаць знешнюю кнопку загрузкі</string>
<string name="revanced_external_downloader_summary_on">Кнопка загрузкі паказваецца ў плэеры</string>
<string name="revanced_external_downloader_summary_off">Кнопка загрузкі не адлюстроўваецца ў плэеры</string>
<string name="revanced_external_downloader_summary_on">Кнопка загрузкі ў прайгравальніку паказаная</string>
<string name="revanced_external_downloader_summary_off">Кнопка загрузкі ў прайгравальніку не паказаная</string>
<!-- 'download action button' should be translated using the same wording as the translation of 'revanced_hide_download_button_title' -->
<string name="revanced_external_downloader_action_button_title">Перавызначыць кнопку дзеянні спампоўкі</string>
<string name="revanced_external_downloader_action_button_summary_on">Кнопка \"Спампаваць\" адкрывае ваш знешні загрузнік</string>
@@ -484,11 +481,15 @@ Second \"item\" text"</string>
</patch>
<patch id="interaction.swipecontrols.swipeControlsResourcePatch">
<string name="revanced_swipe_brightness_title">Уключыць жэст яркасці</string>
<string name="revanced_swipe_brightness_summary_on">Правядзенне па яркасці ўключана</string>
<string name="revanced_swipe_brightness_summary_off">Правядзенне пальцам па яркасці адключана</string>
<string name="revanced_swipe_brightness_summary_on">"Поўнаэкранны жэст правядзення для яркасці ўключаны
Наладжвайце яркасць, праводзячы вертыкальна па левым баку экрана"</string>
<string name="revanced_swipe_brightness_summary_off">Поўнаэкранны жэст правядзення для яркасці выключаны</string>
<string name="revanced_swipe_volume_title">Уключыць жэст гучнасці</string>
<string name="revanced_swipe_volume_summary_on">Правядзенне пальцам па гучнасці ўключана</string>
<string name="revanced_swipe_volume_summary_off">Правядзенне пальцам па гучнасці адключана</string>
<string name="revanced_swipe_volume_summary_on">"Правядзенне пальцам для рэгулявання гучнасці ва ўвесь экран уключана
Рэгулюйце гучнасць, праводзячы пальцам вертыкальна па правай частцы экрана"</string>
<string name="revanced_swipe_volume_summary_off">Правядзенне пальцам для рэгулявання гучнасці ва ўвесь экран выключана</string>
<string name="revanced_swipe_press_to_engage_title">Уключыць жэст \"націсканне для правядзення пальцам\"</string>
<string name="revanced_swipe_press_to_engage_summary_on">Правядзенне пальцам уключана</string>
<string name="revanced_swipe_press_to_engage_summary_off">Правядзенне пальцам адключана</string>
@@ -501,16 +502,19 @@ Second \"item\" text"</string>
<string name="revanced_swipe_lowest_value_enable_auto_brightness_title">Уключыць жэст аўтаматычнай яркасці</string>
<string name="revanced_swipe_lowest_value_enable_auto_brightness_summary_on">Правядзіце пальцам уніз да самага нізкага значэння яркасці, каб уключыць аўтаматычную яркасць</string>
<string name="revanced_swipe_lowest_value_enable_auto_brightness_summary_off">Правядзенне пальцам уніз да самага нізкага значэння не ўключае аўтаматычную яркасць</string>
<string name="revanced_swipe_lowest_value_enable_auto_brightness_overlay_text">Аўто</string>
<string name="revanced_swipe_overlay_timeout_title">Тайм-аўт накладання пальцам</string>
<string name="revanced_swipe_overlay_timeout_summary">Працягласць бачнага накладання ў мілісекундах</string>
<string name="revanced_swipe_text_overlay_size_title">Памер накладанага тэксту</string>
<string name="revanced_swipe_text_overlay_size_summary">Памер тэксту для накладання пальцам</string>
<string name="revanced_swipe_overlay_background_opacity_title">Непразрыстасць фону накладкі пракруткі</string>
<string name="revanced_swipe_overlay_background_opacity_summary">Значэнне непразрыстасці паміж 0-100</string>
<string name="revanced_swipe_overlay_background_opacity_invalid_toast">Непразрыстасць пракруткі павінна быць паміж 0-100</string>
<string name="revanced_swipe_threshold_title">Парог велічыні пальцам</string>
<string name="revanced_swipe_threshold_summary">Велічыня парогавага значэння для правядзення пальцам</string>
<string name="revanced_swipe_show_circular_overlay_title">Паказваць кругавое накладанне</string>
<string name="revanced_swipe_show_circular_overlay_summary_on">Кругавое накладанне паказваецца</string>
<string name="revanced_swipe_show_circular_overlay_summary_off">Гарызантальнае накладанне паказваецца</string>
<string name="revanced_swipe_overlay_minimal_style_title">Уключыць мінімальны стыль</string>
<string name="revanced_swipe_overlay_minimal_style_summary_on">Уключаны мінімальны стыль накладання</string>
<string name="revanced_swipe_overlay_minimal_style_summary_off">Мінімальны стыль накладання выключаны</string>
<string name="revanced_swipe_change_video_title">Уключыць зьмену відэа праз правядзенне пальцам</string>
<string name="revanced_swipe_change_video_summary_on">Правядзенне пальцам у рэжыме поўнага экрана зьменіць відэа на наступнае/папярэдняе</string>
<string name="revanced_swipe_change_video_summary_off">Правядзенне пальцам у рэжыме поўнага экрана не зьменіць відэа на наступнае/папярэдняе</string>
@@ -523,6 +527,9 @@ Second \"item\" text"</string>
<patch id="layout.buttons.action.hideButtonsPatch">
<string name="revanced_hide_buttons_screen_title">Кнопкі дзеянняў</string>
<string name="revanced_hide_buttons_screen_summary">Схаваць або паказаць кнопкі пад відэа</string>
<string name="revanced_disable_like_subscribe_glow_title">Адключыць свецянне кнопак «Мне падабаецца» і «Падпісацца»</string>
<string name="revanced_disable_like_subscribe_glow_summary_on">Кнопкі «Падабаецца» і «Падпісацца» не будуць мігцець пры згадванні</string>
<string name="revanced_disable_like_subscribe_glow_summary_off">Кнопкі «Падабаецца» і «Падпісацца» будуць мігцець пры згадванні</string>
<string name="revanced_hide_like_dislike_button_title">Схаваць \"Падабаецца\" і \"Не падабаецца\"</string>
<string name="revanced_hide_like_dislike_button_summary_on">Кнопкі \"Падабаецца\" і \"Не падабаецца\" схаваны</string>
<string name="revanced_hide_like_dislike_button_summary_off">Паказваюцца кнопкі \"Падабаецца\" і \"Не падабаецца\"</string>
@@ -575,12 +582,18 @@ Second \"item\" text"</string>
<string name="revanced_hide_subscriptions_button_title">Схаваць падпіскі</string>
<string name="revanced_hide_subscriptions_button_summary_on">Кнопка \"Падпіскі\" схавана</string>
<string name="revanced_hide_subscriptions_button_summary_off">Паказана кнопка \"Падпіскі\"</string>
<string name="revanced_hide_notifications_button_title">Схаваць апавяшчэнні</string>
<string name="revanced_hide_notifications_button_summary_on">Кнопка апавяшчэнняў схаваная</string>
<string name="revanced_hide_notifications_button_summary_off">Кнопка апавяшчэнняў паказаная</string>
<!-- 'Notifications' should be translated using the same localized wording YouTube displays the tab. -->
<string name="revanced_switch_create_with_notifications_button_title">Пераключальнік \"Стварыць з апавяшчэннямі\"</string>
<string name="revanced_switch_create_with_notifications_button_summary_on">"Кнопка «Стварыць» заменена кнопкай «Апавяшчэнні»
Заўвага: Уключэнне гэтага таксама прымусова схавае відэарэкламу"</string>
<string name="revanced_switch_create_with_notifications_button_summary_off">Кнопка \"Стварыць\" не ўзаемадзейнічае з кнопкай \"Апавяшчэнні\"</string>
<string name="revanced_switch_create_with_notifications_button_user_dialog_message">"Адключэнне гэтай налады таксама адключыць блакіроўку рэкламы Shorts.
Калі змена гэтай налады не ўступае ў сілу, паспрабуйце пераключыцца ў рэжым інкогніта."</string>
<string name="revanced_hide_navigation_button_labels_title">Схаваць меткі кнопак навігацыі</string>
<string name="revanced_hide_navigation_button_labels_summary_on">Цэтлікі схаваныя</string>
<string name="revanced_hide_navigation_button_labels_summary_off">Этыкеткі паказаны</string>
@@ -795,10 +808,13 @@ Second \"item\" text"</string>
<string name="revanced_hide_shorts_navigation_bar_summary_on">Панэль навігацыі схавана</string>
<string name="revanced_hide_shorts_navigation_bar_summary_off">Паказана панэль навігацыі</string>
</patch>
<patch id="layout.hide.suggestedvideoendscreen.disableSuggestedVideoEndScreenResourcePatch">
<string name="revanced_disable_suggested_video_end_screen_title">Адключыць канчатковы экран прапанаванага відэа</string>
<string name="revanced_disable_suggested_video_end_screen_summary_on">Прапанаваныя відэа будуць адключаны</string>
<string name="revanced_disable_suggested_video_end_screen_summary_off">Будуць паказаны прапанаваныя відэа</string>
<patch id="layout.hide.endscreensuggestion.hideEndScreenSuggestedVideoPatch">
<string name="revanced_end_screen_suggested_video_title">Схаваць прапанаванае відэа на канчатковым экране</string>
<string name="revanced_end_screen_suggested_video_summary_on">"Прапанаванае відэа на канчатковым экране будзе схавана, калі аўтаматычнае прайграванне выключана.
Аўтаматычнае прайграванне можна змяніць у наладах YouTube:
Налады → Прайграванне → Аўтаматычнае прайграванне наступнага відэа"</string>
<string name="revanced_end_screen_suggested_video_summary_off">Паказваць прапанаванае відэа на канчатковым экране</string>
</patch>
<patch id="layout.hide.time.hideTimestampPatch">
<string name="revanced_hide_timestamp_title">Схаваць метку часу відэа</string>
@@ -831,7 +847,7 @@ Second \"item\" text"</string>
<!-- Toast shown if network connection times out. Translations of this should not be longer than the original English or the text can be clipped and not entirely shown. -->
<string name="revanced_ryd_failure_connection_timeout">Адзнакі \"Не падабаецца\" часова недаступныя (час чакання API скончыўся)</string>
<string name="revanced_ryd_failure_connection_status_code">Дызлайкі недаступныя (статус %d)</string>
<string name="revanced_ryd_failure_client_rate_limit_requested">Дызлайкі недаступныя (дасягнуты ліміт кліенцкага API)</string>
<string name="revanced_ryd_failure_client_rate_limit_requested">Недаступныя дызлайкі (ліміт API кліента)</string>
<string name="revanced_ryd_failure_generic">Не падабаецца (%s)</string>
<!-- Toast shown if the user enables RYD while a video is opened, and then tries to vote for the video. -->
<string name="revanced_ryd_failure_ryd_enabled_while_playing_video_then_user_voted">Перазагрузіце відэа, каб прагаласаваць з дапамогай функцыі \"Вярнуць не падабаецца YouTube\"</string>
@@ -840,14 +856,14 @@ Second \"item\" text"</string>
<string name="revanced_ryd_enable_summary_on">Дызлайкі паказаны</string>
<string name="revanced_ryd_enable_summary_off">Дызлайкі не паказваюцца</string>
<string name="revanced_ryd_shorts_title">Паказвайце \"не падабаецца\" на Shorts</string>
<string name="revanced_ryd_shorts_summary_on">Адзнакі \"не падабаецца\" ў Shorts</string>
<string name="revanced_ryd_shorts_summary_on_disclaimer">"Непападання паказаны на Shorts
<string name="revanced_ryd_shorts_summary_on">Дызлайкі на Shorts паказаныя</string>
<string name="revanced_ryd_shorts_summary_on_disclaimer">"Дызлайкі на Shorts паказаныя
Абмежаванне: Непападання могуць не з'яўляцца ў рэжыме інкогніта"</string>
<string name="revanced_ryd_shorts_summary_off">Дызлакі схаваныя ў Shorts</string>
Абмежаванне: дызлайкі могуць не адлюстроўвацца ў рэжыме інкогніта"</string>
<string name="revanced_ryd_shorts_summary_off">Дызлайкі на Shorts не паказаныя</string>
<string name="revanced_ryd_dislike_percentage_title">Дызлайкі ў працэнтах</string>
<string name="revanced_ryd_dislike_percentage_summary_on">Неўпадабанні паказаны ў працэнтах</string>
<string name="revanced_ryd_dislike_percentage_summary_off">Неўпадабанні паказаны ў выглядзе колькасці</string>
<string name="revanced_ryd_dislike_percentage_summary_on">Дызлайкі паказаны ў працэнтах</string>
<string name="revanced_ryd_dislike_percentage_summary_off">Дызлайкі паказаны лічбай</string>
<!-- Translations should use language similar to 'revanced_sb_enable_compact_skip_button' -->
<string name="revanced_ryd_compact_layout_title">Кампактны дызайн кнопак «Падабаецца» і «Не падабаецца»</string>
<string name="revanced_ryd_compact_layout_summary_on">Кнопка \"Падабаецца\" ў стылі мінімальнай шырыні</string>
@@ -909,20 +925,20 @@ Second \"item\" text"</string>
<string name="revanced_sb_square_layout_sum_on">Кнопкі і элементы кіравання квадратныя</string>
<string name="revanced_sb_square_layout_sum_off">Кнопкі і элементы кіравання закруглены</string>
<!-- Translations should use language similar to 'revanced_ryd_compact_layout_title' -->
<string name="revanced_sb_enable_compact_skip_button">Выкарыстоўвайце кнопку кампактнага пропуску</string>
<string name="revanced_sb_enable_compact_skip_button">Выкарыстоўваць кампактную кнопку «Прапусціць»</string>
<string name="revanced_sb_enable_compact_skip_button_sum_on">Кнопка \"Прапусціць\" у стылі мінімальнай шырыні</string>
<string name="revanced_sb_enable_compact_skip_button_sum_off">Кнопка \"Прапусціць\" аформлена для лепшага выгляду</string>
<string name="revanced_sb_enable_auto_hide_skip_segment_button">Аўтаматычна хаваць кнопку пропуску</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_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_general_time_without">Паказаць працягласць відэа без сегментаў</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>
<string name="revanced_sb_enable_create_segment">Паказваць кнопку «Стварыць новы сегмент»</string>
<string name="revanced_sb_enable_create_segment_sum_on">Паказана кнопка \"Стварыць новы сегмент\"</string>
<string name="revanced_sb_enable_create_segment_sum_off">Кнопка \"Стварыць новы сегмент\" не паказваецца</string>
<string name="revanced_sb_general_adjusting">Адрэгулюйце новы крок сегмента</string>
@@ -1017,7 +1033,7 @@ Second \"item\" text"</string>
<string name="revanced_sb_skipped_multiple_segments">Прапушчаны некалькі сегментаў</string>
<string name="revanced_sb_skip_automatically">Прапусціць аўтаматычна</string>
<string name="revanced_sb_skip_automatically_once">Прапусціць аўтаматычна адзін раз</string>
<string name="revanced_sb_skip_showbutton">Паказаць кнопку пропуску</string>
<string name="revanced_sb_skip_showbutton">Паказваць кнопку «Прапусціць»</string>
<string name="revanced_sb_skip_seekbaronly">Паказаць на панэлі пошуку</string>
<string name="revanced_sb_skip_ignore">Адключыць</string>
<string name="revanced_sb_submit_failed_invalid">Немагчыма адправіць сегмент: %s</string>
@@ -1043,9 +1059,9 @@ Second \"item\" text"</string>
<string name="revanced_sb_new_segment_disabled_category">Катэгорыя адключана ў наладах. Уключыце катэгорыю для адпраўкі.</string>
<string name="revanced_sb_new_segment_title">Новы сегмент SponsorBlock</string>
<string name="revanced_sb_new_segment_mark_time_as_question">Усталяваць %s у якасці пачатку або канца новага сегмента?</string>
<string name="revanced_sb_new_segment_mark_start">пачаць</string>
<string name="revanced_sb_new_segment_mark_end">канец</string>
<string name="revanced_sb_new_segment_now">зараз</string>
<string name="revanced_sb_new_segment_mark_start">Пачатак</string>
<string name="revanced_sb_new_segment_mark_end">Канец</string>
<string name="revanced_sb_new_segment_now">Цяпер</string>
<string name="revanced_sb_new_segment_time_start">Час пачатку сегмента</string>
<string name="revanced_sb_new_segment_time_end">Час заканчэння сегмента</string>
<string name="revanced_sb_new_segment_confirm_title">Ці правільны час?</string>
@@ -1289,8 +1305,8 @@ Second \"item\" text"</string>
</patch>
<patch id="misc.announcements.announcementsPatch">
<string name="revanced_announcements_title">Паказаць аб\"явы ReVanced</string>
<string name="revanced_announcements_summary_on">Аб\"явы паказваюцца пры запуску</string>
<string name="revanced_announcements_summary_off">Аб\"явы не паказваюцца пры запуску</string>
<string name="revanced_announcements_summary_on">Анонсы пры запуску паказаны</string>
<string name="revanced_announcements_summary_off">Анонсы пры запуску не паказаны</string>
<string name="revanced_announcements_enabled_summary">Паказваць аб\"явы пры запуску</string>
<string name="revanced_announcements_connection_failed">Не ўдалося падключыцца да пастаўшчыка аб\"яў</string>
<string name="revanced_announcements_dialog_dismiss">расслабіцца</string>
@@ -1340,10 +1356,11 @@ Second \"item\" text"</string>
<string name="revanced_disable_zoom_haptics_summary_off">Тактыльныя сігналы ўключаны</string>
</patch>
<patch id="video.audio.forceOriginalAudioPatch">
<string name="revanced_force_original_audio_title">Вымушанае арыгінальнае аўдыё</string>
<string name="revanced_force_original_audio_summary_on">Выкарыстанне арыгінальнага аўдыё</string>
<string name="revanced_force_original_audio_title">Вымушаная арыгінальная мова аўдыё</string>
<string name="revanced_force_original_audio_summary_on">Выкарыстоўваць арыгінальную мову аўдыя</string>
<string name="revanced_force_original_audio_summary_off">Выкарыстанне аўдыё па змаўчанні</string>
<string name="revanced_force_original_audio_not_available">Каб выкарыстоўваць гэтую функцыю, зменіце спафінг патоку на тып кліента iOS</string>
<!-- 'Spoof video streams' should be the same translation used for revanced_spoof_video_streams_screen_title -->
<string name="revanced_force_original_audio_not_available">Каб выкарыстоўваць гэту функцыю, змяніце параметр \"Падрабляць відэаструмені\" на iOS TV</string>
</patch>
<patch id="video.quality.rememberVideoQualityPatch">
<!-- Translations should use the same text as revanced_custom_playback_speeds_auto -->
@@ -1406,8 +1423,6 @@ Second \"item\" text"</string>
Прайграванне відэа можа не працаваць"</string>
<string name="revanced_spoof_video_streams_user_dialog_message">Адключэнне гэтай налады можа выклікаць праблемы з прайграваннем відэа.</string>
<string name="revanced_spoof_video_streams_client_type_title">Клиент по умолчанию</string>
<!-- 'no auth' means no authentication -->
<string name="revanced_spoof_video_streams_client_type_android_vr_no_auth">Android VR (няма аўтэнтыфікацыі)</string>
<string name="revanced_spoof_video_streams_ios_force_avc_title">Вымусіць iOS AVC (H.264)</string>
<string name="revanced_spoof_video_streams_ios_force_avc_summary_on">Відэакaдэк зафіксаваны ў AVC (H.264)</string>
<string name="revanced_spoof_video_streams_ios_force_avc_summary_off">Відэакaдэк вызначаецца аўтаматычна</string>

View File

@@ -161,16 +161,13 @@ Second \"item\" text"</string>
<string name="revanced_debug_stacktrace_summary_on">Дневникът за отстраняване на грешки съдържа следи от стека</string>
<string name="revanced_debug_stacktrace_summary_off">Дневникът за отстраняване на грешки не съдържа следи от стека</string>
<string name="revanced_debug_toast_on_error_title">Покажи системно съобщение при ReVanced грешка</string>
<string name="revanced_debug_toast_on_error_summary_on">Системно съобщение ще бъде показано, ако се появи грешка</string>
<string name="revanced_debug_toast_on_error_summary_off">Системно съобщение няма да бъде показано, ако се появи грешка</string>
<string name="revanced_debug_toast_on_error_summary_on">Показва се toast, ако възникне грешка</string>
<string name="revanced_debug_toast_on_error_summary_off">Не се показва toast, ако възникне грешка</string>
<string name="revanced_debug_toast_on_error_user_dialog_message">"Изключването на изскачащи съобщения за грешки крие всички известия за грешки на ReVanced.
Няма да бъдете уведомени за неочаквани събития."</string>
</patch>
<patch id="layout.hide.general.hideLayoutComponentsPatch">
<string name="revanced_disable_like_subscribe_glow_title">Деактивиране на светенето на бутон Like и Subscribe</string>
<string name="revanced_disable_like_subscribe_glow_summary_on">Бутон Like и Subscribe няма да светят при споменаване</string>
<string name="revanced_disable_like_subscribe_glow_summary_off">Бутон Like и Subscribe ще светят при споменаване</string>
<string name="revanced_hide_album_cards_title">\"Карти на албумите\"</string>
<string name="revanced_hide_album_cards_summary_on">Албумните карти са скрити</string>
<string name="revanced_hide_album_cards_summary_off">Албумните карти се показват</string>
@@ -193,22 +190,22 @@ Second \"item\" text"</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_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>
<string name="revanced_hide_for_you_shelf_title">Скриване на рафта \"За вас\"</string>
<string name="revanced_hide_for_you_shelf_summary_on">Рафтът в страницата на канала е скрит</string>
<string name="revanced_hide_for_you_shelf_summary_off">Рафтът в страницата на канала е показан</string>
<!-- 'Notify me' should be translated using the same localized wording YouTube displays.
This item appear in the subscription feed for future livestreams or unreleased videos. -->
<string name="revanced_hide_notify_me_button_title">Скриване на бутона \"Уведоми ме\"</string>
<string name="revanced_hide_notify_me_button_summary_on">Бутона \"Уведоми ме\" е скрит</string>
<string name="revanced_hide_notify_me_button_summary_off">Бутона \"Уведоми ме\" се показва</string>
<!-- 'People also watch' should be translated using the same localized wording YouTube displays. -->
<string name="revanced_hide_search_result_recommendations_title">Скриване на препоръките \'Други харесват също\'</string>
<string name="revanced_hide_search_result_recommendations_summary_on">Препоръките са скрити</string>
<string name="revanced_hide_search_result_recommendations_summary_off">Препоръките се показват</string>
<!-- 'People also watched' should be translated using the same localized wording YouTube displays. -->
<string name="revanced_hide_search_result_recommendations_title">Скриване на етикета \"Хората също гледаха\"</string>
<string name="revanced_hide_search_result_recommendations_summary_on">Етикетът е скрит</string>
<string name="revanced_hide_search_result_recommendations_summary_off">Етикетът е показан</string>
<!-- 'Show more' should be translated with the same localized wording that YouTube displays.
This button usually appears when searching for a YT creator. -->
<string name="revanced_hide_show_more_button_title">Скриване на бутона \"Покажи още\"</string>
@@ -224,8 +221,8 @@ Second \"item\" text"</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_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>
@@ -241,7 +238,7 @@ Second \"item\" text"</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_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>
@@ -280,25 +277,25 @@ Second \"item\" text"</string>
<string name="revanced_hide_artist_cards_title">Скриване на картите на артистите</string>
<string name="revanced_hide_artist_cards_summary_on">Картите на изпълнителите са скрити</string>
<string name="revanced_hide_artist_cards_summary_off">Показват се карти на артисти</string>
<string name="revanced_hide_attributes_section_title">Скриване на секцията с атрибути</string>
<string name="revanced_hide_attributes_section_summary_on">„Популярни места“, „Игри“ и „Музика“ под описанието са скрити</string>
<string name="revanced_hide_attributes_section_summary_off">„Популярни места“, „Игри“ и „Музика“ под описанието се показват</string>
<string name="revanced_hide_chapters_section_title">Скриване на секцията с заглавия</string>
<string name="revanced_hide_attributes_section_title">Скриване на атрибути</string>
<string name="revanced_hide_attributes_section_summary_on">Секциите \"Препоръчани места\", \"Игри\", \"Музика\" и \"Споменати хора\" са скрити</string>
<string name="revanced_hide_attributes_section_summary_off">Секциите \"Препоръчани места\", \"Игри\", \"Музика\" и \"Споменати хора\" са показани</string>
<string name="revanced_hide_chapters_section_title">Скриване на глави</string>
<string name="revanced_hide_chapters_section_summary_on">Секцията с заглавия е скрита</string>
<string name="revanced_hide_chapters_section_summary_off">Секцията с заглавия се показва</string>
<string name="revanced_hide_how_this_was_made_section_title">Скриване на секцията \'Как е създадено това съдържание\'</string>
<string name="revanced_hide_how_this_was_made_section_summary_on">Секцията \'Как е създадено това съдържание\' е скрита</string>
<string name="revanced_hide_how_this_was_made_section_summary_off">Секцията \'Как е създадено това съдържание\' се показва</string>
<string name="revanced_hide_podcast_section_title">Скриване секцията „Разгледайте подкаста</string>
<string name="revanced_hide_podcast_section_summary_on">\"Разгледайте подкаста\" е скрита</string>
<string name="revanced_hide_podcast_section_summary_off">\"Разгледайте подкаста\" се показва</string>
<string name="revanced_hide_info_cards_section_title">Скриване на раздела за информационни карти</string>
<string name="revanced_hide_how_this_was_made_section_title">Скриване на \"Как е създадено това съдържание\"</string>
<string name="revanced_hide_how_this_was_made_section_summary_on">Секцията \"Как е създадено това съдържание\" е скрита</string>
<string name="revanced_hide_how_this_was_made_section_summary_off">Секцията \"Как е създадено това съдържание\" е показана</string>
<string name="revanced_hide_podcast_section_title">Скриване на \"Разгледайте подкаста\"</string>
<string name="revanced_hide_podcast_section_summary_on">Секцията \"Разгледайте подкаста\" е скрита</string>
<string name="revanced_hide_podcast_section_summary_off">Секцията \"Разгледайте подкаста\" е показана</string>
<string name="revanced_hide_info_cards_section_title">Скриване на инфо. карти</string>
<string name="revanced_hide_info_cards_section_summary_on">Разделът за информационни карти е скрит</string>
<string name="revanced_hide_info_cards_section_summary_off">Разделът за информационни карти е показан</string>
<string name="revanced_hide_key_concepts_section_title">Раздел „Ключови понятия“</string>
<string name="revanced_hide_key_concepts_section_summary_on">Раздел „Ключови понятия“ са скрит</string>
<string name="revanced_hide_key_concepts_section_summary_off">Раздел „Ключови понятия“ се показва</string>
<string name="revanced_hide_transcript_section_title">Скриване на раздела за транскрипция</string>
<string name="revanced_hide_key_concepts_section_title">Скриване на \"Основни концепции\"</string>
<string name="revanced_hide_key_concepts_section_summary_on">Секцията \"Основни концепции\" е скрита</string>
<string name="revanced_hide_key_concepts_section_summary_off">Секцията \"Основни концепции\" е показана</string>
<string name="revanced_hide_transcript_section_title">Скриване на транскрипт</string>
<string name="revanced_hide_transcript_section_summary_on">Разделът за транскрипция е скрит</string>
<string name="revanced_hide_transcript_section_summary_off">Разделът за транскрипция е показан</string>
<string name="revanced_hide_description_components_screen_title">Описание на видеото</string>
@@ -316,27 +313,27 @@ Second \"item\" text"</string>
<string name="revanced_hide_filter_bar_feed_in_related_videos_summary_off">Показано в сродни видеоклипове</string>
<string name="revanced_comments_screen_title">Коментари</string>
<string name="revanced_comments_screen_summary">Скриване или показване на секцията за коментари</string>
<string name="revanced_hide_comments_chat_summary_title">Скрий „Резюме на чата</string>
<string name="revanced_hide_comments_chat_summary_summary_on">\'Резюме на чата\' е скрито</string>
<string name="revanced_hide_comments_chat_summary_summary_off">\'Резюме на чата\' е показано</string>
<string name="revanced_hide_comments_chat_summary_title">Скриване на \"Резюме на чата\"</string>
<string name="revanced_hide_comments_chat_summary_summary_on">Резюмето на чата е скрито</string>
<string name="revanced_hide_comments_chat_summary_summary_off">Резюмето на чата е показано</string>
<string name="revanced_hide_comments_by_members_header_title">Скриване на „Коментари, направени от членове“</string>
<string name="revanced_hide_comments_by_members_header_summary_on">„Коментари от членовеса скрити</string>
<string name="revanced_hide_comments_by_members_header_summary_off">„Коментари от членовесе показват</string>
<string name="revanced_hide_comments_by_members_header_summary_on">Заглавието на коментарите от членове е скрито</string>
<string name="revanced_hide_comments_by_members_header_summary_off">Заглавието на коментарите от членове е показано</string>
<string name="revanced_hide_comments_section_title">Скриване на секцията с коментари</string>
<string name="revanced_hide_comments_section_summary_on">Секцията с коментари е скрита</string>
<string name="revanced_hide_comments_section_summary_off">Секцията с коментари се показва</string>
<string name="revanced_hide_comments_create_a_short_button_title">Бутон за създаване на Shorts</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_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_and_emoji_buttons_title">Скриване на бутоните за емоджи и времеви печат</string>
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_summary_on">Бутоните за емоджи и времеви печат са скрити</string>
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_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_and_emoji_buttons_title">Бутони в лентата на прогреса и емотикони</string>
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_summary_on">Бутоните са скрити</string>
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_summary_off">Бутоните се показват</string>
<!-- https://logos.fandom.com/wiki/YouTube/Yoodles -->
<string name="revanced_hide_doodles_title">YouTube Doodles</string>
<string name="revanced_hide_doodles_summary_on">Doodles в лентата за търсене са скрити</string>
@@ -417,12 +414,12 @@ Second \"item\" text"</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>
<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_visit_store_button_summary_on">Бутонът в страницата на канала е скрит</string>
<string name="revanced_hide_visit_store_button_summary_off">Бутонът в страницата на канала е показан</string>
<string name="revanced_hide_web_search_results_title">Скриване на резултатите от уеб търсенето</string>
<string name="revanced_hide_web_search_results_summary_on">Резултатите от уеб търсенето са скрити</string>
<string name="revanced_hide_web_search_results_summary_off">Резултатите от уеб търсенето са показани.</string>
@@ -446,10 +443,10 @@ Second \"item\" text"</string>
<string name="revanced_share_copy_url_success">Връзката е копирана в клипборда.</string>
<string name="revanced_share_copy_url_timestamp_success">URL адрес с отметка за време, копиран в клипборда.</string>
<string name="revanced_copy_video_url_title">Показване на бутона за копиране на URL адреса на видеоклипа</string>
<string name="revanced_copy_video_url_summary_on">Показан е бутон. Докоснете, за да копирате URL на видеото. Докоснете и задръжте, за да копирате URL адреса на видеоклипа с клеймо за време</string>
<string name="revanced_copy_video_url_summary_on">Бутонът е показан. Докоснете, за да копирате URL адреса на видеоклипа. Докоснете и задръжте, за да копирате с времеви печат</string>
<string name="revanced_copy_video_url_summary_off">Бутонът не е показан</string>
<string name="revanced_copy_video_url_timestamp_title">Показване на бутона за копиране на URL адреса на времевия отпечатък на видеоклипа</string>
<string name="revanced_copy_video_url_timestamp_summary_on">Показан е бутон. Докоснете, за да копирате URL адреса на видеоклипа с клеймо за време. Докоснете и задръжте, за да копирате видеоклип без клеймо за време</string>
<string name="revanced_copy_video_url_timestamp_summary_on">Бутонът е показан. Докоснете, за да копирате URL адреса на видеоклипа с времеви печат. Докоснете и задръжте, за да копирате без времеви печат</string>
<string name="revanced_copy_video_url_timestamp_summary_off">Бутонът не е показан</string>
</patch>
<patch id="interaction.dialog.removeViewerDiscretionDialogPatch">
@@ -462,8 +459,8 @@ Second \"item\" text"</string>
<string name="revanced_external_downloader_screen_title">Външни изтегляния</string>
<string name="revanced_external_downloader_screen_summary">Настройки за използване на външно приложение за изтегляне</string>
<string name="revanced_external_downloader_title">Показване на бутона за изтегляне чрез външно приложение</string>
<string name="revanced_external_downloader_summary_on">Бутонът за изтегляне е показан в плейъра</string>
<string name="revanced_external_downloader_summary_off">Бутонът за изтегляне не е показан в плейъра</string>
<string name="revanced_external_downloader_summary_on">Бутонът за изтегляне в плейъра е показан</string>
<string name="revanced_external_downloader_summary_off">Бутонът за изтегляне в плейъра не е показан</string>
<!-- 'download action button' should be translated using the same wording as the translation of 'revanced_hide_download_button_title' -->
<string name="revanced_external_downloader_action_button_title">Заместване на бутона Download</string>
<string name="revanced_external_downloader_action_button_summary_on">Бутонът за изтегляне отваря избраното от Вас външно приложение за изтегляне</string>
@@ -484,11 +481,15 @@ Second \"item\" text"</string>
</patch>
<patch id="interaction.swipecontrols.swipeControlsResourcePatch">
<string name="revanced_swipe_brightness_title">Задаване на яркост чрез плъзгане</string>
<string name="revanced_swipe_brightness_summary_on">Опцията за превъртане с плъзгане за промяна на яркостта е активирана</string>
<string name="revanced_swipe_brightness_summary_off">Опцията за превъртане с плъзгане за промяна на яркостта е деактивирана</string>
<string name="revanced_swipe_brightness_summary_on">лъзгането за яркост на цял екран е активирано
Регулирайте яркостта, като плъзгате вертикално от лявата страна на екрана"</string>
<string name="revanced_swipe_brightness_summary_off">Плъзгането за яркост на цял екран е деактивирано</string>
<string name="revanced_swipe_volume_title">Настройване на звука чрез плъзгане</string>
<string name="revanced_swipe_volume_summary_on">Обемът чрез плъзване е активен</string>
<string name="revanced_swipe_volume_summary_off">Обемът чрез плъзване е деактивиран</string>
<string name="revanced_swipe_volume_summary_on">"Плъзгането за сила на звука на цял екран е активирано
Регулирайте силата на звука, като плъзнете вертикално от дясната страна на екрана"</string>
<string name="revanced_swipe_volume_summary_off">Плъзгането за сила на звука на цял екран е деактивирано</string>
<string name="revanced_swipe_press_to_engage_title">Активиране на жеста натискане за преместване</string>
<string name="revanced_swipe_press_to_engage_summary_on">Плъзгането чрез натискане е активирано</string>
<string name="revanced_swipe_press_to_engage_summary_off">Плъзгането чрез натискане е деактивирано</string>
@@ -501,16 +502,19 @@ Second \"item\" text"</string>
<string name="revanced_swipe_lowest_value_enable_auto_brightness_title">Задаване на яркост чрез плъзгане</string>
<string name="revanced_swipe_lowest_value_enable_auto_brightness_summary_on">Плъзгането надолу до най-ниската стойност на жеста за яркост, за да се активира автоматичната яркост</string>
<string name="revanced_swipe_lowest_value_enable_auto_brightness_summary_off">Плъзгането надолу до най-ниската стойност на жеста за яркост, без дасе активира автоматичната яркост</string>
<string name="revanced_swipe_lowest_value_enable_auto_brightness_overlay_text">Авто</string>
<string name="revanced_swipe_overlay_timeout_title">Задръжка на плъзгащата контрола за показване</string>
<string name="revanced_swipe_overlay_timeout_summary">Време за което плъзгащата контрола е видима.</string>
<string name="revanced_swipe_text_overlay_size_title">Размер на текста при плъзгане</string>
<string name="revanced_swipe_text_overlay_size_summary">Размера на текста на плъзгащите контроли</string>
<string name="revanced_swipe_overlay_background_opacity_title">Плъзгане на фона на наслагването непрозрачност</string>
<string name="revanced_swipe_overlay_background_opacity_summary">Стойност на непрозрачността между 0-100</string>
<string name="revanced_swipe_overlay_background_opacity_invalid_toast">Непрозрачността на плъзгането трябва да е между 0-100</string>
<string name="revanced_swipe_threshold_title">Праг на величината на плъзгане</string>
<string name="revanced_swipe_threshold_summary">Праг преди да се осъществи плъзгането</string>
<string name="revanced_swipe_show_circular_overlay_title">Показване на кръгъл овърлей</string>
<string name="revanced_swipe_show_circular_overlay_summary_on">Показва се кръгъл овърлей</string>
<string name="revanced_swipe_show_circular_overlay_summary_off">Показва се хоризонтален овърлей</string>
<string name="revanced_swipe_overlay_minimal_style_title">Активиране на минимален стил</string>
<string name="revanced_swipe_overlay_minimal_style_summary_on">Минималният стил на наслагване е активиран</string>
<string name="revanced_swipe_overlay_minimal_style_summary_off">Минималният стил на овърлея е деактивиран</string>
<string name="revanced_swipe_change_video_title">Включване на превключване на видеото чрез плъзване</string>
<string name="revanced_swipe_change_video_summary_on">Плъзването в режим на цял екран ще превключи към следващото/предишно видео</string>
<string name="revanced_swipe_change_video_summary_off">Плъзването в режим на цял екран няма да превключи към следващото/предишно видео</string>
@@ -523,6 +527,9 @@ Second \"item\" text"</string>
<patch id="layout.buttons.action.hideButtonsPatch">
<string name="revanced_hide_buttons_screen_title">Бутони за действия</string>
<string name="revanced_hide_buttons_screen_summary">Скриване или показване на бутони под видеото</string>
<string name="revanced_disable_like_subscribe_glow_title">Деактивиране на светенето на бутон Like и Subscribe</string>
<string name="revanced_disable_like_subscribe_glow_summary_on">Бутон Like и Subscribe няма да светят при споменаване</string>
<string name="revanced_disable_like_subscribe_glow_summary_off">Бутон Like и Subscribe ще светят при споменаване</string>
<string name="revanced_hide_like_dislike_button_title">Бутони \"Харесвам\" и \"Не харесвам\"</string>
<string name="revanced_hide_like_dislike_button_summary_on">Бутоните \"Харесвам\" и \"Не харесвам\" са скрити</string>
<string name="revanced_hide_like_dislike_button_summary_off">Бутоните \"Харесвам\" и \"Не харесвам\" се показват</string>
@@ -575,12 +582,18 @@ Second \"item\" text"</string>
<string name="revanced_hide_subscriptions_button_title">Абонаменти</string>
<string name="revanced_hide_subscriptions_button_summary_on">Бутона за абонаменти е скрит</string>
<string name="revanced_hide_subscriptions_button_summary_off">Бутона за абонаменти се показва</string>
<string name="revanced_hide_notifications_button_title">Скриване на известията</string>
<string name="revanced_hide_notifications_button_summary_on">Бутонът за известия е скрит</string>
<string name="revanced_hide_notifications_button_summary_off">Бутонът за известия е показан</string>
<!-- 'Notifications' should be translated using the same localized wording YouTube displays the tab. -->
<string name="revanced_switch_create_with_notifications_button_title">Заменете бутона „Създаване“ с бутона „Известия“</string>
<string name="revanced_switch_create_with_notifications_button_summary_on">"Бутонът за създаване е сменен с бутона Известия
Забележка: Активирането на това също принудително скрива видео рекламите"</string>
<string name="revanced_switch_create_with_notifications_button_summary_off">Бутоните \"Създаване\" и \"Известия\" не са разменени</string>
<string name="revanced_switch_create_with_notifications_button_user_dialog_message">"Деактивирането на тази настройка също ще деактивира блокирането на рекламите за Shorts.
Ако промяната на тази настройка не влезе в сила, опитайте да превключите в режим „инкогнито“."</string>
<string name="revanced_hide_navigation_button_labels_title">Имена на бутоните на лентата за навигация</string>
<string name="revanced_hide_navigation_button_labels_summary_on">Етикетите са скрити</string>
<string name="revanced_hide_navigation_button_labels_summary_off">Етикетите се показват</string>
@@ -795,10 +808,13 @@ Second \"item\" text"</string>
<string name="revanced_hide_shorts_navigation_bar_summary_on">Навигационната лента е скрита</string>
<string name="revanced_hide_shorts_navigation_bar_summary_off">Навигационната лента се показва</string>
</patch>
<patch id="layout.hide.suggestedvideoendscreen.disableSuggestedVideoEndScreenResourcePatch">
<string name="revanced_disable_suggested_video_end_screen_title">Препоръчани видеоклипове в края</string>
<string name="revanced_disable_suggested_video_end_screen_summary_on">Препоръчаните видеоклипове в края са скрити</string>
<string name="revanced_disable_suggested_video_end_screen_summary_off">Препоръчаните видеоклипове в края се показват</string>
<patch id="layout.hide.endscreensuggestion.hideEndScreenSuggestedVideoPatch">
<string name="revanced_end_screen_suggested_video_title">Скриване на предложеното видео в края на екрана</string>
<string name="revanced_end_screen_suggested_video_summary_on">"Предложеното видео в края на екрана е скрито, когато автоматичното пускане е изключено
Автоматичното пускане може да бъде променено в настройките на YouTube:
Настройки → Възпроизвеждане → Автоматично пускане на следващото видео"</string>
<string name="revanced_end_screen_suggested_video_summary_off">Предложеното видео в края на екрана е показано</string>
</patch>
<patch id="layout.hide.time.hideTimestampPatch">
<string name="revanced_hide_timestamp_title">Скриване на клеймото за време на видеоклипа</string>
@@ -831,7 +847,7 @@ Second \"item\" text"</string>
<!-- Toast shown if network connection times out. Translations of this should not be longer than the original English or the text can be clipped and not entirely shown. -->
<string name="revanced_ryd_failure_connection_timeout">Нехаресванията временно не са налични (API timed out)</string>
<string name="revanced_ryd_failure_connection_status_code">Нехаресванията не са налични (status %d)</string>
<string name="revanced_ryd_failure_client_rate_limit_requested">Нехаресванията не са достъпни (достигнат лимит на API)</string>
<string name="revanced_ryd_failure_client_rate_limit_requested">Не са налични нехаресвания (ограничение на клиентския API)</string>
<string name="revanced_ryd_failure_generic">Нехаресванията не са налични (%s)</string>
<!-- Toast shown if the user enables RYD while a video is opened, and then tries to vote for the video. -->
<string name="revanced_ryd_failure_ryd_enabled_while_playing_video_then_user_voted">Презареди видеото за гласуване с ReturnYouTubeDislike</string>
@@ -840,14 +856,14 @@ Second \"item\" text"</string>
<string name="revanced_ryd_enable_summary_on">Нехаресванията се показват</string>
<string name="revanced_ryd_enable_summary_off">Нехаресванията не се показват</string>
<string name="revanced_ryd_shorts_title">Пок. нехаресвания в кратките клипове</string>
<string name="revanced_ryd_shorts_summary_on">Нехаресванията се показват в кратките клипове</string>
<string name="revanced_ryd_shorts_summary_on_disclaimer">"Нехаресванията се показват на шорти
<string name="revanced_ryd_shorts_summary_on">Нехаресванията на Shorts са показани</string>
<string name="revanced_ryd_shorts_summary_on_disclaimer">"Нехаресванията на Shorts са показани
Ограничение: Нехаресванията може да не се появят в режим инкогнито"</string>
<string name="revanced_ryd_shorts_summary_off">Нехаресванията са скрити в кратките клипове</string>
Ограничение: Нехаресванията може да не се показват в режим инкогнито"</string>
<string name="revanced_ryd_shorts_summary_off">Нехаресванията на Shorts не са показани</string>
<string name="revanced_ryd_dislike_percentage_title">Нехаресвания като процент</string>
<string name="revanced_ryd_dislike_percentage_summary_on">Нехаресванията се показват като процент</string>
<string name="revanced_ryd_dislike_percentage_summary_off">Нехаресванията се показват като число</string>
<string name="revanced_ryd_dislike_percentage_summary_on">Нехаресванията са показани като процент</string>
<string name="revanced_ryd_dislike_percentage_summary_off">Нехаресванията са показани като число</string>
<!-- Translations should use language similar to 'revanced_sb_enable_compact_skip_button' -->
<string name="revanced_ryd_compact_layout_title">Компактен Like бутон</string>
<string name="revanced_ryd_compact_layout_summary_on">Включен компактен бутон \"Харесва ми\"</string>
@@ -909,20 +925,20 @@ Second \"item\" text"</string>
<string name="revanced_sb_square_layout_sum_on">Бутоните и контролите са квадратни</string>
<string name="revanced_sb_square_layout_sum_off">Бутоните и контролите са заоблени</string>
<!-- Translations should use language similar to 'revanced_ryd_compact_layout_title' -->
<string name="revanced_sb_enable_compact_skip_button">Компактен бутон за пропускане</string>
<string name="revanced_sb_enable_compact_skip_button">Използване на компактен бутон \"Пропускане\"</string>
<string name="revanced_sb_enable_compact_skip_button_sum_on">Мин. ширина на бутона за пропускане</string>
<string name="revanced_sb_enable_compact_skip_button_sum_off">Най-добър изглед на бутона за пропускане</string>
<string name="revanced_sb_enable_auto_hide_skip_segment_button">Авт. скриване на бутона за пропускане</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_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_general_time_without">Показване на дължината на видеото без сигментите</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>
<string name="revanced_sb_enable_create_segment">Показване на бутон \"Създаване на нов сегмент\"</string>
<string name="revanced_sb_enable_create_segment_sum_on">Бутона създаване за нова част се показва</string>
<string name="revanced_sb_enable_create_segment_sum_off">Бутона създаване за нова част не се показва</string>
<string name="revanced_sb_general_adjusting">Настройване стъпка на новата част</string>
@@ -1016,7 +1032,7 @@ Second \"item\" text"</string>
<string name="revanced_sb_skipped_multiple_segments">Пропуснати множество части</string>
<string name="revanced_sb_skip_automatically">Автоматично пропускане</string>
<string name="revanced_sb_skip_automatically_once">Авт. пропускане веднъж</string>
<string name="revanced_sb_skip_showbutton">Показвай бутон за пропускане</string>
<string name="revanced_sb_skip_showbutton">Показване на бутон \"Пропускане\"</string>
<string name="revanced_sb_skip_seekbaronly">Показв. в лентата за време</string>
<string name="revanced_sb_skip_ignore">Деактивиране</string>
<string name="revanced_sb_submit_failed_invalid">Не може да се изпрати сегмент: %s</string>
@@ -1042,9 +1058,9 @@ Second \"item\" text"</string>
<string name="revanced_sb_new_segment_disabled_category">Категорията е изкл. в настройките. Вкл. я за да можете да изпратите.</string>
<string name="revanced_sb_new_segment_title">Нова част в SponsorBlock</string>
<string name="revanced_sb_new_segment_mark_time_as_question">Задаване на %s като начало или край на нов раздел?</string>
<string name="revanced_sb_new_segment_mark_start">начало</string>
<string name="revanced_sb_new_segment_mark_end">край</string>
<string name="revanced_sb_new_segment_now">сега</string>
<string name="revanced_sb_new_segment_mark_start">Начало</string>
<string name="revanced_sb_new_segment_mark_end">Край</string>
<string name="revanced_sb_new_segment_now">Сега</string>
<string name="revanced_sb_new_segment_time_start">Частта започва от</string>
<string name="revanced_sb_new_segment_time_end">Частта свършва до</string>
<string name="revanced_sb_new_segment_confirm_title">Времената точни ли са?</string>
@@ -1065,7 +1081,7 @@ Second \"item\" text"</string>
<string name="revanced_sb_new_segment_edit_by_hand_parse_error">Зададено е невалидно време</string>
<string name="revanced_sb_stats">Статистика</string>
<!-- Shown in the settings preferences, and translations can be any text length. -->
<string name="revanced_sb_stats_connection_failure">Статистиката е враменно недостъпна (API не работи)</string>
<string name="revanced_sb_stats_connection_failure">Статистиките временно не са налични (API не работи)</string>
<string name="revanced_sb_stats_loading">Зареждане...</string>
<string name="revanced_sb_stats_sb_disabled">SponsorBlock е деактивиран.</string>
<string name="revanced_sb_stats_username">Вашето потреб. име: &lt;b&gt;%s&lt;/b&gt;</string>
@@ -1283,13 +1299,13 @@ Second \"item\" text"</string>
<string name="revanced_alt_thumbnail_stills_time_entry_2">Средата на видеото</string>
<string name="revanced_alt_thumbnail_stills_time_entry_3">Края на видеото</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_alt_thumbnail_dearrow_error">DeArrow временно не е наличен. (код на състоянието: %s)</string>
<string name="revanced_alt_thumbnail_dearrow_error">DeArrow временно не е наличен (код на състоянието: %s)</string>
<string name="revanced_alt_thumbnail_dearrow_error_generic">DeArrow временно не е наличен</string>
</patch>
<patch id="misc.announcements.announcementsPatch">
<string name="revanced_announcements_title">Показване на ReVanced съобщения</string>
<string name="revanced_announcements_summary_on">Съобщенията се показват при стартиране</string>
<string name="revanced_announcements_summary_off">Съобщенията не се показват при стартиране</string>
<string name="revanced_announcements_summary_on">Обявите при стартиране са показани</string>
<string name="revanced_announcements_summary_off">Обявите при стартиране не са показани</string>
<string name="revanced_announcements_enabled_summary">Показване на съобщения при стартиране</string>
<string name="revanced_announcements_connection_failed">Неуспешно свързване с доставчик на съобщения</string>
<string name="revanced_announcements_dialog_dismiss">Отхвърли</string>
@@ -1339,10 +1355,11 @@ Second \"item\" text"</string>
<string name="revanced_disable_zoom_haptics_summary_off">Вибрациите са активирани</string>
</patch>
<patch id="video.audio.forceOriginalAudioPatch">
<string name="revanced_force_original_audio_title">Принудително оригинално аудио</string>
<string name="revanced_force_original_audio_summary_on">Използване на оригинално аудио</string>
<string name="revanced_force_original_audio_title">Принудително оригинално аудио език</string>
<string name="revanced_force_original_audio_summary_on">Използване на оригиналния език на аудиото</string>
<string name="revanced_force_original_audio_summary_off">Използване на аудио по подразбиране</string>
<string name="revanced_force_original_audio_not_available">За да използвате тази функция, променете имитацията на поточно предаване на тип клиент на iOS</string>
<!-- 'Spoof video streams' should be the same translation used for revanced_spoof_video_streams_screen_title -->
<string name="revanced_force_original_audio_not_available">За да използвате тази функция, сменете „Фалшифициране на видео потоци“ на iOS TV</string>
</patch>
<patch id="video.quality.rememberVideoQualityPatch">
<!-- Translations should use the same text as revanced_custom_playback_speeds_auto -->
@@ -1405,8 +1422,6 @@ Second \"item\" text"</string>
Възпроизвеждането на видеоклипове може да не работи"</string>
<string name="revanced_spoof_video_streams_user_dialog_message">Деактивирането на тази настройка ще доведе до проблеми с възпроизвеждането на видео.</string>
<string name="revanced_spoof_video_streams_client_type_title">Клиент по подразбиране</string>
<!-- 'no auth' means no authentication -->
<string name="revanced_spoof_video_streams_client_type_android_vr_no_auth">Android VR (bez avtorizaciq)</string>
<string name="revanced_spoof_video_streams_ios_force_avc_title">Принудително използване на AVC (H.264) на iOS</string>
<string name="revanced_spoof_video_streams_ios_force_avc_summary_on">Видео кодекът е принудително зададен на AVC (H.264)</string>
<string name="revanced_spoof_video_streams_ios_force_avc_summary_off">Видео кодекът се определя автоматично</string>

View File

@@ -161,16 +161,13 @@ MicroG-এর জন্য ব্যাটারি অপ্টিমাইজ
<string name="revanced_debug_stacktrace_summary_on">ডিবাগ লগ স্টেক ট্রেস সংযুক্ত করবে</string>
<string name="revanced_debug_stacktrace_summary_off">ডিবাগ লগ স্টেক ট্রেস সংযুক্ত করবে না</string>
<string name="revanced_debug_toast_on_error_title">ReVanced এর ত্রুটির ক্ষেত্রে টোস্ট দেখান</string>
<string name="revanced_debug_toast_on_error_summary_on">কোন ত্রুটি দেখা গেলে টোস্ট দেখায়</string>
<string name="revanced_debug_toast_on_error_summary_off">কোন ত্রুটি দেখা গেলে টোস্ট দেখায় না</string>
<string name="revanced_debug_toast_on_error_summary_on">যদি ত্রুটি ঘটে তবে toast দেখানো হবে</string>
<string name="revanced_debug_toast_on_error_summary_off">যদি ত্রুটি ঘটে তবে toast দেখানো হবে না</string>
<string name="revanced_debug_toast_on_error_user_dialog_message">"ত্রুটি \"toast\" বন্ধ করে ReVanced ত্রুটি বিজ্ঞপ্তিগুলি লুকানো হয়।
আপনি কোনও অপ্রত্যাশিত ঘটনার বিষয়ে অবহিত হবেন না।"</string>
</patch>
<patch id="layout.hide.general.hideLayoutComponentsPatch">
<string name="revanced_disable_like_subscribe_glow_title">সক্রিয়করন বোতাম গ্লো বন্ধ করুন</string>
<string name="revanced_disable_like_subscribe_glow_summary_on">উল্লেখ করলে সক্রিয়করন এবং সাবস্ক্রাইব বোতাম উজ্জ্বল হবে না</string>
<string name="revanced_disable_like_subscribe_glow_summary_off">উল্লেখ করলে সক্রিয়করন এবং সাবস্ক্রাইব বোতাম উজ্জ্বল হবে</string>
<string name="revanced_hide_album_cards_title">অ্যালবাম কার্ড লুকান</string>
<string name="revanced_hide_album_cards_summary_on">অ্যালবাম কার্ড লুকিয়ে রয়েছে</string>
<string name="revanced_hide_album_cards_summary_off">অ্যালবাম কার্ড প্রদর্শিত হয়েছে</string>
@@ -193,22 +190,22 @@ MicroG-এর জন্য ব্যাটারি অপ্টিমাইজ
<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_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>
<string name="revanced_hide_for_you_shelf_title">\'আপনার জন্য\' শেলফ লুকান</string>
<string name="revanced_hide_for_you_shelf_summary_on">চ্যানেল পৃষ্ঠায় শেলফ লুকানো আছে</string>
<string name="revanced_hide_for_you_shelf_summary_off">চ্যানেল পৃষ্ঠায় শেল্ফ দেখানো হয়েছে</string>
<!-- 'Notify me' should be translated using the same localized wording YouTube displays.
This item appear in the subscription feed for future livestreams or unreleased videos. -->
<string name="revanced_hide_notify_me_button_title">\'আমাকে জানান\' বোতাম লুকান</string>
<string name="revanced_hide_notify_me_button_summary_on">বোতাম লুকানো আছে</string>
<string name="revanced_hide_notify_me_button_summary_off">বোতাম দেখানো আছে</string>
<!-- 'People also watch' should be translated using the same localized wording YouTube displays. -->
<string name="revanced_hide_search_result_recommendations_title">\'মানুষ আরও দেখছে\' প্রস্তাবনাগুলো লুকান</string>
<string name="revanced_hide_search_result_recommendations_summary_on">প্রস্তাবনাগুলো লুকিয়ে রয়েছে</string>
<string name="revanced_hide_search_result_recommendations_summary_off">প্রস্তাবনাগুলো প্রদর্শিত হয়েছে</string>
<!-- 'People also watched' should be translated using the same localized wording YouTube displays. -->
<string name="revanced_hide_search_result_recommendations_title">\'People also watched\' লেবেল লুকান</string>
<string name="revanced_hide_search_result_recommendations_summary_on">লেবেল লুকানো আছে</string>
<string name="revanced_hide_search_result_recommendations_summary_off">লেবেল দেখানো হয়েছে</string>
<!-- 'Show more' should be translated with the same localized wording that YouTube displays.
This button usually appears when searching for a YT creator. -->
<string name="revanced_hide_show_more_button_title">\'আরও দেখান\' বোতাম লুকান</string>
@@ -224,8 +221,8 @@ MicroG-এর জন্য ব্যাটারি অপ্টিমাইজ
<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_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>
@@ -241,7 +238,7 @@ MicroG-এর জন্য ব্যাটারি অপ্টিমাইজ
<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_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>
@@ -280,25 +277,25 @@ MicroG-এর জন্য ব্যাটারি অপ্টিমাইজ
<string name="revanced_hide_artist_cards_title">আর্টিস্ট কার্ড লুকান</string>
<string name="revanced_hide_artist_cards_summary_on">আর্টিস্ট কার্ড লুকিয়ে রয়েছে</string>
<string name="revanced_hide_artist_cards_summary_off">আর্টিস্ট কার্ড প্রদর্শিত হয়েছে</string>
<string name="revanced_hide_attributes_section_title">বৈশিষ্ট্য বিভাগ লুকান</string>
<string name="revanced_hide_attributes_section_summary_on">\'বৈশিষ্ট্যযুক্ত স্থান\', গেম এবং সঙ্গীত বিভাগগুলি লুকানো আছে</string>
<string name="revanced_hide_attributes_section_summary_off">\'বৈশিষ্ট্যযুক্ত স্থান\', গেম এবং সঙ্গীত বিভাগগুলি প্রদর্শিত হয়েছে</string>
<string name="revanced_hide_chapters_section_title">্যাপ্টার বিভাগ লুকান</string>
<string name="revanced_hide_attributes_section_title">বৈশিষ্ট্যাবলী লুকান</string>
<string name="revanced_hide_attributes_section_summary_on">বৈশিষ্ট্যযুক্ত স্থান, গেমস, সঙ্গীত, এবং উল্লিখিত ব্যক্তি বিভাগগুলি লুকানো আছে</string>
<string name="revanced_hide_attributes_section_summary_off">বৈশিষ্ট্যযুক্ত স্থান, গেমস, সঙ্গীত, এবং উল্লিখিত ব্যক্তি বিভাগগুলি দেখানো হয়েছে</string>
<string name="revanced_hide_chapters_section_title">অধ্যায় লুকান</string>
<string name="revanced_hide_chapters_section_summary_on">চ্যাপ্টার বিভাগ লুকিয়ে রয়েছে</string>
<string name="revanced_hide_chapters_section_summary_off">চ্যাপ্টার বিভাগ প্রদর্শিত হয়েছে</string>
<string name="revanced_hide_how_this_was_made_section_title">\'এই কীভাবে তৈরি হল কনটেন্ট\' সেকশনটি লুকান</string>
<string name="revanced_hide_how_this_was_made_section_summary_on">\'এই কীভাবে তৈরি হল কনটেন্ট\' সেকশনটি লুকানো আছে</string>
<string name="revanced_hide_how_this_was_made_section_summary_off">\'এই কীভাবে তৈরি হল কনটেন্ট\' সেকশনটি প্রদর্শিত হচ্ছে</string>
<string name="revanced_hide_podcast_section_title">‘পডকাস্ট বিভাগ লুকান</string>
<string name="revanced_hide_podcast_section_summary_on">‘পডকাস্ট বিভাগ লুকানো আছে</string>
<string name="revanced_hide_podcast_section_summary_off">‘পডকাস্ট বিভাগ’ প্রদর্শিত হয়েছে</string>
<string name="revanced_hide_info_cards_section_title">তথ্য কার্ড সেকশন লুকান</string>
<string name="revanced_hide_how_this_was_made_section_title">\'How this content was made\' লুকান</string>
<string name="revanced_hide_how_this_was_made_section_summary_on">How this content was made বিভাগটি লুকানো আছে</string>
<string name="revanced_hide_how_this_was_made_section_summary_off">How this content was made বিভাগটি দেখানো হয়েছে</string>
<string name="revanced_hide_podcast_section_title">\'Explore the podcast\' লুকান</string>
<string name="revanced_hide_podcast_section_summary_on">Explore the podcast বিভাগটি লুকানো আছে</string>
<string name="revanced_hide_podcast_section_summary_off">Explore the podcast বিভাগটি দেখানো হয়েছে</string>
<string name="revanced_hide_info_cards_section_title">তথ্য কার্ড লুকান</string>
<string name="revanced_hide_info_cards_section_summary_on">তথ্য কার্ড সেকশন লুকিয়ে রয়েছে</string>
<string name="revanced_hide_info_cards_section_summary_off">তথ্য কার্ড সেকশন প্রদর্শিত হয়েছে</string>
<string name="revanced_hide_key_concepts_section_title">‘মূল বিষয়বস্তু’ বিভাগ লুকানো আছে</string>
<string name="revanced_hide_key_concepts_section_summary_on">‘মূল বিষয়বস্তু’ বিভাগ লুকিয়ে রয়েছে</string>
<string name="revanced_hide_key_concepts_section_summary_off">‘मुख्य संकल्पना’ अनुभाग प्रदर्शित होता है</string>
<string name="revanced_hide_transcript_section_title">ट्रांसक्रिप्ट अनुभाग छिपाएँ</string>
<string name="revanced_hide_key_concepts_section_title">\'Key concepts\' লুকান</string>
<string name="revanced_hide_key_concepts_section_summary_on">Key concepts বিভাগটি লুকানো আছে</string>
<string name="revanced_hide_key_concepts_section_summary_off">Key concepts বিভাগটি দেখানো হয়েছে</string>
<string name="revanced_hide_transcript_section_title">নথি লুকান</string>
<string name="revanced_hide_transcript_section_summary_on">ট্রান্সস্ক্রিপ্ট বিভাগ লুকিয়ে রয়েছে</string>
<string name="revanced_hide_transcript_section_summary_off">ট্রান্সস্ক্রিপ্ট বিভাগ প্রদর্শিত হয়েছে</string>
<string name="revanced_hide_description_components_screen_title">ভিডিওর বিবরণ</string>
@@ -316,27 +313,27 @@ MicroG-এর জন্য ব্যাটারি অপ্টিমাইজ
<string name="revanced_hide_filter_bar_feed_in_related_videos_summary_off">সম্পর্কিত ভিডিওতে প্রদর্শিত হয়েছে</string>
<string name="revanced_comments_screen_title">মন্তব্য</string>
<string name="revanced_comments_screen_summary">মন্তব্য বিভাগের উপাদানগুলি লুকান বা দেখান৷</string>
<string name="revanced_hide_comments_chat_summary_title"> \'চ্যাটের সারাংশ\' লুকান</string>
<string name="revanced_hide_comments_chat_summary_summary_on">চ্যাট সারাংশ” লুকানো আছে</string>
<string name="revanced_hide_comments_chat_summary_summary_off">চ্যাট সারাংশ” দেখানো হচ্ছে</string>
<string name="revanced_hide_comments_chat_summary_title">\'Chat summary\' লুকান</string>
<string name="revanced_hide_comments_chat_summary_summary_on">চ্যাট সারসংক্ষেপ লুকানো আছে</string>
<string name="revanced_hide_comments_chat_summary_summary_off">চ্যাট সারসংক্ষেপ দেখানো হয়েছে</string>
<string name="revanced_hide_comments_by_members_header_title">\'মেম্বারদের মন্তব্য\' হেডার লুকান</string>
<string name="revanced_hide_comments_by_members_header_summary_on">\'মেম্বারদের মন্তব্য\' হেডার লুকিয়ে রয়েছে</string>
<string name="revanced_hide_comments_by_members_header_summary_off">\'মেম্বারদের মন্তব্য\' হেডার প্রদর্শিত হয়েছে</string>
<string name="revanced_hide_comments_by_members_header_summary_on">সদস্যদের দ্বার মন্তব্য হেডার লুকানো আছে</string>
<string name="revanced_hide_comments_by_members_header_summary_off">সদস্যদের দ্বার মন্তব্য হেডার দেখানো হয়েছে</string>
<string name="revanced_hide_comments_section_title">মন্তব্য বিভাগ লুকান</string>
<string name="revanced_hide_comments_section_summary_on">মন্তব্য বিভাগ লুকিয়ে রয়েছে</string>
<string name="revanced_hide_comments_section_summary_off">মন্তব্য বিভাগ প্রদর্শিত হয়েছে</string>
<string name="revanced_hide_comments_create_a_short_button_title">\'Short তৈরি করুন\' বোতাম লুকান</string>
<string name="revanced_hide_comments_create_a_short_button_summary_on">\'Short তৈরি করুন\' বোতাম লুকিয়ে রয়েছে</string>
<string name="revanced_hide_comments_create_a_short_button_summary_off">\'Short তৈরি করুন\' বোতাম প্রদর্শিত হয়েছে</string>
<string name="revanced_hide_comments_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_and_emoji_buttons_title">ইমোজি এবং টাইমস্ট্যাম্প বোতাম লুকান</string>
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_summary_on">ইমোজি এবং টাইমস্ট্যাম্প বোতাম লুকানো আছে</string>
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_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_and_emoji_buttons_title">টাইমস্ট্যাম্প ও ইমোজি বোতাম লুকান</string>
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_summary_on">টাইমস্ট্যাম্প ও ইমোজি বোতাম লুকিয়ে রয়েছে</string>
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_summary_off">টাইমস্ট্যাম্প ও ইমোজি বোতাম প্রদর্শিত হয়েছে</string>
<!-- https://logos.fandom.com/wiki/YouTube/Yoodles -->
<string name="revanced_hide_doodles_title">YouTube Doodles छिपाएँ</string>
<string name="revanced_hide_doodles_summary_on">सर्च बार Doodles छिपे हुए हैं</string>
@@ -417,12 +414,12 @@ MicroG-এর জন্য ব্যাটারি অপ্টিমাইজ
<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>
<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_visit_store_button_summary_on">চ্যানেল পৃষ্ঠায় বোতাম লুকানো আছে</string>
<string name="revanced_hide_visit_store_button_summary_off">চ্যানেল পৃষ্ঠায় বোতাম দেখানো হয়েছে</string>
<string name="revanced_hide_web_search_results_title">লোকেরা এইগুলিও সার্চ করছে লুকান</string>
<string name="revanced_hide_web_search_results_summary_on">লোকেরা এইগুলিও সার্চ করছে লুকিয়ে রয়েছে</string>
<string name="revanced_hide_web_search_results_summary_off">লোকেরা এইগুলিও সার্চ করছে প্রদর্শিত হয়েছে</string>
@@ -446,10 +443,10 @@ MicroG-এর জন্য ব্যাটারি অপ্টিমাইজ
<string name="revanced_share_copy_url_success">ক্লিপবোর্ডে URL অনুলিপি করা হয়েছে</string>
<string name="revanced_share_copy_url_timestamp_success">টাইমস্ট্যাম্প সহ URL অনুলিপি করা হয়েছে</string>
<string name="revanced_copy_video_url_title">ভিডিও URL অনুলিপি বোতাম দেখান</string>
<string name="revanced_copy_video_url_summary_on">বোতাম প্রদর্শিত হয়েছে। URL অনুলিপি করতে ট্যাপ করুন। টাইমস্ট্যাম্প সহ URL অনুলিপি করতে ট্যাপ করে ধরে রাখুন।</string>
<string name="revanced_copy_video_url_summary_on">বোতামটি দেখানো হয়েছে। ভিডিও URL কপি করতে আলতো চাপুন। টাইমস্ট্যাম্প সহ পি করতে টিপুন এবং ধরে রাখুন।</string>
<string name="revanced_copy_video_url_summary_off">বোতাম প্রদর্শিত হয়নি</string>
<string name="revanced_copy_video_url_timestamp_title">টাইমস্ট্যাম্প URL অনুলিপি বোতাম দেখান</string>
<string name="revanced_copy_video_url_timestamp_summary_on">বোতাম প্রদর্শিত হয়েছে। টাইমস্ট্যাম্প সহ URL অনুলিপি করতে ট্যাপ করুন। টাইমস্ট্যাম্প ছাড়া URL অনুলিপি করতে ট্যাপ করে ধরে রাখুন।</string>
<string name="revanced_copy_video_url_timestamp_summary_on">বোতামটি দেখানো হয়েছে। টাইমস্ট্যাম্প সহ ভিডিও URL কপি করতে আলতো চাপুন। টাইমস্ট্যাম্প ছাড়া পি করতে টিপুন এবং ধরে রাখুন।</string>
<string name="revanced_copy_video_url_timestamp_summary_off">বোতাম প্রদর্শিত হয়নি</string>
</patch>
<patch id="interaction.dialog.removeViewerDiscretionDialogPatch">
@@ -462,8 +459,8 @@ MicroG-এর জন্য ব্যাটারি অপ্টিমাইজ
<string name="revanced_external_downloader_screen_title">বাহিরে ডাউনলোড</string>
<string name="revanced_external_downloader_screen_summary">বাহিরের ডাউনলোডার ব্যবহার করার সেটিং</string>
<string name="revanced_external_downloader_title">বাহিরের ডাউনলোডার বাটন দেখান</string>
<string name="revanced_external_downloader_summary_on">প্লোরে ডাউনলোড বোতাম প্রদর্শিত হয়েছে</string>
<string name="revanced_external_downloader_summary_off">প্লোরে ডাউনলোড বোতাম প্রদর্শিত হয়নি</string>
<string name="revanced_external_downloader_summary_on">প্লেয়ারে ডাউনলোড বোতাম দেখানো হয়েছে</string>
<string name="revanced_external_downloader_summary_off">প্লেয়ারে ডাউনলোড বোতাম দেখানো হয়নি</string>
<!-- 'download action button' should be translated using the same wording as the translation of 'revanced_hide_download_button_title' -->
<string name="revanced_external_downloader_action_button_title">ডাউনলোড অ্যাকশন বোতামটি ওভাররাইড করুন</string>
<string name="revanced_external_downloader_action_button_summary_on">ডাউনলোড বোতামটি আপনার বাহিরের ডাউনলোডার খুলবে</string>
@@ -484,11 +481,15 @@ MicroG-এর জন্য ব্যাটারি অপ্টিমাইজ
</patch>
<patch id="interaction.swipecontrols.swipeControlsResourcePatch">
<string name="revanced_swipe_brightness_title">উজ্জ্বলতার সোয়াইপ অঙ্গভঙ্গি সক্রিয় করুন</string>
<string name="revanced_swipe_brightness_summary_on">উজ্জ্বলতা সোয়াইপ সক্রিয় করা হয়েছে</string>
<string name="revanced_swipe_brightness_summary_off">উজ্জ্বলতা সোয়াইপ নিষ্ক্রিয় করা হয়েছে</string>
<string name="revanced_swipe_brightness_summary_on">"Fullscreen brightness swipe enabled আছে
স্ক্রিনের বাম দিকে উল্লম্বভাবে সোয়াইপ করে উজ্জ্বলতা সামঞ্জস্য করুন"</string>
<string name="revanced_swipe_brightness_summary_off">Fullscreen brightness swipe disabled করা হয়েছে</string>
<string name="revanced_swipe_volume_title">ভলিউম অঙ্গভঙ্গি সক্রিয় করুন</string>
<string name="revanced_swipe_volume_summary_on">ভলিউম সোাইপ সক্রি করা হেছে</string>
<string name="revanced_swipe_volume_summary_off">ভলিউম সোয়াইপ নিষ্ক্রিয় করা হয়েছে</string>
<string name="revanced_swipe_volume_summary_on">"পূর্ণ স্ক্রীন ভলিউম সোয়াইপ সক্রিয় করা হয়েছে
স্ক্রিনের ডান দিকে উল্লম্বভাবে সোয়াইপ করে ভলিউম সামঞ্জস্য করুন"</string>
<string name="revanced_swipe_volume_summary_off">পূর্ণ স্ক্রীন ভলিউম সোয়াইপ নিষ্ক্রিয় করা হয়েছে</string>
<string name="revanced_swipe_press_to_engage_title">প্রেস-টু-সোয়াইপ অঙ্গভঙ্গি সক্রিয় করুন</string>
<string name="revanced_swipe_press_to_engage_summary_on">প্রেস-টু-সোয়াইপ সক্রিয় করা হয়েছে</string>
<string name="revanced_swipe_press_to_engage_summary_off">প্রেস-টু-সোয়াইপ নিষ্ক্রিয় করা হয়েছে</string>
@@ -501,16 +502,19 @@ MicroG-এর জন্য ব্যাটারি অপ্টিমাইজ
<string name="revanced_swipe_lowest_value_enable_auto_brightness_title">স্বয়ংক্রিয়-উজ্জ্বলতার অঙ্গভঙ্গি সক্রিয় করুন</string>
<string name="revanced_swipe_lowest_value_enable_auto_brightness_summary_on">উজ্জ্বলতার অঙ্গভঙ্গির সর্বনিম্ন মানে সোয়াইপ ডাউন করলে অটো-উজ্জ্বলতা সক্ষম হয়</string>
<string name="revanced_swipe_lowest_value_enable_auto_brightness_summary_off">সর্বনিম্ন মানে সোয়াইপ ডাউন করলে অটো-উজ্জ্বলতা সক্ষম হয় না</string>
<string name="revanced_swipe_lowest_value_enable_auto_brightness_overlay_text">স্বতস্ফূর্তভাবে</string>
<string name="revanced_swipe_overlay_timeout_title">ওভার-লে টাইম আউট</string>
<string name="revanced_swipe_overlay_timeout_summary">কত মিলিসেকেন্ডের জন্য ওভারলে দৃশ্যমান হবে</string>
<string name="revanced_swipe_text_overlay_size_title">সোয়াইপ ওভারলে টেক্সট সাইজ</string>
<string name="revanced_swipe_text_overlay_size_summary">সোয়াইপ ওভারলে এর টেক্সট সাইজ</string>
<string name="revanced_swipe_overlay_background_opacity_title">অস্বচ্ছতা</string>
<string name="revanced_swipe_overlay_background_opacity_summary">0-100 এর মধ্যে অস্বচ্ছতার মান</string>
<string name="revanced_swipe_overlay_background_opacity_invalid_toast">সোয়াইপের অস্বচ্ছতা অবশ্যই 0-100 এর মধ্যে হতে হবে</string>
<string name="revanced_swipe_threshold_title">সোয়াইপ থ্রেশহোল্ড এর মাত্রা</string>
<string name="revanced_swipe_threshold_summary">সোয়াইপ করার থ্রেশহোল্ডের পরিমাণ</string>
<string name="revanced_swipe_show_circular_overlay_title">বৃত্তাকার ওভারলে দেখান</string>
<string name="revanced_swipe_show_circular_overlay_summary_on">বৃত্তাকার ওভারলে দেখানো হয়েছে</string>
<string name="revanced_swipe_show_circular_overlay_summary_off">অনুভূমিক ওভারলে দেখানো হয়েছে</string>
<string name="revanced_swipe_overlay_minimal_style_title">ন্যূনতম শৈলী সক্ষম করুন</string>
<string name="revanced_swipe_overlay_minimal_style_summary_on">Minimal overlay style enabled করা হয়েছে</string>
<string name="revanced_swipe_overlay_minimal_style_summary_off">ন্যূনতম ওভারলে শৈলী নিষ্ক্রিয় করা হয়েছে</string>
<string name="revanced_swipe_change_video_title">ভিডিও পরিবর্তন করতে সোয়াইপ করে সক্ষম করুন</string>
<string name="revanced_swipe_change_video_summary_on">ফুলস্ক্রিন মোডে সোয়াইপ করলে পরবর্তী/পূর্ববর্তী ভিডিওতে পরিবর্তন হবে</string>
<string name="revanced_swipe_change_video_summary_off">ফুলস্ক্রিন মোডে সোয়াইপ করলে পরবর্তী /পূর্ববর্তী ভিডিওতে পরিবর্তন হবে না</string>
@@ -523,6 +527,9 @@ MicroG-এর জন্য ব্যাটারি অপ্টিমাইজ
<patch id="layout.buttons.action.hideButtonsPatch">
<string name="revanced_hide_buttons_screen_title">অ্যাকশন বোতাম</string>
<string name="revanced_hide_buttons_screen_summary">ভিডিওর নীচে বোতাম লুকানো বা দেখানো</string>
<string name="revanced_disable_like_subscribe_glow_title">লাইক এবং সাবস্ক্রাইব বোতাম গ্লো বন্ধ করুন</string>
<string name="revanced_disable_like_subscribe_glow_summary_on">উল্লেখ করলে সক্রিয়করন এবং সাবস্ক্রাইব বোতাম উজ্জ্বল হবে না</string>
<string name="revanced_disable_like_subscribe_glow_summary_off">উল্লেখ করলে সক্রিয়করন এবং সাবস্ক্রাইব বোতাম উজ্জ্বল হবে</string>
<string name="revanced_hide_like_dislike_button_title">Like এবং Dislike লুকান</string>
<string name="revanced_hide_like_dislike_button_summary_on">Like এবং Dislike বোতাম লুকানো আছে</string>
<string name="revanced_hide_like_dislike_button_summary_off">Like এবং Dislike বোতাম দেখানো হচ্ছে</string>
@@ -581,6 +588,9 @@ MicroG-এর জন্য ব্যাটারি অপ্টিমাইজ
মনে রাখবেন: এটি সক্রিয় করা ভিডিও বিজ্ঞাপনগুলিও জোর করে লুকিয়ে দেয়"</string>
<string name="revanced_switch_create_with_notifications_button_summary_off">তৈরি বোতামকে বিজ্ঞপ্তি বোতাম দ্বারা সুইচ করা হয়নি</string>
<string name="revanced_switch_create_with_notifications_button_user_dialog_message">"এই সেটিংস নিষ্ক্রিয় করলে Shorts বিজ্ঞাপন ব্লকিংও নিষ্ক্রিয় হয়ে যাবে।
যদি এই সেটিংস পরিবর্তন করার পরে কাজ না করে, তাহলে Incognito মোডে চেষ্টা করুন।"</string>
<string name="revanced_hide_navigation_button_labels_title">নেভিগেশন বোতাম লেবেল লুকান</string>
<string name="revanced_hide_navigation_button_labels_summary_on">লেবেল লুকিয়ে রয়েছে</string>
<string name="revanced_hide_navigation_button_labels_summary_off">লেবেল প্রদর্শিত হয়েছে</string>
@@ -795,10 +805,13 @@ MicroG-এর জন্য ব্যাটারি অপ্টিমাইজ
<string name="revanced_hide_shorts_navigation_bar_summary_on">নেভিগেশন বার লুকিয়ে রয়েছে</string>
<string name="revanced_hide_shorts_navigation_bar_summary_off">পনেভিগেশন বার প্রদর্শিত হয়েছে</string>
</patch>
<patch id="layout.hide.suggestedvideoendscreen.disableSuggestedVideoEndScreenResourcePatch">
<string name="revanced_disable_suggested_video_end_screen_title">ভিডিওর শেষ স্ক্রিণে সাজেস্ট করা ভিডিও নিষ্ক্রিয় করুন</string>
<string name="revanced_disable_suggested_video_end_screen_summary_on">সাজেস্ট করা ভিডিও নিস্ক্রিয় করা হবে</string>
<string name="revanced_disable_suggested_video_end_screen_summary_off">সাজেস্ট করা ভিডিও প্রদর্শিত হবে</string>
<patch id="layout.hide.endscreensuggestion.hideEndScreenSuggestedVideoPatch">
<string name="revanced_end_screen_suggested_video_title">শেষ স্ক্রীনে প্রস্তাবিত ভিডিও লুকানো হবে</string>
<string name="revanced_end_screen_suggested_video_summary_on">"অটো প্লে বন্ধ থাকলে শেষ স্ক্রীনে প্রস্তাবিত ভিডিও লুকানো থাকে
YouTube সেটিংসে অটো প্লে পরিবর্তন করা যেতে পারে:
সেটিংস → প্লেব্যাক → অটো প্লে পরবর্তী ভিডিও"</string>
<string name="revanced_end_screen_suggested_video_summary_off">শেষ স্ক্রীনে প্রস্তাবিত ভিডিও দেখানো হয়েছে</string>
</patch>
<patch id="layout.hide.time.hideTimestampPatch">
<string name="revanced_hide_timestamp_title">ভিডিওর সময়স্ট্যাম্প লুকান</string>
@@ -831,7 +844,7 @@ MicroG-এর জন্য ব্যাটারি অপ্টিমাইজ
<!-- Toast shown if network connection times out. Translations of this should not be longer than the original English or the text can be clipped and not entirely shown. -->
<string name="revanced_ryd_failure_connection_timeout">অপছন্দ সাময়িকভাবে উপলভ্য নয় (API সময় শেষ হয়েছে)</string>
<string name="revanced_ryd_failure_connection_status_code">অপছন্দ উপলভ্য নয় (অবস্থা %d)</string>
<string name="revanced_ryd_failure_client_rate_limit_requested">অপছন্দ উপলভ্য নয় (ক্লায়েন্ট API সীমা পৌঁছেছে)</string>
<string name="revanced_ryd_failure_client_rate_limit_requested">অপছন্দগুলি উপলব্ধ নেই (ক্লায়েন্ট API সীমা)</string>
<string name="revanced_ryd_failure_generic">অপছন্দ উপলভ্য নয় (%s)</string>
<!-- Toast shown if the user enables RYD while a video is opened, and then tries to vote for the video. -->
<string name="revanced_ryd_failure_ryd_enabled_while_playing_video_then_user_voted">ReturnYouTubeDislike দিয়ে ভোট দিতে ভিডিও আবার লোড করুন</string>
@@ -840,14 +853,14 @@ MicroG-এর জন্য ব্যাটারি অপ্টিমাইজ
<string name="revanced_ryd_enable_summary_on">অপছন্দগুলো প্রদর্শিত হয়েছে</string>
<string name="revanced_ryd_enable_summary_off">অপছন্দগুলো প্রদর্শিত হয়নি</string>
<string name="revanced_ryd_shorts_title">Shorts এ অপছন্দ দেখান</string>
<string name="revanced_ryd_shorts_summary_on">Shorts এ অপছন্দ পদর্শিত হয়েছে</string>
<string name="revanced_ryd_shorts_summary_on_disclaimer">"Shorts-এ ডিসলাইক দেখানো হচ্ছে
<string name="revanced_ryd_shorts_summary_on">Shorts-এ অপছন্দগুলি দেখানো হয়েছে</string>
<string name="revanced_ryd_shorts_summary_on_disclaimer">"Shorts-এ অপছন্দগুলি দেখানো হয়েছে
সীমাবদ্ধতা: গোপন মোডে ডিসলাইক প্রদর্শিত নাও হতে পারে"</string>
<string name="revanced_ryd_shorts_summary_off">Shorts এ অপছন্দ লুকিয়ে রয়েছে</string>
সীমাবদ্ধতা: ছদ্মবেশী মোডে অপছন্দগুলি নাও দেখা যেতে পারে"</string>
<string name="revanced_ryd_shorts_summary_off">Shorts-এ অপছন্দগুলি দেখানো হয়নি</string>
<string name="revanced_ryd_dislike_percentage_title">অপছন্দগুলো শতাংশ অনুযায়ী</string>
<string name="revanced_ryd_dislike_percentage_summary_on">অপছন্দগুল শতাংশ অনুযায়ী প্রদর্শিত হয়েছে</string>
<string name="revanced_ryd_dislike_percentage_summary_off">অপছন্দগুল সংখ্যা অনুযায়ী প্রদর্শিত হয়েছে</string>
<string name="revanced_ryd_dislike_percentage_summary_on">অপছন্দগুলি শতাংশ হিসাবে দেখানো হয়েছে</string>
<string name="revanced_ryd_dislike_percentage_summary_off">অপছন্দগুলি একটি সংখ্যা হিসাবে দেখানো হয়েছে</string>
<!-- Translations should use language similar to 'revanced_sb_enable_compact_skip_button' -->
<string name="revanced_ryd_compact_layout_title">কম্প্যাক্ট লাইক বোতাম</string>
<string name="revanced_ryd_compact_layout_summary_on">পছন্দ বোতামটি ন্যূনতম প্রস্থের জন্য সাজানো হয়েছে</string>
@@ -909,20 +922,20 @@ MicroG-এর জন্য ব্যাটারি অপ্টিমাইজ
<string name="revanced_sb_square_layout_sum_on">বোতাম এবং নিয়ন্ত্রণগুলি বর্গক্ষেত্র</string>
<string name="revanced_sb_square_layout_sum_off">বোতাম এবং নিয়ন্ত্রণগুলি গোলাকার</string>
<!-- Translations should use language similar to 'revanced_ryd_compact_layout_title' -->
<string name="revanced_sb_enable_compact_skip_button">সংক্ষিপ্ত স্কিপ বাটন ব্যবহার করুন</string>
<string name="revanced_sb_enable_compact_skip_button">সংক্ষিপ্ত Skip বোতাম ব্যবহার করুন</string>
<string name="revanced_sb_enable_compact_skip_button_sum_on">স্কিপ বোতামটি ন্যূনতম প্রস্থের জন্য সাজানো হয়েছে</string>
<string name="revanced_sb_enable_compact_skip_button_sum_off">স্কিপ বোতামটি সেরা চেহারার জন্য সাজানো হয়েছে</string>
<string name="revanced_sb_enable_auto_hide_skip_segment_button">স্কিপ বোতাম স্বংক্রিভাবে লুকান</string>
<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">স্কিপ বোতাম পুরো সেগমেন্টে দৃশ্যমান থাক</string>
<string name="revanced_sb_general_skiptoast">স্বয়ংক্রিয়ভাবে এড়িয়ে যাওয়ার সময় একটি টোস্ট দেখান</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_general_time_without">সেগমেন্ট ছাড়া ভিডিওর দৈর্ঘ্য দেখান</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>
<string name="revanced_sb_enable_create_segment">নতুন বিভাগ তৈরি করুন বোতামটি দেখান</string>
<string name="revanced_sb_enable_create_segment_sum_on">নতুন সেগমেন্ট তৈরির বাটন প্রদর্শিত হয়েছে</string>
<string name="revanced_sb_enable_create_segment_sum_off">নতুন সেগমেন্ট তৈরির বাটন প্রদর্শিত হয়নি</string>
<string name="revanced_sb_general_adjusting">নতুন সেগমেন্টের পদক্ষেপ সামঞ্জস্য করুন</string>
@@ -1015,7 +1028,7 @@ MicroG-এর জন্য ব্যাটারি অপ্টিমাইজ
<string name="revanced_sb_skipped_multiple_segments">একটানা একাধিক সেগমেন্ট এড়িয়ে গেছে</string>
<string name="revanced_sb_skip_automatically">স্বয়ংক্রিয়ভাবে এড়িয়ে যান</string>
<string name="revanced_sb_skip_automatically_once">একবার স্বয়ংক্রিয়ভাবে এড়িয়ে যান</string>
<string name="revanced_sb_skip_showbutton">ড়িয়ে যান বোতামটি দেখান</string>
<string name="revanced_sb_skip_showbutton">কটি Skip বোতাম দেখান</string>
<string name="revanced_sb_skip_seekbaronly">সিকবারে দেখান</string>
<string name="revanced_sb_skip_ignore">নিষ্ক্রিয় করুন</string>
<string name="revanced_sb_submit_failed_invalid">%s সেগমেন্ট জমা দিতে সক্ষম হয়নি</string>
@@ -1065,7 +1078,7 @@ MicroG-এর জন্য ব্যাটারি অপ্টিমাইজ
<string name="revanced_sb_new_segment_edit_by_hand_parse_error">ভুল সময় দেয়া হয়েছে</string>
<string name="revanced_sb_stats">পরিসংখ্যান</string>
<!-- Shown in the settings preferences, and translations can be any text length. -->
<string name="revanced_sb_stats_connection_failure">পরিসংখ্যান সামিকভাবে উপলভ্য নয় (API ডাউন)</string>
<string name="revanced_sb_stats_connection_failure">পরিসংখ্যান সাময়িকভাবে উপলব্ধ নেই (API ডাউন)</string>
<string name="revanced_sb_stats_loading">লোড হচ্ছে...</string>
<string name="revanced_sb_stats_sb_disabled">SponsorBlock নিস্ক্রিয় হয়েছে</string>
<string name="revanced_sb_stats_username">আপনার ব্যবহারকারী নাম: &lt;b&gt;%s&lt;/b&gt;</string>
@@ -1283,13 +1296,13 @@ DeArrow সম্পর্কে আরও জানতে এখানে ট
<string name="revanced_alt_thumbnail_stills_time_entry_2">ভিডিওর মধ্যাংশ</string>
<string name="revanced_alt_thumbnail_stills_time_entry_3">ভিডিওর শেষাংশ</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_alt_thumbnail_dearrow_error">সামিকভাবে DeArrow উপলভ্য নয় (স্টাটাস কোড: %s)</string>
<string name="revanced_alt_thumbnail_dearrow_error_generic">DeArrow সাময়িকভাবে উপলভ্য নয়</string>
<string name="revanced_alt_thumbnail_dearrow_error">DeArrow সাময়িকভাবে উপলব্ধ নেই (স্ট্যাটাস কোড: %s)</string>
<string name="revanced_alt_thumbnail_dearrow_error_generic">DeArrow সাময়িকভাবে উপলব্ধ নেই</string>
</patch>
<patch id="misc.announcements.announcementsPatch">
<string name="revanced_announcements_title">ReVanced ঘোষণা দেখান</string>
<string name="revanced_announcements_summary_on">শুরুতে ঘোষণা প্রদর্শিত হয়েছে</string>
<string name="revanced_announcements_summary_off">শুরুতে ঘোষণা প্রদর্শিত হয়নি</string>
<string name="revanced_announcements_summary_on">স্টার্টআপে ঘোষণাগুলি দেখানো হয়েছে</string>
<string name="revanced_announcements_summary_off">স্টার্টআপে ঘোষণাগুলি দেখানো হয়নি</string>
<string name="revanced_announcements_enabled_summary">শুরুতে ঘোষণা দেখান</string>
<string name="revanced_announcements_connection_failed">ঘোষনাদাতার সাথে সম্পর্ক স্থাপন ব্যর্থ হয়েছে</string>
<string name="revanced_announcements_dialog_dismiss">বাতিল করুন</string>
@@ -1339,10 +1352,11 @@ DeArrow সম্পর্কে আরও জানতে এখানে ট
<string name="revanced_disable_zoom_haptics_summary_off">কম্পন সক্রিয় করা হয়েছে</string>
</patch>
<patch id="video.audio.forceOriginalAudioPatch">
<string name="revanced_force_original_audio_title">মূল অডিও বলপূর্বক চালু করুন</string>
<string name="revanced_force_original_audio_summary_on">মূল অডিও ব্যবহার করছে</string>
<string name="revanced_force_original_audio_title">মূল অডিও ভাষা বলপূর্বক চালু করুন</string>
<string name="revanced_force_original_audio_summary_on">মূল অডিও ভাষা ব্যবহার করা হচ্ছে</string>
<string name="revanced_force_original_audio_summary_off">ডিফল্ট অডিও ব্যবহার করছে</string>
<string name="revanced_force_original_audio_not_available">এই বৈশিষ্ট্যটি ব্যবহার করার জন্য, iOS ক্লায়েন্ট প্রকারে স্ট্রিম স্পুফিং পরিবর্তন করুন</string>
<!-- 'Spoof video streams' should be the same translation used for revanced_spoof_video_streams_screen_title -->
<string name="revanced_force_original_audio_not_available">এই বৈশিষ্ট্যটি ব্যবহার করতে, \'স্পুফ ভিডিও স্ট্রীম\' কে iOS TV-তে পরিবর্তন করুন</string>
</patch>
<patch id="video.quality.rememberVideoQualityPatch">
<!-- Translations should use the same text as revanced_custom_playback_speeds_auto -->
@@ -1405,8 +1419,6 @@ DeArrow সম্পর্কে আরও জানতে এখানে ট
ভিডিও প্লেব্যাক কাজ নাও করতে পারে"</string>
<string name="revanced_spoof_video_streams_user_dialog_message">এই সেটিংটি বন্ধ করার ফলে ভিডিও প্লেব্যাক ত্রুটি হতে পারে।</string>
<string name="revanced_spoof_video_streams_client_type_title">ডিফল্ট ক্লায়েন্ট</string>
<!-- 'no auth' means no authentication -->
<string name="revanced_spoof_video_streams_client_type_android_vr_no_auth">Android VR (স্বীকৃতি ছাড়া)</string>
<string name="revanced_spoof_video_streams_ios_force_avc_title">iOS AVC (H.264) বাধ্যতামূলক করুন</string>
<string name="revanced_spoof_video_streams_ios_force_avc_summary_on">ভিডিও কোডেক AVC (H.264) এ বাধ্যতামূলক করা হয়েছে</string>
<string name="revanced_spoof_video_streams_ios_force_avc_summary_off">ভিডিও কোডেক স্বয়ংক্রিয়ভাবে নির্ধারিত হয়</string>

View File

@@ -45,7 +45,7 @@ Second \"item\" text"</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. -->
<!-- 'People also watch' should be translated using the same localized wording YouTube displays. -->
<!-- 'People also watched' 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. -->
<!-- https://logos.fandom.com/wiki/YouTube/Yoodles -->
@@ -130,7 +130,7 @@ Second \"item\" text"</string>
<!-- 'remix' should be translated using the same localized wording YouTube displays for the button. -->
<!-- 'share' should be translated using the same localized wording YouTube displays for the button. -->
</patch>
<patch id="layout.hide.suggestedvideoendscreen.disableSuggestedVideoEndScreenResourcePatch">
<patch id="layout.hide.endscreensuggestion.hideEndScreenSuggestedVideoPatch">
</patch>
<patch id="layout.hide.time.hideTimestampPatch">
</patch>
@@ -206,6 +206,7 @@ Second \"item\" text"</string>
<patch id="misc.zoomhaptics.zoomHapticsPatch">
</patch>
<patch id="video.audio.forceOriginalAudioPatch">
<!-- 'Spoof video streams' should be the same translation used for revanced_spoof_video_streams_screen_title -->
</patch>
<patch id="video.quality.rememberVideoQualityPatch">
<!-- Translations should use the same text as revanced_custom_playback_speeds_auto -->
@@ -223,7 +224,6 @@ Second \"item\" text"</string>
<patch id="interaction.seekbar.enableSlideToSeekPatch">
</patch>
<patch id="misc.fix.playback.spoofVideoStreamsPatch">
<!-- 'no auth' means no authentication -->
</patch>
</app>
<app id="twitch">

View File

@@ -161,16 +161,13 @@ Toca el botó Continua i permet els canvis d'optimització."</string>
<string name="revanced_debug_stacktrace_summary_on">Els registres de depuració inclouen el rastreig de la pila</string>
<string name="revanced_debug_stacktrace_summary_off">Els registres de depuració no inclouen el rastreig de la pila</string>
<string name="revanced_debug_toast_on_error_title">Mostrar una notificació emergent quan hi ha un error de ReVanced</string>
<string name="revanced_debug_toast_on_error_summary_on">S\'ha mostrat la notificació si es produeix un error</string>
<string name="revanced_debug_toast_on_error_summary_off">No es mostra la notificació si es produeix un error</string>
<string name="revanced_debug_toast_on_error_summary_on">Es mostra un toast si es produeix un error</string>
<string name="revanced_debug_toast_on_error_summary_off">No es mostra un toast si es produeix un error</string>
<string name="revanced_debug_toast_on_error_user_dialog_message">"Desactivar els missatges d'error d'avis oculta totes les notificacions d'error de ReVanced.
No se t'informarà de cap esdeveniment inesperat."</string>
</patch>
<patch id="layout.hide.general.hideLayoutComponentsPatch">
<string name="revanced_disable_like_subscribe_glow_title">Desactiva l\'efecte brillant dels botons M\'agrada i Subscriu-te</string>
<string name="revanced_disable_like_subscribe_glow_summary_on">Els botons M\'agrada i Subscriu-te no brillaran quan es mencionin</string>
<string name="revanced_disable_like_subscribe_glow_summary_off">Els botons M\'agrada i Subscriu-te brillaran quan es mencionin</string>
<string name="revanced_hide_album_cards_title">Amagar les targetes d\'àlbums</string>
<string name="revanced_hide_album_cards_summary_on">Les targetes d\'àlbums estan amagades</string>
<string name="revanced_hide_album_cards_summary_off">Es mostren les targetes d\'àlbum</string>
@@ -193,22 +190,22 @@ No se t'informarà de cap esdeveniment inesperat."</string>
<string name="revanced_hide_horizontal_shelves_summary_off">Els prestatges es mostren</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">Amaga el botó \"Uneix-te\"</string>
<string name="revanced_hide_join_membership_button_title">Amaga el botó Uneix-te</string>
<string name="revanced_hide_join_membership_button_summary_on">El botó està amagat</string>
<string name="revanced_hide_join_membership_button_summary_off">El botó es mostra</string>
<!-- 'For you' should be translated using the same localized wording YouTube displays. -->
<string name="revanced_hide_for_you_shelf_title">Amaga la prestatgeria \"Per a tu\" a la pàgina del canal</string>
<string name="revanced_hide_for_you_shelf_summary_on">La prestatgeria està amagada</string>
<string name="revanced_hide_for_you_shelf_summary_off">La prestatgeria es mostra</string>
<string name="revanced_hide_for_you_shelf_title">Amaga la secció \"Per a tu\"</string>
<string name="revanced_hide_for_you_shelf_summary_on">La secció a la pàgina del canal s\'amaga</string>
<string name="revanced_hide_for_you_shelf_summary_off">La secció a la pàgina del canal es mostra</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">Amaga el botó \"M\'avisa\"</string>
<string name="revanced_hide_notify_me_button_summary_on">El botó està amagat</string>
<string name="revanced_hide_notify_me_button_summary_off">El botó es mostra</string>
<!-- 'People also watch' should be translated using the same localized wording YouTube displays. -->
<string name="revanced_hide_search_result_recommendations_title">Amaga les recomanacions \'La gent també ha vist\'</string>
<string name="revanced_hide_search_result_recommendations_summary_on">Les recomanacions estan amagades</string>
<string name="revanced_hide_search_result_recommendations_summary_off">Les recomanacions es mostren</string>
<!-- 'People also watched' should be translated using the same localized wording YouTube displays. -->
<string name="revanced_hide_search_result_recommendations_title">Amaga l\'etiqueta \"La gent també ha mirat\"</string>
<string name="revanced_hide_search_result_recommendations_summary_on">L\'etiqueta s\'amaga</string>
<string name="revanced_hide_search_result_recommendations_summary_off">L\'etiqueta es mostra</string>
<!-- 'Show more' should be translated with the same localized wording that YouTube displays.
This button usually appears when searching for a YT creator. -->
<string name="revanced_hide_show_more_button_title">Amaga el botó \'Mostra més\'</string>
@@ -224,8 +221,8 @@ No se t'informarà de cap esdeveniment inesperat."</string>
<string name="revanced_hide_chips_shelf_summary_on">El prestatge de xip està amagat</string>
<string name="revanced_hide_chips_shelf_summary_off">El prestatge de xip es mostra</string>
<string name="revanced_hide_expandable_chip_title">Amaga la targeta desplegable sota els vídeos</string>
<string name="revanced_hide_expandable_chip_summary_on">Les targetes desplegables estan amagades</string>
<string name="revanced_hide_expandable_chip_summary_off">Les targetes desplegables es mostren</string>
<string name="revanced_hide_expandable_chip_summary_on">La targeta expandible s\'amaga</string>
<string name="revanced_hide_expandable_chip_summary_off">La targeta expandible es mostra</string>
<string name="revanced_hide_community_posts_title">Amaga les publicacions de la comunitat</string>
<string name="revanced_hide_community_posts_summary_on">Comunitatnya ezkutatzen dira</string>
<string name="revanced_hide_community_posts_summary_off">Comunitateak erakusten dira</string>
@@ -241,7 +238,7 @@ No se t'informarà de cap esdeveniment inesperat."</string>
<string name="revanced_hide_community_guidelines_title">Amaga les normes de la comunitat</string>
<string name="revanced_hide_community_guidelines_summary_on">Les normes de la comunitat estan amagades</string>
<string name="revanced_hide_community_guidelines_summary_off">Les normes de la comunitat es mostren</string>
<string name="revanced_hide_subscribers_community_guidelines_title">Amaga les normes de la comunitat per als subscriptors</string>
<string name="revanced_hide_subscribers_community_guidelines_title">Amaga les directrius per als subscriptors</string>
<string name="revanced_hide_subscribers_community_guidelines_summary_on">Les normes de la comunitat dels subscriptors estan amagades</string>
<string name="revanced_hide_subscribers_community_guidelines_summary_off">Es mostren les directrius de la comunitat per a subscriptors</string>
<string name="revanced_hide_channel_member_shelf_title">Amaga la prestatgeria de membres del canal</string>
@@ -280,25 +277,25 @@ No se t'informarà de cap esdeveniment inesperat."</string>
<string name="revanced_hide_artist_cards_title">Amaga les targetes d\'artista</string>
<string name="revanced_hide_artist_cards_summary_on">Les targetes d\'artista estan amagades</string>
<string name="revanced_hide_artist_cards_summary_off">Es mostren les targetes d\'artista</string>
<string name="revanced_hide_attributes_section_title">Amaga la secció d\'atributs</string>
<string name="revanced_hide_attributes_section_summary_on">Les seccions \"Llocs destacats\", Jocs i Música estan amagades</string>
<string name="revanced_hide_attributes_section_summary_off">Les seccions \"Llocs destacats\", Jocs i Música es mostren</string>
<string name="revanced_hide_chapters_section_title">Amaga la secció de capítols</string>
<string name="revanced_hide_attributes_section_title">Amaga els atributs</string>
<string name="revanced_hide_attributes_section_summary_on">Les seccions Llocs destacats, Jocs, Música i Persones esmentades s\'amaguen</string>
<string name="revanced_hide_attributes_section_summary_off">Les seccions Llocs destacats, Jocs, Música i Persones esmentades es mostren</string>
<string name="revanced_hide_chapters_section_title">Amaga els capítols</string>
<string name="revanced_hide_chapters_section_summary_on">La secció de capítols està amagada</string>
<string name="revanced_hide_chapters_section_summary_off">La secció de capítols es mostra</string>
<string name="revanced_hide_how_this_was_made_section_title">Amaga la secció \'Com s\'ha fet aquest contingut\'</string>
<string name="revanced_hide_how_this_was_made_section_summary_on">La secció \'Com s\'ha fet aquest contingut\' està amagada</string>
<string name="revanced_hide_how_this_was_made_section_summary_off">La secció \'Com s\'ha fet aquest contingut\' es mostra</string>
<string name="revanced_hide_podcast_section_title">Amaga la secció \"Explora el podcast\"</string>
<string name="revanced_hide_podcast_section_summary_on">\'Explorar el podcast\' section is hidden</string>
<string name="revanced_hide_podcast_section_summary_off">\'Explorar el podcast\' section is shown</string>
<string name="revanced_hide_info_cards_section_title">Amagar secció de targetes d\'informació</string>
<string name="revanced_hide_how_this_was_made_section_title">Amaga \"Com s\'ha creat aquest contingut\"</string>
<string name="revanced_hide_how_this_was_made_section_summary_on">La secció Com s\'ha creat aquest contingut s\'amaga</string>
<string name="revanced_hide_how_this_was_made_section_summary_off">La secció Com s\'ha creat aquest contingut es mostra</string>
<string name="revanced_hide_podcast_section_title">Amaga \"Explora el podcast\"</string>
<string name="revanced_hide_podcast_section_summary_on">La secció Explora el podcast s\'amaga</string>
<string name="revanced_hide_podcast_section_summary_off">La secció Explora el podcast es mostra</string>
<string name="revanced_hide_info_cards_section_title">Amaga les targetes d\'informació</string>
<string name="revanced_hide_info_cards_section_summary_on">La secció de targetes d\'informació està amagada</string>
<string name="revanced_hide_info_cards_section_summary_off">La secció de targetes d\'informació es mostra</string>
<string name="revanced_hide_key_concepts_section_title">Amaga la secció \'Conceptes clau\'</string>
<string name="revanced_hide_key_concepts_section_summary_on">La secció \'Conceptes clau\' està oculta</string>
<string name="revanced_hide_key_concepts_section_summary_off">La secció \'Conceptes clau\' es mostra</string>
<string name="revanced_hide_transcript_section_title">Amaga la secció \'Llegendes\'</string>
<string name="revanced_hide_key_concepts_section_title">Amaga \"Conceptes clau\"</string>
<string name="revanced_hide_key_concepts_section_summary_on">La secció Conceptes clau s\'amaga</string>
<string name="revanced_hide_key_concepts_section_summary_off">La secció Conceptes clau es mostra</string>
<string name="revanced_hide_transcript_section_title">Amaga la transcripció</string>
<string name="revanced_hide_transcript_section_summary_on">La secció \'Llegendes\' està oculta</string>
<string name="revanced_hide_transcript_section_summary_off">La secció \'Llegendes\' es mostra</string>
<string name="revanced_hide_description_components_screen_title">Descripció del vídeo</string>
@@ -317,26 +314,26 @@ No se t'informarà de cap esdeveniment inesperat."</string>
<string name="revanced_comments_screen_title">Comentaris</string>
<string name="revanced_comments_screen_summary">Amaga o mostra els comentaris</string>
<string name="revanced_hide_comments_chat_summary_title">Amaga \"Resum del xat\"</string>
<string name="revanced_hide_comments_chat_summary_summary_on">El \"Resum del xat\" està amagat</string>
<string name="revanced_hide_comments_chat_summary_summary_off">Es mostra \"Resum del xat\"</string>
<string name="revanced_hide_comments_chat_summary_summary_on">El resum del xat s\'amaga</string>
<string name="revanced_hide_comments_chat_summary_summary_off">El resum del xat es mostra</string>
<string name="revanced_hide_comments_by_members_header_title">Amaga el títol \'Comentaris dels membres\'</string>
<string name="revanced_hide_comments_by_members_header_summary_on">S\'ha amagat el títol \"Comentaris dels membres\"</string>
<string name="revanced_hide_comments_by_members_header_summary_off">Es mostra el títol \"Comentaris dels membres\"</string>
<string name="revanced_hide_comments_by_members_header_summary_on">La capçalera Comentaris dels membres s\'amaga</string>
<string name="revanced_hide_comments_by_members_header_summary_off">La capçalera Comentaris dels membres es mostra</string>
<string name="revanced_hide_comments_section_title">Amaga la secció de comentaris</string>
<string name="revanced_hide_comments_section_summary_on">La secció de comentaris està amagada</string>
<string name="revanced_hide_comments_section_summary_off">Es mostra la secció de comentaris</string>
<string name="revanced_hide_comments_create_a_short_button_title">Amaga el botó \"Crear un Short\"</string>
<string name="revanced_hide_comments_create_a_short_button_summary_on">S\'ha amagat el botó \"Crear un Short\"</string>
<string name="revanced_hide_comments_create_a_short_button_summary_off">Es mostra el botó \"Crear un Short\"</string>
<string name="revanced_hide_comments_create_a_short_button_summary_on">El botó Crea un Short s\'amaga</string>
<string name="revanced_hide_comments_create_a_short_button_summary_off">El botó Crea un Short es mostra</string>
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_title">Amaga els botons d\'emojis i marca de temps</string>
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_summary_on">Els botons d\'emojis i marca de temps s\'amaguen</string>
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_summary_off">Els botons d\'emojis i marca de temps es mostren</string>
<string name="revanced_hide_comments_preview_comment_title">Amaga la vista prèvia del comentari</string>
<string name="revanced_hide_comments_preview_comment_summary_on">La vista prèvia del comentari s\'amaga</string>
<string name="revanced_hide_comments_preview_comment_summary_off">La vista prèvia del comentari es mostra</string>
<string name="revanced_hide_comments_thanks_button_title">Amaga el botó de Gràcies</string>
<string name="revanced_hide_comments_thanks_button_summary_on">El botó Gràcies s\'amaga</string>
<string name="revanced_hide_comments_thanks_button_summary_off">El botó Gràcies es mostra</string>
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_title">Amaga els botons d\'emojis i marca de temps</string>
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_summary_on">Els botons d\'emojis i marca de temps s\'amaguen</string>
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_summary_off">El botó de la marca de temps del comentari i els botons d\'emoji s\'ensenyen</string>
<!-- https://logos.fandom.com/wiki/YouTube/Yoodles -->
<string name="revanced_hide_doodles_title">Amaga els Doodles de YouTube</string>
<string name="revanced_hide_doodles_summary_on">Els Doodles de la barra de cerca es queden ocults</string>
@@ -417,12 +414,12 @@ Aquesta funció només està disponible per a dispositius antics"</string>
<string name="revanced_hide_player_store_shelf_summary_on">La prestatgeria de compres s\'amaga</string>
<string name="revanced_hide_player_store_shelf_summary_off">La prestatgeria de compres es mostra</string>
<string name="revanced_hide_shopping_links_title">Amaga els enllaços de compra a la descripció del vídeo</string>
<string name="revanced_hide_shopping_links_summary_on">Els enllaços de compra s\'amaguen</string>
<string name="revanced_hide_shopping_links_summary_off">Els enllaços de compra es mostren</string>
<string name="revanced_hide_shopping_links_summary_on">Els enllaços de compra a la descripció del vídeo s\'amaguen</string>
<string name="revanced_hide_shopping_links_summary_off">Els enllaços de compra a la descripció del vídeo es mostren</string>
<!-- 'Visit store' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_visit_store_button_title">Amaga l\'opció \"Visita la botiga\" a les pàgines dels canals</string>
<string name="revanced_hide_visit_store_button_summary_on">Botó amagat</string>
<string name="revanced_hide_visit_store_button_summary_off">Botó mostrat</string>
<string name="revanced_hide_visit_store_button_summary_on">El botó a la pàgina del canal s\'amaga</string>
<string name="revanced_hide_visit_store_button_summary_off">El botó a la pàgina del canal es mostra</string>
<string name="revanced_hide_web_search_results_title">Amaga els resultats de la cerca al web</string>
<string name="revanced_hide_web_search_results_summary_on">Els resultats de la cerca al web estan ocults</string>
<string name="revanced_hide_web_search_results_summary_off">Els resultats de la cerca al web estant mostrats</string>
@@ -446,10 +443,10 @@ Aquesta funció només està disponible per a dispositius antics"</string>
<string name="revanced_share_copy_url_success">S\'ha copiat l\'URL al porta-retalls</string>
<string name="revanced_share_copy_url_timestamp_success">S\'ha copiat l\'URL amb data i hora</string>
<string name="revanced_copy_video_url_title">Mostra el botó de l\'URL</string>
<string name="revanced_copy_video_url_summary_on">El botó es mostra. Toca per copiar l\'URL del vídeo. Mantén premut per copiar l\'URL del vídeo amb marca de temps</string>
<string name="revanced_copy_video_url_summary_on">Es mostra el botó. Toqueu per copiar l\'URL del vídeo. Toqueu i manteniu premut per copiar-lo amb la marca de temps</string>
<string name="revanced_copy_video_url_summary_off">El botó no es mostra</string>
<string name="revanced_copy_video_url_timestamp_title">Mostra el botó per copiar l\'URL amb marca de temps</string>
<string name="revanced_copy_video_url_timestamp_summary_on">Es mostra el botó. Toqueu per copiar l\'URL del vídeo amb segell de temps. Toqueu i manteniu premut per copiar el vídeo sense segell de temps</string>
<string name="revanced_copy_video_url_timestamp_summary_on">Es mostra el botó. Toqueu per copiar l\'URL del vídeo amb la marca de temps. Toqueu i manteniu premut per copiar-lo sense la marca de temps</string>
<string name="revanced_copy_video_url_timestamp_summary_off">No es mostra el botó</string>
</patch>
<patch id="interaction.dialog.removeViewerDiscretionDialogPatch">
@@ -462,8 +459,8 @@ Aquesta funció només està disponible per a dispositius antics"</string>
<string name="revanced_external_downloader_screen_title">Descarregues externes</string>
<string name="revanced_external_downloader_screen_summary">Configuració per utilitzar un descarregador extern</string>
<string name="revanced_external_downloader_title">Mostra el botó de descàrrega extern</string>
<string name="revanced_external_downloader_summary_on">Botó de descàrrega mostrat al reproductor</string>
<string name="revanced_external_downloader_summary_off">El botó de descàrrega no es mostra al reproductor</string>
<string name="revanced_external_downloader_summary_on">El botó de descàrrega al reproductor es mostra</string>
<string name="revanced_external_downloader_summary_off">El botó de descàrrega al reproductor no es mostra</string>
<!-- 'download action button' should be translated using the same wording as the translation of 'revanced_hide_download_button_title' -->
<string name="revanced_external_downloader_action_button_title">Sobrescriu el botó d\'acció de Desa</string>
<string name="revanced_external_downloader_action_button_summary_on">El botó de descàrrega obre el vostre descarregador extern</string>
@@ -484,11 +481,15 @@ Aquesta funció només està disponible per a dispositius antics"</string>
</patch>
<patch id="interaction.swipecontrols.swipeControlsResourcePatch">
<string name="revanced_swipe_brightness_title">Habilita el control de brillo por gesto</string>
<string name="revanced_swipe_brightness_summary_on">El control lliscant de brillantor està habilitat</string>
<string name="revanced_swipe_brightness_summary_off">El control lliscant de brillantor està inhabilitat</string>
<string name="revanced_swipe_brightness_summary_on">"S'ha activat el lliscament de la brillantor a pantalla completa
Ajusteu la brillantor lliscant verticalment a la part esquerra de la pantalla"</string>
<string name="revanced_swipe_brightness_summary_off">S\'ha desactivat el lliscament de la brillantor a pantalla completa</string>
<string name="revanced_swipe_volume_title">Habilita el control de volumen por gesto</string>
<string name="revanced_swipe_volume_summary_on">Actiu el canvi de volum amb gestos</string>
<string name="revanced_swipe_volume_summary_off">Desactivat el canvi de volum amb gestos</string>
<string name="revanced_swipe_volume_summary_on">"Lliscar el dit a pantalla completa per al volum està activat
Ajusteu el volum lliscant verticalment a la part dreta de la pantalla"</string>
<string name="revanced_swipe_volume_summary_off">Lliscar el dit a pantalla completa per al volum està desactivat</string>
<string name="revanced_swipe_press_to_engage_title">Activa el gest de polsar per lliscar</string>
<string name="revanced_swipe_press_to_engage_summary_on">Activat el gest de prémer per lliscar</string>
<string name="revanced_swipe_press_to_engage_summary_off">Desactivat el gest de prémer per lliscar</string>
@@ -501,16 +502,19 @@ Aquesta funció només està disponible per a dispositius antics"</string>
<string name="revanced_swipe_lowest_value_enable_auto_brightness_title">Activa el gest de la brillantor automàtica</string>
<string name="revanced_swipe_lowest_value_enable_auto_brightness_summary_on">Deslizar hacia abajo hasta el valor más bajo del gesto de brillo activa el brillo automático</string>
<string name="revanced_swipe_lowest_value_enable_auto_brightness_summary_off">Deslizar hacia abajo hasta el valor más bajo no activa el brillo automático</string>
<string name="revanced_swipe_lowest_value_enable_auto_brightness_overlay_text">Automàtic</string>
<string name="revanced_swipe_overlay_timeout_title">Temps límite de superposició de lliscament</string>
<string name="revanced_swipe_overlay_timeout_summary">La quantitat de mil·lisegons que la superposició és visible</string>
<string name="revanced_swipe_text_overlay_size_title">Mida del text de la superposició lliscant</string>
<string name="revanced_swipe_text_overlay_size_summary">La mida del text per a la superposició lliscant</string>
<string name="revanced_swipe_overlay_background_opacity_title">Opacitat del fons de la superposició de lliscament</string>
<string name="revanced_swipe_overlay_background_opacity_summary">Valor d\'opacitat entre 0 i 100</string>
<string name="revanced_swipe_overlay_background_opacity_invalid_toast">L\'opacitat de lliscament ha d\'estar entre 0 i 100</string>
<string name="revanced_swipe_threshold_title">Llindar de magnitud de lliscament</string>
<string name="revanced_swipe_threshold_summary">La quantitat de llindar per a què es produeixi el desplaçament</string>
<string name="revanced_swipe_show_circular_overlay_title">Mostra la superposició circular</string>
<string name="revanced_swipe_show_circular_overlay_summary_on">Es mostra la superposició circular</string>
<string name="revanced_swipe_show_circular_overlay_summary_off">Es mostra la superposició horitzontal</string>
<string name="revanced_swipe_overlay_minimal_style_title">Activa l\'estil minimalista</string>
<string name="revanced_swipe_overlay_minimal_style_summary_on">S\'ha activat l\'estil de superposició minimalista</string>
<string name="revanced_swipe_overlay_minimal_style_summary_off">L\'estil de superposició mínima està desactivat</string>
<string name="revanced_swipe_change_video_title">Activa la funció de lliscament per canviar vídeos</string>
<string name="revanced_swipe_change_video_summary_on">Lliscar en mode de pantalla completa canviarà al vídeo següent/anterior</string>
<string name="revanced_swipe_change_video_summary_off">Lliscar en mode de pantalla completa no canviarà al vídeo següent/anterior</string>
@@ -523,6 +527,9 @@ Aquesta funció només està disponible per a dispositius antics"</string>
<patch id="layout.buttons.action.hideButtonsPatch">
<string name="revanced_hide_buttons_screen_title">Botons d\'acció</string>
<string name="revanced_hide_buttons_screen_summary">Amaga o mostra botons sota els vídeos</string>
<string name="revanced_disable_like_subscribe_glow_title">Desactiva l\'efecte brillant de M\'agrada i Subscriu-te</string>
<string name="revanced_disable_like_subscribe_glow_summary_on">Els botons M\'agrada i Subscriu-te no brillaran quan es mencionin</string>
<string name="revanced_disable_like_subscribe_glow_summary_off">Els botons M\'agrada i Subscriu-te brillaran quan es mencionin</string>
<string name="revanced_hide_like_dislike_button_title">Amaga M\'agrada i No m\'agrada</string>
<string name="revanced_hide_like_dislike_button_summary_on">Els botons M\'agrada i No m\'agrada estan ocults</string>
<string name="revanced_hide_like_dislike_button_summary_off">Els botons M\'agrada i No m\'agrada es mostren</string>
@@ -575,12 +582,18 @@ Aquesta funció només està disponible per a dispositius antics"</string>
<string name="revanced_hide_subscriptions_button_title">Amaga les subscripcions</string>
<string name="revanced_hide_subscriptions_button_summary_on">El botó de subscripcions està ocult</string>
<string name="revanced_hide_subscriptions_button_summary_off">El botó de subscripcions es mostra</string>
<string name="revanced_hide_notifications_button_title">Amaga les notificacions</string>
<string name="revanced_hide_notifications_button_summary_on">El botó de notificacions està amagat</string>
<string name="revanced_hide_notifications_button_summary_off">El botó de notificacions es mostra</string>
<!-- 'Notifications' should be translated using the same localized wording YouTube displays the tab. -->
<string name="revanced_switch_create_with_notifications_button_title">Canvia Crea amb notificacions</string>
<string name="revanced_switch_create_with_notifications_button_summary_on">"El botó Crea es canvia pel botó Notificacions
Nota: si actives aquesta opció, també s'amaguen els anuncis de vídeo per força"</string>
<string name="revanced_switch_create_with_notifications_button_summary_off">El botó Crear no s\'intercanvia amb el botó Notificacions</string>
<string name="revanced_switch_create_with_notifications_button_user_dialog_message">"Desactivar aquesta opció també desactivarà el bloqueig d'anuncis de Shorts.
Si canviar aquesta opció no té cap efecte, prova a canviar al mode d'incògnit."</string>
<string name="revanced_hide_navigation_button_labels_title">Amagueu les etiquetes dels botons de navegació</string>
<string name="revanced_hide_navigation_button_labels_summary_on">Les etiquetes estan amagades</string>
<string name="revanced_hide_navigation_button_labels_summary_off">Les etiquetes es mostren</string>
@@ -795,10 +808,13 @@ Nota: si actives aquesta opció, també s'amaguen els anuncis de vídeo per for
<string name="revanced_hide_shorts_navigation_bar_summary_on">La barra de navegació està oculta</string>
<string name="revanced_hide_shorts_navigation_bar_summary_off">La barra de navegació està visible</string>
</patch>
<patch id="layout.hide.suggestedvideoendscreen.disableSuggestedVideoEndScreenResourcePatch">
<string name="revanced_disable_suggested_video_end_screen_title">Deshabilitar pantalla final amb vídeos suggerits</string>
<string name="revanced_disable_suggested_video_end_screen_summary_on">Els vídeos suggerits estaran desactivats</string>
<string name="revanced_disable_suggested_video_end_screen_summary_off">Els vídeos suggerits estaran visibles</string>
<patch id="layout.hide.endscreensuggestion.hideEndScreenSuggestedVideoPatch">
<string name="revanced_end_screen_suggested_video_title">Amaga el vídeo suggerit de la pantalla final</string>
<string name="revanced_end_screen_suggested_video_summary_on">"El vídeo suggerit de la pantalla final s'amaga quan la reproducció automàtica està desactivada
La reproducció automàtica es pot canviar a la configuració de YouTube:
Configuració → Reproducció → Reprodueix el vídeo següent automàticament"</string>
<string name="revanced_end_screen_suggested_video_summary_off">Es mostra el vídeo suggerit de la pantalla final</string>
</patch>
<patch id="layout.hide.time.hideTimestampPatch">
<string name="revanced_hide_timestamp_title">Amagar segell de temps del vídeo</string>
@@ -831,7 +847,7 @@ Nota: si actives aquesta opció, també s'amaguen els anuncis de vídeo per for
<!-- Toast shown if network connection times out. Translations of this should not be longer than the original English or the text can be clipped and not entirely shown. -->
<string name="revanced_ryd_failure_connection_timeout">Els \"no m\'agrada\" no estan disponibles temporalment (temps d\'espera de l\'API)</string>
<string name="revanced_ryd_failure_connection_status_code">Els \"no m\'agrada\" no estan disponibles (estat %d)</string>
<string name="revanced_ryd_failure_client_rate_limit_requested">Els \"no m\'agrada\" no estan disponibles (límit de l\'API del client assolit)</string>
<string name="revanced_ryd_failure_client_rate_limit_requested">No hi ha \"no m\'agrada\" disponibles (límit de l\'API del client)</string>
<string name="revanced_ryd_failure_generic">Els \"no m\'agrada\" no estan disponibles (%s)</string>
<!-- Toast shown if the user enables RYD while a video is opened, and then tries to vote for the video. -->
<string name="revanced_ryd_failure_ryd_enabled_while_playing_video_then_user_voted">Recarrega el vídeo per votar utilitzant Return YouTube Dislike</string>
@@ -840,14 +856,14 @@ Nota: si actives aquesta opció, també s'amaguen els anuncis de vídeo per for
<string name="revanced_ryd_enable_summary_on">Els \"no m\'agrada\" es mostren</string>
<string name="revanced_ryd_enable_summary_off">Els \"no m\'agrada\" no es mostren</string>
<string name="revanced_ryd_shorts_title">Mostrar \"no m\'agrada\" a Shorts</string>
<string name="revanced_ryd_shorts_summary_on">Els \"no m\'agrada\" es mostren a Shorts</string>
<string name="revanced_ryd_shorts_summary_on_disclaimer">"No m'agrades es mostren als Shorts
<string name="revanced_ryd_shorts_summary_on">Els \"no m\'agrada\" als Shorts es mostren</string>
<string name="revanced_ryd_shorts_summary_on_disclaimer">"Els \"no m'agrada\" als Shorts es mostren
Limitació: és possible que els No m'agrades no apareguin en mode d'incògnit"</string>
<string name="revanced_ryd_shorts_summary_off">Els \"no m\'agrada\" estan ocults a Shorts</string>
Limitació: és possible que els \"no m'agrada\" no apareguin en mode d'incògnit"</string>
<string name="revanced_ryd_shorts_summary_off">Els \"no m\'agrada\" als Shorts no es mostren</string>
<string name="revanced_ryd_dislike_percentage_title">\"No m\'agrada\" com a percentatge</string>
<string name="revanced_ryd_dislike_percentage_summary_on">Els \"no m\'agrada\" es mostren com a percentatge</string>
<string name="revanced_ryd_dislike_percentage_summary_off">Els \"no m\'agrada\" es mostren com a nombre</string>
<string name="revanced_ryd_dislike_percentage_summary_off">Els \"no m\'agrada\" es mostren com un número</string>
<!-- Translations should use language similar to 'revanced_sb_enable_compact_skip_button' -->
<string name="revanced_ryd_compact_layout_title">Botó Compact Like</string>
<string name="revanced_ryd_compact_layout_summary_on">Botó \"m\'agrada\" estilitzat per a l\'amplada mínima</string>
@@ -909,20 +925,20 @@ Aquesta funció funciona millor amb una qualitat de vídeo de 720p o inferior i
<string name="revanced_sb_square_layout_sum_on">Els botons i controls són quadrats</string>
<string name="revanced_sb_square_layout_sum_off">Els botons i els controls són arrodonits</string>
<!-- Translations should use language similar to 'revanced_ryd_compact_layout_title' -->
<string name="revanced_sb_enable_compact_skip_button">Utilitzar el botó de salt compacte</string>
<string name="revanced_sb_enable_compact_skip_button">Utilitza el botó Omet compacte</string>
<string name="revanced_sb_enable_compact_skip_button_sum_on">El botó de salt té un estil per a una amplada mínima</string>
<string name="revanced_sb_enable_compact_skip_button_sum_off">El botó de salt té un estil per a una millor aparença</string>
<string name="revanced_sb_enable_auto_hide_skip_segment_button">Ocultar automàticament el botó de salt</string>
<string name="revanced_sb_enable_auto_hide_skip_segment_button">Amaga automàticament el botó Omet</string>
<string name="revanced_sb_enable_auto_hide_skip_segment_button_sum_on">El botó \"Skip\" es tanca després d\'uns segons</string>
<string name="revanced_sb_enable_auto_hide_skip_segment_button_sum_off">El botó de salt es mostra durant tot el segment</string>
<string name="revanced_sb_general_skiptoast">Mostrar una notificació quan es salti automàticament</string>
<string name="revanced_sb_enable_auto_hide_skip_segment_button_sum_off">El botó Omet es mostra per a tot el segment</string>
<string name="revanced_sb_general_skiptoast">Mostra un toast quan s\'omet</string>
<string name="revanced_sb_general_skiptoast_sum_on">Es mostra una notificació quan un segment es salti automàticament. Toqueu aquí per veure un exemple</string>
<string name="revanced_sb_general_skiptoast_sum_off">No es mostra cap notificació. Toqueu aquí per veure un exemple</string>
<string name="revanced_sb_general_time_without">Mostrar la durada del vídeo sense segments</string>
<string name="revanced_sb_general_time_without_sum_on">La durada del vídeo menys tots els segments, es mostra entre parèntesis al costat de la durada completa del vídeo</string>
<string name="revanced_sb_general_time_without_sum_off">Es mostra la durada completa del vídeo</string>
<string name="revanced_sb_create_segment_category">Creació de nous segments</string>
<string name="revanced_sb_enable_create_segment">Mostrar el botó de crear un nou segment</string>
<string name="revanced_sb_enable_create_segment">Mostra el botó Crea un segment nou</string>
<string name="revanced_sb_enable_create_segment_sum_on">El botó de crear un nou segment es mostra</string>
<string name="revanced_sb_enable_create_segment_sum_off">El botó de crear un nou segment no es mostra</string>
<string name="revanced_sb_general_adjusting">Ajustar el pas del nou segment</string>
@@ -1015,7 +1031,7 @@ El teu ID d'usuari és com una contrasenya i no l'hauries de compartir mai."</st
<string name="revanced_sb_skipped_multiple_segments">Múltiples segments omesos</string>
<string name="revanced_sb_skip_automatically">Omet automàticament</string>
<string name="revanced_sb_skip_automatically_once">Omet automàticament una vegada</string>
<string name="revanced_sb_skip_showbutton">Mostra un botó d\'omissió</string>
<string name="revanced_sb_skip_showbutton">Mostra un botó Omet</string>
<string name="revanced_sb_skip_seekbaronly">Mostra a la barra de cerca</string>
<string name="revanced_sb_skip_ignore">Desactiva</string>
<string name="revanced_sb_submit_failed_invalid">No s\'ha pogut enviar el segment: %s</string>
@@ -1041,9 +1057,9 @@ Ja existeix"</string>
<string name="revanced_sb_new_segment_disabled_category">La categoria està desactivada a la configuració. Habiliteu la categoria per enviar.</string>
<string name="revanced_sb_new_segment_title">Nou segment de SponsorBlock</string>
<string name="revanced_sb_new_segment_mark_time_as_question">Definir %s com a inici o final d\'un nou segment?</string>
<string name="revanced_sb_new_segment_mark_start">inici</string>
<string name="revanced_sb_new_segment_mark_end">final</string>
<string name="revanced_sb_new_segment_now">ara</string>
<string name="revanced_sb_new_segment_mark_start">Inici</string>
<string name="revanced_sb_new_segment_mark_end">Final</string>
<string name="revanced_sb_new_segment_now">Ara</string>
<string name="revanced_sb_new_segment_time_start">Temps en què comença el segment</string>
<string name="revanced_sb_new_segment_time_end">Temps en què acaba el segment</string>
<string name="revanced_sb_new_segment_confirm_title">Els temps són correctes?</string>
@@ -1064,7 +1080,7 @@ Preparat per enviar?"</string>
<string name="revanced_sb_new_segment_edit_by_hand_parse_error">Temps invàlid proporcionat</string>
<string name="revanced_sb_stats">Estadístiques</string>
<!-- Shown in the settings preferences, and translations can be any text length. -->
<string name="revanced_sb_stats_connection_failure">Les estadístiques no estan disponibles temporalment (API està avall)</string>
<string name="revanced_sb_stats_connection_failure">Les estadístiques no estan disponibles temporalment (l\'API no funciona)</string>
<string name="revanced_sb_stats_loading">S\'està carregant...</string>
<string name="revanced_sb_stats_sb_disabled">SponsorBlock està desactivat</string>
<string name="revanced_sb_stats_username">El teu nom d\'usuari: &lt;b&gt;%s&lt;/b&gt;</string>
@@ -1282,13 +1298,13 @@ Toca aquí per obtenir més informació sobre DeArrow"</string>
<string name="revanced_alt_thumbnail_stills_time_entry_2">Centre del vídeo</string>
<string name="revanced_alt_thumbnail_stills_time_entry_3">Final del vídeo</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_alt_thumbnail_dearrow_error">DeArrow temporalment no disponible (codi d\'estat: %s)</string>
<string name="revanced_alt_thumbnail_dearrow_error_generic">DeArrow temporalment no disponible</string>
<string name="revanced_alt_thumbnail_dearrow_error">DeArrow no està disponible temporalment (codi d\'estat: %s)</string>
<string name="revanced_alt_thumbnail_dearrow_error_generic">DeArrow no està disponible temporalment</string>
</patch>
<patch id="misc.announcements.announcementsPatch">
<string name="revanced_announcements_title">Mostra els anuncis de ReVanced</string>
<string name="revanced_announcements_summary_on">Els anuncis es mostren a l\'inici</string>
<string name="revanced_announcements_summary_off">Els anuncis no es mostren a l\'inici</string>
<string name="revanced_announcements_summary_on">Els anuncis a l\'inici es mostren</string>
<string name="revanced_announcements_summary_off">Els anuncis a l\'inici no es mostren</string>
<string name="revanced_announcements_enabled_summary">Mostra els anuncis a l\'inici</string>
<string name="revanced_announcements_connection_failed">Error de connexió al proveïdor d\'anuncis</string>
<string name="revanced_announcements_dialog_dismiss">Descarta</string>
@@ -1338,10 +1354,11 @@ Si actives aquesta opció, es poden desbloquejar qualitats de vídeo més altes"
<string name="revanced_disable_zoom_haptics_summary_off">Els hàptics estan habilitats</string>
</patch>
<patch id="video.audio.forceOriginalAudioPatch">
<string name="revanced_force_original_audio_title">Forçar àudio original</string>
<string name="revanced_force_original_audio_summary_on">Utilitzant àudio original</string>
<string name="revanced_force_original_audio_title">Forçar l\'idioma d\'àudio original</string>
<string name="revanced_force_original_audio_summary_on">S\'utilitza l\'idioma d\'àudio original</string>
<string name="revanced_force_original_audio_summary_off">Utilitzant àudio predeterminat</string>
<string name="revanced_force_original_audio_not_available">Per utilitzar aquesta funció, canvia la suplantació de flux al tipus de client iOS</string>
<!-- 'Spoof video streams' should be the same translation used for revanced_spoof_video_streams_screen_title -->
<string name="revanced_force_original_audio_not_available">Per utilitzar aquesta funció, canvieu \"Suplantació de fluxos de vídeo\" a iOS TV</string>
</patch>
<patch id="video.quality.rememberVideoQualityPatch">
<!-- Translations should use the same text as revanced_custom_playback_speeds_auto -->
@@ -1404,8 +1421,6 @@ Si actives aquesta opció, es poden desbloquejar qualitats de vídeo més altes"
La reproducció de vídeo pot no funcionar"</string>
<string name="revanced_spoof_video_streams_user_dialog_message">Desactivar aquesta configuració pot causar problemes de reproducció de vídeo.</string>
<string name="revanced_spoof_video_streams_client_type_title">Client predeterminat</string>
<!-- 'no auth' means no authentication -->
<string name="revanced_spoof_video_streams_client_type_android_vr_no_auth">Android VR (sense autorització)</string>
<string name="revanced_spoof_video_streams_ios_force_avc_title">Forza iOS AVC (H.264)</string>
<string name="revanced_spoof_video_streams_ios_force_avc_summary_on">El còdec de vídeo es força a AVC (H.264)</string>
<string name="revanced_spoof_video_streams_ios_force_avc_summary_off">El còdec de vídeo es determina automàticament.</string>

View File

@@ -161,16 +161,13 @@ Klepněte na tlačítko Pokračovat a povolte změny optimalizace."</string>
<string name="revanced_debug_stacktrace_summary_on">Protokoly ladění obsahují trasování zásobníku</string>
<string name="revanced_debug_stacktrace_summary_off">Ladící protokoly nezahrnují sledování zásobníku</string>
<string name="revanced_debug_toast_on_error_title">Zobrazit oznámení v případě chyby ReVanced</string>
<string name="revanced_debug_toast_on_error_summary_on">Oznámení se zobrazí, pokud dojde k chybě</string>
<string name="revanced_debug_toast_on_error_summary_off">Oznámení se nezobrazí, pokud dojde k chybě</string>
<string name="revanced_debug_toast_on_error_summary_on">Zobrazí se toast, pokud dojde k chybě</string>
<string name="revanced_debug_toast_on_error_summary_off">Toast se nezobrazí, pokud dojde k chybě</string>
<string name="revanced_debug_toast_on_error_user_dialog_message">"Vypnutí chybových toastů skryje všechna chybová oznámení ReVanced.
Nebudete informováni o žádné neočekávané události."</string>
</patch>
<patch id="layout.hide.general.hideLayoutComponentsPatch">
<string name="revanced_disable_like_subscribe_glow_title">Deaktivovat zvýraznění tlačítek Like a Subscribe</string>
<string name="revanced_disable_like_subscribe_glow_summary_on">Tlačítka Like a Subscribe po zmínce nebudou zvýrazněna</string>
<string name="revanced_disable_like_subscribe_glow_summary_off">Tlačítka Like a Subscribe po zmínce budou zvýrazněna</string>
<string name="revanced_hide_album_cards_title">Skrýt karty alb</string>
<string name="revanced_hide_album_cards_summary_on">Karty alb jsou skryté</string>
<string name="revanced_hide_album_cards_summary_off">Karty alb jsou zobrazeny</string>
@@ -193,22 +190,22 @@ Nebudete informováni o žádné neočekávané události."</string>
<string name="revanced_hide_horizontal_shelves_summary_off">Police sú 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 tlačidlo \"Pripojiť sa\"</string>
<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čidlo 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">Skryť police \"Pre vás\" na stránke kanála</string>
<string name="revanced_hide_for_you_shelf_summary_on">Police je skrytá</string>
<string name="revanced_hide_for_you_shelf_summary_off">Polička je prikazana</string>
<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">Skryť tlačidlo \'Upozornite ma\'</string>
<string name="revanced_hide_notify_me_button_summary_on">Tlačítko je skryté</string>
<string name="revanced_hide_notify_me_button_summary_off">Tlačítko je zobrazeno</string>
<!-- 'People also watch' should be translated using the same localized wording YouTube displays. -->
<string name="revanced_hide_search_result_recommendations_title">Skryť odporúčania \'Ľudia pozerali aj\'</string>
<string name="revanced_hide_search_result_recommendations_summary_on">Odporúčania sú skryté</string>
<string name="revanced_hide_search_result_recommendations_summary_off">Odporúčania sú zobrazené</string>
<!-- 'People also watched' should be translated using the same localized wording YouTube displays. -->
<string name="revanced_hide_search_result_recommendations_title">Skrýt štítek „Lidé také sledovali“</string>
<string name="revanced_hide_search_result_recommendations_summary_on">Štítek je skrytý</string>
<string name="revanced_hide_search_result_recommendations_summary_off">Štítek je zobrazen</string>
<!-- 'Show more' should be translated with the same localized wording that YouTube displays.
This button usually appears when searching for a YT creator. -->
<string name="revanced_hide_show_more_button_title">Skrýt tlačítko „Zobrazit více“</string>
@@ -224,8 +221,8 @@ Nebudete informováni o žádné neočekávané události."</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">Rozbalovací karty jsou skryty</string>
<string name="revanced_hide_expandable_chip_summary_off">Rozbalovací karty se zobrazují</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_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>
@@ -241,7 +238,7 @@ Nebudete informováni o žádné neočekávané události."</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">Skryj pokyny pro komunitu predplatitelů</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>
@@ -280,25 +277,25 @@ Nebudete informováni o žádné neočekávané události."</string>
<string name="revanced_hide_artist_cards_title">Skrýt karty umělců</string>
<string name="revanced_hide_artist_cards_summary_on">Karty umělců jsou skryty</string>
<string name="revanced_hide_artist_cards_summary_off">Karty umělců se zobrazují</string>
<string name="revanced_hide_attributes_section_title">Skrýt sekci s atributy</string>
<string name="revanced_hide_attributes_section_summary_on">\"Místa na videu\", sekce s Hrami a Hudbou jsou skryty</string>
<string name="revanced_hide_attributes_section_summary_off">\'Mista vybraná\', sekce Hry a Hudba se zobrazují</string>
<string name="revanced_hide_chapters_section_title">Skryj sekcję Rozdziały</string>
<string name="revanced_hide_attributes_section_title">Skrýt atributy</string>
<string name="revanced_hide_attributes_section_summary_on">Sekce Doporučená místa, Hry, Hudba a Zmínění lidé jsou skryté</string>
<string name="revanced_hide_attributes_section_summary_off">Sekce Doporučená místa, Hry, Hudba a Zmínění lidé jsou zobrazené</string>
<string name="revanced_hide_chapters_section_title">Skrýt kapitoly</string>
<string name="revanced_hide_chapters_section_summary_on">Sekcja Rozdziały jest ukryta</string>
<string name="revanced_hide_chapters_section_summary_off">Sekcja Rozdziały jest widoczna</string>
<string name="revanced_hide_how_this_was_made_section_title">Skrýt sekci „Jak vznikl tento obsah“</string>
<string name="revanced_hide_how_this_was_made_section_summary_on">Sekce Jak vznikl tento obsah je skrytá</string>
<string name="revanced_hide_how_this_was_made_section_summary_off">Sekce Jak vznikl tento obsah je zobrazena</string>
<string name="revanced_hide_podcast_section_title">Ukryj sekcję \'Odkryj podcast\'</string>
<string name="revanced_hide_podcast_section_summary_on">Sekcja \'Odkryj podcast\' jest ukryta</string>
<string name="revanced_hide_podcast_section_summary_off">Sekcja \'Odkryj podcast\' jest widoczna</string>
<string name="revanced_hide_info_cards_section_title">Skrýt sekci informačních karet</string>
<string name="revanced_hide_how_this_was_made_section_title">Skrýt „Jak tento obsah vznikl</string>
<string name="revanced_hide_how_this_was_made_section_summary_on">Sekce Jak tento obsah vznikl je skrytá</string>
<string name="revanced_hide_how_this_was_made_section_summary_off">Sekce Jak tento obsah vznikl je zobrazena</string>
<string name="revanced_hide_podcast_section_title">Skrýt „Prozkoumat podcast</string>
<string name="revanced_hide_podcast_section_summary_on">Sekce Prozkoumat podcast je skrytá</string>
<string name="revanced_hide_podcast_section_summary_off">Sekce Prozkoumat podcast je zobrazena</string>
<string name="revanced_hide_info_cards_section_title">Skrýt informační karty</string>
<string name="revanced_hide_info_cards_section_summary_on">Sekce informačních karet je skrytá</string>
<string name="revanced_hide_info_cards_section_summary_off">Sekce informačních karet je zobrazena</string>
<string name="revanced_hide_key_concepts_section_title">Skrýt sekci \'Klíčové koncepty\'</string>
<string name="revanced_hide_key_concepts_section_summary_on">Sekce klíčových konceptů je skrytá</string>
<string name="revanced_hide_key_concepts_section_summary_off">Sekce klíčových konceptů je zobrazena</string>
<string name="revanced_hide_transcript_section_title">Skrýt sekci přepisu</string>
<string name="revanced_hide_key_concepts_section_title">Skrýt Klíčové koncepty</string>
<string name="revanced_hide_key_concepts_section_summary_on">Sekce Klíčové koncepty je skrytá</string>
<string name="revanced_hide_key_concepts_section_summary_off">Sekce Klíčové koncepty je zobrazena</string>
<string name="revanced_hide_transcript_section_title">Skrýt přepis</string>
<string name="revanced_hide_transcript_section_summary_on">Sekce přepisu je skrytá</string>
<string name="revanced_hide_transcript_section_summary_off">Sekce přepisu je zobrazena</string>
<string name="revanced_hide_description_components_screen_title">Popis videa</string>
@@ -316,27 +313,27 @@ Nebudete informováni o žádné neočekávané události."</string>
<string name="revanced_hide_filter_bar_feed_in_related_videos_summary_off">V souvisejících videích 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_chat_summary_title">Skrýt \'Souhrn chatu\'</string>
<string name="revanced_hide_comments_chat_summary_summary_on">   \'Souhrn chatu\' je skrytý</string>
<string name="revanced_hide_comments_chat_summary_summary_off">\'Souhrn chatu\' je zobrazen</string>
<string name="revanced_hide_comments_chat_summary_title">Skrýt „Shrnutí chatu</string>
<string name="revanced_hide_comments_chat_summary_summary_on">Shrnutí chatu je skryto</string>
<string name="revanced_hide_comments_chat_summary_summary_off">Shrnutí chatu je zobrazeno</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_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_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 viditelné</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_and_emoji_buttons_title">Skrýt tlačítka emoji a časového razítka</string>
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_summary_on">Tlačítka emoji a časového razítka jsou skryta</string>
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_summary_off">Tlačítka emoji a časového razítka jsou zobrazena</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_and_emoji_buttons_title">Skrýt tlačítka s časovými údaji a emoji</string>
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_summary_on">Tlačítka s časovými údaji a emoji jsou skryta</string>
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_summary_off">Tlačítka s časovými údaji a emoji jsou zobrazena</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>
@@ -417,12 +414,12 @@ Tato funkce je dostupná pouze pro starší zařízení"</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">Odkazy na nakupování jsou skryty</string>
<string name="revanced_hide_shopping_links_summary_off">Odkazy na nakupování jsou zobrazeny</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 je skryté</string>
<string name="revanced_hide_visit_store_button_summary_off">Tlačítko je zobrazeno</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_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>
@@ -446,10 +443,10 @@ Tato funkce je dostupná pouze pro starší zařízení"</string>
<string name="revanced_share_copy_url_success">URL zkopírováno do schránky</string>
<string name="revanced_share_copy_url_timestamp_success">Adresa URL s časovým razítkem zkopírována</string>
<string name="revanced_copy_video_url_title">Zobrazit tlačítko pro kopírování adresy URL videa</string>
<string name="revanced_copy_video_url_summary_on">Tlačítko je zobrazeno. Klepnutím zkopírujete adresu URL videa. Klepnutím a podržením zkopírujete adresu URL videa s časovým razítkem</string>
<string name="revanced_copy_video_url_summary_on">Zobrazí se tlačítko. Klepnutím zkopírujete URL videa. Klepnutím a podržením zkopírujete s časovou značkou</string>
<string name="revanced_copy_video_url_summary_off">Tlačítko se nezobrazuje</string>
<string name="revanced_copy_video_url_timestamp_title">Zobrazit tlačítko pro kopírování adresy URL videa s časovým razítkem</string>
<string name="revanced_copy_video_url_timestamp_summary_on">Tlačítko je zobrazeno. Klepnutím zkopírujete adresu URL videa s časovým razítkem. Klepnutím a podržením zkopírujete adresu URL videa bez časového razítka</string>
<string name="revanced_copy_video_url_timestamp_summary_on">Zobrazí se tlačítko. Klepnutím zkopírujete URL videa s časovou značkou. Klepnutím a podržením zkopírujete bez časové značky</string>
<string name="revanced_copy_video_url_timestamp_summary_off">Tlačítko se nezobrazuje</string>
</patch>
<patch id="interaction.dialog.removeViewerDiscretionDialogPatch">
@@ -462,8 +459,8 @@ Tato funkce je dostupná pouze pro starší zařízení"</string>
<string name="revanced_external_downloader_screen_title">Externí stahování</string>
<string name="revanced_external_downloader_screen_summary">Nastavení pro použití externího stahování</string>
<string name="revanced_external_downloader_title">Zobrazit tlačítko pro externí stahování</string>
<string name="revanced_external_downloader_summary_on">Tlačítko pro stahování se zobrazuje v přehrávači</string>
<string name="revanced_external_downloader_summary_off">Tlačítko pro stahování se v přehrávači nezobrazuje</string>
<string name="revanced_external_downloader_summary_on">Tlačítko stahování v přehrávači je zobrazeno</string>
<string name="revanced_external_downloader_summary_off">Tlačítko stahování v přehrávači nezobrazeno</string>
<!-- 'download action button' should be translated using the same wording as the translation of 'revanced_hide_download_button_title' -->
<string name="revanced_external_downloader_action_button_title">Přepsat tlačítko akce Stahování</string>
<string name="revanced_external_downloader_action_button_summary_on">Tlačítko pro stahování otevře váš externí stahovač</string>
@@ -484,11 +481,15 @@ Tato funkce je dostupná pouze pro starší zařízení"</string>
</patch>
<patch id="interaction.swipecontrols.swipeControlsResourcePatch">
<string name="revanced_swipe_brightness_title">Povolit gesto pro jas</string>
<string name="revanced_swipe_brightness_summary_on">Přejetí pro jas je povoleno</string>
<string name="revanced_swipe_brightness_summary_off">Přejetí pro jas je zakázáno</string>
<string name="revanced_swipe_brightness_summary_on">"Potažení jasu na celou obrazovku je povoleno
Upravte jas přejetím svisle po levé straně obrazovky"</string>
<string name="revanced_swipe_brightness_summary_off">Potažení jasu na celou obrazovku je zakázáno</string>
<string name="revanced_swipe_volume_title">Povolit gesto pro hlasitost</string>
<string name="revanced_swipe_volume_summary_on">Posuvník hlasitosti je povolen</string>
<string name="revanced_swipe_volume_summary_off">Posuvník hlasitosti je zakázán</string>
<string name="revanced_swipe_volume_summary_on">"Přejetím prstem na celou obrazovku je povoleno
Hlasitost se upravuje svislým přejetím po pravé straně obrazovky"</string>
<string name="revanced_swipe_volume_summary_off">Přejetí prstem na celou obrazovku je zakázáno</string>
<string name="revanced_swipe_press_to_engage_title">Povolit gesto stisknutí pro přejetí</string>
<string name="revanced_swipe_press_to_engage_summary_on">Stisknutí pro přejetí je povoleno</string>
<string name="revanced_swipe_press_to_engage_summary_off">Stisknutí pro přejetí je zakázáno</string>
@@ -501,16 +502,19 @@ Tato funkce je dostupná pouze pro starší zařízení"</string>
<string name="revanced_swipe_lowest_value_enable_auto_brightness_title">Povolit gesto pro automatický jas</string>
<string name="revanced_swipe_lowest_value_enable_auto_brightness_summary_on">Přejetím dolů na nejnižší hodnotu gesta pro jas aktivujete automatický jas</string>
<string name="revanced_swipe_lowest_value_enable_auto_brightness_summary_off">Přejetím dolů na nejnižší hodnotu neaktivujete automatický jas</string>
<string name="revanced_swipe_lowest_value_enable_auto_brightness_overlay_text">Automat</string>
<string name="revanced_swipe_overlay_timeout_title">Timeout překrytí gesta</string>
<string name="revanced_swipe_overlay_timeout_summary">Doba v milisekundách, po kterou je překrytí viditelné</string>
<string name="revanced_swipe_text_overlay_size_title">Velikost textu překrytí gesta</string>
<string name="revanced_swipe_text_overlay_size_summary">Velikost textu pro překrytí gesta</string>
<string name="revanced_swipe_overlay_background_opacity_title">Průsvitnost pozadí překrytí tažením</string>
<string name="revanced_swipe_overlay_background_opacity_summary">Hodnota průsvitnosti mezi 0-100</string>
<string name="revanced_swipe_overlay_background_opacity_invalid_toast">Průsvitnost tažení musí být mezi 0-100</string>
<string name="revanced_swipe_threshold_title">Práh vynucení gesta</string>
<string name="revanced_swipe_threshold_summary">Velikost prahu pro provedení gesta</string>
<string name="revanced_swipe_show_circular_overlay_title">Zobrazit kruhovou překryvnou vrstvu</string>
<string name="revanced_swipe_show_circular_overlay_summary_on">Zobrazuje se kruhová překryvná vrstva</string>
<string name="revanced_swipe_show_circular_overlay_summary_off">Zobrazuje se vodorovná překryvná vrstva</string>
<string name="revanced_swipe_overlay_minimal_style_title">Povolit minimální styl</string>
<string name="revanced_swipe_overlay_minimal_style_summary_on">Minimální styl překrytí je povolen</string>
<string name="revanced_swipe_overlay_minimal_style_summary_off">Minimální styl překryvné vrstvy je zakázán</string>
<string name="revanced_swipe_change_video_title">Povolit přejetí prstem pro změnu videa</string>
<string name="revanced_swipe_change_video_summary_on">Přejetí prstem v režimu celé obrazovky změní video na další/předchozí</string>
<string name="revanced_swipe_change_video_summary_off">Přejetí prstem v režimu celé obrazovky nebude video měnit na další/předchozí</string>
@@ -523,6 +527,9 @@ Tato funkce je dostupná pouze pro starší zařízení"</string>
<patch id="layout.buttons.action.hideButtonsPatch">
<string name="revanced_hide_buttons_screen_title">Akční tlačítka</string>
<string name="revanced_hide_buttons_screen_summary">Skrýt nebo zobrazit tlačítka pod videi</string>
<string name="revanced_disable_like_subscribe_glow_title">Deaktivovat zvýraznění tlačítek Like a Subscribe</string>
<string name="revanced_disable_like_subscribe_glow_summary_on">Tlačítka Like a Subscribe po zmínce nebudou zvýrazněna</string>
<string name="revanced_disable_like_subscribe_glow_summary_off">Tlačítka Like a Subscribe po zmínce budou zvýrazněna</string>
<string name="revanced_hide_like_dislike_button_title">Skrýt Like a Dislike</string>
<string name="revanced_hide_like_dislike_button_summary_on">Tlačítka Like a Dislike jsou skryta</string>
<string name="revanced_hide_like_dislike_button_summary_off">Tlačítka Like a Dislike jsou zobrazena</string>
@@ -575,12 +582,18 @@ Tato funkce je dostupná pouze pro starší zařízení"</string>
<string name="revanced_hide_subscriptions_button_title">Skrýt Odběry</string>
<string name="revanced_hide_subscriptions_button_summary_on">Tlačítko Odběry je skryto</string>
<string name="revanced_hide_subscriptions_button_summary_off">Tlačítko Odběry je zobrazeno</string>
<string name="revanced_hide_notifications_button_title">Skrýt oznámení</string>
<string name="revanced_hide_notifications_button_summary_on">Tlačítko oznámení je skryto</string>
<string name="revanced_hide_notifications_button_summary_off">Tlačítko oznámení je zobrazeno</string>
<!-- 'Notifications' should be translated using the same localized wording YouTube displays the tab. -->
<string name="revanced_switch_create_with_notifications_button_title">Zaměnit Vytvořit s Oznámeními</string>
<string name="revanced_switch_create_with_notifications_button_summary_on">"Tlačítko Vytvořit se přepne s tlačítkem Oznámení
Poznámka: Povolení této funkce také vynuceně skryje video reklamy"</string>
<string name="revanced_switch_create_with_notifications_button_summary_off">Tlačítko Vytvořit není zaměněno s tlačítkem Oznámení</string>
<string name="revanced_switch_create_with_notifications_button_user_dialog_message">"Zakázáním tohoto nastavení také zakážete blokování reklam u položek Shorts.
Pokud změna tohoto nastavení nemá žádný účinek, zkuste přepnout do režimu anonymního prohlížení."</string>
<string name="revanced_hide_navigation_button_labels_title">Skrýt štítky navigačních tlačítek</string>
<string name="revanced_hide_navigation_button_labels_summary_on">Štítky jsou skryty</string>
<string name="revanced_hide_navigation_button_labels_summary_off">Štítky jsou zobrazeny</string>
@@ -795,10 +808,13 @@ Poznámka: Povolení této funkce také vynuceně skryje video reklamy"</string>
<string name="revanced_hide_shorts_navigation_bar_summary_on">Navigační panel je skrytý</string>
<string name="revanced_hide_shorts_navigation_bar_summary_off">Navigační panel je zobrazen</string>
</patch>
<patch id="layout.hide.suggestedvideoendscreen.disableSuggestedVideoEndScreenResourcePatch">
<string name="revanced_disable_suggested_video_end_screen_title">Zakázat koncovou obrazovku s doporučenými videi</string>
<string name="revanced_disable_suggested_video_end_screen_summary_on">Doporučená videa budou zakázána</string>
<string name="revanced_disable_suggested_video_end_screen_summary_off">Doporučená videa budou zobrazena</string>
<patch id="layout.hide.endscreensuggestion.hideEndScreenSuggestedVideoPatch">
<string name="revanced_end_screen_suggested_video_title">Skrýt navrhované video na konci obrazovky</string>
<string name="revanced_end_screen_suggested_video_summary_on">"Navrhované video na konci obrazovky je skryté, když je automatické přehrávání vypnuté.
Automatické přehrávání lze změnit v nastavení YouTube:
Nastavení → Přehrávání → Automatické přehrávání dalšího videa"</string>
<string name="revanced_end_screen_suggested_video_summary_off">Navrhované video na konci obrazovky se zobrazuje</string>
</patch>
<patch id="layout.hide.time.hideTimestampPatch">
<string name="revanced_hide_timestamp_title">Skrýt čas videa</string>
@@ -831,7 +847,7 @@ Poznámka: Povolení této funkce také vynuceně skryje video reklamy"</string>
<!-- Toast shown if network connection times out. Translations of this should not be longer than the original English or the text can be clipped and not entirely shown. -->
<string name="revanced_ryd_failure_connection_timeout">Nelíbí se se dočasně nedají použít (časový limit API)</string>
<string name="revanced_ryd_failure_connection_status_code">Nelíbí se se nedají použít (stav %d)</string>
<string name="revanced_ryd_failure_client_rate_limit_requested">Nelíbí se se nedají použít (limit klient API dosažen)</string>
<string name="revanced_ryd_failure_client_rate_limit_requested">Počty „Nelíbí se mi“ nejsou k dispozici (limit rozhraní API klienta)</string>
<string name="revanced_ryd_failure_generic">Nelíbí se se nedají použít (%s)</string>
<!-- Toast shown if the user enables RYD while a video is opened, and then tries to vote for the video. -->
<string name="revanced_ryd_failure_ryd_enabled_while_playing_video_then_user_voted">Načtěte video znovu, abyste hlasovali pomocí Return YouTube Dislike</string>
@@ -840,14 +856,14 @@ Poznámka: Povolení této funkce také vynuceně skryje video reklamy"</string>
<string name="revanced_ryd_enable_summary_on">Nelíbí se se zobrazují</string>
<string name="revanced_ryd_enable_summary_off">Nelíbí se se nezobrazují</string>
<string name="revanced_ryd_shorts_title">Zobrazit nelíbí se v Shorts</string>
<string name="revanced_ryd_shorts_summary_on">Nelíbí se se zobrazují v Shorts</string>
<string name="revanced_ryd_shorts_summary_on_disclaimer">"Nelíbí se zobrazují v Shorts
<string name="revanced_ryd_shorts_summary_on">Počty „Nelíbí se mi“ u Shorts jsou zobrazeny</string>
<string name="revanced_ryd_shorts_summary_on_disclaimer">"Počty „Nelíbí se mi“ u Shorts jsou zobrazeny
Omezení: Nelíbí se se nemusí zobrazit v režimu inkognito"</string>
<string name="revanced_ryd_shorts_summary_off">Nelíbí se se neskryvají v Shorts</string>
Omezení: Počty „Nelíbí se mi“ se nemusí zobrazit v anonymním režimu"</string>
<string name="revanced_ryd_shorts_summary_off">Počty „Nelíbí se mi“ u Shorts nejsou zobrazeny</string>
<string name="revanced_ryd_dislike_percentage_title">Nelíbí se v procentech</string>
<string name="revanced_ryd_dislike_percentage_summary_on">Nelíbí se se zobrazují v procentech</string>
<string name="revanced_ryd_dislike_percentage_summary_off">Nelíbí se se zobrazují jako číslo</string>
<string name="revanced_ryd_dislike_percentage_summary_on">Počty „Nelíbí se mi“ se zobrazují jako procento</string>
<string name="revanced_ryd_dislike_percentage_summary_off">Počty „Nelíbí se mi“ se zobrazují jako číslo</string>
<!-- Translations should use language similar to 'revanced_sb_enable_compact_skip_button' -->
<string name="revanced_ryd_compact_layout_title">Kompaktní tlačítko To se mi líbí</string>
<string name="revanced_ryd_compact_layout_summary_on">Tlačítko lajku stylizované pro minimální šířku</string>
@@ -909,20 +925,20 @@ Tato funkce funguje nejlépe s kvalitou videa 720p nebo nižší a při použit
<string name="revanced_sb_square_layout_sum_on">Tlačítka a ovládací prvky jsou čtvercové</string>
<string name="revanced_sb_square_layout_sum_off">Tlačítka a ovládací prvky jsou zaoblené</string>
<!-- Translations should use language similar to 'revanced_ryd_compact_layout_title' -->
<string name="revanced_sb_enable_compact_skip_button">Použít kompaktní tlačítko pro přeskočení</string>
<string name="revanced_sb_enable_compact_skip_button">Použít kompaktní tlačítko Přeskočit</string>
<string name="revanced_sb_enable_compact_skip_button_sum_on">Tlačítko pro přeskočení je stylizováno pro minimální šířku</string>
<string name="revanced_sb_enable_compact_skip_button_sum_off">Tlačítko pro přeskočení je stylizováno pro nejlepší vzhled</string>
<string name="revanced_sb_enable_auto_hide_skip_segment_button">Automaticky skrýt tlačítko pro přeskočení</string>
<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 pro přeskočení je zobrazeno pro celý segment</string>
<string name="revanced_sb_general_skiptoast">Zobrazit \"toast\", když se přeskočí automaticky</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ání</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_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_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 pro vytvoření nového segmentu</string>
<string name="revanced_sb_enable_create_segment">Zobrazit tlačítko Vytvořit nový segment</string>
<string name="revanced_sb_enable_create_segment_sum_on">Tlačítko pro vytvoření nového segmentu je zobrazeno</string>
<string name="revanced_sb_enable_create_segment_sum_off">Tlačítko pro vytvoření nového segmentu není zobrazeno</string>
<string name="revanced_sb_general_adjusting">Upravit krok nového segmentu</string>
@@ -1015,7 +1031,7 @@ Vaše ID uživatele je jako heslo a nikdy by nemělo být sdíleno."</string>
<string name="revanced_sb_skipped_multiple_segments">Přeskočeno více segmentů</string>
<string name="revanced_sb_skip_automatically">Automaticky přeskočit</string>
<string name="revanced_sb_skip_automatically_once">Přeskočit automaticky jednou</string>
<string name="revanced_sb_skip_showbutton">Zobrazit tlačítko \"Přeskočit\"</string>
<string name="revanced_sb_skip_showbutton">Zobrazit tlačítko Přeskočit</string>
<string name="revanced_sb_skip_seekbaronly">Zobrazit v posuvníku</string>
<string name="revanced_sb_skip_ignore">Zakázat</string>
<string name="revanced_sb_submit_failed_invalid">Nelze odeslat segment: %s</string>
@@ -1041,9 +1057,9 @@ Již existuje"</string>
<string name="revanced_sb_new_segment_disabled_category">Kategorie je v nastavení zakázána. Povolte kategorii, abyste ji mohli odeslat.</string>
<string name="revanced_sb_new_segment_title">Nový segment SponsorBlock</string>
<string name="revanced_sb_new_segment_mark_time_as_question">Nastavit %s jako začátek nebo konec nového segmentu?</string>
<string name="revanced_sb_new_segment_mark_start">začátek</string>
<string name="revanced_sb_new_segment_mark_end">konec</string>
<string name="revanced_sb_new_segment_now">nyní</string>
<string name="revanced_sb_new_segment_mark_start">Začátek</string>
<string name="revanced_sb_new_segment_mark_end">Konec</string>
<string name="revanced_sb_new_segment_now">Teď</string>
<string name="revanced_sb_new_segment_time_start">Čas, kdy segment začíná</string>
<string name="revanced_sb_new_segment_time_end">Čas, kdy segment končí</string>
<string name="revanced_sb_new_segment_confirm_title">Jsou časy správné?</string>
@@ -1064,7 +1080,7 @@ Jste připraveni k odeslání?"</string>
<string name="revanced_sb_new_segment_edit_by_hand_parse_error">Zadán neplatný čas</string>
<string name="revanced_sb_stats">Statistiky</string>
<!-- Shown in the settings preferences, and translations can be any text length. -->
<string name="revanced_sb_stats_connection_failure">Statistiky jsou dočasně nedostupné (API je vypnuté)</string>
<string name="revanced_sb_stats_connection_failure">Statistiky jsou dočasně nedostupné (server API je mimo provoz)</string>
<string name="revanced_sb_stats_loading">Načítání...</string>
<string name="revanced_sb_stats_sb_disabled">SponsorBlock je zakázán</string>
<string name="revanced_sb_stats_username">Vaše uživatelské jméno: &lt;b&gt;%s&lt;/b&gt;</string>
@@ -1287,8 +1303,8 @@ Klepnutím sem se dozvíte více o DeArrow"</string>
</patch>
<patch id="misc.announcements.announcementsPatch">
<string name="revanced_announcements_title">Zobrazit oznámení ReVanced</string>
<string name="revanced_announcements_summary_on">Oznámení se zobrazují při spuštění</string>
<string name="revanced_announcements_summary_off">Oznámení se nezobrazují při spuštění</string>
<string name="revanced_announcements_summary_on">Oznámení při spuštění jsou zobrazena</string>
<string name="revanced_announcements_summary_off">Oznámení při spuštění nejsou zobrazena</string>
<string name="revanced_announcements_enabled_summary">Zobrazit oznámení při spuštění</string>
<string name="revanced_announcements_connection_failed">Nepodařilo se připojit k poskytovateli oznámení</string>
<string name="revanced_announcements_dialog_dismiss">Zrušit</string>
@@ -1338,10 +1354,11 @@ Povolením této funkce lze odemknout vyšší kvality videa"</string>
<string name="revanced_disable_zoom_haptics_summary_off">Haptika je povolena</string>
</patch>
<patch id="video.audio.forceOriginalAudioPatch">
<string name="revanced_force_original_audio_title">Vynutit původní zvuk</string>
<string name="revanced_force_original_audio_summary_on">Používání původního zvuku</string>
<string name="revanced_force_original_audio_title">Vynutit původní jazyk zvuku</string>
<string name="revanced_force_original_audio_summary_on">Použít původní jazyk zvuku</string>
<string name="revanced_force_original_audio_summary_off">Používání výchozího zvuku</string>
<string name="revanced_force_original_audio_not_available">Pro použití této funkce změňte typ klienta streamu na iOS</string>
<!-- 'Spoof video streams' should be the same translation used for revanced_spoof_video_streams_screen_title -->
<string name="revanced_force_original_audio_not_available">Chcete-li používat tuto funkci, změňte možnost „Zfalšovat datové proudy videa“ na iOS TV</string>
</patch>
<patch id="video.quality.rememberVideoQualityPatch">
<!-- Translations should use the same text as revanced_custom_playback_speeds_auto -->
@@ -1404,8 +1421,6 @@ Povolením této funkce lze odemknout vyšší kvality videa"</string>
Přehrávání videa nemusí fungovat"</string>
<string name="revanced_spoof_video_streams_user_dialog_message">Vypnutí tohoto nastavení může způsobit problémy s přehráváním videa.</string>
<string name="revanced_spoof_video_streams_client_type_title">Výchozí klient</string>
<!-- 'no auth' means no authentication -->
<string name="revanced_spoof_video_streams_client_type_android_vr_no_auth">Android VR (bez ověření)</string>
<string name="revanced_spoof_video_streams_ios_force_avc_title">Vynucení kodeku iOS AVC (H.264)</string>
<string name="revanced_spoof_video_streams_ios_force_avc_summary_on">Kodek videa je vynucen na AVC (H.264)</string>
<string name="revanced_spoof_video_streams_ios_force_avc_summary_off">Kodek videa je určen automaticky</string>

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