Compare commits

...

59 Commits

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

### Features

* **Infinity for Reddit:** Add support for Infinity for Reddit Plus ([#4511](https://github.com/ReVanced/revanced-patches/issues/4511)) ([fb8dbb4](fb8dbb4723))
2025-02-28 08:33:53 +00:00
tillcash
fb8dbb4723 feat(Infinity for Reddit): Add support for Infinity for Reddit Plus (#4511) 2025-02-28 10:31:02 +02:00
github-actions[bot]
1e0d27e689 chore: Sync translations (#4517) 2025-02-28 10:30:30 +02:00
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
182 changed files with 7253 additions and 4664 deletions

View File

@@ -1,3 +1,171 @@
# [5.13.0-dev.18](https://github.com/ReVanced/revanced-patches/compare/v5.13.0-dev.17...v5.13.0-dev.18) (2025-02-28)
### Features
* **Infinity for Reddit:** Add support for Infinity for Reddit Plus ([#4511](https://github.com/ReVanced/revanced-patches/issues/4511)) ([d74732b](https://github.com/ReVanced/revanced-patches/commit/d74732b7596104321bde263201d95649e4bd0eee))
# [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) # [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() { public static Context getContext() {
if (context == null) { 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; 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, 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()); "revanced_spoof_video_streams_ios_force_avc_user_dialog_message", new SpoofiOSAvailability());
// Client type must be last spoof setting due to cyclic references. // 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) { public static void privateSetValue(@NonNull BooleanSetting setting, @NonNull Boolean newValue) {
setting.value = Objects.requireNonNull(newValue); setting.value = Objects.requireNonNull(newValue);
if (setting.isSetToDefault()) {
setting.removeFromPreferences();
}
} }
@Override @Override
@@ -65,10 +69,8 @@ public class BooleanSetting extends Setting<Boolean> {
} }
@Override @Override
public void save(@NonNull Boolean newValue) { public void saveToPreferences() {
// Must set before saving to preferences (otherwise importing fails to update UI correctly). preferences.saveBoolean(key, value);
value = Objects.requireNonNull(newValue);
preferences.saveBoolean(key, newValue);
} }
@NonNull @NonNull

View File

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

View File

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

View File

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

View File

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

View File

@@ -14,7 +14,6 @@ import java.util.*;
import static app.revanced.extension.shared.StringRef.str; import static app.revanced.extension.shared.StringRef.str;
@SuppressWarnings("unused")
public abstract class Setting<T> { public abstract class Setting<T> {
/** /**
@@ -288,6 +287,13 @@ public abstract class Setting<T> {
*/ */
public static void privateSetValueFromString(@NonNull Setting<?> setting, @NonNull String newValue) { public static void privateSetValueFromString(@NonNull Setting<?> setting, @NonNull String newValue) {
setting.setValueFromString(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. * 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 @NonNull
public abstract T get(); public abstract T get();

View File

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

View File

@@ -66,22 +66,6 @@ public enum ClientType {
true, true,
"Android Creator" "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( IOS_UNPLUGGED(
33, 33,
"IOS_UNPLUGGED", "IOS_UNPLUGGED",
@@ -112,6 +96,22 @@ public enum ClientType {
forceAVC() forceAVC()
? "iOS TV Force AVC" ? "iOS TV Force AVC"
: "iOS TV" : "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() { private static boolean forceAVC() {

View File

@@ -1,37 +1,60 @@
package app.revanced.extension.tiktok.spoof.sim; package app.revanced.extension.tiktok.spoof.sim;
import app.revanced.extension.shared.Logger; import app.revanced.extension.shared.Logger;
import app.revanced.extension.shared.Utils;
import app.revanced.extension.tiktok.settings.Settings; import app.revanced.extension.tiktok.settings.Settings;
@SuppressWarnings("unused") @SuppressWarnings("unused")
public class SpoofSimPatch { 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) { 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(); 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 iso;
} }
return value; return value;
} }
public static String getOperator(String 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(); String mcc_mnc = Settings.SIMSPOOF_MCCMNC.get();
Logger.printDebug(() -> "Spoofing sim MCC-MNC from: " + value + " to: " + mcc_mnc); Logger.printDebug(() -> "Spoofing sim MCC-MNC from: " + value + " to: " + mcc_mnc);
return mcc_mnc; return mcc_mnc;
} }
return value; return value;
} }
public static String getOperatorName(String 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(); 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 operator;
} }
return value; return value;
} }
} }

View File

@@ -5,8 +5,6 @@ dependencies {
} }
android { android {
compileSdk = 33 // TODO: Update Swipe controls code to allow updating this to the latest sdk.
defaultConfig { defaultConfig {
minSdk = 26 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.HOME, Settings.HIDE_HOME_BUTTON.get());
put(NavigationButton.CREATE, Settings.HIDE_CREATE_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.SHORTS, Settings.HIDE_SHORTS_BUTTON.get());
put(NavigationButton.SUBSCRIPTIONS, Settings.HIDE_SUBSCRIPTIONS_BUTTON.get()); put(NavigationButton.SUBSCRIPTIONS, Settings.HIDE_SUBSCRIPTIONS_BUTTON.get());
} }

View File

@@ -1,9 +1,6 @@
package app.revanced.extension.youtube.patches; package app.revanced.extension.youtube.patches;
import android.app.Activity; import android.app.Activity;
import android.os.Build;
import androidx.annotation.RequiresApi;
import java.lang.ref.WeakReference; import java.lang.ref.WeakReference;
import java.util.Objects; import java.util.Objects;
@@ -58,7 +55,6 @@ public class ShortsAutoplayPatch {
/** /**
* @return If the app is currently in background PiP mode. * @return If the app is currently in background PiP mode.
*/ */
@RequiresApi(api = Build.VERSION_CODES.N)
private static boolean isAppInBackgroundPiPMode() { private static boolean isAppInBackgroundPiPMode() {
Activity activity = mainActivityRef.get(); Activity activity = mainActivityRef.get();
return activity != null && activity.isInPictureInPictureMode(); return activity != null && activity.isInPictureInPictureMode();
@@ -80,7 +76,6 @@ public class ShortsAutoplayPatch {
/** /**
* Injection point. * Injection point.
*/ */
@RequiresApi(api = Build.VERSION_CODES.N)
public static Enum<?> changeShortsRepeatBehavior(Enum<?> original) { public static Enum<?> changeShortsRepeatBehavior(Enum<?> original) {
try { try {
final boolean autoplay; 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.Activity;
import android.app.AlertDialog; import android.app.AlertDialog;
import android.os.Build;
import android.text.Html; import android.text.Html;
import android.text.method.LinkMovementMethod; import android.text.method.LinkMovementMethod;
import android.widget.TextView; import android.widget.TextView;
import androidx.annotation.RequiresApi;
import org.json.JSONArray; import org.json.JSONArray;
import java.io.IOException; import java.io.IOException;
@@ -31,7 +28,6 @@ public final class AnnouncementsPatch {
private AnnouncementsPatch() { private AnnouncementsPatch() {
} }
@RequiresApi(api = Build.VERSION_CODES.O)
private static boolean isLatestAlready() throws IOException { private static boolean isLatestAlready() throws IOException {
HttpURLConnection connection = HttpURLConnection connection =
AnnouncementsRoutes.getAnnouncementsConnectionFromRoute(GET_LATEST_ANNOUNCEMENT_IDS); AnnouncementsRoutes.getAnnouncementsConnectionFromRoute(GET_LATEST_ANNOUNCEMENT_IDS);
@@ -70,7 +66,6 @@ public final class AnnouncementsPatch {
return Settings.ANNOUNCEMENT_LAST_ID.get() == id; return Settings.ANNOUNCEMENT_LAST_ID.get() == id;
} }
@RequiresApi(api = Build.VERSION_CODES.O)
public static void showAnnouncement(final Activity context) { public static void showAnnouncement(final Activity context) {
if (!Settings.ANNOUNCEMENTS.get()) return; if (!Settings.ANNOUNCEMENTS.get()) return;

View File

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

View File

@@ -1,9 +1,6 @@
package app.revanced.extension.youtube.patches.components; package app.revanced.extension.youtube.patches.components;
import android.os.Build;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.annotation.RequiresApi;
import java.util.*; import java.util.*;
import java.util.function.Consumer; import java.util.function.Consumer;
@@ -44,13 +41,11 @@ abstract class FilterGroupList<V, T extends FilterGroup<V>> implements Iterable<
return filterGroups.iterator(); return filterGroups.iterator();
} }
@RequiresApi(api = Build.VERSION_CODES.N)
@Override @Override
public void forEach(@NonNull Consumer<? super T> action) { public void forEach(@NonNull Consumer<? super T> action) {
filterGroups.forEach(action); filterGroups.forEach(action);
} }
@RequiresApi(api = Build.VERSION_CODES.N)
@NonNull @NonNull
@Override @Override
public Spliterator<T> spliterator() { 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 app.revanced.extension.youtube.shared.NavigationBar.NavigationButton;
import static java.lang.Character.UnicodeBlock.*; import static java.lang.Character.UnicodeBlock.*;
import android.os.Build;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import androidx.annotation.RequiresApi;
import java.nio.charset.StandardCharsets; import java.nio.charset.StandardCharsets;
import java.util.LinkedHashMap; 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. * - When using whole word syntax, some keywords may need additional pluralized variations.
*/ */
@SuppressWarnings("unused") @SuppressWarnings("unused")
@RequiresApi(api = Build.VERSION_CODES.N)
final class KeywordContentFilter extends Filter { 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 static app.revanced.extension.youtube.shared.NavigationBar.NavigationButton;
import android.graphics.drawable.Drawable; import android.graphics.drawable.Drawable;
import android.os.Build;
import android.view.View; import android.view.View;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import androidx.annotation.RequiresApi;
import app.revanced.extension.shared.Logger; import app.revanced.extension.shared.Logger;
import app.revanced.extension.shared.Utils; import app.revanced.extension.shared.Utils;
@@ -18,10 +16,6 @@ import app.revanced.extension.youtube.shared.PlayerType;
@SuppressWarnings("unused") @SuppressWarnings("unused")
public final class LayoutComponentsFilter extends Filter { 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( private static final StringTrieSearch mixPlaylistsExceptions = new StringTrieSearch(
"V.ED", // Playlist browse id. "V.ED", // Playlist browse id.
"java.lang.ref.WeakReference" "java.lang.ref.WeakReference"
@@ -38,16 +32,15 @@ public final class LayoutComponentsFilter extends Filter {
private final StringTrieSearch exceptions = new StringTrieSearch(); private final StringTrieSearch exceptions = new StringTrieSearch();
private final StringFilterGroup inFeedSurvey; private final StringFilterGroup inFeedSurvey;
private final StringFilterGroup notifyMe; private final StringFilterGroup notifyMe;
private final StringFilterGroup singleItemInformationPanel;
private final StringFilterGroup expandableMetadata; private final StringFilterGroup expandableMetadata;
private final ByteArrayFilterGroup searchResultRecommendations; private final ByteArrayFilterGroup searchResultRecommendations;
private final StringFilterGroup searchResultVideo; private final StringFilterGroup searchResultVideo;
private final StringFilterGroup compactChannelBarInner; private final StringFilterGroup compactChannelBarInner;
private final StringFilterGroup compactChannelBarInnerButton; private final StringFilterGroup compactChannelBarInnerButton;
private final ByteArrayFilterGroup joinMembershipButton; private final ByteArrayFilterGroup joinMembershipButton;
private final StringFilterGroup likeSubscribeGlow;
private final StringFilterGroup horizontalShelves; private final StringFilterGroup horizontalShelves;
@RequiresApi(api = Build.VERSION_CODES.N)
public LayoutComponentsFilter() { public LayoutComponentsFilter() {
exceptions.addPatterns( exceptions.addPatterns(
"home_video_with_context", "home_video_with_context",
@@ -105,6 +98,11 @@ public final class LayoutComponentsFilter extends Filter {
"compact_banner" "compact_banner"
); );
final var subscriptionsChipBar = new StringFilterGroup(
Settings.HIDE_FILTER_BAR_FEED_IN_FEED,
"subscriptions_chip_bar"
);
inFeedSurvey = new StringFilterGroup( inFeedSurvey = new StringFilterGroup(
Settings.HIDE_FEED_SURVEY, Settings.HIDE_FEED_SURVEY,
"in_feed_survey", "in_feed_survey",
@@ -123,8 +121,12 @@ public final class LayoutComponentsFilter extends Filter {
); );
final var infoPanel = new StringFilterGroup( final var infoPanel = new StringFilterGroup(
Settings.HIDE_HIDE_INFO_PANELS, Settings.HIDE_INFO_PANELS,
"publisher_transparency_panel", "publisher_transparency_panel"
);
singleItemInformationPanel = new StringFilterGroup(
Settings.HIDE_INFO_PANELS,
"single_item_information_panel" "single_item_information_panel"
); );
@@ -217,10 +219,6 @@ public final class LayoutComponentsFilter extends Filter {
"sponsorships" "sponsorships"
); );
likeSubscribeGlow = new StringFilterGroup(
Settings.DISABLE_LIKE_SUBSCRIBE_GLOW,
"animated_button_border.eml"
);
final var channelWatermark = new StringFilterGroup( final var channelWatermark = new StringFilterGroup(
Settings.HIDE_VIDEO_CHANNEL_WATERMARK, Settings.HIDE_VIDEO_CHANNEL_WATERMARK,
@@ -254,7 +252,6 @@ public final class LayoutComponentsFilter extends Filter {
expandableMetadata, expandableMetadata,
inFeedSurvey, inFeedSurvey,
notifyMe, notifyMe,
likeSubscribeGlow,
compactChannelBar, compactChannelBar,
communityPosts, communityPosts,
paidPromotion, paidPromotion,
@@ -269,8 +266,10 @@ public final class LayoutComponentsFilter extends Filter {
compactChannelBarInner, compactChannelBarInner,
medicalPanel, medicalPanel,
infoPanel, infoPanel,
singleItemInformationPanel,
emergencyBox, emergencyBox,
subscribersCommunityGuidelines, subscribersCommunityGuidelines,
subscriptionsChipBar,
channelGuidelines, channelGuidelines,
audioTrackButton, audioTrackButton,
artistCard, artistCard,
@@ -285,6 +284,19 @@ public final class LayoutComponentsFilter extends Filter {
@Override @Override
boolean isFiltered(@Nullable String identifier, String path, byte[] protobufBufferArray, boolean isFiltered(@Nullable String identifier, String path, byte[] protobufBufferArray,
StringFilterGroup matchedGroup, FilterContentType contentType, int contentIndex) { 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 (matchedGroup == searchResultVideo) {
if (searchResultRecommendations.check(protobufBufferArray).isFiltered()) { if (searchResultRecommendations.check(protobufBufferArray).isFiltered()) {
return super.isFiltered(identifier, path, protobufBufferArray, matchedGroup, contentType, contentIndex); return super.isFiltered(identifier, path, protobufBufferArray, matchedGroup, contentType, contentIndex);
@@ -292,15 +304,6 @@ public final class LayoutComponentsFilter extends Filter {
return false; 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. // The groups are excluded from the filter due to the exceptions list below.
// Filter them separately here. // Filter them separately here.
if (matchedGroup == notifyMe || matchedGroup == inFeedSurvey || matchedGroup == expandableMetadata) if (matchedGroup == notifyMe || matchedGroup == inFeedSurvey || matchedGroup == expandableMetadata)

View File

@@ -1,9 +1,6 @@
package app.revanced.extension.youtube.patches.components; package app.revanced.extension.youtube.patches.components;
import android.os.Build;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import androidx.annotation.RequiresApi;
import app.revanced.extension.youtube.settings.Settings; import app.revanced.extension.youtube.settings.Settings;
import app.revanced.extension.youtube.shared.PlayerType; import app.revanced.extension.youtube.shared.PlayerType;
@@ -16,7 +13,6 @@ public class PlayerFlyoutMenuItemsFilter extends Filter {
private final ByteArrayFilterGroup exception; private final ByteArrayFilterGroup exception;
private final StringFilterGroup videoQualityMenuFooter; private final StringFilterGroup videoQualityMenuFooter;
@RequiresApi(api = Build.VERSION_CODES.N)
public PlayerFlyoutMenuItemsFilter() { public PlayerFlyoutMenuItemsFilter() {
exception = new ByteArrayFilterGroup( exception = new ByteArrayFilterGroup(
// Whitelist Quality menu item when "Hide Additional settings menu" is enabled // 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) { 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) { 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); dislikeCountFormatter = CompactDecimalFormat.getInstance(locale, CompactDecimalFormat.CompactStyle.SHORT);
// YouTube disregards locale specific number characters // 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 // 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 "۱,۲۳٤" // so languages such as Arabic will show "1.234" instead of the native "۱,۲۳٤"
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
@@ -375,15 +378,15 @@ public class ReturnYouTubeDislike {
private static String formatDislikePercentage(float dislikePercentage) { private static String formatDislikePercentage(float dislikePercentage) {
synchronized (ReturnYouTubeDislike.class) { // Number formatter is not thread safe, must synchronize. synchronized (ReturnYouTubeDislike.class) { // Number formatter is not thread safe, must synchronize.
if (dislikePercentageFormatter == null) { if (dislikePercentageFormatter == null) {
Locale locale = Objects.requireNonNull(Utils.getContext()).getResources().getConfiguration().locale; Locale locale = Locale.getDefault();
dislikePercentageFormatter = NumberFormat.getPercentInstance(locale); dislikePercentageFormatter = NumberFormat.getPercentInstance(locale);
// Want to set the digit strings, and the simplest way is to cast to the implementation NumberFormat returns. // 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 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P
&& dislikePercentageFormatter instanceof DecimalFormat) { && dislikePercentageFormatter instanceof DecimalFormat decimalFormatter) {
DecimalFormatSymbols symbols = DecimalFormatSymbols.getInstance(locale); DecimalFormatSymbols symbols = DecimalFormatSymbols.getInstance(locale);
symbols.setDigitStrings(DecimalFormatSymbols.getInstance(Locale.ENGLISH).getDigitStrings()); 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.annotation.SuppressLint;
import android.app.Activity; import android.app.Activity;
import android.content.Context; import android.content.Context;
import android.os.Build;
import android.preference.PreferenceFragment; import android.preference.PreferenceFragment;
import android.util.TypedValue; import android.util.TypedValue;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.widget.TextView; import android.widget.TextView;
import android.widget.Toolbar; import android.widget.Toolbar;
import androidx.annotation.RequiresApi;
import java.util.Objects; import java.util.Objects;
import app.revanced.extension.shared.Logger; 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.shared.settings.BaseSettings;
import app.revanced.extension.youtube.ThemeHelper; import app.revanced.extension.youtube.ThemeHelper;
import app.revanced.extension.youtube.patches.VersionCheckPatch; 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.ReVancedPreferenceFragment;
import app.revanced.extension.youtube.settings.preference.ReturnYouTubeDislikePreferenceFragment; import app.revanced.extension.youtube.settings.preference.ReturnYouTubeDislikePreferenceFragment;
import app.revanced.extension.youtube.settings.preference.SponsorBlockPreferenceFragment; import app.revanced.extension.youtube.settings.preference.SponsorBlockPreferenceFragment;
@@ -66,6 +64,10 @@ public class LicenseActivityHook {
if (Settings.RESTORE_OLD_SETTINGS_MENUS.get()) { if (Settings.RESTORE_OLD_SETTINGS_MENUS.get()) {
return false; 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 // 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. // half broken appearance because all the preference icons may not be available yet.
@@ -79,7 +81,6 @@ public class LicenseActivityHook {
* <p> * <p>
* Hooks LicenseActivity#onCreate in order to inject our own fragment. * Hooks LicenseActivity#onCreate in order to inject our own fragment.
*/ */
@RequiresApi(api = Build.VERSION_CODES.N)
public static void initialize(Activity licenseActivity) { public static void initialize(Activity licenseActivity) {
try { try {
ThemeHelper.setActivityTheme(licenseActivity); ThemeHelper.setActivityTheme(licenseActivity);
@@ -119,15 +120,13 @@ public class LicenseActivityHook {
} }
} }
@RequiresApi(api = Build.VERSION_CODES.N)
@SuppressLint("UseCompatLoadingForDrawables") @SuppressLint("UseCompatLoadingForDrawables")
private static void createToolbar(Activity activity, String toolbarTitleResourceName) { private static void createToolbar(Activity activity, String toolbarTitleResourceName) {
// Replace dummy placeholder toolbar. // Replace dummy placeholder toolbar.
// This is required to fix submenu title alignment issue with Android ASOP 15+ // This is required to fix submenu title alignment issue with Android ASOP 15+
ViewGroup toolBarParent = activity.findViewById( ViewGroup toolBarParent = activity.findViewById(
getResourceIdentifier("revanced_toolbar_parent", "id")); getResourceIdentifier("revanced_toolbar_parent", "id"));
ViewGroup dummyToolbar = toolBarParent.findViewById(getResourceIdentifier( ViewGroup dummyToolbar = Utils.getChildViewByResourceName(toolBarParent,"revanced_toolbar");
"revanced_toolbar", "id"));
toolbarLayoutParams = dummyToolbar.getLayoutParams(); toolbarLayoutParams = dummyToolbar.getLayoutParams();
toolBarParent.removeView(dummyToolbar); 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 = 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 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_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_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 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_AUTOPLAY_BUTTON = new BooleanSetting("revanced_hide_autoplay_button", TRUE, true);
public static final BooleanSetting HIDE_CAPTIONS_BUTTON = new BooleanSetting("revanced_hide_captions_button", FALSE); public static final BooleanSetting HIDE_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_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_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_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_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_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_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); 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_PODCAST_SECTION = new BooleanSetting("revanced_hide_podcast_section", TRUE);
public static final BooleanSetting HIDE_TRANSCRIPT_SECTION = new BooleanSetting("revanced_hide_transcript_section", TRUE); public static final BooleanSetting HIDE_TRANSCRIPT_SECTION = new BooleanSetting("revanced_hide_transcript_section", TRUE);
// Action buttons // 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_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_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); 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_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_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 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_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_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); 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()); "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 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); 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_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)); 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 // Swipe controls
public static final BooleanSetting SWIPE_CHANGE_VIDEO = new BooleanSetting("revanced_swipe_change_video", FALSE, true); public static final BooleanSetting SWIPE_CHANGE_VIDEO = new BooleanSetting("revanced_swipe_change_video", FALSE, true);
public static final BooleanSetting SWIPE_BRIGHTNESS = new BooleanSetting("revanced_swipe_brightness", FALSE); public static final BooleanSetting SWIPE_BRIGHTNESS = new BooleanSetting("revanced_swipe_brightness", FALSE, true);
public static final BooleanSetting SWIPE_VOLUME = new BooleanSetting("revanced_swipe_volume", FALSE); 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, public static final BooleanSetting SWIPE_PRESS_TO_ENGAGE = new BooleanSetting("revanced_swipe_press_to_engage", FALSE, true,
parentsAny(SWIPE_BRIGHTNESS, SWIPE_VOLUME)); parentsAny(SWIPE_BRIGHTNESS, SWIPE_VOLUME));
public static final BooleanSetting SWIPE_HAPTIC_FEEDBACK = new BooleanSetting("revanced_swipe_haptic_feedback", TRUE, true, public static final BooleanSetting SWIPE_HAPTIC_FEEDBACK = new BooleanSetting("revanced_swipe_haptic_feedback", TRUE, true,
parentsAny(SWIPE_BRIGHTNESS, SWIPE_VOLUME)); parentsAny(SWIPE_BRIGHTNESS, SWIPE_VOLUME));
public static final IntegerSetting SWIPE_MAGNITUDE_THRESHOLD = new IntegerSetting("revanced_swipe_threshold", 30, true, public static final IntegerSetting SWIPE_MAGNITUDE_THRESHOLD = new IntegerSetting("revanced_swipe_threshold", 30, true,
parentsAny(SWIPE_BRIGHTNESS, SWIPE_VOLUME)); 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)); parentsAny(SWIPE_BRIGHTNESS, SWIPE_VOLUME));
private static final IntegerSetting DEPRECATED_SWIPE_OVERLAY_BACKGROUND_ALPHA = new IntegerSetting("revanced_swipe_overlay_background_alpha", 127); public static final BooleanSetting SWIPE_OVERLAY_MINIMAL_STYLE = new BooleanSetting("revanced_swipe_overlay_minimal_style", FALSE, true,
parentsAny(SWIPE_BRIGHTNESS, SWIPE_VOLUME));
// Debugging public static final IntegerSetting SWIPE_OVERLAY_OPACITY = new IntegerSetting("revanced_swipe_overlay_background_opacity", 60, true,
public static final IntegerSetting SWIPE_OVERLAY_TEXT_SIZE = new IntegerSetting("revanced_swipe_text_overlay_size", 22, true,
parentsAny(SWIPE_BRIGHTNESS, SWIPE_VOLUME)); parentsAny(SWIPE_BRIGHTNESS, SWIPE_VOLUME));
public static final LongSetting SWIPE_OVERLAY_TIMEOUT = new LongSetting("revanced_swipe_overlay_timeout", 500L, true, public static final LongSetting SWIPE_OVERLAY_TIMEOUT = new LongSetting("revanced_swipe_overlay_timeout", 500L, true,
parentsAny(SWIPE_BRIGHTNESS, SWIPE_VOLUME)); 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"); public static final StringSetting SB_CATEGORY_UNSUBMITTED_COLOR = new StringSetting("sb_unsubmitted_color", "#FFFFFF");
// Deprecated migrations // 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_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 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 { static {
// region Migration // 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); migrateOldSettingToNew(DEPRECATED_HIDE_PLAYER_FLYOUT_VIDEO_QUALITY_FOOTER, HIDE_PLAYER_FLYOUT_VIDEO_QUALITY_FOOTER);
// Old spoof versions that no longer work reliably. migrateOldSettingToNew(DEPRECATED_DISABLE_SUGGESTED_VIDEO_END_SCREEN, HIDE_END_SCREEN_SUGGESTED_VIDEO);
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();
}
// Migrate renamed enum. // Migrate renamed enum.
//noinspection deprecation //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 static android.text.Html.FROM_HTML_MODE_COMPACT;
import android.content.Context; import android.content.Context;
import android.os.Build;
import android.preference.Preference; import android.preference.Preference;
import android.text.Html; import android.text.Html;
import android.util.AttributeSet; import android.util.AttributeSet;
import androidx.annotation.RequiresApi;
/** /**
* Allows using basic html for the summary text. * Allows using basic html for the summary text.
*/ */
@SuppressWarnings({"unused", "deprecation"}) @SuppressWarnings({"unused", "deprecation"})
@RequiresApi(api = Build.VERSION_CODES.O)
public class HtmlPreference extends Preference { public class HtmlPreference extends Preference {
{ {
setSummary(Html.fromHtml(getSummary().toString(), FROM_HTML_MODE_COMPACT)); 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.TextView;
import android.widget.Toolbar; import android.widget.Toolbar;
import androidx.annotation.RequiresApi;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
@@ -98,7 +96,6 @@ public class ReVancedPreferenceFragment extends AbstractPreferenceFragment {
listPreference.setEntryValues(sortedEntryValues); listPreference.setEntryValues(sortedEntryValues);
} }
@RequiresApi(api = Build.VERSION_CODES.O)
@Override @Override
protected void initialize() { protected void initialize() {
super.initialize(); super.initialize();

View File

@@ -85,7 +85,7 @@ public class SpoofStreamingDataSideEffectsPreference extends Preference {
String summary = str(key + "_summary"); String summary = str(key + "_summary");
// Android VR supports AV1 but all other clients do not. // 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"); 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 static app.revanced.extension.youtube.shared.NavigationBar.NavigationButton.CREATE;
import android.app.Activity; import android.app.Activity;
import android.os.Build;
import android.view.View; import android.view.View;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import androidx.annotation.RequiresApi;
import java.lang.ref.WeakReference; import java.lang.ref.WeakReference;
import java.util.Arrays; import java.util.Arrays;
@@ -257,7 +255,6 @@ public final class NavigationBar {
* Injection point. * Injection point.
* Fixes missing drawable. * Fixes missing drawable.
*/ */
@RequiresApi(api = Build.VERSION_CODES.N)
@SuppressWarnings({"unchecked", "rawtypes"}) @SuppressWarnings({"unchecked", "rawtypes"})
public static void setCairoNotificationFilledIcon(EnumMap enumMap, Enum tabActivityCairo) { public static void setCairoNotificationFilledIcon(EnumMap enumMap, Enum tabActivityCairo) {
if (fillBellCairoBlack != 0) { if (fillBellCairoBlack != 0) {

View File

@@ -21,9 +21,6 @@ enum class PlayerType {
/** /**
* A regular video is minimized. * 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_MINIMIZED,
WATCH_WHILE_MAXIMIZED, WATCH_WHILE_MAXIMIZED,
@@ -56,8 +53,7 @@ enum class PlayerType {
val newType = nameToPlayerType[enumName] val newType = nameToPlayerType[enumName]
if (newType == null) { if (newType == null) {
Logger.printException { "Unknown PlayerType encountered: $enumName" } Logger.printException { "Unknown PlayerType encountered: $enumName" }
} else if (current != newType) { } else {
Logger.printDebug { "PlayerType changed to: $newType" }
current = newType current = newType
} }
} }
@@ -68,9 +64,13 @@ enum class PlayerType {
@JvmStatic @JvmStatic
var current var current
get() = currentPlayerType get() = currentPlayerType
private set(value) { private set(type) {
currentPlayerType = value if (currentPlayerType != type) {
onChange(currentPlayerType) Logger.printDebug { "Changed to: $type" }
currentPlayerType = type
onChange(type)
}
} }
@Volatile // Read/write from different threads. @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 // but if buttons are showing when the end of the video is reached then they need
// to be forcefully hidden // to be forcefully hidden
if (!Settings.AUTO_REPEAT.get()) { if (!Settings.AUTO_REPEAT.get()) {
CreateSegmentButtonController.hide(); CreateSegmentButton.hideControls();
VotingButtonController.hide(); VotingButton.hideControls();
} }
} catch (Exception ex) { } catch (Exception ex) {
Logger.printException(() -> "endOfVideoReached failure", 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) * should swipe controls be enabled? (global setting)
*/ */
val enableSwipeControls: Boolean val enableSwipeControls: Boolean
get() = isFullscreenVideo && (enableVolumeControls || enableBrightnessControl) get() = (enableVolumeControls || enableBrightnessControl) && isFullscreenVideo
/** /**
* should swipe controls for volume be enabled? * should swipe controls for volume be enabled?
*/ */
val enableVolumeControls: Boolean val enableVolumeControls = Settings.SWIPE_VOLUME.get()
get() = Settings.SWIPE_VOLUME.get()
/** /**
* should swipe controls for volume be enabled? * should swipe controls for volume be enabled?
*/ */
val enableBrightnessControl: Boolean val enableBrightnessControl = Settings.SWIPE_BRIGHTNESS.get()
get() = Settings.SWIPE_BRIGHTNESS.get()
/** /**
* is the video player currently in fullscreen mode? * is the video player currently in fullscreen mode?
@@ -46,7 +44,7 @@ class SwipeControlsConfigurationProvider(
* should volume key controls be overwritten? (global setting) * should volume key controls be overwritten? (global setting)
*/ */
val overwriteVolumeKeyControls: Boolean val overwriteVolumeKeyControls: Boolean
get() = isFullscreenVideo && enableVolumeControls get() = enableVolumeControls && isFullscreenVideo
//endregion //endregion
//region gesture adjustments //region gesture adjustments
@@ -65,7 +63,6 @@ class SwipeControlsConfigurationProvider(
//endregion //endregion
//region overlay adjustments //region overlay adjustments
/** /**
* should the overlay enable haptic feedback? * should the overlay enable haptic feedback?
*/ */
@@ -79,15 +76,10 @@ class SwipeControlsConfigurationProvider(
get() = Settings.SWIPE_OVERLAY_TIMEOUT.get() 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 val overlayBackgroundOpacity: Int
get() = Settings.SWIPE_OVERLAY_TEXT_SIZE.get()
/**
* get the background color for text on the overlay, as a color int
*/
val overlayTextBackgroundColor: Int
get() { get() {
var opacity = Settings.SWIPE_OVERLAY_OPACITY.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 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 //endregion
//region behaviour //region behaviour

View File

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

View File

@@ -1,138 +1,145 @@
package app.revanced.extension.youtube.swipecontrols.views package app.revanced.extension.youtube.swipecontrols.views
import android.content.Context 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.Drawable
import android.graphics.drawable.GradientDrawable
import android.os.Handler import android.os.Handler
import android.os.Looper import android.os.Looper
import android.util.TypedValue import android.util.AttributeSet
import android.view.HapticFeedbackConstants import android.view.HapticFeedbackConstants
import android.view.View import android.view.View
import android.view.ViewGroup
import android.widget.RelativeLayout 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.shared.Utils
import app.revanced.extension.youtube.swipecontrols.SwipeControlsConfigurationProvider import app.revanced.extension.youtube.swipecontrols.SwipeControlsConfigurationProvider
import app.revanced.extension.youtube.swipecontrols.misc.SwipeControlsOverlay import app.revanced.extension.youtube.swipecontrols.misc.SwipeControlsOverlay
import app.revanced.extension.youtube.swipecontrols.misc.applyDimension import kotlin.math.min
import kotlin.math.round import kotlin.math.round
/** /**
* main overlay layout for volume and brightness swipe controls * Main overlay layout for displaying volume and brightness level with both circular and horizontal progress bars.
*
* @param context context to create in
*/ */
class SwipeControlsOverlayLayout( class SwipeControlsOverlayLayout(
context: Context, context: Context,
private val config: SwipeControlsConfigurationProvider, private val config: SwipeControlsConfigurationProvider,
) : RelativeLayout(context), SwipeControlsOverlay { ) : RelativeLayout(context), SwipeControlsOverlay {
/**
* DO NOT use this, for tools only
*/
constructor(context: Context) : this(context, SwipeControlsConfigurationProvider(context)) constructor(context: Context) : this(context, SwipeControlsConfigurationProvider(context))
private val feedbackTextView: TextView // Drawable icons for brightness and volume
private val autoBrightnessIcon: Drawable private val autoBrightnessIcon: Drawable = getDrawable("revanced_ic_sc_brightness_auto")
private val manualBrightnessIcon: Drawable private val lowBrightnessIcon: Drawable = getDrawable("revanced_ic_sc_brightness_low")
private val mutedVolumeIcon: Drawable private val mediumBrightnessIcon: Drawable = getDrawable("revanced_ic_sc_brightness_medium")
private val normalVolumeIcon: Drawable 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 { // Function to retrieve drawable resources by name
return resources.getDrawable( private fun getDrawable(name: String): Drawable {
val drawable = resources.getDrawable(
Utils.getResourceIdentifier(context, name, "drawable"), Utils.getResourceIdentifier(context, name, "drawable"),
context.theme, context.theme,
).apply { )
setTint(config.overlayForegroundColor) drawable.setTint(config.overlayTextColor)
setBounds( return drawable
0,
0,
width,
height,
)
}
} }
// Initialize progress bars
private val circularProgressView: CircularProgressView
private val horizontalProgressView: HorizontalProgressView
init { init {
// init views // Initialize circular progress bar
val feedbackTextViewPadding = 2.applyDimension(context, TypedValue.COMPLEX_UNIT_DIP) circularProgressView = CircularProgressView(
val compoundIconPadding = 4.applyDimension(context, TypedValue.COMPLEX_UNIT_DIP) context,
feedbackTextView = TextView(context).apply { config.overlayBackgroundOpacity,
layoutParams = LayoutParams( config.overlayShowOverlayMinimalStyle,
LayoutParams.WRAP_CONTENT, config.overlayProgressColor,
LayoutParams.WRAP_CONTENT, config.overlayFillBackgroundPaint,
).apply { config.overlayTextColor
).apply {
layoutParams = LayoutParams(300, 300).apply {
addRule(CENTER_IN_PARENT, TRUE) addRule(CENTER_IN_PARENT, TRUE)
setPadding(
feedbackTextViewPadding,
feedbackTextViewPadding,
feedbackTextViewPadding,
feedbackTextViewPadding,
)
} }
background = GradientDrawable().apply { visibility = GONE // Initially hidden
cornerRadius = 8f
setColor(config.overlayTextBackgroundColor)
}
setTextColor(config.overlayForegroundColor)
setTextSize(TypedValue.COMPLEX_UNIT_SP, config.overlayTextSize.toFloat())
compoundDrawablePadding = compoundIconPadding
visibility = GONE
} }
addView(feedbackTextView) addView(circularProgressView)
// get icons scaled, assuming square icons // Initialize horizontal progress bar
val iconHeight = round(feedbackTextView.lineHeight * .8).toInt() val screenWidth = resources.displayMetrics.widthPixels
autoBrightnessIcon = getDrawable("revanced_ic_sc_brightness_auto", iconHeight, iconHeight) val layoutWidth = (screenWidth * 2 / 3).toInt() // 2/3 of screen width
manualBrightnessIcon = getDrawable("revanced_ic_sc_brightness_manual", iconHeight, iconHeight) horizontalProgressView = HorizontalProgressView(
mutedVolumeIcon = getDrawable("revanced_ic_sc_volume_mute", iconHeight, iconHeight) context,
normalVolumeIcon = getDrawable("revanced_ic_sc_volume_normal", iconHeight, iconHeight) 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 feedbackHideHandler = Handler(Looper.getMainLooper())
private val feedbackHideCallback = Runnable { private val feedbackHideCallback = Runnable {
feedbackTextView.visibility = GONE circularProgressView.visibility = GONE
horizontalProgressView.visibility = GONE
} }
/** /**
* show the feedback view for a given time * Displays the progress bar with the appropriate value, icon, and type (brightness or volume).
*
* @param message the message to show
* @param icon the icon to use
*/ */
private fun showFeedbackView(message: String, icon: Drawable) { private fun showFeedbackView(value: String, progress: Int, max: Int, icon: Drawable, isBrightness: Boolean) {
feedbackHideHandler.removeCallbacks(feedbackHideCallback) feedbackHideHandler.removeCallbacks(feedbackHideCallback)
feedbackHideHandler.postDelayed(feedbackHideCallback, config.overlayShowTimeoutMillis) feedbackHideHandler.postDelayed(feedbackHideCallback, config.overlayShowTimeoutMillis)
feedbackTextView.apply {
text = message val viewToShow = if (config.isCircularProgressBar) circularProgressView else horizontalProgressView
setCompoundDrawablesRelative( viewToShow.apply {
icon, setProgress(progress, max, value, isBrightness)
null, this.icon = icon
null,
null,
)
visibility = VISIBLE visibility = VISIBLE
} }
} }
// Handle volume change
override fun onVolumeChanged(newVolume: Int, maximumVolume: Int) { override fun onVolumeChanged(newVolume: Int, maximumVolume: Int) {
showFeedbackView( val volumePercentage = (newVolume.toFloat() / maximumVolume) * 100
"$newVolume", val icon = when {
if (newVolume > 0) normalVolumeIcon else mutedVolumeIcon, 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) { override fun onBrightnessChanged(brightness: Double) {
if (config.shouldLowestValueEnableAutoBrightness && brightness <= 0) { if (config.shouldLowestValueEnableAutoBrightness && brightness <= 0) {
showFeedbackView( showFeedbackView("Auto", 0, 100, autoBrightnessIcon, isBrightness = true)
str("revanced_swipe_lowest_value_enable_auto_brightness_overlay_text"), } else {
autoBrightnessIcon, val brightnessValue = round(brightness).toInt()
) val icon = when {
} else if (brightness >= 0) { brightnessValue < 25 -> lowBrightnessIcon
showFeedbackView("${round(brightness).toInt()}%", manualBrightnessIcon) brightnessValue < 50 -> mediumBrightnessIcon
brightnessValue < 75 -> highBrightnessIcon
else -> fullBrightnessIcon
}
showFeedbackView("$brightnessValue%", brightnessValue, 100, icon, isBrightness = true)
} }
} }
// Begin swipe session
override fun onEnterSwipeSession() { override fun onEnterSwipeSession() {
if (config.shouldEnableHapticFeedback) { if (config.shouldEnableHapticFeedback) {
@Suppress("DEPRECATION") @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; package app.revanced.extension.youtube.videoplayer;
import android.view.View; import android.view.View;
import android.view.ViewGroup;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import app.revanced.extension.shared.Logger;
import app.revanced.extension.youtube.patches.CopyVideoUrlPatch; import app.revanced.extension.youtube.patches.CopyVideoUrlPatch;
import app.revanced.extension.youtube.settings.Settings; import app.revanced.extension.youtube.settings.Settings;
import app.revanced.extension.shared.Logger; import app.revanced.extension.youtube.shared.PlayerType;
@SuppressWarnings("unused") @SuppressWarnings("unused")
public class CopyVideoUrlButton extends PlayerControlButton { public class CopyVideoUrlButton {
@Nullable @Nullable
private static CopyVideoUrlButton instance; private static PlayerControlButton 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;
}
);
}
/** /**
* Injection point. * Injection point.
*/ */
public static void initializeButton(View view) { public static void initializeButton(View controlsView) {
try { 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) { } catch (Exception ex) {
Logger.printException(() -> "initializeButton failure", ex); Logger.printException(() -> "initializeButton failure", ex);
} }
@@ -41,14 +38,14 @@ public class CopyVideoUrlButton extends PlayerControlButton {
/** /**
* injection point * injection point
*/ */
public static void changeVisibilityImmediate(boolean visible) { public static void setVisibilityImmediate(boolean visible) {
if (instance != null) instance.setVisibilityImmediate(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); if (instance != null) instance.setVisibility(visible, animated);
} }
} }

View File

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

View File

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

View File

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

View File

@@ -1,73 +1,92 @@
package app.revanced.extension.youtube.videoplayer; package app.revanced.extension.youtube.videoplayer;
import android.view.View; import android.view.View;
import android.view.ViewGroup;
import android.view.animation.Animation; import android.view.animation.Animation;
import android.widget.ImageView; import android.widget.ImageView;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import java.lang.ref.WeakReference; import java.lang.ref.WeakReference;
import java.util.Objects;
import app.revanced.extension.shared.Logger; import app.revanced.extension.shared.Logger;
import app.revanced.extension.shared.Utils; 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 { public class PlayerControlButton {
private static final Animation fadeIn; public interface PlayerControlButtonVisibility {
private static final Animation fadeOut; /**
* @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 static final Animation fadeOutImmediate;
private final WeakReference<ImageView> buttonRef;
protected final BooleanSetting setting;
protected boolean isVisible;
static { static {
// TODO: check if these durations are correct. fadeInDuration = Utils.getResourceInteger("fade_duration_fast");
fadeIn = Utils.getResourceAnimation("fade_in"); fadeOutDuration = Utils.getResourceInteger("fade_duration_scheduled");
fadeIn.setDuration(Utils.getResourceInteger("fade_duration_fast"));
fadeOut = Utils.getResourceAnimation("fade_out"); fadeInAnimation = Utils.getResourceAnimation("fade_in");
fadeOut.setDuration(Utils.getResourceInteger("fade_duration_scheduled")); 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 = Utils.getResourceAnimation("abc_fade_out");
fadeOutImmediate.setDuration(Utils.getResourceInteger("fade_duration_fast")); fadeOutImmediate.setDuration(Utils.getResourceInteger("fade_duration_fast"));
} }
@NonNull private final WeakReference<View> buttonRef;
public static Animation getButtonFadeIn() { /**
return fadeIn; * 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 PlayerControlButton(View controlsViewGroup,
public static Animation getButtonFadeOut() { String imageViewButtonId,
return fadeOut; @Nullable String placeholderId,
} PlayerControlButtonVisibility buttonVisibility,
View.OnClickListener onClickListener,
@NonNull
public static Animation getButtonFadeOutImmediately() {
return fadeOutImmediate;
}
public PlayerControlButton(@NonNull ViewGroup bottomControlsViewGroup, @NonNull String imageViewButtonId,
@NonNull BooleanSetting booleanSetting, @NonNull View.OnClickListener onClickListener,
@Nullable View.OnLongClickListener longClickListener) { @Nullable View.OnLongClickListener longClickListener) {
Logger.printDebug(() -> "Initializing button: " + imageViewButtonId); ImageView imageView = Utils.getChildViewByResourceName(controlsViewGroup, imageViewButtonId);
ImageView imageView = Objects.requireNonNull(bottomControlsViewGroup.findViewById(
Utils.getResourceIdentifier(imageViewButtonId, "id")
));
imageView.setVisibility(View.GONE); 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); imageView.setOnClickListener(onClickListener);
if (longClickListener != null) { if (longClickListener != null) {
imageView.setOnLongClickListener(longClickListener); imageView.setOnLongClickListener(longClickListener);
} }
setting = booleanSetting; visibilityCheck = buttonVisibility;
buttonRef = new WeakReference<>(imageView); 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) { public void setVisibilityImmediate(boolean visible) {
@@ -92,26 +111,80 @@ public abstract class PlayerControlButton {
if (isVisible == visible) return; if (isVisible == visible) return;
isVisible = visible; isVisible = visible;
ImageView iView = buttonRef.get(); View button = buttonRef.get();
if (iView == null) { if (button == null) return;
return;
}
if (visible && setting.get()) { View placeholder = placeHolderRef.get();
iView.clearAnimation(); final boolean shouldBeShown = visibilityCheck.shouldBeShown();
if (visible && shouldBeShown) {
button.clearAnimation();
if (animated) { if (animated) {
iView.startAnimation(PlayerControlButton.getButtonFadeIn()); button.startAnimation(PlayerControlButton.fadeInAnimation);
} }
iView.setVisibility(View.VISIBLE); button.setVisibility(View.VISIBLE);
} else if (iView.getVisibility() == View.VISIBLE) {
iView.clearAnimation(); if (placeholder != null) {
if (animated) { placeholder.setVisibility(View.GONE);
iView.startAnimation(PlayerControlButton.getButtonFadeOut()); }
} 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) { } 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 org.gradle.parallel = true
android.useAndroidX = true android.useAndroidX = true
kotlin.code.style = official kotlin.code.style = official
version = 5.12.0-dev.5 version = 5.13.0-dev.18

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 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 final class app/revanced/patches/nyx/misc/pro/UnlockProPatchKt {
public static final fun getUnlockProPatch ()Lapp/revanced/patcher/patch/BytecodePatch; 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 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 final class app/revanced/patches/youtube/layout/hide/fullscreenambientmode/DisableFullscreenAmbientModePatchKt {
public static final fun getDisableFullscreenAmbientModePatch ()Lapp/revanced/patcher/patch/BytecodePatch; public static final fun getDisableFullscreenAmbientModePatch ()Lapp/revanced/patcher/patch/BytecodePatch;
} }

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -28,7 +28,7 @@ val spoofClientPatch = bytecodePatch(
compatibleWith( compatibleWith(
"com.google.android.apps.youtube.music"( "com.google.android.apps.youtube.music"(
"7.16.53", "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

@@ -8,7 +8,7 @@ import com.android.tools.smali.dexlib2.immutable.ImmutableMethod
import com.android.tools.smali.dexlib2.immutable.ImmutableMethodImplementation import com.android.tools.smali.dexlib2.immutable.ImmutableMethodImplementation
val spoofClientPatch = spoofClientPatch(redirectUri = "infinity://localhost") { clientIdOption -> val spoofClientPatch = spoofClientPatch(redirectUri = "infinity://localhost") { clientIdOption ->
compatibleWith("ml.docilealligator.infinityforreddit") compatibleWith("ml.docilealligator.infinityforreddit", "ml.docilealligator.infinityforreddit.plus")
val clientId by clientIdOption val clientId by clientIdOption

View File

@@ -11,7 +11,7 @@ val unlockSubscriptionPatch = bytecodePatch(
) { ) {
dependsOn(spoofClientPatch) dependsOn(spoofClientPatch)
compatibleWith("ml.docilealligator.infinityforreddit") compatibleWith("ml.docilealligator.infinityforreddit", "ml.docilealligator.infinityforreddit.plus")
execute { execute {
setOf( setOf(

View File

@@ -2,4 +2,4 @@ package app.revanced.patches.tiktok.misc.extension
import app.revanced.patches.shared.misc.extension.sharedExtensionPatch 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 app.revanced.patches.shared.misc.extension.extensionHook
import com.android.tools.smali.dexlib2.AccessFlags import com.android.tools.smali.dexlib2.AccessFlags
internal val initHook = extensionHook( internal val initHook = extensionHook {
insertIndexResolver = { 1 }, // Insert after call to super class.
) {
accessFlags(AccessFlags.PUBLIC, AccessFlags.CONSTRUCTOR)
custom { method, classDef -> custom { method, classDef ->
classDef.endsWith("/AwemeHostApplication;") && classDef.type == "Lcom/ss/android/ugc/aweme/main/MainActivity;" &&
method.name == "<init>" 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_haptic_feedback"),
SwitchPreference("revanced_swipe_save_and_restore_brightness"), SwitchPreference("revanced_swipe_save_and_restore_brightness"),
SwitchPreference("revanced_swipe_lowest_value_enable_auto_brightness"), SwitchPreference("revanced_swipe_lowest_value_enable_auto_brightness"),
TextPreference("revanced_swipe_overlay_timeout", inputType = InputType.NUMBER), SwitchPreference("revanced_swipe_show_circular_overlay"),
TextPreference("revanced_swipe_text_overlay_size", inputType = InputType.NUMBER), SwitchPreference("revanced_swipe_overlay_minimal_style"),
TextPreference("revanced_swipe_overlay_background_opacity", inputType = InputType.NUMBER), TextPreference("revanced_swipe_overlay_background_opacity", inputType = InputType.NUMBER),
TextPreference("revanced_swipe_overlay_timeout", inputType = InputType.NUMBER),
TextPreference("revanced_swipe_threshold", inputType = InputType.NUMBER), TextPreference("revanced_swipe_threshold", inputType = InputType.NUMBER),
) )
@@ -53,7 +54,12 @@ private val swipeControlsResourcePatch = resourcePatch {
ResourceGroup( ResourceGroup(
"drawable", "drawable",
"revanced_ic_sc_brightness_auto.xml", "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_mute.xml",
"revanced_ic_sc_volume_normal.xml", "revanced_ic_sc_volume_normal.xml",
), ),

View File

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

View File

@@ -58,6 +58,7 @@ val navigationButtonsPatch = bytecodePatch(
SwitchPreference("revanced_hide_shorts_button"), SwitchPreference("revanced_hide_shorts_button"),
SwitchPreference("revanced_hide_create_button"), SwitchPreference("revanced_hide_create_button"),
SwitchPreference("revanced_hide_subscriptions_button"), SwitchPreference("revanced_hide_subscriptions_button"),
SwitchPreference("revanced_hide_notifications_button"),
SwitchPreference("revanced_switch_create_with_notifications_button"), SwitchPreference("revanced_switch_create_with_notifications_button"),
SwitchPreference("revanced_hide_navigation_button_labels"), 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") @Suppress("unused")
val hideEndscreenCardsPatch = bytecodePatch( val hideEndscreenCardsPatch = bytecodePatch(
name = "Hide endscreen cards", name = "Hide endscreen cards",
@@ -78,9 +81,7 @@ val hideEndscreenCardsPatch = bytecodePatch(
addInstruction( addInstruction(
insertIndex, insertIndex,
"invoke-static { v$viewRegister }, " + "invoke-static { v$viewRegister }, $EXTENSION_CLASS_DESCRIPTOR->hideEndscreen(Landroid/view/View;)V",
"Lapp/revanced/extension/youtube/patches/HideEndscreenCardsPatch;->" +
"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_emergency_box"),
SwitchPreference("revanced_hide_info_panels"), SwitchPreference("revanced_hide_info_panels"),
SwitchPreference("revanced_hide_join_membership_button"), SwitchPreference("revanced_hide_join_membership_button"),
SwitchPreference("revanced_disable_like_subscribe_glow"),
SwitchPreference("revanced_hide_medical_panels"), SwitchPreference("revanced_hide_medical_panels"),
SwitchPreference("revanced_hide_quick_actions"), SwitchPreference("revanced_hide_quick_actions"),
SwitchPreference("revanced_hide_related_videos"), SwitchPreference("revanced_hide_related_videos"),

View File

@@ -1,79 +1,9 @@
package app.revanced.patches.youtube.layout.hide.suggestedvideoendscreen 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.bytecodePatch
import app.revanced.patcher.patch.resourcePatch import app.revanced.patches.youtube.layout.hide.endscreensuggestion.hideEndScreenSuggestedVideoPatch
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
internal var sizeAdjustableLiteAutoNavOverlay = -1L @Deprecated("Use 'Hide suggested video end screen' instead.")
private set val disableSuggestedVideoEndScreenPatch = bytecodePatch {
dependsOn(hideEndScreenSuggestedVideoPatch)
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",
)
}
}
}

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 = private const val EXTENSION_SEGMENT_PLAYBACK_CONTROLLER_CLASS_DESCRIPTOR =
"Lapp/revanced/extension/youtube/sponsorblock/SegmentPlaybackController;" "Lapp/revanced/extension/youtube/sponsorblock/SegmentPlaybackController;"
private const val EXTENSION_CREATE_SEGMENT_BUTTON_CONTROLLER_CLASS_DESCRIPTOR = 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 = 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 = private const val EXTENSION_SPONSORBLOCK_VIEW_CONTROLLER_CLASS_DESCRIPTOR =
"Lapp/revanced/extension/youtube/sponsorblock/ui/SponsorBlockViewController;" "Lapp/revanced/extension/youtube/sponsorblock/ui/SponsorBlockViewController;"

View File

@@ -1,8 +1,29 @@
package app.revanced.patches.youtube.layout.spoofappversion package app.revanced.patches.youtube.layout.spoofappversion
import app.revanced.patcher.fingerprint 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.AccessFlags
import com.android.tools.smali.dexlib2.Opcode 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 { internal val spoofAppVersionFingerprint = fingerprint {
accessFlags(AccessFlags.PUBLIC, AccessFlags.STATIC) accessFlags(AccessFlags.PUBLIC, AccessFlags.STATIC)

View File

@@ -1,10 +1,16 @@
package app.revanced.patches.youtube.layout.spoofappversion package app.revanced.patches.youtube.layout.spoofappversion
import app.revanced.patcher.extensions.InstructionExtensions.addInstructions 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.extensions.InstructionExtensions.getInstruction
import app.revanced.patcher.patch.bytecodePatch 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.addResources
import app.revanced.patches.all.misc.resources.addResourcesPatch 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.ListPreference
import app.revanced.patches.shared.misc.settings.preference.SwitchPreference import app.revanced.patches.shared.misc.settings.preference.SwitchPreference
import app.revanced.patches.youtube.misc.extension.sharedExtensionPatch 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.playservice.versionCheckPatch
import app.revanced.patches.youtube.misc.settings.PreferenceScreen import app.revanced.patches.youtube.misc.settings.PreferenceScreen
import app.revanced.patches.youtube.misc.settings.settingsPatch 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.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 = private const val EXTENSION_CLASS_DESCRIPTOR =
"Lapp/revanced/extension/youtube/patches/spoof/SpoofAppVersionPatch;" "Lapp/revanced/extension/youtube/patches/spoof/SpoofAppVersionPatch;"
@@ -24,6 +48,7 @@ val spoofAppVersionPatch = bytecodePatch(
"Patching 19.16.39 includes additional older spoofing targets.", "Patching 19.16.39 includes additional older spoofing targets.",
) { ) {
dependsOn( dependsOn(
spoofAppVersionResourcePatch,
sharedExtensionPatch, sharedExtensionPatch,
settingsPatch, settingsPatch,
addResourcesPatch, 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 insertIndex = spoofAppVersionFingerprint.patternMatch!!.startIndex + 1
val buildOverrideNameRegister = val buildOverrideNameRegister =
spoofAppVersionFingerprint.method.getInstruction<OneRegisterInstruction>(insertIndex - 1).registerA 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; invoke-static {v$buildOverrideNameRegister}, $EXTENSION_CLASS_DESCRIPTOR->getYouTubeVersionOverride(Ljava/lang/String;)Ljava/lang/String;
move-result-object v$buildOverrideNameRegister move-result-object v$buildOverrideNameRegister
""", """
) )
} }
} }

View File

@@ -77,12 +77,9 @@ val playerControlsResourcePatch = resourcePatch {
).item(0) ).item(0)
val bottomTargetDocumentChildNodes = bottomTargetDocument.childNodes val bottomTargetDocumentChildNodes = bottomTargetDocument.childNodes
var bottomInsertBeforeNode: Node = bottomTargetDocumentChildNodes.findElementByAttributeValue( var bottomInsertBeforeNode: Node = bottomTargetDocumentChildNodes.findElementByAttributeValueOrThrow(
"android:inflatedId", "android:inflatedId",
bottomLastLeftOf, bottomLastLeftOf,
) ?: bottomTargetDocumentChildNodes.findElementByAttributeValueOrThrow(
"android:id", // Older targets use non-inflated id.
bottomLastLeftOf,
) )
addTopControl = { resourceDirectoryName -> addTopControl = { resourceDirectoryName ->
@@ -123,7 +120,7 @@ val playerControlsResourcePatch = resourcePatch {
).item(0).childNodes ).item(0).childNodes
// Copy the patch layout xml into the target layout file. // 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) val element = sourceElements.item(index).cloneNode(true)
// If the element has no attributes there's no point adding it to the destination. // 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) { fun injectVisibilityCheckCall(descriptor: String) {
visibilityMethod.addInstruction( visibilityMethod.addInstruction(
visibilityInsertIndex++, visibilityInsertIndex++,
"invoke-static { p1 , p2 }, $descriptor->changeVisibility(ZZ)V", "invoke-static { p1 , p2 }, $descriptor->setVisibility(ZZ)V",
) )
if (!visibilityImmediateCallbacksExistModified) { if (!visibilityImmediateCallbacksExistModified) {
@@ -199,7 +196,7 @@ fun injectVisibilityCheckCall(descriptor: String) {
visibilityImmediateMethod.addInstruction( visibilityImmediateMethod.addInstruction(
visibilityImmediateInsertIndex++, 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. --> <!-- 'For you' should be translated using the same localized wording YouTube displays. -->
<!-- 'Notify me' 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. --> 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. <!-- 'Show more' should be translated with the same localized wording that YouTube displays.
This button usually appears when searching for a YT creator. --> This button usually appears when searching for a YT creator. -->
<!-- https://logos.fandom.com/wiki/YouTube/Yoodles --> <!-- 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. --> <!-- '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. --> <!-- 'share' should be translated using the same localized wording YouTube displays for the button. -->
</patch> </patch>
<patch id="layout.hide.suggestedvideoendscreen.disableSuggestedVideoEndScreenResourcePatch"> <patch id="layout.hide.endscreensuggestion.hideEndScreenSuggestedVideoPatch">
</patch> </patch>
<patch id="layout.hide.time.hideTimestampPatch"> <patch id="layout.hide.time.hideTimestampPatch">
</patch> </patch>
@@ -206,6 +206,7 @@ Second \"item\" text"</string>
<patch id="misc.zoomhaptics.zoomHapticsPatch"> <patch id="misc.zoomhaptics.zoomHapticsPatch">
</patch> </patch>
<patch id="video.audio.forceOriginalAudioPatch"> <patch id="video.audio.forceOriginalAudioPatch">
<!-- 'Spoof video streams' should be the same translation used for revanced_spoof_video_streams_screen_title -->
</patch> </patch>
<patch id="video.quality.rememberVideoQualityPatch"> <patch id="video.quality.rememberVideoQualityPatch">
<!-- Translations should use the same text as revanced_custom_playback_speeds_auto --> <!-- 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 id="interaction.seekbar.enableSlideToSeekPatch">
</patch> </patch>
<patch id="misc.fix.playback.spoofVideoStreamsPatch"> <patch id="misc.fix.playback.spoofVideoStreamsPatch">
<!-- 'no auth' means no authentication -->
</patch> </patch>
</app> </app>
<app id="twitch"> <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. --> <!-- 'For you' should be translated using the same localized wording YouTube displays. -->
<!-- 'Notify me' 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. --> 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. <!-- 'Show more' should be translated with the same localized wording that YouTube displays.
This button usually appears when searching for a YT creator. --> This button usually appears when searching for a YT creator. -->
<!-- https://logos.fandom.com/wiki/YouTube/Yoodles --> <!-- 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. --> <!-- '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. --> <!-- 'share' should be translated using the same localized wording YouTube displays for the button. -->
</patch> </patch>
<patch id="layout.hide.suggestedvideoendscreen.disableSuggestedVideoEndScreenResourcePatch"> <patch id="layout.hide.endscreensuggestion.hideEndScreenSuggestedVideoPatch">
</patch> </patch>
<patch id="layout.hide.time.hideTimestampPatch"> <patch id="layout.hide.time.hideTimestampPatch">
</patch> </patch>
@@ -206,6 +206,7 @@ Second \"item\" text"</string>
<patch id="misc.zoomhaptics.zoomHapticsPatch"> <patch id="misc.zoomhaptics.zoomHapticsPatch">
</patch> </patch>
<patch id="video.audio.forceOriginalAudioPatch"> <patch id="video.audio.forceOriginalAudioPatch">
<!-- 'Spoof video streams' should be the same translation used for revanced_spoof_video_streams_screen_title -->
</patch> </patch>
<patch id="video.quality.rememberVideoQualityPatch"> <patch id="video.quality.rememberVideoQualityPatch">
<!-- Translations should use the same text as revanced_custom_playback_speeds_auto --> <!-- 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 id="interaction.seekbar.enableSlideToSeekPatch">
</patch> </patch>
<patch id="misc.fix.playback.spoofVideoStreamsPatch"> <patch id="misc.fix.playback.spoofVideoStreamsPatch">
<!-- 'no auth' means no authentication -->
</patch> </patch>
</app> </app>
<app id="twitch"> <app id="twitch">

View File

@@ -168,9 +168,6 @@ Second \"item\" text"</string>
لن يتم إعلامك بأي أخطاء غير متوقعة."</string> لن يتم إعلامك بأي أخطاء غير متوقعة."</string>
</patch> </patch>
<patch id="layout.hide.general.hideLayoutComponentsPatch"> <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_title">إخفاء بطاقات الألبوم</string>
<string name="revanced_hide_album_cards_summary_on">تم إخفاء بطاقات الألبوم</string> <string name="revanced_hide_album_cards_summary_on">تم إخفاء بطاقات الألبوم</string>
<string name="revanced_hide_album_cards_summary_off">يتم عرض بطاقات الألبوم</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> <string name="revanced_hide_horizontal_shelves_summary_off">يتم عرض الرفوف</string>
<!-- 'Join' should be translated using the same localized wording YouTube displays. <!-- 'Join' should be translated using the same localized wording YouTube displays.
This appears in the video player for certain videos. --> 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_on">تم إخفاء الزر</string>
<string name="revanced_hide_join_membership_button_summary_off">يتم عرض الزر</string> <string name="revanced_hide_join_membership_button_summary_off">يتم عرض الزر</string>
<!-- 'For you' should be translated using the same localized wording YouTube displays. --> <!-- 'For you' should be translated using the same localized wording YouTube displays. -->
<string name="revanced_hide_for_you_shelf_title">إخفاء رف \"لـك\" في صفحة القناة</string> <string name="revanced_hide_for_you_shelf_title">إخفاء رف \'مقترحات لك\'</string>
<string name="revanced_hide_for_you_shelf_summary_on">تم إخفاء الرف</string> <string name="revanced_hide_for_you_shelf_summary_on">تم إخفاء الرف في صفحة القناة</string>
<string name="revanced_hide_for_you_shelf_summary_off">يتم عرض الرف</string> <string name="revanced_hide_for_you_shelf_summary_off">يتم عرض الرف في صفحة القناة</string>
<!-- 'Notify me' 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. --> This item appear in the subscription feed for future livestreams or unreleased videos. -->
<string name="revanced_hide_notify_me_button_title">إخفاء زر \'تنبيهي\'</string> <string name="revanced_hide_notify_me_button_title">إخفاء زر \'تنبيهي\'</string>
<string name="revanced_hide_notify_me_button_summary_on">تم إخفاء الزر</string> <string name="revanced_hide_notify_me_button_summary_on">تم إخفاء الزر</string>
<string name="revanced_hide_notify_me_button_summary_off">يتم عرض الزر</string> <string name="revanced_hide_notify_me_button_summary_off">يتم عرض الزر</string>
<!-- '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. -->
<string name="revanced_hide_search_result_recommendations_title">إخفاء توصيات \'شاهد الأشخاص أيضًا\'</string> <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_on">تم إخفاء العلامة</string>
<string name="revanced_hide_search_result_recommendations_summary_off">يتم عرض التوصيات</string> <string name="revanced_hide_search_result_recommendations_summary_off">يتم عرض العلامة</string>
<!-- 'Show more' should be translated with the same localized wording that YouTube displays. <!-- 'Show more' should be translated with the same localized wording that YouTube displays.
This button usually appears when searching for a YT creator. --> This button usually appears when searching for a YT creator. -->
<string name="revanced_hide_show_more_button_title">إخفاء زر \'عرض المزيد\'</string> <string name="revanced_hide_show_more_button_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_on">تم إخفاء رف الشرائح</string>
<string name="revanced_hide_chips_shelf_summary_off">يتم عرض رف الشرائح</string> <string name="revanced_hide_chips_shelf_summary_off">يتم عرض رف الشرائح</string>
<string name="revanced_hide_expandable_chip_title">إخفاء الشريحة القابلة للتوسيع تحت الفيديوهات</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_on">تم إخفاء البطاقة القابلة للتوسيع</string>
<string name="revanced_hide_expandable_chip_summary_off">يتم عرض الشرائح القابلة للتوسيع</string> <string name="revanced_hide_expandable_chip_summary_off">يتم عرض البطاقة القابلة للتوسيع</string>
<string name="revanced_hide_community_posts_title">إخفاء مشاركات المجتمع</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_on">تم إخفاء مشاركات المجتمع</string>
<string name="revanced_hide_community_posts_summary_off">يتم عرض مشاركات المجتمع</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_title">إخفاء إرشادات المجتمع</string>
<string name="revanced_hide_community_guidelines_summary_on">تم إخفاء إرشادات المجتمع</string> <string name="revanced_hide_community_guidelines_summary_on">تم إخفاء إرشادات المجتمع</string>
<string name="revanced_hide_community_guidelines_summary_off">يتم عرض إرشادات المجتمع</string> <string name="revanced_hide_community_guidelines_summary_off">يتم عرض إرشادات المجتمع</string>
<string name="revanced_hide_subscribers_community_guidelines_title">إخفاء إرشادات مجتمع المشتركين</string> <string name="revanced_hide_subscribers_community_guidelines_title">إخفاء إرشادات المشتركين</string>
<string name="revanced_hide_subscribers_community_guidelines_summary_on">تم إخفاء إرشادات مجتمع المشتركين</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_subscribers_community_guidelines_summary_off">يتم عرض إرشادات مجتمع المشتركين</string>
<string name="revanced_hide_channel_member_shelf_title">إخفاء رف أعضاء القناة</string> <string name="revanced_hide_channel_member_shelf_title">إخفاء رف أعضاء القناة</string>
@@ -280,63 +277,63 @@ Second \"item\" text"</string>
<string name="revanced_hide_artist_cards_title">إخفاء بطاقات الفنان</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_on">تم إخفاء بطاقات الفنان</string>
<string name="revanced_hide_artist_cards_summary_off">يتم عرض بطاقات الفنان</string> <string name="revanced_hide_artist_cards_summary_off">يتم عرض بطاقات الفنان</string>
<string name="revanced_hide_attributes_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_on">تم إخفاء أقسام الأماكن المميزة، الألعاب، الموسيقى والأشخاص المذكورون</string>
<string name="revanced_hide_attributes_section_summary_off">يتم عرض \'الأماكن المميزة\'، أقسام الألعاب والموسيقى</string> <string name="revanced_hide_attributes_section_summary_off">يتم عرض أقسام الأماكن المميزة، الألعاب، الموسيقى والأشخاص المذكورون</string>
<string name="revanced_hide_chapters_section_title">إخفاء قسم الفصول</string> <string name="revanced_hide_chapters_section_title">إخفاء الفصول</string>
<string name="revanced_hide_chapters_section_summary_on">تم إخفاء قسم الفصول</string> <string name="revanced_hide_chapters_section_summary_on">تم إخفاء قسم الفصول</string>
<string name="revanced_hide_chapters_section_summary_off">يتم عرض قسم الفصول</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_title">إخفاء \'كيف تم إنشاء هذا المحتوى\'</string>
<string name="revanced_hide_how_this_was_made_section_summary_on">تم إخفاء قسم \"كيف تم إنشاء هذا المحتوى\"</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_how_this_was_made_section_summary_off">يتم عرض قسم كيف تم إنشاء هذا المحتوى</string>
<string name="revanced_hide_podcast_section_title">إخفاء قسم \'استكشاف البودكاست\'</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_on">تم إخفاء قسم استكشاف البودكاست</string>
<string name="revanced_hide_podcast_section_summary_off">يتم عرض قسم \"استكشاف البودكاست\"</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_title">إخفاء بطاقات المعلومات</string>
<string name="revanced_hide_info_cards_section_summary_on">تم إخفاء قسم بطاقات المعلومات</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_info_cards_section_summary_off">يتم عرض قسم بطاقات المعلومات</string>
<string name="revanced_hide_key_concepts_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_on">تم إخفاء قسم المفاهيم الأساسية</string>
<string name="revanced_hide_key_concepts_section_summary_off">يتم عرض قسم \'المفاهيم الأساسية\'</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_title">إخفاء النص</string>
<string name="revanced_hide_transcript_section_summary_on">تم إخفاء قسم النص</string> <string name="revanced_hide_transcript_section_summary_on">تم إخفاء قسم النص</string>
<string name="revanced_hide_transcript_section_summary_off">يتم عرض قسم النص</string> <string name="revanced_hide_transcript_section_summary_off">يتم عرض قسم النص</string>
<string name="revanced_hide_description_components_screen_title">وصف الفيديو</string> <string name="revanced_hide_description_components_screen_title">وصف الفيديو</string>
<string name="revanced_hide_description_components_screen_summary">إخفاء أو عرض مكونات وصف الفيديو</string> <string name="revanced_hide_description_components_screen_summary">إخفاء أو عرض مكونات وصف الفيديو</string>
<string name="revanced_hide_filter_bar_screen_title">شريط التصفية</string> <string name="revanced_hide_filter_bar_screen_title">شريط التصفية</string>
<string name="revanced_hide_filter_bar_screen_summary">إخفاء شريط التصفية أو عرضه في الموجز والبحث الفيديوهات ذات الصلة</string> <string name="revanced_hide_filter_bar_screen_summary">إخفاء أو إظهار شريط الفلتر في الخلاصة ونتائج البحث ومقاطع الفيديو ذات الصلة</string>
<string name="revanced_hide_filter_bar_feed_in_feed_title">إخفاء في الموجز</string> <string name="revanced_hide_filter_bar_feed_in_feed_title">إخفاء في الموجز</string>
<string name="revanced_hide_filter_bar_feed_in_feed_summary_on">مخفي في الموجز</string> <string name="revanced_hide_filter_bar_feed_in_feed_summary_on">مخفي في الموجز</string>
<string name="revanced_hide_filter_bar_feed_in_feed_summary_off">يعرض في الموجز</string> <string name="revanced_hide_filter_bar_feed_in_feed_summary_off">يعرض في الموجز</string>
<string name="revanced_hide_filter_bar_feed_in_search_title">إخفاء في البحث</string> <string name="revanced_hide_filter_bar_feed_in_search_title">إخفاء في نتائج البحث</string>
<string name="revanced_hide_filter_bar_feed_in_search_summary_on">مخفي في البحث</string> <string name="revanced_hide_filter_bar_feed_in_search_summary_on">مخفي في نتائج البحث</string>
<string name="revanced_hide_filter_bar_feed_in_search_summary_off">يعرض في البحث</string> <string name="revanced_hide_filter_bar_feed_in_search_summary_off">يظهر في نتائج البحث</string>
<string name="revanced_hide_filter_bar_feed_in_related_videos_title">إخفاء في الفيديوهات ذات الصلة</string> <string name="revanced_hide_filter_bar_feed_in_related_videos_title">إخفاء في الفيديوهات ذات الصلة</string>
<string name="revanced_hide_filter_bar_feed_in_related_videos_summary_on">مخفي في الفيديوهات ذات الصلة</string> <string name="revanced_hide_filter_bar_feed_in_related_videos_summary_on">مخفي في الفيديوهات ذات الصلة</string>
<string name="revanced_hide_filter_bar_feed_in_related_videos_summary_off">يعرض في الفيديوهات ذات الصلة</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_title">التعليقات</string>
<string name="revanced_comments_screen_summary">إخفاء أو عرض مكونات قسم التعليقات</string> <string name="revanced_comments_screen_summary">إخفاء أو عرض مكونات قسم التعليقات</string>
<string name="revanced_hide_comments_chat_summary_title">إخفاء \"ملخص الدردشة\" </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_on">تم إخفاء ملخص المحادثات</string>
<string name="revanced_hide_comments_chat_summary_summary_off">يتم عرض ملخص الدردشة”</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_title">إخفاء رأس \'تعليقات الأعضاء\'</string>
<string name="revanced_hide_comments_by_members_header_summary_on">تم إخفاء رأس \'تعليقات الأعضاء\'</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_off">يتم عرض علامة تعليقات من الأعضاء</string>
<string name="revanced_hide_comments_section_title">إخفاء قسم التعليقات</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_on">تم إخفاء قسم التعليقات</string>
<string name="revanced_hide_comments_section_summary_off">يتم عرض قسم التعليقات</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_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_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_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_title">إخفاء تعليق المعاينة</string>
<string name="revanced_hide_comments_preview_comment_summary_on">تم إخفاء تعليق المعاينة</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_preview_comment_summary_off">يتم عرض تعليق المعاينة</string>
<string name="revanced_hide_comments_thanks_button_title">إخفاء زر شكرًا</string> <string name="revanced_hide_comments_thanks_button_title">إخفاء زر شكرًا</string>
<string name="revanced_hide_comments_thanks_button_summary_on">تم إخفاء زر شكرًا</string> <string name="revanced_hide_comments_thanks_button_summary_on">تم إخفاء زر شكرًا</string>
<string name="revanced_hide_comments_thanks_button_summary_off">يتم عرض زر شكرًا</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 --> <!-- https://logos.fandom.com/wiki/YouTube/Yoodles -->
<string name="revanced_hide_doodles_title">إخفاء رسومات YouTube</string> <string name="revanced_hide_doodles_title">إخفاء رسومات YouTube</string>
<string name="revanced_hide_doodles_summary_on">تم إخفاء رسومات شريط البحث</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_on">تم إخفاء رفوف التسوق</string>
<string name="revanced_hide_player_store_shelf_summary_off">يتم عرض رفوف التسوق</string> <string name="revanced_hide_player_store_shelf_summary_off">يتم عرض رفوف التسوق</string>
<string name="revanced_hide_shopping_links_title">إخفاء روابط التسوق في وصف الفيديو</string> <string name="revanced_hide_shopping_links_title">إخفاء روابط التسوق في وصف الفيديو</string>
<string name="revanced_hide_shopping_links_summary_on">تم إخفاء روابط التسوق</string> <string name="revanced_hide_shopping_links_summary_on">تم إخفاء روابط التسوق في وصف الفيديو</string>
<string name="revanced_hide_shopping_links_summary_off">يتم عرض روابط التسوق</string> <string name="revanced_hide_shopping_links_summary_off">يتم عرض روابط التسوق في وصف الفيديو</string>
<!-- 'Visit store' should be translated with the same localized wording that YouTube displays. --> <!-- '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_title">إخفاء زر \"زيارة المتجر\" على صفحات القناة</string>
<string name="revanced_hide_visit_store_button_summary_on">تم إخفاء الزر</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_off">يتم عرض الزر في صفحة القناة</string>
<string name="revanced_hide_web_search_results_title">إخفاء نتائج بحث الويب</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_on">تم إخفاء نتائج البحث على الويب</string>
<string name="revanced_hide_web_search_results_summary_off">يتم عرض نتائج البحث على الويب</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_success">تم نسخ URL إلى الحافظة</string>
<string name="revanced_share_copy_url_timestamp_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_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_summary_off">لا يتم عرض الزر</string>
<string name="revanced_copy_video_url_timestamp_title">عرض زر نسخ URL مع الطابع الزمني</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> <string name="revanced_copy_video_url_timestamp_summary_off">لا يتم عرض الزر</string>
</patch> </patch>
<patch id="interaction.dialog.removeViewerDiscretionDialogPatch"> <patch id="interaction.dialog.removeViewerDiscretionDialogPatch">
@@ -484,11 +481,15 @@ Second \"item\" text"</string>
</patch> </patch>
<patch id="interaction.swipecontrols.swipeControlsResourcePatch"> <patch id="interaction.swipecontrols.swipeControlsResourcePatch">
<string name="revanced_swipe_brightness_title">التحكم بالسطوع عن طريق ايماءة التمرير</string> <string name="revanced_swipe_brightness_title">التحكم بالسطوع عن طريق ايماءة التمرير</string>
<string name="revanced_swipe_brightness_summary_on">تم تمكين التحكم بمستوى السطوع عن طريق الإيماءة</string> <string name="revanced_swipe_brightness_summary_on">"تم تمكين التمرير السريع لضبط السطوع في وضع ملء الشاشة
<string name="revanced_swipe_brightness_summary_off">تم تعطيل التحكم بمستوى السطوع عن طريق الإيماءة</string>
اضبط السطوع عن طريق التمرير عموديًا على الجانب الأيسر من الشاشة"</string>
<string name="revanced_swipe_brightness_summary_off">تم تعطيل التمرير السريع لضبط السطوع في وضع ملء الشاشة</string>
<string name="revanced_swipe_volume_title">تمكين التحكم بالصوت عن طريق إيماءة التمرير</string> <string name="revanced_swipe_volume_title">تمكين التحكم بالصوت عن طريق إيماءة التمرير</string>
<string name="revanced_swipe_volume_summary_on">تم تمكين التحكم بمستوى الصوت عن طريق الإيماءة</string> <string name="revanced_swipe_volume_summary_on">"تم تمكين التمرير السريع لضبط مستوى الصوت في وضع ملء الشاشة
<string name="revanced_swipe_volume_summary_off">تم تعطيل التحكم بمستوى الصوت عن طريق الإيماءة</string>
اضبط مستوى الصوت عن طريق التمرير عموديًا على الجانب الأيمن من الشاشة"</string>
<string name="revanced_swipe_volume_summary_off">تم تعطيل التمرير السريع لضبط مستوى الصوت في وضع ملء الشاشة</string>
<string name="revanced_swipe_press_to_engage_title">تمكين إيماءة الضغط للتمرير</string> <string name="revanced_swipe_press_to_engage_title">تمكين إيماءة الضغط للتمرير</string>
<string name="revanced_swipe_press_to_engage_summary_on">يتم تنشيط عناصر التحكم عن طريق إيماءة التمرير فقط بضغطة طويلة</string> <string name="revanced_swipe_press_to_engage_summary_on">يتم تنشيط عناصر التحكم عن طريق إيماءة التمرير فقط بضغطة طويلة</string>
<string name="revanced_swipe_press_to_engage_summary_off">تنشيط عناصر التحكم عن طريق إيماءة التمرير عند الضغط مباشرة</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_title">تمكين إيماءة السطوع التلقائي</string>
<string name="revanced_swipe_lowest_value_enable_auto_brightness_summary_on">التمرير لأسفل إلى أدنى قيمة للسطوع يمكّن السطوع التلقائي</string> <string name="revanced_swipe_lowest_value_enable_auto_brightness_summary_on">التمرير لأسفل إلى أدنى قيمة للسطوع يمكّن السطوع التلقائي</string>
<string name="revanced_swipe_lowest_value_enable_auto_brightness_summary_off">لا يؤدي التمرير لأسفل إلى أدنى قيمة إلى تمكين السطوع التلقائي</string> <string name="revanced_swipe_lowest_value_enable_auto_brightness_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_title">مهلة واجهة التمرير</string>
<string name="revanced_swipe_overlay_timeout_summary">مقدار الوقت الذي تظهر فيه واجهة التمرير بعد التغيير بجزء الثانية</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_title">تعتيم خلفية واجهة التمرير السريع</string>
<string name="revanced_swipe_overlay_background_opacity_summary">قيمة التعتيم بين 0-100</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_overlay_background_opacity_invalid_toast">يجب أن يكون تعتيم التمرير السريع بين 0-100</string>
<string name="revanced_swipe_threshold_title">مقدار حد التمرير</string> <string name="revanced_swipe_threshold_title">مقدار حد التمرير</string>
<string name="revanced_swipe_threshold_summary">الحد الأدنى من التمرير قبل اكتشاف الإيماءة</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_title">تمكين إيماءة التمرير لتغيير الفيديو</string>
<string name="revanced_swipe_change_video_summary_on">سيؤدي التمرير في وضع ملء الشاشة إلى التغيير للفيديو التالي/السابق</string> <string name="revanced_swipe_change_video_summary_on">سيؤدي التمرير في وضع ملء الشاشة إلى التغيير للفيديو التالي/السابق</string>
<string name="revanced_swipe_change_video_summary_off">لن يؤدي التمرير في وضع ملء الشاشة إلى التغيير للفيديو التالي/السابق</string> <string name="revanced_swipe_change_video_summary_off">لن يؤدي التمرير في وضع ملء الشاشة إلى التغيير للفيديو التالي/السابق</string>
@@ -523,6 +527,9 @@ Second \"item\" text"</string>
<patch id="layout.buttons.action.hideButtonsPatch"> <patch id="layout.buttons.action.hideButtonsPatch">
<string name="revanced_hide_buttons_screen_title">أزرار الإجراء</string> <string name="revanced_hide_buttons_screen_title">أزرار الإجراء</string>
<string name="revanced_hide_buttons_screen_summary">إخفاء أو عرض الأزرار تحت الفيديوهات</string> <string name="revanced_hide_buttons_screen_summary">إخفاء أو عرض الأزرار تحت الفيديوهات</string>
<string name="revanced_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_title">إخفاء أعجبني ولم يعجبني</string>
<string name="revanced_hide_like_dislike_button_summary_on">تم إخفاء أزرار أعجبني ولم يعجبني</string> <string name="revanced_hide_like_dislike_button_summary_on">تم إخفاء أزرار أعجبني ولم يعجبني</string>
<string name="revanced_hide_like_dislike_button_summary_off">يتم عرض أزرار أعجبني ولم يعجبني</string> <string name="revanced_hide_like_dislike_button_summary_off">يتم عرض أزرار أعجبني ولم يعجبني</string>
@@ -575,12 +582,18 @@ Second \"item\" text"</string>
<string name="revanced_hide_subscriptions_button_title">إخفاء الاشتراكات</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_on">تم إخفاء زر الاشتراكات</string>
<string name="revanced_hide_subscriptions_button_summary_off">يتم عرض زر الاشتراكات</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. --> <!-- '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_title">تبديل الإنشاء مع الإشعارات</string>
<string name="revanced_switch_create_with_notifications_button_summary_on">"تم تبديل زر الإنشاء بـزر الإشعارات <string name="revanced_switch_create_with_notifications_button_summary_on">"تم تبديل زر الإنشاء بـزر الإشعارات
ملاحظة: يؤدي تمكين هذا أيضًا إلى إخفاء إعلانات الفيديو بالقوة"</string> ملاحظة: يؤدي تمكين هذا أيضًا إلى إخفاء إعلانات الفيديو بالقوة"</string>
<string name="revanced_switch_create_with_notifications_button_summary_off">لا يتم تبديل زر الإنشاء بزر الإشعارات</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_title">إخفاء تسميات زر التنقل</string>
<string name="revanced_hide_navigation_button_labels_summary_on">تم إخفاء التسميات</string> <string name="revanced_hide_navigation_button_labels_summary_on">تم إخفاء التسميات</string>
<string name="revanced_hide_navigation_button_labels_summary_off">يتم عرض التسميات</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_on">تم إخفاء شريط التنقل</string>
<string name="revanced_hide_shorts_navigation_bar_summary_off">يتم عرض شريط التنقل</string> <string name="revanced_hide_shorts_navigation_bar_summary_off">يتم عرض شريط التنقل</string>
</patch> </patch>
<patch id="layout.hide.suggestedvideoendscreen.disableSuggestedVideoEndScreenResourcePatch"> <patch id="layout.hide.endscreensuggestion.hideEndScreenSuggestedVideoPatch">
<string name="revanced_disable_suggested_video_end_screen_title">تعطيل شاشة نهاية الفيديو المقترح</string> <string name="revanced_end_screen_suggested_video_title">إخفاء الفيديو المقترح في شاشة النهاية</string>
<string name="revanced_disable_suggested_video_end_screen_summary_on">الفيديوهات المقترحة سيتم تعطيلها</string> <string name="revanced_end_screen_suggested_video_summary_on">"يتم إخفاء الفيديو المقترح في شاشة النهاية عند إيقاف التشغيل التلقائي
<string name="revanced_disable_suggested_video_end_screen_summary_off">الفيديوهات المقترحة سيتم عرضها</string>
يمكن تغيير التشغيل التلقائي في إعدادات YouTube:
الإعدادات ← التشغيل ← تشغيل الفيديو التالي تلقائيًا"</string>
<string name="revanced_end_screen_suggested_video_summary_off">يتم عرض الفيديو المقترح في شاشة النهاية</string>
</patch> </patch>
<patch id="layout.hide.time.hideTimestampPatch"> <patch id="layout.hide.time.hideTimestampPatch">
<string name="revanced_hide_timestamp_title">إخفاء الطابع الزمني للفيديو</string> <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. --> <!-- 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_timeout">لم يعجبني غير متاح مؤقتًا (انتهت مهلة API)</string>
<string name="revanced_ryd_failure_connection_status_code">لم يعجبني غير متاح (الحالة %d)</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> <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. --> <!-- 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> <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_on">يتم عرض لم يعجبني</string>
<string name="revanced_ryd_enable_summary_off">لا يتم عرض لم يعجبني</string> <string name="revanced_ryd_enable_summary_off">لا يتم عرض لم يعجبني</string>
<string name="revanced_ryd_shorts_title">عرض لم يعجني في فيديوهات Shorts</string> <string name="revanced_ryd_shorts_title">عرض لم يعجني في فيديوهات Shorts</string>
<string name="revanced_ryd_shorts_summary_on">يتم عرض لم يعجني في فيديوهات Shorts</string> <string name="revanced_ryd_shorts_summary_on">يتم عرض عدم الإعجاب على فيديوهات Shorts</string>
<string name="revanced_ryd_shorts_summary_on_disclaimer">"إبداءات لم يعجبني التي تظهر على فيديوهات Shorts <string name="revanced_ryd_shorts_summary_on_disclaimer">"يتم عرض مرات عدم الإعجاب في فيديوهات Shorts
التقييد: قد لا تظهر إبداءات لم يعجبني في وضع التصفح المتخفي"</string> التقييد: قد لا تظهر مرات عدم الإعجاب في وضع التصفح المتخفي"</string>
<string name="revanced_ryd_shorts_summary_off">تم إخفاء لم يعجني في فيديوهات Shorts</string> <string name="revanced_ryd_shorts_summary_off">لا يتم عرض مرات عدم الإعجاب في فيديوهات Shorts</string>
<string name="revanced_ryd_dislike_percentage_title">لم يعجبني كــ نسبة مئوية</string> <string name="revanced_ryd_dislike_percentage_title">لم يعجبني كــ نسبة مئوية</string>
<string name="revanced_ryd_dislike_percentage_summary_on">يعرض عدد لم يعجبني كـ نسبة مئوية</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_off">يتم عرض مرات عدم الإعجاب كرقم</string>
<!-- Translations should use language similar to 'revanced_sb_enable_compact_skip_button' --> <!-- Translations should use language similar to 'revanced_sb_enable_compact_skip_button' -->
<string name="revanced_ryd_compact_layout_title">مقاس زر أعجبني</string> <string name="revanced_ryd_compact_layout_title">مقاس زر أعجبني</string>
<string name="revanced_ryd_compact_layout_summary_on">زر أعجبني مصمم لأدنى عرض</string> <string name="revanced_ryd_compact_layout_summary_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_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_on">إخفاء زر التخطي بعد بضع ثوانٍ</string>
<string name="revanced_sb_enable_auto_hide_skip_segment_button_sum_off">يتم عرض زر \"التخطي\" للمقطع بأكمله</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">عرض ملاحظة عند التخطي</string>
<string name="revanced_sb_general_skiptoast_sum_on">يتم عرض ملاحظة عندما يتم تخطي مقطع تلقائيًا. انقر هنا لمشاهدة مثال</string> <string name="revanced_sb_general_skiptoast_sum_on">يتم عرض ملاحظة عندما يتم تخطي مقطع تلقائيًا. انقر هنا لمشاهدة مثال</string>
<string name="revanced_sb_general_skiptoast_sum_off">لن يتم عرض الملاحظة. انقر هنا لمشاهدة مثال</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">عرض مدة الفيديو بدون المقاطع</string>
@@ -1016,7 +1032,7 @@ Second \"item\" text"</string>
<string name="revanced_sb_skipped_multiple_segments">تم تخطي عدة مقاطع</string> <string name="revanced_sb_skipped_multiple_segments">تم تخطي عدة مقاطع</string>
<string name="revanced_sb_skip_automatically">التخطي تلقائيًا</string> <string name="revanced_sb_skip_automatically">التخطي تلقائيًا</string>
<string name="revanced_sb_skip_automatically_once">التخطي تلقائيًا مرة واحدة</string> <string name="revanced_sb_skip_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_seekbaronly">عرض في شريط تقدم الفيديو</string>
<string name="revanced_sb_skip_ignore">تعطيل</string> <string name="revanced_sb_skip_ignore">تعطيل</string>
<string name="revanced_sb_submit_failed_invalid">غير قادر على إرسال المقطع: الحالة: %s</string> <string name="revanced_sb_submit_failed_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_new_segment_edit_by_hand_parse_error">الوقت المحدد غير صحيح</string>
<string name="revanced_sb_stats">إحصائيات</string> <string name="revanced_sb_stats">إحصائيات</string>
<!-- Shown in the settings preferences, and translations can be any text length. --> <!-- 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_loading">جارٍ التحميل...</string>
<string name="revanced_sb_stats_sb_disabled">تم تعطيل SponsorBlock</string> <string name="revanced_sb_stats_sb_disabled">تم تعطيل SponsorBlock</string>
<string name="revanced_sb_stats_username">اسم المستخدم الخاص بك: &lt;b&gt;%s&lt;/b&gt;</string> <string name="revanced_sb_stats_username">اسم المستخدم الخاص بك: &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> <string name="revanced_disable_zoom_haptics_summary_off">تم تمكين الاهتزاز</string>
</patch> </patch>
<patch id="video.audio.forceOriginalAudioPatch"> <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_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>
<patch id="video.quality.rememberVideoQualityPatch"> <patch id="video.quality.rememberVideoQualityPatch">
<!-- Translations should use the same text as revanced_custom_playback_speeds_auto --> <!-- Translations should use the same text as revanced_custom_playback_speeds_auto -->
@@ -1405,8 +1421,6 @@ Second \"item\" text"</string>
قد لا يعمل تشغيل الفيديو"</string> قد لا يعمل تشغيل الفيديو"</string>
<string name="revanced_spoof_video_streams_user_dialog_message">إيقاف تشغيل هذا الإعداد قد يسبب مشاكل في تشغيل الفيديو.</string> <string name="revanced_spoof_video_streams_user_dialog_message">إيقاف تشغيل هذا الإعداد قد يسبب مشاكل في تشغيل الفيديو.</string>
<string name="revanced_spoof_video_streams_client_type_title">العميل الافتراضي</string> <string name="revanced_spoof_video_streams_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_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_on">يتم فرض ترميز فيديو على AVC (H.264)</string>
<string name="revanced_spoof_video_streams_ios_force_avc_summary_off">يتم تحديد ترميز الفيديو تلقائيًا</string> <string name="revanced_spoof_video_streams_ios_force_avc_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. --> <!-- 'For you' should be translated using the same localized wording YouTube displays. -->
<!-- 'Notify me' 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. --> 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. <!-- 'Show more' should be translated with the same localized wording that YouTube displays.
This button usually appears when searching for a YT creator. --> This button usually appears when searching for a YT creator. -->
<!-- https://logos.fandom.com/wiki/YouTube/Yoodles --> <!-- 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. --> <!-- '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. --> <!-- 'share' should be translated using the same localized wording YouTube displays for the button. -->
</patch> </patch>
<patch id="layout.hide.suggestedvideoendscreen.disableSuggestedVideoEndScreenResourcePatch"> <patch id="layout.hide.endscreensuggestion.hideEndScreenSuggestedVideoPatch">
</patch> </patch>
<patch id="layout.hide.time.hideTimestampPatch"> <patch id="layout.hide.time.hideTimestampPatch">
</patch> </patch>
@@ -208,6 +208,7 @@ Second \"item\" text"</string>
<patch id="misc.zoomhaptics.zoomHapticsPatch"> <patch id="misc.zoomhaptics.zoomHapticsPatch">
</patch> </patch>
<patch id="video.audio.forceOriginalAudioPatch"> <patch id="video.audio.forceOriginalAudioPatch">
<!-- 'Spoof video streams' should be the same translation used for revanced_spoof_video_streams_screen_title -->
</patch> </patch>
<patch id="video.quality.rememberVideoQualityPatch"> <patch id="video.quality.rememberVideoQualityPatch">
<!-- Translations should use the same text as revanced_custom_playback_speeds_auto --> <!-- 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 id="interaction.seekbar.enableSlideToSeekPatch">
</patch> </patch>
<patch id="misc.fix.playback.spoofVideoStreamsPatch"> <patch id="misc.fix.playback.spoofVideoStreamsPatch">
<!-- 'no auth' means no authentication -->
</patch> </patch>
</app> </app>
<app id="twitch"> <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_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_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_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_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ə bildiriş göstərmə</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. <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> Gözlənilməz hallardan xəbərdar olmayacaqsınız."</string>
</patch> </patch>
<patch id="layout.hide.general.hideLayoutComponentsPatch"> <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_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_on">Albom kartları gizlidir</string>
<string name="revanced_hide_album_cards_summary_off">Albom kartları göstərilir</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> <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. <!-- 'Join' should be translated using the same localized wording YouTube displays.
This appears in the video player for certain videos. --> 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_on">Düymə gizlidir</string>
<string name="revanced_hide_join_membership_button_summary_off">Düymə göstərilir</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. --> <!-- '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_title">\"Sizin üçün\" bölməsin gizlət</string>
<string name="revanced_hide_for_you_shelf_summary_on">Bölmə gizlidir</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">Bölmə göstərilir</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. <!-- '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. --> 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_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_on">Düymə gizlidir</string>
<string name="revanced_hide_notify_me_button_summary_off">Düymə göstərilir</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. --> <!-- 'People also watched' 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_title">\"İnsanlar həmçinin izləyiblər\" etiketin gizlət</string>
<string name="revanced_hide_search_result_recommendations_summary_on">Tövsiyələr gizlidir</string> <string name="revanced_hide_search_result_recommendations_summary_on">Etiket gizlidir</string>
<string name="revanced_hide_search_result_recommendations_summary_off">Tövsiyələr göstərilir</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. <!-- 'Show more' should be translated with the same localized wording that YouTube displays.
This button usually appears when searching for a YT creator. --> 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> <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_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_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_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_on">Genişləndirilən kart gizlidir</string>
<string name="revanced_hide_expandable_chip_summary_off">ılan kartlar görünür</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_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_on">İcma elanları gizlədilib</string>
<string name="revanced_hide_community_posts_summary_off">İcma elanları göstərilir</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_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_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_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_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_subscribers_community_guidelines_summary_off">Abunəliklərin icma təlimatları göstərilir</string>
<string name="revanced_hide_channel_member_shelf_title">Kanal üzvü bölməsin gizlət</string> <string name="revanced_hide_channel_member_shelf_title">Kanal üzvü bölməsin gizlət</string>
@@ -280,63 +277,63 @@ 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_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_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_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_title">Atributları 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_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 bölmələri göstərilir</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">Bölümlər bölməsini gizlət</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_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_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_title">\'Bu məzmun necə hazırlanıb\'ı 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_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əzmun necə hazırlanıb\" bölməsi görünür</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ı kəşf et\' bölməsini gizlət</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ı kəşf et\" bölməsi gizlədilir</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ı kəşf et\" bölməsi göstərilir</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ı bölməsini gizlət</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_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_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_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_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_key_concepts_section_summary_off">Əsas anlayışlar bölməsi görünür</string>
<string name="revanced_hide_transcript_section_title">Transkripsiya bölməsini gizlət</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_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_transcript_section_summary_off">Transkripsiya bölməsi göstərilir</string>
<string name="revanced_hide_description_components_screen_title">Video açıqlaması</string> <string name="revanced_hide_description_components_screen_title">Video açıqlaması</string>
<string name="revanced_hide_description_components_screen_summary">Video açıqlaması elementlərini gizlət və ya göstər</string> <string name="revanced_hide_description_components_screen_summary">Video açıqlaması elementlərini gizlət və ya göstər</string>
<string name="revanced_hide_filter_bar_screen_title">Filtr çubuğu</string> <string name="revanced_hide_filter_bar_screen_title">Filtr çubuğu</string>
<string name="revanced_hide_filter_bar_screen_summary">Axında, axtarışda və əlaqəli videolardakı filtr çubuğunu gizlət və ya göstər</string> <string name="revanced_hide_filter_bar_screen_summary">Axında, axtarış nəticələrində və əlaqəli videolarda filtr cərgəsin gizlət və ya göstər</string>
<string name="revanced_hide_filter_bar_feed_in_feed_title">Axında gizlət</string> <string name="revanced_hide_filter_bar_feed_in_feed_title">Axında gizlət</string>
<string name="revanced_hide_filter_bar_feed_in_feed_summary_on">Axında gizlidir</string> <string name="revanced_hide_filter_bar_feed_in_feed_summary_on">Axında gizlidir</string>
<string name="revanced_hide_filter_bar_feed_in_feed_summary_off">Axında göstərilir</string> <string name="revanced_hide_filter_bar_feed_in_feed_summary_off">Axında göstərilir</string>
<string name="revanced_hide_filter_bar_feed_in_search_title">Axtarışda gizlət</string> <string name="revanced_hide_filter_bar_feed_in_search_title">Axtarış nəticələrində gizlət</string>
<string name="revanced_hide_filter_bar_feed_in_search_summary_on">Axtarışda gizlidir</string> <string name="revanced_hide_filter_bar_feed_in_search_summary_on">Axtarış nəticələrində gizlədilib</string>
<string name="revanced_hide_filter_bar_feed_in_search_summary_off">Axtarışda görünür</string> <string name="revanced_hide_filter_bar_feed_in_search_summary_off">Axtarış nəticələrində göstərilir</string>
<string name="revanced_hide_filter_bar_feed_in_related_videos_title">Əlaqəli videolarda gizlət</string> <string name="revanced_hide_filter_bar_feed_in_related_videos_title">Əlaqəli videolarda gizlət</string>
<string name="revanced_hide_filter_bar_feed_in_related_videos_summary_on">Əlaqəli videolarda gizlidir</string> <string name="revanced_hide_filter_bar_feed_in_related_videos_summary_on">Əlaqəli videolarda gizlidir</string>
<string name="revanced_hide_filter_bar_feed_in_related_videos_summary_off">Əlaqəli videolarda görünür</string> <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_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_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_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_on">Söhbət yekunu gizlidir </string>
<string name="revanced_hide_comments_chat_summary_summary_off">\'Söhbət yekunu\'stərilir</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_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_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ığıstərilir</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_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_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_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_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_on">Short 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_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_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_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_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_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_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_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 --> <!-- https://logos.fandom.com/wiki/YouTube/Yoodles -->
<string name="revanced_hide_doodles_title">YouTube Doodle-ları gizlət</string> <string name="revanced_hide_doodles_title">YouTube Doodle-ları gizlət</string>
<string name="revanced_hide_doodles_summary_on">Axtarış çubuğu Doodle-ları gizlidir</string> <string name="revanced_hide_doodles_summary_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_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_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_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_on">Video təsvirində alış-veriş linkləri gizlədilib</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_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. --> <!-- '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_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_on">Kanal səhifəsindəki 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_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_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_on">Veb axtarış nəticələri gizlədilir</string>
<string name="revanced_hide_web_search_results_summary_off">Veb axtarış nəticələri göstərilir</string> <string name="revanced_hide_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_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_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_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_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_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> <string name="revanced_copy_video_url_timestamp_summary_off">Düymə göstərilmir</string>
</patch> </patch>
<patch id="interaction.dialog.removeViewerDiscretionDialogPatch"> <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_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_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_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_on">Endirin 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_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' --> <!-- '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_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> <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>
<patch id="interaction.swipecontrols.swipeControlsResourcePatch"> <patch id="interaction.swipecontrols.swipeControlsResourcePatch">
<string name="revanced_swipe_brightness_title">Parlaqlıq jestini aktivləşdir</string> <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_on">"Tam ekran parlaqlıq sürüşdürməsi aktivdir
<string name="revanced_swipe_brightness_summary_off">Parlaqlıq sürüşdürmə qeyri-aktivdir</string>
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_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_on">"Tam ekran səs sürüşdürməsi aktivdir
<string name="revanced_swipe_volume_summary_off">Səs səviyyəsin sürüşdürmə qeyri-aktivdir</string>
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_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_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> <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_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_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_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_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_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_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_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_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_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_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_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_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> <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"> <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_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_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_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_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> <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_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_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_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. --> <!-- '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_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 <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> 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_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_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_on">Etiketlər gizlidir</string>
<string name="revanced_hide_navigation_button_labels_summary_off">Etiketlər göstərilir</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_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> <string name="revanced_hide_shorts_navigation_bar_summary_off">Fəaliyyət çubuğu göstərilir</string>
</patch> </patch>
<patch id="layout.hide.suggestedvideoendscreen.disableSuggestedVideoEndScreenResourcePatch"> <patch id="layout.hide.endscreensuggestion.hideEndScreenSuggestedVideoPatch">
<string name="revanced_disable_suggested_video_end_screen_title">Təklif edilən video bitiş ekranın qapadın</string> <string name="revanced_end_screen_suggested_video_title">Son ekran bildirilən videonu gizlət</string>
<string name="revanced_disable_suggested_video_end_screen_summary_on">Təklif olunan videolar qeyri-aktiv ediləcək</string> <string name="revanced_end_screen_suggested_video_summary_on">"Avtomatik oynatma qapadılanda son ekran bildirilən video gizlədilir
<string name="revanced_disable_suggested_video_end_screen_summary_off">Təklif olunan videolar göstəriləcək</string>
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>
<patch id="layout.hide.time.hideTimestampPatch"> <patch id="layout.hide.time.hideTimestampPatch">
<string name="revanced_hide_timestamp_title">Video vaxt möhürünü gizlət</string> <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. --> <!-- 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_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_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> <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. --> <!-- 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> <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_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_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_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">Bəyənməmələr 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_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> 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 gizlidir</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_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_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əylə 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' --> <!-- 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_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> <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_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> <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' --> <!-- 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_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_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">Ö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_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_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">Birbaşa ötürüləndə ani bildiriş göstər</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_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_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">Bölümsüz video uzunluğun göstər</string>
<string name="revanced_sb_general_time_without_sum_on">Video uzunluğu bütün bölümləri silir, tam video uzunluğu yanaşı mötərizədə göstərilir</string> <string name="revanced_sb_general_time_without_sum_on">Video uzunluğu bütün bölümləri 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_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_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_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_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> <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_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">Birbaşa ötür</string>
<string name="revanced_sb_skip_automatically_once">Bir dəfə avtomatik ö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_seekbaronly">İrəliləmə cizgisində göstər</string>
<string name="revanced_sb_skip_ignore">Qapadın</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> <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_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_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_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_start">Başlanğıc</string>
<string name="revanced_sb_new_segment_mark_end">bit</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_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_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_time_end">Bölümün bitmə vaxtı</string>
<string name="revanced_sb_new_segment_confirm_title">Vaxtlar düzgündür?</string> <string name="revanced_sb_new_segment_confirm_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_new_segment_edit_by_hand_parse_error">Yanlış vaxt verilmişdir</string>
<string name="revanced_sb_stats">Statistikalar</string> <string name="revanced_sb_stats">Statistikalar</string>
<!-- Shown in the settings preferences, and translations can be any text length. --> <!-- 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_loading">Yüklənir...</string>
<string name="revanced_sb_stats_sb_disabled">SponsorBlock qapadıldı</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> <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_2">Videonun ortası</string>
<string name="revanced_alt_thumbnail_stills_time_entry_3">Videonun sonu</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. --> <!-- 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">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 əlçatan deyil</string> <string name="revanced_alt_thumbnail_dearrow_error_generic">DeArrow müvəqqəti olaraq mövcud deyil</string>
</patch> </patch>
<patch id="misc.announcements.announcementsPatch"> <patch id="misc.announcements.announcementsPatch">
<string name="revanced_announcements_title">ReVanced elanlarını göstər</string> <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_on">Elanlar başlanğıcda göstərilir</string>
<string name="revanced_announcements_summary_off">Elanlar ılışda göstərilmir</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_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_connection_failed">Elan provayderinə bağlanmaq olmadı</string>
<string name="revanced_announcements_dialog_dismiss">Ləğv et</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> <string name="revanced_disable_zoom_haptics_summary_off">Reaksiya aktivdir</string>
</patch> </patch>
<patch id="video.audio.forceOriginalAudioPatch"> <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_title">Orijinal səs dilini zorla</string>
<string name="revanced_force_original_audio_summary_on">Orijinal səs istifadəsi</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_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>
<patch id="video.quality.rememberVideoQualityPatch"> <patch id="video.quality.rememberVideoQualityPatch">
<!-- Translations should use the same text as revanced_custom_playback_speeds_auto --> <!-- 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> 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_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> <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_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_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> <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_on">Журналы адладкі ўключаюць трасіроўку стэка</string>
<string name="revanced_debug_stacktrace_summary_off">Журналы адладкі не ўключаюць трасіроўку стэка</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_title">Паказаць тост пры памылцы ReVanced</string>
<string name="revanced_debug_toast_on_error_summary_on">Тост паказваецца, калі ўзнікае памылка</string> <string name="revanced_debug_toast_on_error_summary_on">Паказваць toast у выпадку памылкі</string>
<string name="revanced_debug_toast_on_error_summary_off">Тост не паказваецца, калі ўзнікае памылка</string> <string name="revanced_debug_toast_on_error_summary_off">Не паказваць toast у выпадку памылкі</string>
<string name="revanced_debug_toast_on_error_user_dialog_message">"Адключэнне паведамленняў пра памылкі схавае ўсе апавяшчэнні ReVanced пра памылкі. <string name="revanced_debug_toast_on_error_user_dialog_message">"Адключэнне паведамленняў пра памылкі схавае ўсе апавяшчэнні ReVanced пра памылкі.
Вы не будзеце атрымліваць апавяшчэнні пра нечаканыя падзеі."</string> Вы не будзеце атрымліваць апавяшчэнні пра нечаканыя падзеі."</string>
</patch> </patch>
<patch id="layout.hide.general.hideLayoutComponentsPatch"> <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_title">Схаваць карты альбома</string>
<string name="revanced_hide_album_cards_summary_on">Карткі альбомаў схаваныя</string> <string name="revanced_hide_album_cards_summary_on">Карткі альбомаў схаваныя</string>
<string name="revanced_hide_album_cards_summary_off">Паказваюцца альбомныя карткі</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> <string name="revanced_hide_horizontal_shelves_summary_off">Паказаны паліцы</string>
<!-- 'Join' should be translated using the same localized wording YouTube displays. <!-- 'Join' should be translated using the same localized wording YouTube displays.
This appears in the video player for certain videos. --> 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_on">Кнопка схавана</string>
<string name="revanced_hide_join_membership_button_summary_off">Паказана кнопка</string> <string name="revanced_hide_join_membership_button_summary_off">Паказана кнопка</string>
<!-- 'For you' should be translated using the same localized wording YouTube displays. --> <!-- 'For you' should be translated using the same localized wording YouTube displays. -->
<string name="revanced_hide_for_you_shelf_title">Схаваць паліцу \"Для вас\" на старонцы канала</string> <string name="revanced_hide_for_you_shelf_title">Схаваць паліцу «Для вас»</string>
<string name="revanced_hide_for_you_shelf_summary_on">Паліца схаваная</string> <string name="revanced_hide_for_you_shelf_summary_on">Паліца на старонцы канала схаваная</string>
<string name="revanced_hide_for_you_shelf_summary_off">Паказана паліца</string> <string name="revanced_hide_for_you_shelf_summary_off">Паліца на старонцы канала паказаная</string>
<!-- 'Notify me' 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. --> This item appear in the subscription feed for future livestreams or unreleased videos. -->
<string name="revanced_hide_notify_me_button_title">Схаваць кнопку \"Паведаміць мне\"</string> <string name="revanced_hide_notify_me_button_title">Схаваць кнопку \"Паведаміць мне\"</string>
<string name="revanced_hide_notify_me_button_summary_on">Кнопка схавана</string> <string name="revanced_hide_notify_me_button_summary_on">Кнопка схавана</string>
<string name="revanced_hide_notify_me_button_summary_off">Паказана кнопка</string> <string name="revanced_hide_notify_me_button_summary_off">Паказана кнопка</string>
<!-- '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. -->
<string name="revanced_hide_search_result_recommendations_title">Схаваць рэкамендацыі \"Людзі таксама глядзелі\"</string> <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_on">Надпіс схаваны</string>
<string name="revanced_hide_search_result_recommendations_summary_off">Паказаны рэкамендацыі</string> <string name="revanced_hide_search_result_recommendations_summary_off">Надпіс паказаны</string>
<!-- 'Show more' should be translated with the same localized wording that YouTube displays. <!-- 'Show more' should be translated with the same localized wording that YouTube displays.
This button usually appears when searching for a YT creator. --> This button usually appears when searching for a YT creator. -->
<string name="revanced_hide_show_more_button_title">Схаваць кнопку \"Паказаць больш\"</string> <string name="revanced_hide_show_more_button_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_on">Паліца для чыпсаў схаваная</string>
<string name="revanced_hide_chips_shelf_summary_off">Паказана паліца для чыпсаў</string> <string name="revanced_hide_chips_shelf_summary_off">Паказана паліца для чыпсаў</string>
<string name="revanced_hide_expandable_chip_title">Схаваць пашыраную картку пад відэа</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_on">Разгортваемая картка схаваная</string>
<string name="revanced_hide_expandable_chip_summary_off">Пашыраныя карткі паказаныя</string> <string name="revanced_hide_expandable_chip_summary_off">Разгортваемая картка паказаная</string>
<string name="revanced_hide_community_posts_title">Схаваць паведамленні ў супольнасці</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_on">Паведамленні ў супольнасці схаваны</string>
<string name="revanced_hide_community_posts_summary_off">Паказваюцца паведамленні ў супольнасці</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_title">Схаваць правілы супольнасці</string>
<string name="revanced_hide_community_guidelines_summary_on">Правілы супольнасці схаваныя</string> <string name="revanced_hide_community_guidelines_summary_on">Правілы супольнасці схаваныя</string>
<string name="revanced_hide_community_guidelines_summary_off">Паказаны правілы супольнасці</string> <string name="revanced_hide_community_guidelines_summary_off">Паказаны правілы супольнасці</string>
<string name="revanced_hide_subscribers_community_guidelines_title">Схаваць правілы супольнасці падпісчыкаў</string> <string name="revanced_hide_subscribers_community_guidelines_title">Схаваць рэкамендацыі для падпісчыкаў</string>
<string name="revanced_hide_subscribers_community_guidelines_summary_on">Правілы супольнасці падпісчыкаў схаваны</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_subscribers_community_guidelines_summary_off">Паказаны правілы супольнасці падпісчыкаў</string>
<string name="revanced_hide_channel_member_shelf_title">Схаваць паліцу ўдзельніка канала</string> <string name="revanced_hide_channel_member_shelf_title">Схаваць паліцу ўдзельніка канала</string>
@@ -280,63 +277,63 @@ Second \"item\" text"</string>
<string name="revanced_hide_artist_cards_title">Схаваць карткі выканаўцаў</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_on">Карткі выканаўцаў схаваныя</string>
<string name="revanced_hide_artist_cards_summary_off">Паказваюцца карткі выканаўцаў</string> <string name="revanced_hide_artist_cards_summary_off">Паказваюцца карткі выканаўцаў</string>
<string name="revanced_hide_attributes_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_on">Раздзелы «Папулярныя месцы», «Гульні», «Музыка» і «Людзі, якіх згадвалі» схаваныя</string>
<string name="revanced_hide_attributes_section_summary_off">Паказваюцца раздзелы \"Выбраныя месцы\", Гульні і Музыка</string> <string name="revanced_hide_attributes_section_summary_off">Раздзелы «Папулярныя месцы», «Гульні», «Музыка» і «Людзі, якіх згадвалі» паказаныя</string>
<string name="revanced_hide_chapters_section_title">Схаваць раздзел \"Раздзелы\"</string> <string name="revanced_hide_chapters_section_title">Схаваць раздзелы</string>
<string name="revanced_hide_chapters_section_summary_on">Раздзел раздзелаў схаваны</string> <string name="revanced_hide_chapters_section_summary_on">Раздзел раздзелаў схаваны</string>
<string name="revanced_hide_chapters_section_summary_off">Паказваецца раздзел раздзелаў</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_title">Схаваць «Як быў створаны гэты кантэнт»</string>
<string name="revanced_hide_how_this_was_made_section_summary_on">Раздзел «Як быў зроблены гэты кантэнт» схаваны</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_how_this_was_made_section_summary_off">Раздзел «Як быў створаны гэты кантэнт» паказаны</string>
<string name="revanced_hide_podcast_section_title">Схаваць раздзел \"Даследаваць падкаст\"</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_on">Раздзел «Пазнаёмцеся з падкастам» схаваны</string>
<string name="revanced_hide_podcast_section_summary_off">Паказаны раздзел \"Агляд падкаста\"</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_title">Схаваць інфармацыйныя карткі</string>
<string name="revanced_hide_info_cards_section_summary_on">Раздзел інфармацыйных картак схаваны</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_info_cards_section_summary_off">Паказваецца раздзел інфармацыйных карт</string>
<string name="revanced_hide_key_concepts_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_on">Раздзел «Ключавыя канцэпцыі» схаваны</string>
<string name="revanced_hide_key_concepts_section_summary_off">Паказаны раздзел «Ключавыя паняцці»</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_title">Схаваць стэнаграму</string>
<string name="revanced_hide_transcript_section_summary_on">Раздзел стэнаграмы схаваны</string> <string name="revanced_hide_transcript_section_summary_on">Раздзел стэнаграмы схаваны</string>
<string name="revanced_hide_transcript_section_summary_off">Паказваецца раздзел стэнаграмы</string> <string name="revanced_hide_transcript_section_summary_off">Паказваецца раздзел стэнаграмы</string>
<string name="revanced_hide_description_components_screen_title">Апісанне відэа</string> <string name="revanced_hide_description_components_screen_title">Апісанне відэа</string>
<string name="revanced_hide_description_components_screen_summary">Схаваць або паказаць кампаненты апісання відэа</string> <string name="revanced_hide_description_components_screen_summary">Схаваць або паказаць кампаненты апісання відэа</string>
<string name="revanced_hide_filter_bar_screen_title">Панэль фільтраў</string> <string name="revanced_hide_filter_bar_screen_title">Панэль фільтраў</string>
<string name="revanced_hide_filter_bar_screen_summary">Схаваць або паказаць панэль фільтраў у стужцы, пошуку і звязаных відэа</string> <string name="revanced_hide_filter_bar_screen_summary">Схаваць ці паказаць панэль фільтраў у стужцы, выніках пошуку і звязаных відэа</string>
<string name="revanced_hide_filter_bar_feed_in_feed_title">Схаваць у карме</string> <string name="revanced_hide_filter_bar_feed_in_feed_title">Схаваць у карме</string>
<string name="revanced_hide_filter_bar_feed_in_feed_summary_on">Схаваны ў стужцы</string> <string name="revanced_hide_filter_bar_feed_in_feed_summary_on">Схаваны ў стужцы</string>
<string name="revanced_hide_filter_bar_feed_in_feed_summary_off">Паказваецца ў стужцы</string> <string name="revanced_hide_filter_bar_feed_in_feed_summary_off">Паказваецца ў стужцы</string>
<string name="revanced_hide_filter_bar_feed_in_search_title">Схавацца ў пошуку</string> <string name="revanced_hide_filter_bar_feed_in_search_title">Схаваць у выніках пошуку</string>
<string name="revanced_hide_filter_bar_feed_in_search_summary_on">Схаваны ў пошуку</string> <string name="revanced_hide_filter_bar_feed_in_search_summary_on">Схавана ў выніках пошуку</string>
<string name="revanced_hide_filter_bar_feed_in_search_summary_off">Паказваецца ў пошуку</string> <string name="revanced_hide_filter_bar_feed_in_search_summary_off">Паказана ў выніках пошуку</string>
<string name="revanced_hide_filter_bar_feed_in_related_videos_title">Схаваць у звязаных відэа</string> <string name="revanced_hide_filter_bar_feed_in_related_videos_title">Схаваць у звязаных відэа</string>
<string name="revanced_hide_filter_bar_feed_in_related_videos_summary_on">Схавана ў звязаных відэа</string> <string name="revanced_hide_filter_bar_feed_in_related_videos_summary_on">Схавана ў звязаных відэа</string>
<string name="revanced_hide_filter_bar_feed_in_related_videos_summary_off">Паказана ў звязаных відэа</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_title">Каментарыі</string>
<string name="revanced_comments_screen_summary">Схаваць або паказаць кампаненты раздзела каментарыяў</string> <string name="revanced_comments_screen_summary">Схаваць або паказаць кампаненты раздзела каментарыяў</string>
<string name="revanced_hide_comments_chat_summary_title">Схаваць \"Зводка чата\" </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_on">Зводка чата схаваная</string>
<string name="revanced_hide_comments_chat_summary_summary_off">«Агляд чата» паказаны</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_title">Схаваць загаловак \"Каментарыі ўдзельнікаў\"</string>
<string name="revanced_hide_comments_by_members_header_summary_on">Загаловак \"Каментарыі ўдзельнікаў\" схаваны</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_off">Загаловак «Каментары ўдзельнікаў» паказаны</string>
<string name="revanced_hide_comments_section_title">Схаваць раздзел каментарыяў</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_on">Раздзел каментарыяў схаваны</string>
<string name="revanced_hide_comments_section_summary_off">Паказваецца раздзел каментарыяў</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_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_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_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_title">Схаваць каментарый для папярэдняга прагляду</string>
<string name="revanced_hide_comments_preview_comment_summary_on">Каментарый перад праглядам схаваны</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_preview_comment_summary_off">Паказваецца папярэдні прагляд каментарыя</string>
<string name="revanced_hide_comments_thanks_button_title">Схаваць кнопку \"Дзякуй\"\"</string> <string name="revanced_hide_comments_thanks_button_title">Схаваць кнопку \"Дзякуй\"\"</string>
<string name="revanced_hide_comments_thanks_button_summary_on">Кнопка падзякі схавана</string> <string name="revanced_hide_comments_thanks_button_summary_on">Кнопка падзякі схавана</string>
<string name="revanced_hide_comments_thanks_button_summary_off">Паказана кнопка падзякі</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 --> <!-- https://logos.fandom.com/wiki/YouTube/Yoodles -->
<string name="revanced_hide_doodles_title">Схаваць YouTube Doodles</string> <string name="revanced_hide_doodles_title">Схаваць YouTube Doodles</string>
<string name="revanced_hide_doodles_summary_on">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_on">Паліца крамы схавана</string>
<string name="revanced_hide_player_store_shelf_summary_off">Паліца крамы паказана</string> <string name="revanced_hide_player_store_shelf_summary_off">Паліца крамы паказана</string>
<string name="revanced_hide_shopping_links_title">Схаваць спасылкі на пакупкі ў апісанні відэа</string> <string name="revanced_hide_shopping_links_title">Схаваць спасылкі на пакупкі ў апісанні відэа</string>
<string name="revanced_hide_shopping_links_summary_on">Спасылкі на пакупкі схаваныя</string> <string name="revanced_hide_shopping_links_summary_on">Спасылкі на пакупкі ў апісанні відэа схаваныя</string>
<string name="revanced_hide_shopping_links_summary_off">Паказваюцца спасылкі на пакупкі</string> <string name="revanced_hide_shopping_links_summary_off">Спасылкі на пакупкі ў апісанні відэа паказаныя</string>
<!-- 'Visit store' should be translated with the same localized wording that YouTube displays. --> <!-- '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_title">Схавайце кнопку \"Наведайце краму\" на старонках канала</string>
<string name="revanced_hide_visit_store_button_summary_on">Кнопка схавана</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_off">Кнопка на старонцы канала паказаная</string>
<string name="revanced_hide_web_search_results_title">Схаваць вынікі вэб-пошуку</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_on">Вынікі вэб-пошуку схаваныя</string>
<string name="revanced_hide_web_search_results_summary_off">Паказваюцца вынікі вэб-пошуку</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_success">URL скапіраваны ў буфер абмену</string>
<string name="revanced_share_copy_url_timestamp_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_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_summary_off">Кнопка не паказваецца</string>
<string name="revanced_copy_video_url_timestamp_title">Паказаць кнопку URL-адрас з часовай пазнакай</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> <string name="revanced_copy_video_url_timestamp_summary_off">Кнопка не паказваецца</string>
</patch> </patch>
<patch id="interaction.dialog.removeViewerDiscretionDialogPatch"> <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_title">Знешнія загрузкі</string>
<string name="revanced_external_downloader_screen_summary">Налады для выкарыстання вонкавага загрузніка</string> <string name="revanced_external_downloader_screen_summary">Налады для выкарыстання вонкавага загрузніка</string>
<string name="revanced_external_downloader_title">Паказаць знешнюю кнопку загрузкі</string> <string name="revanced_external_downloader_title">Паказаць знешнюю кнопку загрузкі</string>
<string name="revanced_external_downloader_summary_on">Кнопка загрузкі паказваецца ў плэеры</string> <string name="revanced_external_downloader_summary_on">Кнопка загрузкі ў прайгравальніку паказаная</string>
<string name="revanced_external_downloader_summary_off">Кнопка загрузкі не адлюстроўваецца ў плэеры</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' --> <!-- 'download action button' should be translated using the same wording as the translation of 'revanced_hide_download_button_title' -->
<string name="revanced_external_downloader_action_button_title">Перавызначыць кнопку дзеянні спампоўкі</string> <string name="revanced_external_downloader_action_button_title">Перавызначыць кнопку дзеянні спампоўкі</string>
<string name="revanced_external_downloader_action_button_summary_on">Кнопка \"Спампаваць\" адкрывае ваш знешні загрузнік</string> <string name="revanced_external_downloader_action_button_summary_on">Кнопка \"Спампаваць\" адкрывае ваш знешні загрузнік</string>
@@ -484,11 +481,15 @@ Second \"item\" text"</string>
</patch> </patch>
<patch id="interaction.swipecontrols.swipeControlsResourcePatch"> <patch id="interaction.swipecontrols.swipeControlsResourcePatch">
<string name="revanced_swipe_brightness_title">Уключыць жэст яркасці</string> <string name="revanced_swipe_brightness_title">Уключыць жэст яркасці</string>
<string name="revanced_swipe_brightness_summary_on">Правядзенне па яркасці ўключана</string> <string name="revanced_swipe_brightness_summary_on">"Поўнаэкранны жэст правядзення для яркасці ўключаны
<string name="revanced_swipe_brightness_summary_off">Правядзенне пальцам па яркасці адключана</string>
Наладжвайце яркасць, праводзячы вертыкальна па левым баку экрана"</string>
<string name="revanced_swipe_brightness_summary_off">Поўнаэкранны жэст правядзення для яркасці выключаны</string>
<string name="revanced_swipe_volume_title">Уключыць жэст гучнасці</string> <string name="revanced_swipe_volume_title">Уключыць жэст гучнасці</string>
<string name="revanced_swipe_volume_summary_on">Правядзенне пальцам па гучнасці ўключана</string> <string name="revanced_swipe_volume_summary_on">"Правядзенне пальцам для рэгулявання гучнасці ва ўвесь экран уключана
<string name="revanced_swipe_volume_summary_off">Правядзенне пальцам па гучнасці адключана</string>
Рэгулюйце гучнасць, праводзячы пальцам вертыкальна па правай частцы экрана"</string>
<string name="revanced_swipe_volume_summary_off">Правядзенне пальцам для рэгулявання гучнасці ва ўвесь экран выключана</string>
<string name="revanced_swipe_press_to_engage_title">Уключыць жэст \"націсканне для правядзення пальцам\"</string> <string name="revanced_swipe_press_to_engage_title">Уключыць жэст \"націсканне для правядзення пальцам\"</string>
<string name="revanced_swipe_press_to_engage_summary_on">Правядзенне пальцам уключана</string> <string name="revanced_swipe_press_to_engage_summary_on">Правядзенне пальцам уключана</string>
<string name="revanced_swipe_press_to_engage_summary_off">Правядзенне пальцам адключана</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_title">Уключыць жэст аўтаматычнай яркасці</string>
<string name="revanced_swipe_lowest_value_enable_auto_brightness_summary_on">Правядзіце пальцам уніз да самага нізкага значэння яркасці, каб уключыць аўтаматычную яркасць</string> <string name="revanced_swipe_lowest_value_enable_auto_brightness_summary_on">Правядзіце пальцам уніз да самага нізкага значэння яркасці, каб уключыць аўтаматычную яркасць</string>
<string name="revanced_swipe_lowest_value_enable_auto_brightness_summary_off">Правядзенне пальцам уніз да самага нізкага значэння не ўключае аўтаматычную яркасць</string> <string name="revanced_swipe_lowest_value_enable_auto_brightness_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_title">Тайм-аўт накладання пальцам</string>
<string name="revanced_swipe_overlay_timeout_summary">Працягласць бачнага накладання ў мілісекундах</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_title">Непразрыстасць фону накладкі пракруткі</string>
<string name="revanced_swipe_overlay_background_opacity_summary">Значэнне непразрыстасці паміж 0-100</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_overlay_background_opacity_invalid_toast">Непразрыстасць пракруткі павінна быць паміж 0-100</string>
<string name="revanced_swipe_threshold_title">Парог велічыні пальцам</string> <string name="revanced_swipe_threshold_title">Парог велічыні пальцам</string>
<string name="revanced_swipe_threshold_summary">Велічыня парогавага значэння для правядзення пальцам</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_title">Уключыць зьмену відэа праз правядзенне пальцам</string>
<string name="revanced_swipe_change_video_summary_on">Правядзенне пальцам у рэжыме поўнага экрана зьменіць відэа на наступнае/папярэдняе</string> <string name="revanced_swipe_change_video_summary_on">Правядзенне пальцам у рэжыме поўнага экрана зьменіць відэа на наступнае/папярэдняе</string>
<string name="revanced_swipe_change_video_summary_off">Правядзенне пальцам у рэжыме поўнага экрана не зьменіць відэа на наступнае/папярэдняе</string> <string name="revanced_swipe_change_video_summary_off">Правядзенне пальцам у рэжыме поўнага экрана не зьменіць відэа на наступнае/папярэдняе</string>
@@ -523,6 +527,9 @@ Second \"item\" text"</string>
<patch id="layout.buttons.action.hideButtonsPatch"> <patch id="layout.buttons.action.hideButtonsPatch">
<string name="revanced_hide_buttons_screen_title">Кнопкі дзеянняў</string> <string name="revanced_hide_buttons_screen_title">Кнопкі дзеянняў</string>
<string name="revanced_hide_buttons_screen_summary">Схаваць або паказаць кнопкі пад відэа</string> <string name="revanced_hide_buttons_screen_summary">Схаваць або паказаць кнопкі пад відэа</string>
<string name="revanced_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_title">Схаваць \"Падабаецца\" і \"Не падабаецца\"</string>
<string name="revanced_hide_like_dislike_button_summary_on">Кнопкі \"Падабаецца\" і \"Не падабаецца\" схаваны</string> <string name="revanced_hide_like_dislike_button_summary_on">Кнопкі \"Падабаецца\" і \"Не падабаецца\" схаваны</string>
<string name="revanced_hide_like_dislike_button_summary_off">Паказваюцца кнопкі \"Падабаецца\" і \"Не падабаецца\"</string> <string name="revanced_hide_like_dislike_button_summary_off">Паказваюцца кнопкі \"Падабаецца\" і \"Не падабаецца\"</string>
@@ -575,12 +582,18 @@ Second \"item\" text"</string>
<string name="revanced_hide_subscriptions_button_title">Схаваць падпіскі</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_on">Кнопка \"Падпіскі\" схавана</string>
<string name="revanced_hide_subscriptions_button_summary_off">Паказана кнопка \"Падпіскі\"</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. --> <!-- '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_title">Пераключальнік \"Стварыць з апавяшчэннямі\"</string>
<string name="revanced_switch_create_with_notifications_button_summary_on">"Кнопка «Стварыць» заменена кнопкай «Апавяшчэнні» <string name="revanced_switch_create_with_notifications_button_summary_on">"Кнопка «Стварыць» заменена кнопкай «Апавяшчэнні»
Заўвага: Уключэнне гэтага таксама прымусова схавае відэарэкламу"</string> Заўвага: Уключэнне гэтага таксама прымусова схавае відэарэкламу"</string>
<string name="revanced_switch_create_with_notifications_button_summary_off">Кнопка \"Стварыць\" не ўзаемадзейнічае з кнопкай \"Апавяшчэнні\"</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_title">Схаваць меткі кнопак навігацыі</string>
<string name="revanced_hide_navigation_button_labels_summary_on">Цэтлікі схаваныя</string> <string name="revanced_hide_navigation_button_labels_summary_on">Цэтлікі схаваныя</string>
<string name="revanced_hide_navigation_button_labels_summary_off">Этыкеткі паказаны</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_on">Панэль навігацыі схавана</string>
<string name="revanced_hide_shorts_navigation_bar_summary_off">Паказана панэль навігацыі</string> <string name="revanced_hide_shorts_navigation_bar_summary_off">Паказана панэль навігацыі</string>
</patch> </patch>
<patch id="layout.hide.suggestedvideoendscreen.disableSuggestedVideoEndScreenResourcePatch"> <patch id="layout.hide.endscreensuggestion.hideEndScreenSuggestedVideoPatch">
<string name="revanced_disable_suggested_video_end_screen_title">Адключыць канчатковы экран прапанаванага відэа</string> <string name="revanced_end_screen_suggested_video_title">Схаваць прапанаванае відэа на канчатковым экране</string>
<string name="revanced_disable_suggested_video_end_screen_summary_on">Прапанаваныя відэа будуць адключаны</string> <string name="revanced_end_screen_suggested_video_summary_on">"Прапанаванае відэа на канчатковым экране будзе схавана, калі аўтаматычнае прайграванне выключана.
<string name="revanced_disable_suggested_video_end_screen_summary_off">Будуць паказаны прапанаваныя відэа</string>
Аўтаматычнае прайграванне можна змяніць у наладах YouTube:
Налады → Прайграванне → Аўтаматычнае прайграванне наступнага відэа"</string>
<string name="revanced_end_screen_suggested_video_summary_off">Паказваць прапанаванае відэа на канчатковым экране</string>
</patch> </patch>
<patch id="layout.hide.time.hideTimestampPatch"> <patch id="layout.hide.time.hideTimestampPatch">
<string name="revanced_hide_timestamp_title">Схаваць метку часу відэа</string> <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. --> <!-- 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_timeout">Адзнакі \"Не падабаецца\" часова недаступныя (час чакання API скончыўся)</string>
<string name="revanced_ryd_failure_connection_status_code">Дызлайкі недаступныя (статус %d)</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> <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. --> <!-- Toast shown if the user enables RYD while a video is opened, and then tries to vote for the video. -->
<string name="revanced_ryd_failure_ryd_enabled_while_playing_video_then_user_voted">Перазагрузіце відэа, каб прагаласаваць з дапамогай функцыі \"Вярнуць не падабаецца YouTube\"</string> <string name="revanced_ryd_failure_ryd_enabled_while_playing_video_then_user_voted">Перазагрузіце відэа, каб прагаласаваць з дапамогай функцыі \"Вярнуць не падабаецца YouTube\"</string>
@@ -840,14 +856,14 @@ Second \"item\" text"</string>
<string name="revanced_ryd_enable_summary_on">Дызлайкі паказаны</string> <string name="revanced_ryd_enable_summary_on">Дызлайкі паказаны</string>
<string name="revanced_ryd_enable_summary_off">Дызлайкі не паказваюцца</string> <string name="revanced_ryd_enable_summary_off">Дызлайкі не паказваюцца</string>
<string name="revanced_ryd_shorts_title">Паказвайце \"не падабаецца\" на Shorts</string> <string name="revanced_ryd_shorts_title">Паказвайце \"не падабаецца\" на Shorts</string>
<string name="revanced_ryd_shorts_summary_on">Адзнакі \"не падабаецца\" ў Shorts</string> <string name="revanced_ryd_shorts_summary_on">Дызлайкі на Shorts паказаныя</string>
<string name="revanced_ryd_shorts_summary_on_disclaimer">"Непападання паказаны на Shorts <string name="revanced_ryd_shorts_summary_on_disclaimer">"Дызлайкі на Shorts паказаныя
Абмежаванне: Непападання могуць не з'яўляцца ў рэжыме інкогніта"</string> Абмежаванне: дызлайкі могуць не адлюстроўвацца ў рэжыме інкогніта"</string>
<string name="revanced_ryd_shorts_summary_off">Дызлакі схаваныя ў Shorts</string> <string name="revanced_ryd_shorts_summary_off">Дызлайкі на Shorts не паказаныя</string>
<string name="revanced_ryd_dislike_percentage_title">Дызлайкі ў працэнтах</string> <string name="revanced_ryd_dislike_percentage_title">Дызлайкі ў працэнтах</string>
<string name="revanced_ryd_dislike_percentage_summary_on">Неўпадабанні паказаны ў працэнтах</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_off">Дызлайкі паказаны лічбай</string>
<!-- Translations should use language similar to 'revanced_sb_enable_compact_skip_button' --> <!-- Translations should use language similar to 'revanced_sb_enable_compact_skip_button' -->
<string name="revanced_ryd_compact_layout_title">Кампактны дызайн кнопак «Падабаецца» і «Не падабаецца»</string> <string name="revanced_ryd_compact_layout_title">Кампактны дызайн кнопак «Падабаецца» і «Не падабаецца»</string>
<string name="revanced_ryd_compact_layout_summary_on">Кнопка \"Падабаецца\" ў стылі мінімальнай шырыні</string> <string name="revanced_ryd_compact_layout_summary_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_on">Кнопкі і элементы кіравання квадратныя</string>
<string name="revanced_sb_square_layout_sum_off">Кнопкі і элементы кіравання закруглены</string> <string name="revanced_sb_square_layout_sum_off">Кнопкі і элементы кіравання закруглены</string>
<!-- Translations should use language similar to 'revanced_ryd_compact_layout_title' --> <!-- 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_on">Кнопка \"Прапусціць\" у стылі мінімальнай шырыні</string>
<string name="revanced_sb_enable_compact_skip_button_sum_off">Кнопка \"Прапусціць\" аформлена для лепшага выгляду</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_on">Кнопка \"Прапусціць\" скрываецца праз некалькі секунд</string>
<string name="revanced_sb_enable_auto_hide_skip_segment_button_sum_off">Кнопка \"Прапусціць\" адлюстроўваецца для ўсяго сегмента</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">Паказваць toast пры пропуску</string>
<string name="revanced_sb_general_skiptoast_sum_on">Тост паказваецца, калі сегмент аўтаматычна прапускаецца. Націсніце тут, каб убачыць прыклад</string> <string name="revanced_sb_general_skiptoast_sum_on">Тост паказваецца, калі сегмент аўтаматычна прапускаецца. Націсніце тут, каб убачыць прыклад</string>
<string name="revanced_sb_general_skiptoast_sum_off">Тост не паказваецца. Націсніце тут, каб убачыць прыклад</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">Паказаць працягласць відэа без сегментаў</string>
<string name="revanced_sb_general_time_without_sum_on">Працягласць відэа мінус усе сегменты, паказана ў дужках побач з поўнай працягласцю відэа</string> <string name="revanced_sb_general_time_without_sum_on">Працягласць відэа мінус усе сегменты, паказана ў дужках побач з поўнай працягласцю відэа</string>
<string name="revanced_sb_general_time_without_sum_off">Паказана поўная даўжыня відэа</string> <string name="revanced_sb_general_time_without_sum_off">Паказана поўная даўжыня відэа</string>
<string name="revanced_sb_create_segment_category">Стварэнне новых сегментаў</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_on">Паказана кнопка \"Стварыць новы сегмент\"</string>
<string name="revanced_sb_enable_create_segment_sum_off">Кнопка \"Стварыць новы сегмент\" не паказваецца</string> <string name="revanced_sb_enable_create_segment_sum_off">Кнопка \"Стварыць новы сегмент\" не паказваецца</string>
<string name="revanced_sb_general_adjusting">Адрэгулюйце новы крок сегмента</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_skipped_multiple_segments">Прапушчаны некалькі сегментаў</string>
<string name="revanced_sb_skip_automatically">Прапусціць аўтаматычна</string> <string name="revanced_sb_skip_automatically">Прапусціць аўтаматычна</string>
<string name="revanced_sb_skip_automatically_once">Прапусціць аўтаматычна адзін раз</string> <string name="revanced_sb_skip_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_seekbaronly">Паказаць на панэлі пошуку</string>
<string name="revanced_sb_skip_ignore">Адключыць</string> <string name="revanced_sb_skip_ignore">Адключыць</string>
<string name="revanced_sb_submit_failed_invalid">Немагчыма адправіць сегмент: %s</string> <string name="revanced_sb_submit_failed_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_disabled_category">Катэгорыя адключана ў наладах. Уключыце катэгорыю для адпраўкі.</string>
<string name="revanced_sb_new_segment_title">Новы сегмент SponsorBlock</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_time_as_question">Усталяваць %s у якасці пачатку або канца новага сегмента?</string>
<string name="revanced_sb_new_segment_mark_start">пачаць</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_mark_end">Канец</string>
<string name="revanced_sb_new_segment_now">зараз</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_start">Час пачатку сегмента</string>
<string name="revanced_sb_new_segment_time_end">Час заканчэння сегмента</string> <string name="revanced_sb_new_segment_time_end">Час заканчэння сегмента</string>
<string name="revanced_sb_new_segment_confirm_title">Ці правільны час?</string> <string name="revanced_sb_new_segment_confirm_title">Ці правільны час?</string>
@@ -1289,8 +1305,8 @@ Second \"item\" text"</string>
</patch> </patch>
<patch id="misc.announcements.announcementsPatch"> <patch id="misc.announcements.announcementsPatch">
<string name="revanced_announcements_title">Паказаць аб\"явы ReVanced</string> <string name="revanced_announcements_title">Паказаць аб\"явы ReVanced</string>
<string name="revanced_announcements_summary_on">Аб\"явы паказваюцца пры запуску</string> <string name="revanced_announcements_summary_on">Анонсы пры запуску паказаны</string>
<string name="revanced_announcements_summary_off">Аб\"явы не паказваюцца пры запуску</string> <string name="revanced_announcements_summary_off">Анонсы пры запуску не паказаны</string>
<string name="revanced_announcements_enabled_summary">Паказваць аб\"явы пры запуску</string> <string name="revanced_announcements_enabled_summary">Паказваць аб\"явы пры запуску</string>
<string name="revanced_announcements_connection_failed">Не ўдалося падключыцца да пастаўшчыка аб\"яў</string> <string name="revanced_announcements_connection_failed">Не ўдалося падключыцца да пастаўшчыка аб\"яў</string>
<string name="revanced_announcements_dialog_dismiss">расслабіцца</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> <string name="revanced_disable_zoom_haptics_summary_off">Тактыльныя сігналы ўключаны</string>
</patch> </patch>
<patch id="video.audio.forceOriginalAudioPatch"> <patch id="video.audio.forceOriginalAudioPatch">
<string name="revanced_force_original_audio_title">Вымушанае арыгінальнае аўдыё</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_on">Выкарыстоўваць арыгінальную мову аўдыя</string>
<string name="revanced_force_original_audio_summary_off">Выкарыстанне аўдыё па змаўчанні</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>
<patch id="video.quality.rememberVideoQualityPatch"> <patch id="video.quality.rememberVideoQualityPatch">
<!-- Translations should use the same text as revanced_custom_playback_speeds_auto --> <!-- Translations should use the same text as revanced_custom_playback_speeds_auto -->
@@ -1406,8 +1423,6 @@ Second \"item\" text"</string>
Прайграванне відэа можа не працаваць"</string> Прайграванне відэа можа не працаваць"</string>
<string name="revanced_spoof_video_streams_user_dialog_message">Адключэнне гэтай налады можа выклікаць праблемы з прайграваннем відэа.</string> <string name="revanced_spoof_video_streams_user_dialog_message">Адключэнне гэтай налады можа выклікаць праблемы з прайграваннем відэа.</string>
<string name="revanced_spoof_video_streams_client_type_title">Клиент по умолчанию</string> <string name="revanced_spoof_video_streams_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_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_on">Відэакaдэк зафіксаваны ў AVC (H.264)</string>
<string name="revanced_spoof_video_streams_ios_force_avc_summary_off">Відэакaдэк вызначаецца аўтаматычна</string> <string name="revanced_spoof_video_streams_ios_force_avc_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_on">Дневникът за отстраняване на грешки съдържа следи от стека</string>
<string name="revanced_debug_stacktrace_summary_off">Дневникът за отстраняване на грешки не съдържа следи от стека</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_title">Покажи системно съобщение при ReVanced грешка</string>
<string name="revanced_debug_toast_on_error_summary_on">Системно съобщение ще бъде показано, ако се появи грешка</string> <string name="revanced_debug_toast_on_error_summary_on">Показва се toast, ако възникне грешка</string>
<string name="revanced_debug_toast_on_error_summary_off">Системно съобщение няма да бъде показано, ако се появи грешка</string> <string name="revanced_debug_toast_on_error_summary_off">Не се показва toast, ако възникне грешка</string>
<string name="revanced_debug_toast_on_error_user_dialog_message">"Изключването на изскачащи съобщения за грешки крие всички известия за грешки на ReVanced. <string name="revanced_debug_toast_on_error_user_dialog_message">"Изключването на изскачащи съобщения за грешки крие всички известия за грешки на ReVanced.
Няма да бъдете уведомени за неочаквани събития."</string> Няма да бъдете уведомени за неочаквани събития."</string>
</patch> </patch>
<patch id="layout.hide.general.hideLayoutComponentsPatch"> <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_title">\"Карти на албумите\"</string>
<string name="revanced_hide_album_cards_summary_on">Албумните карти са скрити</string> <string name="revanced_hide_album_cards_summary_on">Албумните карти са скрити</string>
<string name="revanced_hide_album_cards_summary_off">Албумните карти се показват</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> <string name="revanced_hide_horizontal_shelves_summary_off">Хоризонтални секции се показват</string>
<!-- 'Join' should be translated using the same localized wording YouTube displays. <!-- 'Join' should be translated using the same localized wording YouTube displays.
This appears in the video player for certain videos. --> 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_on">Бутона Покажи още е скрит</string>
<string name="revanced_hide_join_membership_button_summary_off">Бутона \"Уведоми ме\" се показва</string> <string name="revanced_hide_join_membership_button_summary_off">Бутона \"Уведоми ме\" се показва</string>
<!-- 'For you' should be translated using the same localized wording YouTube displays. --> <!-- 'For you' should be translated using the same localized wording YouTube displays. -->
<string name="revanced_hide_for_you_shelf_title">Скриване на секцията \'За вас\' в страницата на канала</string> <string name="revanced_hide_for_you_shelf_title">Скриване на рафта \"За вас\"</string>
<string name="revanced_hide_for_you_shelf_summary_on">Секцията \'За Вас\' е скрита</string> <string name="revanced_hide_for_you_shelf_summary_on">Рафтът в страницата на канала е скрит</string>
<string name="revanced_hide_for_you_shelf_summary_off">Секцията \'За Вас\' се показва</string> <string name="revanced_hide_for_you_shelf_summary_off">Рафтът в страницата на канала е показан</string>
<!-- 'Notify me' 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. --> This item appear in the subscription feed for future livestreams or unreleased videos. -->
<string name="revanced_hide_notify_me_button_title">Скриване на бутона \"Уведоми ме\"</string> <string name="revanced_hide_notify_me_button_title">Скриване на бутона \"Уведоми ме\"</string>
<string name="revanced_hide_notify_me_button_summary_on">Бутона \"Уведоми ме\" е скрит</string> <string name="revanced_hide_notify_me_button_summary_on">Бутона \"Уведоми ме\" е скрит</string>
<string name="revanced_hide_notify_me_button_summary_off">Бутона \"Уведоми ме\" се показва</string> <string name="revanced_hide_notify_me_button_summary_off">Бутона \"Уведоми ме\" се показва</string>
<!-- '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. -->
<string name="revanced_hide_search_result_recommendations_title">Скриване на препоръките \'Други харесват също\'</string> <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_on">Етикетът е скрит</string>
<string name="revanced_hide_search_result_recommendations_summary_off">Препоръките се показват</string> <string name="revanced_hide_search_result_recommendations_summary_off">Етикетът е показан</string>
<!-- 'Show more' should be translated with the same localized wording that YouTube displays. <!-- 'Show more' should be translated with the same localized wording that YouTube displays.
This button usually appears when searching for a YT creator. --> This button usually appears when searching for a YT creator. -->
<string name="revanced_hide_show_more_button_title">Скриване на бутона \"Покажи още\"</string> <string name="revanced_hide_show_more_button_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_on">Рафтът \"Chip\" е скрит</string>
<string name="revanced_hide_chips_shelf_summary_off">Рафтовете със снимки се показват</string> <string name="revanced_hide_chips_shelf_summary_off">Рафтовете със снимки се показват</string>
<string name="revanced_hide_expandable_chip_title">Скрий разширяемата карта под видеоклиповете</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_on">Разгъваемата карта е скрита</string>
<string name="revanced_hide_expandable_chip_summary_off">Разширяемите карти се показват</string> <string name="revanced_hide_expandable_chip_summary_off">Разгъваемата карта е показана</string>
<string name="revanced_hide_community_posts_title">Скриване на публикациите от общността</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_on">Насоките на общността са скрити</string>
<string name="revanced_hide_community_posts_summary_off">Последните публикации са показани</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_title">Скриване на насоките на общността</string>
<string name="revanced_hide_community_guidelines_summary_on">Насоките на общността са скрити</string> <string name="revanced_hide_community_guidelines_summary_on">Насоките на общността са скрити</string>
<string name="revanced_hide_community_guidelines_summary_off">Скриване на насоките за общността на абонатите</string> <string name="revanced_hide_community_guidelines_summary_off">Скриване на насоките за общността на абонатите</string>
<string name="revanced_hide_subscribers_community_guidelines_title">Скриване на насоките за общността на абонатите</string> <string name="revanced_hide_subscribers_community_guidelines_title">Скриване на указанията за абонатори</string>
<string name="revanced_hide_subscribers_community_guidelines_summary_on">Насоките за общността са скрити</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_subscribers_community_guidelines_summary_off">Насоките за общността са показани</string>
<string name="revanced_hide_channel_member_shelf_title">Скриване на секцията с членуващи</string> <string name="revanced_hide_channel_member_shelf_title">Скриване на секцията с членуващи</string>
@@ -280,63 +277,63 @@ Second \"item\" text"</string>
<string name="revanced_hide_artist_cards_title">Скриване на картите на артистите</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_on">Картите на изпълнителите са скрити</string>
<string name="revanced_hide_artist_cards_summary_off">Показват се карти на артисти</string> <string name="revanced_hide_artist_cards_summary_off">Показват се карти на артисти</string>
<string name="revanced_hide_attributes_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_on">Секциите \"Препоръчани места\", \"Игри\", \"Музика\" и \"Споменати хора\" са скрити</string>
<string name="revanced_hide_attributes_section_summary_off">„Популярни места“, „Игри“ и „Музика“ под описанието се показват</string> <string name="revanced_hide_attributes_section_summary_off">Секциите \"Препоръчани места\", \"Игри\", \"Музика\" и \"Споменати хора\" са показани</string>
<string name="revanced_hide_chapters_section_title">Скриване на секцията с заглавия</string> <string name="revanced_hide_chapters_section_title">Скриване на глави</string>
<string name="revanced_hide_chapters_section_summary_on">Секцията с заглавия е скрита</string> <string name="revanced_hide_chapters_section_summary_on">Секцията с заглавия е скрита</string>
<string name="revanced_hide_chapters_section_summary_off">Секцията с заглавия се показва</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_title">Скриване на \"Как е създадено това съдържание\"</string>
<string name="revanced_hide_how_this_was_made_section_summary_on">Секцията \'Как е създадено това съдържание\' е скрита</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_how_this_was_made_section_summary_off">Секцията \"Как е създадено това съдържание\" е показана</string>
<string name="revanced_hide_podcast_section_title">Скриване секцията „Разгледайте подкаста</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_on">Секцията \"Разгледайте подкаста\" е скрита</string>
<string name="revanced_hide_podcast_section_summary_off">\"Разгледайте подкаста\" се показва</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_title">Скриване на инфо. карти</string>
<string name="revanced_hide_info_cards_section_summary_on">Разделът за информационни карти е скрит</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_info_cards_section_summary_off">Разделът за информационни карти е показан</string>
<string name="revanced_hide_key_concepts_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_on">Секцията \"Основни концепции\" е скрита</string>
<string name="revanced_hide_key_concepts_section_summary_off">Раздел „Ключови понятия“ се показва</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_title">Скриване на транскрипт</string>
<string name="revanced_hide_transcript_section_summary_on">Разделът за транскрипция е скрит</string> <string name="revanced_hide_transcript_section_summary_on">Разделът за транскрипция е скрит</string>
<string name="revanced_hide_transcript_section_summary_off">Разделът за транскрипция е показан</string> <string name="revanced_hide_transcript_section_summary_off">Разделът за транскрипция е показан</string>
<string name="revanced_hide_description_components_screen_title">Описание на видеото</string> <string name="revanced_hide_description_components_screen_title">Описание на видеото</string>
<string name="revanced_hide_description_components_screen_summary">Скриване или показване на компонентите за описание на видеоклиповете</string> <string name="revanced_hide_description_components_screen_summary">Скриване или показване на компонентите за описание на видеоклиповете</string>
<string name="revanced_hide_filter_bar_screen_title">Лента с филтри</string> <string name="revanced_hide_filter_bar_screen_title">Лента с филтри</string>
<string name="revanced_hide_filter_bar_screen_summary">Скриване или показване на лентата с категории в емисията, резултатите от търсенето и свързаните видеоклипове</string> <string name="revanced_hide_filter_bar_screen_summary">Скриване или показване на лентата за филтриране в емисията, резултатите от търсенето и свързаните видеоклипове</string>
<string name="revanced_hide_filter_bar_feed_in_feed_title">Скриване на горната лента с категории в емисията</string> <string name="revanced_hide_filter_bar_feed_in_feed_title">Скриване на горната лента с категории в емисията</string>
<string name="revanced_hide_filter_bar_feed_in_feed_summary_on">Скрита</string> <string name="revanced_hide_filter_bar_feed_in_feed_summary_on">Скрита</string>
<string name="revanced_hide_filter_bar_feed_in_feed_summary_off">Показва се</string> <string name="revanced_hide_filter_bar_feed_in_feed_summary_off">Показва се</string>
<string name="revanced_hide_filter_bar_feed_in_search_title">Филтъри на търсене</string> <string name="revanced_hide_filter_bar_feed_in_search_title">Скриване в резултатите от търсенето</string>
<string name="revanced_hide_filter_bar_feed_in_search_summary_on">Панелът с филтъри на търсене е скрит</string> <string name="revanced_hide_filter_bar_feed_in_search_summary_on">Скрито в резултатите от търсенето</string>
<string name="revanced_hide_filter_bar_feed_in_search_summary_off">Панелът с филтъри на търсене се показва</string> <string name="revanced_hide_filter_bar_feed_in_search_summary_off">Показано в резултатите от търсенето</string>
<string name="revanced_hide_filter_bar_feed_in_related_videos_title">Скриване в сродни видеоклипове</string> <string name="revanced_hide_filter_bar_feed_in_related_videos_title">Скриване в сродни видеоклипове</string>
<string name="revanced_hide_filter_bar_feed_in_related_videos_summary_on">Скриване в сродни видеоклипове</string> <string name="revanced_hide_filter_bar_feed_in_related_videos_summary_on">Скриване в сродни видеоклипове</string>
<string name="revanced_hide_filter_bar_feed_in_related_videos_summary_off">Показано в сродни видеоклипове</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_title">Коментари</string>
<string name="revanced_comments_screen_summary">Скриване или показване на секцията за коментари</string> <string name="revanced_comments_screen_summary">Скриване или показване на секцията за коментари</string>
<string name="revanced_hide_comments_chat_summary_title">Скрий „Резюме на чата</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_on">Резюмето на чата е скрито</string>
<string name="revanced_hide_comments_chat_summary_summary_off">\'Резюме на чата\' е показано</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_title">Скриване на „Коментари, направени от членове“</string>
<string name="revanced_hide_comments_by_members_header_summary_on">„Коментари от членовеса скрити</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_off">Заглавието на коментарите от членове е показано</string>
<string name="revanced_hide_comments_section_title">Скриване на секцията с коментари</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_on">Секцията с коментари е скрита</string>
<string name="revanced_hide_comments_section_summary_off">Секцията с коментари се показва</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_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_on">Бутонът \"Създаване на Short\" е скрит</string>
<string name="revanced_hide_comments_create_a_short_button_summary_off">Бутон за създаване на Shorts се показва</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_title">Преглед на коментари</string>
<string name="revanced_hide_comments_preview_comment_summary_on">Прегледа на коментари е скрит</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_preview_comment_summary_off">Прегледа на коментари се показва</string>
<string name="revanced_hide_comments_thanks_button_title">Скрий бутона за харесване</string> <string name="revanced_hide_comments_thanks_button_title">Скрий бутона за харесване</string>
<string name="revanced_hide_comments_thanks_button_summary_on">Бутона за благодарност е скрит</string> <string name="revanced_hide_comments_thanks_button_summary_on">Бутона за благодарност е скрит</string>
<string name="revanced_hide_comments_thanks_button_summary_off">Бутона за благодарност се показва</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 --> <!-- https://logos.fandom.com/wiki/YouTube/Yoodles -->
<string name="revanced_hide_doodles_title">YouTube Doodles</string> <string name="revanced_hide_doodles_title">YouTube Doodles</string>
<string name="revanced_hide_doodles_summary_on">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_on">Рафта за пазаруване е скрит</string>
<string name="revanced_hide_player_store_shelf_summary_off">Рафта за пазаруване се показва</string> <string name="revanced_hide_player_store_shelf_summary_off">Рафта за пазаруване се показва</string>
<string name="revanced_hide_shopping_links_title">Скриване на връзки за пазаруване</string> <string name="revanced_hide_shopping_links_title">Скриване на връзки за пазаруване</string>
<string name="revanced_hide_shopping_links_summary_on">Връзките за пазаруване са скрити</string> <string name="revanced_hide_shopping_links_summary_on">Връзките за пазаруване в описанието на видеоклипа са скрити</string>
<string name="revanced_hide_shopping_links_summary_off">Връзките за пазаруване се показват</string> <string name="revanced_hide_shopping_links_summary_off">Връзките за пазаруване в описанието на видеоклипа са показани</string>
<!-- 'Visit store' should be translated with the same localized wording that YouTube displays. --> <!-- '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_title">Скрийте бутона „Посетете магазина“ на страниците на каналите</string>
<string name="revanced_hide_visit_store_button_summary_on">Бутона Покажи още е скрит</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_off">Бутонът в страницата на канала е показан</string>
<string name="revanced_hide_web_search_results_title">Скриване на резултатите от уеб търсенето</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_on">Резултатите от уеб търсенето са скрити</string>
<string name="revanced_hide_web_search_results_summary_off">Резултатите от уеб търсенето са показани.</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_success">Връзката е копирана в клипборда.</string>
<string name="revanced_share_copy_url_timestamp_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_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_summary_off">Бутонът не е показан</string>
<string name="revanced_copy_video_url_timestamp_title">Показване на бутона за копиране на URL адреса на времевия отпечатък на видеоклипа</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> <string name="revanced_copy_video_url_timestamp_summary_off">Бутонът не е показан</string>
</patch> </patch>
<patch id="interaction.dialog.removeViewerDiscretionDialogPatch"> <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_title">Външни изтегляния</string>
<string name="revanced_external_downloader_screen_summary">Настройки за използване на външно приложение за изтегляне</string> <string name="revanced_external_downloader_screen_summary">Настройки за използване на външно приложение за изтегляне</string>
<string name="revanced_external_downloader_title">Показване на бутона за изтегляне чрез външно приложение</string> <string name="revanced_external_downloader_title">Показване на бутона за изтегляне чрез външно приложение</string>
<string name="revanced_external_downloader_summary_on">Бутонът за изтегляне е показан в плейъра</string> <string name="revanced_external_downloader_summary_on">Бутонът за изтегляне в плейъра е показан</string>
<string name="revanced_external_downloader_summary_off">Бутонът за изтегляне не е показан в плейъра</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' --> <!-- '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_title">Заместване на бутона Download</string>
<string name="revanced_external_downloader_action_button_summary_on">Бутонът за изтегляне отваря избраното от Вас външно приложение за изтегляне</string> <string name="revanced_external_downloader_action_button_summary_on">Бутонът за изтегляне отваря избраното от Вас външно приложение за изтегляне</string>
@@ -484,11 +481,15 @@ Second \"item\" text"</string>
</patch> </patch>
<patch id="interaction.swipecontrols.swipeControlsResourcePatch"> <patch id="interaction.swipecontrols.swipeControlsResourcePatch">
<string name="revanced_swipe_brightness_title">Задаване на яркост чрез плъзгане</string> <string name="revanced_swipe_brightness_title">Задаване на яркост чрез плъзгане</string>
<string name="revanced_swipe_brightness_summary_on">Опцията за превъртане с плъзгане за промяна на яркостта е активирана</string> <string name="revanced_swipe_brightness_summary_on">лъзгането за яркост на цял екран е активирано
<string name="revanced_swipe_brightness_summary_off">Опцията за превъртане с плъзгане за промяна на яркостта е деактивирана</string>
Регулирайте яркостта, като плъзгате вертикално от лявата страна на екрана"</string>
<string name="revanced_swipe_brightness_summary_off">Плъзгането за яркост на цял екран е деактивирано</string>
<string name="revanced_swipe_volume_title">Настройване на звука чрез плъзгане</string> <string name="revanced_swipe_volume_title">Настройване на звука чрез плъзгане</string>
<string name="revanced_swipe_volume_summary_on">Обемът чрез плъзване е активен</string> <string name="revanced_swipe_volume_summary_on">"Плъзгането за сила на звука на цял екран е активирано
<string name="revanced_swipe_volume_summary_off">Обемът чрез плъзване е деактивиран</string>
Регулирайте силата на звука, като плъзнете вертикално от дясната страна на екрана"</string>
<string name="revanced_swipe_volume_summary_off">Плъзгането за сила на звука на цял екран е деактивирано</string>
<string name="revanced_swipe_press_to_engage_title">Активиране на жеста натискане за преместване</string> <string name="revanced_swipe_press_to_engage_title">Активиране на жеста натискане за преместване</string>
<string name="revanced_swipe_press_to_engage_summary_on">Плъзгането чрез натискане е активирано</string> <string name="revanced_swipe_press_to_engage_summary_on">Плъзгането чрез натискане е активирано</string>
<string name="revanced_swipe_press_to_engage_summary_off">Плъзгането чрез натискане е деактивирано</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_title">Задаване на яркост чрез плъзгане</string>
<string name="revanced_swipe_lowest_value_enable_auto_brightness_summary_on">Плъзгането надолу до най-ниската стойност на жеста за яркост, за да се активира автоматичната яркост</string> <string name="revanced_swipe_lowest_value_enable_auto_brightness_summary_on">Плъзгането надолу до най-ниската стойност на жеста за яркост, за да се активира автоматичната яркост</string>
<string name="revanced_swipe_lowest_value_enable_auto_brightness_summary_off">Плъзгането надолу до най-ниската стойност на жеста за яркост, без дасе активира автоматичната яркост</string> <string name="revanced_swipe_lowest_value_enable_auto_brightness_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_title">Задръжка на плъзгащата контрола за показване</string>
<string name="revanced_swipe_overlay_timeout_summary">Време за което плъзгащата контрола е видима.</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_title">Плъзгане на фона на наслагването непрозрачност</string>
<string name="revanced_swipe_overlay_background_opacity_summary">Стойност на непрозрачността между 0-100</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_overlay_background_opacity_invalid_toast">Непрозрачността на плъзгането трябва да е между 0-100</string>
<string name="revanced_swipe_threshold_title">Праг на величината на плъзгане</string> <string name="revanced_swipe_threshold_title">Праг на величината на плъзгане</string>
<string name="revanced_swipe_threshold_summary">Праг преди да се осъществи плъзгането</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_title">Включване на превключване на видеото чрез плъзване</string>
<string name="revanced_swipe_change_video_summary_on">Плъзването в режим на цял екран ще превключи към следващото/предишно видео</string> <string name="revanced_swipe_change_video_summary_on">Плъзването в режим на цял екран ще превключи към следващото/предишно видео</string>
<string name="revanced_swipe_change_video_summary_off">Плъзването в режим на цял екран няма да превключи към следващото/предишно видео</string> <string name="revanced_swipe_change_video_summary_off">Плъзването в режим на цял екран няма да превключи към следващото/предишно видео</string>
@@ -523,6 +527,9 @@ Second \"item\" text"</string>
<patch id="layout.buttons.action.hideButtonsPatch"> <patch id="layout.buttons.action.hideButtonsPatch">
<string name="revanced_hide_buttons_screen_title">Бутони за действия</string> <string name="revanced_hide_buttons_screen_title">Бутони за действия</string>
<string name="revanced_hide_buttons_screen_summary">Скриване или показване на бутони под видеото</string> <string name="revanced_hide_buttons_screen_summary">Скриване или показване на бутони под видеото</string>
<string name="revanced_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_title">Бутони \"Харесвам\" и \"Не харесвам\"</string>
<string name="revanced_hide_like_dislike_button_summary_on">Бутоните \"Харесвам\" и \"Не харесвам\" са скрити</string> <string name="revanced_hide_like_dislike_button_summary_on">Бутоните \"Харесвам\" и \"Не харесвам\" са скрити</string>
<string name="revanced_hide_like_dislike_button_summary_off">Бутоните \"Харесвам\" и \"Не харесвам\" се показват</string> <string name="revanced_hide_like_dislike_button_summary_off">Бутоните \"Харесвам\" и \"Не харесвам\" се показват</string>
@@ -575,12 +582,18 @@ Second \"item\" text"</string>
<string name="revanced_hide_subscriptions_button_title">Абонаменти</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_on">Бутона за абонаменти е скрит</string>
<string name="revanced_hide_subscriptions_button_summary_off">Бутона за абонаменти се показва</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. --> <!-- '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_title">Заменете бутона „Създаване“ с бутона „Известия“</string>
<string name="revanced_switch_create_with_notifications_button_summary_on">"Бутонът за създаване е сменен с бутона Известия <string name="revanced_switch_create_with_notifications_button_summary_on">"Бутонът за създаване е сменен с бутона Известия
Забележка: Активирането на това също принудително скрива видео рекламите"</string> Забележка: Активирането на това също принудително скрива видео рекламите"</string>
<string name="revanced_switch_create_with_notifications_button_summary_off">Бутоните \"Създаване\" и \"Известия\" не са разменени</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_title">Имена на бутоните на лентата за навигация</string>
<string name="revanced_hide_navigation_button_labels_summary_on">Етикетите са скрити</string> <string name="revanced_hide_navigation_button_labels_summary_on">Етикетите са скрити</string>
<string name="revanced_hide_navigation_button_labels_summary_off">Етикетите се показват</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_on">Навигационната лента е скрита</string>
<string name="revanced_hide_shorts_navigation_bar_summary_off">Навигационната лента се показва</string> <string name="revanced_hide_shorts_navigation_bar_summary_off">Навигационната лента се показва</string>
</patch> </patch>
<patch id="layout.hide.suggestedvideoendscreen.disableSuggestedVideoEndScreenResourcePatch"> <patch id="layout.hide.endscreensuggestion.hideEndScreenSuggestedVideoPatch">
<string name="revanced_disable_suggested_video_end_screen_title">Препоръчани видеоклипове в края</string> <string name="revanced_end_screen_suggested_video_title">Скриване на предложеното видео в края на екрана</string>
<string name="revanced_disable_suggested_video_end_screen_summary_on">Препоръчаните видеоклипове в края са скрити</string> <string name="revanced_end_screen_suggested_video_summary_on">"Предложеното видео в края на екрана е скрито, когато автоматичното пускане е изключено
<string name="revanced_disable_suggested_video_end_screen_summary_off">Препоръчаните видеоклипове в края се показват</string>
Автоматичното пускане може да бъде променено в настройките на YouTube:
Настройки → Възпроизвеждане → Автоматично пускане на следващото видео"</string>
<string name="revanced_end_screen_suggested_video_summary_off">Предложеното видео в края на екрана е показано</string>
</patch> </patch>
<patch id="layout.hide.time.hideTimestampPatch"> <patch id="layout.hide.time.hideTimestampPatch">
<string name="revanced_hide_timestamp_title">Скриване на клеймото за време на видеоклипа</string> <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. --> <!-- 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_timeout">Нехаресванията временно не са налични (API timed out)</string>
<string name="revanced_ryd_failure_connection_status_code">Нехаресванията не са налични (status %d)</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> <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. --> <!-- 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> <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_on">Нехаресванията се показват</string>
<string name="revanced_ryd_enable_summary_off">Нехаресванията не се показват</string> <string name="revanced_ryd_enable_summary_off">Нехаресванията не се показват</string>
<string name="revanced_ryd_shorts_title">Пок. нехаресвания в кратките клипове</string> <string name="revanced_ryd_shorts_title">Пок. нехаресвания в кратките клипове</string>
<string name="revanced_ryd_shorts_summary_on">Нехаресванията се показват в кратките клипове</string> <string name="revanced_ryd_shorts_summary_on">Нехаресванията на Shorts са показани</string>
<string name="revanced_ryd_shorts_summary_on_disclaimer">"Нехаресванията се показват на шорти <string name="revanced_ryd_shorts_summary_on_disclaimer">"Нехаресванията на Shorts са показани
Ограничение: Нехаресванията може да не се появят в режим инкогнито"</string> Ограничение: Нехаресванията може да не се показват в режим инкогнито"</string>
<string name="revanced_ryd_shorts_summary_off">Нехаресванията са скрити в кратките клипове</string> <string name="revanced_ryd_shorts_summary_off">Нехаресванията на Shorts не са показани</string>
<string name="revanced_ryd_dislike_percentage_title">Нехаресвания като процент</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_on">Нехаресванията са показани като процент</string>
<string name="revanced_ryd_dislike_percentage_summary_off">Нехаресванията се показват като число</string> <string name="revanced_ryd_dislike_percentage_summary_off">Нехаресванията са показани като число</string>
<!-- Translations should use language similar to 'revanced_sb_enable_compact_skip_button' --> <!-- 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_title">Компактен Like бутон</string>
<string name="revanced_ryd_compact_layout_summary_on">Включен компактен бутон \"Харесва ми\"</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_on">Бутоните и контролите са квадратни</string>
<string name="revanced_sb_square_layout_sum_off">Бутоните и контролите са заоблени</string> <string name="revanced_sb_square_layout_sum_off">Бутоните и контролите са заоблени</string>
<!-- Translations should use language similar to 'revanced_ryd_compact_layout_title' --> <!-- 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_on">Мин. ширина на бутона за пропускане</string>
<string name="revanced_sb_enable_compact_skip_button_sum_off">Най-добър изглед на бутона за пропускане</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_on">Бутона за пропускане се скрива след няколко секунди</string>
<string name="revanced_sb_enable_auto_hide_skip_segment_button_sum_off">Бутона за пропускане се показва за цялата част</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">Показване на toast при пропускане</string>
<string name="revanced_sb_general_skiptoast_sum_on">Показване на известие при автоматично пропусната част. Докоснете тук за пример</string> <string name="revanced_sb_general_skiptoast_sum_on">Показване на известие при автоматично пропусната част. Докоснете тук за пример</string>
<string name="revanced_sb_general_skiptoast_sum_off">Известието не се показва. Докоснете тук за пример</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">Показване на дължината на видеото без сигментите</string>
<string name="revanced_sb_general_time_without_sum_on">Дължината на видеото без всички части показана в скоби до цялата дължина</string> <string name="revanced_sb_general_time_without_sum_on">Дължината на видеото без всички части показана в скоби до цялата дължина</string>
<string name="revanced_sb_general_time_without_sum_off">Цялата дължина на видето се показва</string> <string name="revanced_sb_general_time_without_sum_off">Цялата дължина на видето се показва</string>
<string name="revanced_sb_create_segment_category">Създаване на нови части</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_on">Бутона създаване за нова част се показва</string>
<string name="revanced_sb_enable_create_segment_sum_off">Бутона създаване за нова част не се показва</string> <string name="revanced_sb_enable_create_segment_sum_off">Бутона създаване за нова част не се показва</string>
<string name="revanced_sb_general_adjusting">Настройване стъпка на новата част</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_skipped_multiple_segments">Пропуснати множество части</string>
<string name="revanced_sb_skip_automatically">Автоматично пропускане</string> <string name="revanced_sb_skip_automatically">Автоматично пропускане</string>
<string name="revanced_sb_skip_automatically_once">Авт. пропускане веднъж</string> <string name="revanced_sb_skip_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_seekbaronly">Показв. в лентата за време</string>
<string name="revanced_sb_skip_ignore">Деактивиране</string> <string name="revanced_sb_skip_ignore">Деактивиране</string>
<string name="revanced_sb_submit_failed_invalid">Не може да се изпрати сегмент: %s</string> <string name="revanced_sb_submit_failed_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_disabled_category">Категорията е изкл. в настройките. Вкл. я за да можете да изпратите.</string>
<string name="revanced_sb_new_segment_title">Нова част в SponsorBlock</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_time_as_question">Задаване на %s като начало или край на нов раздел?</string>
<string name="revanced_sb_new_segment_mark_start">начало</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_mark_end">Край</string>
<string name="revanced_sb_new_segment_now">сега</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_start">Частта започва от</string>
<string name="revanced_sb_new_segment_time_end">Частта свършва до</string> <string name="revanced_sb_new_segment_time_end">Частта свършва до</string>
<string name="revanced_sb_new_segment_confirm_title">Времената точни ли са?</string> <string name="revanced_sb_new_segment_confirm_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_new_segment_edit_by_hand_parse_error">Зададено е невалидно време</string>
<string name="revanced_sb_stats">Статистика</string> <string name="revanced_sb_stats">Статистика</string>
<!-- Shown in the settings preferences, and translations can be any text length. --> <!-- 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_loading">Зареждане...</string>
<string name="revanced_sb_stats_sb_disabled">SponsorBlock е деактивиран.</string> <string name="revanced_sb_stats_sb_disabled">SponsorBlock е деактивиран.</string>
<string name="revanced_sb_stats_username">Вашето потреб. име: &lt;b&gt;%s&lt;/b&gt;</string> <string name="revanced_sb_stats_username">Вашето потреб. име: &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_2">Средата на видеото</string>
<string name="revanced_alt_thumbnail_stills_time_entry_3">Края на видеото</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. --> <!-- 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> <string name="revanced_alt_thumbnail_dearrow_error_generic">DeArrow временно не е наличен</string>
</patch> </patch>
<patch id="misc.announcements.announcementsPatch"> <patch id="misc.announcements.announcementsPatch">
<string name="revanced_announcements_title">Показване на ReVanced съобщения</string> <string name="revanced_announcements_title">Показване на ReVanced съобщения</string>
<string name="revanced_announcements_summary_on">Съобщенията се показват при стартиране</string> <string name="revanced_announcements_summary_on">Обявите при стартиране са показани</string>
<string name="revanced_announcements_summary_off">Съобщенията не се показват при стартиране</string> <string name="revanced_announcements_summary_off">Обявите при стартиране не са показани</string>
<string name="revanced_announcements_enabled_summary">Показване на съобщения при стартиране</string> <string name="revanced_announcements_enabled_summary">Показване на съобщения при стартиране</string>
<string name="revanced_announcements_connection_failed">Неуспешно свързване с доставчик на съобщения</string> <string name="revanced_announcements_connection_failed">Неуспешно свързване с доставчик на съобщения</string>
<string name="revanced_announcements_dialog_dismiss">Отхвърли</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> <string name="revanced_disable_zoom_haptics_summary_off">Вибрациите са активирани</string>
</patch> </patch>
<patch id="video.audio.forceOriginalAudioPatch"> <patch id="video.audio.forceOriginalAudioPatch">
<string name="revanced_force_original_audio_title">Принудително оригинално аудио</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_on">Използване на оригиналния език на аудиото</string>
<string name="revanced_force_original_audio_summary_off">Използване на аудио по подразбиране</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>
<patch id="video.quality.rememberVideoQualityPatch"> <patch id="video.quality.rememberVideoQualityPatch">
<!-- Translations should use the same text as revanced_custom_playback_speeds_auto --> <!-- Translations should use the same text as revanced_custom_playback_speeds_auto -->
@@ -1405,8 +1422,6 @@ Second \"item\" text"</string>
Възпроизвеждането на видеоклипове може да не работи"</string> Възпроизвеждането на видеоклипове може да не работи"</string>
<string name="revanced_spoof_video_streams_user_dialog_message">Деактивирането на тази настройка ще доведе до проблеми с възпроизвеждането на видео.</string> <string name="revanced_spoof_video_streams_user_dialog_message">Деактивирането на тази настройка ще доведе до проблеми с възпроизвеждането на видео.</string>
<string name="revanced_spoof_video_streams_client_type_title">Клиент по подразбиране</string> <string name="revanced_spoof_video_streams_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_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_on">Видео кодекът е принудително зададен на AVC (H.264)</string>
<string name="revanced_spoof_video_streams_ios_force_avc_summary_off">Видео кодекът се определя автоматично</string> <string name="revanced_spoof_video_streams_ios_force_avc_summary_off">Видео кодекът се определя автоматично</string>

View File

@@ -161,16 +161,13 @@ MicroG-এর জন্য ব্যাটারি অপ্টিমাইজ
<string name="revanced_debug_stacktrace_summary_on">ডিবাগ লগ স্টেক ট্রেস সংযুক্ত করবে</string> <string name="revanced_debug_stacktrace_summary_on">ডিবাগ লগ স্টেক ট্রেস সংযুক্ত করবে</string>
<string name="revanced_debug_stacktrace_summary_off">ডিবাগ লগ স্টেক ট্রেস সংযুক্ত করবে না</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_title">ReVanced এর ত্রুটির ক্ষেত্রে টোস্ট দেখান</string>
<string name="revanced_debug_toast_on_error_summary_on">কোন ত্রুটি দেখা গেলে টোস্ট দেখায়</string> <string name="revanced_debug_toast_on_error_summary_on">যদি ত্রুটি ঘটে তবে toast দেখানো হবে</string>
<string name="revanced_debug_toast_on_error_summary_off">কোন ত্রুটি দেখা গেলে টোস্ট দেখায় না</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 name="revanced_debug_toast_on_error_user_dialog_message">"ত্রুটি \"toast\" বন্ধ করে ReVanced ত্রুটি বিজ্ঞপ্তিগুলি লুকানো হয়।
আপনি কোনও অপ্রত্যাশিত ঘটনার বিষয়ে অবহিত হবেন না।"</string> আপনি কোনও অপ্রত্যাশিত ঘটনার বিষয়ে অবহিত হবেন না।"</string>
</patch> </patch>
<patch id="layout.hide.general.hideLayoutComponentsPatch"> <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_title">অ্যালবাম কার্ড লুকান</string>
<string name="revanced_hide_album_cards_summary_on">অ্যালবাম কার্ড লুকিয়ে রয়েছে</string> <string name="revanced_hide_album_cards_summary_on">অ্যালবাম কার্ড লুকিয়ে রয়েছে</string>
<string name="revanced_hide_album_cards_summary_off">অ্যালবাম কার্ড প্রদর্শিত হয়েছে</string> <string name="revanced_hide_album_cards_summary_off">অ্যালবাম কার্ড প্রদর্শিত হয়েছে</string>
@@ -193,22 +190,22 @@ MicroG-এর জন্য ব্যাটারি অপ্টিমাইজ
<string name="revanced_hide_horizontal_shelves_summary_off">শেলফ প্রদর্শিত হয়েছে</string> <string name="revanced_hide_horizontal_shelves_summary_off">শেলফ প্রদর্শিত হয়েছে</string>
<!-- 'Join' should be translated using the same localized wording YouTube displays. <!-- 'Join' should be translated using the same localized wording YouTube displays.
This appears in the video player for certain videos. --> 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_on">বোতাম লুকানো আছে</string>
<string name="revanced_hide_join_membership_button_summary_off">বোতাম দেখানো আছে</string> <string name="revanced_hide_join_membership_button_summary_off">বোতাম দেখানো আছে</string>
<!-- 'For you' should be translated using the same localized wording YouTube displays. --> <!-- 'For you' should be translated using the same localized wording YouTube displays. -->
<string name="revanced_hide_for_you_shelf_title">চ্যানেল পাতায় \'আপনার জন্য\' শেলফ লুকান</string> <string name="revanced_hide_for_you_shelf_title">\'আপনার জন্য\' শেলফ লুকান</string>
<string name="revanced_hide_for_you_shelf_summary_on">শেলফ লুকিয়ে রয়েছে</string> <string name="revanced_hide_for_you_shelf_summary_on">চ্যানেল পৃষ্ঠায় শেলফ লুকানো আছে</string>
<string name="revanced_hide_for_you_shelf_summary_off">েল্রদর্শিত হয়েছে</string> <string name="revanced_hide_for_you_shelf_summary_off">চ্যানেল পৃষ্ঠায় শেল্ফ দেখানো হয়েছে</string>
<!-- 'Notify me' 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. --> This item appear in the subscription feed for future livestreams or unreleased videos. -->
<string name="revanced_hide_notify_me_button_title">\'আমাকে জানান\' বোতাম লুকান</string> <string name="revanced_hide_notify_me_button_title">\'আমাকে জানান\' বোতাম লুকান</string>
<string name="revanced_hide_notify_me_button_summary_on">বোতাম লুকানো আছে</string> <string name="revanced_hide_notify_me_button_summary_on">বোতাম লুকানো আছে</string>
<string name="revanced_hide_notify_me_button_summary_off">বোতাম দেখানো আছে</string> <string name="revanced_hide_notify_me_button_summary_off">বোতাম দেখানো আছে</string>
<!-- '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. -->
<string name="revanced_hide_search_result_recommendations_title">\'মানুষ আরও দেখছে\' প্রস্তাবনাগুলো লুকান</string> <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_on">লেবেল লুকানো আছে</string>
<string name="revanced_hide_search_result_recommendations_summary_off">প্রস্তাবনাগুলো প্রদর্শিত হয়েছে</string> <string name="revanced_hide_search_result_recommendations_summary_off">লেবেল দেখানো হয়েছে</string>
<!-- 'Show more' should be translated with the same localized wording that YouTube displays. <!-- 'Show more' should be translated with the same localized wording that YouTube displays.
This button usually appears when searching for a YT creator. --> This button usually appears when searching for a YT creator. -->
<string name="revanced_hide_show_more_button_title">\'আরও দেখান\' বোতাম লুকান</string> <string name="revanced_hide_show_more_button_title">\'আরও দেখান\' বোতাম লুকান</string>
@@ -224,8 +221,8 @@ MicroG-এর জন্য ব্যাটারি অপ্টিমাইজ
<string name="revanced_hide_chips_shelf_summary_on">চিপ শেলপ লুকিয়ে রয়েছে</string> <string name="revanced_hide_chips_shelf_summary_on">চিপ শেলপ লুকিয়ে রয়েছে</string>
<string name="revanced_hide_chips_shelf_summary_off">চিপ শেলপ প্রদর্শিত হয়েছে</string> <string name="revanced_hide_chips_shelf_summary_off">চিপ শেলপ প্রদর্শিত হয়েছে</string>
<string name="revanced_hide_expandable_chip_title">ভিডিওর নীচে সম্প্রসারণযোগ্য কার্ড লুকান</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_on">প্রসারণযোগ্য কার্ড লুকানো আছে</string>
<string name="revanced_hide_expandable_chip_summary_off">সম্প্রসারণযোগ্য কার্ডগুলি প্রদর্শিত হচ্ছে</string> <string name="revanced_hide_expandable_chip_summary_off">প্রসারণযোগ্য কার্ড দেখানো হয়েছে</string>
<string name="revanced_hide_community_posts_title">সম্প্রদায় পোস্ট লুকান</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_on">সম্প্রদায় পোস্ট লুকিয়ে রয়েছে</string>
<string name="revanced_hide_community_posts_summary_off">সম্প্রদায় পোস্ট প্রদর্শিত হয়েছে</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_title">সম্প্রদায় নির্দেশিকা লুকান</string>
<string name="revanced_hide_community_guidelines_summary_on">সম্প্রদায় নির্দেশিকা লুকিয়ে রয়েছে</string> <string name="revanced_hide_community_guidelines_summary_on">সম্প্রদায় নির্দেশিকা লুকিয়ে রয়েছে</string>
<string name="revanced_hide_community_guidelines_summary_off">সম্প্রদায় নির্দেশিকা প্রদর্শিত হয়েছে</string> <string name="revanced_hide_community_guidelines_summary_off">সম্প্রদায় নির্দেশিকা প্রদর্শিত হয়েছে</string>
<string name="revanced_hide_subscribers_community_guidelines_title">সাবস্ক্রাইবারদের সম্পদ্রায় নির্দেশিকা লুকান</string> <string name="revanced_hide_subscribers_community_guidelines_title">সাবস্ক্রাইবার নির্দেশিকা লুকান</string>
<string name="revanced_hide_subscribers_community_guidelines_summary_on">সাবস্ক্রাইবারদের সম্পদ্রায় নির্দেশিকা লুকিয়ে রয়েছে</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_subscribers_community_guidelines_summary_off">সাবস্ক্রাইবারদের সম্পদ্রায় নির্দেশিকা প্রদর্শিত হয়েছে</string>
<string name="revanced_hide_channel_member_shelf_title">চ্যানেল মেম্বার শেলফ লুকান</string> <string name="revanced_hide_channel_member_shelf_title">চ্যানেল মেম্বার শেলফ লুকান</string>
@@ -280,63 +277,62 @@ MicroG-এর জন্য ব্যাটারি অপ্টিমাইজ
<string name="revanced_hide_artist_cards_title">আর্টিস্ট কার্ড লুকান</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_on">আর্টিস্ট কার্ড লুকিয়ে রয়েছে</string>
<string name="revanced_hide_artist_cards_summary_off">আর্টিস্ট কার্ড প্রদর্শিত হয়েছে</string> <string name="revanced_hide_artist_cards_summary_off">আর্টিস্ট কার্ড প্রদর্শিত হয়েছে</string>
<string name="revanced_hide_attributes_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_on">বৈশিষ্ট্যযুক্ত স্থান, গেমস, সঙ্গীত, এবং উল্লিখিত ব্যক্তি বিভাগগুলি লুকানো আছে</string>
<string name="revanced_hide_attributes_section_summary_off">\'বৈশিষ্ট্যযুক্ত স্থান\', গেম এবং সঙ্গীত বিভাগগুলি প্রদর্শিত হয়েছে</string> <string name="revanced_hide_attributes_section_summary_off">বৈশিষ্ট্যযুক্ত স্থান, গেমস, সঙ্গীত, এবং উল্লিখিত ব্যক্তি বিভাগগুলি দেখানো হয়েছে</string>
<string name="revanced_hide_chapters_section_title">্যাপ্টার বিভাগ লুকান</string> <string name="revanced_hide_chapters_section_title">অধ্যায় লুকান</string>
<string name="revanced_hide_chapters_section_summary_on">চ্যাপ্টার বিভাগ লুকিয়ে রয়েছে</string> <string name="revanced_hide_chapters_section_summary_on">চ্যাপ্টার বিভাগ লুকিয়ে রয়েছে</string>
<string name="revanced_hide_chapters_section_summary_off">চ্যাপ্টার বিভাগ প্রদর্শিত হয়েছে</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_title">\'How this content was made\' লুকান</string>
<string name="revanced_hide_how_this_was_made_section_summary_on">\'এই কীভাবে তৈরি হল কনটেন্ট\' সেকশনটি লুকানো আছে</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">\'এই কীভাবে তৈরি হল কনটেন্ট\' সেকশনটি প্রদর্শিত হচ্ছে</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">‘পডকাস্ট বিভাগ লুকান</string> <string name="revanced_hide_podcast_section_title">\'Explore the podcast\' লুকান</string>
<string name="revanced_hide_podcast_section_summary_on">‘পডকাস্ট বিভাগ লুকানো আছে</string> <string name="revanced_hide_podcast_section_summary_on">Explore the podcast বিভাগটি লুকানো আছে</string>
<string name="revanced_hide_podcast_section_summary_off">‘পডকাস্ট বিভাগ’ প্রদর্শিত হয়েছে</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_title">তথ্য কার্ড লুকান</string>
<string name="revanced_hide_info_cards_section_summary_on">তথ্য কার্ড সেকশন লুকিয়ে রয়েছে</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_info_cards_section_summary_off">তথ্য কার্ড সেকশন প্রদর্শিত হয়েছে</string>
<string name="revanced_hide_key_concepts_section_title">‘মূল বিষয়বস্তু’ বিভাগ লুকানো আছে</string> <string name="revanced_hide_key_concepts_section_title">\'Key concepts\' লুকান</string>
<string name="revanced_hide_key_concepts_section_summary_on">‘মূল বিষয়বস্তু’ বিভাগ লুকিয়ে রয়েছে</string> <string name="revanced_hide_key_concepts_section_summary_on">Key concepts বিভাগটি লুকানো আছে</string>
<string name="revanced_hide_key_concepts_section_summary_off">‘मुख्य संकल्पना’ अनुभाग प्रदर्शित होता है</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_title">নথি লুকান</string>
<string name="revanced_hide_transcript_section_summary_on">ট্রান্সস্ক্রিপ্ট বিভাগ লুকিয়ে রয়েছে</string> <string name="revanced_hide_transcript_section_summary_on">ট্রান্সস্ক্রিপ্ট বিভাগ লুকিয়ে রয়েছে</string>
<string name="revanced_hide_transcript_section_summary_off">ট্রান্সস্ক্রিপ্ট বিভাগ প্রদর্শিত হয়েছে</string> <string name="revanced_hide_transcript_section_summary_off">ট্রান্সস্ক্রিপ্ট বিভাগ প্রদর্শিত হয়েছে</string>
<string name="revanced_hide_description_components_screen_title">ভিডিওর বিবরণ</string> <string name="revanced_hide_description_components_screen_title">ভিডিওর বিবরণ</string>
<string name="revanced_hide_description_components_screen_summary">ভিডিও বিবরণ এর উপাদান লুকান বা প্রদর্শন করুন</string> <string name="revanced_hide_description_components_screen_summary">ভিডিও বিবরণ এর উপাদান লুকান বা প্রদর্শন করুন</string>
<string name="revanced_hide_filter_bar_screen_title">ফিল্টার বার</string> <string name="revanced_hide_filter_bar_screen_title">ফিল্টার বার</string>
<string name="revanced_hide_filter_bar_screen_summary">ফিড, অনুসন্ধান এবং সম্পর্কিত ভিডিওতে ফিল্টার বার লুকান বা প্রদর্শন করুন</string>
<string name="revanced_hide_filter_bar_feed_in_feed_title">ফিডে লুকান</string> <string name="revanced_hide_filter_bar_feed_in_feed_title">ফিডে লুকান</string>
<string name="revanced_hide_filter_bar_feed_in_feed_summary_on">ফিডে লুকিয়ে রয়েছে</string> <string name="revanced_hide_filter_bar_feed_in_feed_summary_on">ফিডে লুকিয়ে রয়েছে</string>
<string name="revanced_hide_filter_bar_feed_in_feed_summary_off">ফিডে প্রদর্শিত হয়েছে</string> <string name="revanced_hide_filter_bar_feed_in_feed_summary_off">ফিডে প্রদর্শিত হয়েছে</string>
<string name="revanced_hide_filter_bar_feed_in_search_title">অনুসন্ধানে লুকান</string> <string name="revanced_hide_filter_bar_feed_in_search_title">অনুসন্ধান ফলাফলে লুকান</string>
<string name="revanced_hide_filter_bar_feed_in_search_summary_on">অনুসন্ধানে লুকিয়ে রয়েছে</string> <string name="revanced_hide_filter_bar_feed_in_search_summary_on">অনুসন্ধান ফলাফলে লুকানো আছে</string>
<string name="revanced_hide_filter_bar_feed_in_search_summary_off">অনুসন্ধানে প্রদর্শিত হয়েছে</string> <string name="revanced_hide_filter_bar_feed_in_search_summary_off">অনুসন্ধান ফলাফলে দেখানো হয়েছে</string>
<string name="revanced_hide_filter_bar_feed_in_related_videos_title">সম্পর্কিত ভিডিওতে লুকান</string> <string name="revanced_hide_filter_bar_feed_in_related_videos_title">সম্পর্কিত ভিডিওতে লুকান</string>
<string name="revanced_hide_filter_bar_feed_in_related_videos_summary_on">সম্পর্কিত ভিডিওতে লুকিয়ে রয়েছে</string> <string name="revanced_hide_filter_bar_feed_in_related_videos_summary_on">সম্পর্কিত ভিডিওতে লুকিয়ে রয়েছে</string>
<string name="revanced_hide_filter_bar_feed_in_related_videos_summary_off">সম্পর্কিত ভিডিওতে প্রদর্শিত হয়েছে</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_title">মন্তব্য</string>
<string name="revanced_comments_screen_summary">মন্তব্য বিভাগের উপাদানগুলি লুকান বা দেখান৷</string> <string name="revanced_comments_screen_summary">মন্তব্য বিভাগের উপাদানগুলি লুকান বা দেখান৷</string>
<string name="revanced_hide_comments_chat_summary_title"> \'চ্যাটের সারাংশ\' লুকান</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_on">চ্যাট সারসংক্ষেপ লুকানো আছে</string>
<string name="revanced_hide_comments_chat_summary_summary_off">চ্যাট সারাংশ” দেখানো হচ্ছে</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_title">\'মেম্বারদের মন্তব্য\' হেডার লুকান</string>
<string name="revanced_hide_comments_by_members_header_summary_on">\'মেম্বারদের মন্তব্য\' হেডার লুকিয়ে রয়েছে</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_off">সদস্যদের দ্বার মন্তব্য হেডার দেখানো হয়েছে</string>
<string name="revanced_hide_comments_section_title">মন্তব্য বিভাগ লুকান</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_on">মন্তব্য বিভাগ লুকিয়ে রয়েছে</string>
<string name="revanced_hide_comments_section_summary_off">মন্তব্য বিভাগ প্রদর্শিত হয়েছে</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_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_on">একটি Shorts বোতাম তৈরি করুন লুকানো আছে</string>
<string name="revanced_hide_comments_create_a_short_button_summary_off">\'Short তৈরি করুন\' বোতাম প্রদর্শিত হয়েছে</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_title">মন্তব্যের পূর্বরূপ লুকান</string>
<string name="revanced_hide_comments_preview_comment_summary_on">মন্তব্যের পূর্বরূপ লুকিয়ে রয়েছে</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_preview_comment_summary_off">মন্তব্যের পূর্বরূপ প্রদর্শিত হয়েছে</string>
<string name="revanced_hide_comments_thanks_button_title">ধন্যবাদ বাটন লুকান</string> <string name="revanced_hide_comments_thanks_button_title">ধন্যবাদ বাটন লুকান</string>
<string name="revanced_hide_comments_thanks_button_summary_on">ধন্যবাদ বোতাম লুকিয়ে রয়েছে</string> <string name="revanced_hide_comments_thanks_button_summary_on">ধন্যবাদ বোতাম লুকিয়ে রয়েছে</string>
<string name="revanced_hide_comments_thanks_button_summary_off">ধন্যবাদ বোতাম প্রদর্শিত হয়েছে</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 --> <!-- https://logos.fandom.com/wiki/YouTube/Yoodles -->
<string name="revanced_hide_doodles_title">YouTube Doodles छिपाएँ</string> <string name="revanced_hide_doodles_title">YouTube Doodles छिपाएँ</string>
<string name="revanced_hide_doodles_summary_on">सर्च बार Doodles छिपे हुए हैं</string> <string name="revanced_hide_doodles_summary_on">सर्च बार Doodles छिपे हुए हैं</string>
@@ -417,12 +413,12 @@ MicroG-এর জন্য ব্যাটারি অপ্টিমাইজ
<string name="revanced_hide_player_store_shelf_summary_on">শপিং শেলফ লুকানো আছে</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_player_store_shelf_summary_off">শপিং শেলফ দেখানো হচ্ছে</string>
<string name="revanced_hide_shopping_links_title">ভিডিওর বিবরণে কেনাকাটার লিঙ্ক লুকান</string> <string name="revanced_hide_shopping_links_title">ভিডিওর বিবরণে কেনাকাটার লিঙ্ক লুকান</string>
<string name="revanced_hide_shopping_links_summary_on">কেনাকাটার লিঙ্ক লুকিয়ে রয়েছে</string> <string name="revanced_hide_shopping_links_summary_on">ভিডিও বিবরণে শপিং লিঙ্ক লুকানো আছে</string>
<string name="revanced_hide_shopping_links_summary_off">কেনাকাটার লিঙ্ক প্রদর্শিত হয়েছে</string> <string name="revanced_hide_shopping_links_summary_off">ভিডিও বিবরণে শপিং লিঙ্ক দেখানো হয়েছে</string>
<!-- 'Visit store' should be translated with the same localized wording that YouTube displays. --> <!-- '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_title">চ্যানেল পাতায় \'স্টোরে যান\' বোতাম লুকান</string>
<string name="revanced_hide_visit_store_button_summary_on">বোতাম লুকানো আছে</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_off">চ্যানেল পৃষ্ঠায় বোতাম দেখানো হয়েছে</string>
<string name="revanced_hide_web_search_results_title">লোকেরা এইগুলিও সার্চ করছে লুকান</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_on">লোকেরা এইগুলিও সার্চ করছে লুকিয়ে রয়েছে</string>
<string name="revanced_hide_web_search_results_summary_off">লোকেরা এইগুলিও সার্চ করছে প্রদর্শিত হয়েছে</string> <string name="revanced_hide_web_search_results_summary_off">লোকেরা এইগুলিও সার্চ করছে প্রদর্শিত হয়েছে</string>
@@ -446,10 +442,10 @@ MicroG-এর জন্য ব্যাটারি অপ্টিমাইজ
<string name="revanced_share_copy_url_success">ক্লিপবোর্ডে URL অনুলিপি করা হয়েছে</string> <string name="revanced_share_copy_url_success">ক্লিপবোর্ডে URL অনুলিপি করা হয়েছে</string>
<string name="revanced_share_copy_url_timestamp_success">টাইমস্ট্যাম্প সহ URL অনুলিপি করা হয়েছে</string> <string name="revanced_share_copy_url_timestamp_success">টাইমস্ট্যাম্প সহ URL অনুলিপি করা হয়েছে</string>
<string name="revanced_copy_video_url_title">ভিডিও 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_summary_off">বোতাম প্রদর্শিত হয়নি</string>
<string name="revanced_copy_video_url_timestamp_title">টাইমস্ট্যাম্প URL অনুলিপি বোতাম দেখান</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> <string name="revanced_copy_video_url_timestamp_summary_off">বোতাম প্রদর্শিত হয়নি</string>
</patch> </patch>
<patch id="interaction.dialog.removeViewerDiscretionDialogPatch"> <patch id="interaction.dialog.removeViewerDiscretionDialogPatch">
@@ -462,8 +458,8 @@ MicroG-এর জন্য ব্যাটারি অপ্টিমাইজ
<string name="revanced_external_downloader_screen_title">বাহিরে ডাউনলোড</string> <string name="revanced_external_downloader_screen_title">বাহিরে ডাউনলোড</string>
<string name="revanced_external_downloader_screen_summary">বাহিরের ডাউনলোডার ব্যবহার করার সেটিং</string> <string name="revanced_external_downloader_screen_summary">বাহিরের ডাউনলোডার ব্যবহার করার সেটিং</string>
<string name="revanced_external_downloader_title">বাহিরের ডাউনলোডার বাটন দেখান</string> <string name="revanced_external_downloader_title">বাহিরের ডাউনলোডার বাটন দেখান</string>
<string name="revanced_external_downloader_summary_on">প্লোরে ডাউনলোড বোতাম প্রদর্শিত হয়েছে</string> <string name="revanced_external_downloader_summary_on">প্লেয়ারে ডাউনলোড বোতাম দেখানো হয়েছে</string>
<string name="revanced_external_downloader_summary_off">প্লোরে ডাউনলোড বোতাম প্রদর্শিত হয়নি</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' --> <!-- 'download action button' should be translated using the same wording as the translation of 'revanced_hide_download_button_title' -->
<string name="revanced_external_downloader_action_button_title">ডাউনলোড অ্যাকশন বোতামটি ওভাররাইড করুন</string> <string name="revanced_external_downloader_action_button_title">ডাউনলোড অ্যাকশন বোতামটি ওভাররাইড করুন</string>
<string name="revanced_external_downloader_action_button_summary_on">ডাউনলোড বোতামটি আপনার বাহিরের ডাউনলোডার খুলবে</string> <string name="revanced_external_downloader_action_button_summary_on">ডাউনলোড বোতামটি আপনার বাহিরের ডাউনলোডার খুলবে</string>
@@ -484,11 +480,15 @@ MicroG-এর জন্য ব্যাটারি অপ্টিমাইজ
</patch> </patch>
<patch id="interaction.swipecontrols.swipeControlsResourcePatch"> <patch id="interaction.swipecontrols.swipeControlsResourcePatch">
<string name="revanced_swipe_brightness_title">উজ্জ্বলতার সোয়াইপ অঙ্গভঙ্গি সক্রিয় করুন</string> <string name="revanced_swipe_brightness_title">উজ্জ্বলতার সোয়াইপ অঙ্গভঙ্গি সক্রিয় করুন</string>
<string name="revanced_swipe_brightness_summary_on">উজ্জ্বলতা সোয়াইপ সক্রিয় করা হয়েছে</string> <string name="revanced_swipe_brightness_summary_on">"Fullscreen brightness swipe enabled আছে
<string name="revanced_swipe_brightness_summary_off">উজ্জ্বলতা সোয়াইপ নিষ্ক্রিয় করা হয়েছে</string>
স্ক্রিনের বাম দিকে উল্লম্বভাবে সোয়াইপ করে উজ্জ্বলতা সামঞ্জস্য করুন"</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_title">ভলিউম অঙ্গভঙ্গি সক্রিয় করুন</string>
<string name="revanced_swipe_volume_summary_on">ভলিউম সোাইপ সক্রি করা হেছে</string> <string name="revanced_swipe_volume_summary_on">"পূর্ণ স্ক্রীন ভলিউম সোয়াইপ সক্রিয় করা হয়েছে
<string name="revanced_swipe_volume_summary_off">ভলিউম সোয়াইপ নিষ্ক্রিয় করা হয়েছে</string>
স্ক্রিনের ডান দিকে উল্লম্বভাবে সোয়াইপ করে ভলিউম সামঞ্জস্য করুন"</string>
<string name="revanced_swipe_volume_summary_off">পূর্ণ স্ক্রীন ভলিউম সোয়াইপ নিষ্ক্রিয় করা হয়েছে</string>
<string name="revanced_swipe_press_to_engage_title">প্রেস-টু-সোয়াইপ অঙ্গভঙ্গি সক্রিয় করুন</string> <string name="revanced_swipe_press_to_engage_title">প্রেস-টু-সোয়াইপ অঙ্গভঙ্গি সক্রিয় করুন</string>
<string name="revanced_swipe_press_to_engage_summary_on">প্রেস-টু-সোয়াইপ সক্রিয় করা হয়েছে</string> <string name="revanced_swipe_press_to_engage_summary_on">প্রেস-টু-সোয়াইপ সক্রিয় করা হয়েছে</string>
<string name="revanced_swipe_press_to_engage_summary_off">প্রেস-টু-সোয়াইপ নিষ্ক্রিয় করা হয়েছে</string> <string name="revanced_swipe_press_to_engage_summary_off">প্রেস-টু-সোয়াইপ নিষ্ক্রিয় করা হয়েছে</string>
@@ -501,16 +501,19 @@ MicroG-এর জন্য ব্যাটারি অপ্টিমাইজ
<string name="revanced_swipe_lowest_value_enable_auto_brightness_title">স্বয়ংক্রিয়-উজ্জ্বলতার অঙ্গভঙ্গি সক্রিয় করুন</string> <string name="revanced_swipe_lowest_value_enable_auto_brightness_title">স্বয়ংক্রিয়-উজ্জ্বলতার অঙ্গভঙ্গি সক্রিয় করুন</string>
<string name="revanced_swipe_lowest_value_enable_auto_brightness_summary_on">উজ্জ্বলতার অঙ্গভঙ্গির সর্বনিম্ন মানে সোয়াইপ ডাউন করলে অটো-উজ্জ্বলতা সক্ষম হয়</string> <string name="revanced_swipe_lowest_value_enable_auto_brightness_summary_on">উজ্জ্বলতার অঙ্গভঙ্গির সর্বনিম্ন মানে সোয়াইপ ডাউন করলে অটো-উজ্জ্বলতা সক্ষম হয়</string>
<string name="revanced_swipe_lowest_value_enable_auto_brightness_summary_off">সর্বনিম্ন মানে সোয়াইপ ডাউন করলে অটো-উজ্জ্বলতা সক্ষম হয় না</string> <string name="revanced_swipe_lowest_value_enable_auto_brightness_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_title">ওভার-লে টাইম আউট</string>
<string name="revanced_swipe_overlay_timeout_summary">কত মিলিসেকেন্ডের জন্য ওভারলে দৃশ্যমান হবে</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_title">অস্বচ্ছতা</string>
<string name="revanced_swipe_overlay_background_opacity_summary">0-100 এর মধ্যে অস্বচ্ছতার মান</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_overlay_background_opacity_invalid_toast">সোয়াইপের অস্বচ্ছতা অবশ্যই 0-100 এর মধ্যে হতে হবে</string>
<string name="revanced_swipe_threshold_title">সোয়াইপ থ্রেশহোল্ড এর মাত্রা</string> <string name="revanced_swipe_threshold_title">সোয়াইপ থ্রেশহোল্ড এর মাত্রা</string>
<string name="revanced_swipe_threshold_summary">সোয়াইপ করার থ্রেশহোল্ডের পরিমাণ</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_title">ভিডিও পরিবর্তন করতে সোয়াইপ করে সক্ষম করুন</string>
<string name="revanced_swipe_change_video_summary_on">ফুলস্ক্রিন মোডে সোয়াইপ করলে পরবর্তী/পূর্ববর্তী ভিডিওতে পরিবর্তন হবে</string> <string name="revanced_swipe_change_video_summary_on">ফুলস্ক্রিন মোডে সোয়াইপ করলে পরবর্তী/পূর্ববর্তী ভিডিওতে পরিবর্তন হবে</string>
<string name="revanced_swipe_change_video_summary_off">ফুলস্ক্রিন মোডে সোয়াইপ করলে পরবর্তী /পূর্ববর্তী ভিডিওতে পরিবর্তন হবে না</string> <string name="revanced_swipe_change_video_summary_off">ফুলস্ক্রিন মোডে সোয়াইপ করলে পরবর্তী /পূর্ববর্তী ভিডিওতে পরিবর্তন হবে না</string>
@@ -523,6 +526,9 @@ MicroG-এর জন্য ব্যাটারি অপ্টিমাইজ
<patch id="layout.buttons.action.hideButtonsPatch"> <patch id="layout.buttons.action.hideButtonsPatch">
<string name="revanced_hide_buttons_screen_title">অ্যাকশন বোতাম</string> <string name="revanced_hide_buttons_screen_title">অ্যাকশন বোতাম</string>
<string name="revanced_hide_buttons_screen_summary">ভিডিওর নীচে বোতাম লুকানো বা দেখানো</string> <string name="revanced_hide_buttons_screen_summary">ভিডিওর নীচে বোতাম লুকানো বা দেখানো</string>
<string name="revanced_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_title">Like এবং Dislike লুকান</string>
<string name="revanced_hide_like_dislike_button_summary_on">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> <string name="revanced_hide_like_dislike_button_summary_off">Like এবং Dislike বোতাম দেখানো হচ্ছে</string>
@@ -581,6 +587,9 @@ MicroG-এর জন্য ব্যাটারি অপ্টিমাইজ
মনে রাখবেন: এটি সক্রিয় করা ভিডিও বিজ্ঞাপনগুলিও জোর করে লুকিয়ে দেয়"</string> মনে রাখবেন: এটি সক্রিয় করা ভিডিও বিজ্ঞাপনগুলিও জোর করে লুকিয়ে দেয়"</string>
<string name="revanced_switch_create_with_notifications_button_summary_off">তৈরি বোতামকে বিজ্ঞপ্তি বোতাম দ্বারা সুইচ করা হয়নি</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_title">নেভিগেশন বোতাম লেবেল লুকান</string>
<string name="revanced_hide_navigation_button_labels_summary_on">লেবেল লুকিয়ে রয়েছে</string> <string name="revanced_hide_navigation_button_labels_summary_on">লেবেল লুকিয়ে রয়েছে</string>
<string name="revanced_hide_navigation_button_labels_summary_off">লেবেল প্রদর্শিত হয়েছে</string> <string name="revanced_hide_navigation_button_labels_summary_off">লেবেল প্রদর্শিত হয়েছে</string>
@@ -795,10 +804,13 @@ MicroG-এর জন্য ব্যাটারি অপ্টিমাইজ
<string name="revanced_hide_shorts_navigation_bar_summary_on">নেভিগেশন বার লুকিয়ে রয়েছে</string> <string name="revanced_hide_shorts_navigation_bar_summary_on">নেভিগেশন বার লুকিয়ে রয়েছে</string>
<string name="revanced_hide_shorts_navigation_bar_summary_off">পনেভিগেশন বার প্রদর্শিত হয়েছে</string> <string name="revanced_hide_shorts_navigation_bar_summary_off">পনেভিগেশন বার প্রদর্শিত হয়েছে</string>
</patch> </patch>
<patch id="layout.hide.suggestedvideoendscreen.disableSuggestedVideoEndScreenResourcePatch"> <patch id="layout.hide.endscreensuggestion.hideEndScreenSuggestedVideoPatch">
<string name="revanced_disable_suggested_video_end_screen_title">ভিডিওর শেষ স্ক্রিণে সাজেস্ট করা ভিডিও নিষ্ক্রিয় করুন</string> <string name="revanced_end_screen_suggested_video_title">শেষ স্ক্রীনে প্রস্তাবিত ভিডিও লুকানো হবে</string>
<string name="revanced_disable_suggested_video_end_screen_summary_on">সাজেস্ট করা ভিডিও নিস্ক্রিয় করা হবে</string> <string name="revanced_end_screen_suggested_video_summary_on">"অটো প্লে বন্ধ থাকলে শেষ স্ক্রীনে প্রস্তাবিত ভিডিও লুকানো থাকে
<string name="revanced_disable_suggested_video_end_screen_summary_off">সাজেস্ট করা ভিডিও প্রদর্শিত হবে</string>
YouTube সেটিংসে অটো প্লে পরিবর্তন করা যেতে পারে:
সেটিংস → প্লেব্যাক → অটো প্লে পরবর্তী ভিডিও"</string>
<string name="revanced_end_screen_suggested_video_summary_off">শেষ স্ক্রীনে প্রস্তাবিত ভিডিও দেখানো হয়েছে</string>
</patch> </patch>
<patch id="layout.hide.time.hideTimestampPatch"> <patch id="layout.hide.time.hideTimestampPatch">
<string name="revanced_hide_timestamp_title">ভিডিওর সময়স্ট্যাম্প লুকান</string> <string name="revanced_hide_timestamp_title">ভিডিওর সময়স্ট্যাম্প লুকান</string>
@@ -831,7 +843,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. --> <!-- 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_timeout">অপছন্দ সাময়িকভাবে উপলভ্য নয় (API সময় শেষ হয়েছে)</string>
<string name="revanced_ryd_failure_connection_status_code">অপছন্দ উপলভ্য নয় (অবস্থা %d)</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> <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. --> <!-- 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> <string name="revanced_ryd_failure_ryd_enabled_while_playing_video_then_user_voted">ReturnYouTubeDislike দিয়ে ভোট দিতে ভিডিও আবার লোড করুন</string>
@@ -840,14 +852,14 @@ MicroG-এর জন্য ব্যাটারি অপ্টিমাইজ
<string name="revanced_ryd_enable_summary_on">অপছন্দগুলো প্রদর্শিত হয়েছে</string> <string name="revanced_ryd_enable_summary_on">অপছন্দগুলো প্রদর্শিত হয়েছে</string>
<string name="revanced_ryd_enable_summary_off">অপছন্দগুলো প্রদর্শিত হয়নি</string> <string name="revanced_ryd_enable_summary_off">অপছন্দগুলো প্রদর্শিত হয়নি</string>
<string name="revanced_ryd_shorts_title">Shorts এ অপছন্দ দেখান</string> <string name="revanced_ryd_shorts_title">Shorts এ অপছন্দ দেখান</string>
<string name="revanced_ryd_shorts_summary_on">Shorts এ অপছন্দ পদর্শিত হয়েছে</string> <string name="revanced_ryd_shorts_summary_on">Shorts-এ অপছন্দগুলি দেখানো হয়েছে</string>
<string name="revanced_ryd_shorts_summary_on_disclaimer">"Shorts-এ ডিসলাইক দেখানো হচ্ছে <string name="revanced_ryd_shorts_summary_on_disclaimer">"Shorts-এ অপছন্দগুলি দেখানো হয়েছে
সীমাবদ্ধতা: গোপন মোডে ডিসলাইক প্রদর্শিত নাও হতে পারে"</string> সীমাবদ্ধতা: ছদ্মবেশী মোডে অপছন্দগুলি নাও দেখা যেতে পারে"</string>
<string name="revanced_ryd_shorts_summary_off">Shorts এ অপছন্দ লুকিয়ে রয়েছে</string> <string name="revanced_ryd_shorts_summary_off">Shorts-এ অপছন্দগুলি দেখানো হয়নি</string>
<string name="revanced_ryd_dislike_percentage_title">অপছন্দগুলো শতাংশ অনুযায়ী</string> <string name="revanced_ryd_dislike_percentage_title">অপছন্দগুলো শতাংশ অনুযায়ী</string>
<string name="revanced_ryd_dislike_percentage_summary_on">অপছন্দগুল শতাংশ অনুযায়ী প্রদর্শিত হয়েছে</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_off">অপছন্দগুলি একটি সংখ্যা হিসাবে দেখানো হয়েছে</string>
<!-- Translations should use language similar to 'revanced_sb_enable_compact_skip_button' --> <!-- Translations should use language similar to 'revanced_sb_enable_compact_skip_button' -->
<string name="revanced_ryd_compact_layout_title">কম্প্যাক্ট লাইক বোতাম</string> <string name="revanced_ryd_compact_layout_title">কম্প্যাক্ট লাইক বোতাম</string>
<string name="revanced_ryd_compact_layout_summary_on">পছন্দ বোতামটি ন্যূনতম প্রস্থের জন্য সাজানো হয়েছে</string> <string name="revanced_ryd_compact_layout_summary_on">পছন্দ বোতামটি ন্যূনতম প্রস্থের জন্য সাজানো হয়েছে</string>
@@ -909,20 +921,20 @@ MicroG-এর জন্য ব্যাটারি অপ্টিমাইজ
<string name="revanced_sb_square_layout_sum_on">বোতাম এবং নিয়ন্ত্রণগুলি বর্গক্ষেত্র</string> <string name="revanced_sb_square_layout_sum_on">বোতাম এবং নিয়ন্ত্রণগুলি বর্গক্ষেত্র</string>
<string name="revanced_sb_square_layout_sum_off">বোতাম এবং নিয়ন্ত্রণগুলি গোলাকার</string> <string name="revanced_sb_square_layout_sum_off">বোতাম এবং নিয়ন্ত্রণগুলি গোলাকার</string>
<!-- Translations should use language similar to 'revanced_ryd_compact_layout_title' --> <!-- 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_on">স্কিপ বোতামটি ন্যূনতম প্রস্থের জন্য সাজানো হয়েছে</string>
<string name="revanced_sb_enable_compact_skip_button_sum_off">স্কিপ বোতামটি সেরা চেহারার জন্য সাজানো হয়েছে</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_on">কয়েক সেকেন্ড পরে স্কিপ বোতাম লুকিয়ে যায়</string>
<string name="revanced_sb_enable_auto_hide_skip_segment_button_sum_off">স্কিপ বোতাম পুরো সেগমেন্টে দৃশ্যমান থাক</string> <string name="revanced_sb_enable_auto_hide_skip_segment_button_sum_off">পুরো অংশের জন্য Skip বোতাম দেখানো হয়েছ</string>
<string name="revanced_sb_general_skiptoast">স্বয়ংক্রিয়ভাবে এড়িয়ে যাওয়ার সময় একটি টোস্ট দেখান</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_on">সেগমেন্ট স্বয়ংক্রিয়ভাবে এড়িয়ে যেতে একটি টোস্ট দেখানো হয়। উদাহরণ দেখতে এখানে ট্যাপ করুন</string>
<string name="revanced_sb_general_skiptoast_sum_off">টোস্ট দেখানো হচ্ছে না। উদাহরণ দেখতে এখানে ট্যাপ করুন</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">সেগমেন্ট ছাড়া ভিডিওর দৈর্ঘ্য দেখান</string>
<string name="revanced_sb_general_time_without_sum_on">সমস্ত সেগমেন্ট ছাড়াই ভিডিওর দৈর্ঘ্য, পূর্ণ ভিডিওর দৈর্ঘ্যের পাশে বন্ধনীতে উল্লেখ করা হয়</string> <string name="revanced_sb_general_time_without_sum_on">সমস্ত সেগমেন্ট ছাড়াই ভিডিওর দৈর্ঘ্য, পূর্ণ ভিডিওর দৈর্ঘ্যের পাশে বন্ধনীতে উল্লেখ করা হয়</string>
<string name="revanced_sb_general_time_without_sum_off">সম্পূর্ণ ভিডিও দৈর্ঘ্য প্রদর্শিত হয়েছে</string> <string name="revanced_sb_general_time_without_sum_off">সম্পূর্ণ ভিডিও দৈর্ঘ্য প্রদর্শিত হয়েছে</string>
<string name="revanced_sb_create_segment_category">নতুন সেগমন্ট তৈরি হচ্ছে</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_on">নতুন সেগমেন্ট তৈরির বাটন প্রদর্শিত হয়েছে</string>
<string name="revanced_sb_enable_create_segment_sum_off">নতুন সেগমেন্ট তৈরির বাটন প্রদর্শিত হয়নি</string> <string name="revanced_sb_enable_create_segment_sum_off">নতুন সেগমেন্ট তৈরির বাটন প্রদর্শিত হয়নি</string>
<string name="revanced_sb_general_adjusting">নতুন সেগমেন্টের পদক্ষেপ সামঞ্জস্য করুন</string> <string name="revanced_sb_general_adjusting">নতুন সেগমেন্টের পদক্ষেপ সামঞ্জস্য করুন</string>
@@ -1015,7 +1027,7 @@ MicroG-এর জন্য ব্যাটারি অপ্টিমাইজ
<string name="revanced_sb_skipped_multiple_segments">একটানা একাধিক সেগমেন্ট এড়িয়ে গেছে</string> <string name="revanced_sb_skipped_multiple_segments">একটানা একাধিক সেগমেন্ট এড়িয়ে গেছে</string>
<string name="revanced_sb_skip_automatically">স্বয়ংক্রিয়ভাবে এড়িয়ে যান</string> <string name="revanced_sb_skip_automatically">স্বয়ংক্রিয়ভাবে এড়িয়ে যান</string>
<string name="revanced_sb_skip_automatically_once">একবার স্বয়ংক্রিয়ভাবে এড়িয়ে যান</string> <string name="revanced_sb_skip_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_seekbaronly">সিকবারে দেখান</string>
<string name="revanced_sb_skip_ignore">নিষ্ক্রিয় করুন</string> <string name="revanced_sb_skip_ignore">নিষ্ক্রিয় করুন</string>
<string name="revanced_sb_submit_failed_invalid">%s সেগমেন্ট জমা দিতে সক্ষম হয়নি</string> <string name="revanced_sb_submit_failed_invalid">%s সেগমেন্ট জমা দিতে সক্ষম হয়নি</string>
@@ -1065,7 +1077,7 @@ MicroG-এর জন্য ব্যাটারি অপ্টিমাইজ
<string name="revanced_sb_new_segment_edit_by_hand_parse_error">ভুল সময় দেয়া হয়েছে</string> <string name="revanced_sb_new_segment_edit_by_hand_parse_error">ভুল সময় দেয়া হয়েছে</string>
<string name="revanced_sb_stats">পরিসংখ্যান</string> <string name="revanced_sb_stats">পরিসংখ্যান</string>
<!-- Shown in the settings preferences, and translations can be any text length. --> <!-- 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_loading">লোড হচ্ছে...</string>
<string name="revanced_sb_stats_sb_disabled">SponsorBlock নিস্ক্রিয় হয়েছে</string> <string name="revanced_sb_stats_sb_disabled">SponsorBlock নিস্ক্রিয় হয়েছে</string>
<string name="revanced_sb_stats_username">আপনার ব্যবহারকারী নাম: &lt;b&gt;%s&lt;/b&gt;</string> <string name="revanced_sb_stats_username">আপনার ব্যবহারকারী নাম: &lt;b&gt;%s&lt;/b&gt;</string>
@@ -1283,13 +1295,13 @@ DeArrow সম্পর্কে আরও জানতে এখানে ট
<string name="revanced_alt_thumbnail_stills_time_entry_2">ভিডিওর মধ্যাংশ</string> <string name="revanced_alt_thumbnail_stills_time_entry_2">ভিডিওর মধ্যাংশ</string>
<string name="revanced_alt_thumbnail_stills_time_entry_3">ভিডিওর শেষাংশ</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. --> <!-- 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> <string name="revanced_alt_thumbnail_dearrow_error_generic">DeArrow সাময়িকভাবে উপলব্ধ নেই</string>
</patch> </patch>
<patch id="misc.announcements.announcementsPatch"> <patch id="misc.announcements.announcementsPatch">
<string name="revanced_announcements_title">ReVanced ঘোষণা দেখান</string> <string name="revanced_announcements_title">ReVanced ঘোষণা দেখান</string>
<string name="revanced_announcements_summary_on">শুরুতে ঘোষণা প্রদর্শিত হয়েছে</string> <string name="revanced_announcements_summary_on">স্টার্টআপে ঘোষণাগুলি দেখানো হয়েছে</string>
<string name="revanced_announcements_summary_off">শুরুতে ঘোষণা প্রদর্শিত হয়নি</string> <string name="revanced_announcements_summary_off">স্টার্টআপে ঘোষণাগুলি দেখানো হয়নি</string>
<string name="revanced_announcements_enabled_summary">শুরুতে ঘোষণা দেখান</string> <string name="revanced_announcements_enabled_summary">শুরুতে ঘোষণা দেখান</string>
<string name="revanced_announcements_connection_failed">ঘোষনাদাতার সাথে সম্পর্ক স্থাপন ব্যর্থ হয়েছে</string> <string name="revanced_announcements_connection_failed">ঘোষনাদাতার সাথে সম্পর্ক স্থাপন ব্যর্থ হয়েছে</string>
<string name="revanced_announcements_dialog_dismiss">বাতিল করুন</string> <string name="revanced_announcements_dialog_dismiss">বাতিল করুন</string>
@@ -1339,10 +1351,11 @@ DeArrow সম্পর্কে আরও জানতে এখানে ট
<string name="revanced_disable_zoom_haptics_summary_off">কম্পন সক্রিয় করা হয়েছে</string> <string name="revanced_disable_zoom_haptics_summary_off">কম্পন সক্রিয় করা হয়েছে</string>
</patch> </patch>
<patch id="video.audio.forceOriginalAudioPatch"> <patch id="video.audio.forceOriginalAudioPatch">
<string name="revanced_force_original_audio_title">মূল অডিও বলপূর্বক চালু করুন</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_on">মূল অডিও ভাষা ব্যবহার করা হচ্ছে</string>
<string name="revanced_force_original_audio_summary_off">ডিফল্ট অডিও ব্যবহার করছে</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>
<patch id="video.quality.rememberVideoQualityPatch"> <patch id="video.quality.rememberVideoQualityPatch">
<!-- Translations should use the same text as revanced_custom_playback_speeds_auto --> <!-- Translations should use the same text as revanced_custom_playback_speeds_auto -->
@@ -1405,8 +1418,6 @@ DeArrow সম্পর্কে আরও জানতে এখানে ট
ভিডিও প্লেব্যাক কাজ নাও করতে পারে"</string> ভিডিও প্লেব্যাক কাজ নাও করতে পারে"</string>
<string name="revanced_spoof_video_streams_user_dialog_message">এই সেটিংটি বন্ধ করার ফলে ভিডিও প্লেব্যাক ত্রুটি হতে পারে।</string> <string name="revanced_spoof_video_streams_user_dialog_message">এই সেটিংটি বন্ধ করার ফলে ভিডিও প্লেব্যাক ত্রুটি হতে পারে।</string>
<string name="revanced_spoof_video_streams_client_type_title">ডিফল্ট ক্লায়েন্ট</string> <string name="revanced_spoof_video_streams_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_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_on">ভিডিও কোডেক AVC (H.264) এ বাধ্যতামূলক করা হয়েছে</string>
<string name="revanced_spoof_video_streams_ios_force_avc_summary_off">ভিডিও কোডেক স্বয়ংক্রিয়ভাবে নির্ধারিত হয়</string> <string name="revanced_spoof_video_streams_ios_force_avc_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. --> <!-- 'For you' should be translated using the same localized wording YouTube displays. -->
<!-- 'Notify me' 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. --> 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. <!-- 'Show more' should be translated with the same localized wording that YouTube displays.
This button usually appears when searching for a YT creator. --> This button usually appears when searching for a YT creator. -->
<!-- https://logos.fandom.com/wiki/YouTube/Yoodles --> <!-- 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. --> <!-- '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. --> <!-- 'share' should be translated using the same localized wording YouTube displays for the button. -->
</patch> </patch>
<patch id="layout.hide.suggestedvideoendscreen.disableSuggestedVideoEndScreenResourcePatch"> <patch id="layout.hide.endscreensuggestion.hideEndScreenSuggestedVideoPatch">
</patch> </patch>
<patch id="layout.hide.time.hideTimestampPatch"> <patch id="layout.hide.time.hideTimestampPatch">
</patch> </patch>
@@ -206,6 +206,7 @@ Second \"item\" text"</string>
<patch id="misc.zoomhaptics.zoomHapticsPatch"> <patch id="misc.zoomhaptics.zoomHapticsPatch">
</patch> </patch>
<patch id="video.audio.forceOriginalAudioPatch"> <patch id="video.audio.forceOriginalAudioPatch">
<!-- 'Spoof video streams' should be the same translation used for revanced_spoof_video_streams_screen_title -->
</patch> </patch>
<patch id="video.quality.rememberVideoQualityPatch"> <patch id="video.quality.rememberVideoQualityPatch">
<!-- Translations should use the same text as revanced_custom_playback_speeds_auto --> <!-- 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 id="interaction.seekbar.enableSlideToSeekPatch">
</patch> </patch>
<patch id="misc.fix.playback.spoofVideoStreamsPatch"> <patch id="misc.fix.playback.spoofVideoStreamsPatch">
<!-- 'no auth' means no authentication -->
</patch> </patch>
</app> </app>
<app id="twitch"> <app id="twitch">

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