Compare commits

...

60 Commits

Author SHA1 Message Date
semantic-release-bot
f1a9537f01 chore: Release v5.47.0-dev.18 [skip ci]
# [5.47.0-dev.18](https://github.com/ReVanced/revanced-patches/compare/v5.47.0-dev.17...v5.47.0-dev.18) (2025-12-18)

### Features

* **Disney+ - SkipAds:** Add other package names the patch is compatible with ([#6372](https://github.com/ReVanced/revanced-patches/issues/6372)) ([1f4f252](1f4f252c81))
2025-12-18 12:09:57 +00:00
vippium
1f4f252c81 feat(Disney+ - SkipAds): Add other package names the patch is compatible with (#6372) 2025-12-18 12:59:47 +01:00
semantic-release-bot
2b560f5fe9 chore: Release v5.47.0-dev.17 [skip ci]
# [5.47.0-dev.17](https://github.com/ReVanced/revanced-patches/compare/v5.47.0-dev.16...v5.47.0-dev.17) (2025-12-18)

### Bug Fixes

* **Reddit - Hide ads:** Update patch for new versions of Reddit ([#6342](https://github.com/ReVanced/revanced-patches/issues/6342)) ([f8bd123](f8bd1239cc))
2025-12-18 02:05:14 +00:00
g9q
f8bd1239cc fix(Reddit - Hide ads): Update patch for new versions of Reddit (#6342)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2025-12-18 03:01:25 +01:00
semantic-release-bot
c825ebda37 chore: Release v5.47.0-dev.16 [skip ci]
# [5.47.0-dev.16](https://github.com/ReVanced/revanced-patches/compare/v5.47.0-dev.15...v5.47.0-dev.16) (2025-12-15)

### Bug Fixes

* **Lightroom:** Add `Disable version check` patch to fix opening the app  ([#6315](https://github.com/ReVanced/revanced-patches/issues/6315)) ([018d176](018d176914))

### Features

* **IdAustria - Remove device integrity check:** Update patch to work with latest version ([#6360](https://github.com/ReVanced/revanced-patches/issues/6360)) ([0ea3491](0ea3491227))
2025-12-15 11:34:05 +00:00
oSumAtrIX
255c00b183 chore: Fix minor syntax error 2025-12-15 12:28:53 +01:00
Alex Katlein
0ea3491227 feat(IdAustria - Remove device integrity check): Update patch to work with latest version (#6360)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2025-12-15 12:26:59 +01:00
Pun Butrach
5d437b08dd docs: Use American spelling (#6233) 2025-12-14 16:38:55 +01:00
f1re4xx
018d176914 fix(Lightroom): Add Disable version check patch to fix opening the app (#6315)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2025-12-14 16:38:26 +01:00
semantic-release-bot
9a77beea8a chore: Release v5.47.0-dev.15 [skip ci]
# [5.47.0-dev.15](https://github.com/ReVanced/revanced-patches/compare/v5.47.0-dev.14...v5.47.0-dev.15) (2025-12-13)

### Bug Fixes

* **YouTube - Hide layout components:** Fix "Hide Subscribe button" in channel page not working ([#6363](https://github.com/ReVanced/revanced-patches/issues/6363)) ([ded8370](ded8370207))
2025-12-13 20:26:05 +00:00
ILoveOpenSourceApplications
ded8370207 fix(YouTube - Hide layout components): Fix "Hide Subscribe button" in channel page not working (#6363) 2025-12-13 21:22:35 +01:00
semantic-release-bot
4d1104fc32 chore: Release v5.47.0-dev.14 [skip ci]
# [5.47.0-dev.14](https://github.com/ReVanced/revanced-patches/compare/v5.47.0-dev.13...v5.47.0-dev.14) (2025-12-13)

### Bug Fixes

* **Spotify:** Make patches work with latest versions again ([#6359](https://github.com/ReVanced/revanced-patches/issues/6359)) ([34830ba](34830ba63b))
2025-12-13 08:52:03 +00:00
Cilly Leang
34830ba63b fix(Spotify): Make patches work with latest versions again (#6359) 2025-12-13 09:48:39 +01:00
github-actions[bot]
7a6894d809 chore: Sync translations (#6344)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-12-10 03:58:45 +01:00
semantic-release-bot
144e6e2694 chore: Release v5.47.0-dev.13 [skip ci]
# [5.47.0-dev.13](https://github.com/ReVanced/revanced-patches/compare/v5.47.0-dev.12...v5.47.0-dev.13) (2025-12-10)

### Features

* **Peacock TV:** Add `Hide ads` patch ([#6348](https://github.com/ReVanced/revanced-patches/issues/6348)) ([847ee18](847ee189a9))
2025-12-10 02:58:06 +00:00
g9q
847ee189a9 feat(Peacock TV): Add Hide ads patch (#6348) 2025-12-10 03:55:08 +01:00
semantic-release-bot
dc813fe617 chore: Release v5.47.0-dev.12 [skip ci]
# [5.47.0-dev.12](https://github.com/ReVanced/revanced-patches/compare/v5.47.0-dev.11...v5.47.0-dev.12) (2025-12-08)

### Features

* **YouTube - Hide layout components:** Add "Hide Join button" and "Hide Subscribe button" options for channel page ([#6345](https://github.com/ReVanced/revanced-patches/issues/6345)) ([02831a6](02831a6069))
2025-12-08 21:14:39 +00:00
ILoveOpenSourceApplications
02831a6069 feat(YouTube - Hide layout components): Add "Hide Join button" and "Hide Subscribe button" options for channel page (#6345) 2025-12-08 22:10:35 +01:00
semantic-release-bot
5228fd4b58 chore: Release v5.47.0-dev.11 [skip ci]
# [5.47.0-dev.11](https://github.com/ReVanced/revanced-patches/compare/v5.47.0-dev.10...v5.47.0-dev.11) (2025-12-08)

### Features

* **Disney+:** Add `Skip ads` patch ([#6343](https://github.com/ReVanced/revanced-patches/issues/6343)) ([6bd7dca](6bd7dca75b))
2025-12-08 13:51:15 +00:00
g9q
6bd7dca75b feat(Disney+): Add Skip ads patch (#6343)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2025-12-08 14:45:41 +01:00
semantic-release-bot
22ed7bfbb3 chore: Release v5.47.0-dev.10 [skip ci]
# [5.47.0-dev.10](https://github.com/ReVanced/revanced-patches/compare/v5.47.0-dev.9...v5.47.0-dev.10) (2025-12-08)

### Features

* **YouTube - Hide Shorts components:** Add "Hide auto-dubbed label" and "Hide live preview" options ([#6334](https://github.com/ReVanced/revanced-patches/issues/6334)) ([a7c220a](a7c220a4ae))
2025-12-08 12:57:23 +00:00
ILoveOpenSourceApplications
a7c220a4ae feat(YouTube - Hide Shorts components): Add "Hide auto-dubbed label" and "Hide live preview" options (#6334) 2025-12-08 13:51:57 +01:00
semantic-release-bot
d8ca4ee931 chore: Release v5.47.0-dev.9 [skip ci]
# [5.47.0-dev.9](https://github.com/ReVanced/revanced-patches/compare/v5.47.0-dev.8...v5.47.0-dev.9) (2025-12-08)

### Features

* **YouTube - Hide layout components:** Add "Hide cell divider", "Hide featured links", and "Hide featured videos" options ([#6335](https://github.com/ReVanced/revanced-patches/issues/6335)) ([a5d197b](a5d197b977))
2025-12-08 12:06:03 +00:00
ILoveOpenSourceApplications
a5d197b977 feat(YouTube - Hide layout components): Add "Hide cell divider", "Hide featured links", and "Hide featured videos" options (#6335)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2025-12-08 13:02:22 +01:00
semantic-release-bot
a0ec4c07f7 chore: Release v5.47.0-dev.8 [skip ci]
# [5.47.0-dev.8](https://github.com/ReVanced/revanced-patches/compare/v5.47.0-dev.7...v5.47.0-dev.8) (2025-12-08)

### Features

* **Instagram:** Add `Disable Reels scrolling` patch ([#6317](https://github.com/ReVanced/revanced-patches/issues/6317)) ([0928dcd](0928dcd00d))
* **ProtonVPN:** Add `Remove delay` patch ([#6326](https://github.com/ReVanced/revanced-patches/issues/6326)) ([bbd8932](bbd8932b2e))
2025-12-08 11:36:43 +00:00
Alexey Gorbachev
0928dcd00d feat(Instagram): Add Disable Reels scrolling patch (#6317)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2025-12-08 12:31:54 +01:00
Sylvain Finot
bbd8932b2e feat(ProtonVPN): Add Remove delay patch (#6326)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2025-12-08 12:30:47 +01:00
semantic-release-bot
300b12f948 chore: Release v5.47.0-dev.7 [skip ci]
# [5.47.0-dev.7](https://github.com/ReVanced/revanced-patches/compare/v5.47.0-dev.6...v5.47.0-dev.7) (2025-12-03)

### Features

* **Spoof SIM provider:** Spoof additional TelephonyManager methods ([#6293](https://github.com/ReVanced/revanced-patches/issues/6293)) ([ac583d4](ac583d40d0))
2025-12-03 15:05:05 +00:00
rospino74
ac583d40d0 feat(Spoof SIM provider): Spoof additional TelephonyManager methods (#6293) 2025-12-03 16:01:08 +01:00
semantic-release-bot
c400188c38 chore: Release v5.47.0-dev.6 [skip ci]
# [5.47.0-dev.6](https://github.com/ReVanced/revanced-patches/compare/v5.47.0-dev.5...v5.47.0-dev.6) (2025-11-24)

### Features

* **Letterboxd:** Add `Hide ads` patch ([#6309](https://github.com/ReVanced/revanced-patches/issues/6309)) ([0af0ee9](0af0ee92c4))
2025-11-24 12:01:20 +00:00
Swakshan
0af0ee92c4 feat(Letterboxd): Add Hide ads patch (#6309)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2025-11-24 12:56:55 +01:00
semantic-release-bot
fff29544b9 chore: Release v5.47.0-dev.5 [skip ci]
# [5.47.0-dev.5](https://github.com/ReVanced/revanced-patches/compare/v5.47.0-dev.4...v5.47.0-dev.5) (2025-11-13)

### Bug Fixes

* **YouTube - Hide player flyout menu items:** Allow hiding audio menu with 'Android No SDK' client type ([9495cf4](9495cf49ef))
2025-11-13 07:44:09 +00:00
LisoUseInAIKyrios
9495cf49ef fix(YouTube - Hide player flyout menu items): Allow hiding audio menu with 'Android No SDK' client type 2025-11-13 09:40:28 +02:00
semantic-release-bot
15675b5164 chore: Release v5.47.0-dev.4 [skip ci]
# [5.47.0-dev.4](https://github.com/ReVanced/revanced-patches/compare/v5.47.0-dev.3...v5.47.0-dev.4) (2025-11-12)

### Bug Fixes

* **YouTube - Sanitize sharing links:** Handle non hierarchical urls ([654d091](654d091e65))
2025-11-12 19:01:00 +00:00
LisoUseInAIKyrios
654d091e65 fix(YouTube - Sanitize sharing links): Handle non hierarchical urls 2025-11-12 20:55:32 +02:00
semantic-release-bot
98371be33c chore: Release v5.47.0-dev.3 [skip ci]
# [5.47.0-dev.3](https://github.com/ReVanced/revanced-patches/compare/v5.47.0-dev.2...v5.47.0-dev.3) (2025-11-12)

### Features

* **Instagram:** Add `Disable auto story flipping` patch ([#6262](https://github.com/ReVanced/revanced-patches/issues/6262)) ([2f0de15](2f0de15e67))
2025-11-12 07:46:04 +00:00
brosssh
2f0de15e67 feat(Instagram): Add Disable auto story flipping patch (#6262)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
Co-authored-by: LisoUseInAIKyrios <118716522+LisoUseInAIKyrios@users.noreply.github.com>
2025-11-12 08:41:15 +01:00
semantic-release-bot
df160370e2 chore: Release v5.47.0-dev.2 [skip ci]
# [5.47.0-dev.2](https://github.com/ReVanced/revanced-patches/compare/v5.47.0-dev.1...v5.47.0-dev.2) (2025-11-12)

### Bug Fixes

* **Instagram - Disable signature check:** Change patch to default excluded ([#6283](https://github.com/ReVanced/revanced-patches/issues/6283)) ([bb745b5](bb745b555b))
2025-11-12 06:19:34 +00:00
LisoUseInAIKyrios
bb745b555b fix(Instagram - Disable signature check): Change patch to default excluded (#6283) 2025-11-12 08:14:16 +02:00
semantic-release-bot
8df9a46721 chore: Release v5.47.0-dev.1 [skip ci]
# [5.47.0-dev.1](https://github.com/ReVanced/revanced-patches/compare/v5.46.0...v5.47.0-dev.1) (2025-11-12)

### Features

* **Instagram:** Add `Anonymous story viewing` patch ([#6263](https://github.com/ReVanced/revanced-patches/issues/6263)) ([94ae84a](94ae84ad0f))
2025-11-12 05:32:16 +00:00
brosssh
94ae84ad0f feat(Instagram): Add Anonymous story viewing patch (#6263) 2025-11-12 07:29:13 +02:00
github-actions[bot]
4febb2e2e9 chore: Sync translations (#6280) 2025-11-12 07:28:43 +02:00
semantic-release-bot
b9bc7e3e58 chore: Release v5.46.0 [skip ci]
# [5.46.0](https://github.com/ReVanced/revanced-patches/compare/v5.45.0...v5.46.0) (2025-11-10)

### Bug Fixes

* **Duolingo - Disable ads:** Constrain patch to last working app target ([f238ae9](f238ae9895))
* **Instagram - Hide navigation buttons:** Constrain patch to last working app target ([e030e9c](e030e9c07a))
* **Spotify - Hide Create button:** Remove obsolete patch that is no longer needed ([#6252](https://github.com/ReVanced/revanced-patches/issues/6252)) ([59d85b2](59d85b28a7))
* **YouTube - Check watch history domain name resolution:** Fix false positive warning message if the internet connection fails halfway into the DNS check ([5726353](57263538c7))
* **YouTube - Hide layout components:** Fix "Hide Hype points" ([#6247](https://github.com/ReVanced/revanced-patches/issues/6247)) ([5821440](582144026d))
* **YouTube - Settings:** Add additional languages to ReVanced language preference ([d390b54](d390b54dab))
* **YouTube - Settings:** Resolve settings search crash when searching for specific words ([#6231](https://github.com/ReVanced/revanced-patches/issues/6231)) ([76dcfae](76dcfaefd8))

### Features

* **YouTube - Debugging:** Add setting to block experimental client flags ([#6196](https://github.com/ReVanced/revanced-patches/issues/6196)) ([2e9d695](2e9d6959c9))
* **YouTube - Hide layout components:** Add "Hide Hype points" ([#6230](https://github.com/ReVanced/revanced-patches/issues/6230)) ([a52c015](a52c0153b1))
* **YouTube - Hide layout components:** Add video description "Hide Featured content" and "Hide Subscribe button" ([#6253](https://github.com/ReVanced/revanced-patches/issues/6253)) ([da4cf94](da4cf94091))
* **YouTube - Hide player flyout menu items:** Add "Hide Listen with YouTube Music" ([#6232](https://github.com/ReVanced/revanced-patches/issues/6232)) ([858edbf](858edbf3e7))
* **YouTube Music:** Add `Change miniplayer color` patch ([#6259](https://github.com/ReVanced/revanced-patches/issues/6259)) ([ab808ae](ab808aeb77))
* **YouTube Music:** Add `Hide buttons` patch ([#6255](https://github.com/ReVanced/revanced-patches/issues/6255)) ([7a18ebc](7a18ebc7ab))
2025-11-10 10:06:40 +00:00
LisoUseInAIKyrios
9f3bb26cb9 chore: Merge branch dev to main (#6237) 2025-11-10 12:03:02 +02:00
github-actions[bot]
d64dfc2884 chore: Sync translations (#6276) 2025-11-10 12:00:41 +02:00
LisoUseInAIKyrios
a39ef1e0a4 refactor(YouTube Music - Custom branding): Resolve startup app crash when patching unsupported newer app versions 2025-11-10 11:23:09 +02:00
semantic-release-bot
1d8e977a43 chore: Release v5.46.0-dev.10 [skip ci]
# [5.46.0-dev.10](https://github.com/ReVanced/revanced-patches/compare/v5.46.0-dev.9...v5.46.0-dev.10) (2025-11-09)

### Features

* **YouTube - Hide layout components:** Add video description "Hide Featured content" and "Hide Subscribe button" ([#6253](https://github.com/ReVanced/revanced-patches/issues/6253)) ([da4cf94](da4cf94091))
2025-11-09 15:35:27 +00:00
ILoveOpenSourceApplications
da4cf94091 feat(YouTube - Hide layout components): Add video description "Hide Featured content" and "Hide Subscribe button" (#6253) 2025-11-09 17:30:07 +02:00
github-actions[bot]
d23fa5e3b7 chore: Sync translations (#6270) 2025-11-09 17:29:11 +02:00
semantic-release-bot
34d29abdfa chore: Release v5.46.0-dev.9 [skip ci]
# [5.46.0-dev.9](https://github.com/ReVanced/revanced-patches/compare/v5.46.0-dev.8...v5.46.0-dev.9) (2025-11-09)

### Features

* **YouTube Music:** Add `Change miniplayer color` patch ([#6259](https://github.com/ReVanced/revanced-patches/issues/6259)) ([ab808ae](ab808aeb77))
2025-11-09 07:43:26 +00:00
MarcaD
ab808aeb77 feat(YouTube Music): Add Change miniplayer color patch (#6259)
Co-authored-by: LisoUseInAIKyrios <118716522+LisoUseInAIKyrios@users.noreply.github.com>
2025-11-09 09:39:51 +02:00
github-actions[bot]
a6b07cceb1 chore: Sync translations (#6266) 2025-11-09 09:39:32 +02:00
semantic-release-bot
d291881215 chore: Release v5.46.0-dev.8 [skip ci]
# [5.46.0-dev.8](https://github.com/ReVanced/revanced-patches/compare/v5.46.0-dev.7...v5.46.0-dev.8) (2025-11-09)

### Features

* **YouTube Music:** Add `Hide buttons` patch ([#6255](https://github.com/ReVanced/revanced-patches/issues/6255)) ([7a18ebc](7a18ebc7ab))
2025-11-09 07:09:07 +00:00
MarcaD
7a18ebc7ab feat(YouTube Music): Add Hide buttons patch (#6255) 2025-11-09 09:05:31 +02:00
semantic-release-bot
475197af45 chore: Release v5.46.0-dev.7 [skip ci]
# [5.46.0-dev.7](https://github.com/ReVanced/revanced-patches/compare/v5.46.0-dev.6...v5.46.0-dev.7) (2025-11-08)

### Bug Fixes

* **YouTube - Settings:** Add additional languages to ReVanced language preference ([d390b54](d390b54dab))
2025-11-08 12:32:08 +00:00
LisoUseInAIKyrios
d390b54dab fix(YouTube - Settings): Add additional languages to ReVanced language preference 2025-11-08 14:28:52 +02:00
github-actions[bot]
4d1eaa6b14 chore: Sync translations (#6260) 2025-11-08 14:26:20 +02:00
LisoUseInAIKyrios
c6364f5b49 chore: Fix compilation warning 2025-11-08 10:08:25 +02:00
semantic-release-bot
f177eae385 chore: Release v5.46.0-dev.6 [skip ci]
# [5.46.0-dev.6](https://github.com/ReVanced/revanced-patches/compare/v5.46.0-dev.5...v5.46.0-dev.6) (2025-11-08)

### Features

* **YouTube - Debugging:** Add setting to block experimental client flags ([#6196](https://github.com/ReVanced/revanced-patches/issues/6196)) ([2e9d695](2e9d6959c9))
2025-11-08 08:07:41 +00:00
MarcaD
2e9d6959c9 feat(YouTube - Debugging): Add setting to block experimental client flags (#6196) 2025-11-08 10:01:46 +02:00
169 changed files with 6430 additions and 2317 deletions

View File

@@ -1,3 +1,193 @@
# [5.47.0-dev.18](https://github.com/ReVanced/revanced-patches/compare/v5.47.0-dev.17...v5.47.0-dev.18) (2025-12-18)
### Features
* **Disney+ - SkipAds:** Add other package names the patch is compatible with ([#6372](https://github.com/ReVanced/revanced-patches/issues/6372)) ([1f4f252](https://github.com/ReVanced/revanced-patches/commit/1f4f252c81e9a89267f6e37548e66027b1bc1a1a))
# [5.47.0-dev.17](https://github.com/ReVanced/revanced-patches/compare/v5.47.0-dev.16...v5.47.0-dev.17) (2025-12-18)
### Bug Fixes
* **Reddit - Hide ads:** Update patch for new versions of Reddit ([#6342](https://github.com/ReVanced/revanced-patches/issues/6342)) ([f8bd123](https://github.com/ReVanced/revanced-patches/commit/f8bd1239cc0f0bd1c2dca39f846951bf512891e3))
# [5.47.0-dev.16](https://github.com/ReVanced/revanced-patches/compare/v5.47.0-dev.15...v5.47.0-dev.16) (2025-12-15)
### Bug Fixes
* **Lightroom:** Add `Disable version check` patch to fix opening the app ([#6315](https://github.com/ReVanced/revanced-patches/issues/6315)) ([018d176](https://github.com/ReVanced/revanced-patches/commit/018d176914a06a30e9007a3eb2e6b0f459078413))
### Features
* **IdAustria - Remove device integrity check:** Update patch to work with latest version ([#6360](https://github.com/ReVanced/revanced-patches/issues/6360)) ([0ea3491](https://github.com/ReVanced/revanced-patches/commit/0ea3491227fc50c03555d43d3fec78eb82906b26))
# [5.47.0-dev.15](https://github.com/ReVanced/revanced-patches/compare/v5.47.0-dev.14...v5.47.0-dev.15) (2025-12-13)
### Bug Fixes
* **YouTube - Hide layout components:** Fix "Hide Subscribe button" in channel page not working ([#6363](https://github.com/ReVanced/revanced-patches/issues/6363)) ([ded8370](https://github.com/ReVanced/revanced-patches/commit/ded83702077701aac8a8749d71bf7376427f37d6))
# [5.47.0-dev.14](https://github.com/ReVanced/revanced-patches/compare/v5.47.0-dev.13...v5.47.0-dev.14) (2025-12-13)
### Bug Fixes
* **Spotify:** Make patches work with latest versions again ([#6359](https://github.com/ReVanced/revanced-patches/issues/6359)) ([34830ba](https://github.com/ReVanced/revanced-patches/commit/34830ba63b436146064f0f89f948d51cd0cb9146))
# [5.47.0-dev.13](https://github.com/ReVanced/revanced-patches/compare/v5.47.0-dev.12...v5.47.0-dev.13) (2025-12-10)
### Features
* **Peacock TV:** Add `Hide ads` patch ([#6348](https://github.com/ReVanced/revanced-patches/issues/6348)) ([847ee18](https://github.com/ReVanced/revanced-patches/commit/847ee189a971e6d4a99823998569f8e561b8319c))
# [5.47.0-dev.12](https://github.com/ReVanced/revanced-patches/compare/v5.47.0-dev.11...v5.47.0-dev.12) (2025-12-08)
### Features
* **YouTube - Hide layout components:** Add "Hide Join button" and "Hide Subscribe button" options for channel page ([#6345](https://github.com/ReVanced/revanced-patches/issues/6345)) ([02831a6](https://github.com/ReVanced/revanced-patches/commit/02831a6069fc30ffa3a87f8e4de653d003a2187e))
# [5.47.0-dev.11](https://github.com/ReVanced/revanced-patches/compare/v5.47.0-dev.10...v5.47.0-dev.11) (2025-12-08)
### Features
* **Disney+:** Add `Skip ads` patch ([#6343](https://github.com/ReVanced/revanced-patches/issues/6343)) ([6bd7dca](https://github.com/ReVanced/revanced-patches/commit/6bd7dca75bd2ea335a596aa93a8b767d39be5f83))
# [5.47.0-dev.10](https://github.com/ReVanced/revanced-patches/compare/v5.47.0-dev.9...v5.47.0-dev.10) (2025-12-08)
### Features
* **YouTube - Hide Shorts components:** Add "Hide auto-dubbed label" and "Hide live preview" options ([#6334](https://github.com/ReVanced/revanced-patches/issues/6334)) ([a7c220a](https://github.com/ReVanced/revanced-patches/commit/a7c220a4aea93ea7ae7005b5760443d7571c4228))
# [5.47.0-dev.9](https://github.com/ReVanced/revanced-patches/compare/v5.47.0-dev.8...v5.47.0-dev.9) (2025-12-08)
### Features
* **YouTube - Hide layout components:** Add "Hide cell divider", "Hide featured links", and "Hide featured videos" options ([#6335](https://github.com/ReVanced/revanced-patches/issues/6335)) ([a5d197b](https://github.com/ReVanced/revanced-patches/commit/a5d197b9775b98d7a37bfdee9e5f726d5e04d8cf))
# [5.47.0-dev.8](https://github.com/ReVanced/revanced-patches/compare/v5.47.0-dev.7...v5.47.0-dev.8) (2025-12-08)
### Features
* **Instagram:** Add `Disable Reels scrolling` patch ([#6317](https://github.com/ReVanced/revanced-patches/issues/6317)) ([0928dcd](https://github.com/ReVanced/revanced-patches/commit/0928dcd00dc2a9c1eef9a23c1e26ff5dc9ee670a))
* **ProtonVPN:** Add `Remove delay` patch ([#6326](https://github.com/ReVanced/revanced-patches/issues/6326)) ([bbd8932](https://github.com/ReVanced/revanced-patches/commit/bbd8932b2e740aff96ba047332e541bff3e09436))
# [5.47.0-dev.7](https://github.com/ReVanced/revanced-patches/compare/v5.47.0-dev.6...v5.47.0-dev.7) (2025-12-03)
### Features
* **Spoof SIM provider:** Spoof additional TelephonyManager methods ([#6293](https://github.com/ReVanced/revanced-patches/issues/6293)) ([ac583d4](https://github.com/ReVanced/revanced-patches/commit/ac583d40d0f4c0e6544e3661ff3e82a25912f2b0))
# [5.47.0-dev.6](https://github.com/ReVanced/revanced-patches/compare/v5.47.0-dev.5...v5.47.0-dev.6) (2025-11-24)
### Features
* **Letterboxd:** Add `Hide ads` patch ([#6309](https://github.com/ReVanced/revanced-patches/issues/6309)) ([0af0ee9](https://github.com/ReVanced/revanced-patches/commit/0af0ee92c48bb2ffc332197e05439e20c5c05d83))
# [5.47.0-dev.5](https://github.com/ReVanced/revanced-patches/compare/v5.47.0-dev.4...v5.47.0-dev.5) (2025-11-13)
### Bug Fixes
* **YouTube - Hide player flyout menu items:** Allow hiding audio menu with 'Android No SDK' client type ([9495cf4](https://github.com/ReVanced/revanced-patches/commit/9495cf49ef8a872be64de6c971c1919b4b9a8720))
# [5.47.0-dev.4](https://github.com/ReVanced/revanced-patches/compare/v5.47.0-dev.3...v5.47.0-dev.4) (2025-11-12)
### Bug Fixes
* **YouTube - Sanitize sharing links:** Handle non hierarchical urls ([654d091](https://github.com/ReVanced/revanced-patches/commit/654d091e650cda37650b57cbf3ba6f1cdd6d47d3))
# [5.47.0-dev.3](https://github.com/ReVanced/revanced-patches/compare/v5.47.0-dev.2...v5.47.0-dev.3) (2025-11-12)
### Features
* **Instagram:** Add `Disable auto story flipping` patch ([#6262](https://github.com/ReVanced/revanced-patches/issues/6262)) ([2f0de15](https://github.com/ReVanced/revanced-patches/commit/2f0de15e67e4f99ed6ecdc136d04cceb23b0d069))
# [5.47.0-dev.2](https://github.com/ReVanced/revanced-patches/compare/v5.47.0-dev.1...v5.47.0-dev.2) (2025-11-12)
### Bug Fixes
* **Instagram - Disable signature check:** Change patch to default excluded ([#6283](https://github.com/ReVanced/revanced-patches/issues/6283)) ([bb745b5](https://github.com/ReVanced/revanced-patches/commit/bb745b555b3808b7679c5995319aa365630fbd76))
# [5.47.0-dev.1](https://github.com/ReVanced/revanced-patches/compare/v5.46.0...v5.47.0-dev.1) (2025-11-12)
### Features
* **Instagram:** Add `Anonymous story viewing` patch ([#6263](https://github.com/ReVanced/revanced-patches/issues/6263)) ([94ae84a](https://github.com/ReVanced/revanced-patches/commit/94ae84ad0fc3a9197c82d5356301d464730c3b17))
# [5.46.0](https://github.com/ReVanced/revanced-patches/compare/v5.45.0...v5.46.0) (2025-11-10)
### Bug Fixes
* **Duolingo - Disable ads:** Constrain patch to last working app target ([f238ae9](https://github.com/ReVanced/revanced-patches/commit/f238ae9895000f01d1dccb800cc8efde0d5362bd))
* **Instagram - Hide navigation buttons:** Constrain patch to last working app target ([e030e9c](https://github.com/ReVanced/revanced-patches/commit/e030e9c07a7748e117ac44f6776a9f6317b20623))
* **Spotify - Hide Create button:** Remove obsolete patch that is no longer needed ([#6252](https://github.com/ReVanced/revanced-patches/issues/6252)) ([59d85b2](https://github.com/ReVanced/revanced-patches/commit/59d85b28a7fcb285ff5f2bb6ae654020d76b2019))
* **YouTube - Check watch history domain name resolution:** Fix false positive warning message if the internet connection fails halfway into the DNS check ([5726353](https://github.com/ReVanced/revanced-patches/commit/57263538c79f5a561c449229ac8e068c641285d3))
* **YouTube - Hide layout components:** Fix "Hide Hype points" ([#6247](https://github.com/ReVanced/revanced-patches/issues/6247)) ([5821440](https://github.com/ReVanced/revanced-patches/commit/582144026d28e57bb7adcbba39244f3c7cdbc0f3))
* **YouTube - Settings:** Add additional languages to ReVanced language preference ([d390b54](https://github.com/ReVanced/revanced-patches/commit/d390b54dab92d75b4e0d3e38344eae489dd69d98))
* **YouTube - Settings:** Resolve settings search crash when searching for specific words ([#6231](https://github.com/ReVanced/revanced-patches/issues/6231)) ([76dcfae](https://github.com/ReVanced/revanced-patches/commit/76dcfaefd8679e45a70f265b0239436e60c055cf))
### Features
* **YouTube - Debugging:** Add setting to block experimental client flags ([#6196](https://github.com/ReVanced/revanced-patches/issues/6196)) ([2e9d695](https://github.com/ReVanced/revanced-patches/commit/2e9d6959c94df7588b9e34b18770e9f437e91926))
* **YouTube - Hide layout components:** Add "Hide Hype points" ([#6230](https://github.com/ReVanced/revanced-patches/issues/6230)) ([a52c015](https://github.com/ReVanced/revanced-patches/commit/a52c0153b12c3f6f0ad260e03d2e9850c0466392))
* **YouTube - Hide layout components:** Add video description "Hide Featured content" and "Hide Subscribe button" ([#6253](https://github.com/ReVanced/revanced-patches/issues/6253)) ([da4cf94](https://github.com/ReVanced/revanced-patches/commit/da4cf940911a4406e2c9dd558b60305385a80c61))
* **YouTube - Hide player flyout menu items:** Add "Hide Listen with YouTube Music" ([#6232](https://github.com/ReVanced/revanced-patches/issues/6232)) ([858edbf](https://github.com/ReVanced/revanced-patches/commit/858edbf3e7f394fcc766d767c8dc54cf5ba24370))
* **YouTube Music:** Add `Change miniplayer color` patch ([#6259](https://github.com/ReVanced/revanced-patches/issues/6259)) ([ab808ae](https://github.com/ReVanced/revanced-patches/commit/ab808aeb773592cb26c848d8456478a346ec3bad))
* **YouTube Music:** Add `Hide buttons` patch ([#6255](https://github.com/ReVanced/revanced-patches/issues/6255)) ([7a18ebc](https://github.com/ReVanced/revanced-patches/commit/7a18ebc7ab74ba30c5d5284a4856c55cdfc31097))
# [5.46.0-dev.10](https://github.com/ReVanced/revanced-patches/compare/v5.46.0-dev.9...v5.46.0-dev.10) (2025-11-09)
### Features
* **YouTube - Hide layout components:** Add video description "Hide Featured content" and "Hide Subscribe button" ([#6253](https://github.com/ReVanced/revanced-patches/issues/6253)) ([da4cf94](https://github.com/ReVanced/revanced-patches/commit/da4cf940911a4406e2c9dd558b60305385a80c61))
# [5.46.0-dev.9](https://github.com/ReVanced/revanced-patches/compare/v5.46.0-dev.8...v5.46.0-dev.9) (2025-11-09)
### Features
* **YouTube Music:** Add `Change miniplayer color` patch ([#6259](https://github.com/ReVanced/revanced-patches/issues/6259)) ([ab808ae](https://github.com/ReVanced/revanced-patches/commit/ab808aeb773592cb26c848d8456478a346ec3bad))
# [5.46.0-dev.8](https://github.com/ReVanced/revanced-patches/compare/v5.46.0-dev.7...v5.46.0-dev.8) (2025-11-09)
### Features
* **YouTube Music:** Add `Hide buttons` patch ([#6255](https://github.com/ReVanced/revanced-patches/issues/6255)) ([7a18ebc](https://github.com/ReVanced/revanced-patches/commit/7a18ebc7ab74ba30c5d5284a4856c55cdfc31097))
# [5.46.0-dev.7](https://github.com/ReVanced/revanced-patches/compare/v5.46.0-dev.6...v5.46.0-dev.7) (2025-11-08)
### Bug Fixes
* **YouTube - Settings:** Add additional languages to ReVanced language preference ([d390b54](https://github.com/ReVanced/revanced-patches/commit/d390b54dab92d75b4e0d3e38344eae489dd69d98))
# [5.46.0-dev.6](https://github.com/ReVanced/revanced-patches/compare/v5.46.0-dev.5...v5.46.0-dev.6) (2025-11-08)
### Features
* **YouTube - Debugging:** Add setting to block experimental client flags ([#6196](https://github.com/ReVanced/revanced-patches/issues/6196)) ([2e9d695](https://github.com/ReVanced/revanced-patches/commit/2e9d6959c94df7588b9e34b18770e9f437e91926))
# [5.46.0-dev.5](https://github.com/ReVanced/revanced-patches/compare/v5.46.0-dev.4...v5.46.0-dev.5) (2025-11-07) # [5.46.0-dev.5](https://github.com/ReVanced/revanced-patches/compare/v5.46.0-dev.4...v5.46.0-dev.5) (2025-11-07)

View File

@@ -97,9 +97,9 @@ Thank you for considering contributing to ReVanced Patches. You can find the con
To build ReVanced Patches, you can follow the [ReVanced documentation](https://github.com/ReVanced/revanced-documentation). To build ReVanced Patches, you can follow the [ReVanced documentation](https://github.com/ReVanced/revanced-documentation).
## 📜 Licence ## 📜 License
ReVanced Patches is licensed under the GPLv3 license. Please see the [license file](LICENSE) for more information. ReVanced Patches is licensed under the GPLv3 license. Please see the [license file](LICENSE) for more information.
[tl;dr](https://www.tldrlegal.com/license/gnu-general-public-license-v3-gpl-3) you may copy, distribute and modify ReVanced Patches as long as you track changes/dates in source files. [tl;dr](https://www.tldrlegal.com/license/gnu-general-public-license-v3-gpl-3) you may copy, distribute and modify ReVanced Patches as long as you track changes/dates in source files.
Any modifications to ReVanced Patches must also be made available under the GPL, Any modifications to ReVanced Patches must also be made available under the GPL,
along with build & install instructions. along with build & install instructions.

View File

@@ -0,0 +1,14 @@
package app.revanced.extension.music.patches;
import app.revanced.extension.music.settings.Settings;
@SuppressWarnings("unused")
public class ChangeMiniplayerColorPatch {
/**
* Injection point
*/
public static boolean changeMiniplayerColor() {
return Settings.CHANGE_MINIPLAYER_COLOR.get();
}
}

View File

@@ -0,0 +1,49 @@
package app.revanced.extension.music.patches;
import static app.revanced.extension.shared.Utils.hideViewBy0dpUnderCondition;
import android.view.View;
import android.view.ViewGroup;
import app.revanced.extension.music.settings.Settings;
@SuppressWarnings("unused")
public class HideButtonsPatch {
/**
* Injection point
*/
public static int hideCastButton(int original) {
return Settings.HIDE_CAST_BUTTON.get() ? View.GONE : original;
}
/**
* Injection point
*/
public static void hideCastButton(View view) {
hideViewBy0dpUnderCondition(Settings.HIDE_CAST_BUTTON, view);
}
/**
* Injection point
*/
public static boolean hideHistoryButton(boolean original) {
return original && !Settings.HIDE_HISTORY_BUTTON.get();
}
/**
* Injection point
*/
public static void hideNotificationButton(View view) {
if (view.getParent() instanceof ViewGroup viewGroup) {
hideViewBy0dpUnderCondition(Settings.HIDE_NOTIFICATION_BUTTON, viewGroup);
}
}
/**
* Injection point
*/
public static void hideSearchButton(View view) {
hideViewBy0dpUnderCondition(Settings.HIDE_SEARCH_BUTTON, view);
}
}

View File

@@ -1,24 +0,0 @@
package app.revanced.extension.music.patches;
import static app.revanced.extension.shared.Utils.hideViewBy0dpUnderCondition;
import android.view.View;
import app.revanced.extension.music.settings.Settings;
@SuppressWarnings("unused")
public class HideCastButtonPatch {
/**
* Injection point
*/
public static int hideCastButton(int original) {
return Settings.HIDE_CAST_BUTTON.get() ? View.GONE : original;
}
/**
* Injection point
*/
public static void hideCastButton(View view) {
hideViewBy0dpUnderCondition(Settings.HIDE_CAST_BUTTON, view);
}
}

View File

@@ -3,6 +3,7 @@ package app.revanced.extension.music.patches;
import static app.revanced.extension.shared.Utils.hideViewBy0dpUnderCondition; import static app.revanced.extension.shared.Utils.hideViewBy0dpUnderCondition;
import android.view.View; import android.view.View;
import app.revanced.extension.music.settings.Settings; import app.revanced.extension.music.settings.Settings;
@SuppressWarnings("unused") @SuppressWarnings("unused")

View File

@@ -16,8 +16,11 @@ public class Settings extends BaseSettings {
public static final BooleanSetting HIDE_GET_PREMIUM_LABEL = new BooleanSetting("revanced_music_hide_get_premium_label", TRUE, true); public static final BooleanSetting HIDE_GET_PREMIUM_LABEL = new BooleanSetting("revanced_music_hide_get_premium_label", TRUE, true);
// General // General
public static final BooleanSetting HIDE_CAST_BUTTON = new BooleanSetting("revanced_music_hide_cast_button", TRUE, false); public static final BooleanSetting HIDE_CAST_BUTTON = new BooleanSetting("revanced_music_hide_cast_button", TRUE, true);
public static final BooleanSetting HIDE_CATEGORY_BAR = new BooleanSetting("revanced_music_hide_category_bar", FALSE, true); public static final BooleanSetting HIDE_CATEGORY_BAR = new BooleanSetting("revanced_music_hide_category_bar", FALSE, true);
public static final BooleanSetting HIDE_HISTORY_BUTTON = new BooleanSetting("revanced_music_hide_history_button", FALSE, true);
public static final BooleanSetting HIDE_SEARCH_BUTTON = new BooleanSetting("revanced_music_hide_search_button", FALSE, true);
public static final BooleanSetting HIDE_NOTIFICATION_BUTTON = new BooleanSetting("revanced_music_hide_notification_button", FALSE, true);
public static final BooleanSetting HIDE_NAVIGATION_BAR_HOME_BUTTON = new BooleanSetting("revanced_music_hide_navigation_bar_home_button", FALSE, true); public static final BooleanSetting HIDE_NAVIGATION_BAR_HOME_BUTTON = new BooleanSetting("revanced_music_hide_navigation_bar_home_button", FALSE, true);
public static final BooleanSetting HIDE_NAVIGATION_BAR_SAMPLES_BUTTON = new BooleanSetting("revanced_music_hide_navigation_bar_samples_button", FALSE, true); public static final BooleanSetting HIDE_NAVIGATION_BAR_SAMPLES_BUTTON = new BooleanSetting("revanced_music_hide_navigation_bar_samples_button", FALSE, true);
public static final BooleanSetting HIDE_NAVIGATION_BAR_EXPLORE_BUTTON = new BooleanSetting("revanced_music_hide_navigation_bar_explore_button", FALSE, true); public static final BooleanSetting HIDE_NAVIGATION_BAR_EXPLORE_BUTTON = new BooleanSetting("revanced_music_hide_navigation_bar_explore_button", FALSE, true);
@@ -27,6 +30,7 @@ public class Settings extends BaseSettings {
public static final BooleanSetting HIDE_NAVIGATION_BAR_LABEL = new BooleanSetting("revanced_music_hide_navigation_bar_labels", FALSE, true); public static final BooleanSetting HIDE_NAVIGATION_BAR_LABEL = new BooleanSetting("revanced_music_hide_navigation_bar_labels", FALSE, true);
// Player // Player
public static final BooleanSetting CHANGE_MINIPLAYER_COLOR = new BooleanSetting("revanced_music_change_miniplayer_color", FALSE, true);
public static final BooleanSetting PERMANENT_REPEAT = new BooleanSetting("revanced_music_play_permanent_repeat", FALSE, true); public static final BooleanSetting PERMANENT_REPEAT = new BooleanSetting("revanced_music_play_permanent_repeat", FALSE, true);
// Miscellaneous // Miscellaneous

View File

@@ -16,6 +16,7 @@ import java.util.Arrays;
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.ui.Dim;
import com.amazon.video.sdk.player.Player; import com.amazon.video.sdk.player.Player;
@@ -64,9 +65,8 @@ public class PlaybackSpeedPatch {
SpeedIconDrawable speedIcon = new SpeedIconDrawable(); SpeedIconDrawable speedIcon = new SpeedIconDrawable();
speedButton.setImageDrawable(speedIcon); speedButton.setImageDrawable(speedIcon);
int buttonSize = Utils.dipToPixels(48); speedButton.setMinimumWidth(Dim.dp48);
speedButton.setMinimumWidth(buttonSize); speedButton.setMinimumHeight(Dim.dp48);
speedButton.setMinimumHeight(buttonSize);
return speedButton; return speedButton;
} }
@@ -197,11 +197,11 @@ class SpeedIconDrawable extends Drawable {
@Override @Override
public int getIntrinsicWidth() { public int getIntrinsicWidth() {
return Utils.dipToPixels(32); return Dim.dp32;
} }
@Override @Override
public int getIntrinsicHeight() { public int getIntrinsicHeight() {
return Utils.dipToPixels(32); return Dim.dp32;
} }
} }

View File

@@ -23,9 +23,7 @@ import android.os.Looper;
import android.preference.Preference; import android.preference.Preference;
import android.preference.PreferenceGroup; import android.preference.PreferenceGroup;
import android.preference.PreferenceScreen; import android.preference.PreferenceScreen;
import android.util.DisplayMetrics;
import android.util.Pair; import android.util.Pair;
import android.util.TypedValue;
import android.view.Gravity; import android.view.Gravity;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
@@ -34,11 +32,7 @@ import android.view.Window;
import android.view.WindowManager; import android.view.WindowManager;
import android.view.animation.Animation; import android.view.animation.Animation;
import android.view.animation.AnimationUtils; import android.view.animation.AnimationUtils;
import android.widget.FrameLayout;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.Toast; import android.widget.Toast;
import android.widget.Toolbar;
import androidx.annotation.ColorInt; import androidx.annotation.ColorInt;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
@@ -63,6 +57,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.shared.settings.BooleanSetting; import app.revanced.extension.shared.settings.BooleanSetting;
import app.revanced.extension.shared.settings.preference.ReVancedAboutPreference; import app.revanced.extension.shared.settings.preference.ReVancedAboutPreference;
import app.revanced.extension.shared.ui.Dim;
@SuppressWarnings("NewApi") @SuppressWarnings("NewApi")
public class Utils { public class Utils {
@@ -760,31 +755,25 @@ public class Utils {
} }
/** /**
* Hide a view by setting its layout params to 0x0 * Hides a view by setting its layout width and height to 0dp.
* @param view The view to hide. * Handles null layout params safely.
*
* @param view The view to hide. If null, does nothing.
*/ */
public static void hideViewByLayoutParams(View view) { public static void hideViewByLayoutParams(@Nullable View view) {
if (view instanceof LinearLayout) { if (view == null) return;
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(0, 0);
view.setLayoutParams(layoutParams); ViewGroup.LayoutParams params = view.getLayoutParams();
} else if (view instanceof FrameLayout) {
FrameLayout.LayoutParams layoutParams2 = new FrameLayout.LayoutParams(0, 0); if (params == null) {
view.setLayoutParams(layoutParams2); // Create generic 0x0 layout params accepted by all ViewGroups.
} else if (view instanceof RelativeLayout) { params = new ViewGroup.LayoutParams(0, 0);
RelativeLayout.LayoutParams layoutParams3 = new RelativeLayout.LayoutParams(0, 0);
view.setLayoutParams(layoutParams3);
} else if (view instanceof Toolbar) {
Toolbar.LayoutParams layoutParams4 = new Toolbar.LayoutParams(0, 0);
view.setLayoutParams(layoutParams4);
} else if (view instanceof ViewGroup) {
ViewGroup.LayoutParams layoutParams5 = new ViewGroup.LayoutParams(0, 0);
view.setLayoutParams(layoutParams5);
} else { } else {
ViewGroup.LayoutParams params = view.getLayoutParams();
params.width = 0; params.width = 0;
params.height = 0; params.height = 0;
view.setLayoutParams(params);
} }
view.setLayoutParams(params);
} }
/** /**
@@ -801,13 +790,10 @@ public class Utils {
public static void setDialogWindowParameters(Window window, int gravity, int yOffsetDip, int widthPercentage, boolean dimAmount) { public static void setDialogWindowParameters(Window window, int gravity, int yOffsetDip, int widthPercentage, boolean dimAmount) {
WindowManager.LayoutParams params = window.getAttributes(); WindowManager.LayoutParams params = window.getAttributes();
DisplayMetrics displayMetrics = Resources.getSystem().getDisplayMetrics(); params.width = Dim.pctPortraitWidth(widthPercentage);
int portraitWidth = Math.min(displayMetrics.widthPixels, displayMetrics.heightPixels);
params.width = (int) (portraitWidth * (widthPercentage / 100.0f)); // Set width based on parameters.
params.height = WindowManager.LayoutParams.WRAP_CONTENT; params.height = WindowManager.LayoutParams.WRAP_CONTENT;
params.gravity = gravity; params.gravity = gravity;
params.y = yOffsetDip > 0 ? dipToPixels(yOffsetDip) : 0; params.y = yOffsetDip > 0 ? Dim.dp(yOffsetDip) : 0;
if (dimAmount) { if (dimAmount) {
params.dimAmount = 0f; params.dimAmount = 0f;
} }
@@ -816,18 +802,6 @@ public class Utils {
window.setBackgroundDrawable(null); // Remove default dialog background window.setBackgroundDrawable(null); // Remove default dialog background
} }
/**
* Creates an array of corner radii for a rounded rectangle shape.
*
* @param dp Radius in density-independent pixels (dip) to apply to all corners.
* @return An array of eight float values representing the corner radii
* (top-left, top-right, bottom-right, bottom-left).
*/
public static float[] createCornerRadii(float dp) {
final float radius = dipToPixels(dp);
return new float[]{radius, radius, radius, radius, radius, radius, radius, radius};
}
/** /**
* Sets the theme light color used by the app. * Sets the theme light color used by the app.
*/ */
@@ -1132,42 +1106,6 @@ public class Utils {
return getResourceColor(colorString); return getResourceColor(colorString);
} }
/**
* Converts dip value to actual device pixels.
*
* @param dip The density-independent pixels value.
* @return The device pixel value.
*/
public static int dipToPixels(float dip) {
return (int) TypedValue.applyDimension(
TypedValue.COMPLEX_UNIT_DIP,
dip,
Resources.getSystem().getDisplayMetrics()
);
}
/**
* Converts a percentage of the screen height to actual device pixels.
*
* @param percentage The percentage of the screen height (e.g., 30 for 30%).
* @return The device pixel value corresponding to the percentage of screen height.
*/
public static int percentageHeightToPixels(int percentage) {
DisplayMetrics metrics = context.getResources().getDisplayMetrics();
return (int) (metrics.heightPixels * (percentage / 100.0f));
}
/**
* Converts a percentage of the screen width to actual device pixels.
*
* @param percentage The percentage of the screen width (e.g., 30 for 30%).
* @return The device pixel value corresponding to the percentage of screen width.
*/
public static int percentageWidthToPixels(int percentage) {
DisplayMetrics metrics = context.getResources().getDisplayMetrics();
return (int) (metrics.widthPixels * (percentage / 100.0f));
}
/** /**
* Uses {@link #adjustColorBrightness(int, float)} depending if light or dark mode is active. * Uses {@link #adjustColorBrightness(int, float)} depending if light or dark mode is active.
*/ */

View File

@@ -5,6 +5,7 @@ import android.content.ComponentName;
import android.content.Context; import android.content.Context;
import android.content.pm.PackageManager; import android.content.pm.PackageManager;
import android.graphics.Color; import android.graphics.Color;
import android.view.View;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@@ -71,6 +72,17 @@ public class CustomBrandingPatch {
} }
} }
/**
* Injection point.
*/
public static View getLottieViewOrNull(View lottieStartupView) {
if (BaseSettings.CUSTOM_BRANDING_ICON.get() == BrandingTheme.ORIGINAL) {
return lottieStartupView;
}
return null;
}
/** /**
* Injection point. * Injection point.
*/ */

View File

@@ -1,5 +1,9 @@
package app.revanced.extension.shared.patches; package app.revanced.extension.shared.patches;
import static java.lang.Boolean.TRUE;
import java.util.HashSet;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap; import java.util.concurrent.ConcurrentMap;
@@ -21,12 +25,28 @@ public final class EnableDebuggingPatch {
? new ConcurrentHashMap<>(800, 0.5f, 1) ? new ConcurrentHashMap<>(800, 0.5f, 1)
: null; : null;
private static final Set<Long> DISABLED_FEATURE_FLAGS = parseFlags(BaseSettings.DISABLED_FEATURE_FLAGS.get());
// Log all disabled flags on app startup.
static {
if (LOG_FEATURE_FLAGS && !DISABLED_FEATURE_FLAGS.isEmpty()) {
StringBuilder sb = new StringBuilder("Disabled feature flags:\n");
for (Long flag : DISABLED_FEATURE_FLAGS) {
sb.append(" ").append(flag).append('\n');
}
Logger.printDebug(sb::toString);
}
}
/** /**
* Injection point. * Injection point.
*/ */
public static boolean isBooleanFeatureFlagEnabled(boolean value, Long flag) { public static boolean isBooleanFeatureFlagEnabled(boolean value, Long flag) {
if (LOG_FEATURE_FLAGS && value) { if (LOG_FEATURE_FLAGS && value) {
if (featureFlags.putIfAbsent(flag, true) == null) { if (DISABLED_FEATURE_FLAGS.contains(flag)) {
return false;
}
if (featureFlags.putIfAbsent(flag, TRUE) == null) {
Logger.printDebug(() -> "boolean feature is enabled: " + flag); Logger.printDebug(() -> "boolean feature is enabled: " + flag);
} }
} }
@@ -70,10 +90,44 @@ public final class EnableDebuggingPatch {
if (LOG_FEATURE_FLAGS && !defaultValue.equals(value)) { if (LOG_FEATURE_FLAGS && !defaultValue.equals(value)) {
if (featureFlags.putIfAbsent(flag, true) == null) { if (featureFlags.putIfAbsent(flag, true) == null) {
Logger.printDebug(() -> " string feature is enabled: " + flag Logger.printDebug(() -> " string feature is enabled: " + flag
+ " value: " + value + (defaultValue.isEmpty() ? "" : " default: " + defaultValue)); + " value: " + value + (defaultValue.isEmpty() ? "" : " default: " + defaultValue));
} }
} }
return value; return value;
} }
/**
* Get all logged feature flags.
* @return Set of all known flags
*/
public static Set<Long> getAllLoggedFlags() {
if (featureFlags != null) {
return new HashSet<>(featureFlags.keySet());
}
return new HashSet<>();
}
/**
* Public method for parsing flags.
* @param flags String containing newline-separated flag IDs
* @return Set of parsed flag IDs
*/
public static Set<Long> parseFlags(String flags) {
Set<Long> parsedFlags = new HashSet<>();
if (!flags.isBlank()) {
for (String flag : flags.split("\n")) {
String trimmedFlag = flag.trim();
if (trimmedFlag.isEmpty()) continue; // Skip empty lines.
try {
parsedFlags.add(Long.parseLong(trimmedFlag));
} catch (NumberFormatException e) {
Logger.printException(() -> "Invalid flag ID: " + flag);
}
}
}
return parsedFlags;
}
} }

View File

@@ -35,6 +35,15 @@ public class LinkSanitizer {
public Uri sanitizeUri(Uri uri) { public Uri sanitizeUri(Uri uri) {
try { try {
String scheme = uri.getScheme();
if (scheme == null || !(scheme.equals("http") || scheme.equals("https"))) {
// Opening YouTube share sheet 'other' option passes the video title as a URI.
// Checking !uri.isHierarchical() works for all cases, except if the
// video title starts with / and then it's hierarchical but still an invalid URI.
Logger.printDebug(() -> "Ignoring uri: " + uri);
return uri;
}
Uri.Builder builder = uri.buildUpon().clearQuery(); Uri.Builder builder = uri.buildUpon().clearQuery();
if (!parametersToRemove.isEmpty()) { if (!parametersToRemove.isEmpty()) {

View File

@@ -7,7 +7,6 @@ import android.app.Activity;
import android.content.Context; import android.content.Context;
import android.graphics.drawable.Drawable; import android.graphics.drawable.Drawable;
import android.preference.PreferenceFragment; import android.preference.PreferenceFragment;
import android.util.TypedValue;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.widget.TextView; import android.widget.TextView;
@@ -16,6 +15,7 @@ import android.widget.Toolbar;
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.preference.ToolbarPreferenceFragment; import app.revanced.extension.shared.settings.preference.ToolbarPreferenceFragment;
import app.revanced.extension.shared.ui.Dim;
/** /**
* Base class for hooking activities to inject a custom PreferenceFragment with a toolbar. * Base class for hooking activities to inject a custom PreferenceFragment with a toolbar.
@@ -109,13 +109,12 @@ public abstract class BaseActivityHook extends Activity {
toolbar.setNavigationOnClickListener(getNavigationClickListener(activity)); toolbar.setNavigationOnClickListener(getNavigationClickListener(activity));
toolbar.setTitle(STRING_REVANCED_SETTINGS_TITLE); toolbar.setTitle(STRING_REVANCED_SETTINGS_TITLE);
final int margin = Utils.dipToPixels(16); toolbar.setTitleMarginStart(Dim.dp16);
toolbar.setTitleMarginStart(margin); toolbar.setTitleMarginEnd(Dim.dp16);
toolbar.setTitleMarginEnd(margin);
TextView toolbarTextView = Utils.getChildView(toolbar, false, view -> view instanceof TextView); TextView toolbarTextView = Utils.getChildView(toolbar, false, view -> view instanceof TextView);
if (toolbarTextView != null) { if (toolbarTextView != null) {
toolbarTextView.setTextColor(Utils.getAppForegroundColor()); toolbarTextView.setTextColor(Utils.getAppForegroundColor());
toolbarTextView.setTextSize(TypedValue.COMPLEX_UNIT_SP, 20); toolbarTextView.setTextSize(20);
} }
setToolbarLayoutParams(toolbar); setToolbarLayoutParams(toolbar);

View File

@@ -42,4 +42,6 @@ public class BaseSettings {
public static final EnumSetting<BrandingTheme> CUSTOM_BRANDING_ICON = new EnumSetting<>("revanced_custom_branding_icon", BrandingTheme.ORIGINAL, true); public static final EnumSetting<BrandingTheme> CUSTOM_BRANDING_ICON = new EnumSetting<>("revanced_custom_branding_icon", BrandingTheme.ORIGINAL, true);
public static final IntegerSetting CUSTOM_BRANDING_NAME = new IntegerSetting("revanced_custom_branding_name", 1, true); public static final IntegerSetting CUSTOM_BRANDING_NAME = new IntegerSetting("revanced_custom_branding_name", 1, true);
public static final StringSetting DISABLED_FEATURE_FLAGS = new StringSetting("revanced_disabled_feature_flags", "", true, parent(DEBUG));
} }

View File

@@ -58,6 +58,23 @@ public abstract class Setting<T> {
}; };
} }
/**
* Availability based on a single parent setting being disabled.
*/
public static Availability parentNot(BooleanSetting parent) {
return new Availability() {
@Override
public boolean isAvailable() {
return !parent.get();
}
@Override
public List<Setting<?>> getParentSettings() {
return Collections.singletonList(parent);
}
};
}
/** /**
* Availability based on all parents being enabled. * Availability based on all parents being enabled.
*/ */

View File

@@ -1,7 +1,6 @@
package app.revanced.extension.shared.settings.preference; package app.revanced.extension.shared.settings.preference;
import static app.revanced.extension.shared.StringRef.str; import static app.revanced.extension.shared.StringRef.str;
import static app.revanced.extension.shared.Utils.dipToPixels;
import static app.revanced.extension.shared.Utils.getResourceIdentifierOrThrow; import static app.revanced.extension.shared.Utils.getResourceIdentifierOrThrow;
import android.app.Dialog; import android.app.Dialog;
@@ -37,6 +36,7 @@ import app.revanced.extension.shared.settings.Setting;
import app.revanced.extension.shared.settings.StringSetting; import app.revanced.extension.shared.settings.StringSetting;
import app.revanced.extension.shared.ui.ColorDot; import app.revanced.extension.shared.ui.ColorDot;
import app.revanced.extension.shared.ui.CustomDialog; import app.revanced.extension.shared.ui.CustomDialog;
import app.revanced.extension.shared.ui.Dim;
/** /**
* A custom preference for selecting a color via a hexadecimal code or a color picker dialog. * A custom preference for selecting a color via a hexadecimal code or a color picker dialog.
@@ -310,11 +310,8 @@ public class ColorPickerPreference extends EditTextPreference {
inputLayout.setGravity(Gravity.CENTER_VERTICAL); inputLayout.setGravity(Gravity.CENTER_VERTICAL);
dialogColorDot = new View(context); dialogColorDot = new View(context);
LinearLayout.LayoutParams previewParams = new LinearLayout.LayoutParams( LinearLayout.LayoutParams previewParams = new LinearLayout.LayoutParams(Dim.dp20,Dim.dp20);
dipToPixels(20), previewParams.setMargins(Dim.dp16, 0, Dim.dp10, 0);
dipToPixels(20)
);
previewParams.setMargins(dipToPixels(16), 0, dipToPixels(10), 0);
dialogColorDot.setLayoutParams(previewParams); dialogColorDot.setLayoutParams(previewParams);
inputLayout.addView(dialogColorDot); inputLayout.addView(dialogColorDot);
updateDialogColorDot(); updateDialogColorDot();

View File

@@ -1,6 +1,5 @@
package app.revanced.extension.shared.settings.preference; package app.revanced.extension.shared.settings.preference;
import static app.revanced.extension.shared.Utils.dipToPixels;
import static app.revanced.extension.shared.settings.preference.ColorPickerPreference.getColorString; import static app.revanced.extension.shared.settings.preference.ColorPickerPreference.getColorString;
import android.annotation.SuppressLint; import android.annotation.SuppressLint;
@@ -21,6 +20,7 @@ import androidx.annotation.ColorInt;
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.ui.Dim;
/** /**
* A custom color picker view that allows the user to select a color using a hue slider, a saturation-value selector * A custom color picker view that allows the user to select a color using a hue slider, a saturation-value selector
@@ -54,28 +54,28 @@ public class ColorPickerView extends View {
} }
/** Expanded touch area for the hue and opacity bars to increase the touch-sensitive area. */ /** Expanded touch area for the hue and opacity bars to increase the touch-sensitive area. */
public static final float TOUCH_EXPANSION = dipToPixels(20f); public static final float TOUCH_EXPANSION = Dim.dp20;
/** Margin between different areas of the view (saturation-value selector, hue bar, and opacity slider). */ /** Margin between different areas of the view (saturation-value selector, hue bar, and opacity slider). */
private static final float MARGIN_BETWEEN_AREAS = dipToPixels(24); private static final float MARGIN_BETWEEN_AREAS = Dim.dp24;
/** Padding around the view. */ /** Padding around the view. */
private static final float VIEW_PADDING = dipToPixels(16); private static final float VIEW_PADDING = Dim.dp16;
/** Height of the hue bar. */ /** Height of the hue bar. */
private static final float HUE_BAR_HEIGHT = dipToPixels(12); private static final float HUE_BAR_HEIGHT = Dim.dp12;
/** Height of the opacity slider. */ /** Height of the opacity slider. */
private static final float OPACITY_BAR_HEIGHT = dipToPixels(12); private static final float OPACITY_BAR_HEIGHT = Dim.dp12;
/** Corner radius for the hue bar. */ /** Corner radius for the hue bar. */
private static final float HUE_CORNER_RADIUS = dipToPixels(6); private static final float HUE_CORNER_RADIUS = Dim.dp6;
/** Corner radius for the opacity slider. */ /** Corner radius for the opacity slider. */
private static final float OPACITY_CORNER_RADIUS = dipToPixels(6); private static final float OPACITY_CORNER_RADIUS = Dim.dp6;
/** Radius of the selector handles. */ /** Radius of the selector handles. */
private static final float SELECTOR_RADIUS = dipToPixels(12); private static final float SELECTOR_RADIUS = Dim.dp12;
/** Stroke width for the selector handle outlines. */ /** Stroke width for the selector handle outlines. */
private static final float SELECTOR_STROKE_WIDTH = 8; private static final float SELECTOR_STROKE_WIDTH = 8;
@@ -202,7 +202,7 @@ public class ColorPickerView extends View {
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
final float DESIRED_ASPECT_RATIO = 0.8f; // height = width * 0.8 final float DESIRED_ASPECT_RATIO = 0.8f; // height = width * 0.8
final int minWidth = dipToPixels(250); final int minWidth = Dim.dp(250);
final int minHeight = (int) (minWidth * DESIRED_ASPECT_RATIO) + (int) (HUE_BAR_HEIGHT + MARGIN_BETWEEN_AREAS) final int minHeight = (int) (minWidth * DESIRED_ASPECT_RATIO) + (int) (HUE_BAR_HEIGHT + MARGIN_BETWEEN_AREAS)
+ (opacitySliderEnabled ? (int) (OPACITY_BAR_HEIGHT + MARGIN_BETWEEN_AREAS) : 0); + (opacitySliderEnabled ? (int) (OPACITY_BAR_HEIGHT + MARGIN_BETWEEN_AREAS) : 0);

View File

@@ -0,0 +1,623 @@
package app.revanced.extension.shared.settings.preference;
import static app.revanced.extension.shared.StringRef.str;
import static app.revanced.extension.shared.Utils.getResourceIdentifierOrThrow;
import android.annotation.SuppressLint;
import android.app.Dialog;
import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.ShapeDrawable;
import android.graphics.drawable.shapes.RoundRectShape;
import android.preference.Preference;
import android.text.Editable;
import android.text.InputType;
import android.text.TextUtils;
import android.text.TextWatcher;
import android.util.AttributeSet;
import android.util.Pair;
import android.util.SparseBooleanArray;
import android.view.Gravity;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.Space;
import android.widget.TextView;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import java.util.TreeSet;
import app.revanced.extension.shared.Logger;
import app.revanced.extension.shared.Utils;
import app.revanced.extension.shared.patches.EnableDebuggingPatch;
import app.revanced.extension.shared.settings.BaseSettings;
import app.revanced.extension.shared.ui.CustomDialog;
import app.revanced.extension.shared.ui.Dim;
/**
* A custom preference that opens a dialog for managing feature flags.
* Allows moving boolean flags between active and blocked states with advanced selection.
*/
@SuppressWarnings({"deprecation", "unused"})
public class FeatureFlagsManagerPreference extends Preference {
private static final int DRAWABLE_REVANCED_SETTINGS_SELECT_ALL =
getResourceIdentifierOrThrow("revanced_settings_select_all", "drawable");
private static final int DRAWABLE_REVANCED_SETTINGS_DESELECT_ALL =
getResourceIdentifierOrThrow("revanced_settings_deselect_all", "drawable");
private static final int DRAWABLE_REVANCED_SETTINGS_COPY_ALL =
getResourceIdentifierOrThrow("revanced_settings_copy_all", "drawable");
private static final int DRAWABLE_REVANCED_SETTINGS_ARROW_RIGHT_ONE =
getResourceIdentifierOrThrow("revanced_settings_arrow_right_one", "drawable");
private static final int DRAWABLE_REVANCED_SETTINGS_ARROW_RIGHT_DOUBLE =
getResourceIdentifierOrThrow("revanced_settings_arrow_right_double", "drawable");
private static final int DRAWABLE_REVANCED_SETTINGS_ARROW_LEFT_ONE =
getResourceIdentifierOrThrow("revanced_settings_arrow_left_one", "drawable");
private static final int DRAWABLE_REVANCED_SETTINGS_ARROW_LEFT_DOUBLE =
getResourceIdentifierOrThrow("revanced_settings_arrow_left_double", "drawable");
/**
* Flags to hide from the UI.
*/
private static final Set<Long> FLAGS_TO_IGNORE = Set.of(
45386834L // 'You' tab settings icon.
);
/**
* Tracks state for range selection in ListView.
*/
private static class ListViewSelectionState {
int lastClickedPosition = -1; // Position of the last clicked item.
boolean isRangeSelecting = false; // True while a range is being selected.
}
/**
* Helper class to pass ListView and Adapter together.
*/
private record ColumnViews(ListView listView, FlagAdapter adapter) {}
{
setOnPreferenceClickListener(pref -> {
showFlagsManagerDialog();
return true;
});
}
public FeatureFlagsManagerPreference(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
}
public FeatureFlagsManagerPreference(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
public FeatureFlagsManagerPreference(Context context, AttributeSet attrs) {
super(context, attrs);
}
public FeatureFlagsManagerPreference(Context context) {
super(context);
}
/**
* Shows the main dialog for managing feature flags.
*/
private void showFlagsManagerDialog() {
if (!BaseSettings.DEBUG.get()) {
Utils.showToastShort(str("revanced_debug_logs_disabled"));
return;
}
Context context = getContext();
// Load all known and disabled flags.
TreeSet<Long> allKnownFlags = new TreeSet<>(EnableDebuggingPatch.getAllLoggedFlags());
allKnownFlags.removeAll(FLAGS_TO_IGNORE);
TreeSet<Long> disabledFlags = new TreeSet<>(EnableDebuggingPatch.parseFlags(
BaseSettings.DISABLED_FEATURE_FLAGS.get()));
disabledFlags.removeAll(FLAGS_TO_IGNORE);
if (allKnownFlags.isEmpty() && disabledFlags.isEmpty()) {
// String does not need to be localized because it's basically impossible
// to reach the settings menu without encountering at least 1 flag.
Utils.showToastShort("No feature flags logged yet");
return;
}
TreeSet<Long> availableFlags = new TreeSet<>(allKnownFlags);
availableFlags.removeAll(disabledFlags);
TreeSet<Long> blockedFlags = new TreeSet<>(disabledFlags);
Pair<Dialog, LinearLayout> dialogPair = CustomDialog.create(
context,
getTitle() != null ? getTitle().toString() : "",
null,
null,
str("revanced_settings_save"),
() -> saveFlags(blockedFlags),
() -> {},
str("revanced_settings_reset"),
this::resetFlags,
true
);
LinearLayout mainLayout = dialogPair.second;
LinearLayout.LayoutParams contentParams = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT, 0, 1.0f);
// Insert content before the dialog button row.
View contentView = createContentView(context, availableFlags, blockedFlags);
mainLayout.addView(contentView, mainLayout.getChildCount() - 1, contentParams);
Dialog dialog = dialogPair.first;
dialog.show();
Window window = dialog.getWindow();
if (window != null) {
Utils.setDialogWindowParameters(window, Gravity.CENTER, 0, 100, false);
}
}
/**
* Creates the main content view with two columns.
*/
private View createContentView(Context context, TreeSet<Long> availableFlags, TreeSet<Long> blockedFlags) {
LinearLayout contentLayout = new LinearLayout(context);
contentLayout.setOrientation(LinearLayout.VERTICAL);
// Headers.
TextView availableHeader = createHeader(context, "revanced_debug_feature_flags_manager_active_header");
TextView blockedHeader = createHeader(context, "revanced_debug_feature_flags_manager_blocked_header");
LinearLayout headersLayout = new LinearLayout(context);
headersLayout.setOrientation(LinearLayout.HORIZONTAL);
headersLayout.addView(availableHeader, new LinearLayout.LayoutParams(
0, ViewGroup.LayoutParams.WRAP_CONTENT, 1f));
headersLayout.addView(blockedHeader, new LinearLayout.LayoutParams(
0, ViewGroup.LayoutParams.WRAP_CONTENT, 1f));
// Columns.
View leftColumn = createColumn(context, availableFlags, availableHeader);
View rightColumn = createColumn(context, blockedFlags, blockedHeader);
ColumnViews leftViews = (ColumnViews) leftColumn.getTag();
ColumnViews rightViews = (ColumnViews) rightColumn.getTag();
updateHeaderCount(availableHeader, leftViews.adapter);
updateHeaderCount(blockedHeader, rightViews.adapter);
// Main columns layout.
LinearLayout columnsLayout = new LinearLayout(context);
columnsLayout.setOrientation(LinearLayout.HORIZONTAL);
columnsLayout.setLayoutParams(new LinearLayout.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT, 0, 1f));
columnsLayout.addView(leftColumn, new LinearLayout.LayoutParams(
0, ViewGroup.LayoutParams.MATCH_PARENT, 1f));
Space spaceBetweenColumns = new Space(context);
spaceBetweenColumns.setLayoutParams(new LinearLayout.LayoutParams(Dim.dp8, ViewGroup.LayoutParams.MATCH_PARENT));
columnsLayout.addView(spaceBetweenColumns);
columnsLayout.addView(rightColumn, new LinearLayout.LayoutParams(
0, ViewGroup.LayoutParams.MATCH_PARENT, 1f));
// Move buttons below columns.
Pair<LinearLayout, LinearLayout> moveButtons = createMoveButtons(context,
leftViews.listView, rightViews.listView,
availableFlags, blockedFlags, availableHeader, blockedHeader);
// Layout for buttons row.
LinearLayout buttonsRow = new LinearLayout(context);
buttonsRow.setOrientation(LinearLayout.HORIZONTAL);
buttonsRow.setLayoutParams(new LinearLayout.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT));
buttonsRow.addView(moveButtons.first, new LinearLayout.LayoutParams(
0, ViewGroup.LayoutParams.WRAP_CONTENT, 1f));
Space spaceBetweenButtons = new Space(context);
spaceBetweenButtons.setLayoutParams(new LinearLayout.LayoutParams(Dim.dp8, ViewGroup.LayoutParams.WRAP_CONTENT));
buttonsRow.addView(spaceBetweenButtons);
buttonsRow.addView(moveButtons.second, new LinearLayout.LayoutParams(
0, ViewGroup.LayoutParams.WRAP_CONTENT, 1f));
contentLayout.addView(headersLayout);
contentLayout.addView(columnsLayout);
contentLayout.addView(buttonsRow);
return contentLayout;
}
/**
* Creates a header TextView.
*/
private TextView createHeader(Context context, String tag) {
TextView textview = new TextView(context);
textview.setTag(tag);
textview.setTextSize(16);
textview.setTextColor(Utils.getAppForegroundColor());
textview.setGravity(Gravity.CENTER);
return textview;
}
/**
* Creates a single column (search + buttons + list).
*/
private View createColumn(Context context, TreeSet<Long> flags, TextView countText) {
LinearLayout wrapper = new LinearLayout(context);
wrapper.setOrientation(LinearLayout.VERTICAL);
Pair<ListView, FlagAdapter> pair = createListView(context, flags, countText);
ListView listView = pair.first;
FlagAdapter adapter = pair.second;
EditText search = createSearchBox(context, adapter, listView, countText);
LinearLayout buttons = createActionButtons(context, listView, adapter);
listView.setLayoutParams(new LinearLayout.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT, 0, 1f));
ShapeDrawable background = new ShapeDrawable(new RoundRectShape(
Dim.roundedCorners(10), null, null));
background.getPaint().setColor(Utils.getEditTextBackground());
listView.setPadding(0, Dim.dp4, 0, Dim.dp4);
listView.setBackground(background);
listView.setOverScrollMode(View.OVER_SCROLL_NEVER);
wrapper.addView(search);
wrapper.addView(buttons);
wrapper.addView(listView);
// Save references for move buttons.
wrapper.setTag(new ColumnViews(listView, adapter));
return wrapper;
}
/**
* Updates the header text with the current count.
*/
private void updateHeaderCount(TextView header, FlagAdapter adapter) {
header.setText(str((String) header.getTag(), adapter.getCount()));
}
/**
* Creates a search box that filters the list.
*/
@SuppressLint("ClickableViewAccessibility")
private EditText createSearchBox(Context context, FlagAdapter adapter, ListView listView, TextView countText) {
EditText search = new EditText(context);
search.setInputType(InputType.TYPE_CLASS_NUMBER);
search.setTextSize(16);
search.setHint(str("revanced_debug_feature_flags_manager_search_hint"));
search.setHapticFeedbackEnabled(false);
search.setLayoutParams(new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT));
search.addTextChangedListener(new TextWatcher() {
@Override public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
@Override public void onTextChanged(CharSequence s, int start, int before, int count) {
adapter.setSearchQuery(s.toString());
listView.clearChoices();
updateHeaderCount(countText, adapter);
Drawable clearIcon = context.getResources().getDrawable(android.R.drawable.ic_menu_close_clear_cancel);
clearIcon.setBounds(0, 0, Dim.dp20, Dim.dp20);
search.setCompoundDrawables(null, null, TextUtils.isEmpty(s) ? null : clearIcon, null);
}
@Override public void afterTextChanged(Editable s) {}
});
search.setOnTouchListener((v, event) -> {
if (event.getAction() == MotionEvent.ACTION_UP) {
Drawable[] compoundDrawables = search.getCompoundDrawables();
if (compoundDrawables[2] != null &&
event.getRawX() >= (search.getRight() - compoundDrawables[2].getBounds().width())) {
search.setText("");
return true;
}
}
return false;
});
return search;
}
/**
* Creates action buttons.
*/
private LinearLayout createActionButtons(Context context, ListView listView, FlagAdapter adapter) {
LinearLayout row = new LinearLayout(context);
row.setOrientation(LinearLayout.HORIZONTAL);
row.setGravity(Gravity.CENTER);
row.setLayoutParams(new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT));
ImageButton selectAll = createButton(context, DRAWABLE_REVANCED_SETTINGS_SELECT_ALL,
() -> {
for (int i = 0, count = adapter.getCount(); i < count; i++) {
listView.setItemChecked(i, true);
}
});
ImageButton clearAll = createButton(context, DRAWABLE_REVANCED_SETTINGS_DESELECT_ALL,
() -> {
listView.clearChoices();
adapter.notifyDataSetChanged();
});
ImageButton copy = createButton(context, DRAWABLE_REVANCED_SETTINGS_COPY_ALL,
() -> {
List<String> items = new ArrayList<>();
SparseBooleanArray checked = listView.getCheckedItemPositions();
if (checked.size() > 0) {
for (int i = 0, count = adapter.getCount(); i < count; i++) {
if (checked.get(i)) {
items.add(adapter.getItem(i));
}
}
} else {
for (Long flag : adapter.getFullFlags()) {
items.add(String.valueOf(flag));
}
}
Utils.setClipboard(TextUtils.join("\n", items));
Utils.showToastShort(str("revanced_debug_feature_flags_manager_toast_copied"));
});
row.addView(selectAll);
row.addView(clearAll);
row.addView(copy);
return row;
}
/**
* Creates the move buttons (left and right groups).
*/
private Pair<LinearLayout, LinearLayout> createMoveButtons(Context context,
ListView availableListView, ListView blockedListView,
TreeSet<Long> availableFlags, TreeSet<Long> blockedFlags,
TextView availableCountText, TextView blockedCountText) {
// Left group: >> >
LinearLayout leftButtons = new LinearLayout(context);
leftButtons.setOrientation(LinearLayout.HORIZONTAL);
leftButtons.setGravity(Gravity.CENTER);
ImageButton moveAllRight = createButton(context, DRAWABLE_REVANCED_SETTINGS_ARROW_RIGHT_DOUBLE,
() -> moveFlags(availableListView, blockedListView, availableFlags, blockedFlags,
availableCountText, blockedCountText, true));
ImageButton moveOneRight = createButton(context, DRAWABLE_REVANCED_SETTINGS_ARROW_RIGHT_ONE,
() -> moveFlags(availableListView, blockedListView, availableFlags, blockedFlags,
availableCountText, blockedCountText, false));
leftButtons.addView(moveAllRight);
leftButtons.addView(moveOneRight);
// Right group: < <<
LinearLayout rightButtons = new LinearLayout(context);
rightButtons.setOrientation(LinearLayout.HORIZONTAL);
rightButtons.setGravity(Gravity.CENTER);
ImageButton moveOneLeft = createButton(context, DRAWABLE_REVANCED_SETTINGS_ARROW_LEFT_ONE,
() -> moveFlags(blockedListView, availableListView, blockedFlags, availableFlags,
blockedCountText, availableCountText, false));
ImageButton moveAllLeft = createButton(context, DRAWABLE_REVANCED_SETTINGS_ARROW_LEFT_DOUBLE,
() -> moveFlags(blockedListView, availableListView, blockedFlags, availableFlags,
blockedCountText, availableCountText, true));
rightButtons.addView(moveOneLeft);
rightButtons.addView(moveAllLeft);
return new Pair<>(leftButtons, rightButtons);
}
/**
* Creates a styled ImageButton.
*/
@SuppressLint("ResourceType")
private ImageButton createButton(Context context, int drawableResId, Runnable action) {
ImageButton button = new ImageButton(context);
button.setImageResource(drawableResId);
button.setScaleType(ImageView.ScaleType.CENTER);
int[] attrs = {android.R.attr.selectableItemBackgroundBorderless};
//noinspection Recycle
TypedArray ripple = context.obtainStyledAttributes(attrs);
button.setBackgroundDrawable(ripple.getDrawable(0));
ripple.close();
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(Dim.dp32, Dim.dp32);
params.setMargins(Dim.dp8, Dim.dp8, Dim.dp8, Dim.dp8);
button.setLayoutParams(params);
button.setOnClickListener(v -> action.run());
return button;
}
/**
* Custom adapter with search filtering.
*/
private static class FlagAdapter extends ArrayAdapter<String> {
private final TreeSet<Long> fullFlags;
private String searchQuery = "";
public FlagAdapter(Context context, TreeSet<Long> fullFlags) {
super(context, android.R.layout.simple_list_item_multiple_choice, new ArrayList<>());
this.fullFlags = fullFlags;
updateFiltered();
}
public void setSearchQuery(String query) {
searchQuery = query == null ? "" : query.trim();
updateFiltered();
}
private void updateFiltered() {
clear();
for (Long flag : fullFlags) {
String flagString = String.valueOf(flag);
if (searchQuery.isEmpty() || flagString.contains(searchQuery)) {
add(flagString);
}
}
notifyDataSetChanged();
}
public void refresh() {
updateFiltered();
}
public List<Long> getFullFlags() {
return new ArrayList<>(fullFlags);
}
}
/**
* Creates a ListView with filtering, multi-select, and range selection.
*/
@SuppressLint("ClickableViewAccessibility")
private Pair<ListView, FlagAdapter> createListView(Context context,
TreeSet<Long> flags, TextView countText) {
ListView listView = new ListView(context);
listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
listView.setDividerHeight(0);
FlagAdapter adapter = new FlagAdapter(context, flags);
listView.setAdapter(adapter);
final ListViewSelectionState state = new ListViewSelectionState();
listView.setOnItemClickListener((parent, view, position, id) -> {
if (!state.isRangeSelecting) {
state.lastClickedPosition = position;
} else {
state.isRangeSelecting = false;
}
});
listView.setOnItemLongClickListener((parent, view, position, id) -> {
if (state.lastClickedPosition == -1) {
listView.setItemChecked(position, true);
state.lastClickedPosition = position;
} else {
int start = Math.min(state.lastClickedPosition, position);
int end = Math.max(state.lastClickedPosition, position);
for (int i = start; i <= end; i++) {
listView.setItemChecked(i, true);
}
state.isRangeSelecting = true;
}
return true;
});
listView.setOnTouchListener((view, event) -> {
if (event.getAction() == MotionEvent.ACTION_UP && state.isRangeSelecting) {
state.isRangeSelecting = false;
}
return false;
});
return new Pair<>(listView, adapter);
}
/**
* Moves selected or all flags from one list to another.
*
* @param fromListView Source ListView.
* @param toListView Destination ListView.
* @param fromFlags Source flag set.
* @param toFlags Destination flag set.
* @param fromCountText Header showing count of source items.
* @param toCountText Header showing count of destination items.
* @param moveAll If true, move all items; if false, move only selected.
*/
private void moveFlags(ListView fromListView, ListView toListView,
TreeSet<Long> fromFlags, TreeSet<Long> toFlags,
TextView fromCountText, TextView toCountText,
boolean moveAll) {
if (fromListView == null || toListView == null) return;
List<Long> flagsToMove = new ArrayList<>();
FlagAdapter fromAdapter = (FlagAdapter) fromListView.getAdapter();
if (moveAll) {
flagsToMove.addAll(fromFlags);
} else {
SparseBooleanArray checked = fromListView.getCheckedItemPositions();
for (int i = 0, count = fromAdapter.getCount(); i < count; i++) {
if (checked.get(i)) {
String item = fromAdapter.getItem(i);
if (item != null) {
flagsToMove.add(Long.parseLong(item));
}
}
}
}
if (flagsToMove.isEmpty()) return;
for (Long flag : flagsToMove) {
fromFlags.remove(flag);
toFlags.add(flag);
}
// Clear selections before refreshing.
fromListView.clearChoices();
toListView.clearChoices();
// Refresh both adapters.
fromAdapter.refresh();
((FlagAdapter) toListView.getAdapter()).refresh();
// Update headers.
updateHeaderCount(fromCountText, fromAdapter);
updateHeaderCount(toCountText, (FlagAdapter) toListView.getAdapter());
}
/**
* Saves blocked flags to settings.
*/
private void saveFlags(TreeSet<Long> blockedFlags) {
StringBuilder flagsString = new StringBuilder();
for (Long flag : blockedFlags) {
if (flagsString.length() > 0) {
flagsString.append("\n");
}
flagsString.append(flag);
}
BaseSettings.DISABLED_FEATURE_FLAGS.save(flagsString.toString());
Utils.showToastShort(str("revanced_debug_feature_flags_manager_toast_saved"));
Logger.printDebug(() -> "Feature flags saved. Blocked: " + blockedFlags.size());
AbstractPreferenceFragment.showRestartDialog(getContext());
}
/**
* Resets all blocked flags.
*/
private void resetFlags() {
BaseSettings.DISABLED_FEATURE_FLAGS.save("");
Utils.showToastShort(str("revanced_debug_feature_flags_manager_toast_reset"));
AbstractPreferenceFragment.showRestartDialog(getContext());
}
}

View File

@@ -11,7 +11,6 @@ import android.preference.Preference;
import android.text.InputType; import android.text.InputType;
import android.util.AttributeSet; import android.util.AttributeSet;
import android.util.Pair; import android.util.Pair;
import android.util.TypedValue;
import android.view.inputmethod.InputMethodManager; import android.view.inputmethod.InputMethodManager;
import android.widget.EditText; import android.widget.EditText;
import android.widget.LinearLayout; import android.widget.LinearLayout;
@@ -35,7 +34,7 @@ public class ImportExportPreference extends EditTextPreference implements Prefer
editText.setAutofillHints((String) null); editText.setAutofillHints((String) null);
} }
editText.setInputType(editText.getInputType() | InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS); editText.setInputType(editText.getInputType() | InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS);
editText.setTextSize(TypedValue.COMPLEX_UNIT_PT, 7); // Use a smaller font to reduce text wrap. editText.setTextSize(14);
setOnPreferenceClickListener(this); setOnPreferenceClickListener(this);
} }

View File

@@ -1,7 +1,6 @@
package app.revanced.extension.shared.settings.preference; package app.revanced.extension.shared.settings.preference;
import static app.revanced.extension.shared.StringRef.str; import static app.revanced.extension.shared.StringRef.str;
import static app.revanced.extension.shared.Utils.dipToPixels;
import static app.revanced.extension.shared.requests.Route.Method.GET; import static app.revanced.extension.shared.requests.Route.Method.GET;
import android.annotation.SuppressLint; import android.annotation.SuppressLint;
@@ -41,6 +40,7 @@ import app.revanced.extension.shared.Logger;
import app.revanced.extension.shared.Utils; import app.revanced.extension.shared.Utils;
import app.revanced.extension.shared.requests.Requester; import app.revanced.extension.shared.requests.Requester;
import app.revanced.extension.shared.requests.Route; import app.revanced.extension.shared.requests.Route;
import app.revanced.extension.shared.ui.Dim;
/** /**
* Opens a dialog showing official links. * Opens a dialog showing official links.
@@ -222,11 +222,10 @@ class WebViewDialog extends Dialog {
LinearLayout mainLayout = new LinearLayout(getContext()); LinearLayout mainLayout = new LinearLayout(getContext());
mainLayout.setOrientation(LinearLayout.VERTICAL); mainLayout.setOrientation(LinearLayout.VERTICAL);
final int padding = dipToPixels(10); mainLayout.setPadding(Dim.dp10, Dim.dp10, Dim.dp10, Dim.dp10);
mainLayout.setPadding(padding, padding, padding, padding);
// Set rounded rectangle background. // Set rounded rectangle background.
ShapeDrawable mainBackground = new ShapeDrawable(new RoundRectShape( ShapeDrawable mainBackground = new ShapeDrawable(new RoundRectShape(
Utils.createCornerRadii(28), null, null)); Dim.roundedCorners(28), null, null));
mainBackground.getPaint().setColor(Utils.getDialogBackgroundColor()); mainBackground.getPaint().setColor(Utils.getDialogBackgroundColor());
mainLayout.setBackground(mainBackground); mainLayout.setBackground(mainBackground);

View File

@@ -8,7 +8,6 @@ import android.os.Build;
import android.preference.Preference; import android.preference.Preference;
import android.preference.PreferenceGroup; import android.preference.PreferenceGroup;
import android.preference.PreferenceScreen; import android.preference.PreferenceScreen;
import android.util.TypedValue;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.view.Window; import android.view.Window;
import android.view.WindowInsets; import android.view.WindowInsets;
@@ -20,6 +19,7 @@ import androidx.annotation.Nullable;
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.BaseActivityHook; import app.revanced.extension.shared.settings.BaseActivityHook;
import app.revanced.extension.shared.ui.Dim;
@SuppressWarnings({"deprecation", "NewApi"}) @SuppressWarnings({"deprecation", "NewApi"})
public class ToolbarPreferenceFragment extends AbstractPreferenceFragment { public class ToolbarPreferenceFragment extends AbstractPreferenceFragment {
@@ -88,14 +88,13 @@ public class ToolbarPreferenceFragment extends AbstractPreferenceFragment {
toolbar.setNavigationIcon(getBackButtonDrawable()); toolbar.setNavigationIcon(getBackButtonDrawable());
toolbar.setNavigationOnClickListener(view -> preferenceScreenDialog.dismiss()); toolbar.setNavigationOnClickListener(view -> preferenceScreenDialog.dismiss());
final int margin = Utils.dipToPixels(16); toolbar.setTitleMargin(Dim.dp16, 0, Dim.dp16, 0);
toolbar.setTitleMargin(margin, 0, margin, 0);
TextView toolbarTextView = Utils.getChildView(toolbar, TextView toolbarTextView = Utils.getChildView(toolbar,
true, TextView.class::isInstance); true, TextView.class::isInstance);
if (toolbarTextView != null) { if (toolbarTextView != null) {
toolbarTextView.setTextColor(Utils.getAppForegroundColor()); toolbarTextView.setTextColor(Utils.getAppForegroundColor());
toolbarTextView.setTextSize(TypedValue.COMPLEX_UNIT_SP, 20); toolbarTextView.setTextSize(20);
} }
// Allow package-specific toolbar customization. // Allow package-specific toolbar customization.

View File

@@ -484,7 +484,7 @@ public abstract class BaseSearchResultsAdapter extends ArrayAdapter<BaseSearchRe
return -1; return -1;
} }
for (int i = 0; i < adapter.getCount(); i++) { for (int i = 0, count = adapter.getCount(); i < count; i++) {
Object item = adapter.getItem(i); Object item = adapter.getItem(i);
if (item == targetPreference) { if (item == targetPreference) {
return i; return i;
@@ -522,8 +522,8 @@ public abstract class BaseSearchResultsAdapter extends ArrayAdapter<BaseSearchRe
if (currentAnimator != null && currentAnimator.isRunning()) { if (currentAnimator != null && currentAnimator.isRunning()) {
currentAnimator.cancel(); currentAnimator.cancel();
} }
int startColor = Utils.getAppBackgroundColor(); final int startColor = Utils.getAppBackgroundColor();
int highlightColor = Utils.adjustColorBrightness( final int highlightColor = Utils.adjustColorBrightness(
startColor, startColor,
Utils.isDarkModeEnabled() ? 1.25f : 0.8f Utils.isDarkModeEnabled() ? 1.25f : 0.8f
); );
@@ -566,7 +566,7 @@ public abstract class BaseSearchResultsAdapter extends ArrayAdapter<BaseSearchRe
} }
// First search on current level. // First search on current level.
for (int i = 0; i < group.getPreferenceCount(); i++) { for (int i = 0, count = group.getPreferenceCount(); i < count; i++) {
Preference pref = group.getPreference(i); Preference pref = group.getPreference(i);
if (key.equals(pref.getKey())) { if (key.equals(pref.getKey())) {
return pref; return pref;

View File

@@ -13,7 +13,6 @@ import android.preference.PreferenceCategory;
import android.preference.PreferenceGroup; import android.preference.PreferenceGroup;
import android.preference.PreferenceScreen; import android.preference.PreferenceScreen;
import android.text.TextUtils; import android.text.TextUtils;
import android.util.TypedValue;
import android.view.Gravity; import android.view.Gravity;
import android.view.View; import android.view.View;
import android.view.WindowManager; import android.view.WindowManager;
@@ -45,6 +44,7 @@ import app.revanced.extension.shared.settings.Setting;
import app.revanced.extension.shared.settings.preference.ColorPickerPreference; import app.revanced.extension.shared.settings.preference.ColorPickerPreference;
import app.revanced.extension.shared.settings.preference.CustomDialogListPreference; import app.revanced.extension.shared.settings.preference.CustomDialogListPreference;
import app.revanced.extension.shared.settings.preference.NoTitlePreferenceCategory; import app.revanced.extension.shared.settings.preference.NoTitlePreferenceCategory;
import app.revanced.extension.shared.ui.Dim;
/** /**
* Abstract controller for managing the overlay search view in ReVanced settings. * Abstract controller for managing the overlay search view in ReVanced settings.
@@ -123,7 +123,7 @@ public abstract class BaseSearchViewController {
searchView.setQueryHint(str("revanced_settings_search_hint")); searchView.setQueryHint(str("revanced_settings_search_hint"));
// Set text size. // Set text size.
searchEditText.setTextSize(TypedValue.COMPLEX_UNIT_SP, 16); searchEditText.setTextSize(16);
// Set cursor color. // Set cursor color.
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
@@ -149,7 +149,7 @@ public abstract class BaseSearchViewController {
// Create cursor drawable. // Create cursor drawable.
GradientDrawable cursorDrawable = new GradientDrawable(); GradientDrawable cursorDrawable = new GradientDrawable();
cursorDrawable.setShape(GradientDrawable.RECTANGLE); cursorDrawable.setShape(GradientDrawable.RECTANGLE);
cursorDrawable.setSize(Utils.dipToPixels(2), -1); // Width: 2dp, Height: match text height. cursorDrawable.setSize(Dim.dp2, -1); // Width: 2dp, Height: match text height.
cursorDrawable.setColor(cursorColor); cursorDrawable.setColor(cursorColor);
// Set cursor drawable. // Set cursor drawable.
@@ -164,7 +164,7 @@ public abstract class BaseSearchViewController {
overlayContainer = new FrameLayout(activity); overlayContainer = new FrameLayout(activity);
overlayContainer.setVisibility(View.GONE); overlayContainer.setVisibility(View.GONE);
overlayContainer.setBackgroundColor(Utils.getAppBackgroundColor()); overlayContainer.setBackgroundColor(Utils.getAppBackgroundColor());
overlayContainer.setElevation(Utils.dipToPixels(8)); overlayContainer.setElevation(Dim.dp8);
// Container for search results. // Container for search results.
FrameLayout searchResultsContainer = new FrameLayout(activity); FrameLayout searchResultsContainer = new FrameLayout(activity);
@@ -669,7 +669,7 @@ public abstract class BaseSearchViewController {
protected static GradientDrawable createBackgroundDrawable() { protected static GradientDrawable createBackgroundDrawable() {
GradientDrawable background = new GradientDrawable(); GradientDrawable background = new GradientDrawable();
background.setShape(GradientDrawable.RECTANGLE); background.setShape(GradientDrawable.RECTANGLE);
background.setCornerRadius(Utils.dipToPixels(28)); background.setCornerRadius(Dim.dp28);
background.setColor(getSearchViewBackground()); background.setColor(getSearchViewBackground());
return background; return background;
} }

View File

@@ -72,7 +72,7 @@ public class SpoofVideoStreamsPatch {
public static boolean spoofingToClientWithNoMultiAudioStreams() { public static boolean spoofingToClientWithNoMultiAudioStreams() {
return isPatchIncluded() return isPatchIncluded()
&& SPOOF_STREAMING_DATA && SPOOF_STREAMING_DATA
&& preferredClient != ClientType.IPADOS; && !preferredClient.supportsMultiAudioTracks;
} }
/** /**

View File

@@ -1,7 +1,6 @@
package app.revanced.extension.shared.ui; package app.revanced.extension.shared.ui;
import static app.revanced.extension.shared.Utils.adjustColorBrightness; import static app.revanced.extension.shared.Utils.adjustColorBrightness;
import static app.revanced.extension.shared.Utils.dipToPixels;
import static app.revanced.extension.shared.Utils.getAppBackgroundColor; import static app.revanced.extension.shared.Utils.getAppBackgroundColor;
import static app.revanced.extension.shared.Utils.isDarkModeEnabled; import static app.revanced.extension.shared.Utils.isDarkModeEnabled;
import static app.revanced.extension.shared.settings.preference.ColorPickerPreference.DISABLED_ALPHA; import static app.revanced.extension.shared.settings.preference.ColorPickerPreference.DISABLED_ALPHA;
@@ -13,7 +12,7 @@ import android.view.View;
import androidx.annotation.ColorInt; import androidx.annotation.ColorInt;
public class ColorDot { public class ColorDot {
private static final int STROKE_WIDTH = dipToPixels(1.5f); // Stroke width in dp. private static final int STROKE_WIDTH = Dim.dp(1.5f);
/** /**
* Creates a circular drawable with a main fill and a stroke. * Creates a circular drawable with a main fill and a stroke.
@@ -55,7 +54,7 @@ public class ColorDot {
targetView.setAlpha(enabled ? 1.0f : DISABLED_ALPHA); targetView.setAlpha(enabled ? 1.0f : DISABLED_ALPHA);
if (!isDarkModeEnabled()) { if (!isDarkModeEnabled()) {
targetView.setClipToOutline(true); targetView.setClipToOutline(true);
targetView.setElevation(dipToPixels(2)); targetView.setElevation(Dim.dp2);
} }
} }
} }

View File

@@ -1,7 +1,5 @@
package app.revanced.extension.shared.ui; package app.revanced.extension.shared.ui;
import static app.revanced.extension.shared.Utils.dipToPixels;
import android.app.Dialog; import android.app.Dialog;
import android.content.Context; import android.content.Context;
import android.graphics.Color; import android.graphics.Color;
@@ -37,7 +35,6 @@ public class CustomDialog {
private final Context context; private final Context context;
private final Dialog dialog; private final Dialog dialog;
private final LinearLayout mainLayout; private final LinearLayout mainLayout;
private final int dip4, dip8, dip16, dip24, dip36;
/** /**
* Creates a custom dialog with a styled layout, including a title, message, buttons, and an optional EditText. * Creates a custom dialog with a styled layout, including a title, message, buttons, and an optional EditText.
@@ -93,13 +90,6 @@ public class CustomDialog {
this.dialog = new Dialog(context); this.dialog = new Dialog(context);
this.dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); // Remove default title bar. this.dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); // Remove default title bar.
// Preset size constants.
dip4 = dipToPixels(4);
dip8 = dipToPixels(8);
dip16 = dipToPixels(16);
dip24 = dipToPixels(24);
dip36 = dipToPixels(36);
// Create main layout. // Create main layout.
mainLayout = createMainLayout(); mainLayout = createMainLayout();
addTitle(title); addTitle(title);
@@ -122,11 +112,11 @@ public class CustomDialog {
private LinearLayout createMainLayout() { private LinearLayout createMainLayout() {
LinearLayout layout = new LinearLayout(context); LinearLayout layout = new LinearLayout(context);
layout.setOrientation(LinearLayout.VERTICAL); layout.setOrientation(LinearLayout.VERTICAL);
layout.setPadding(dip24, dip16, dip24, dip24); layout.setPadding(Dim.dp24, Dim.dp16, Dim.dp24, Dim.dp24);
// Set rounded rectangle background. // Set rounded rectangle background.
ShapeDrawable background = new ShapeDrawable(new RoundRectShape( ShapeDrawable background = new ShapeDrawable(new RoundRectShape(
Utils.createCornerRadii(28), null, null)); Dim.roundedCorners(28), null, null));
// Dialog background. // Dialog background.
background.getPaint().setColor(Utils.getDialogBackgroundColor()); background.getPaint().setColor(Utils.getDialogBackgroundColor());
layout.setBackground(background); layout.setBackground(background);
@@ -152,7 +142,7 @@ public class CustomDialog {
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams( LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.WRAP_CONTENT); ViewGroup.LayoutParams.WRAP_CONTENT);
params.setMargins(0, 0, 0, dip16); params.setMargins(0, 0, 0, Dim.dp16);
titleView.setLayoutParams(params); titleView.setLayoutParams(params);
mainLayout.addView(titleView); mainLayout.addView(titleView);
@@ -180,9 +170,9 @@ public class CustomDialog {
// EditText (if provided). // EditText (if provided).
if (editText != null) { if (editText != null) {
ShapeDrawable background = new ShapeDrawable(new RoundRectShape( ShapeDrawable background = new ShapeDrawable(new RoundRectShape(
Utils.createCornerRadii(10), null, null)); Dim.roundedCorners(10), null, null));
background.getPaint().setColor(Utils.getEditTextBackground()); background.getPaint().setColor(Utils.getEditTextBackground());
scrollView.setPadding(dip8, dip8, dip8, dip8); scrollView.setPadding(Dim.dp8, Dim.dp8, Dim.dp8, Dim.dp8);
scrollView.setBackground(background); scrollView.setBackground(background);
scrollView.setClipToOutline(true); scrollView.setClipToOutline(true);
@@ -241,7 +231,7 @@ public class CustomDialog {
LinearLayout.LayoutParams buttonContainerParams = new LinearLayout.LayoutParams( LinearLayout.LayoutParams buttonContainerParams = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.WRAP_CONTENT); LinearLayout.LayoutParams.WRAP_CONTENT);
buttonContainerParams.setMargins(0, dip16, 0, 0); buttonContainerParams.setMargins(0, Dim.dp16, 0, 0);
buttonContainer.setLayoutParams(buttonContainerParams); buttonContainer.setLayoutParams(buttonContainerParams);
List<Button> buttons = new ArrayList<>(); List<Button> buttons = new ArrayList<>();
@@ -289,12 +279,12 @@ public class CustomDialog {
button.setEllipsize(TextUtils.TruncateAt.END); button.setEllipsize(TextUtils.TruncateAt.END);
button.setGravity(Gravity.CENTER); button.setGravity(Gravity.CENTER);
// Set internal padding. // Set internal padding.
button.setPadding(dip16, 0, dip16, 0); button.setPadding(Dim.dp16, 0, Dim.dp16, 0);
// Background color for OK button (inversion). // Background color for OK button (inversion).
// Background color for Cancel or Neutral buttons. // Background color for Cancel or Neutral buttons.
ShapeDrawable background = new ShapeDrawable(new RoundRectShape( ShapeDrawable background = new ShapeDrawable(new RoundRectShape(
Utils.createCornerRadii(20), null, null)); Dim.roundedCorners(20), null, null));
background.getPaint().setColor(isOkButton background.getPaint().setColor(isOkButton
? Utils.getOkButtonBackgroundColor() ? Utils.getOkButtonBackgroundColor()
: Utils.getCancelOrNeutralButtonBackgroundColor()); : Utils.getCancelOrNeutralButtonBackgroundColor());
@@ -331,20 +321,19 @@ public class CustomDialog {
if (buttons.isEmpty()) return; if (buttons.isEmpty()) return;
// Check if buttons fit in one row. // Check if buttons fit in one row.
int screenWidth = context.getResources().getDisplayMetrics().widthPixels;
int totalWidth = 0; int totalWidth = 0;
for (Integer width : buttonWidths) { for (Integer width : buttonWidths) {
totalWidth += width; totalWidth += width;
} }
if (buttonWidths.size() > 1) { if (buttonWidths.size() > 1) {
// Add margins for gaps. // Add margins for gaps.
totalWidth += (buttonWidths.size() - 1) * dip8; totalWidth += (buttonWidths.size() - 1) * Dim.dp8;
} }
// Single button: stretch to full width. // Single button: stretch to full width.
if (buttons.size() == 1) { if (buttons.size() == 1) {
layoutSingleButton(buttonContainer, buttons.get(0)); layoutSingleButton(buttonContainer, buttons.get(0));
} else if (totalWidth <= screenWidth * 0.8) { } else if (totalWidth <= Dim.pctWidth(80)) {
// Single row: Neutral, Cancel, OK. // Single row: Neutral, Cancel, OK.
layoutButtonsInRow(buttonContainer, buttons, buttonWidths); layoutButtonsInRow(buttonContainer, buttons, buttonWidths);
} else { } else {
@@ -369,7 +358,7 @@ public class CustomDialog {
button.setLayoutParams(new LinearLayout.LayoutParams( button.setLayoutParams(new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT,
dip36)); Dim.dp36));
singleContainer.addView(button); singleContainer.addView(button);
buttonContainer.addView(singleContainer); buttonContainer.addView(singleContainer);
} }
@@ -405,17 +394,17 @@ public class CustomDialog {
if (parent != null) parent.removeView(button); if (parent != null) parent.removeView(button);
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams( LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
0, dip36, buttonWidths.get(i)); 0, Dim.dp36, buttonWidths.get(i));
// Set margins based on button type and combination. // Set margins based on button type and combination.
if (buttons.size() == 2) { if (buttons.size() == 2) {
// Neutral + OK or Cancel + OK. // Neutral + OK or Cancel + OK.
params.setMargins(i == 0 ? 0 : dip4, 0, i == 0 ? dip4 : 0, 0); params.setMargins(i == 0 ? 0 : Dim.dp4, 0, i == 0 ? Dim.dp4 : 0, 0);
} else if (buttons.size() == 3) { } else if (buttons.size() == 3) {
// Neutral. // Neutral.
// Cancel. // Cancel.
// OK. // OK.
params.setMargins(i == 0 ? 0 : dip4, 0, i == 2 ? 0 : dip4, 0); params.setMargins(i == 0 ? 0 : Dim.dp4, 0, i == 2 ? 0 : Dim.dp4, 0);
} }
button.setLayoutParams(params); button.setLayoutParams(params);
@@ -447,14 +436,14 @@ public class CustomDialog {
singleContainer.setGravity(Gravity.CENTER); singleContainer.setGravity(Gravity.CENTER);
singleContainer.setLayoutParams(new LinearLayout.LayoutParams( singleContainer.setLayoutParams(new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT,
dip36)); Dim.dp36));
ViewGroup parent = (ViewGroup) button.getParent(); ViewGroup parent = (ViewGroup) button.getParent();
if (parent != null) parent.removeView(button); if (parent != null) parent.removeView(button);
button.setLayoutParams(new LinearLayout.LayoutParams( button.setLayoutParams(new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT,
dip36)); Dim.dp36));
singleContainer.addView(button); singleContainer.addView(button);
buttonContainer.addView(singleContainer); buttonContainer.addView(singleContainer);
@@ -463,7 +452,7 @@ public class CustomDialog {
View spacer = new View(context); View spacer = new View(context);
LinearLayout.LayoutParams spacerParams = new LinearLayout.LayoutParams( LinearLayout.LayoutParams spacerParams = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT,
dip8); Dim.dp8);
spacer.setLayoutParams(spacerParams); spacer.setLayoutParams(spacerParams);
buttonContainer.addView(spacer); buttonContainer.addView(spacer);
} }

View File

@@ -0,0 +1,89 @@
package app.revanced.extension.shared.ui;
import android.content.res.Resources;
import android.util.DisplayMetrics;
import android.util.TypedValue;
/**
* Utility class for converting design units (dp) and screen percentages to pixels.
*/
public final class Dim {
private Dim() {} // Prevent instantiation.
private static final DisplayMetrics METRICS = Resources.getSystem().getDisplayMetrics();
public static final int SCREEN_WIDTH = METRICS.widthPixels;
public static final int SCREEN_HEIGHT = METRICS.heightPixels;
// DP constants (density-independent pixels).
public static final int dp1 = dp(1);
public static final int dp2 = dp(2);
public static final int dp4 = dp(4);
public static final int dp6 = dp(6);
public static final int dp7 = dp(7);
public static final int dp8 = dp(8);
public static final int dp10 = dp(10);
public static final int dp12 = dp(12);
public static final int dp16 = dp(16);
public static final int dp20 = dp(20);
public static final int dp24 = dp(24);
public static final int dp28 = dp(28);
public static final int dp32 = dp(32);
public static final int dp36 = dp(36);
public static final int dp40 = dp(40);
public static final int dp48 = dp(48);
/**
* Converts dp (density-independent pixels) to actual device pixels.
* Uses Android's official TypedValue.applyDimension() for accurate rounding.
*
* @param dp The dp value to convert (supports float, e.g. 1.2f).
* @return The equivalent pixel value as int.
*/
public static int dp(float dp) {
return (int) TypedValue.applyDimension(
TypedValue.COMPLEX_UNIT_DIP, dp, METRICS);
}
/**
* Converts a percentage of the screen height to pixels.
*
* @param percent The percentage (0100).
* @return The pixel value corresponding to the percentage of screen height.
*/
public static int pctHeight(int percent) {
return (SCREEN_HEIGHT * percent) / 100;
}
/**
* Converts a percentage of the screen width to pixels.
*
* @param percent The percentage (0100).
* @return The pixel value corresponding to the percentage of screen width.
*/
public static int pctWidth(int percent) {
return (SCREEN_WIDTH * percent) / 100;
}
/**
* Converts a percentage of the screen's portrait width (min side) to pixels.
*
* @param percent The percentage (0100).
* @return The pixel value.
*/
public static int pctPortraitWidth(int percent) {
final int portraitWidth = Math.min(SCREEN_WIDTH, SCREEN_HEIGHT);
return (int) (portraitWidth * (percent / 100.0f));
}
/**
* Creates an array of corner radii for a rounded rectangle.
* All corners use the same radius.
*
* @param dp radius in density-independent pixels
* @return array of 8 floats: [top-left-x, top-left-y, top-right-x, top-right-y, ...]
*/
public static float[] roundedCorners(float dp) {
final float r = dp(dp);
return new float[]{r, r, r, r, r, r, r, r};
}
}

View File

@@ -1,7 +1,5 @@
package app.revanced.extension.shared.ui; package app.revanced.extension.shared.ui;
import static app.revanced.extension.shared.Utils.dipToPixels;
import android.animation.Animator; import android.animation.Animator;
import android.animation.AnimatorListenerAdapter; import android.animation.AnimatorListenerAdapter;
import android.animation.ValueAnimator; import android.animation.ValueAnimator;
@@ -63,9 +61,8 @@ public class SheetBottomDialog {
// Add top spacer. // Add top spacer.
View spacer = new View(context); View spacer = new View(context);
final int dip40 = dipToPixels(40);
LinearLayout.LayoutParams spacerParams = new LinearLayout.LayoutParams( LinearLayout.LayoutParams spacerParams = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT, dip40); LinearLayout.LayoutParams.MATCH_PARENT, Dim.dp40);
spacer.setLayoutParams(spacerParams); spacer.setLayoutParams(spacerParams);
spacer.setClickable(true); spacer.setClickable(true);
dragContainer.addView(spacer); dragContainer.addView(spacer);
@@ -105,20 +102,15 @@ public class SheetBottomDialog {
* @return A configured {@link DraggableLinearLayout} with a handle bar and styled background. * @return A configured {@link DraggableLinearLayout} with a handle bar and styled background.
*/ */
public static DraggableLinearLayout createMainLayout(@NonNull Context context, @Nullable Integer backgroundColor) { public static DraggableLinearLayout createMainLayout(@NonNull Context context, @Nullable Integer backgroundColor) {
// Preset size constants.
final int dip4 = dipToPixels(4); // Handle bar height.
final int dip8 = dipToPixels(8); // Dialog padding.
final int dip40 = dipToPixels(40); // Handle bar width.
DraggableLinearLayout mainLayout = new DraggableLinearLayout(context); DraggableLinearLayout mainLayout = new DraggableLinearLayout(context);
mainLayout.setOrientation(LinearLayout.VERTICAL); mainLayout.setOrientation(LinearLayout.VERTICAL);
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams( LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT); LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
layoutParams.setMargins(dip8, 0, dip8, dip8); layoutParams.setMargins(Dim.dp8, 0, Dim.dp8, Dim.dp8);
mainLayout.setLayoutParams(layoutParams); mainLayout.setLayoutParams(layoutParams);
ShapeDrawable background = new ShapeDrawable(new RoundRectShape( ShapeDrawable background = new ShapeDrawable(new RoundRectShape(
Utils.createCornerRadii(12), null, null)); Dim.roundedCorners(12), null, null));
int color = (backgroundColor != null) ? backgroundColor : Utils.getDialogBackgroundColor(); int color = (backgroundColor != null) ? backgroundColor : Utils.getDialogBackgroundColor();
background.getPaint().setColor(color); background.getPaint().setColor(color);
mainLayout.setBackground(background); mainLayout.setBackground(background);
@@ -127,14 +119,14 @@ public class SheetBottomDialog {
LinearLayout handleContainer = new LinearLayout(context); LinearLayout handleContainer = new LinearLayout(context);
LinearLayout.LayoutParams containerParams = new LinearLayout.LayoutParams( LinearLayout.LayoutParams containerParams = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT); LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
containerParams.setMargins(0, dip8, 0, 0); containerParams.setMargins(0, Dim.dp8, 0, 0);
handleContainer.setLayoutParams(containerParams); handleContainer.setLayoutParams(containerParams);
handleContainer.setGravity(Gravity.CENTER_HORIZONTAL | Gravity.BOTTOM); handleContainer.setGravity(Gravity.CENTER_HORIZONTAL | Gravity.BOTTOM);
View handleBar = new View(context); View handleBar = new View(context);
ShapeDrawable handleBackground = new ShapeDrawable(new RoundRectShape( ShapeDrawable handleBackground = new ShapeDrawable(new RoundRectShape(
Utils.createCornerRadii(4), null, null)); Dim.roundedCorners(4), null, null));
handleBackground.getPaint().setColor(Utils.adjustColorBrightness(color, 0.9f, 1.25f)); handleBackground.getPaint().setColor(Utils.adjustColorBrightness(color, 0.9f, 1.25f));
LinearLayout.LayoutParams handleParams = new LinearLayout.LayoutParams(dip40, dip4); LinearLayout.LayoutParams handleParams = new LinearLayout.LayoutParams(Dim.dp40, Dim.dp4);
handleBar.setLayoutParams(handleParams); handleBar.setLayoutParams(handleParams);
handleBar.setBackground(handleBackground); handleBar.setBackground(handleBackground);

View File

@@ -4,6 +4,7 @@ import android.view.View;
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.ui.Dim;
import app.revanced.extension.youtube.settings.Settings; import app.revanced.extension.youtube.settings.Settings;
@SuppressWarnings("unused") @SuppressWarnings("unused")
@@ -31,7 +32,7 @@ public final class WideSearchbarPatch {
final int paddingRight = searchBarView.getPaddingRight(); final int paddingRight = searchBarView.getPaddingRight();
final int paddingTop = searchBarView.getPaddingTop(); final int paddingTop = searchBarView.getPaddingTop();
final int paddingBottom = searchBarView.getPaddingBottom(); final int paddingBottom = searchBarView.getPaddingBottom();
final int paddingStart = Utils.dipToPixels(8); final int paddingStart = Dim.dp8;
if (Utils.isRightToLeftLocale()) { if (Utils.isRightToLeftLocale()) {
searchBarView.setPadding(paddingLeft, paddingTop, paddingStart, paddingBottom); searchBarView.setPadding(paddingLeft, paddingTop, paddingStart, paddingBottom);

View File

@@ -2,7 +2,6 @@ package app.revanced.extension.youtube.patches.announcements;
import static android.text.Html.FROM_HTML_MODE_COMPACT; import static android.text.Html.FROM_HTML_MODE_COMPACT;
import static app.revanced.extension.shared.StringRef.str; import static app.revanced.extension.shared.StringRef.str;
import static app.revanced.extension.shared.Utils.dipToPixels;
import static app.revanced.extension.youtube.patches.announcements.requests.AnnouncementsRoutes.GET_LATEST_ANNOUNCEMENTS; import static app.revanced.extension.youtube.patches.announcements.requests.AnnouncementsRoutes.GET_LATEST_ANNOUNCEMENTS;
import static app.revanced.extension.youtube.patches.announcements.requests.AnnouncementsRoutes.GET_LATEST_ANNOUNCEMENT_IDS; import static app.revanced.extension.youtube.patches.announcements.requests.AnnouncementsRoutes.GET_LATEST_ANNOUNCEMENT_IDS;
@@ -24,6 +23,7 @@ import java.time.LocalDateTime;
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.requests.Requester; import app.revanced.extension.shared.requests.Requester;
import app.revanced.extension.shared.ui.Dim;
import app.revanced.extension.youtube.patches.announcements.requests.AnnouncementsRoutes; import app.revanced.extension.youtube.patches.announcements.requests.AnnouncementsRoutes;
import app.revanced.extension.youtube.settings.Settings; import app.revanced.extension.youtube.settings.Settings;
@@ -148,7 +148,7 @@ public final class AnnouncementsPatch {
if (child instanceof TextView childTextView && finalTitle.equals(childTextView.getText().toString())) { if (child instanceof TextView childTextView && finalTitle.equals(childTextView.getText().toString())) {
childTextView.setCompoundDrawablesWithIntrinsicBounds( childTextView.setCompoundDrawablesWithIntrinsicBounds(
finalLevel.icon, 0, 0, 0); finalLevel.icon, 0, 0, 0);
childTextView.setCompoundDrawablePadding(dipToPixels(8)); childTextView.setCompoundDrawablePadding(Dim.dp8);
} }
} }

View File

@@ -7,15 +7,15 @@ import app.revanced.extension.youtube.shared.PlayerType;
@SuppressWarnings("unused") @SuppressWarnings("unused")
final class DescriptionComponentsFilter extends Filter { final class DescriptionComponentsFilter extends Filter {
private static final String INFOCARDS_SECTION_PATH = "infocards_section.e";
private final StringTrieSearch exceptions = new StringTrieSearch(); private final StringTrieSearch exceptions = new StringTrieSearch();
private final ByteArrayFilterGroupList macroMarkersCarouselGroupList = new ByteArrayFilterGroupList();
private final StringFilterGroup macroMarkersCarousel; private final StringFilterGroup macroMarkersCarousel;
private final ByteArrayFilterGroupList macroMarkersCarouselGroupList = new ByteArrayFilterGroupList();
private final StringFilterGroup horizontalShelf; private final StringFilterGroup horizontalShelf;
private final ByteArrayFilterGroup cellVideoAttribute; private final ByteArrayFilterGroup cellVideoAttribute;
private final StringFilterGroup infoCardsSection;
private final StringFilterGroup subscribeButton;
private final StringFilterGroup aiGeneratedVideoSummarySection; private final StringFilterGroup aiGeneratedVideoSummarySection;
private final StringFilterGroup hypePoints; private final StringFilterGroup hypePoints;
@@ -44,9 +44,14 @@ final class DescriptionComponentsFilter extends Filter {
"video_attributes_section" "video_attributes_section"
); );
final StringFilterGroup infoCardsSection = new StringFilterGroup( final StringFilterGroup featuredLinksSection = new StringFilterGroup(
Settings.HIDE_INFO_CARDS_SECTION, Settings.HIDE_FEATURED_LINKS_SECTION,
"infocards_section" "media_lockup"
);
final StringFilterGroup featuredVideosSection = new StringFilterGroup(
Settings.HIDE_FEATURED_VIDEOS_SECTION,
"structured_description_video_lockup"
); );
final StringFilterGroup podcastSection = new StringFilterGroup( final StringFilterGroup podcastSection = new StringFilterGroup(
@@ -69,6 +74,16 @@ final class DescriptionComponentsFilter extends Filter {
"hype_points_factoid" "hype_points_factoid"
); );
infoCardsSection = new StringFilterGroup(
Settings.HIDE_INFO_CARDS_SECTION,
INFOCARDS_SECTION_PATH
);
subscribeButton = new StringFilterGroup(
Settings.HIDE_SUBSCRIBE_BUTTON,
"subscribe_button"
);
macroMarkersCarousel = new StringFilterGroup( macroMarkersCarousel = new StringFilterGroup(
null, null,
"macro_markers_carousel.e" "macro_markers_carousel.e"
@@ -99,12 +114,15 @@ final class DescriptionComponentsFilter extends Filter {
aiGeneratedVideoSummarySection, aiGeneratedVideoSummarySection,
askSection, askSection,
attributesSection, attributesSection,
infoCardsSection, featuredLinksSection,
featuredVideosSection,
horizontalShelf, horizontalShelf,
howThisWasMadeSection, howThisWasMadeSection,
hypePoints, hypePoints,
infoCardsSection,
macroMarkersCarousel, macroMarkersCarousel,
podcastSection, podcastSection,
subscribeButton,
transcriptSection transcriptSection
); );
} }
@@ -118,6 +136,10 @@ final class DescriptionComponentsFilter extends Filter {
return PlayerType.getCurrent().isMaximizedOrFullscreen(); return PlayerType.getCurrent().isMaximizedOrFullscreen();
} }
if (matchedGroup == subscribeButton) {
return path.startsWith(INFOCARDS_SECTION_PATH);
}
if (exceptions.matches(path)) return false; if (exceptions.matches(path)) return false;
if (matchedGroup == macroMarkersCarousel) { if (matchedGroup == macroMarkersCarousel) {

View File

@@ -21,22 +21,26 @@ 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 StringTrieSearch mixPlaylistsExceptions = new StringTrieSearch( private static final StringTrieSearch mixPlaylistsContextExceptions = new StringTrieSearch(
"V.ED", // Playlist browse id. "V.ED", // Playlist browse id.
"java.lang.ref.WeakReference" "java.lang.ref.WeakReference"
); );
private static final ByteArrayFilterGroup mixPlaylistsExceptions2 = new ByteArrayFilterGroup( private static final ByteArrayFilterGroup mixPlaylistsBufferExceptions = new ByteArrayFilterGroup(
null, null,
"cell_description_body" "cell_description_body",
"channel_profile"
); );
private static final ByteArrayFilterGroup mixPlaylists = new ByteArrayFilterGroup( private static final ByteArrayFilterGroup mixPlaylists = new ByteArrayFilterGroup(
null, null,
"&list=" "&list="
); );
private static final String PAGE_HEADER_PATH = "page_header.e";
private final StringTrieSearch exceptions = new StringTrieSearch(); private final StringTrieSearch exceptions = new StringTrieSearch();
private final StringFilterGroup communityPosts; private final StringFilterGroup communityPosts;
private final StringFilterGroup surveys; private final StringFilterGroup surveys;
private final StringFilterGroup subscribeButton;
private final StringFilterGroup notifyMe; private final StringFilterGroup notifyMe;
private final StringFilterGroup singleItemInformationPanel; private final StringFilterGroup singleItemInformationPanel;
private final StringFilterGroup expandableMetadata; private final StringFilterGroup expandableMetadata;
@@ -67,8 +71,14 @@ public final class LayoutComponentsFilter extends Filter {
"chips_shelf" "chips_shelf"
); );
final var visualSpacer = new StringFilterGroup(
Settings.HIDE_VISUAL_SPACER,
"cell_divider"
);
addIdentifierCallbacks( addIdentifierCallbacks(
chipsShelf chipsShelf,
visualSpacer
); );
// Paths. // Paths.
@@ -255,19 +265,28 @@ public final class LayoutComponentsFilter extends Filter {
channelProfile = new StringFilterGroup( channelProfile = new StringFilterGroup(
null, null,
"channel_profile.e", "channel_profile.e",
"page_header.e" PAGE_HEADER_PATH
); );
channelProfileBuffer = new ByteArrayFilterGroupList(); channelProfileBuffer = new ByteArrayFilterGroupList();
channelProfileBuffer.addAll(new ByteArrayFilterGroup( channelProfileBuffer.addAll(new ByteArrayFilterGroup(
Settings.HIDE_VISIT_STORE_BUTTON, Settings.HIDE_STORE_BUTTON,
"header_store_button" "store_button"
), ),
new ByteArrayFilterGroup( new ByteArrayFilterGroup(
Settings.HIDE_VISIT_COMMUNITY_BUTTON, Settings.HIDE_COMMUNITY_BUTTON,
"community_button" "community_button"
),
new ByteArrayFilterGroup(
Settings.HIDE_JOIN_BUTTON,
"sponsor_button"
) )
); );
subscribeButton = new StringFilterGroup(
Settings.HIDE_SUBSCRIBE_BUTTON_IN_CHANNEL_PAGE,
"subscribe_button"
);
horizontalShelves = new StringFilterGroup( horizontalShelves = new StringFilterGroup(
Settings.HIDE_HORIZONTAL_SHELVES, Settings.HIDE_HORIZONTAL_SHELVES,
"horizontal_video_shelf.e", "horizontal_video_shelf.e",
@@ -307,6 +326,7 @@ public final class LayoutComponentsFilter extends Filter {
quickActions, quickActions,
relatedVideos, relatedVideos,
singleItemInformationPanel, singleItemInformationPanel,
subscribeButton,
subscribersCommunityGuidelines, subscribersCommunityGuidelines,
subscriptionsChipBar, subscriptionsChipBar,
surveys, surveys,
@@ -337,6 +357,10 @@ public final class LayoutComponentsFilter extends Filter {
return channelProfileBuffer.check(buffer).isFiltered(); return channelProfileBuffer.check(buffer).isFiltered();
} }
if (matchedGroup == subscribeButton) {
return path.startsWith(PAGE_HEADER_PATH);
}
if (matchedGroup == communityPosts && NavigationBar.isBackButtonVisible()) { if (matchedGroup == communityPosts && NavigationBar.isBackButtonVisible()) {
// Allow community posts on channel profile page, // Allow community posts on channel profile page,
// or if viewing an individual channel in the feed. // or if viewing an individual channel in the feed.
@@ -380,17 +404,15 @@ public final class LayoutComponentsFilter extends Filter {
return false; return false;
} }
// Prevent playlist items being hidden, if a mix playlist is present in it. if (mixPlaylists.check(bytes).isFiltered()
if (mixPlaylistsExceptions.matches(conversionContext.toString())) { // Prevent hiding the description of some videos accidentally.
return false; && !mixPlaylistsBufferExceptions.check(bytes).isFiltered()
} // Prevent playlist items being hidden, if a mix playlist is present in it.
// Check last since it requires creating a context string.
// Prevent hiding the description of some videos accidentally. //
if (mixPlaylistsExceptions2.check(bytes).isFiltered()) { // FIXME: The conversion context passed in does not always generate a valid toString.
return false; // This string check may no longer be needed, or the patch may be broken.
} && !mixPlaylistsContextExceptions.matches(conversionContext.toString())) {
if (mixPlaylists.check(bytes).isFiltered()) {
Logger.printDebug(() -> "Filtered mix playlist"); Logger.printDebug(() -> "Filtered mix playlist");
return true; return true;
} }

View File

@@ -12,13 +12,9 @@ import java.util.List;
public class PlayerFlyoutMenuItemsFilter extends Filter { public class PlayerFlyoutMenuItemsFilter extends Filter {
public static final class HideAudioFlyoutMenuAvailability implements Setting.Availability { public static final class HideAudioFlyoutMenuAvailability implements Setting.Availability {
private static final boolean AVAILABLE_ON_LAUNCH = !SpoofVideoStreamsPatch.spoofingToClientWithNoMultiAudioStreams();
@Override @Override
public boolean isAvailable() { public boolean isAvailable() {
// Check conditions of launch and now. Otherwise if spoofing is changed return !SpoofVideoStreamsPatch.spoofingToClientWithNoMultiAudioStreams();
// without a restart the setting will show as available when it's not.
return AVAILABLE_ON_LAUNCH && !SpoofVideoStreamsPatch.spoofingToClientWithNoMultiAudioStreams();
} }
@Override @Override

View File

@@ -44,9 +44,10 @@ public final class ShortsFilter extends Filter {
private final StringFilterGroup useTemplateButton; private final StringFilterGroup useTemplateButton;
private final ByteArrayFilterGroup useTemplateButtonBuffer; private final ByteArrayFilterGroup useTemplateButtonBuffer;
private final StringFilterGroup autoDubbedLabel;
private final StringFilterGroup subscribeButton; private final StringFilterGroup subscribeButton;
private final StringFilterGroup joinButton; private final StringFilterGroup joinButton;
private final StringFilterGroup paidPromotionButton; private final StringFilterGroup paidPromotionLabel;
private final StringFilterGroup shelfHeader; private final StringFilterGroup shelfHeader;
private final StringFilterGroup suggestedAction; private final StringFilterGroup suggestedAction;
@@ -161,6 +162,18 @@ public final class ShortsFilter extends Filter {
"participation_bar.e" "participation_bar.e"
); );
StringFilterGroup livePreview = new StringFilterGroup(
Settings.HIDE_SHORTS_LIVE_PREVIEW,
// Live Shorts preview that can popup while scrolling through Shorts player.
// Can be removed if a way to disable live Shorts is found.
"live_preview_page_vm.e"
);
autoDubbedLabel = new StringFilterGroup(
Settings.HIDE_SHORTS_AUTO_DUBBED_LABEL,
"badge."
);
joinButton = new StringFilterGroup( joinButton = new StringFilterGroup(
Settings.HIDE_SHORTS_JOIN_BUTTON, Settings.HIDE_SHORTS_JOIN_BUTTON,
"sponsor_button" "sponsor_button"
@@ -171,9 +184,10 @@ public final class ShortsFilter extends Filter {
"subscribe_button" "subscribe_button"
); );
paidPromotionButton = new StringFilterGroup( paidPromotionLabel = new StringFilterGroup(
Settings.HIDE_PAID_PROMOTION_LABEL, Settings.HIDE_PAID_PROMOTION_LABEL,
"reel_player_disclosure.e" "reel_player_disclosure.e",
"shorts_disclosures.e"
); );
shortsActionBar = new StringFilterGroup( shortsActionBar = new StringFilterGroup(
@@ -219,10 +233,10 @@ public final class ShortsFilter extends Filter {
); );
addPathCallbacks( addPathCallbacks(
shortsCompactFeedVideo, joinButton, subscribeButton, paidPromotionButton, shortsCompactFeedVideo, joinButton, subscribeButton, paidPromotionLabel, autoDubbedLabel,
shortsActionBar, suggestedAction, pausedOverlayButtons, channelBar, previewComment, shortsActionBar, suggestedAction, pausedOverlayButtons, channelBar, previewComment,
fullVideoLinkLabel, videoTitle, useSoundButton, reelSoundMetadata, soundButton, infoPanel, fullVideoLinkLabel, videoTitle, useSoundButton, reelSoundMetadata, soundButton, infoPanel,
stickers, likeFountain, likeButton, dislikeButton stickers, likeFountain, likeButton, dislikeButton, livePreview
); );
// //
@@ -250,6 +264,12 @@ public final class ShortsFilter extends Filter {
// Suggested actions. // Suggested actions.
// //
suggestedActionsBuffer.addAll( suggestedActionsBuffer.addAll(
new ByteArrayFilterGroup(
Settings.HIDE_SHORTS_PREVIEW_COMMENT,
// Preview comment that can popup while a Short is playing.
// Uses no bundled icons, and instead the users profile photo is shown.
"shorts-comments-panel"
),
new ByteArrayFilterGroup( new ByteArrayFilterGroup(
Settings.HIDE_SHORTS_SHOP_BUTTON, Settings.HIDE_SHORTS_SHOP_BUTTON,
"yt_outline_bag_" "yt_outline_bag_"
@@ -322,7 +342,8 @@ public final class ShortsFilter extends Filter {
boolean isFiltered(String identifier, String path, byte[] buffer, boolean isFiltered(String identifier, String path, byte[] buffer,
StringFilterGroup matchedGroup, FilterContentType contentType, int contentIndex) { StringFilterGroup matchedGroup, FilterContentType contentType, int contentIndex) {
if (contentType == FilterContentType.PATH) { if (contentType == FilterContentType.PATH) {
if (matchedGroup == subscribeButton || matchedGroup == joinButton || matchedGroup == paidPromotionButton) { if (matchedGroup == subscribeButton || matchedGroup == joinButton
|| matchedGroup == paidPromotionLabel || matchedGroup == autoDubbedLabel) {
// Selectively filter to avoid false positive filtering of other subscribe/join buttons. // Selectively filter to avoid false positive filtering of other subscribe/join buttons.
return path.startsWith(REEL_CHANNEL_BAR_PATH) || path.startsWith(REEL_METAPANEL_PATH); return path.startsWith(REEL_CHANNEL_BAR_PATH) || path.startsWith(REEL_METAPANEL_PATH);
} }

View File

@@ -1,7 +1,6 @@
package app.revanced.extension.youtube.patches.playback.speed; package app.revanced.extension.youtube.patches.playback.speed;
import static app.revanced.extension.shared.StringRef.str; import static app.revanced.extension.shared.StringRef.str;
import static app.revanced.extension.shared.Utils.dipToPixels;
import static app.revanced.extension.youtube.videoplayer.PlayerControlButton.fadeInDuration; import static app.revanced.extension.youtube.videoplayer.PlayerControlButton.fadeInDuration;
import static app.revanced.extension.youtube.videoplayer.PlayerControlButton.getDialogBackgroundColor; import static app.revanced.extension.youtube.videoplayer.PlayerControlButton.getDialogBackgroundColor;
@@ -30,6 +29,7 @@ import java.util.function.Function;
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.ui.Dim;
import app.revanced.extension.shared.ui.SheetBottomDialog; import app.revanced.extension.shared.ui.SheetBottomDialog;
import app.revanced.extension.youtube.patches.VideoInformation; import app.revanced.extension.youtube.patches.VideoInformation;
import app.revanced.extension.youtube.patches.components.PlaybackSpeedMenuFilter; import app.revanced.extension.youtube.patches.components.PlaybackSpeedMenuFilter;
@@ -264,14 +264,6 @@ public class CustomPlaybackSpeedPatch {
SheetBottomDialog.DraggableLinearLayout mainLayout = SheetBottomDialog.DraggableLinearLayout mainLayout =
SheetBottomDialog.createMainLayout(context, getDialogBackgroundColor()); SheetBottomDialog.createMainLayout(context, getDialogBackgroundColor());
// Preset size constants.
final int dip4 = dipToPixels(4);
final int dip8 = dipToPixels(8);
final int dip12 = dipToPixels(12);
final int dip20 = dipToPixels(20);
final int dip32 = dipToPixels(32);
final int dip60 = dipToPixels(60);
// Display current playback speed. // Display current playback speed.
TextView currentSpeedText = new TextView(context); TextView currentSpeedText = new TextView(context);
float currentSpeed = VideoInformation.getPlaybackSpeed(); float currentSpeed = VideoInformation.getPlaybackSpeed();
@@ -283,7 +275,7 @@ public class CustomPlaybackSpeedPatch {
currentSpeedText.setGravity(Gravity.CENTER); currentSpeedText.setGravity(Gravity.CENTER);
LinearLayout.LayoutParams textParams = new LinearLayout.LayoutParams( LinearLayout.LayoutParams textParams = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT); LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
textParams.setMargins(0, dip20, 0, 0); textParams.setMargins(0, Dim.dp20, 0, 0);
currentSpeedText.setLayoutParams(textParams); currentSpeedText.setLayoutParams(textParams);
// Add current speed text view to main layout. // Add current speed text view to main layout.
mainLayout.addView(currentSpeedText); mainLayout.addView(currentSpeedText);
@@ -294,8 +286,8 @@ public class CustomPlaybackSpeedPatch {
sliderLayout.setGravity(Gravity.CENTER_VERTICAL); sliderLayout.setGravity(Gravity.CENTER_VERTICAL);
// Create +/- buttons. // Create +/- buttons.
Button minusButton = createStyledButton(context, false, dip8, dip8); Button minusButton = createStyledButton(context, false);
Button plusButton = createStyledButton(context, true, dip8, dip8); Button plusButton = createStyledButton(context, true);
// Create slider for speed adjustment. // Create slider for speed adjustment.
SeekBar speedSlider = new SeekBar(context); SeekBar speedSlider = new SeekBar(context);
@@ -363,7 +355,7 @@ public class CustomPlaybackSpeedPatch {
gridLayout.setRowCount((int) Math.ceil(customPlaybackSpeeds.length / 5.0)); gridLayout.setRowCount((int) Math.ceil(customPlaybackSpeeds.length / 5.0));
LinearLayout.LayoutParams gridParams = new LinearLayout.LayoutParams( LinearLayout.LayoutParams gridParams = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT); LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
gridParams.setMargins(dip4, dip12, dip4, dip12); // Speed buttons container. gridParams.setMargins(Dim.dp4, Dim.dp12, Dim.dp4, Dim.dp12); // Speed buttons container.
gridLayout.setLayoutParams(gridParams); gridLayout.setLayoutParams(gridParams);
// For button use 1 digit minimum. // For button use 1 digit minimum.
@@ -378,8 +370,8 @@ public class CustomPlaybackSpeedPatch {
GridLayout.LayoutParams containerParams = new GridLayout.LayoutParams(); GridLayout.LayoutParams containerParams = new GridLayout.LayoutParams();
containerParams.width = 0; // Equal width for columns. containerParams.width = 0; // Equal width for columns.
containerParams.columnSpec = GridLayout.spec(GridLayout.UNDEFINED, 1, 1f); containerParams.columnSpec = GridLayout.spec(GridLayout.UNDEFINED, 1, 1f);
containerParams.setMargins(dip4, 0, dip4, 0); // Button margins. containerParams.setMargins(Dim.dp4, 0, Dim.dp4, 0); // Button margins.
containerParams.height = dip60; // Fixed height for button and label. containerParams.height = Dim.dp(60); // Fixed height for button and label.
buttonContainer.setLayoutParams(containerParams); buttonContainer.setLayoutParams(containerParams);
// Create speed button. // Create speed button.
@@ -391,14 +383,14 @@ public class CustomPlaybackSpeedPatch {
speedButton.setGravity(Gravity.CENTER); speedButton.setGravity(Gravity.CENTER);
ShapeDrawable buttonBackground = new ShapeDrawable(new RoundRectShape( ShapeDrawable buttonBackground = new ShapeDrawable(new RoundRectShape(
Utils.createCornerRadii(20), null, null)); Dim.roundedCorners(20), null, null));
buttonBackground.getPaint().setColor(getAdjustedBackgroundColor(false)); buttonBackground.getPaint().setColor(getAdjustedBackgroundColor(false));
speedButton.setBackground(buttonBackground); speedButton.setBackground(buttonBackground);
speedButton.setPadding(dip4, dip4, dip4, dip4); speedButton.setPadding(Dim.dp4, Dim.dp4, Dim.dp4, Dim.dp4);
// Center button vertically and stretch horizontally in container. // Center button vertically and stretch horizontally in container.
FrameLayout.LayoutParams buttonParams = new FrameLayout.LayoutParams( FrameLayout.LayoutParams buttonParams = new FrameLayout.LayoutParams(
FrameLayout.LayoutParams.MATCH_PARENT, dip32, Gravity.CENTER); FrameLayout.LayoutParams.MATCH_PARENT, Dim.dp32, Gravity.CENTER);
speedButton.setLayoutParams(buttonParams); speedButton.setLayoutParams(buttonParams);
// Add speed buttons view to buttons container layout. // Add speed buttons view to buttons container layout.
@@ -475,21 +467,18 @@ public class CustomPlaybackSpeedPatch {
* *
* @param context The Android context used to create the button. * @param context The Android context used to create the button.
* @param isPlus True to display a plus symbol, false to display a minus symbol. * @param isPlus True to display a plus symbol, false to display a minus symbol.
* @param marginStart The start margin in pixels (left for LTR, right for RTL).
* @param marginEnd The end margin in pixels (right for LTR, left for RTL).
* @return A configured {@link Button} with the specified styling and layout parameters. * @return A configured {@link Button} with the specified styling and layout parameters.
*/ */
private static Button createStyledButton(Context context, boolean isPlus, int marginStart, int marginEnd) { private static Button createStyledButton(Context context, boolean isPlus) {
Button button = new Button(context, null, 0); // Disable default theme style. Button button = new Button(context, null, 0); // Disable default theme style.
button.setText(""); // No text on button. button.setText(""); // No text on button.
ShapeDrawable background = new ShapeDrawable(new RoundRectShape( ShapeDrawable background = new ShapeDrawable(new RoundRectShape(
Utils.createCornerRadii(20), null, null)); Dim.roundedCorners(20), null, null));
background.getPaint().setColor(getAdjustedBackgroundColor(false)); background.getPaint().setColor(getAdjustedBackgroundColor(false));
button.setBackground(background); button.setBackground(background);
button.setForeground(new OutlineSymbolDrawable(isPlus)); // Plus or minus symbol. button.setForeground(new OutlineSymbolDrawable(isPlus)); // Plus or minus symbol.
final int dip36 = dipToPixels(36); LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(Dim.dp36, Dim.dp36);
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(dip36, dip36); params.setMargins(Dim.dp8, 0, Dim.dp8, 0); // Set margins.
params.setMargins(marginStart, 0, marginEnd, 0); // Set margins.
button.setLayoutParams(params); button.setLayoutParams(params);
return button; return button;
} }
@@ -554,7 +543,7 @@ class OutlineSymbolDrawable extends Drawable {
paint = new Paint(Paint.ANTI_ALIAS_FLAG); // Enable anti-aliasing for smooth rendering. paint = new Paint(Paint.ANTI_ALIAS_FLAG); // Enable anti-aliasing for smooth rendering.
paint.setColor(Utils.getAppForegroundColor()); paint.setColor(Utils.getAppForegroundColor());
paint.setStyle(Paint.Style.STROKE); // Use stroke style for outline. paint.setStyle(Paint.Style.STROKE); // Use stroke style for outline.
paint.setStrokeWidth(dipToPixels(1)); // 1dp stroke width. paint.setStrokeWidth(Dim.dp1); // 1dp stroke width.
} }
@Override @Override

View File

@@ -40,6 +40,7 @@ import java.util.concurrent.TimeoutException;
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.ui.Dim;
import app.revanced.extension.youtube.returnyoutubedislike.requests.RYDVoteData; import app.revanced.extension.youtube.returnyoutubedislike.requests.RYDVoteData;
import app.revanced.extension.youtube.returnyoutubedislike.requests.ReturnYouTubeDislikeApi; import app.revanced.extension.youtube.returnyoutubedislike.requests.ReturnYouTubeDislikeApi;
import app.revanced.extension.youtube.settings.Settings; import app.revanced.extension.youtube.settings.Settings;
@@ -124,12 +125,12 @@ public class ReturnYouTubeDislike {
static { static {
leftSeparatorBounds = new Rect(0, 0, leftSeparatorBounds = new Rect(0, 0,
Utils.dipToPixels(1.2f), Dim.dp(1.2f),
Utils.dipToPixels(14f)); Dim.dp(14f));
final int middleSeparatorSize = Utils.dipToPixels(3.7f); final int middleSeparatorSize = Dim.dp(3.7f);
middleSeparatorBounds = new Rect(0, 0, middleSeparatorSize, middleSeparatorSize); middleSeparatorBounds = new Rect(0, 0, middleSeparatorSize, middleSeparatorSize);
leftSeparatorShapePaddingPixels = Utils.dipToPixels(8.4f); leftSeparatorShapePaddingPixels = Dim.dp(8.4f);
leftSeparatorShape = new ShapeDrawable(new RectShape()); leftSeparatorShape = new ShapeDrawable(new RectShape());
leftSeparatorShape.setBounds(leftSeparatorBounds); leftSeparatorShape.setBounds(leftSeparatorBounds);

View File

@@ -3,6 +3,7 @@ package app.revanced.extension.youtube.settings;
import static java.lang.Boolean.FALSE; import static java.lang.Boolean.FALSE;
import static java.lang.Boolean.TRUE; import static java.lang.Boolean.TRUE;
import static app.revanced.extension.shared.settings.Setting.parent; import static app.revanced.extension.shared.settings.Setting.parent;
import static app.revanced.extension.shared.settings.Setting.parentNot;
import static app.revanced.extension.shared.settings.Setting.parentsAll; import static app.revanced.extension.shared.settings.Setting.parentsAll;
import static app.revanced.extension.shared.settings.Setting.parentsAny; import static app.revanced.extension.shared.settings.Setting.parentsAny;
import static app.revanced.extension.youtube.patches.ChangeFormFactorPatch.FormFactor; import static app.revanced.extension.youtube.patches.ChangeFormFactorPatch.FormFactor;
@@ -115,6 +116,7 @@ public class Settings extends BaseSettings {
public static final BooleanSetting HIDE_UPLOAD_TIME = new BooleanSetting("revanced_hide_upload_time", FALSE, "revanced_hide_upload_time_user_dialog_message"); public static final BooleanSetting HIDE_UPLOAD_TIME = new BooleanSetting("revanced_hide_upload_time", FALSE, "revanced_hide_upload_time_user_dialog_message");
public static final BooleanSetting HIDE_VIDEO_RECOMMENDATION_LABELS = new BooleanSetting("revanced_hide_video_recommendation_labels", TRUE); public static final BooleanSetting HIDE_VIDEO_RECOMMENDATION_LABELS = new BooleanSetting("revanced_hide_video_recommendation_labels", TRUE);
public static final BooleanSetting HIDE_VIEW_COUNT = new BooleanSetting("revanced_hide_view_count", FALSE, "revanced_hide_view_count_user_dialog_message"); public static final BooleanSetting HIDE_VIEW_COUNT = new BooleanSetting("revanced_hide_view_count", FALSE, "revanced_hide_view_count_user_dialog_message");
public static final BooleanSetting HIDE_VISUAL_SPACER = new BooleanSetting("revanced_hide_visual_spacer", TRUE);
// Alternative thumbnails // Alternative thumbnails
public static final EnumSetting<ThumbnailOption> ALT_THUMBNAIL_HOME = new EnumSetting<>("revanced_alt_thumbnail_home", ThumbnailOption.ORIGINAL); public static final EnumSetting<ThumbnailOption> ALT_THUMBNAIL_HOME = new EnumSetting<>("revanced_alt_thumbnail_home", ThumbnailOption.ORIGINAL);
@@ -136,11 +138,13 @@ public class Settings extends BaseSettings {
parentsAny(HIDE_KEYWORD_CONTENT_HOME, HIDE_KEYWORD_CONTENT_SUBSCRIPTIONS, HIDE_KEYWORD_CONTENT_SEARCH)); parentsAny(HIDE_KEYWORD_CONTENT_HOME, HIDE_KEYWORD_CONTENT_SUBSCRIPTIONS, HIDE_KEYWORD_CONTENT_SEARCH));
// Channel page // Channel page
public static final BooleanSetting HIDE_COMMUNITY_BUTTON = new BooleanSetting("revanced_hide_community_button", TRUE);
public static final BooleanSetting HIDE_FOR_YOU_SHELF = new BooleanSetting("revanced_hide_for_you_shelf", FALSE); public static final BooleanSetting HIDE_FOR_YOU_SHELF = new BooleanSetting("revanced_hide_for_you_shelf", FALSE);
public static final BooleanSetting HIDE_JOIN_BUTTON = new BooleanSetting("revanced_hide_join_button", FALSE);
public static final BooleanSetting HIDE_LINKS_PREVIEW = new BooleanSetting("revanced_hide_links_preview", TRUE); public static final BooleanSetting HIDE_LINKS_PREVIEW = new BooleanSetting("revanced_hide_links_preview", TRUE);
public static final BooleanSetting HIDE_MEMBERS_SHELF = new BooleanSetting("revanced_hide_members_shelf", TRUE); public static final BooleanSetting HIDE_MEMBERS_SHELF = new BooleanSetting("revanced_hide_members_shelf", TRUE);
public static final BooleanSetting HIDE_VISIT_COMMUNITY_BUTTON = new BooleanSetting("revanced_hide_visit_community_button", TRUE); public static final BooleanSetting HIDE_STORE_BUTTON = new BooleanSetting("revanced_hide_store_button", TRUE);
public static final BooleanSetting HIDE_VISIT_STORE_BUTTON = new BooleanSetting("revanced_hide_visit_store_button", TRUE); public static final BooleanSetting HIDE_SUBSCRIBE_BUTTON_IN_CHANNEL_PAGE = new BooleanSetting("revanced_hide_subscribe_button_in_channel_page", FALSE);
// Player // Player
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);
@@ -213,6 +217,9 @@ public class Settings extends BaseSettings {
public static final BooleanSetting HIDE_HOW_THIS_WAS_MADE_SECTION = new BooleanSetting("revanced_hide_how_this_was_made_section", FALSE); public static final BooleanSetting HIDE_HOW_THIS_WAS_MADE_SECTION = new BooleanSetting("revanced_hide_how_this_was_made_section", FALSE);
public static final BooleanSetting HIDE_HYPE_POINTS = new BooleanSetting("revanced_hide_hype_points", FALSE); public static final BooleanSetting HIDE_HYPE_POINTS = new BooleanSetting("revanced_hide_hype_points", FALSE);
public static final BooleanSetting HIDE_INFO_CARDS_SECTION = new BooleanSetting("revanced_hide_info_cards_section", TRUE); public static final BooleanSetting HIDE_INFO_CARDS_SECTION = new BooleanSetting("revanced_hide_info_cards_section", TRUE);
public static final BooleanSetting HIDE_FEATURED_LINKS_SECTION = new BooleanSetting("revanced_hide_featured_links_section", FALSE, parentNot(HIDE_INFO_CARDS_SECTION));
public static final BooleanSetting HIDE_FEATURED_VIDEOS_SECTION = new BooleanSetting("revanced_hide_featured_videos_section", FALSE, parentNot(HIDE_INFO_CARDS_SECTION));
public static final BooleanSetting HIDE_SUBSCRIBE_BUTTON = new BooleanSetting("revanced_hide_subscribe_button", FALSE, parentNot(HIDE_INFO_CARDS_SECTION));
public static final BooleanSetting HIDE_KEY_CONCEPTS_SECTION = new BooleanSetting("revanced_hide_key_concepts_section", FALSE); public static final BooleanSetting HIDE_KEY_CONCEPTS_SECTION = new BooleanSetting("revanced_hide_key_concepts_section", FALSE);
public static final BooleanSetting HIDE_PODCAST_SECTION = new BooleanSetting("revanced_hide_podcast_section", TRUE); 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);
@@ -226,11 +233,11 @@ public class Settings extends BaseSettings {
public static final BooleanSetting HIDE_HYPE_BUTTON = new BooleanSetting("revanced_hide_hype_button", FALSE); public static final BooleanSetting HIDE_HYPE_BUTTON = new BooleanSetting("revanced_hide_hype_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);
public static final BooleanSetting HIDE_PROMOTE_BUTTON = new BooleanSetting("revanced_hide_promote_button", FALSE); public static final BooleanSetting HIDE_PROMOTE_BUTTON = new BooleanSetting("revanced_hide_promote_button", FALSE);
public static final BooleanSetting HIDE_REMIX_BUTTON = new BooleanSetting("revanced_hide_remix_button", TRUE); public static final BooleanSetting HIDE_REMIX_BUTTON = new BooleanSetting("revanced_hide_remix_button", FALSE);
public static final BooleanSetting HIDE_REPORT_BUTTON = new BooleanSetting("revanced_hide_report_button", FALSE); public static final BooleanSetting HIDE_REPORT_BUTTON = new BooleanSetting("revanced_hide_report_button", FALSE);
public static final BooleanSetting HIDE_SAVE_BUTTON = new BooleanSetting("revanced_hide_save_button", FALSE); public static final BooleanSetting HIDE_SAVE_BUTTON = new BooleanSetting("revanced_hide_save_button", FALSE);
public static final BooleanSetting HIDE_SHARE_BUTTON = new BooleanSetting("revanced_hide_share_button", FALSE); public static final BooleanSetting HIDE_SHARE_BUTTON = new BooleanSetting("revanced_hide_share_button", FALSE);
public static final BooleanSetting HIDE_SHOP_BUTTON = new BooleanSetting("revanced_hide_shop_button", FALSE); public static final BooleanSetting HIDE_SHOP_BUTTON = new BooleanSetting("revanced_hide_shop_button", TRUE);
public static final BooleanSetting HIDE_STOP_ADS_BUTTON = new BooleanSetting("revanced_hide_stop_ads_button", TRUE); public static final BooleanSetting HIDE_STOP_ADS_BUTTON = new BooleanSetting("revanced_hide_stop_ads_button", TRUE);
public static final BooleanSetting HIDE_THANKS_BUTTON = new BooleanSetting("revanced_hide_thanks_button", TRUE); public static final BooleanSetting HIDE_THANKS_BUTTON = new BooleanSetting("revanced_hide_thanks_button", TRUE);
@@ -290,6 +297,7 @@ public class Settings extends BaseSettings {
public static final BooleanSetting DISABLE_RESUMING_SHORTS_PLAYER = new BooleanSetting("revanced_disable_resuming_shorts_player", FALSE); public static final BooleanSetting DISABLE_RESUMING_SHORTS_PLAYER = new BooleanSetting("revanced_disable_resuming_shorts_player", FALSE);
public static final BooleanSetting DISABLE_SHORTS_BACKGROUND_PLAYBACK = new BooleanSetting("revanced_shorts_disable_background_playback", FALSE); public static final BooleanSetting DISABLE_SHORTS_BACKGROUND_PLAYBACK = new BooleanSetting("revanced_shorts_disable_background_playback", FALSE);
public static final EnumSetting<ShortsPlayerType> SHORTS_PLAYER_TYPE = new EnumSetting<>("revanced_shorts_player_type", ShortsPlayerType.SHORTS_PLAYER); public static final EnumSetting<ShortsPlayerType> SHORTS_PLAYER_TYPE = new EnumSetting<>("revanced_shorts_player_type", ShortsPlayerType.SHORTS_PLAYER);
public static final BooleanSetting HIDE_SHORTS_AUTO_DUBBED_LABEL = new BooleanSetting("revanced_hide_shorts_auto_dubbed_label", FALSE);
public static final BooleanSetting HIDE_SHORTS_CHANNEL_BAR = new BooleanSetting("revanced_hide_shorts_channel_bar", FALSE); public static final BooleanSetting HIDE_SHORTS_CHANNEL_BAR = new BooleanSetting("revanced_hide_shorts_channel_bar", FALSE);
public static final BooleanSetting HIDE_SHORTS_COMMENTS_BUTTON = new BooleanSetting("revanced_hide_shorts_comments_button", FALSE); public static final BooleanSetting HIDE_SHORTS_COMMENTS_BUTTON = new BooleanSetting("revanced_hide_shorts_comments_button", FALSE);
public static final BooleanSetting HIDE_SHORTS_DISLIKE_BUTTON = new BooleanSetting("revanced_hide_shorts_dislike_button", FALSE); public static final BooleanSetting HIDE_SHORTS_DISLIKE_BUTTON = new BooleanSetting("revanced_hide_shorts_dislike_button", FALSE);
@@ -304,11 +312,12 @@ public class Settings extends BaseSettings {
public static final BooleanSetting HIDE_SHORTS_JOIN_BUTTON = new BooleanSetting("revanced_hide_shorts_join_button", TRUE); public static final BooleanSetting HIDE_SHORTS_JOIN_BUTTON = new BooleanSetting("revanced_hide_shorts_join_button", TRUE);
public static final BooleanSetting HIDE_SHORTS_LIKE_BUTTON = new BooleanSetting("revanced_hide_shorts_like_button", FALSE); public static final BooleanSetting HIDE_SHORTS_LIKE_BUTTON = new BooleanSetting("revanced_hide_shorts_like_button", FALSE);
public static final BooleanSetting HIDE_SHORTS_LIKE_FOUNTAIN = new BooleanSetting("revanced_hide_shorts_like_fountain", TRUE); public static final BooleanSetting HIDE_SHORTS_LIKE_FOUNTAIN = new BooleanSetting("revanced_hide_shorts_like_fountain", TRUE);
public static final BooleanSetting HIDE_SHORTS_LIVE_PREVIEW = new BooleanSetting("revanced_hide_shorts_live_preview", FALSE);
public static final BooleanSetting HIDE_SHORTS_LOCATION_LABEL = new BooleanSetting("revanced_hide_shorts_location_label", FALSE); public static final BooleanSetting HIDE_SHORTS_LOCATION_LABEL = new BooleanSetting("revanced_hide_shorts_location_label", FALSE);
public static final BooleanSetting HIDE_SHORTS_NAVIGATION_BAR = new BooleanSetting("revanced_hide_shorts_navigation_bar", FALSE, true); public static final BooleanSetting HIDE_SHORTS_NAVIGATION_BAR = new BooleanSetting("revanced_hide_shorts_navigation_bar", FALSE, true);
public static final BooleanSetting HIDE_SHORTS_PAUSED_OVERLAY_BUTTONS = new BooleanSetting("revanced_hide_shorts_paused_overlay_buttons", FALSE); public static final BooleanSetting HIDE_SHORTS_PAUSED_OVERLAY_BUTTONS = new BooleanSetting("revanced_hide_shorts_paused_overlay_buttons", FALSE);
public static final BooleanSetting HIDE_SHORTS_PREVIEW_COMMENT = new BooleanSetting("revanced_hide_shorts_preview_comment", TRUE); public static final BooleanSetting HIDE_SHORTS_PREVIEW_COMMENT = new BooleanSetting("revanced_hide_shorts_preview_comment", TRUE);
public static final BooleanSetting HIDE_SHORTS_REMIX_BUTTON = new BooleanSetting("revanced_hide_shorts_remix_button", TRUE); public static final BooleanSetting HIDE_SHORTS_REMIX_BUTTON = new BooleanSetting("revanced_hide_shorts_remix_button", FALSE);
public static final BooleanSetting HIDE_SHORTS_SAVE_SOUND_BUTTON = new BooleanSetting("revanced_hide_shorts_save_sound_button", TRUE); public static final BooleanSetting HIDE_SHORTS_SAVE_SOUND_BUTTON = new BooleanSetting("revanced_hide_shorts_save_sound_button", TRUE);
public static final BooleanSetting HIDE_SHORTS_SEARCH = new BooleanSetting("revanced_hide_shorts_search", FALSE); public static final BooleanSetting HIDE_SHORTS_SEARCH = new BooleanSetting("revanced_hide_shorts_search", FALSE);
public static final BooleanSetting HIDE_SHORTS_SEARCH_SUGGESTIONS = new BooleanSetting("revanced_hide_shorts_search_suggestions", TRUE); public static final BooleanSetting HIDE_SHORTS_SEARCH_SUGGESTIONS = new BooleanSetting("revanced_hide_shorts_search_suggestions", TRUE);

View File

@@ -2,7 +2,6 @@ package app.revanced.extension.youtube.settings.preference;
import static app.revanced.extension.shared.StringRef.sf; import static app.revanced.extension.shared.StringRef.sf;
import static app.revanced.extension.shared.StringRef.str; import static app.revanced.extension.shared.StringRef.str;
import static app.revanced.extension.shared.Utils.dipToPixels;
import android.app.Dialog; import android.app.Dialog;
import android.content.Context; import android.content.Context;
@@ -15,13 +14,9 @@ import android.os.Bundle;
import android.text.Editable; import android.text.Editable;
import android.text.TextWatcher; import android.text.TextWatcher;
import android.util.AttributeSet; import android.util.AttributeSet;
import android.util.DisplayMetrics;
import android.util.Pair; import android.util.Pair;
import android.util.TypedValue;
import android.view.View;
import android.widget.EditText; import android.widget.EditText;
import android.widget.LinearLayout; import android.widget.LinearLayout;
import android.widget.ListAdapter;
import android.widget.ListView; import android.widget.ListView;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
@@ -37,6 +32,7 @@ import app.revanced.extension.shared.Logger;
import app.revanced.extension.shared.Utils; import app.revanced.extension.shared.Utils;
import app.revanced.extension.shared.settings.preference.CustomDialogListPreference; import app.revanced.extension.shared.settings.preference.CustomDialogListPreference;
import app.revanced.extension.shared.ui.CustomDialog; import app.revanced.extension.shared.ui.CustomDialog;
import app.revanced.extension.shared.ui.Dim;
import app.revanced.extension.youtube.settings.Settings; import app.revanced.extension.youtube.settings.Settings;
/** /**
@@ -264,42 +260,12 @@ public class ExternalDownloaderPreference extends CustomDialogListPreference {
// Add ListView to content layout with initial height. // Add ListView to content layout with initial height.
LinearLayout.LayoutParams listViewParams = new LinearLayout.LayoutParams( LinearLayout.LayoutParams listViewParams = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT, 0, 1.0f);
0 // Initial height, will be updated. listViewParams.bottomMargin = Dim.dp16;
);
listViewParams.bottomMargin = dipToPixels(16);
contentLayout.addView(listView, listViewParams); contentLayout.addView(listView, listViewParams);
// Add EditText for custom package name. // Add EditText for custom package name.
editText = new EditText(context); editText = createEditText(context, packageName, usingCustomDownloader, updateListViewSelection);
editText.setText(packageName);
editText.setSelection(packageName.length());
editText.setHint(str("revanced_external_downloader_other_item_hint"));
editText.setSingleLine(true); // Restrict EditText to a single line.
editText.setTextSize(TypedValue.COMPLEX_UNIT_SP, 16);
// Set initial EditText state based on selected downloader.
editText.setEnabled(usingCustomDownloader);
editText.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {}
@Override
public void afterTextChanged(Editable edit) {
String updatedPackageName = edit.toString().trim();
updateListViewSelection.apply(updatedPackageName);
}
});
ShapeDrawable editTextBackground = new ShapeDrawable(new RoundRectShape(
Utils.createCornerRadii(10), null, null));
editTextBackground.getPaint().setColor(Utils.getEditTextBackground());
final int dip8 = dipToPixels(8);
editText.setPadding(dip8, dip8, dip8, dip8);
editText.setBackground(editTextBackground);
editText.setClipToOutline(true);
contentLayout.addView(editText); contentLayout.addView(editText);
// Create the custom dialog. // Create the custom dialog.
@@ -350,50 +316,59 @@ public class ExternalDownloaderPreference extends CustomDialogListPreference {
); );
// Add the content layout directly to the dialog's main layout. // Add the content layout directly to the dialog's main layout.
LinearLayout dialogMainLayout = dialogPair.second; LinearLayout mainLayout = dialogPair.second;
dialogMainLayout.addView(contentLayout, dialogMainLayout.getChildCount() - 1); LinearLayout.LayoutParams contentParams = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT, 0, 1.0f);
// Update ListView height dynamically based on orientation. // Insert content before the dialog button row.
//noinspection ExtractMethodRecommender mainLayout.addView(contentLayout, mainLayout.getChildCount() - 1, contentParams);
Runnable updateListViewHeight = () -> {
int totalHeight = 0; Dialog dialog = dialogPair.first;
ListAdapter listAdapter = listView.getAdapter(); dialog.show();
if (listAdapter != null) { }
DisplayMetrics metrics = context.getResources().getDisplayMetrics();
final int listAdapterCount = listAdapter.getCount(); /**
for (int i = 0; i < listAdapterCount; i++) { * Creates and configures the EditText for the custom package name.
View item = listAdapter.getView(i, null, listView); *
item.measure( * @param context Context for creating views.
View.MeasureSpec.makeMeasureSpec(metrics.widthPixels, View.MeasureSpec.AT_MOST), * @param initialPackageName The package name to pre-fill.
View.MeasureSpec.UNSPECIFIED * @param isCustom Whether the "Other" option is selected.
); * @param textChangeCallback Callback to run when text changes.
totalHeight += item.getMeasuredHeight(); * @return A configured EditText.
} */
totalHeight += listView.getDividerHeight() * (listAdapterCount - 1); private EditText createEditText(Context context,
String initialPackageName, boolean isCustom,
Function<String, Void> textChangeCallback) {
EditText editText = new EditText(context);
editText.setText(initialPackageName);
editText.setSelection(initialPackageName.length());
editText.setHint(str("revanced_external_downloader_other_item_hint"));
editText.setSingleLine(true);
editText.setTextSize(16);
editText.setEnabled(isCustom);
editText.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {}
@Override
public void afterTextChanged(Editable edit) {
String updatedPackageName = edit.toString().trim();
textChangeCallback.apply(updatedPackageName);
} }
});
final int orientation = context.getResources().getConfiguration().orientation; ShapeDrawable editTextBackground = new ShapeDrawable(new RoundRectShape(
if (orientation == android.content.res.Configuration.ORIENTATION_PORTRAIT) { Dim.roundedCorners(10), null, null));
// In portrait orientation, use WRAP_CONTENT for ListView height. editTextBackground.getPaint().setColor(Utils.getEditTextBackground());
listViewParams.height = LinearLayout.LayoutParams.WRAP_CONTENT; editText.setPadding(Dim.dp8, Dim.dp8, Dim.dp8, Dim.dp8);
} else { editText.setBackground(editTextBackground);
// In landscape orientation, limit ListView height to 30% of screen height. editText.setClipToOutline(true);
final int maxHeight = Utils.percentageHeightToPixels(30);
listViewParams.height = Math.min(totalHeight, maxHeight);
}
listView.setLayoutParams(listViewParams);
};
// Initial height calculation. return editText;
updateListViewHeight.run();
// Listen for configuration changes (e.g., orientation).
View dialogView = dialogPair.second;
// Recalculate height when layout changes (e.g., orientation change).
dialogView.getViewTreeObserver().addOnGlobalLayoutListener(updateListViewHeight::run);
// Show the dialog.
dialogPair.first.show();
} }
/** /**

View File

@@ -1,7 +1,6 @@
package app.revanced.extension.youtube.sponsorblock; package app.revanced.extension.youtube.sponsorblock;
import static app.revanced.extension.shared.StringRef.str; import static app.revanced.extension.shared.StringRef.str;
import static app.revanced.extension.shared.Utils.dipToPixels;
import static app.revanced.extension.youtube.sponsorblock.objects.CategoryBehaviour.SKIP_AUTOMATICALLY; import static app.revanced.extension.youtube.sponsorblock.objects.CategoryBehaviour.SKIP_AUTOMATICALLY;
import android.annotation.SuppressLint; import android.annotation.SuppressLint;
@@ -34,6 +33,7 @@ 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.ui.Dim;
import app.revanced.extension.youtube.patches.VideoInformation; import app.revanced.extension.youtube.patches.VideoInformation;
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;
@@ -82,7 +82,7 @@ public class SegmentPlaybackController {
* Highlight segments have zero length as they are a point in time. * Highlight segments have zero length as they are a point in time.
* Draw them on screen using a fixed width bar. * Draw them on screen using a fixed width bar.
*/ */
private static final int HIGHLIGHT_SEGMENT_DRAW_BAR_WIDTH = dipToPixels(7); private static final int HIGHLIGHT_SEGMENT_DRAW_BAR_WIDTH = Dim.dp7;
@Nullable @Nullable
private static String currentVideoId; private static String currentVideoId;
@@ -808,14 +808,12 @@ public class SegmentPlaybackController {
LinearLayout mainLayout = new LinearLayout(currentContext); LinearLayout mainLayout = new LinearLayout(currentContext);
mainLayout.setOrientation(LinearLayout.VERTICAL); mainLayout.setOrientation(LinearLayout.VERTICAL);
final int dip8 = dipToPixels(8); mainLayout.setPadding(Dim.dp16, Dim.dp8, Dim.dp16, Dim.dp8);
final int dip16 = dipToPixels(16);
mainLayout.setPadding(dip16, dip8, dip16, dip8);
mainLayout.setGravity(Gravity.CENTER); mainLayout.setGravity(Gravity.CENTER);
mainLayout.setMinimumHeight(dipToPixels(48)); mainLayout.setMinimumHeight(Dim.dp48);
ShapeDrawable background = new ShapeDrawable(new RoundRectShape( ShapeDrawable background = new ShapeDrawable(new RoundRectShape(
Utils.createCornerRadii(20), null, null)); Dim.roundedCorners(20), null, null));
background.getPaint().setColor(Utils.getDialogBackgroundColor()); background.getPaint().setColor(Utils.getDialogBackgroundColor());
mainLayout.setBackground(background); mainLayout.setBackground(background);

View File

@@ -1,7 +1,6 @@
package app.revanced.extension.youtube.sponsorblock.objects; package app.revanced.extension.youtube.sponsorblock.objects;
import static app.revanced.extension.shared.StringRef.str; import static app.revanced.extension.shared.StringRef.str;
import static app.revanced.extension.shared.Utils.dipToPixels;
import static app.revanced.extension.youtube.sponsorblock.SponsorBlockSettings.migrateOldColorString; import static app.revanced.extension.youtube.sponsorblock.SponsorBlockSettings.migrateOldColorString;
import android.content.Context; import android.content.Context;
@@ -17,6 +16,7 @@ import app.revanced.extension.shared.Logger;
import app.revanced.extension.shared.Utils; import app.revanced.extension.shared.Utils;
import app.revanced.extension.shared.settings.preference.ColorPickerPreference; import app.revanced.extension.shared.settings.preference.ColorPickerPreference;
import app.revanced.extension.shared.ui.ColorDot; import app.revanced.extension.shared.ui.ColorDot;
import app.revanced.extension.shared.ui.Dim;
@SuppressWarnings("deprecation") @SuppressWarnings("deprecation")
public class SegmentCategoryPreference extends ColorPickerPreference { public class SegmentCategoryPreference extends ColorPickerPreference {
@@ -110,7 +110,7 @@ public class SegmentCategoryPreference extends ColorPickerPreference {
} }
radioGroup.setOnCheckedChangeListener((group, checkedId) -> selectedDialogEntryIndex = checkedId); radioGroup.setOnCheckedChangeListener((group, checkedId) -> selectedDialogEntryIndex = checkedId);
radioGroup.setPadding(dipToPixels(10), 0, dipToPixels(10), dipToPixels(10)); radioGroup.setPadding(Dim.dp10, 0, Dim.dp10, Dim.dp10);
return radioGroup; return radioGroup;
} }

View File

@@ -15,6 +15,7 @@ import android.widget.FrameLayout;
import android.widget.ImageButton; import android.widget.ImageButton;
import app.revanced.extension.shared.Logger; import app.revanced.extension.shared.Logger;
import app.revanced.extension.shared.ui.Dim;
import app.revanced.extension.youtube.patches.VideoInformation; import app.revanced.extension.youtube.patches.VideoInformation;
import app.revanced.extension.youtube.settings.Settings; import app.revanced.extension.youtube.settings.Settings;
import app.revanced.extension.youtube.sponsorblock.SponsorBlockUtils; import app.revanced.extension.youtube.sponsorblock.SponsorBlockUtils;
@@ -132,9 +133,7 @@ public final class NewSegmentLayout extends FrameLayout {
GradientDrawable backgroundDrawable = new GradientDrawable(); GradientDrawable backgroundDrawable = new GradientDrawable();
backgroundDrawable.setColor(getResourceColor("skip_ad_button_background_color")); backgroundDrawable.setColor(getResourceColor("skip_ad_button_background_color"));
final float cornerRadius = squareLayout final float cornerRadius = squareLayout ? 0f : Dim.dp16;
? 0
: 16 * getResources().getDisplayMetrics().density;
backgroundDrawable.setCornerRadius(cornerRadius); backgroundDrawable.setCornerRadius(cornerRadius);
setBackground(backgroundDrawable); setBackground(backgroundDrawable);
} }

View File

@@ -18,7 +18,6 @@ import android.preference.SwitchPreference;
import android.text.InputType; import android.text.InputType;
import android.util.AttributeSet; import android.util.AttributeSet;
import android.util.Pair; import android.util.Pair;
import android.util.TypedValue;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.widget.EditText; import android.widget.EditText;
@@ -34,6 +33,7 @@ import app.revanced.extension.shared.settings.Setting;
import app.revanced.extension.shared.settings.preference.CustomDialogListPreference; import app.revanced.extension.shared.settings.preference.CustomDialogListPreference;
import app.revanced.extension.shared.settings.preference.ResettableEditTextPreference; import app.revanced.extension.shared.settings.preference.ResettableEditTextPreference;
import app.revanced.extension.shared.ui.CustomDialog; import app.revanced.extension.shared.ui.CustomDialog;
import app.revanced.extension.shared.ui.Dim;
import app.revanced.extension.youtube.settings.Settings; import app.revanced.extension.youtube.settings.Settings;
import app.revanced.extension.youtube.sponsorblock.SegmentPlaybackController; import app.revanced.extension.youtube.sponsorblock.SegmentPlaybackController;
import app.revanced.extension.youtube.sponsorblock.SponsorBlockSettings; import app.revanced.extension.youtube.sponsorblock.SponsorBlockSettings;
@@ -507,7 +507,7 @@ public class SponsorBlockPreferenceGroup extends PreferenceGroup {
EditText editText = getEditText(); EditText editText = getEditText();
editText.setInputType(editText.getInputType() | InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS); editText.setInputType(editText.getInputType() | InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS);
editText.setTextSize(TypedValue.COMPLEX_UNIT_PT, 7); // Use a smaller font to reduce text wrap. editText.setTextSize(14);
// Create a custom dialog. // Create a custom dialog.
Pair<Dialog, LinearLayout> dialogPair = CustomDialog.create( Pair<Dialog, LinearLayout> dialogPair = CustomDialog.create(
@@ -550,7 +550,7 @@ public class SponsorBlockPreferenceGroup extends PreferenceGroup {
| InputType.TYPE_TEXT_FLAG_MULTI_LINE | InputType.TYPE_TEXT_FLAG_MULTI_LINE
| InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS); | InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS);
editText.setAutofillHints((String) null); editText.setAutofillHints((String) null);
editText.setTextSize(TypedValue.COMPLEX_UNIT_PT, 8); editText.setTextSize(14);
// Set preference listeners. // Set preference listeners.
importExport.setOnPreferenceClickListener(preference1 -> { importExport.setOnPreferenceClickListener(preference1 -> {

View File

@@ -1,7 +1,6 @@
package app.revanced.extension.youtube.videoplayer; package app.revanced.extension.youtube.videoplayer;
import static app.revanced.extension.shared.StringRef.str; import static app.revanced.extension.shared.StringRef.str;
import static app.revanced.extension.shared.Utils.dipToPixels;
import static app.revanced.extension.shared.settings.preference.CustomDialogListPreference.*; import static app.revanced.extension.shared.settings.preference.CustomDialogListPreference.*;
import static app.revanced.extension.youtube.patches.VideoInformation.AUTOMATIC_VIDEO_QUALITY_VALUE; import static app.revanced.extension.youtube.patches.VideoInformation.AUTOMATIC_VIDEO_QUALITY_VALUE;
import static app.revanced.extension.youtube.patches.VideoInformation.VIDEO_QUALITY_PREMIUM_NAME; import static app.revanced.extension.youtube.patches.VideoInformation.VIDEO_QUALITY_PREMIUM_NAME;
@@ -21,6 +20,7 @@ import android.widget.*;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import app.revanced.extension.shared.ui.Dim;
import app.revanced.extension.shared.ui.SheetBottomDialog; import app.revanced.extension.shared.ui.SheetBottomDialog;
import app.revanced.extension.youtube.shared.PlayerType; import app.revanced.extension.youtube.shared.PlayerType;
import com.google.android.libraries.youtube.innertube.model.media.VideoQuality; import com.google.android.libraries.youtube.innertube.model.media.VideoQuality;
@@ -214,11 +214,6 @@ public class VideoQualityDialogButton {
} }
} }
// Preset size constants.
final int dip8 = dipToPixels(8);
final int dip12 = dipToPixels(12);
final int dip16 = dipToPixels(16);
// Create main layout. // Create main layout.
SheetBottomDialog.DraggableLinearLayout mainLayout = SheetBottomDialog.DraggableLinearLayout mainLayout =
SheetBottomDialog.createMainLayout(context, getDialogBackgroundColor()); SheetBottomDialog.createMainLayout(context, getDialogBackgroundColor());
@@ -269,7 +264,7 @@ public class VideoQualityDialogButton {
LinearLayout.LayoutParams titleParams = new LinearLayout.LayoutParams( LinearLayout.LayoutParams titleParams = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT,
LinearLayout.LayoutParams.WRAP_CONTENT); LinearLayout.LayoutParams.WRAP_CONTENT);
titleParams.setMargins(dip12, dip16, 0, dip16); titleParams.setMargins(Dim.dp12, Dim.dp16, 0, Dim.dp16);
titleView.setLayoutParams(titleParams); titleView.setLayoutParams(titleParams);
mainLayout.addView(titleView); mainLayout.addView(titleView);

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.46.0-dev.5 version = 5.47.0-dev.18

View File

@@ -1,3 +1,7 @@
public final class DisableReelsScrollingPatchKt {
public static final fun getDisableReelsScrollingPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
}
public final class app/revanced/patches/all/misc/activity/exportall/ExportAllActivitiesPatchKt { public final class app/revanced/patches/all/misc/activity/exportall/ExportAllActivitiesPatchKt {
public static final fun getExportAllActivitiesPatch ()Lapp/revanced/patcher/patch/ResourcePatch; public static final fun getExportAllActivitiesPatch ()Lapp/revanced/patcher/patch/ResourcePatch;
} }
@@ -56,6 +60,10 @@ public final class app/revanced/patches/all/misc/connectivity/telephony/sim/spoo
public static final fun getSpoofSimCountryPatch ()Lapp/revanced/patcher/patch/BytecodePatch; public static final fun getSpoofSimCountryPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
} }
public final class app/revanced/patches/all/misc/connectivity/telephony/sim/spoof/SpoofSimProviderPatchKt {
public static final fun getSpoofSimProviderPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
}
public final class app/revanced/patches/all/misc/connectivity/wifi/spoof/SpoofWifiPatchKt { public final class app/revanced/patches/all/misc/connectivity/wifi/spoof/SpoofWifiPatchKt {
public static final fun getSpoofWifiPatch ()Lapp/revanced/patcher/patch/BytecodePatch; public static final fun getSpoofWifiPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
} }
@@ -180,6 +188,10 @@ public final class app/revanced/patches/crunchyroll/ads/HideAdsPatchKt {
public static final fun getHideAdsPatch ()Lapp/revanced/patcher/patch/BytecodePatch; public static final fun getHideAdsPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
} }
public final class app/revanced/patches/disneyplus/ads/SkipAdsPatchKt {
public static final fun getSkipAdsPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
}
public final class app/revanced/patches/duolingo/ad/DisableAdsPatchKt { public final class app/revanced/patches/duolingo/ad/DisableAdsPatchKt {
public static final fun getDisableAdsPatch ()Lapp/revanced/patcher/patch/BytecodePatch; public static final fun getDisableAdsPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
} }
@@ -256,6 +268,10 @@ public final class app/revanced/patches/iconpackstudio/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/idaustria/detection/deviceintegrity/RemoveDeviceIntegrityChecksPatchKt {
public static final fun getRemoveDeviceIntegrityChecksPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
}
public final class app/revanced/patches/idaustria/detection/root/RootDetectionPatchKt { public final class app/revanced/patches/idaustria/detection/root/RootDetectionPatchKt {
public static final fun getRootDetectionPatch ()Lapp/revanced/patcher/patch/BytecodePatch; public static final fun getRootDetectionPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
} }
@@ -276,6 +292,10 @@ public final class app/revanced/patches/instagram/feed/LimitFeedToFollowedProfil
public static final fun getLimitFeedToFollowedProfiles ()Lapp/revanced/patcher/patch/BytecodePatch; public static final fun getLimitFeedToFollowedProfiles ()Lapp/revanced/patcher/patch/BytecodePatch;
} }
public final class app/revanced/patches/instagram/ghost/story/AnonymousStoryViewingPatchKt {
public static final fun getAnonymousStoryViewingPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
}
public final class app/revanced/patches/instagram/hide/explore/HideExploreFeedKt { public final class app/revanced/patches/instagram/hide/explore/HideExploreFeedKt {
public static final fun getHideExploreFeedPatch ()Lapp/revanced/patcher/patch/BytecodePatch; public static final fun getHideExploreFeedPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
} }
@@ -316,10 +336,18 @@ public final class app/revanced/patches/instagram/misc/signature/SignatureCheckP
public static final fun getSignatureCheckPatch ()Lapp/revanced/patcher/patch/BytecodePatch; public static final fun getSignatureCheckPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
} }
public final class app/revanced/patches/instagram/story/flipping/DisableStoryAutoFlippingPatchKt {
public static final fun getDisableStoryAutoFlippingPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
}
public final class app/revanced/patches/irplus/ad/RemoveAdsPatchKt { public final class app/revanced/patches/irplus/ad/RemoveAdsPatchKt {
public static final fun getRemoveAdsPatch ()Lapp/revanced/patcher/patch/BytecodePatch; public static final fun getRemoveAdsPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
} }
public final class app/revanced/patches/letterboxd/ads/HideAdsPatchKt {
public static final fun getHideAdsPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
}
public final class app/revanced/patches/lightroom/misc/login/DisableMandatoryLoginPatchKt { public final class app/revanced/patches/lightroom/misc/login/DisableMandatoryLoginPatchKt {
public static final fun getDisableMandatoryLoginPatch ()Lapp/revanced/patcher/patch/BytecodePatch; public static final fun getDisableMandatoryLoginPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
} }
@@ -328,6 +356,10 @@ public final class app/revanced/patches/lightroom/misc/premium/UnlockPremiumPatc
public static final fun getUnlockPremiumPatch ()Lapp/revanced/patcher/patch/BytecodePatch; public static final fun getUnlockPremiumPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
} }
public final class app/revanced/patches/lightroom/misc/version/DisableVersionCheckPatchKt {
public static final fun getDisableVersionCheckPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
}
public final class app/revanced/patches/memegenerator/detection/license/LicenseValidationPatchKt { public final class app/revanced/patches/memegenerator/detection/license/LicenseValidationPatchKt {
public static final fun getLicenseValidationPatch ()Lapp/revanced/patcher/patch/BytecodePatch; public static final fun getLicenseValidationPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
} }
@@ -404,6 +436,10 @@ public final class app/revanced/patches/music/layout/branding/CustomBrandingPatc
public static final fun getCustomBrandingPatch ()Lapp/revanced/patcher/patch/ResourcePatch; public static final fun getCustomBrandingPatch ()Lapp/revanced/patcher/patch/ResourcePatch;
} }
public final class app/revanced/patches/music/layout/buttons/HideButtonsKt {
public static final fun getHideButtons ()Lapp/revanced/patcher/patch/BytecodePatch;
}
public final class app/revanced/patches/music/layout/castbutton/HideCastButtonKt { public final class app/revanced/patches/music/layout/castbutton/HideCastButtonKt {
public static final fun getHideCastButton ()Lapp/revanced/patcher/patch/BytecodePatch; public static final fun getHideCastButton ()Lapp/revanced/patcher/patch/BytecodePatch;
} }
@@ -412,6 +448,10 @@ public final class app/revanced/patches/music/layout/compactheader/HideCategoryB
public static final fun getHideCategoryBar ()Lapp/revanced/patcher/patch/BytecodePatch; public static final fun getHideCategoryBar ()Lapp/revanced/patcher/patch/BytecodePatch;
} }
public final class app/revanced/patches/music/layout/miniplayercolor/ChangeMiniplayerColorKt {
public static final fun getChangeMiniplayerColor ()Lapp/revanced/patcher/patch/BytecodePatch;
}
public final class app/revanced/patches/music/layout/navigationbar/NavigationBarPatchKt { public final class app/revanced/patches/music/layout/navigationbar/NavigationBarPatchKt {
public static final fun getNavigationBarPatch ()Lapp/revanced/patcher/patch/BytecodePatch; public static final fun getNavigationBarPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
} }
@@ -541,6 +581,10 @@ public final class app/revanced/patches/pandora/misc/EnableUnlimitedSkipsPatchKt
public static final fun getEnableUnlimitedSkipsPatch ()Lapp/revanced/patcher/patch/BytecodePatch; public static final fun getEnableUnlimitedSkipsPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
} }
public final class app/revanced/patches/peacocktv/ads/HideAdsPatchKt {
public static final fun getHideAdsPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
}
public final class app/revanced/patches/photomath/detection/deviceid/SpoofDeviceIdPatchKt { public final class app/revanced/patches/photomath/detection/deviceid/SpoofDeviceIdPatchKt {
public static final fun getGetDeviceIdPatch ()Lapp/revanced/patcher/patch/BytecodePatch; public static final fun getGetDeviceIdPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
} }
@@ -597,6 +641,10 @@ public final class app/revanced/patches/protonmail/signature/RemoveSentFromSigna
public static final fun getRemoveSentFromSignaturePatch ()Lapp/revanced/patcher/patch/ResourcePatch; public static final fun getRemoveSentFromSignaturePatch ()Lapp/revanced/patcher/patch/ResourcePatch;
} }
public final class app/revanced/patches/protonvpn/delay/RemoveDelayPatchKt {
public static final fun getRemoveDelayPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
}
public final class app/revanced/patches/rar/misc/annoyances/purchasereminder/HidePurchaseReminderPatchKt { public final class app/revanced/patches/rar/misc/annoyances/purchasereminder/HidePurchaseReminderPatchKt {
public static final fun getHidePurchaseReminderPatch ()Lapp/revanced/patcher/patch/BytecodePatch; public static final fun getHidePurchaseReminderPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
} }

View File

@@ -1,105 +1,9 @@
package app.revanced.patches.all.misc.connectivity.telephony.sim.spoof package app.revanced.patches.all.misc.connectivity.telephony.sim.spoof
import app.revanced.patcher.extensions.InstructionExtensions.getInstruction
import app.revanced.patcher.extensions.InstructionExtensions.replaceInstruction
import app.revanced.patcher.patch.bytecodePatch import app.revanced.patcher.patch.bytecodePatch
import app.revanced.patcher.patch.stringOption
import app.revanced.patcher.util.proxy.mutableTypes.MutableMethod
import app.revanced.patches.all.misc.transformation.transformInstructionsPatch
import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
import com.android.tools.smali.dexlib2.iface.instruction.ReferenceInstruction
import com.android.tools.smali.dexlib2.iface.reference.MethodReference
import com.android.tools.smali.dexlib2.immutable.reference.ImmutableMethodReference
import com.android.tools.smali.dexlib2.util.MethodUtil
import java.util.*
@Deprecated("Patch was renamed", ReplaceWith("spoofSimProviderPatch"))
@Suppress("unused") @Suppress("unused")
val spoofSimCountryPatch = bytecodePatch( val spoofSimCountryPatch = bytecodePatch {
name = "Spoof SIM country", dependsOn(spoofSimProviderPatch)
description = "Spoofs country information returned by the SIM card provider.", }
use = false,
) {
val countries = Locale.getISOCountries().associateBy { Locale("", it).displayCountry }
fun isoCountryPatchOption(
key: String,
title: String,
) = stringOption(
key,
null,
countries,
title,
"ISO-3166-1 alpha-2 country code equivalent for the SIM provider's country code.",
false,
validator = { it: String? -> it == null || it.uppercase() in countries.values },
)
val networkCountryIso by isoCountryPatchOption(
"networkCountryIso",
"Network ISO country code",
)
val simCountryIso by isoCountryPatchOption(
"simCountryIso",
"SIM ISO country code",
)
dependsOn(
transformInstructionsPatch(
filterMap = { _, _, instruction, instructionIndex ->
if (instruction !is ReferenceInstruction) return@transformInstructionsPatch null
val reference = instruction.reference as? MethodReference ?: return@transformInstructionsPatch null
val match = MethodCall.entries.firstOrNull { search ->
MethodUtil.methodSignaturesMatch(reference, search.reference)
} ?: return@transformInstructionsPatch null
val iso = when (match) {
MethodCall.NetworkCountryIso -> networkCountryIso
MethodCall.SimCountryIso -> simCountryIso
}?.lowercase()
iso?.let { instructionIndex to it }
},
transform = { mutableMethod, entry: Pair<Int, String> ->
transformMethodCall(entry, mutableMethod)
},
),
)
}
private fun transformMethodCall(
entry: Pair<Int, String>,
mutableMethod: MutableMethod,
) {
val (instructionIndex, methodCallValue) = entry
val register = mutableMethod.getInstruction<OneRegisterInstruction>(instructionIndex + 1).registerA
mutableMethod.replaceInstruction(
instructionIndex + 1,
"const-string v$register, \"$methodCallValue\"",
)
}
private enum class MethodCall(
val reference: MethodReference,
) {
NetworkCountryIso(
ImmutableMethodReference(
"Landroid/telephony/TelephonyManager;",
"getNetworkCountryIso",
emptyList(),
"Ljava/lang/String;",
),
),
SimCountryIso(
ImmutableMethodReference(
"Landroid/telephony/TelephonyManager;",
"getSimCountryIso",
emptyList(),
"Ljava/lang/String;",
),
),
}

View File

@@ -0,0 +1,169 @@
package app.revanced.patches.all.misc.connectivity.telephony.sim.spoof
import app.revanced.patcher.extensions.InstructionExtensions.getInstruction
import app.revanced.patcher.extensions.InstructionExtensions.replaceInstruction
import app.revanced.patcher.patch.bytecodePatch
import app.revanced.patcher.patch.intOption
import app.revanced.patcher.patch.stringOption
import app.revanced.patcher.util.proxy.mutableTypes.MutableMethod
import app.revanced.patches.all.misc.transformation.transformInstructionsPatch
import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
import com.android.tools.smali.dexlib2.iface.instruction.ReferenceInstruction
import com.android.tools.smali.dexlib2.iface.reference.MethodReference
import com.android.tools.smali.dexlib2.immutable.reference.ImmutableMethodReference
import com.android.tools.smali.dexlib2.util.MethodUtil
import java.util.Locale
@Suppress("unused")
val spoofSimProviderPatch = bytecodePatch(
name = "Spoof SIM provider",
description = "Spoofs information about the SIM card provider.",
use = false,
) {
val countries = Locale.getISOCountries().associateBy { Locale("", it).displayCountry }
fun isoCountryPatchOption(
key: String,
title: String,
) = stringOption(
key,
null,
countries,
title,
"ISO-3166-1 alpha-2 country code equivalent for the SIM provider's country code.",
false,
validator = { it: String? -> it == null || it.uppercase() in countries.values },
)
fun isMccMncValid(it: Int?): Boolean = it == null || (it >= 10000 && it <= 999999)
val networkCountryIso by isoCountryPatchOption(
"networkCountryIso",
"Network ISO country code",
)
val networkOperator by intOption(
key = "networkOperator",
title = "MCC+MNC network operator code",
description = "The 5 or 6 digits MCC+MNC (Mobile Country Code + Mobile Network Code) of the network operator.",
validator = { isMccMncValid(it) }
)
val networkOperatorName by stringOption(
key = "networkOperatorName",
title = "Network operator name",
description = "The full name of the network operator.",
)
val simCountryIso by isoCountryPatchOption(
"simCountryIso",
"SIM ISO country code",
)
val simOperator by intOption(
key = "simOperator",
title = "MCC+MNC SIM operator code",
description = "The 5 or 6 digits MCC+MNC (Mobile Country Code + Mobile Network Code) of the SIM operator.",
validator = { isMccMncValid(it) }
)
val simOperatorName by stringOption(
key = "simOperatorName",
title = "SIM operator name",
description = "The full name of the SIM operator.",
)
dependsOn(
transformInstructionsPatch(
filterMap = { _, _, instruction, instructionIndex ->
if (instruction !is ReferenceInstruction) return@transformInstructionsPatch null
val reference = instruction.reference as? MethodReference ?: return@transformInstructionsPatch null
val match = MethodCall.entries.firstOrNull { search ->
MethodUtil.methodSignaturesMatch(reference, search.reference)
} ?: return@transformInstructionsPatch null
val replacement = when (match) {
MethodCall.NetworkCountryIso -> networkCountryIso?.lowercase()
MethodCall.NetworkOperator -> networkOperator?.toString()
MethodCall.NetworkOperatorName -> networkOperatorName
MethodCall.SimCountryIso -> simCountryIso?.lowercase()
MethodCall.SimOperator -> simOperator?.toString()
MethodCall.SimOperatorName -> simOperatorName
}
replacement?.let { instructionIndex to it }
},
transform = ::transformMethodCall,
),
)
}
private fun transformMethodCall(
mutableMethod: MutableMethod,
entry: Pair<Int, String>,
) {
val (instructionIndex, methodCallValue) = entry
// Get the register which would have contained the return value
val register = mutableMethod.getInstruction<OneRegisterInstruction>(instructionIndex + 1).registerA
// Replace the move-result instruction with our fake value
mutableMethod.replaceInstruction(
instructionIndex + 1,
"const-string v$register, \"$methodCallValue\"",
)
}
private enum class MethodCall(
val reference: MethodReference,
) {
NetworkCountryIso(
ImmutableMethodReference(
"Landroid/telephony/TelephonyManager;",
"getNetworkCountryIso",
emptyList(),
"Ljava/lang/String;",
),
),
NetworkOperator(
ImmutableMethodReference(
"Landroid/telephony/TelephonyManager;",
"getNetworkOperator",
emptyList(),
"Ljava/lang/String;",
),
),
NetworkOperatorName(
ImmutableMethodReference(
"Landroid/telephony/TelephonyManager;",
"getNetworkOperatorName",
emptyList(),
"Ljava/lang/String;",
),
),
SimCountryIso(
ImmutableMethodReference(
"Landroid/telephony/TelephonyManager;",
"getSimCountryIso",
emptyList(),
"Ljava/lang/String;",
),
),
SimOperator(
ImmutableMethodReference(
"Landroid/telephony/TelephonyManager;",
"getSimOperator",
emptyList(),
"Ljava/lang/String;",
),
),
SimOperatorName(
ImmutableMethodReference(
"Landroid/telephony/TelephonyManager;",
"getSimOperatorName",
emptyList(),
"Ljava/lang/String;",
),
),
}

View File

@@ -0,0 +1,19 @@
package app.revanced.patches.disneyplus.ads
import app.revanced.patcher.fingerprint
internal val insertionGetPointsFingerprint = fingerprint {
returns("Ljava/util/List")
custom { method, _ ->
method.name == "getPoints" &&
method.definingClass == "Lcom/dss/sdk/internal/media/Insertion;"
}
}
internal val insertionGetRangesFingerprint = fingerprint {
returns("Ljava/util/List")
custom { method, _ ->
method.name == "getRanges" &&
method.definingClass == "Lcom/dss/sdk/internal/media/Insertion;"
}
}

View File

@@ -0,0 +1,29 @@
package app.revanced.patches.disneyplus.ads
import app.revanced.patcher.extensions.InstructionExtensions.addInstructions
import app.revanced.patcher.patch.bytecodePatch
@Suppress("unused")
val skipAdsPatch = bytecodePatch(
name = "Skip ads",
description = "Automatically skips ads.",
) {
compatibleWith(
"com.disney.disneyplus",
"in.startv.hotstar",
"in.startv.hotstaronly",
)
execute {
arrayOf(insertionGetPointsFingerprint, insertionGetRangesFingerprint).forEach {
it.method.addInstructions(
0,
"""
new-instance v0, Ljava/util/ArrayList;
invoke-direct {v0}, Ljava/util/ArrayList;-><init>()V
return-object v0
""",
)
}
}
}

View File

@@ -0,0 +1,22 @@
package app.revanced.patches.idaustria.detection.deviceintegrity
import app.revanced.patcher.fingerprint
import com.android.tools.smali.dexlib2.AccessFlags
internal val isDeviceBootloaderOpenFingerprint = fingerprint {
accessFlags(AccessFlags.PUBLIC)
returns("Ljava/lang/Object;")
custom { method, classDef ->
method.name == "isDeviceBootloaderOpen" &&
classDef.endsWith("/DeviceIntegrityCheckProviderImpl;")
}
}
internal val isDeviceRootedFingerprint = fingerprint {
accessFlags(AccessFlags.PUBLIC)
returns("Z")
custom { method, classDef ->
method.name == "isDeviceRooted" &&
classDef.endsWith("/DeviceIntegrityCheckProviderImpl;")
}
}

View File

@@ -0,0 +1,30 @@
package app.revanced.patches.idaustria.detection.deviceintegrity
import app.revanced.patcher.extensions.InstructionExtensions.addInstructions
import app.revanced.patcher.patch.bytecodePatch
import app.revanced.util.returnEarly
@Suppress("unused")
val removeDeviceIntegrityChecksPatch = bytecodePatch(
name = "Remove device integrity checks",
description = "Removes the check for root permissions and unlocked bootloader.",
) {
compatibleWith("at.gv.oe.app")
execute {
isDeviceRootedFingerprint.method.returnEarly(false)
isDeviceBootloaderOpenFingerprint.method.apply {
addInstructions(
0,
"""
const/4 v0, 0x0
invoke-static { v0 }, Lkotlin/coroutines/jvm/internal/Boxing;->boxBoolean(Z)Ljava/lang/Boolean;
move-result-object v0
return-object v0
"""
)
}
}
}

View File

@@ -1,31 +0,0 @@
package app.revanced.patches.idaustria.detection.root
import app.revanced.patcher.fingerprint
import com.android.tools.smali.dexlib2.AccessFlags
internal val attestationSupportedCheckFingerprint = fingerprint {
accessFlags(AccessFlags.PUBLIC)
returns("V")
custom { method, classDef ->
method.name == "attestationSupportCheck" &&
classDef.endsWith("/DeviceIntegrityCheck;")
}
}
internal val bootloaderCheckFingerprint = fingerprint {
accessFlags(AccessFlags.PUBLIC)
returns("Z")
custom { method, classDef ->
method.name == "bootloaderCheck" &&
classDef.endsWith("/DeviceIntegrityCheck;")
}
}
internal val rootCheckFingerprint = fingerprint {
accessFlags(AccessFlags.PUBLIC)
returns("V")
custom { method, classDef ->
method.name == "rootCheck" &&
classDef.endsWith("/DeviceIntegrityCheck;")
}
}

View File

@@ -1,22 +1,10 @@
package app.revanced.patches.idaustria.detection.root package app.revanced.patches.idaustria.detection.root
import app.revanced.patcher.patch.bytecodePatch import app.revanced.patcher.patch.bytecodePatch
import app.revanced.patches.shared.PATCH_DESCRIPTION_REMOVE_ROOT_DETECTION import app.revanced.patches.idaustria.detection.deviceintegrity.removeDeviceIntegrityChecksPatch
import app.revanced.patches.shared.PATCH_NAME_REMOVE_ROOT_DETECTION
import app.revanced.util.returnEarly
@Deprecated("Patch was superseded", ReplaceWith("removeDeviceIntegrityChecksPatch"))
@Suppress("unused") @Suppress("unused")
val rootDetectionPatch = bytecodePatch( val rootDetectionPatch = bytecodePatch {
name = PATCH_NAME_REMOVE_ROOT_DETECTION, dependsOn(removeDeviceIntegrityChecksPatch)
description = PATCH_DESCRIPTION_REMOVE_ROOT_DETECTION
) {
compatibleWith("at.gv.oe.app")
execute {
setOf(
attestationSupportedCheckFingerprint,
bootloaderCheckFingerprint,
rootCheckFingerprint,
).forEach { it.method.returnEarly(true) }
}
} }

View File

@@ -0,0 +1,23 @@
package app.revanced.patches.instagram.ghost.story
import app.revanced.patcher.patch.bytecodePatch
import app.revanced.util.Utils.trimIndentMultiline
import app.revanced.util.returnEarly
@Suppress("unused")
val anonymousStoryViewingPatch = bytecodePatch(
name = "Anonymous story viewing",
description = """
View stories without sending any information to the server.
Your view will not appear in the story viewers list.
Note: Since no data is sent, a story you have already viewed may appear as new on another device.
""".trimIndentMultiline(),
use = false
) {
compatibleWith("com.instagram.android")
execute {
// Prevent the hashmap of the seen media to be filled
setMediaSeenHashmapFingerprint.method.returnEarly()
}
}

View File

@@ -0,0 +1,9 @@
package app.revanced.patches.instagram.ghost.story
import app.revanced.patcher.fingerprint
internal val setMediaSeenHashmapFingerprint = fingerprint {
parameters()
returns("V")
strings("media/seen/")
}

View File

@@ -6,7 +6,9 @@ import app.revanced.util.returnEarly
@Suppress("unused") @Suppress("unused")
val signatureCheckPatch = bytecodePatch( val signatureCheckPatch = bytecodePatch(
name = "Disable signature check", name = "Disable signature check",
description = "Disables the signature check that causes the app to crash on startup." description = "Disables the signature check that can cause the app to crash on startup. " +
"Including this patch may cause issues with sharing or opening external Instagram links.",
use = false
) { ) {
compatibleWith("com.instagram.android") compatibleWith("com.instagram.android")

View File

@@ -0,0 +1,34 @@
import app.revanced.patcher.extensions.InstructionExtensions.addInstructions
import app.revanced.patcher.patch.bytecodePatch
import app.revanced.patches.instagram.reels.clipsSwipeRefreshLayoutOnInterceptTouchEventFingerprint
import app.revanced.patches.instagram.reels.clipsViewPagerImplGetViewAtIndexFingerprint
import app.revanced.util.returnEarly
@Suppress("unused")
val disableReelsScrollingPatch = bytecodePatch(
name = "Disable Reels scrolling",
description = "Disables the endless scrolling behavior in Instagram Reels, preventing swiping to the next Reel. " +
"Note: On a clean install, the 'Tip' animation may appear but will stop on its own after a few seconds.",
use = true
) {
compatibleWith("com.instagram.android")
execute {
val viewPagerField = clipsViewPagerImplGetViewAtIndexFingerprint.classDef.fields.first {
it.type == "Landroidx/viewpager2/widget/ViewPager2;"
}
// Disable user input on the ViewPager2 to prevent scrolling.
clipsViewPagerImplGetViewAtIndexFingerprint.method.addInstructions(
0,
"""
iget-object v0, p0, $viewPagerField
const/4 v1, 0x0
invoke-virtual { v0, v1 }, Landroidx/viewpager2/widget/ViewPager2;->setUserInputEnabled(Z)V
"""
)
// Return false in onInterceptTouchEvent to disable pull-to-refresh.
clipsSwipeRefreshLayoutOnInterceptTouchEventFingerprint.method.returnEarly(false)
}
}

View File

@@ -0,0 +1,13 @@
package app.revanced.patches.instagram.reels
import app.revanced.patcher.fingerprint
internal val clipsViewPagerImplGetViewAtIndexFingerprint = fingerprint {
strings("ClipsViewPagerImpl_getViewAtIndex")
}
internal val clipsSwipeRefreshLayoutOnInterceptTouchEventFingerprint = fingerprint {
parameters("Landroid/view/MotionEvent;")
custom { _, classDef -> classDef.type == "Linstagram/features/clips/viewer/ui/ClipsSwipeRefreshLayout;" }
}

View File

@@ -0,0 +1,17 @@
package app.revanced.patches.instagram.story.flipping
import app.revanced.patcher.patch.bytecodePatch
import app.revanced.util.returnEarly
@Suppress("unused")
val disableStoryAutoFlippingPatch = bytecodePatch(
name = "Disable story auto flipping",
description = "Disable stories automatically flipping/skipping after some seconds.",
use = false
) {
compatibleWith("com.instagram.android")
execute {
onStoryTimeoutActionFingerprint.method.returnEarly()
}
}

View File

@@ -0,0 +1,12 @@
package app.revanced.patches.instagram.story.flipping
import app.revanced.patcher.fingerprint
internal val onStoryTimeoutActionFingerprint = fingerprint {
parameters("Ljava/lang/Object;")
returns("V")
strings("userSession")
custom { _, classDef ->
classDef.type == "Linstagram/features/stories/fragment/ReelViewerFragment;"
}
}

View File

@@ -0,0 +1,29 @@
package app.revanced.patches.letterboxd.ads
import app.revanced.patcher.fingerprint
internal const val admobHelperClassName = "Lcom/letterboxd/letterboxd/helpers/AdmobHelper;"
internal val admobHelperSetShowAdsFingerprint = fingerprint {
custom { method, classDef ->
method.name == "setShowAds" && classDef.type == admobHelperClassName
}
}
internal val admobHelperShouldShowAdsFingerprint = fingerprint {
custom { method, classDef ->
method.name == "shouldShowAds" && classDef.type == admobHelperClassName
}
}
internal val filmFragmentShowAdsFingerprint = fingerprint {
custom { method, classDef ->
method.name == "showAds" && classDef.type.endsWith("/FilmFragment;")
}
}
internal val memberExtensionShowAdsFingerprint = fingerprint {
custom { method, classDef ->
method.name == "showAds" && classDef.type.endsWith("/AMemberExtensionKt;")
}
}

View File

@@ -0,0 +1,20 @@
package app.revanced.patches.letterboxd.ads
import app.revanced.patcher.extensions.InstructionExtensions.addInstruction
import app.revanced.patcher.patch.bytecodePatch
import app.revanced.util.returnEarly
@Suppress("unused")
val hideAdsPatch = bytecodePatch(
name = "Hide ads",
) {
compatibleWith("com.letterboxd.letterboxd")
execute {
admobHelperSetShowAdsFingerprint.method.addInstruction(0, "const p1, 0x0")
listOf(admobHelperShouldShowAdsFingerprint, filmFragmentShowAdsFingerprint, memberExtensionShowAdsFingerprint).forEach {
it.method.returnEarly(false)
}
}
}

View File

@@ -0,0 +1,23 @@
package app.revanced.patches.lightroom.misc.version
import app.revanced.patcher.extensions.InstructionExtensions.replaceInstruction
import app.revanced.patcher.patch.bytecodePatch
import com.android.tools.smali.dexlib2.Opcode
@Suppress("unused")
val disableVersionCheckPatch = bytecodePatch(
name = "Disable version check",
description = "Disables the server-side version check that prevents the app from starting.",
) {
compatibleWith("com.adobe.lrmobile"("9.3.0"))
execute {
refreshRemoteConfigurationFingerprint.method.apply {
val igetIndex = refreshRemoteConfigurationFingerprint.patternMatch!!.endIndex
// This value represents the server command to clear all version restrictions.
val statusForceReset = "-0x2";
replaceInstruction(igetIndex, "const/4 v1, $statusForceReset")
}
}
}

View File

@@ -0,0 +1,18 @@
package app.revanced.patches.lightroom.misc.version
import app.revanced.patcher.fingerprint
import com.android.tools.smali.dexlib2.AccessFlags
import com.android.tools.smali.dexlib2.Opcode
internal val refreshRemoteConfigurationFingerprint = fingerprint {
accessFlags(AccessFlags.PUBLIC, AccessFlags.STATIC)
strings(
"com.adobe.lrmobile.denylisted_version_set_key",
"com.adobe.lrmobile.app_min_version_key"
)
opcodes(
Opcode.INVOKE_STATIC,
Opcode.MOVE_RESULT_OBJECT,
Opcode.IGET, // Overwrite this instruction to disable the check.
)
}

View File

@@ -1,24 +1,24 @@
package app.revanced.patches.music.layout.branding package app.revanced.patches.music.layout.branding
import app.revanced.patcher.extensions.InstructionExtensions.addInstructionsWithLabels import app.revanced.patcher.extensions.InstructionExtensions.addInstructions
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.util.smali.ExternalLabel
import app.revanced.patches.music.misc.extension.sharedExtensionPatch import app.revanced.patches.music.misc.extension.sharedExtensionPatch
import app.revanced.patches.music.misc.gms.Constants.MUSIC_MAIN_ACTIVITY_NAME import app.revanced.patches.music.misc.gms.Constants.MUSIC_MAIN_ACTIVITY_NAME
import app.revanced.patches.music.misc.gms.Constants.MUSIC_PACKAGE_NAME import app.revanced.patches.music.misc.gms.Constants.MUSIC_PACKAGE_NAME
import app.revanced.patches.music.misc.gms.musicActivityOnCreateFingerprint import app.revanced.patches.music.misc.gms.musicActivityOnCreateFingerprint
import app.revanced.patches.music.misc.settings.PreferenceScreen import app.revanced.patches.music.misc.settings.PreferenceScreen
import app.revanced.patches.shared.layout.branding.EXTENSION_CLASS_DESCRIPTOR
import app.revanced.patches.shared.layout.branding.baseCustomBrandingPatch import app.revanced.patches.shared.layout.branding.baseCustomBrandingPatch
import app.revanced.patches.shared.misc.mapping.get import app.revanced.patches.shared.misc.mapping.get
import app.revanced.patches.shared.misc.mapping.resourceMappingPatch import app.revanced.patches.shared.misc.mapping.resourceMappingPatch
import app.revanced.patches.shared.misc.mapping.resourceMappings import app.revanced.patches.shared.misc.mapping.resourceMappings
import app.revanced.util.getReference import app.revanced.util.getReference
import app.revanced.util.indexOfFirstInstructionOrThrow import app.revanced.util.indexOfFirstInstructionOrThrow
import app.revanced.util.indexOfFirstInstructionReversed
import app.revanced.util.indexOfFirstLiteralInstructionOrThrow import app.revanced.util.indexOfFirstLiteralInstructionOrThrow
import com.android.tools.smali.dexlib2.Opcode import com.android.tools.smali.dexlib2.Opcode
import com.android.tools.smali.dexlib2.iface.reference.MethodReference import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
import com.android.tools.smali.dexlib2.iface.reference.TypeReference
private val disableSplashAnimationPatch = bytecodePatch { private val disableSplashAnimationPatch = bytecodePatch {
@@ -33,23 +33,22 @@ private val disableSplashAnimationPatch = bytecodePatch {
// but the animation is not always the same size as the launch screen and it's still // but the animation is not always the same size as the launch screen and it's still
// barely shown. Instead turn off the animation entirely (app will also launch a little faster). // barely shown. Instead turn off the animation entirely (app will also launch a little faster).
cairoSplashAnimationConfigFingerprint.method.apply { cairoSplashAnimationConfigFingerprint.method.apply {
val mainActivityLaunchAnimation = resourceMappings["layout", "main_activity_launch_animation"]
val literalIndex = indexOfFirstLiteralInstructionOrThrow( val literalIndex = indexOfFirstLiteralInstructionOrThrow(
mainActivityLaunchAnimation resourceMappings["layout", "main_activity_launch_animation"]
) )
val insertIndex = indexOfFirstInstructionReversed(literalIndex) { val checkCastIndex = indexOfFirstInstructionOrThrow(literalIndex) {
this.opcode == Opcode.INVOKE_VIRTUAL && opcode == Opcode.CHECK_CAST &&
getReference<MethodReference>()?.name == "setContentView" getReference<TypeReference>()?.type == "Lcom/airbnb/lottie/LottieAnimationView;"
} + 1 }
val jumpIndex = indexOfFirstInstructionOrThrow(insertIndex) { val register = getInstruction<OneRegisterInstruction>(checkCastIndex).registerA
opcode == Opcode.INVOKE_VIRTUAL &&
getReference<MethodReference>()?.parameterTypes?.firstOrNull() == "Ljava/lang/Runnable;"
} + 1
addInstructionsWithLabels( // If using a custom icon then set the lottie animation view to null to bypasses the startup animation.
insertIndex, addInstructions(
"goto :skip_animation", checkCastIndex,
ExternalLabel("skip_animation", getInstruction(jumpIndex)) """
invoke-static { v$register }, $EXTENSION_CLASS_DESCRIPTOR->getLottieViewOrNull(Landroid/view/View;)Landroid/view/View;
move-result-object v$register
"""
) )
} }
} }

View File

@@ -0,0 +1,64 @@
package app.revanced.patches.music.layout.buttons
import app.revanced.patcher.fingerprint
import app.revanced.util.containsLiteralInstruction
import app.revanced.util.literal
import com.android.tools.smali.dexlib2.AccessFlags
import com.android.tools.smali.dexlib2.Opcode
internal val mediaRouteButtonFingerprint = fingerprint {
accessFlags(AccessFlags.PRIVATE, AccessFlags.FINAL)
returns("Z")
strings("MediaRouteButton")
}
internal val playerOverlayChipFingerprint = fingerprint {
accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL)
returns("L")
literal { playerOverlayChip }
}
internal val historyMenuItemFingerprint = fingerprint {
accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL)
returns("V")
parameters("Landroid/view/Menu;")
opcodes(
Opcode.INVOKE_INTERFACE,
Opcode.RETURN_VOID
)
literal { historyMenuItem }
custom { _, classDef ->
classDef.methods.count() == 5
}
}
internal val historyMenuItemOfflineTabFingerprint = fingerprint {
accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL)
returns("V")
parameters("Landroid/view/Menu;")
opcodes(
Opcode.INVOKE_INTERFACE,
Opcode.RETURN_VOID
)
custom { method, _ ->
method.containsLiteralInstruction(historyMenuItem) &&
method.containsLiteralInstruction(offlineSettingsMenuItem)
}
}
internal val searchActionViewFingerprint = fingerprint {
accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL)
returns("Landroid/view/View;")
parameters()
literal { searchButton }
custom { _, classDef ->
classDef.type.endsWith("/SearchActionProvider;")
}
}
internal val topBarMenuItemImageViewFingerprint = fingerprint {
accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL)
returns("Landroid/view/View;")
parameters()
literal { topBarMenuItemImageView }
}

View File

@@ -0,0 +1,121 @@
package app.revanced.patches.music.layout.buttons
import app.revanced.patcher.extensions.InstructionExtensions.addInstruction
import app.revanced.patcher.extensions.InstructionExtensions.addInstructions
import app.revanced.patcher.extensions.InstructionExtensions.getInstruction
import app.revanced.patcher.patch.bytecodePatch
import app.revanced.patches.all.misc.resources.addResources
import app.revanced.patches.all.misc.resources.addResourcesPatch
import app.revanced.patches.music.misc.extension.sharedExtensionPatch
import app.revanced.patches.music.misc.settings.PreferenceScreen
import app.revanced.patches.music.misc.settings.settingsPatch
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.util.indexOfFirstInstructionOrThrow
import app.revanced.util.indexOfFirstLiteralInstructionOrThrow
import com.android.tools.smali.dexlib2.Opcode
import com.android.tools.smali.dexlib2.iface.instruction.FiveRegisterInstruction
import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
internal var playerOverlayChip = -1L
private set
internal var historyMenuItem = -1L
private set
internal var offlineSettingsMenuItem = -1L
private set
internal var searchButton = -1L
private set
internal var topBarMenuItemImageView = -1L
private set
private const val EXTENSION_CLASS_DESCRIPTOR = "Lapp/revanced/extension/music/patches/HideButtonsPatch;"
@Suppress("unused")
val hideButtons = bytecodePatch(
name = "Hide buttons",
description = "Adds options to hide the cast, history, notification, and search buttons."
) {
dependsOn(
sharedExtensionPatch,
settingsPatch,
addResourcesPatch,
resourceMappingPatch
)
compatibleWith(
"com.google.android.apps.youtube.music"(
"7.29.52",
"8.10.52"
)
)
execute {
playerOverlayChip = resourceMappings["id", "player_overlay_chip"]
historyMenuItem = resourceMappings["id", "history_menu_item"]
offlineSettingsMenuItem = resourceMappings["id", "offline_settings_menu_item"]
searchButton = resourceMappings["layout", "search_button"]
topBarMenuItemImageView = resourceMappings["id", "top_bar_menu_item_image_view"]
addResources("music", "layout.buttons.hideButtons")
PreferenceScreen.GENERAL.addPreferences(
SwitchPreference("revanced_music_hide_cast_button"),
SwitchPreference("revanced_music_hide_history_button"),
SwitchPreference("revanced_music_hide_notification_button"),
SwitchPreference("revanced_music_hide_search_button")
)
// Region for hide history button in the top bar.
arrayOf(
historyMenuItemFingerprint,
historyMenuItemOfflineTabFingerprint
).forEach { fingerprint ->
fingerprint.method.apply {
val targetIndex = fingerprint.patternMatch!!.startIndex
val targetRegister = getInstruction<FiveRegisterInstruction>(targetIndex).registerD
addInstructions(
targetIndex,
"""
invoke-static { v$targetRegister }, $EXTENSION_CLASS_DESCRIPTOR->hideHistoryButton(Z)Z
move-result v$targetRegister
"""
)
}
}
// Region for hide cast, search and notification buttons in the top bar.
arrayOf(
Triple(playerOverlayChipFingerprint, playerOverlayChip, "hideCastButton"),
Triple(searchActionViewFingerprint, searchButton, "hideSearchButton"),
Triple(topBarMenuItemImageViewFingerprint, topBarMenuItemImageView, "hideNotificationButton")
).forEach { (fingerprint, resourceIdLiteral, methodName) ->
fingerprint.method.apply {
val resourceIndex = indexOfFirstLiteralInstructionOrThrow(resourceIdLiteral)
val targetIndex = indexOfFirstInstructionOrThrow(
resourceIndex, Opcode.MOVE_RESULT_OBJECT
)
val targetRegister = getInstruction<OneRegisterInstruction>(targetIndex).registerA
addInstruction(
targetIndex + 1,
"invoke-static { v$targetRegister }, " +
"$EXTENSION_CLASS_DESCRIPTOR->$methodName(Landroid/view/View;)V"
)
}
}
// Region for hide cast button in the player.
mediaRouteButtonFingerprint.classDef.methods.single { method ->
method.name == "setVisibility"
}.addInstructions(
0,
"""
invoke-static { p1 }, $EXTENSION_CLASS_DESCRIPTOR->hideCastButton(I)I
move-result p1
"""
)
}
}

View File

@@ -1,17 +0,0 @@
package app.revanced.patches.music.layout.castbutton
import com.android.tools.smali.dexlib2.AccessFlags
import app.revanced.patcher.fingerprint
import app.revanced.util.literal
internal val mediaRouteButtonFingerprint = fingerprint {
accessFlags(AccessFlags.PRIVATE, AccessFlags.FINAL)
returns("Z")
strings("MediaRouteButton")
}
internal val playerOverlayChipFingerprint = fingerprint {
accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL)
returns("L")
literal { playerOverlayChip }
}

View File

@@ -1,77 +1,10 @@
package app.revanced.patches.music.layout.castbutton package app.revanced.patches.music.layout.castbutton
import app.revanced.patcher.extensions.InstructionExtensions.addInstruction
import app.revanced.patcher.extensions.InstructionExtensions.addInstructions
import app.revanced.patcher.extensions.InstructionExtensions.getInstruction
import app.revanced.patcher.patch.bytecodePatch import app.revanced.patcher.patch.bytecodePatch
import app.revanced.patches.all.misc.resources.addResources import app.revanced.patches.music.layout.buttons.hideButtons
import app.revanced.patches.all.misc.resources.addResourcesPatch
import app.revanced.patches.music.misc.extension.sharedExtensionPatch
import app.revanced.patches.music.misc.settings.PreferenceScreen
import app.revanced.patches.music.misc.settings.settingsPatch
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.util.indexOfFirstInstructionOrThrow
import app.revanced.util.indexOfFirstLiteralInstructionOrThrow
import com.android.tools.smali.dexlib2.Opcode
import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
internal var playerOverlayChip = -1L
private set
private const val EXTENSION_CLASS_DESCRIPTOR = "Lapp/revanced/extension/music/patches/HideCastButtonPatch;"
@Deprecated("Patch was moved", ReplaceWith("hideButtons"))
@Suppress("unused") @Suppress("unused")
val hideCastButton = bytecodePatch( val hideCastButton = bytecodePatch{
name = "Hide cast button", dependsOn(hideButtons)
description = "Adds an option to hide the cast button."
) {
dependsOn(
sharedExtensionPatch,
settingsPatch,
addResourcesPatch,
resourceMappingPatch
)
compatibleWith(
"com.google.android.apps.youtube.music"(
"7.29.52",
"8.10.52"
)
)
execute {
playerOverlayChip = resourceMappings["id", "player_overlay_chip"]
addResources("music", "layout.castbutton.hideCastButton")
PreferenceScreen.GENERAL.addPreferences(
SwitchPreference("revanced_music_hide_cast_button"),
)
mediaRouteButtonFingerprint.classDef.apply {
val setVisibilityMethod = methods.first { method -> method.name == "setVisibility" }
setVisibilityMethod.addInstructions(
0,
"""
invoke-static { p1 }, $EXTENSION_CLASS_DESCRIPTOR->hideCastButton(I)I
move-result p1
"""
)
}
playerOverlayChipFingerprint.method.apply {
val resourceIndex = indexOfFirstLiteralInstructionOrThrow(playerOverlayChip)
val targetIndex = indexOfFirstInstructionOrThrow(resourceIndex, Opcode.MOVE_RESULT_OBJECT)
val targetRegister = getInstruction<OneRegisterInstruction>(targetIndex).registerA
addInstruction(
targetIndex + 1,
"invoke-static { v$targetRegister }, $EXTENSION_CLASS_DESCRIPTOR->hideCastButton(Landroid/view/View;)V"
)
}
}
} }

View File

@@ -0,0 +1,110 @@
@file:Suppress("SpellCheckingInspection")
package app.revanced.patches.music.layout.miniplayercolor
import app.revanced.patcher.extensions.InstructionExtensions.getInstruction
import app.revanced.patcher.patch.bytecodePatch
import app.revanced.patches.all.misc.resources.addResources
import app.revanced.patches.all.misc.resources.addResourcesPatch
import app.revanced.patches.music.misc.extension.sharedExtensionPatch
import app.revanced.patches.music.misc.settings.PreferenceScreen
import app.revanced.patches.music.misc.settings.settingsPatch
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.util.addInstructionsAtControlFlowLabel
import app.revanced.util.findFreeRegister
import app.revanced.util.getReference
import app.revanced.util.indexOfFirstInstructionOrThrow
import app.revanced.util.indexOfFirstInstructionReversedOrThrow
import com.android.tools.smali.dexlib2.AccessFlags
import com.android.tools.smali.dexlib2.Opcode
import com.android.tools.smali.dexlib2.iface.instruction.ReferenceInstruction
import com.android.tools.smali.dexlib2.iface.reference.FieldReference
import com.android.tools.smali.dexlib2.iface.reference.MethodReference
internal var mpp_player_bottom_sheet = -1L
private set
private const val EXTENSION_CLASS_DESCRIPTOR = "Lapp/revanced/extension/music/patches/ChangeMiniplayerColorPatch;"
@Suppress("unused")
val changeMiniplayerColor = bytecodePatch(
name = "Change miniplayer color",
description = "Adds an option to change the miniplayer background color to match the fullscreen player."
) {
dependsOn(
sharedExtensionPatch,
settingsPatch,
addResourcesPatch,
resourceMappingPatch
)
compatibleWith(
"com.google.android.apps.youtube.music"(
"7.29.52",
"8.10.52"
)
)
execute {
mpp_player_bottom_sheet = resourceMappings["id", "mpp_player_bottom_sheet"]
addResources("music", "layout.miniplayercolor.changeMiniplayerColor")
PreferenceScreen.PLAYER.addPreferences(
SwitchPreference("revanced_music_change_miniplayer_color"),
)
switchToggleColorFingerprint.match(miniPlayerConstructorFingerprint.classDef).let {
val relativeIndex = it.patternMatch!!.endIndex + 1
val invokeVirtualIndex = it.method.indexOfFirstInstructionOrThrow(
relativeIndex, Opcode.INVOKE_VIRTUAL
)
val colorMathPlayerInvokeVirtualReference = it.method
.getInstruction<ReferenceInstruction>(invokeVirtualIndex).reference
val iGetIndex = it.method.indexOfFirstInstructionOrThrow(
relativeIndex, Opcode.IGET
)
val colorMathPlayerIGetReference = it.method
.getInstruction<ReferenceInstruction>(iGetIndex).reference as FieldReference
val colorGreyIndex = miniPlayerConstructorFingerprint.method.indexOfFirstInstructionReversedOrThrow {
getReference<MethodReference>()?.name == "getColor"
}
val iPutIndex = miniPlayerConstructorFingerprint.method.indexOfFirstInstructionOrThrow(
colorGreyIndex, Opcode.IPUT
)
val colorMathPlayerIPutReference = miniPlayerConstructorFingerprint.method
.getInstruction<ReferenceInstruction>(iPutIndex).reference
miniPlayerConstructorFingerprint.classDef.methods.single { method ->
method.accessFlags == AccessFlags.PUBLIC.value or AccessFlags.FINAL.value &&
method.returnType == "V" &&
method.parameters == it.originalMethod.parameters
}.apply {
val insertIndex = indexOfFirstInstructionReversedOrThrow(Opcode.INVOKE_DIRECT)
val freeRegister = findFreeRegister(insertIndex)
addInstructionsAtControlFlowLabel(
insertIndex,
"""
invoke-static {}, $EXTENSION_CLASS_DESCRIPTOR->changeMiniplayerColor()Z
move-result v$freeRegister
if-eqz v$freeRegister, :off
invoke-virtual { p1 }, $colorMathPlayerInvokeVirtualReference
move-result-object v$freeRegister
check-cast v$freeRegister, ${colorMathPlayerIGetReference.definingClass}
iget v$freeRegister, v$freeRegister, $colorMathPlayerIGetReference
iput v$freeRegister, p0, $colorMathPlayerIPutReference
:off
nop
"""
)
}
}
}
}

View File

@@ -0,0 +1,27 @@
package app.revanced.patches.music.layout.miniplayercolor
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 miniPlayerConstructorFingerprint = fingerprint {
returns("V")
strings("sharedToggleMenuItemMutations")
literal { mpp_player_bottom_sheet }
}
/**
* Matches to the class found in [miniPlayerConstructorFingerprint].
*/
internal val switchToggleColorFingerprint = fingerprint {
accessFlags(AccessFlags.PRIVATE, AccessFlags.FINAL)
returns("V")
parameters("L", "J")
opcodes(
Opcode.INVOKE_VIRTUAL,
Opcode.MOVE_RESULT_OBJECT,
Opcode.CHECK_CAST,
Opcode.IGET
)
}

View File

@@ -0,0 +1,10 @@
package app.revanced.patches.peacocktv.ads
import app.revanced.patcher.fingerprint
import com.android.tools.smali.dexlib2.AccessFlags
internal val mediaTailerAdServiceFingerprint = fingerprint {
accessFlags(AccessFlags.PUBLIC)
returns("Ljava/lang/Object")
strings("Could not build MT Advertising service")
}

View File

@@ -0,0 +1,16 @@
package app.revanced.patches.peacocktv.ads
import app.revanced.patcher.patch.bytecodePatch
import app.revanced.util.returnEarly
@Suppress("unused")
val hideAdsPatch = bytecodePatch(
name = "Hide ads",
description = "Hides all video ads.",
) {
compatibleWith("com.peacocktv.peacockandroid")
execute {
mediaTailerAdServiceFingerprint.method.returnEarly(false)
}
}

View File

@@ -0,0 +1,16 @@
package app.revanced.patches.protonvpn.delay
import app.revanced.patcher.fingerprint
internal val longDelayFingerprint = fingerprint {
custom { method, _ ->
method.name == "getChangeServerLongDelayInSeconds"
}
}
internal val shortDelayFingerprint = fingerprint {
custom { method, _ ->
method.name == "getChangeServerShortDelayInSeconds"
}
}

View File

@@ -0,0 +1,17 @@
package app.revanced.patches.protonvpn.delay
import app.revanced.patcher.patch.bytecodePatch
import app.revanced.util.returnEarly
@Suppress("unused")
val removeDelayPatch = bytecodePatch(
name = "Remove delay",
description = "Removes the delay when changing servers.",
) {
compatibleWith("ch.protonvpn.android")
execute {
longDelayFingerprint.method.returnEarly(0)
shortDelayFingerprint.method.returnEarly(0)
}
}

View File

@@ -3,12 +3,8 @@ package app.revanced.patches.reddit.ad.comments
import app.revanced.patcher.fingerprint import app.revanced.patcher.fingerprint
internal val hideCommentAdsFingerprint = fingerprint { internal val hideCommentAdsFingerprint = fingerprint {
strings( custom { method, classDef ->
"link", method.name == "invokeSuspend" &&
// CommentPageRepository is not returning a link object classDef.contains("LoadAdsCombinedCall")
"is not returning a link object"
)
custom { _, classDef ->
classDef.sourceFile == "PostDetailPresenter.kt"
} }
} }

View File

@@ -1,6 +1,6 @@
package app.revanced.patches.reddit.ad.comments package app.revanced.patches.reddit.ad.comments
import app.revanced.patcher.extensions.InstructionExtensions.addInstructions import app.revanced.patcher.extensions.InstructionExtensions.replaceInstructions
import app.revanced.patcher.patch.bytecodePatch import app.revanced.patcher.patch.bytecodePatch
val hideCommentAdsPatch = bytecodePatch( val hideCommentAdsPatch = bytecodePatch(
@@ -8,13 +8,6 @@ val hideCommentAdsPatch = bytecodePatch(
) { ) {
execute { execute {
hideCommentAdsFingerprint.method.addInstructions( hideCommentAdsFingerprint.method.replaceInstructions(0, "return-object p1")
0,
"""
new-instance v0, Ljava/lang/Object;
invoke-direct {v0}, Ljava/lang/Object;-><init>()V
return-object v0
""",
)
} }
} }

View File

@@ -12,6 +12,5 @@ internal val adPostFingerprint = fingerprint {
internal val newAdPostFingerprint = fingerprint { internal val newAdPostFingerprint = fingerprint {
opcodes(Opcode.INVOKE_VIRTUAL) opcodes(Opcode.INVOKE_VIRTUAL)
strings("chain", "feedElement") strings("feedElement", "com.reddit.cookie")
custom { _, classDef -> classDef.sourceFile == "AdElementConverter.kt" }
} }

View File

@@ -3,7 +3,6 @@ package app.revanced.patches.reddit.ad.general
import app.revanced.patcher.extensions.InstructionExtensions.addInstructions import app.revanced.patcher.extensions.InstructionExtensions.addInstructions
import app.revanced.patcher.extensions.InstructionExtensions.removeInstruction import app.revanced.patcher.extensions.InstructionExtensions.removeInstruction
import app.revanced.patcher.patch.bytecodePatch import app.revanced.patcher.patch.bytecodePatch
import app.revanced.patches.reddit.ad.banner.hideBannerPatch
import app.revanced.patches.reddit.ad.comments.hideCommentAdsPatch import app.revanced.patches.reddit.ad.comments.hideCommentAdsPatch
import app.revanced.patches.reddit.misc.extension.sharedExtensionPatch import app.revanced.patches.reddit.misc.extension.sharedExtensionPatch
import com.android.tools.smali.dexlib2.Opcode import com.android.tools.smali.dexlib2.Opcode
@@ -16,14 +15,9 @@ import com.android.tools.smali.dexlib2.iface.reference.MethodReference
val hideAdsPatch = bytecodePatch( val hideAdsPatch = bytecodePatch(
name = "Hide ads", name = "Hide ads",
) { ) {
dependsOn(hideBannerPatch, hideCommentAdsPatch, sharedExtensionPatch) dependsOn(hideCommentAdsPatch, sharedExtensionPatch)
// Note that for now, this patch and anything using it will only work on compatibleWith("com.reddit.frontpage")
// Reddit 2024.17.0 or older. Newer versions will crash during patching.
// See https://github.com/ReVanced/revanced-patches/issues/3099
// and https://github.com/iBotPeaches/Apktool/issues/3534.
// This constraint is necessary due to dependency on hideBannerPatch.
compatibleWith("com.reddit.frontpage"("2024.17.0"))
execute { execute {
// region Filter promoted ads (does not work in popular or latest feed) // region Filter promoted ads (does not work in popular or latest feed)

View File

@@ -5,6 +5,7 @@ import app.revanced.patcher.extensions.InstructionExtensions.getInstruction
import app.revanced.patcher.patch.BytecodePatchBuilder import app.revanced.patcher.patch.BytecodePatchBuilder
import app.revanced.patcher.patch.BytecodePatchContext import app.revanced.patcher.patch.BytecodePatchContext
import app.revanced.patcher.patch.bytecodePatch import app.revanced.patcher.patch.bytecodePatch
import app.revanced.patcher.patch.resourcePatch
import app.revanced.patches.all.misc.resources.addResources import app.revanced.patches.all.misc.resources.addResources
import app.revanced.patches.all.misc.resources.addResourcesPatch import app.revanced.patches.all.misc.resources.addResourcesPatch
import app.revanced.patches.shared.misc.settings.preference.BasePreference import app.revanced.patches.shared.misc.settings.preference.BasePreference
@@ -13,6 +14,8 @@ import app.revanced.patches.shared.misc.settings.preference.NonInteractivePrefer
import app.revanced.patches.shared.misc.settings.preference.PreferenceScreenPreference import app.revanced.patches.shared.misc.settings.preference.PreferenceScreenPreference
import app.revanced.patches.shared.misc.settings.preference.PreferenceScreenPreference.Sorting import app.revanced.patches.shared.misc.settings.preference.PreferenceScreenPreference.Sorting
import app.revanced.patches.shared.misc.settings.preference.SwitchPreference import app.revanced.patches.shared.misc.settings.preference.SwitchPreference
import app.revanced.util.ResourceGroup
import app.revanced.util.copyResources
import app.revanced.util.findInstructionIndicesReversedOrThrow import app.revanced.util.findInstructionIndicesReversedOrThrow
import app.revanced.util.indexOfFirstInstructionOrThrow import app.revanced.util.indexOfFirstInstructionOrThrow
import app.revanced.util.indexOfFirstInstructionReversedOrThrow import app.revanced.util.indexOfFirstInstructionReversedOrThrow
@@ -36,7 +39,27 @@ internal fun enableDebuggingPatch(
description = "Adds options for debugging and exporting ReVanced logs to the clipboard.", description = "Adds options for debugging and exporting ReVanced logs to the clipboard.",
) { ) {
dependsOn(addResourcesPatch) dependsOn(
addResourcesPatch,
resourcePatch {
execute {
copyResources(
"settings",
ResourceGroup("drawable",
// Action buttons.
"revanced_settings_copy_all.xml",
"revanced_settings_deselect_all.xml",
"revanced_settings_select_all.xml",
// Move buttons.
"revanced_settings_arrow_left_double.xml",
"revanced_settings_arrow_left_one.xml",
"revanced_settings_arrow_right_double.xml",
"revanced_settings_arrow_right_one.xml"
)
)
}
}
)
block() block()
@@ -64,6 +87,11 @@ internal fun enableDebuggingPatch(
"revanced_debug_logs_clear_buffer", "revanced_debug_logs_clear_buffer",
tag = "app.revanced.extension.shared.settings.preference.ClearLogBufferPreference", tag = "app.revanced.extension.shared.settings.preference.ClearLogBufferPreference",
selectable = true selectable = true
),
NonInteractivePreference(
"revanced_debug_feature_flags_manager",
tag = "app.revanced.extension.shared.settings.preference.FeatureFlagsManagerPreference",
selectable = true
) )
) )
) )

View File

@@ -3,5 +3,5 @@ package app.revanced.patches.spotify.misc.extension
import app.revanced.patcher.fingerprint import app.revanced.patcher.fingerprint
internal val loadOrbitLibraryFingerprint = fingerprint { internal val loadOrbitLibraryFingerprint = fingerprint {
strings("OrbitLibraryLoader", "cst") strings("orbit_library_load", "orbit-jni-spotify")
} }

View File

@@ -145,11 +145,14 @@ val hideLayoutComponentsPatch = bytecodePatch(
SwitchPreference("revanced_hide_ask_section"), SwitchPreference("revanced_hide_ask_section"),
SwitchPreference("revanced_hide_attributes_section"), SwitchPreference("revanced_hide_attributes_section"),
SwitchPreference("revanced_hide_chapters_section"), SwitchPreference("revanced_hide_chapters_section"),
SwitchPreference("revanced_hide_featured_links_section"),
SwitchPreference("revanced_hide_featured_videos_section"),
SwitchPreference("revanced_hide_info_cards_section"), SwitchPreference("revanced_hide_info_cards_section"),
SwitchPreference("revanced_hide_how_this_was_made_section"), SwitchPreference("revanced_hide_how_this_was_made_section"),
SwitchPreference("revanced_hide_hype_points"), SwitchPreference("revanced_hide_hype_points"),
SwitchPreference("revanced_hide_key_concepts_section"), SwitchPreference("revanced_hide_key_concepts_section"),
SwitchPreference("revanced_hide_podcast_section"), SwitchPreference("revanced_hide_podcast_section"),
SwitchPreference("revanced_hide_subscribe_button"),
SwitchPreference("revanced_hide_transcript_section"), SwitchPreference("revanced_hide_transcript_section"),
), ),
), ),
@@ -212,19 +215,21 @@ val hideLayoutComponentsPatch = bytecodePatch(
PreferenceScreenPreference( PreferenceScreenPreference(
key = "revanced_channel_screen", key = "revanced_channel_screen",
preferences = setOf( preferences = setOf(
SwitchPreference("revanced_hide_community_button"),
SwitchPreference("revanced_hide_for_you_shelf"), SwitchPreference("revanced_hide_for_you_shelf"),
SwitchPreference("revanced_hide_join_button"),
SwitchPreference("revanced_hide_links_preview"), SwitchPreference("revanced_hide_links_preview"),
SwitchPreference("revanced_hide_members_shelf"), SwitchPreference("revanced_hide_members_shelf"),
SwitchPreference("revanced_hide_visit_community_button"), SwitchPreference("revanced_hide_store_button"),
SwitchPreference("revanced_hide_visit_store_button"), SwitchPreference("revanced_hide_subscribe_button_in_channel_page"),
), ),
), ),
SwitchPreference("revanced_hide_album_cards"), SwitchPreference("revanced_hide_album_cards"),
SwitchPreference("revanced_hide_artist_cards"), SwitchPreference("revanced_hide_artist_cards"),
SwitchPreference("revanced_hide_chips_shelf"),
SwitchPreference("revanced_hide_community_posts"), SwitchPreference("revanced_hide_community_posts"),
SwitchPreference("revanced_hide_compact_banner"), SwitchPreference("revanced_hide_compact_banner"),
SwitchPreference("revanced_hide_crowdfunding_box"), SwitchPreference("revanced_hide_crowdfunding_box"),
SwitchPreference("revanced_hide_chips_shelf"),
SwitchPreference("revanced_hide_expandable_card"), SwitchPreference("revanced_hide_expandable_card"),
SwitchPreference("revanced_hide_floating_microphone_button"), SwitchPreference("revanced_hide_floating_microphone_button"),
SwitchPreference( SwitchPreference(
@@ -240,9 +245,10 @@ val hideLayoutComponentsPatch = bytecodePatch(
SwitchPreference("revanced_hide_show_more_button"), SwitchPreference("revanced_hide_show_more_button"),
SwitchPreference("revanced_hide_surveys"), SwitchPreference("revanced_hide_surveys"),
SwitchPreference("revanced_hide_ticket_shelf"), SwitchPreference("revanced_hide_ticket_shelf"),
SwitchPreference("revanced_hide_upload_time"),
SwitchPreference("revanced_hide_video_recommendation_labels"), SwitchPreference("revanced_hide_video_recommendation_labels"),
SwitchPreference("revanced_hide_view_count"), SwitchPreference("revanced_hide_view_count"),
SwitchPreference("revanced_hide_upload_time"), SwitchPreference("revanced_hide_visual_spacer"),
SwitchPreference("revanced_hide_doodles"), SwitchPreference("revanced_hide_doodles"),
) )

View File

@@ -101,6 +101,7 @@ private val hideShortsComponentsResourcePatch = resourcePatch {
SwitchPreference("revanced_hide_shorts_effect_button"), SwitchPreference("revanced_hide_shorts_effect_button"),
SwitchPreference("revanced_hide_shorts_green_screen_button"), SwitchPreference("revanced_hide_shorts_green_screen_button"),
SwitchPreference("revanced_hide_shorts_hashtag_button"), SwitchPreference("revanced_hide_shorts_hashtag_button"),
SwitchPreference("revanced_hide_shorts_live_preview"),
SwitchPreference("revanced_hide_shorts_new_posts_button"), SwitchPreference("revanced_hide_shorts_new_posts_button"),
SwitchPreference("revanced_hide_shorts_shop_button"), SwitchPreference("revanced_hide_shorts_shop_button"),
SwitchPreference("revanced_hide_shorts_tagged_products"), SwitchPreference("revanced_hide_shorts_tagged_products"),
@@ -109,6 +110,7 @@ private val hideShortsComponentsResourcePatch = resourcePatch {
SwitchPreference("revanced_hide_shorts_stickers"), SwitchPreference("revanced_hide_shorts_stickers"),
// Bottom of the screen. // Bottom of the screen.
SwitchPreference("revanced_hide_shorts_auto_dubbed_label"),
SwitchPreference("revanced_hide_shorts_location_label"), SwitchPreference("revanced_hide_shorts_location_label"),
SwitchPreference("revanced_hide_shorts_channel_bar"), SwitchPreference("revanced_hide_shorts_channel_bar"),
SwitchPreference("revanced_hide_shorts_info_panel"), SwitchPreference("revanced_hide_shorts_info_panel"),

View File

@@ -1,5 +1,4 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<!-- Copyright 2024 ReVanced. See https://github.com/ReVanced/revanced-branding -->
<!-- <!--
All strings must have a unique path, even if the same string is declared in two different apps. All strings must have a unique path, even if the same string is declared in two different apps.
@@ -64,9 +63,11 @@ Second \"item\" text"</string>
<!-- https://logos.fandom.com/wiki/YouTube/Yoodles --> <!-- https://logos.fandom.com/wiki/YouTube/Yoodles -->
<!-- '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. -->
<!-- 'Community' should be translated with the same localized wording that YouTube displays. -->
<!-- 'For You' should be translated using the same localized wording YouTube displays. --> <!-- 'For You' should be translated using the same localized wording YouTube displays. -->
<!-- 'Visit Community' should be translated with the same localized wording that YouTube displays. --> <!-- 'Join' should be translated with the same localized wording that YouTube displays. -->
<!-- 'Visit store' should be translated with the same localized wording that YouTube displays. --> <!-- 'Store' should be translated with the same localized wording that YouTube displays. -->
<!-- 'Subscribe' should be translated with the same localized wording that YouTube displays. -->
<!-- 'Component path builder strings' is the technical name for identifying the Litho UI layout items to hide. This is an advanced feature and most users will never use this. --> <!-- 'Component path builder strings' is the technical name for identifying the Litho UI layout items to hide. This is an advanced feature and most users will never use this. -->
<!-- Translations should lanaguge similar to revanced_hide_upload_time_user_dialog_message --> <!-- Translations should lanaguge similar to revanced_hide_upload_time_user_dialog_message -->
<!-- Translations should lanaguge similar to revanced_hide_view_count_user_dialog_message --> <!-- Translations should lanaguge similar to revanced_hide_view_count_user_dialog_message -->
@@ -110,7 +111,7 @@ Second \"item\" text"</string>
<!-- 'Remix' should be translated with the same localized wording that YouTube displays. --> <!-- 'Remix' should be translated with the same localized wording that YouTube displays. -->
<!-- 'Download' should be translated with the same localized wording that YouTube displays. --> <!-- 'Download' should be translated with the same localized wording that YouTube displays. -->
<!-- 'Hype' should be translated with the same localized wording that YouTube displays. <!-- 'Hype' should be translated with the same localized wording that YouTube displays.
This button only shows on videos uploaded by the logged in user. --> This button only shows on videos uploaded by the logged-in user. -->
<!-- 'Promote' should be translated with the same localized wording that YouTube displays. --> <!-- 'Promote' should be translated with the same localized wording that YouTube displays. -->
<!-- 'Thanks' should be translated with the same localized wording that YouTube displays. --> <!-- 'Thanks' should be translated with the same localized wording that YouTube displays. -->
<!-- 'Ask' should be translated with the same localized wording that YouTube displays. <!-- 'Ask' should be translated with the same localized wording that YouTube displays.
@@ -137,7 +138,8 @@ Second \"item\" text"</string>
<!-- 'Lock screen' should be translated using the same localized wording YouTube displays for the menu item. --> <!-- 'Lock screen' should be translated using the same localized wording YouTube displays for the menu item. -->
<!-- 'Listen with YouTube Music' should be translated using the same localized wording YouTube displays for the menu item. --> <!-- 'Listen with YouTube Music' should be translated using the same localized wording YouTube displays for the menu item. -->
<!-- 'Audio track' should be translated using the same localized wording YouTube displays for the menu item. --> <!-- 'Audio track' should be translated using the same localized wording YouTube displays for the menu item. -->
<!-- 'Spoof video streams' should be the same translation used for 'revanced_spoof_video_streams_screen_title'. --> <!-- 'Spoof video streams' should be the same translation used for 'revanced_spoof_video_streams_screen_title'.
'Android No SDK' must be kept untranslated. -->
<!-- 'Watch in VR' should be translated using the same localized wording YouTube displays for the menu item. --> <!-- 'Watch in VR' should be translated using the same localized wording YouTube displays for the menu item. -->
</patch> </patch>
<patch id="layout.buttons.overlay.hidePlayerOverlayButtonsPatch"> <patch id="layout.buttons.overlay.hidePlayerOverlayButtonsPatch">
@@ -267,10 +269,12 @@ Second \"item\" text"</string>
</patch> </patch>
<patch id="interaction.permanentrepeat.permanentRepeatPatch"> <patch id="interaction.permanentrepeat.permanentRepeatPatch">
</patch> </patch>
<patch id="layout.castbutton.hideCastButton"> <patch id="layout.buttons.hideButtons">
</patch> </patch>
<patch id="layout.compactheader.hideCategoryBar"> <patch id="layout.compactheader.hideCategoryBar">
</patch> </patch>
<patch id="layout.miniplayercolor.changeMiniplayerColor">
</patch>
<patch id="layout.navigationbar.navigationBarPatch"> <patch id="layout.navigationbar.navigationBarPatch">
<!-- 'Home' should be translated using the same localized wording YouTube Music displays for the tab. --> <!-- 'Home' should be translated using the same localized wording YouTube Music displays for the tab. -->
<!-- 'Samples' should be translated using the same localized wording YouTube Music displays for the tab. --> <!-- 'Samples' should be translated using the same localized wording YouTube Music displays for the tab. -->

View File

@@ -1,5 +1,4 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<!-- Copyright 2024 ReVanced. See https://github.com/ReVanced/revanced-branding -->
<!-- <!--
All strings must have a unique path, even if the same string is declared in two different apps. All strings must have a unique path, even if the same string is declared in two different apps.
@@ -64,9 +63,11 @@ Second \"item\" text"</string>
<!-- https://logos.fandom.com/wiki/YouTube/Yoodles --> <!-- https://logos.fandom.com/wiki/YouTube/Yoodles -->
<!-- '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. -->
<!-- 'Community' should be translated with the same localized wording that YouTube displays. -->
<!-- 'For You' should be translated using the same localized wording YouTube displays. --> <!-- 'For You' should be translated using the same localized wording YouTube displays. -->
<!-- 'Visit Community' should be translated with the same localized wording that YouTube displays. --> <!-- 'Join' should be translated with the same localized wording that YouTube displays. -->
<!-- 'Visit store' should be translated with the same localized wording that YouTube displays. --> <!-- 'Store' should be translated with the same localized wording that YouTube displays. -->
<!-- 'Subscribe' should be translated with the same localized wording that YouTube displays. -->
<!-- 'Component path builder strings' is the technical name for identifying the Litho UI layout items to hide. This is an advanced feature and most users will never use this. --> <!-- 'Component path builder strings' is the technical name for identifying the Litho UI layout items to hide. This is an advanced feature and most users will never use this. -->
<!-- Translations should lanaguge similar to revanced_hide_upload_time_user_dialog_message --> <!-- Translations should lanaguge similar to revanced_hide_upload_time_user_dialog_message -->
<!-- Translations should lanaguge similar to revanced_hide_view_count_user_dialog_message --> <!-- Translations should lanaguge similar to revanced_hide_view_count_user_dialog_message -->
@@ -110,7 +111,7 @@ Second \"item\" text"</string>
<!-- 'Remix' should be translated with the same localized wording that YouTube displays. --> <!-- 'Remix' should be translated with the same localized wording that YouTube displays. -->
<!-- 'Download' should be translated with the same localized wording that YouTube displays. --> <!-- 'Download' should be translated with the same localized wording that YouTube displays. -->
<!-- 'Hype' should be translated with the same localized wording that YouTube displays. <!-- 'Hype' should be translated with the same localized wording that YouTube displays.
This button only shows on videos uploaded by the logged in user. --> This button only shows on videos uploaded by the logged-in user. -->
<!-- 'Promote' should be translated with the same localized wording that YouTube displays. --> <!-- 'Promote' should be translated with the same localized wording that YouTube displays. -->
<!-- 'Thanks' should be translated with the same localized wording that YouTube displays. --> <!-- 'Thanks' should be translated with the same localized wording that YouTube displays. -->
<!-- 'Ask' should be translated with the same localized wording that YouTube displays. <!-- 'Ask' should be translated with the same localized wording that YouTube displays.
@@ -137,7 +138,8 @@ Second \"item\" text"</string>
<!-- 'Lock screen' should be translated using the same localized wording YouTube displays for the menu item. --> <!-- 'Lock screen' should be translated using the same localized wording YouTube displays for the menu item. -->
<!-- 'Listen with YouTube Music' should be translated using the same localized wording YouTube displays for the menu item. --> <!-- 'Listen with YouTube Music' should be translated using the same localized wording YouTube displays for the menu item. -->
<!-- 'Audio track' should be translated using the same localized wording YouTube displays for the menu item. --> <!-- 'Audio track' should be translated using the same localized wording YouTube displays for the menu item. -->
<!-- 'Spoof video streams' should be the same translation used for 'revanced_spoof_video_streams_screen_title'. --> <!-- 'Spoof video streams' should be the same translation used for 'revanced_spoof_video_streams_screen_title'.
'Android No SDK' must be kept untranslated. -->
<!-- 'Watch in VR' should be translated using the same localized wording YouTube displays for the menu item. --> <!-- 'Watch in VR' should be translated using the same localized wording YouTube displays for the menu item. -->
</patch> </patch>
<patch id="layout.buttons.overlay.hidePlayerOverlayButtonsPatch"> <patch id="layout.buttons.overlay.hidePlayerOverlayButtonsPatch">
@@ -267,10 +269,12 @@ Second \"item\" text"</string>
</patch> </patch>
<patch id="interaction.permanentrepeat.permanentRepeatPatch"> <patch id="interaction.permanentrepeat.permanentRepeatPatch">
</patch> </patch>
<patch id="layout.castbutton.hideCastButton"> <patch id="layout.buttons.hideButtons">
</patch> </patch>
<patch id="layout.compactheader.hideCategoryBar"> <patch id="layout.compactheader.hideCategoryBar">
</patch> </patch>
<patch id="layout.miniplayercolor.changeMiniplayerColor">
</patch>
<patch id="layout.navigationbar.navigationBarPatch"> <patch id="layout.navigationbar.navigationBarPatch">
<!-- 'Home' should be translated using the same localized wording YouTube Music displays for the tab. --> <!-- 'Home' should be translated using the same localized wording YouTube Music displays for the tab. -->
<!-- 'Samples' should be translated using the same localized wording YouTube Music displays for the tab. --> <!-- 'Samples' should be translated using the same localized wording YouTube Music displays for the tab. -->

View File

@@ -1,5 +1,4 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<!-- Copyright 2024 ReVanced. See https://github.com/ReVanced/revanced-branding -->
<!-- <!--
All strings must have a unique path, even if the same string is declared in two different apps. All strings must have a unique path, even if the same string is declared in two different apps.
@@ -45,13 +44,14 @@ Second \"item\" text"</string>
<string name="revanced_check_environment_not_near_patch_time_invalid">تاريخ بناء APK تالف</string> <string name="revanced_check_environment_not_near_patch_time_invalid">تاريخ بناء APK تالف</string>
</patch> </patch>
<patch id="misc.dns.checkWatchHistoryDomainNameResolutionPatch"> <patch id="misc.dns.checkWatchHistoryDomainNameResolutionPatch">
<string name="revanced_check_watch_history_domain_name_dialog_title">تحذير</string> <string name="revanced_check_watch_history_domain_name_dialog_title">إشعار ReVanced</string>
<string name="revanced_check_watch_history_domain_name_dialog_message">لم يتم حفظ سجل المشاهدة الخاص بك.&lt;br&gt;&lt;br&gt;من المرجح أن يكون السبب في ذلك هو مانع إعلانات DNS أو وكيل الشبكة.&lt;br&gt;&lt;br&gt;لإصلاح هذه المشكلة، قم بإضافة &lt;b&gt;s.youtube.com&lt;/b&gt; إلى القائمة البيضاء أو قم بإيقاف تشغيل جميع أدوات حظر DNS ووكلاء البروكسي.</string> <string name="revanced_check_watch_history_domain_name_dialog_message">لم يتم حفظ سجل المشاهدة الخاص بك.&lt;br&gt;&lt;br&gt;من المرجح أن يكون السبب في ذلك هو مانع إعلانات DNS أو وكيل الشبكة.&lt;br&gt;&lt;br&gt;لإصلاح هذه المشكلة، قم بإضافة &lt;b&gt;s.youtube.com&lt;/b&gt; إلى القائمة البيضاء أو قم بإيقاف تشغيل جميع أدوات حظر DNS ووكلاء البروكسي.</string>
<string name="revanced_check_watch_history_domain_name_dialog_ignore">لا تعرض مرة أخرى</string> <string name="revanced_check_watch_history_domain_name_dialog_ignore">لا تعرض مرة أخرى</string>
</patch> </patch>
<patch id="misc.settings.settingsResourcePatch"> <patch id="misc.settings.settingsResourcePatch">
<string name="revanced_settings_submenu_title">الإعدادات</string> <string name="revanced_settings_submenu_title">الإعدادات</string>
<string name="revanced_settings_confirm_user_dialog_title">هل أنت متأكد أنك تريد المتابعة؟</string> <string name="revanced_settings_confirm_user_dialog_title">هل أنت متأكد أنك تريد المتابعة؟</string>
<string name="revanced_settings_save">حفظ</string>
<string name="revanced_settings_reset">إعادة التعيين</string> <string name="revanced_settings_reset">إعادة التعيين</string>
<string name="revanced_settings_reset_color">إعادة تعيين اللون</string> <string name="revanced_settings_reset_color">إعادة تعيين اللون</string>
<string name="revanced_settings_color_invalid">لون غير صالح</string> <string name="revanced_settings_color_invalid">لون غير صالح</string>
@@ -164,6 +164,14 @@ Second \"item\" text"</string>
<string name="revanced_debug_logs_clear_buffer_title">مسح سجلات تصحيح الأخطاء</string> <string name="revanced_debug_logs_clear_buffer_title">مسح سجلات تصحيح الأخطاء</string>
<string name="revanced_debug_logs_clear_buffer_summary">يمسح جميع سجلات تصحيح أخطاء ReVanced المخزنة</string> <string name="revanced_debug_logs_clear_buffer_summary">يمسح جميع سجلات تصحيح أخطاء ReVanced المخزنة</string>
<string name="revanced_debug_logs_clear_toast">تم مسح السجلات</string> <string name="revanced_debug_logs_clear_toast">تم مسح السجلات</string>
<string name="revanced_debug_feature_flags_manager_title">مدير Feature Flags</string>
<string name="revanced_debug_feature_flags_manager_summary">إدارة Feature Flags المنطقية</string>
<string name="revanced_debug_feature_flags_manager_active_header">Flags نشطة (%d)</string>
<string name="revanced_debug_feature_flags_manager_blocked_header">Flags محظورة (%d)</string>
<string name="revanced_debug_feature_flags_manager_search_hint">البحث عن Flags...</string>
<string name="revanced_debug_feature_flags_manager_toast_saved">تم حفظ Flags</string>
<string name="revanced_debug_feature_flags_manager_toast_reset">تم إعادة تعيين Flags</string>
<string name="revanced_debug_feature_flags_manager_toast_copied">تم نسخ Flags إلى الحافظة</string>
</patch> </patch>
<patch id="misc.privacy.sanitizeSharingLinksPatch"> <patch id="misc.privacy.sanitizeSharingLinksPatch">
<string name="revanced_sanitize_sharing_links_title">تطهير روابط المشاركة</string> <string name="revanced_sanitize_sharing_links_title">تطهير روابط المشاركة</string>
@@ -274,6 +282,9 @@ Second \"item\" text"</string>
<string name="revanced_hide_video_recommendation_labels_title">إخفاء تسميات توصيات الفيديو</string> <string name="revanced_hide_video_recommendation_labels_title">إخفاء تسميات توصيات الفيديو</string>
<string name="revanced_hide_video_recommendation_labels_summary_on">تم إخفاء تسميات \'شاهد المستخدمون أيضًا\' و\'قد يعجبك أيضًا\' في نتائج البحث</string> <string name="revanced_hide_video_recommendation_labels_summary_on">تم إخفاء تسميات \'شاهد المستخدمون أيضًا\' و\'قد يعجبك أيضًا\' في نتائج البحث</string>
<string name="revanced_hide_video_recommendation_labels_summary_off">يتم عرض تسميات \'شاهد المستخدمون أيضًا\' و\'قد يعجبك أيضًا\' في نتائج البحث</string> <string name="revanced_hide_video_recommendation_labels_summary_off">يتم عرض تسميات \'شاهد المستخدمون أيضًا\' و\'قد يعجبك أيضًا\' في نتائج البحث</string>
<string name="revanced_hide_visual_spacer_title">إخفاء المسافة البادئة المرئية</string>
<string name="revanced_hide_visual_spacer_summary_on">المسافة البادئة المرئية مخفية</string>
<string name="revanced_hide_visual_spacer_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">تم إخفاء رسوم Doodles المتحركة على شعار YouTube</string> <string name="revanced_hide_doodles_summary_on">تم إخفاء رسوم Doodles المتحركة على شعار YouTube</string>
@@ -334,12 +345,21 @@ Second \"item\" text"</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_featured_links_section_title">إخفاء الروابط المميزة</string>
<string name="revanced_hide_featured_links_section_summary_on">تم إخفاء قسم الروابط المميزة</string>
<string name="revanced_hide_featured_links_section_summary_off">يتم عرض قسم الروابط المميزة</string>
<string name="revanced_hide_featured_videos_section_title">إخفاء الفيديوهات المميزة</string>
<string name="revanced_hide_featured_videos_section_summary_on">تم إخفاء قسم الفيديوهات المميزة</string>
<string name="revanced_hide_featured_videos_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_subscribe_button_title">إخفاء زر الاشتراك</string>
<string name="revanced_hide_subscribe_button_summary_on">تم إخفاء زر الاشتراك</string>
<string name="revanced_hide_subscribe_button_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>
@@ -361,24 +381,32 @@ Second \"item\" text"</string>
<string name="revanced_hide_filter_bar_feed_in_history_summary_off">يُعرض في السجلّ</string> <string name="revanced_hide_filter_bar_feed_in_history_summary_off">يُعرض في السجلّ</string>
<string name="revanced_channel_screen_title">صفحة القناة</string> <string name="revanced_channel_screen_title">صفحة القناة</string>
<string name="revanced_channel_screen_summary">إخفاء أو عرض مكونات صفحة القناة</string> <string name="revanced_channel_screen_summary">إخفاء أو عرض مكونات صفحة القناة</string>
<!-- 'Community' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_community_button_title">إخفاء زر المنتدى</string>
<string name="revanced_hide_community_button_summary_on">تم إخفاء زر المجتمع</string>
<string name="revanced_hide_community_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>
<!-- 'Join' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_join_button_title">إخفاء زر الانضمام</string>
<string name="revanced_hide_join_button_summary_on">تم إخفاء زر الانضمام</string>
<string name="revanced_hide_join_button_summary_off">يتم عرض زر الانضمام</string>
<string name="revanced_hide_links_preview_title">إخفاء معاينة الروابط</string> <string name="revanced_hide_links_preview_title">إخفاء معاينة الروابط</string>
<string name="revanced_hide_links_preview_summary_on">تم إخفاء معاينة الروابط</string> <string name="revanced_hide_links_preview_summary_on">تم إخفاء معاينة الروابط</string>
<string name="revanced_hide_links_preview_summary_off">يتم عرض معاينة الروابط</string> <string name="revanced_hide_links_preview_summary_off">يتم عرض معاينة الروابط</string>
<string name="revanced_hide_members_shelf_title">إخفاء رف الأعضاء</string> <string name="revanced_hide_members_shelf_title">إخفاء رف الأعضاء</string>
<string name="revanced_hide_members_shelf_summary_on">تم إخفاء رف الأعضاء</string> <string name="revanced_hide_members_shelf_summary_on">تم إخفاء رف الأعضاء</string>
<string name="revanced_hide_members_shelf_summary_off">يتم عرض رف الأعضاء</string> <string name="revanced_hide_members_shelf_summary_off">يتم عرض رف الأعضاء</string>
<!-- 'Visit Community' should be translated with the same localized wording that YouTube displays. --> <!-- 'Store' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_visit_community_button_title">إخفاء زر \'زيارة المجتمع\'</string> <string name="revanced_hide_store_button_title">إخفاء زر المتجر</string>
<string name="revanced_hide_visit_community_button_summary_on">تم إخفاء زر زيارة المجتمع</string> <string name="revanced_hide_store_button_summary_on">تم إخفاء زر المتجر</string>
<string name="revanced_hide_visit_community_button_summary_off">يتم عرض زر زيارة المجتمع</string> <string name="revanced_hide_store_button_summary_off">يتم عرض زر المتجر</string>
<!-- 'Visit store' should be translated with the same localized wording that YouTube displays. --> <!-- 'Subscribe' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_visit_store_button_title">إخفاء زر \'زيارة المتجر\'</string> <string name="revanced_hide_subscribe_button_in_channel_page_title">إخفاء زر الاشتراك</string>
<string name="revanced_hide_visit_store_button_summary_on">تم إخفاء زر زيارة المتجر</string> <string name="revanced_hide_subscribe_button_in_channel_page_summary_on">تم إخفاء زر الاشتراك</string>
<string name="revanced_hide_visit_store_button_summary_off">يتم عرض زر زيارة المتجر</string> <string name="revanced_hide_subscribe_button_in_channel_page_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_ai_chat_summary_title">إخفاء ملخص محادثات الذكاء الاصطناعي</string> <string name="revanced_hide_comments_ai_chat_summary_title">إخفاء ملخص محادثات الذكاء الاصطناعي</string>
@@ -520,11 +548,11 @@ 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 للفيديو. انقر لنسخ عنوان URL للفيديو. انقر مع الاستمرار للنسخ مع الطابع الزمني</string>
<string name="revanced_copy_video_url_summary_off">لا يتم عرض الزر</string> <string name="revanced_copy_video_url_summary_off">لا يتم عرض زر نسخ عنوان URL للفيديو</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 مع الطابع الزمني. انقر لنسخ عنوان URL للفيديو مع الطابع الزمني. انقر مع الاستمرار للنسخ بدون الطابع الزمني</string>
<string name="revanced_copy_video_url_timestamp_summary_off">لا يتم عرض الزر</string> <string name="revanced_copy_video_url_timestamp_summary_off">لا يتم عرض زر نسخ عنوان URL مع الطابع الزمني</string>
</patch> </patch>
<patch id="interaction.dialog.removeViewerDiscretionDialogPatch"> <patch id="interaction.dialog.removeViewerDiscretionDialogPatch">
<string name="revanced_remove_viewer_discretion_dialog_title">إزالة مربع حوار تقدير المشاهد</string> <string name="revanced_remove_viewer_discretion_dialog_title">إزالة مربع حوار تقدير المشاهد</string>
@@ -665,7 +693,7 @@ Second \"item\" text"</string>
<string name="revanced_hide_download_button_summary_on">تم إخفاء زر تنزيل</string> <string name="revanced_hide_download_button_summary_on">تم إخفاء زر تنزيل</string>
<string name="revanced_hide_download_button_summary_off">يتم عرض زر تنزيل</string> <string name="revanced_hide_download_button_summary_off">يتم عرض زر تنزيل</string>
<!-- 'Hype' should be translated with the same localized wording that YouTube displays. <!-- 'Hype' should be translated with the same localized wording that YouTube displays.
This button only shows on videos uploaded by the logged in user. --> This button only shows on videos uploaded by the logged-in user. -->
<string name="revanced_hide_hype_button_title">إخفاء التشجيع</string> <string name="revanced_hide_hype_button_title">إخفاء التشجيع</string>
<string name="revanced_hide_hype_button_summary_on">تم إخفاء زر التشجيع</string> <string name="revanced_hide_hype_button_summary_on">تم إخفاء زر التشجيع</string>
<string name="revanced_hide_hype_button_summary_off">يتم عرض زر التشجيع</string> <string name="revanced_hide_hype_button_summary_off">يتم عرض زر التشجيع</string>
@@ -786,10 +814,11 @@ Second \"item\" text"</string>
<string name="revanced_hide_player_flyout_audio_track_title">إخفاء المقطع الصوتي</string> <string name="revanced_hide_player_flyout_audio_track_title">إخفاء المقطع الصوتي</string>
<string name="revanced_hide_player_flyout_audio_track_summary_on">تم إخفاء قائمة المقطع الصوتي</string> <string name="revanced_hide_player_flyout_audio_track_summary_on">تم إخفاء قائمة المقطع الصوتي</string>
<string name="revanced_hide_player_flyout_audio_track_summary_off">يتم عرض قائمة المقطع الصوتي</string> <string name="revanced_hide_player_flyout_audio_track_summary_off">يتم عرض قائمة المقطع الصوتي</string>
<!-- 'Spoof video streams' should be the same translation used for 'revanced_spoof_video_streams_screen_title'. --> <!-- 'Spoof video streams' should be the same translation used for 'revanced_spoof_video_streams_screen_title'.
'Android No SDK' must be kept untranslated. -->
<string name="revanced_hide_player_flyout_audio_track_not_available">"تم إخفاء قائمة المقطع الصوتي <string name="revanced_hide_player_flyout_audio_track_not_available">"تم إخفاء قائمة المقطع الصوتي
لعرض قائمة المقطع الصوتي، غيّر 'Spoof video streams' إلى iPadOS"</string> لعرض قائمة المقطع الصوتي، غيّر 'Spoof Video Streams' إلى 'Android No SDK'"</string>
<!-- 'Watch in VR' should be translated using the same localized wording YouTube displays for the menu item. --> <!-- 'Watch in VR' should be translated using the same localized wording YouTube displays for the menu item. -->
<string name="revanced_hide_player_flyout_watch_in_vr_title">إخفاء المشاهدة في VR</string> <string name="revanced_hide_player_flyout_watch_in_vr_title">إخفاء المشاهدة في VR</string>
<string name="revanced_hide_player_flyout_watch_in_vr_summary_on">تم إخفاء قائمة المشاهدة في الوضع الافتراضي</string> <string name="revanced_hide_player_flyout_watch_in_vr_summary_on">تم إخفاء قائمة المشاهدة في الوضع الافتراضي</string>
@@ -865,6 +894,9 @@ Second \"item\" text"</string>
<string name="revanced_hide_shorts_history_title">إخفاء Shorts في السجلّ</string> <string name="revanced_hide_shorts_history_title">إخفاء Shorts في السجلّ</string>
<string name="revanced_hide_shorts_history_summary_on">مخفي في السجلّ</string> <string name="revanced_hide_shorts_history_summary_on">مخفي في السجلّ</string>
<string name="revanced_hide_shorts_history_summary_off">يُعرض في السجلّ</string> <string name="revanced_hide_shorts_history_summary_off">يُعرض في السجلّ</string>
<string name="revanced_hide_shorts_auto_dubbed_label_title">إخفاء تسمية \"مدبلج تلقائياً\"</string>
<string name="revanced_hide_shorts_auto_dubbed_label_summary_on">تم إخفاء تسمية الدبلجة التلقائية</string>
<string name="revanced_hide_shorts_auto_dubbed_label_summary_off">يتم عرض تسمية الدبلجة التلقائية</string>
<string name="revanced_hide_shorts_super_thanks_button_title">إخفاء زر شراء Super Thanks</string> <string name="revanced_hide_shorts_super_thanks_button_title">إخفاء زر شراء Super Thanks</string>
<string name="revanced_hide_shorts_super_thanks_button_summary_on">تم إخفاء زر شراء Super Thanks</string> <string name="revanced_hide_shorts_super_thanks_button_summary_on">تم إخفاء زر شراء Super Thanks</string>
<string name="revanced_hide_shorts_super_thanks_button_summary_off">يتم عرض زر شراء Super Thanks</string> <string name="revanced_hide_shorts_super_thanks_button_summary_off">يتم عرض زر شراء Super Thanks</string>
@@ -881,6 +913,9 @@ Second \"item\" text"</string>
<string name="revanced_hide_shorts_join_button_title">إخفاء زر الانضمام</string> <string name="revanced_hide_shorts_join_button_title">إخفاء زر الانضمام</string>
<string name="revanced_hide_shorts_join_button_summary_on">تم إخفاء زر الانضمام</string> <string name="revanced_hide_shorts_join_button_summary_on">تم إخفاء زر الانضمام</string>
<string name="revanced_hide_shorts_join_button_summary_off">يتم عرض زر الانضمام</string> <string name="revanced_hide_shorts_join_button_summary_off">يتم عرض زر الانضمام</string>
<string name="revanced_hide_shorts_live_preview_title">إخفاء المعاينة المباشرة</string>
<string name="revanced_hide_shorts_live_preview_summary_on">تم إخفاء معاينة البث المباشر</string>
<string name="revanced_hide_shorts_live_preview_summary_off">تم عرض معاينة البث المباشر</string>
<string name="revanced_hide_shorts_location_label_title">إخفاء تسمية الموقع</string> <string name="revanced_hide_shorts_location_label_title">إخفاء تسمية الموقع</string>
<string name="revanced_hide_shorts_location_label_summary_on">تم إخفاء تسمية الموقع</string> <string name="revanced_hide_shorts_location_label_summary_on">تم إخفاء تسمية الموقع</string>
<string name="revanced_hide_shorts_location_label_summary_off">يتم عرض تسمية الموقع</string> <string name="revanced_hide_shorts_location_label_summary_off">يتم عرض تسمية الموقع</string>
@@ -1560,13 +1595,13 @@ Second \"item\" text"</string>
</patch> </patch>
<patch id="video.speed.button.playbackSpeedButtonPatch"> <patch id="video.speed.button.playbackSpeedButtonPatch">
<string name="revanced_playback_speed_dialog_button_title">عرض زر مربع حوار السرعة</string> <string name="revanced_playback_speed_dialog_button_title">عرض زر مربع حوار السرعة</string>
<string name="revanced_playback_speed_dialog_button_summary_on">يتم عرض الزر. انقر مع الاستمرار لإعادة ضبط سرعة التشغيل إلى الوضع الافتراضي</string> <string name="revanced_playback_speed_dialog_button_summary_on">يتم عرض زر مربع حوار السرعة. انقر مع الاستمرار لإعادة ضبط سرعة التشغيل إلى الوضع الافتراضي</string>
<string name="revanced_playback_speed_dialog_button_summary_off">لا يتم عرض الزر</string> <string name="revanced_playback_speed_dialog_button_summary_off">لا يتم عرض زر مربع حوار السرعة</string>
</patch> </patch>
<patch id="video.quality.button.videoQualityDialogButtonPatch"> <patch id="video.quality.button.videoQualityDialogButtonPatch">
<string name="revanced_video_quality_dialog_button_title">عرض زر جودة الفيديو</string> <string name="revanced_video_quality_dialog_button_title">عرض زر جودة الفيديو</string>
<string name="revanced_video_quality_dialog_button_summary_on">يتم عرض الزر. انقر مع الاستمرار لإعادة تعيين الجودة إلى الوضع الافتراضي</string> <string name="revanced_video_quality_dialog_button_summary_on">يتم عرض زر جودة الفيديو. انقر مع الاستمرار لإعادة تعيين الجودة إلى الوضع الافتراضي</string>
<string name="revanced_video_quality_dialog_button_summary_off">لا يتم عرض الزر</string> <string name="revanced_video_quality_dialog_button_summary_off">لا يتم عرض زر جودة الفيديو</string>
</patch> </patch>
<patch id="video.speed.custom.customPlaybackSpeedPatch"> <patch id="video.speed.custom.customPlaybackSpeedPatch">
<string name="revanced_custom_speed_menu_title">قائمة سرعة التشغيل المخصصة</string> <string name="revanced_custom_speed_menu_title">قائمة سرعة التشغيل المخصصة</string>
@@ -1663,16 +1698,30 @@ Second \"item\" text"</string>
<string name="revanced_music_play_permanent_repeat_summary_on">تم تمكين التكرار الدائم</string> <string name="revanced_music_play_permanent_repeat_summary_on">تم تمكين التكرار الدائم</string>
<string name="revanced_music_play_permanent_repeat_summary_off">تم تعطيل التكرار الدائم</string> <string name="revanced_music_play_permanent_repeat_summary_off">تم تعطيل التكرار الدائم</string>
</patch> </patch>
<patch id="layout.castbutton.hideCastButton"> <patch id="layout.buttons.hideButtons">
<string name="revanced_music_hide_cast_button_title">إخفاء زر البث</string> <string name="revanced_music_hide_cast_button_title">إخفاء زر البث</string>
<string name="revanced_music_hide_cast_button_summary_on">تم إخفاء زر البث</string> <string name="revanced_music_hide_cast_button_summary_on">تم إخفاء زر البث</string>
<string name="revanced_music_hide_cast_button_summary_off">يتم عرض زر البث</string> <string name="revanced_music_hide_cast_button_summary_off">يتم عرض زر البث</string>
<string name="revanced_music_hide_history_button_title">إخفاء زر السجل</string>
<string name="revanced_music_hide_history_button_summary_on">تم إخفاء زر السجل</string>
<string name="revanced_music_hide_history_button_summary_off">يتم عرض زر السجل</string>
<string name="revanced_music_hide_notification_button_title">إخفاء زر الإشعارات</string>
<string name="revanced_music_hide_notification_button_summary_on">تم إخفاء زر الإشعارات</string>
<string name="revanced_music_hide_notification_button_summary_off">يتم عرض زر الإشعارات</string>
<string name="revanced_music_hide_search_button_title">إخفاء زر البحث</string>
<string name="revanced_music_hide_search_button_summary_on">تم إخفاء زر البحث</string>
<string name="revanced_music_hide_search_button_summary_off">يتم عرض زر البحث</string>
</patch> </patch>
<patch id="layout.compactheader.hideCategoryBar"> <patch id="layout.compactheader.hideCategoryBar">
<string name="revanced_music_hide_category_bar_title">إخفاء شريط الفئات</string> <string name="revanced_music_hide_category_bar_title">إخفاء شريط الفئات</string>
<string name="revanced_music_hide_category_bar_summary_on">تم إخفاء شريط الفئات</string> <string name="revanced_music_hide_category_bar_summary_on">تم إخفاء شريط الفئات</string>
<string name="revanced_music_hide_category_bar_summary_off">يتم عرض شريط الفئات</string> <string name="revanced_music_hide_category_bar_summary_off">يتم عرض شريط الفئات</string>
</patch> </patch>
<patch id="layout.miniplayercolor.changeMiniplayerColor">
<string name="revanced_music_change_miniplayer_color_title">تغيير لون المشغل المصغر</string>
<string name="revanced_music_change_miniplayer_color_summary_on">يتطابق لون المشغل المصغر مع المشغل بملء الشاشة</string>
<string name="revanced_music_change_miniplayer_color_summary_off">يستخدم المشغل المصغر اللون الافتراضي</string>
</patch>
<patch id="layout.navigationbar.navigationBarPatch"> <patch id="layout.navigationbar.navigationBarPatch">
<string name="revanced_music_navigation_bar_screen_title">شريط التنقل</string> <string name="revanced_music_navigation_bar_screen_title">شريط التنقل</string>
<string name="revanced_music_navigation_bar_screen_summary">إخفاء أزرار شريط التنقل أو تغييرها</string> <string name="revanced_music_navigation_bar_screen_summary">إخفاء أزرار شريط التنقل أو تغييرها</string>

View File

@@ -1,5 +1,4 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<!-- Copyright 2024 ReVanced. See https://github.com/ReVanced/revanced-branding -->
<!-- <!--
All strings must have a unique path, even if the same string is declared in two different apps. All strings must have a unique path, even if the same string is declared in two different apps.
@@ -29,7 +28,6 @@ Second \"item\" text"</string>
<patch id="misc.checks.checkEnvironmentPatch"> <patch id="misc.checks.checkEnvironmentPatch">
</patch> </patch>
<patch id="misc.dns.checkWatchHistoryDomainNameResolutionPatch"> <patch id="misc.dns.checkWatchHistoryDomainNameResolutionPatch">
<string name="revanced_check_watch_history_domain_name_dialog_title">সকীয়নি</string>
</patch> </patch>
<patch id="misc.settings.settingsResourcePatch"> <patch id="misc.settings.settingsResourcePatch">
<!-- Settings about dialog. --> <!-- Settings about dialog. -->
@@ -65,9 +63,11 @@ Second \"item\" text"</string>
<!-- https://logos.fandom.com/wiki/YouTube/Yoodles --> <!-- https://logos.fandom.com/wiki/YouTube/Yoodles -->
<!-- '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. -->
<!-- 'Community' should be translated with the same localized wording that YouTube displays. -->
<!-- 'For You' should be translated using the same localized wording YouTube displays. --> <!-- 'For You' should be translated using the same localized wording YouTube displays. -->
<!-- 'Visit Community' should be translated with the same localized wording that YouTube displays. --> <!-- 'Join' should be translated with the same localized wording that YouTube displays. -->
<!-- 'Visit store' should be translated with the same localized wording that YouTube displays. --> <!-- 'Store' should be translated with the same localized wording that YouTube displays. -->
<!-- 'Subscribe' should be translated with the same localized wording that YouTube displays. -->
<!-- 'Component path builder strings' is the technical name for identifying the Litho UI layout items to hide. This is an advanced feature and most users will never use this. --> <!-- 'Component path builder strings' is the technical name for identifying the Litho UI layout items to hide. This is an advanced feature and most users will never use this. -->
<!-- Translations should lanaguge similar to revanced_hide_upload_time_user_dialog_message --> <!-- Translations should lanaguge similar to revanced_hide_upload_time_user_dialog_message -->
<!-- Translations should lanaguge similar to revanced_hide_view_count_user_dialog_message --> <!-- Translations should lanaguge similar to revanced_hide_view_count_user_dialog_message -->
@@ -111,7 +111,7 @@ Second \"item\" text"</string>
<!-- 'Remix' should be translated with the same localized wording that YouTube displays. --> <!-- 'Remix' should be translated with the same localized wording that YouTube displays. -->
<!-- 'Download' should be translated with the same localized wording that YouTube displays. --> <!-- 'Download' should be translated with the same localized wording that YouTube displays. -->
<!-- 'Hype' should be translated with the same localized wording that YouTube displays. <!-- 'Hype' should be translated with the same localized wording that YouTube displays.
This button only shows on videos uploaded by the logged in user. --> This button only shows on videos uploaded by the logged-in user. -->
<!-- 'Promote' should be translated with the same localized wording that YouTube displays. --> <!-- 'Promote' should be translated with the same localized wording that YouTube displays. -->
<!-- 'Thanks' should be translated with the same localized wording that YouTube displays. --> <!-- 'Thanks' should be translated with the same localized wording that YouTube displays. -->
<!-- 'Ask' should be translated with the same localized wording that YouTube displays. <!-- 'Ask' should be translated with the same localized wording that YouTube displays.
@@ -138,7 +138,8 @@ Second \"item\" text"</string>
<!-- 'Lock screen' should be translated using the same localized wording YouTube displays for the menu item. --> <!-- 'Lock screen' should be translated using the same localized wording YouTube displays for the menu item. -->
<!-- 'Listen with YouTube Music' should be translated using the same localized wording YouTube displays for the menu item. --> <!-- 'Listen with YouTube Music' should be translated using the same localized wording YouTube displays for the menu item. -->
<!-- 'Audio track' should be translated using the same localized wording YouTube displays for the menu item. --> <!-- 'Audio track' should be translated using the same localized wording YouTube displays for the menu item. -->
<!-- 'Spoof video streams' should be the same translation used for 'revanced_spoof_video_streams_screen_title'. --> <!-- 'Spoof video streams' should be the same translation used for 'revanced_spoof_video_streams_screen_title'.
'Android No SDK' must be kept untranslated. -->
<!-- 'Watch in VR' should be translated using the same localized wording YouTube displays for the menu item. --> <!-- 'Watch in VR' should be translated using the same localized wording YouTube displays for the menu item. -->
</patch> </patch>
<patch id="layout.buttons.overlay.hidePlayerOverlayButtonsPatch"> <patch id="layout.buttons.overlay.hidePlayerOverlayButtonsPatch">
@@ -269,10 +270,12 @@ Second \"item\" text"</string>
</patch> </patch>
<patch id="interaction.permanentrepeat.permanentRepeatPatch"> <patch id="interaction.permanentrepeat.permanentRepeatPatch">
</patch> </patch>
<patch id="layout.castbutton.hideCastButton"> <patch id="layout.buttons.hideButtons">
</patch> </patch>
<patch id="layout.compactheader.hideCategoryBar"> <patch id="layout.compactheader.hideCategoryBar">
</patch> </patch>
<patch id="layout.miniplayercolor.changeMiniplayerColor">
</patch>
<patch id="layout.navigationbar.navigationBarPatch"> <patch id="layout.navigationbar.navigationBarPatch">
<!-- 'Home' should be translated using the same localized wording YouTube Music displays for the tab. --> <!-- 'Home' should be translated using the same localized wording YouTube Music displays for the tab. -->
<!-- 'Samples' should be translated using the same localized wording YouTube Music displays for the tab. --> <!-- 'Samples' should be translated using the same localized wording YouTube Music displays for the tab. -->

View File

@@ -1,5 +1,4 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<!-- Copyright 2024 ReVanced. See https://github.com/ReVanced/revanced-branding -->
<!-- <!--
All strings must have a unique path, even if the same string is declared in two different apps. All strings must have a unique path, even if the same string is declared in two different apps.
@@ -45,13 +44,14 @@ Second \"item\" text"</string>
<string name="revanced_check_environment_not_near_patch_time_invalid">APK qurulma vaxtı pozulub</string> <string name="revanced_check_environment_not_near_patch_time_invalid">APK qurulma vaxtı pozulub</string>
</patch> </patch>
<patch id="misc.dns.checkWatchHistoryDomainNameResolutionPatch"> <patch id="misc.dns.checkWatchHistoryDomainNameResolutionPatch">
<string name="revanced_check_watch_history_domain_name_dialog_title">Xәbәrdarlıq</string> <string name="revanced_check_watch_history_domain_name_dialog_title">ReVanced Bildiriş</string>
<string name="revanced_check_watch_history_domain_name_dialog_message">Baxış tarixçəniz saxlanmır.&lt;br&gt;&lt;br&gt;Bu çox güman ki, DNS reklam bloklayıcı və ya şəbəkə proksisinə görədir.&lt;br&gt;&lt;br&gt;.Bunu düzəltmək üçün s.youtube.com-u&lt;/b&gt; &lt;b&gt;ağ siyahıya salın və ya bütün DNS bloklayıcıları və proksiləri bağlayın.</string> <string name="revanced_check_watch_history_domain_name_dialog_message">Baxış tarixçəniz saxlanmır.&lt;br&gt;&lt;br&gt;Bu çox güman ki, DNS reklam bloklayıcı və ya şəbəkə proksisinə görədir.&lt;br&gt;&lt;br&gt;.Bunu düzəltmək üçün s.youtube.com-u&lt;/b&gt; &lt;b&gt;ağ siyahıya salın və ya bütün DNS bloklayıcıları və proksiləri bağlayın.</string>
<string name="revanced_check_watch_history_domain_name_dialog_ignore">Təkrar göstərmə</string> <string name="revanced_check_watch_history_domain_name_dialog_ignore">Təkrar göstərmə</string>
</patch> </patch>
<patch id="misc.settings.settingsResourcePatch"> <patch id="misc.settings.settingsResourcePatch">
<string name="revanced_settings_submenu_title">Tənzimləmələr</string> <string name="revanced_settings_submenu_title">Tənzimləmələr</string>
<string name="revanced_settings_confirm_user_dialog_title">Davam etmək istədiyinizə əminsiniz?</string> <string name="revanced_settings_confirm_user_dialog_title">Davam etmək istədiyinizə əminsiniz?</string>
<string name="revanced_settings_save">Saxla</string>
<string name="revanced_settings_reset">Sıfırla</string> <string name="revanced_settings_reset">Sıfırla</string>
<string name="revanced_settings_reset_color">Rəngi sıfırla</string> <string name="revanced_settings_reset_color">Rəngi sıfırla</string>
<string name="revanced_settings_color_invalid">Yanlış rəng</string> <string name="revanced_settings_color_invalid">Yanlış rəng</string>
@@ -164,6 +164,14 @@ Gözlənilməz hallardan xəbərdar olmayacaqsınız."</string>
<string name="revanced_debug_logs_clear_buffer_title">Sazlama qeydlərini təmizlə</string> <string name="revanced_debug_logs_clear_buffer_title">Sazlama qeydlərini təmizlə</string>
<string name="revanced_debug_logs_clear_buffer_summary">Saxlanılan bütün ReVanced sazlama qeydlərini təmizləyir</string> <string name="revanced_debug_logs_clear_buffer_summary">Saxlanılan bütün ReVanced sazlama qeydlərini təmizləyir</string>
<string name="revanced_debug_logs_clear_toast">Qeydlər silindi</string> <string name="revanced_debug_logs_clear_toast">Qeydlər silindi</string>
<string name="revanced_debug_feature_flags_manager_title">Xüsusiyyət nişançıları idarəedicisi</string>
<string name="revanced_debug_feature_flags_manager_summary">Boolean xüsusiyyət nişançıların idarə et</string>
<string name="revanced_debug_feature_flags_manager_active_header">Aktiv nişançılar (%d)</string>
<string name="revanced_debug_feature_flags_manager_blocked_header">Bloklanmış nişançılar (%d)</string>
<string name="revanced_debug_feature_flags_manager_search_hint">Nişançıları axtarın...</string>
<string name="revanced_debug_feature_flags_manager_toast_saved">Nişançılar saxlandı</string>
<string name="revanced_debug_feature_flags_manager_toast_reset">Nişançılar sıfırlandı</string>
<string name="revanced_debug_feature_flags_manager_toast_copied">Nişançılar buferə köçürüldü</string>
</patch> </patch>
<patch id="misc.privacy.sanitizeSharingLinksPatch"> <patch id="misc.privacy.sanitizeSharingLinksPatch">
<string name="revanced_sanitize_sharing_links_title">Paylaşım linklərin təmizlə</string> <string name="revanced_sanitize_sharing_links_title">Paylaşım linklərin təmizlə</string>
@@ -274,6 +282,9 @@ Hər halda, bunu aktivləşdirmə IP ünvanınız kimi bəzi istifadəçi məlum
<string name="revanced_hide_video_recommendation_labels_title">Video tövsiyə etiketlərini gizlət</string> <string name="revanced_hide_video_recommendation_labels_title">Video tövsiyə etiketlərini gizlət</string>
<string name="revanced_hide_video_recommendation_labels_summary_on">\'İnsanlar həmçinin izləyiblər\' və \'Bunu da bəyənə bilərsiniz\' etiketləri axtarış nəticələrində gizlədilib</string> <string name="revanced_hide_video_recommendation_labels_summary_on">\'İnsanlar həmçinin izləyiblər\' və \'Bunu da bəyənə bilərsiniz\' etiketləri axtarış nəticələrində gizlədilib</string>
<string name="revanced_hide_video_recommendation_labels_summary_off">\'İnsanlar həmçinin izləyiblər\' və \'Bunu da bəyənə bilərsiniz\' etiketləri axtarış nəticələrində görünür</string> <string name="revanced_hide_video_recommendation_labels_summary_off">\'İnsanlar həmçinin izləyiblər\' və \'Bunu da bəyənə bilərsiniz\' etiketləri axtarış nəticələrində görünür</string>
<string name="revanced_hide_visual_spacer_title">Vizual ayırıcı gizlət</string>
<string name="revanced_hide_visual_spacer_summary_on">Vizual ayırıcı gizlənib</string>
<string name="revanced_hide_visual_spacer_summary_off">Vizual ayırıcı göstərilib</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">YouTube Doodles animasiyası simvolda gizlidir</string> <string name="revanced_hide_doodles_summary_on">YouTube Doodles animasiyası simvolda gizlidir</string>
@@ -328,18 +339,27 @@ Hər halda, bunu aktivləşdirmə IP ünvanınız kimi bəzi istifadəçi məlum
<string name="revanced_hide_how_this_was_made_section_title">\'Bu kontent necə hazırlanıb\'ı Gizlət</string> <string name="revanced_hide_how_this_was_made_section_title">\'Bu kontent necə hazırlanıb\'ı Gizlət</string>
<string name="revanced_hide_how_this_was_made_section_summary_on">Bu məzmunun necə hazırlandığı bölməsi gizlidir</string> <string name="revanced_hide_how_this_was_made_section_summary_on">Bu məzmunun necə hazırlandığı bölməsi gizlidir</string>
<string name="revanced_hide_how_this_was_made_section_summary_off">Bu məzmunun necə hazırlandığı bölməsi görünür</string> <string name="revanced_hide_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_hype_points_title">Hype nöqtələrini gizlət</string> <string name="revanced_hide_hype_points_title">Coşqu xalların gizlət</string>
<string name="revanced_hide_hype_points_summary_on">Hype nöqtələri gizlədilib</string> <string name="revanced_hide_hype_points_summary_on">Coşqu xalları gizlədilib</string>
<string name="revanced_hide_hype_points_summary_off">Hype nöqtələri göstərilir</string> <string name="revanced_hide_hype_points_summary_off">Coşqu xalları göstərilir</string>
<string name="revanced_hide_podcast_section_title">\'Podkastı araşdırın\"-ı 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 bölməsin araşdırın gizlidir</string> <string name="revanced_hide_podcast_section_summary_on">Podkast bölməsin araşdırın gizlidir</string>
<string name="revanced_hide_podcast_section_summary_off">Podkast bölməsin araşdırın görünür</string> <string name="revanced_hide_podcast_section_summary_off">Podkast bölməsin araşdırın görünür</string>
<string name="revanced_hide_featured_links_section_title">Seçilən keçidləri gizlət</string>
<string name="revanced_hide_featured_links_section_summary_on">Seçilən keçidlər bölməsi gizlidir</string>
<string name="revanced_hide_featured_links_section_summary_off">Seçilən keçidlər bölməsi göstərilir</string>
<string name="revanced_hide_featured_videos_section_title">Seçilən videoları gizlət</string>
<string name="revanced_hide_featured_videos_section_summary_on">Seçilən videolar bölməsi gizlidir</string>
<string name="revanced_hide_featured_videos_section_summary_off">Seçilən videolar bölməsi göstərilir</string>
<string name="revanced_hide_info_cards_section_title">Məlumat Kartlarını 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 konseptlər-i\" gizlət</string> <string name="revanced_hide_key_concepts_section_title">\"Əsas konseptlər-i\" gizlət</string>
<string name="revanced_hide_key_concepts_section_summary_on">Əsas konseptlər bölməsi gizlidir</string> <string name="revanced_hide_key_concepts_section_summary_on">Əsas konseptlər bölməsi gizlidir</string>
<string name="revanced_hide_key_concepts_section_summary_off">Əsas konseptlər bölməsi görünür</string> <string name="revanced_hide_key_concepts_section_summary_off">Əsas konseptlər bölməsi görünür</string>
<string name="revanced_hide_subscribe_button_title">Abunə ol düyməsini gizlət</string>
<string name="revanced_hide_subscribe_button_summary_on">Abunə ol düyməsi gizlidir</string>
<string name="revanced_hide_subscribe_button_summary_off">Abunə ol düyməsi görünür</string>
<string name="revanced_hide_transcript_section_title">Transkript-i 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>
@@ -361,24 +381,32 @@ Hər halda, bunu aktivləşdirmə IP ünvanınız kimi bəzi istifadəçi məlum
<string name="revanced_hide_filter_bar_feed_in_history_summary_off">Baxış tarixçəsində görünür</string> <string name="revanced_hide_filter_bar_feed_in_history_summary_off">Baxış tarixçəsində görünür</string>
<string name="revanced_channel_screen_title">Kanal səhifəsi</string> <string name="revanced_channel_screen_title">Kanal səhifəsi</string>
<string name="revanced_channel_screen_summary">Kanal səhifə elementlərini gizlət və ya göstər</string> <string name="revanced_channel_screen_summary">Kanal səhifə elementlərini gizlət və ya göstər</string>
<!-- 'Community' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_community_button_title">İcma düyməsini gizlət</string>
<string name="revanced_hide_community_button_summary_on">İcmaya düyməsi gizlidir</string>
<string name="revanced_hide_community_button_summary_off">İcmaya düyməsi görünür</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">\"Sizin üçün\" bölməsin gizlət</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">Sizin üçün cərgəsi gizlidir</string> <string name="revanced_hide_for_you_shelf_summary_on">Sizin üçün cərgəsi gizlidir</string>
<string name="revanced_hide_for_you_shelf_summary_off">Sizin üçün cərgəsi görünür</string> <string name="revanced_hide_for_you_shelf_summary_off">Sizin üçün cərgəsi görünür</string>
<!-- 'Join' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_join_button_title">Qoşulun düyməsini gizlət</string>
<string name="revanced_hide_join_button_summary_on">Qoşul düyməsi gizlidir</string>
<string name="revanced_hide_join_button_summary_off">Qoşul düyməsi görünür</string>
<string name="revanced_hide_links_preview_title">Keçidlərin önizləməsini gizlət</string> <string name="revanced_hide_links_preview_title">Keçidlərin önizləməsini gizlət</string>
<string name="revanced_hide_links_preview_summary_on">Keçidlər önizləməsi gizlədilib</string> <string name="revanced_hide_links_preview_summary_on">Keçidlər önizləməsi gizlədilib</string>
<string name="revanced_hide_links_preview_summary_off">Keçidlər önizləməsi görünür</string> <string name="revanced_hide_links_preview_summary_off">Keçidlər önizləməsi görünür</string>
<string name="revanced_hide_members_shelf_title">Üzvlər cərgəsini gizlət</string> <string name="revanced_hide_members_shelf_title">Üzvlər cərgəsini gizlət</string>
<string name="revanced_hide_members_shelf_summary_on">Üzvlər cərgəsi gizlidir</string> <string name="revanced_hide_members_shelf_summary_on">Üzvlər cərgəsi gizlidir</string>
<string name="revanced_hide_members_shelf_summary_off">Üzvlər cərgəsi görünür</string> <string name="revanced_hide_members_shelf_summary_off">Üzvlər cərgəsi görünür</string>
<!-- 'Visit Community' should be translated with the same localized wording that YouTube displays. --> <!-- 'Store' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_visit_community_button_title">\'İcmaya daxil olun\' düyməsini gizlət</string> <string name="revanced_hide_store_button_title">Mağaza düyməsini gizlət</string>
<string name="revanced_hide_visit_community_button_summary_on">İcmaya daxil ol düyməsi gizlidir</string> <string name="revanced_hide_store_button_summary_on">Mağaza düyməsi gizlidir</string>
<string name="revanced_hide_visit_community_button_summary_off">İcmaya daxil ol düyməsi görünür</string> <string name="revanced_hide_store_button_summary_off">Mağaza düyməsi görünür</string>
<!-- 'Visit store' should be translated with the same localized wording that YouTube displays. --> <!-- 'Subscribe' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_visit_store_button_title">Kanalda \"Mağazaya baxın\" düyməsin gizlə</string> <string name="revanced_hide_subscribe_button_in_channel_page_title">Abunə ol düyməsini gizlət</string>
<string name="revanced_hide_visit_store_button_summary_on">Mağazaya baxın düyməsi gizlidir</string> <string name="revanced_hide_subscribe_button_in_channel_page_summary_on">Abunə ol düyməsi gizlidir</string>
<string name="revanced_hide_visit_store_button_summary_off">Mağazaya baxın düyməsi görünür</string> <string name="revanced_hide_subscribe_button_in_channel_page_summary_off">Abunə ol düyməsi 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_ai_chat_summary_title">Sİ söhbət xülasəsini gizlət</string> <string name="revanced_hide_comments_ai_chat_summary_title">Sİ söhbət xülasəsini gizlət</string>
@@ -520,11 +548,11 @@ 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-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_on">Video URL-ini kopyala düyməsirünür. Video URL-ini kopyalamaq üçün toxunun. Zaman nişanı ilə kopyalamaq üçün toxunub 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">Video URL-ini kopyala düyməsirünmü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_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. 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_on">Zaman nişanı URL-ini kopyala düyməsirünür. Zaman nişanı ilə video URL-ini kopyalamaq üçün toxunun. Zaman nişanı olmadan kopyalamaq üçün toxunub 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">Zaman nişanı URL-ini kopyala düyməsirünmür</string>
</patch> </patch>
<patch id="interaction.dialog.removeViewerDiscretionDialogPatch"> <patch id="interaction.dialog.removeViewerDiscretionDialogPatch">
<string name="revanced_remove_viewer_discretion_dialog_title">İzləyici mülahizə dialoqun sil</string> <string name="revanced_remove_viewer_discretion_dialog_title">İzləyici mülahizə dialoqun sil</string>
@@ -665,7 +693,7 @@ Ekranın sağ tərəfində düzünə sürüşdürərək səs səviyyəsini tənz
<string name="revanced_hide_download_button_summary_on">Yükləmə düyməsi gizlidir</string> <string name="revanced_hide_download_button_summary_on">Yükləmə düyməsi gizlidir</string>
<string name="revanced_hide_download_button_summary_off">Yükləmə düyməsi göstərilir</string> <string name="revanced_hide_download_button_summary_off">Yükləmə düyməsi göstərilir</string>
<!-- 'Hype' should be translated with the same localized wording that YouTube displays. <!-- 'Hype' should be translated with the same localized wording that YouTube displays.
This button only shows on videos uploaded by the logged in user. --> This button only shows on videos uploaded by the logged-in user. -->
<string name="revanced_hide_hype_button_title">Coşqu Gizlət</string> <string name="revanced_hide_hype_button_title">Coşqu Gizlət</string>
<string name="revanced_hide_hype_button_summary_on">Coşqu düyməsi gizlidir</string> <string name="revanced_hide_hype_button_summary_on">Coşqu düyməsi gizlidir</string>
<string name="revanced_hide_hype_button_summary_off">Coşqu düyməsi görünür</string> <string name="revanced_hide_hype_button_summary_off">Coşqu düyməsi görünür</string>
@@ -786,10 +814,11 @@ Bu seçimi dəyişdirmə işə düşmürsə, Gizli rejimə keçməyə çalışı
<string name="revanced_hide_player_flyout_audio_track_title">Səs trekini gizlət</string> <string name="revanced_hide_player_flyout_audio_track_title">Səs trekini gizlət</string>
<string name="revanced_hide_player_flyout_audio_track_summary_on">Səs axını menyusu gizlidir</string> <string name="revanced_hide_player_flyout_audio_track_summary_on">Səs axını menyusu gizlidir</string>
<string name="revanced_hide_player_flyout_audio_track_summary_off">Səs axını menyusu göstərilir</string> <string name="revanced_hide_player_flyout_audio_track_summary_off">Səs axını menyusu göstərilir</string>
<!-- 'Spoof video streams' should be the same translation used for 'revanced_spoof_video_streams_screen_title'. --> <!-- 'Spoof video streams' should be the same translation used for 'revanced_spoof_video_streams_screen_title'.
<string name="revanced_hide_player_flyout_audio_track_not_available">"Səs trek menyusu gizlidir 'Android No SDK' must be kept untranslated. -->
<string name="revanced_hide_player_flyout_audio_track_not_available">"Səs axını menyusu gizlidir
Səs treki menyusunu göstərmək üçün \"Video yayımları saxtalaşdır\"ı iPadOS-a dəyiş"</string> Səs treki menyusunu göstərmək üçün \"Video yayımları saxtalaşdır\"-ı 'Android No SDK'-a dəyiş"</string>
<!-- 'Watch in VR' should be translated using the same localized wording YouTube displays for the menu item. --> <!-- 'Watch in VR' should be translated using the same localized wording YouTube displays for the menu item. -->
<string name="revanced_hide_player_flyout_watch_in_vr_title">\"VR-da İzləni\" gizlət</string> <string name="revanced_hide_player_flyout_watch_in_vr_title">\"VR-da İzləni\" gizlət</string>
<string name="revanced_hide_player_flyout_watch_in_vr_summary_on">VR menyusunda izləmə gizlidir</string> <string name="revanced_hide_player_flyout_watch_in_vr_summary_on">VR menyusunda izləmə gizlidir</string>
@@ -865,13 +894,16 @@ Səs treki menyusunu göstərmək üçün \"Video yayımları saxtalaşdır\"ı
<string name="revanced_hide_shorts_history_title">Baxış tarixçəsində Shorts-u gizlət</string> <string name="revanced_hide_shorts_history_title">Baxış tarixçəsində Shorts-u gizlət</string>
<string name="revanced_hide_shorts_history_summary_on">Baxış tarixçəsində gizlidir</string> <string name="revanced_hide_shorts_history_summary_on">Baxış tarixçəsində gizlidir</string>
<string name="revanced_hide_shorts_history_summary_off">Baxış tarixçəsində göstərilib</string> <string name="revanced_hide_shorts_history_summary_off">Baxış tarixçəsində göstərilib</string>
<string name="revanced_hide_shorts_super_thanks_button_title">Super Təşəkkür Al düyməsini gizlət</string> <string name="revanced_hide_shorts_auto_dubbed_label_title">\'Avtomatik dublyaj olunmuş\' etiketini gizlət</string>
<string name="revanced_hide_shorts_auto_dubbed_label_summary_on">Avto-dublyaj etiketi gizlidir</string>
<string name="revanced_hide_shorts_auto_dubbed_label_summary_off">Avto-dublyaj etiketi göstərilir</string>
<string name="revanced_hide_shorts_super_thanks_button_title">\'Super Təşəkkür Al\' düyməsini gizlət</string>
<string name="revanced_hide_shorts_super_thanks_button_summary_on">Super Təşəkkürlər Al düyməsi gizlidir</string> <string name="revanced_hide_shorts_super_thanks_button_summary_on">Super Təşəkkürlər Al düyməsi gizlidir</string>
<string name="revanced_hide_shorts_super_thanks_button_summary_off">Super Təşəkkürlər Al düyməsi görünür</string> <string name="revanced_hide_shorts_super_thanks_button_summary_off">Super Təşəkkürlər Al düyməsi görünür</string>
<string name="revanced_hide_shorts_effect_button_title">Effekt düyməsini gizlət</string> <string name="revanced_hide_shorts_effect_button_title">Effekt düyməsini gizlət</string>
<string name="revanced_hide_shorts_effect_button_summary_on">Effekt düyməsi gizlidir</string> <string name="revanced_hide_shorts_effect_button_summary_on">Effekt düyməsi gizlidir</string>
<string name="revanced_hide_shorts_effect_button_summary_off">Effekt düyməsi görünür</string> <string name="revanced_hide_shorts_effect_button_summary_off">Effekt düyməsi görünür</string>
<string name="revanced_hide_shorts_green_screen_button_title">Yaşıl ekran düyməsini gizlət</string> <string name="revanced_hide_shorts_green_screen_button_title">\'Yaşıl ekran\' düyməsini gizlət</string>
<string name="revanced_hide_shorts_green_screen_button_summary_on">\"Yaşıl ekran\" düyməsi gizlidir</string> <string name="revanced_hide_shorts_green_screen_button_summary_on">\"Yaşıl ekran\" düyməsi gizlidir</string>
<string name="revanced_hide_shorts_green_screen_button_summary_off">\"Yaşıl ekran\" düyməsi göstərilir</string> <string name="revanced_hide_shorts_green_screen_button_summary_off">\"Yaşıl ekran\" düyməsi göstərilir</string>
<string name="revanced_hide_shorts_hashtag_button_title">Mövzu etiketi düyməsini gizlət</string> <string name="revanced_hide_shorts_hashtag_button_title">Mövzu etiketi düyməsini gizlət</string>
@@ -881,6 +913,9 @@ Səs treki menyusunu göstərmək üçün \"Video yayımları saxtalaşdır\"ı
<string name="revanced_hide_shorts_join_button_title">Qoşul düyməsin gizlə</string> <string name="revanced_hide_shorts_join_button_title">Qoşul düyməsin gizlə</string>
<string name="revanced_hide_shorts_join_button_summary_on">Qoşulma düyməsi gizlidir</string> <string name="revanced_hide_shorts_join_button_summary_on">Qoşulma düyməsi gizlidir</string>
<string name="revanced_hide_shorts_join_button_summary_off">Qoşulma düyməsi göstərilir</string> <string name="revanced_hide_shorts_join_button_summary_off">Qoşulma düyməsi göstərilir</string>
<string name="revanced_hide_shorts_live_preview_title">Canlı önizləməni gizlət</string>
<string name="revanced_hide_shorts_live_preview_summary_on">Canlı önizləmə gizlədilib</string>
<string name="revanced_hide_shorts_live_preview_summary_off">Canlı önizləmə göstərilir</string>
<string name="revanced_hide_shorts_location_label_title">Məkan etiketini gizlət</string> <string name="revanced_hide_shorts_location_label_title">Məkan etiketini gizlət</string>
<string name="revanced_hide_shorts_location_label_summary_on">Məkan etiketi gizlidir</string> <string name="revanced_hide_shorts_location_label_summary_on">Məkan etiketi gizlidir</string>
<string name="revanced_hide_shorts_location_label_summary_off">Məkan etiketi göstərilir</string> <string name="revanced_hide_shorts_location_label_summary_off">Məkan etiketi göstərilir</string>
@@ -893,7 +928,7 @@ Səs treki menyusunu göstərmək üçün \"Video yayımları saxtalaşdır\"ı
<string name="revanced_hide_shorts_preview_comment_title">Öncül baxış şərhini gizlət</string> <string name="revanced_hide_shorts_preview_comment_title">Öncül baxış şərhini gizlət</string>
<string name="revanced_hide_shorts_preview_comment_summary_on">Öncül baxış şərhi gizlidir</string> <string name="revanced_hide_shorts_preview_comment_summary_on">Öncül baxış şərhi gizlidir</string>
<string name="revanced_hide_shorts_preview_comment_summary_off">Öncül baxış şərhi göstərilir</string> <string name="revanced_hide_shorts_preview_comment_summary_off">Öncül baxış şərhi göstərilir</string>
<string name="revanced_hide_shorts_save_sound_button_title">Musiqini saxla düyməsini gizlət</string> <string name="revanced_hide_shorts_save_sound_button_title">\'Musiqini yadda saxla\' düyməsini gizlət</string>
<string name="revanced_hide_shorts_save_sound_button_summary_on">\"Musiqini saxla\" düyməsi gizlidir</string> <string name="revanced_hide_shorts_save_sound_button_summary_on">\"Musiqini saxla\" düyməsi gizlidir</string>
<string name="revanced_hide_shorts_save_sound_button_summary_off">\"Musiqini saxla\" düyməsi göstərilir</string> <string name="revanced_hide_shorts_save_sound_button_summary_off">\"Musiqini saxla\" düyməsi göstərilir</string>
<string name="revanced_hide_shorts_search_suggestions_title">Axtarış təkliflərini gizlət</string> <string name="revanced_hide_shorts_search_suggestions_title">Axtarış təkliflərini gizlət</string>
@@ -1559,13 +1594,13 @@ Bunu aktivləşdirmə daha yüksək video keyfiyyətləri əngəlin silə bilər
</patch> </patch>
<patch id="video.speed.button.playbackSpeedButtonPatch"> <patch id="video.speed.button.playbackSpeedButtonPatch">
<string name="revanced_playback_speed_dialog_button_title">Sürət dialoq düyməsini göstər</string> <string name="revanced_playback_speed_dialog_button_title">Sürət dialoq düyməsini göstər</string>
<string name="revanced_playback_speed_dialog_button_summary_on">Düymə göstərilir. Oynatma sürətin standart olaraq qaytarmaq üçün toxunub saxla</string> <string name="revanced_playback_speed_dialog_button_summary_on">Sürət dialoqu düyməsirünür. Oxutma sürətini ilkin vəziyyətinə qaytarmaq üçün toxunub saxlayın</string>
<string name="revanced_playback_speed_dialog_button_summary_off">Düymə göstərilmir</string> <string name="revanced_playback_speed_dialog_button_summary_off">Sürət dialoqu düyməsirünmür</string>
</patch> </patch>
<patch id="video.quality.button.videoQualityDialogButtonPatch"> <patch id="video.quality.button.videoQualityDialogButtonPatch">
<string name="revanced_video_quality_dialog_button_title">Video keyfiyyəti düyməsini göstər</string> <string name="revanced_video_quality_dialog_button_title">Video keyfiyyəti düyməsini göstər</string>
<string name="revanced_video_quality_dialog_button_summary_on">Düymə görünür. Keyfiyyəti ilkin vəziyyətinə qaytarmaq üçün toxunub saxlayın</string> <string name="revanced_video_quality_dialog_button_summary_on">Video keyfiyyəti düyməsi görünür. Keyfiyyəti ilkin vəziyyətinə qaytarmaq üçün toxunub saxlayın</string>
<string name="revanced_video_quality_dialog_button_summary_off">Düymə görünmür</string> <string name="revanced_video_quality_dialog_button_summary_off">Video keyfiyyəti düyməsi görünmür</string>
</patch> </patch>
<patch id="video.speed.custom.customPlaybackSpeedPatch"> <patch id="video.speed.custom.customPlaybackSpeedPatch">
<string name="revanced_custom_speed_menu_title">Fərdi oynatma sürəti siyahısı</string> <string name="revanced_custom_speed_menu_title">Fərdi oynatma sürəti siyahısı</string>
@@ -1662,16 +1697,30 @@ Video oynatma AV1 ilə ilişə bilər və ya kadrlar buraxıla bilər."</string>
<string name="revanced_music_play_permanent_repeat_summary_on">Kəsintisiz təkrarlama aktivdir</string> <string name="revanced_music_play_permanent_repeat_summary_on">Kəsintisiz təkrarlama aktivdir</string>
<string name="revanced_music_play_permanent_repeat_summary_off">Kəsintisiz təkrarlama qapalıdır</string> <string name="revanced_music_play_permanent_repeat_summary_off">Kəsintisiz təkrarlama qapalıdır</string>
</patch> </patch>
<patch id="layout.castbutton.hideCastButton"> <patch id="layout.buttons.hideButtons">
<string name="revanced_music_hide_cast_button_title">Yayım düyməsini gizlət</string> <string name="revanced_music_hide_cast_button_title">Yayım düyməsini gizlət</string>
<string name="revanced_music_hide_cast_button_summary_on">Yayım düyməsi gizlidir</string> <string name="revanced_music_hide_cast_button_summary_on">Yayım düyməsi gizlidir</string>
<string name="revanced_music_hide_cast_button_summary_off">Yayım düyməsi göstərilir</string> <string name="revanced_music_hide_cast_button_summary_off">Yayım düyməsi göstərilir</string>
<string name="revanced_music_hide_history_button_title">Tarixçə düyməsini gizlət</string>
<string name="revanced_music_hide_history_button_summary_on">Tarixçə düyməsi gizlidir</string>
<string name="revanced_music_hide_history_button_summary_off">Tarixçə düyməsi görünür</string>
<string name="revanced_music_hide_notification_button_title">Bildiriş düyməsini gizlət</string>
<string name="revanced_music_hide_notification_button_summary_on">Bildiriş düyməsi gizlidir</string>
<string name="revanced_music_hide_notification_button_summary_off">Bildiriş düyməsi görünür</string>
<string name="revanced_music_hide_search_button_title">Axtarış düyməsini gizlət</string>
<string name="revanced_music_hide_search_button_summary_on">Axtarış düyməsi gizlidir</string>
<string name="revanced_music_hide_search_button_summary_off">Axtarış düyməsi görünür</string>
</patch> </patch>
<patch id="layout.compactheader.hideCategoryBar"> <patch id="layout.compactheader.hideCategoryBar">
<string name="revanced_music_hide_category_bar_title">Kateqoriya cizgisin gizlət</string> <string name="revanced_music_hide_category_bar_title">Kateqoriya cizgisin gizlət</string>
<string name="revanced_music_hide_category_bar_summary_on">Kateqoriya cizgisi gizlidir</string> <string name="revanced_music_hide_category_bar_summary_on">Kateqoriya cizgisi gizlidir</string>
<string name="revanced_music_hide_category_bar_summary_off">Kateqoriya cizgisi görünür</string> <string name="revanced_music_hide_category_bar_summary_off">Kateqoriya cizgisi görünür</string>
</patch> </patch>
<patch id="layout.miniplayercolor.changeMiniplayerColor">
<string name="revanced_music_change_miniplayer_color_title">Kiçik oynadıcı rəngini dəyişdir</string>
<string name="revanced_music_change_miniplayer_color_summary_on">Kiçik oynadıcı rəngi tam ekran oynadıcıya bərabərdir</string>
<string name="revanced_music_change_miniplayer_color_summary_off">Kiçik oynadıcı ilkin rəngi istifadə edir</string>
</patch>
<patch id="layout.navigationbar.navigationBarPatch"> <patch id="layout.navigationbar.navigationBarPatch">
<string name="revanced_music_navigation_bar_screen_title">Fəaliyyət cizgisi</string> <string name="revanced_music_navigation_bar_screen_title">Fəaliyyət cizgisi</string>
<string name="revanced_music_navigation_bar_screen_summary">Fəaliyyət cizgisi düymələrini gizlət və ya dəyiş</string> <string name="revanced_music_navigation_bar_screen_summary">Fəaliyyət cizgisi düymələrini gizlət və ya dəyiş</string>

View File

@@ -1,5 +1,4 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<!-- Copyright 2024 ReVanced. See https://github.com/ReVanced/revanced-branding -->
<!-- <!--
All strings must have a unique path, even if the same string is declared in two different apps. All strings must have a unique path, even if the same string is declared in two different apps.
@@ -45,13 +44,14 @@ Second \"item\" text"</string>
<string name="revanced_check_environment_not_near_patch_time_invalid">Дата стварэння APK пашкоджана</string> <string name="revanced_check_environment_not_near_patch_time_invalid">Дата стварэння APK пашкоджана</string>
</patch> </patch>
<patch id="misc.dns.checkWatchHistoryDomainNameResolutionPatch"> <patch id="misc.dns.checkWatchHistoryDomainNameResolutionPatch">
<string name="revanced_check_watch_history_domain_name_dialog_title">Увага</string> <string name="revanced_check_watch_history_domain_name_dialog_title">Заўвага ReVanced</string>
<string name="revanced_check_watch_history_domain_name_dialog_message">Ваша гісторыя прагляду не захоўваецца.&lt;br&gt;&lt;br&gt;Гэта, хутчэй за ўсё, выклікана DNS-блакіроўшчыкам рэкламы або сеткавым праксі.&lt;br&gt;&lt;br&gt;Каб выправіць гэта, дадайце &lt;b&gt;s.youtube.com&lt;/b&gt; у белы спіс або адключыце ўсе DNS-блакіроўшчыкі і праксі.</string> <string name="revanced_check_watch_history_domain_name_dialog_message">Ваша гісторыя прагляду не захоўваецца.&lt;br&gt;&lt;br&gt;Гэта, хутчэй за ўсё, выклікана DNS-блакіроўшчыкам рэкламы або сеткавым праксі.&lt;br&gt;&lt;br&gt;Каб выправіць гэта, дадайце &lt;b&gt;s.youtube.com&lt;/b&gt; у белы спіс або адключыце ўсе DNS-блакіроўшчыкі і праксі.</string>
<string name="revanced_check_watch_history_domain_name_dialog_ignore">Больш не паказваць</string> <string name="revanced_check_watch_history_domain_name_dialog_ignore">Больш не паказваць</string>
</patch> </patch>
<patch id="misc.settings.settingsResourcePatch"> <patch id="misc.settings.settingsResourcePatch">
<string name="revanced_settings_submenu_title">Налады</string> <string name="revanced_settings_submenu_title">Налады</string>
<string name="revanced_settings_confirm_user_dialog_title">Вы ўпэўнены, што хочаце працягнуць?</string> <string name="revanced_settings_confirm_user_dialog_title">Вы ўпэўнены, што хочаце працягнуць?</string>
<string name="revanced_settings_save">Захаваць</string>
<string name="revanced_settings_reset">Скінуць</string> <string name="revanced_settings_reset">Скінуць</string>
<string name="revanced_settings_reset_color">Скінуць колер</string> <string name="revanced_settings_reset_color">Скінуць колер</string>
<string name="revanced_settings_color_invalid">Несапраўдны колер</string> <string name="revanced_settings_color_invalid">Несапраўдны колер</string>
@@ -164,6 +164,14 @@ Second \"item\" text"</string>
<string name="revanced_debug_logs_clear_buffer_title">Ачысціць адладачныя лагі</string> <string name="revanced_debug_logs_clear_buffer_title">Ачысціць адладачныя лагі</string>
<string name="revanced_debug_logs_clear_buffer_summary">Ачышчае ўсе захаваныя адладачныя лагі ReVanced</string> <string name="revanced_debug_logs_clear_buffer_summary">Ачышчае ўсе захаваныя адладачныя лагі ReVanced</string>
<string name="revanced_debug_logs_clear_toast">Лагі ачышчаны</string> <string name="revanced_debug_logs_clear_toast">Лагі ачышчаны</string>
<string name="revanced_debug_feature_flags_manager_title">Менеджэр функцыйных сцягоў</string>
<string name="revanced_debug_feature_flags_manager_summary">Кіраванне лагічнымі функцыйнымі сцягамі</string>
<string name="revanced_debug_feature_flags_manager_active_header">Актыўныя сцягі (%d)</string>
<string name="revanced_debug_feature_flags_manager_blocked_header">Заблакаваныя сцягі (%d)</string>
<string name="revanced_debug_feature_flags_manager_search_hint">Пошук сцягоў...</string>
<string name="revanced_debug_feature_flags_manager_toast_saved">Сцягі захаваны</string>
<string name="revanced_debug_feature_flags_manager_toast_reset">Сцягі скінуты</string>
<string name="revanced_debug_feature_flags_manager_toast_copied">Сцягі скапіяваны ў буфер абмену</string>
</patch> </patch>
<patch id="misc.privacy.sanitizeSharingLinksPatch"> <patch id="misc.privacy.sanitizeSharingLinksPatch">
<string name="revanced_sanitize_sharing_links_title">Ачысціць спасылкі для абагульвання</string> <string name="revanced_sanitize_sharing_links_title">Ачысціць спасылкі для абагульвання</string>
@@ -274,6 +282,9 @@ Second \"item\" text"</string>
<string name="revanced_hide_video_recommendation_labels_title">Схаваць меткі рэкамендацый відэа</string> <string name="revanced_hide_video_recommendation_labels_title">Схаваць меткі рэкамендацый відэа</string>
<string name="revanced_hide_video_recommendation_labels_summary_on">Меткі «Людзі таксама глядзелі» і «Вам таксама можа спадабацца» ў выніках пошуку схаваныя</string> <string name="revanced_hide_video_recommendation_labels_summary_on">Меткі «Людзі таксама глядзелі» і «Вам таксама можа спадабацца» ў выніках пошуку схаваныя</string>
<string name="revanced_hide_video_recommendation_labels_summary_off">Меткі «Людзі таксама глядзелі» і «Вам таксама можа спадабацца» ў выніках пошуку паказаныя</string> <string name="revanced_hide_video_recommendation_labels_summary_off">Меткі «Людзі таксама глядзелі» і «Вам таксама можа спадабацца» ў выніках пошуку паказаныя</string>
<string name="revanced_hide_visual_spacer_title">Схаваць візуальны падзельнік</string>
<string name="revanced_hide_visual_spacer_summary_on">Візуальны падзельнік схаваны</string>
<string name="revanced_hide_visual_spacer_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">Анімацыя YouTube Doodles на лагатыпе схаваная</string> <string name="revanced_hide_doodles_summary_on">Анімацыя YouTube Doodles на лагатыпе схаваная</string>
@@ -334,12 +345,21 @@ Second \"item\" text"</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_featured_links_section_title">Схаваць выбраныя спасылкі</string>
<string name="revanced_hide_featured_links_section_summary_on">Раздзел з рэкамендаванымі спасылкамі схаваны</string>
<string name="revanced_hide_featured_links_section_summary_off">Раздзел з рэкамендаванымі спасылкамі паказаны</string>
<string name="revanced_hide_featured_videos_section_title">Схаваць рэкамендаваныя відэа</string>
<string name="revanced_hide_featured_videos_section_summary_on">Раздзел з рэкамендаванымі відэа схаваны</string>
<string name="revanced_hide_featured_videos_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_subscribe_button_title">Схаваць кнопку «Падпісацца»</string>
<string name="revanced_hide_subscribe_button_summary_on">Кнопка «Падпісацца» схавана</string>
<string name="revanced_hide_subscribe_button_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>
@@ -361,24 +381,32 @@ Second \"item\" text"</string>
<string name="revanced_hide_filter_bar_feed_in_history_summary_off">Паказаны ў гісторыі праглядаў</string> <string name="revanced_hide_filter_bar_feed_in_history_summary_off">Паказаны ў гісторыі праглядаў</string>
<string name="revanced_channel_screen_title">Старонка канала</string> <string name="revanced_channel_screen_title">Старонка канала</string>
<string name="revanced_channel_screen_summary">Схаваць або паказаць кампаненты старонкі канала</string> <string name="revanced_channel_screen_summary">Схаваць або паказаць кампаненты старонкі канала</string>
<!-- 'Community' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_community_button_title">Схаваць кнопку «Супольнасць»</string>
<string name="revanced_hide_community_button_summary_on">Кнопка супольнасці схавана</string>
<string name="revanced_hide_community_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>
<!-- 'Join' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_join_button_title">Схаваць кнопку Далучыцца</string>
<string name="revanced_hide_join_button_summary_on">Кнопка Далучыцца схавана</string>
<string name="revanced_hide_join_button_summary_off">Кнопка Далучыцца паказана</string>
<string name="revanced_hide_links_preview_title">Схаваць папярэдні прагляд спасылак</string> <string name="revanced_hide_links_preview_title">Схаваць папярэдні прагляд спасылак</string>
<string name="revanced_hide_links_preview_summary_on">Папярэдні прагляд спасылак схаваны</string> <string name="revanced_hide_links_preview_summary_on">Папярэдні прагляд спасылак схаваны</string>
<string name="revanced_hide_links_preview_summary_off">Папярэдні прагляд спасылак паказаны</string> <string name="revanced_hide_links_preview_summary_off">Папярэдні прагляд спасылак паказаны</string>
<string name="revanced_hide_members_shelf_title">Схаваць паліцу ўдзельнікаў</string> <string name="revanced_hide_members_shelf_title">Схаваць паліцу ўдзельнікаў</string>
<string name="revanced_hide_members_shelf_summary_on">Паліца ўдзельнікаў схаваная</string> <string name="revanced_hide_members_shelf_summary_on">Паліца ўдзельнікаў схаваная</string>
<string name="revanced_hide_members_shelf_summary_off">Паліца ўдзельнікаў паказана</string> <string name="revanced_hide_members_shelf_summary_off">Паліца ўдзельнікаў паказана</string>
<!-- 'Visit Community' should be translated with the same localized wording that YouTube displays. --> <!-- 'Store' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_visit_community_button_title">Схаваць кнопку \"Наведаць супольнасць\"</string> <string name="revanced_hide_store_button_title">Схаваць кнопку Крама</string>
<string name="revanced_hide_visit_community_button_summary_on">Кнопка \"Наведаць супольнасць\" схавана</string> <string name="revanced_hide_store_button_summary_on">Кнопка Крама схавана</string>
<string name="revanced_hide_visit_community_button_summary_off">Кнопка \"Наведаць супольнасць\" паказаная</string> <string name="revanced_hide_store_button_summary_off">Кнопка Крама паказана</string>
<!-- 'Visit store' should be translated with the same localized wording that YouTube displays. --> <!-- 'Subscribe' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_visit_store_button_title">Схавайце кнопку \"Наведайце краму\" на старонках канала</string> <string name="revanced_hide_subscribe_button_in_channel_page_title">Схаваць кнопку Падпісацца</string>
<string name="revanced_hide_visit_store_button_summary_on">Кнопка \"Наведаць краму\" схаваная</string> <string name="revanced_hide_subscribe_button_in_channel_page_summary_on">Кнопка Падпісацца схавана</string>
<string name="revanced_hide_visit_store_button_summary_off">Кнопка \"Наведаць краму\" паказаная</string> <string name="revanced_hide_subscribe_button_in_channel_page_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_ai_chat_summary_title">Схаваць зводку чата са штучным інтэлектам</string> <string name="revanced_hide_comments_ai_chat_summary_title">Схаваць зводку чата са штучным інтэлектам</string>
@@ -520,11 +548,11 @@ 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 відэа\" паказана. Націсніце, каб скапіяваць URL відэа. Націсніце і ўтрымлівайце, каб скапіяваць з пазнакай часу</string>
<string name="revanced_copy_video_url_summary_off">Кнопка не паказваецца</string> <string name="revanced_copy_video_url_summary_off">Кнопка \"Капіяваць URL відэа\" не паказана</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 з пазнакай часу\" паказана. Націсніце, каб скапіяваць URL відэа з пазнакай часу. Націсніце і ўтрымлівайце, каб скапіяваць без пазнакі часу</string>
<string name="revanced_copy_video_url_timestamp_summary_off">Кнопка не паказваецца</string> <string name="revanced_copy_video_url_timestamp_summary_off">Кнопка \"Капіяваць URL з пазнакай часу\" не паказана</string>
</patch> </patch>
<patch id="interaction.dialog.removeViewerDiscretionDialogPatch"> <patch id="interaction.dialog.removeViewerDiscretionDialogPatch">
<string name="revanced_remove_viewer_discretion_dialog_title">Выдаліць дыялогавае акно права прагляду</string> <string name="revanced_remove_viewer_discretion_dialog_title">Выдаліць дыялогавае акно права прагляду</string>
@@ -533,7 +561,7 @@ Second \"item\" text"</string>
<string name="revanced_remove_viewer_discretion_dialog_user_dialog_message">Гэта не абыходзіць узроставае абмежаванне. Ён проста прымае гэта аўтаматычна.</string> <string name="revanced_remove_viewer_discretion_dialog_user_dialog_message">Гэта не абыходзіць узроставае абмежаванне. Ён проста прымае гэта аўтаматычна.</string>
</patch> </patch>
<patch id="layout.hide.signintotv.disableSignInToTvPopupPatch"> <patch id="layout.hide.signintotv.disableSignInToTvPopupPatch">
<string name="revanced_disable_signin_to_tv_popup_title">Адключыць усплывальнае акно «Уваход у ТБ»</string> <string name="revanced_disable_signin_to_tv_popup_title">Адключыць усплываючае акно \"Увайсці ў ТБ\"</string>
<string name="revanced_disable_signin_to_tv_popup_summary_on">Усплывальнае акно «Уваход у ТБ» адключана</string> <string name="revanced_disable_signin_to_tv_popup_summary_on">Усплывальнае акно «Уваход у ТБ» адключана</string>
<string name="revanced_disable_signin_to_tv_popup_summary_off">Усплывальнае акно «Уваход у ТБ» уключана</string> <string name="revanced_disable_signin_to_tv_popup_summary_off">Усплывальнае акно «Уваход у ТБ» уключана</string>
</patch> </patch>
@@ -665,7 +693,7 @@ Second \"item\" text"</string>
<string name="revanced_hide_download_button_summary_on">Кнопка загрузкі схавана</string> <string name="revanced_hide_download_button_summary_on">Кнопка загрузкі схавана</string>
<string name="revanced_hide_download_button_summary_off">Паказана кнопка загрузкі</string> <string name="revanced_hide_download_button_summary_off">Паказана кнопка загрузкі</string>
<!-- 'Hype' should be translated with the same localized wording that YouTube displays. <!-- 'Hype' should be translated with the same localized wording that YouTube displays.
This button only shows on videos uploaded by the logged in user. --> This button only shows on videos uploaded by the logged-in user. -->
<string name="revanced_hide_hype_button_title">Схаваць хайп</string> <string name="revanced_hide_hype_button_title">Схаваць хайп</string>
<string name="revanced_hide_hype_button_summary_on">Кнопка Hype схаваная</string> <string name="revanced_hide_hype_button_summary_on">Кнопка Hype схаваная</string>
<string name="revanced_hide_hype_button_summary_off">Кнопка хайпу паказана</string> <string name="revanced_hide_hype_button_summary_off">Кнопка хайпу паказана</string>
@@ -786,10 +814,11 @@ Second \"item\" text"</string>
<string name="revanced_hide_player_flyout_audio_track_title">Схаваць гукавую дарожку</string> <string name="revanced_hide_player_flyout_audio_track_title">Схаваць гукавую дарожку</string>
<string name="revanced_hide_player_flyout_audio_track_summary_on">Меню гукавой дарожкі схавана</string> <string name="revanced_hide_player_flyout_audio_track_summary_on">Меню гукавой дарожкі схавана</string>
<string name="revanced_hide_player_flyout_audio_track_summary_off">Адлюструецца меню гукавой дарожкі</string> <string name="revanced_hide_player_flyout_audio_track_summary_off">Адлюструецца меню гукавой дарожкі</string>
<!-- 'Spoof video streams' should be the same translation used for 'revanced_spoof_video_streams_screen_title'. --> <!-- 'Spoof video streams' should be the same translation used for 'revanced_spoof_video_streams_screen_title'.
'Android No SDK' must be kept untranslated. -->
<string name="revanced_hide_player_flyout_audio_track_not_available">"Меню аўдыядарожкі схавана <string name="revanced_hide_player_flyout_audio_track_not_available">"Меню аўдыядарожкі схавана
Каб паказаць меню аўдыядарожкі, змяніце \"Падмена відэапатокаў\" на iPadOS"</string> Каб паказаць меню аўдыядарожкі, зменіце \"Імітацыя відэапатокаў\" на \"Android No SDK\""</string>
<!-- 'Watch in VR' should be translated using the same localized wording YouTube displays for the menu item. --> <!-- 'Watch in VR' should be translated using the same localized wording YouTube displays for the menu item. -->
<string name="revanced_hide_player_flyout_watch_in_vr_title">Схаваць гадзіннік у VR</string> <string name="revanced_hide_player_flyout_watch_in_vr_title">Схаваць гадзіннік у VR</string>
<string name="revanced_hide_player_flyout_watch_in_vr_summary_on">Меню прагляду ў VR схавана</string> <string name="revanced_hide_player_flyout_watch_in_vr_summary_on">Меню прагляду ў VR схавана</string>
@@ -865,13 +894,16 @@ Second \"item\" text"</string>
<string name="revanced_hide_shorts_history_title">Схаваць Shorts з гісторыі праглядаў</string> <string name="revanced_hide_shorts_history_title">Схаваць Shorts з гісторыі праглядаў</string>
<string name="revanced_hide_shorts_history_summary_on">Схавана ў гісторыі праглядаў</string> <string name="revanced_hide_shorts_history_summary_on">Схавана ў гісторыі праглядаў</string>
<string name="revanced_hide_shorts_history_summary_off">Паказаны ў гісторыі праглядаў</string> <string name="revanced_hide_shorts_history_summary_off">Паказаны ў гісторыі праглядаў</string>
<string name="revanced_hide_shorts_super_thanks_button_title">Схаваць кнопку «Купіць Super Thanks»</string> <string name="revanced_hide_shorts_auto_dubbed_label_title">Схаваць метку \"Аўтаматычны дубляж\"</string>
<string name="revanced_hide_shorts_auto_dubbed_label_summary_on">Надпіс з аўтадубляжом схаваны</string>
<string name="revanced_hide_shorts_auto_dubbed_label_summary_off">Надпіс з аўтадубляжом паказаны</string>
<string name="revanced_hide_shorts_super_thanks_button_title">Схаваць кнопку \"Набыць Super Thanks\"</string>
<string name="revanced_hide_shorts_super_thanks_button_summary_on">Кнопка «Набыць Super Thanks» схавана</string> <string name="revanced_hide_shorts_super_thanks_button_summary_on">Кнопка «Набыць Super Thanks» схавана</string>
<string name="revanced_hide_shorts_super_thanks_button_summary_off">Кнопка «Набыць Super Thanks» паказана</string> <string name="revanced_hide_shorts_super_thanks_button_summary_off">Кнопка «Набыць Super Thanks» паказана</string>
<string name="revanced_hide_shorts_effect_button_title">Схаваць кнопку эфекту</string> <string name="revanced_hide_shorts_effect_button_title">Схаваць кнопку эфекту</string>
<string name="revanced_hide_shorts_effect_button_summary_on">Кнопка эфекту схавана</string> <string name="revanced_hide_shorts_effect_button_summary_on">Кнопка эфекту схавана</string>
<string name="revanced_hide_shorts_effect_button_summary_off">Кнопка эфекту паказана</string> <string name="revanced_hide_shorts_effect_button_summary_off">Кнопка эфекту паказана</string>
<string name="revanced_hide_shorts_green_screen_button_title">Схаваць кнопку «Зялёны экран»</string> <string name="revanced_hide_shorts_green_screen_button_title">Схаваць кнопку \"Зялёны экран\"</string>
<string name="revanced_hide_shorts_green_screen_button_summary_on">Кнопка с зелёным экраном Shorts скрыта</string> <string name="revanced_hide_shorts_green_screen_button_summary_on">Кнопка с зелёным экраном Shorts скрыта</string>
<string name="revanced_hide_shorts_green_screen_button_summary_off">Кнопка с зелёным экраном Shorts отображается</string> <string name="revanced_hide_shorts_green_screen_button_summary_off">Кнопка с зелёным экраном Shorts отображается</string>
<string name="revanced_hide_shorts_hashtag_button_title">Скрыть хештег-кнопку Shorts</string> <string name="revanced_hide_shorts_hashtag_button_title">Скрыть хештег-кнопку Shorts</string>
@@ -881,10 +913,13 @@ Second \"item\" text"</string>
<string name="revanced_hide_shorts_join_button_title">Схаваць кнопку «Далучыцца»</string> <string name="revanced_hide_shorts_join_button_title">Схаваць кнопку «Далучыцца»</string>
<string name="revanced_hide_shorts_join_button_summary_on">Кнопка «Далучыцца» схавана</string> <string name="revanced_hide_shorts_join_button_summary_on">Кнопка «Далучыцца» схавана</string>
<string name="revanced_hide_shorts_join_button_summary_off">Паказана кнопка «Далучыцца»</string> <string name="revanced_hide_shorts_join_button_summary_off">Паказана кнопка «Далучыцца»</string>
<string name="revanced_hide_shorts_live_preview_title">Схаваць жывы папярэдні прагляд</string>
<string name="revanced_hide_shorts_live_preview_summary_on">Папярэдні прагляд у рэальным часе схаваны</string>
<string name="revanced_hide_shorts_live_preview_summary_off">Папярэдні прагляд у рэальным часе паказаны</string>
<string name="revanced_hide_shorts_location_label_title">Схаваць метку месцазнаходжання</string> <string name="revanced_hide_shorts_location_label_title">Схаваць метку месцазнаходжання</string>
<string name="revanced_hide_shorts_location_label_summary_on">Метка месцазнаходжання схавана</string> <string name="revanced_hide_shorts_location_label_summary_on">Метка месцазнаходжання схавана</string>
<string name="revanced_hide_shorts_location_label_summary_off">Паказана метка месцазнаходжання</string> <string name="revanced_hide_shorts_location_label_summary_off">Паказана метка месцазнаходжання</string>
<string name="revanced_hide_shorts_new_posts_button_title">Схаваць кнопку «Новыя паведамленні»</string> <string name="revanced_hide_shorts_new_posts_button_title">Схаваць кнопку \"Новыя паведамленні\"</string>
<string name="revanced_hide_shorts_new_posts_button_summary_on">Кнопка «Новыя паведамленні» схавана</string> <string name="revanced_hide_shorts_new_posts_button_summary_on">Кнопка «Новыя паведамленні» схавана</string>
<string name="revanced_hide_shorts_new_posts_button_summary_off">Кнопка «Новыя паведамленні» паказана</string> <string name="revanced_hide_shorts_new_posts_button_summary_off">Кнопка «Новыя паведамленні» паказана</string>
<string name="revanced_hide_shorts_paused_overlay_buttons_title">Схаваць прыпыненыя кнопкі накладання</string> <string name="revanced_hide_shorts_paused_overlay_buttons_title">Схаваць прыпыненыя кнопкі накладання</string>
@@ -893,7 +928,7 @@ Second \"item\" text"</string>
<string name="revanced_hide_shorts_preview_comment_title">Схаваць папярэдні прагляд каментарыя</string> <string name="revanced_hide_shorts_preview_comment_title">Схаваць папярэдні прагляд каментарыя</string>
<string name="revanced_hide_shorts_preview_comment_summary_on">Папярэдні прагляд каментарыя схаваны</string> <string name="revanced_hide_shorts_preview_comment_summary_on">Папярэдні прагляд каментарыя схаваны</string>
<string name="revanced_hide_shorts_preview_comment_summary_off">Паказваецца папярэдні прагляд каментарыя</string> <string name="revanced_hide_shorts_preview_comment_summary_off">Паказваецца папярэдні прагляд каментарыя</string>
<string name="revanced_hide_shorts_save_sound_button_title">Схаваць кнопку «Захаваць музыку»</string> <string name="revanced_hide_shorts_save_sound_button_title">Схаваць кнопку \"Захаваць музыку\"</string>
<string name="revanced_hide_shorts_save_sound_button_summary_on">Кнопка захавання музыкі схавана</string> <string name="revanced_hide_shorts_save_sound_button_summary_on">Кнопка захавання музыкі схавана</string>
<string name="revanced_hide_shorts_save_sound_button_summary_off">Кнопка захавання музыкі паказана</string> <string name="revanced_hide_shorts_save_sound_button_summary_off">Кнопка захавання музыкі паказана</string>
<string name="revanced_hide_shorts_search_suggestions_title">Схаваць прапановы пошуку</string> <string name="revanced_hide_shorts_search_suggestions_title">Схаваць прапановы пошуку</string>
@@ -1561,13 +1596,13 @@ Second \"item\" text"</string>
</patch> </patch>
<patch id="video.speed.button.playbackSpeedButtonPatch"> <patch id="video.speed.button.playbackSpeedButtonPatch">
<string name="revanced_playback_speed_dialog_button_title">Паказаць дыялогавую кнопку хуткасці</string> <string name="revanced_playback_speed_dialog_button_title">Паказаць дыялогавую кнопку хуткасці</string>
<string name="revanced_playback_speed_dialog_button_summary_on">Кнопка паказана. Націсніце і ўтрымлівайце, каб скінуць хуткасць прайгравання да стандартнай</string> <string name="revanced_playback_speed_dialog_button_summary_on">Кнопка дыялогу хуткасці паказана. Націсніце і ўтрымлівайце, каб скінуць хуткасць прайгравання да значэння па змаўчанні</string>
<string name="revanced_playback_speed_dialog_button_summary_off">Кнопка не паказваецца</string> <string name="revanced_playback_speed_dialog_button_summary_off">Кнопка дыялогу хуткасці не паказана</string>
</patch> </patch>
<patch id="video.quality.button.videoQualityDialogButtonPatch"> <patch id="video.quality.button.videoQualityDialogButtonPatch">
<string name="revanced_video_quality_dialog_button_title">Паказаць кнопку якасці відэа</string> <string name="revanced_video_quality_dialog_button_title">Паказаць кнопку якасці відэа</string>
<string name="revanced_video_quality_dialog_button_summary_on">Кнопка паказана. Націсніце і ўтрымлівайце, каб скінуць якасць да па змаўчанні</string> <string name="revanced_video_quality_dialog_button_summary_on">Кнопка якасці відэа паказана. Націсніце і ўтрымлівайце, каб скінуць якасць да значэння па змаўчанні</string>
<string name="revanced_video_quality_dialog_button_summary_off">Кнопка не паказваецца</string> <string name="revanced_video_quality_dialog_button_summary_off">Кнопка якасці відэа не паказана</string>
</patch> </patch>
<patch id="video.speed.custom.customPlaybackSpeedPatch"> <patch id="video.speed.custom.customPlaybackSpeedPatch">
<string name="revanced_custom_speed_menu_title">Меню пользовательской скорости воспроизведения</string> <string name="revanced_custom_speed_menu_title">Меню пользовательской скорости воспроизведения</string>
@@ -1664,16 +1699,30 @@ Second \"item\" text"</string>
<string name="revanced_music_play_permanent_repeat_summary_on">Пастаянны паўтор уключаны</string> <string name="revanced_music_play_permanent_repeat_summary_on">Пастаянны паўтор уключаны</string>
<string name="revanced_music_play_permanent_repeat_summary_off">Пастаянны паўтор адключаны</string> <string name="revanced_music_play_permanent_repeat_summary_off">Пастаянны паўтор адключаны</string>
</patch> </patch>
<patch id="layout.castbutton.hideCastButton"> <patch id="layout.buttons.hideButtons">
<string name="revanced_music_hide_cast_button_title">Схаваць кнопку трансляцыі</string> <string name="revanced_music_hide_cast_button_title">Схаваць кнопку трансляцыі</string>
<string name="revanced_music_hide_cast_button_summary_on">Кнопка трансляцыі схавана</string> <string name="revanced_music_hide_cast_button_summary_on">Кнопка трансляцыі схавана</string>
<string name="revanced_music_hide_cast_button_summary_off">Кнопка трансляцыі паказана</string> <string name="revanced_music_hide_cast_button_summary_off">Кнопка трансляцыі паказана</string>
<string name="revanced_music_hide_history_button_title">Схаваць кнопку гісторыі</string>
<string name="revanced_music_hide_history_button_summary_on">Кнопка гісторыі схавана</string>
<string name="revanced_music_hide_history_button_summary_off">Кнопка гісторыі паказана</string>
<string name="revanced_music_hide_notification_button_title">Схаваць кнопку апавяшчэння</string>
<string name="revanced_music_hide_notification_button_summary_on">Кнопка апавяшчэння схаваная</string>
<string name="revanced_music_hide_notification_button_summary_off">Кнопка апавяшчэння паказаная</string>
<string name="revanced_music_hide_search_button_title">Схаваць кнопку пошуку</string>
<string name="revanced_music_hide_search_button_summary_on">Кнопка пошуку схаваная</string>
<string name="revanced_music_hide_search_button_summary_off">Кнопка пошуку паказаная</string>
</patch> </patch>
<patch id="layout.compactheader.hideCategoryBar"> <patch id="layout.compactheader.hideCategoryBar">
<string name="revanced_music_hide_category_bar_title">Схаваць панэль катэгорый</string> <string name="revanced_music_hide_category_bar_title">Схаваць панэль катэгорый</string>
<string name="revanced_music_hide_category_bar_summary_on">Панэль катэгорый схаваная</string> <string name="revanced_music_hide_category_bar_summary_on">Панэль катэгорый схаваная</string>
<string name="revanced_music_hide_category_bar_summary_off">Панэль катэгорый паказаная</string> <string name="revanced_music_hide_category_bar_summary_off">Панэль катэгорый паказаная</string>
</patch> </patch>
<patch id="layout.miniplayercolor.changeMiniplayerColor">
<string name="revanced_music_change_miniplayer_color_title">Змяніць колер міні-плэера</string>
<string name="revanced_music_change_miniplayer_color_summary_on">Колер міні-плэера супадае з поўнаэкранным плэерам</string>
<string name="revanced_music_change_miniplayer_color_summary_off">Міні-плэер выкарыстоўвае колер па змаўчанні</string>
</patch>
<patch id="layout.navigationbar.navigationBarPatch"> <patch id="layout.navigationbar.navigationBarPatch">
<string name="revanced_music_navigation_bar_screen_title">Панэль навігацыі</string> <string name="revanced_music_navigation_bar_screen_title">Панэль навігацыі</string>
<string name="revanced_music_navigation_bar_screen_summary">Схаваць або змяніць кнопкі панэлі навігацыі</string> <string name="revanced_music_navigation_bar_screen_summary">Схаваць або змяніць кнопкі панэлі навігацыі</string>

View File

@@ -1,5 +1,4 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<!-- Copyright 2024 ReVanced. See https://github.com/ReVanced/revanced-branding -->
<!-- <!--
All strings must have a unique path, even if the same string is declared in two different apps. All strings must have a unique path, even if the same string is declared in two different apps.
@@ -45,13 +44,14 @@ Second \"item\" text"</string>
<string name="revanced_check_environment_not_near_patch_time_invalid">Датата на компилация на APK е повредена</string> <string name="revanced_check_environment_not_near_patch_time_invalid">Датата на компилация на APK е повредена</string>
</patch> </patch>
<patch id="misc.dns.checkWatchHistoryDomainNameResolutionPatch"> <patch id="misc.dns.checkWatchHistoryDomainNameResolutionPatch">
<string name="revanced_check_watch_history_domain_name_dialog_title">Предупреждение</string> <string name="revanced_check_watch_history_domain_name_dialog_title">Известие от ReVanced</string>
<string name="revanced_check_watch_history_domain_name_dialog_message">Историята ви на гледане не се запазва.&lt;br&gt;&lt;br&gt;Това най-вероятно е причинено от DNS блокиращ реклами или мрежов прокси.&lt;br&gt;&lt;br&gt;За да коригирате това, поставете &lt;b&gt;s.youtube в белия списък.com&lt;/b&gt; или изключете всички DNS блокери и проксита.</string> <string name="revanced_check_watch_history_domain_name_dialog_message">Историята ви на гледане не се запазва.&lt;br&gt;&lt;br&gt;Това най-вероятно е причинено от DNS блокиращ реклами или мрежов прокси.&lt;br&gt;&lt;br&gt;За да коригирате това, поставете &lt;b&gt;s.youtube в белия списък.com&lt;/b&gt; или изключете всички DNS блокери и проксита.</string>
<string name="revanced_check_watch_history_domain_name_dialog_ignore">Не показвай отново</string> <string name="revanced_check_watch_history_domain_name_dialog_ignore">Не показвай отново</string>
</patch> </patch>
<patch id="misc.settings.settingsResourcePatch"> <patch id="misc.settings.settingsResourcePatch">
<string name="revanced_settings_submenu_title">Настройки</string> <string name="revanced_settings_submenu_title">Настройки</string>
<string name="revanced_settings_confirm_user_dialog_title">Сигурни ли сте, че искате да продължите?</string> <string name="revanced_settings_confirm_user_dialog_title">Сигурни ли сте, че искате да продължите?</string>
<string name="revanced_settings_save">Запазване</string>
<string name="revanced_settings_reset">Възстанови</string> <string name="revanced_settings_reset">Възстанови</string>
<string name="revanced_settings_reset_color">Нулиране на цвета</string> <string name="revanced_settings_reset_color">Нулиране на цвета</string>
<string name="revanced_settings_color_invalid">Невалиден цвят</string> <string name="revanced_settings_color_invalid">Невалиден цвят</string>
@@ -164,6 +164,14 @@ Second \"item\" text"</string>
<string name="revanced_debug_logs_clear_buffer_title">Изчистване на логовете за отстраняване на грешки</string> <string name="revanced_debug_logs_clear_buffer_title">Изчистване на логовете за отстраняване на грешки</string>
<string name="revanced_debug_logs_clear_buffer_summary">Изчиства всички съхранени логове за отстраняване на грешки на ReVanced</string> <string name="revanced_debug_logs_clear_buffer_summary">Изчиства всички съхранени логове за отстраняване на грешки на ReVanced</string>
<string name="revanced_debug_logs_clear_toast">Логовете са изчистени</string> <string name="revanced_debug_logs_clear_toast">Логовете са изчистени</string>
<string name="revanced_debug_feature_flags_manager_title">Мениджър на флагове за функции</string>
<string name="revanced_debug_feature_flags_manager_summary">Управление на булеви флагове за функции</string>
<string name="revanced_debug_feature_flags_manager_active_header">Активни флагове (%d)</string>
<string name="revanced_debug_feature_flags_manager_blocked_header">Блокирани флагове (%d)</string>
<string name="revanced_debug_feature_flags_manager_search_hint">Търсене на флагове...</string>
<string name="revanced_debug_feature_flags_manager_toast_saved">Флаговете са запазени</string>
<string name="revanced_debug_feature_flags_manager_toast_reset">Флаговете са нулирани</string>
<string name="revanced_debug_feature_flags_manager_toast_copied">Флаговете са копирани в клипборда</string>
</patch> </patch>
<patch id="misc.privacy.sanitizeSharingLinksPatch"> <patch id="misc.privacy.sanitizeSharingLinksPatch">
<string name="revanced_sanitize_sharing_links_title">Почистване на връзки за споделяне</string> <string name="revanced_sanitize_sharing_links_title">Почистване на връзки за споделяне</string>
@@ -274,6 +282,9 @@ Second \"item\" text"</string>
<string name="revanced_hide_video_recommendation_labels_title">Скриване на етикетите за препоръчани видеоклипове</string> <string name="revanced_hide_video_recommendation_labels_title">Скриване на етикетите за препоръчани видеоклипове</string>
<string name="revanced_hide_video_recommendation_labels_summary_on">\'Хората също така гледаха\' и \'Може също да харесате\' етикетите в резултатите от търсене са скрити</string> <string name="revanced_hide_video_recommendation_labels_summary_on">\'Хората също така гледаха\' и \'Може също да харесате\' етикетите в резултатите от търсене са скрити</string>
<string name="revanced_hide_video_recommendation_labels_summary_off">\'Хората също така гледаха\' и \'Може също да харесате\' етикетите в резултатите от търсене са показани</string> <string name="revanced_hide_video_recommendation_labels_summary_off">\'Хората също така гледаха\' и \'Може също да харесате\' етикетите в резултатите от търсене са показани</string>
<string name="revanced_hide_visual_spacer_title">Скрий визуалния разделител</string>
<string name="revanced_hide_visual_spacer_summary_on">Визуалният разделител е скрит</string>
<string name="revanced_hide_visual_spacer_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">Анимацията на YouTube Doodles върху логото е скрита</string> <string name="revanced_hide_doodles_summary_on">Анимацията на YouTube Doodles върху логото е скрита</string>
@@ -334,12 +345,21 @@ Second \"item\" text"</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_featured_links_section_title">Скриване на препоръчени връзки</string>
<string name="revanced_hide_featured_links_section_summary_on">Секцията с представени връзки е скрита</string>
<string name="revanced_hide_featured_links_section_summary_off">Секцията с представени връзки е показана</string>
<string name="revanced_hide_featured_videos_section_title">Скриване на представени видеоклипове</string>
<string name="revanced_hide_featured_videos_section_summary_on">Секцията с представени видеоклипове е скрита</string>
<string name="revanced_hide_featured_videos_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_subscribe_button_title">Скриване на бутона за абониране</string>
<string name="revanced_hide_subscribe_button_summary_on">Бутонът за абониране е скрит</string>
<string name="revanced_hide_subscribe_button_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>
@@ -361,24 +381,32 @@ Second \"item\" text"</string>
<string name="revanced_hide_filter_bar_feed_in_history_summary_off">Показано в историята на гледанията</string> <string name="revanced_hide_filter_bar_feed_in_history_summary_off">Показано в историята на гледанията</string>
<string name="revanced_channel_screen_title">Страница на канала</string> <string name="revanced_channel_screen_title">Страница на канала</string>
<string name="revanced_channel_screen_summary">Скриване или показване на компоненти на страницата на канала</string> <string name="revanced_channel_screen_summary">Скриване или показване на компоненти на страницата на канала</string>
<!-- 'Community' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_community_button_title">Скрий бутона за Общност</string>
<string name="revanced_hide_community_button_summary_on">Бутонът за общност е скрит</string>
<string name="revanced_hide_community_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>
<!-- 'Join' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_join_button_title">Скриване на бутона Присъединяване</string>
<string name="revanced_hide_join_button_summary_on">Бутонът Присъединяване е скрит</string>
<string name="revanced_hide_join_button_summary_off">Бутонът Присъединяване е показан</string>
<string name="revanced_hide_links_preview_title">Скриване на преглед на връзки</string> <string name="revanced_hide_links_preview_title">Скриване на преглед на връзки</string>
<string name="revanced_hide_links_preview_summary_on">Прегледът на връзки е скрит</string> <string name="revanced_hide_links_preview_summary_on">Прегледът на връзки е скрит</string>
<string name="revanced_hide_links_preview_summary_off">Прегледът на връзки е показан</string> <string name="revanced_hide_links_preview_summary_off">Прегледът на връзки е показан</string>
<string name="revanced_hide_members_shelf_title">Скриване на рафта за членове</string> <string name="revanced_hide_members_shelf_title">Скриване на рафта за членове</string>
<string name="revanced_hide_members_shelf_summary_on">Рафтът за членове е скрит</string> <string name="revanced_hide_members_shelf_summary_on">Рафтът за членове е скрит</string>
<string name="revanced_hide_members_shelf_summary_off">Рафтът за членове е показан</string> <string name="revanced_hide_members_shelf_summary_off">Рафтът за членове е показан</string>
<!-- 'Visit Community' should be translated with the same localized wording that YouTube displays. --> <!-- 'Store' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_visit_community_button_title">Скриване на бутона \"Посетете общността\"</string> <string name="revanced_hide_store_button_title">Скриване на бутона Магазин</string>
<string name="revanced_hide_visit_community_button_summary_on">Бутонът \"Посетете общността\" е скрит</string> <string name="revanced_hide_store_button_summary_on">Бутонът Магазин е скрит</string>
<string name="revanced_hide_visit_community_button_summary_off">Бутонът „Посетете общността“ е показан</string> <string name="revanced_hide_store_button_summary_off">Бутонът Магазин е показан</string>
<!-- 'Visit store' should be translated with the same localized wording that YouTube displays. --> <!-- 'Subscribe' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_visit_store_button_title">Скрийте бутона „Посетете магазина“ на страниците на каналите</string> <string name="revanced_hide_subscribe_button_in_channel_page_title">Скриване на бутона Абониране</string>
<string name="revanced_hide_visit_store_button_summary_on">Бутонът „Посетете магазина“ е скрит</string> <string name="revanced_hide_subscribe_button_in_channel_page_summary_on">Бутонът Абониране е скрит</string>
<string name="revanced_hide_visit_store_button_summary_off">Бутонът „Посетете магазина“ е показан</string> <string name="revanced_hide_subscribe_button_in_channel_page_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_ai_chat_summary_title">Скриване на резюмето на AI чата</string> <string name="revanced_hide_comments_ai_chat_summary_title">Скриване на резюмето на AI чата</string>
@@ -520,11 +548,11 @@ 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 адреса на видеоклипа. Докоснете и задръжте, за да копирате с времеви печат</string> <string name="revanced_copy_video_url_summary_on">Бутонът за копиране на URL адрес на видео е показан. Докоснете, за да копирате URL адреса на видеото. Докоснете и задръжте, за да копирате с времева отметка</string>
<string name="revanced_copy_video_url_summary_off">Бутонът не е показан</string> <string name="revanced_copy_video_url_summary_off">Бутонът за копиране на URL адрес на видео не е показан</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 адрес с времева отметка е показан. Докоснете, за да копирате URL адрес на видео с времева отметка. Докоснете и задръжте, за да копирате без времева отметка</string>
<string name="revanced_copy_video_url_timestamp_summary_off">Бутонът не е показан</string> <string name="revanced_copy_video_url_timestamp_summary_off">Бутонът за копиране на URL адрес с времева отметка не е показан</string>
</patch> </patch>
<patch id="interaction.dialog.removeViewerDiscretionDialogPatch"> <patch id="interaction.dialog.removeViewerDiscretionDialogPatch">
<string name="revanced_remove_viewer_discretion_dialog_title">Прозорец за възрастово ограничение</string> <string name="revanced_remove_viewer_discretion_dialog_title">Прозорец за възрастово ограничение</string>
@@ -533,7 +561,7 @@ Second \"item\" text"</string>
<string name="revanced_remove_viewer_discretion_dialog_user_dialog_message">Тази функция не заобикаля възрастовото ограничение. Тя просто приема възрастовата граница автоматично.</string> <string name="revanced_remove_viewer_discretion_dialog_user_dialog_message">Тази функция не заобикаля възрастовото ограничение. Тя просто приема възрастовата граница автоматично.</string>
</patch> </patch>
<patch id="layout.hide.signintotv.disableSignInToTvPopupPatch"> <patch id="layout.hide.signintotv.disableSignInToTvPopupPatch">
<string name="revanced_disable_signin_to_tv_popup_title">Деактивиране на изскачащия прозорец „Влизане в телевизора</string> <string name="revanced_disable_signin_to_tv_popup_title">Деактивиране на изскачащия прозорец „Вход в телевизор“</string>
<string name="revanced_disable_signin_to_tv_popup_summary_on">Изскачащият прозорец „Влизане в телевизора“ е деактивиран</string> <string name="revanced_disable_signin_to_tv_popup_summary_on">Изскачащият прозорец „Влизане в телевизора“ е деактивиран</string>
<string name="revanced_disable_signin_to_tv_popup_summary_off">Изскачащият прозорец „Влизане в телевизора“ е активиран</string> <string name="revanced_disable_signin_to_tv_popup_summary_off">Изскачащият прозорец „Влизане в телевизора“ е активиран</string>
</patch> </patch>
@@ -665,7 +693,7 @@ Second \"item\" text"</string>
<string name="revanced_hide_download_button_summary_on">Бутона за изтегляне е скрит</string> <string name="revanced_hide_download_button_summary_on">Бутона за изтегляне е скрит</string>
<string name="revanced_hide_download_button_summary_off">Бутона за изтегляне се показва</string> <string name="revanced_hide_download_button_summary_off">Бутона за изтегляне се показва</string>
<!-- 'Hype' should be translated with the same localized wording that YouTube displays. <!-- 'Hype' should be translated with the same localized wording that YouTube displays.
This button only shows on videos uploaded by the logged in user. --> This button only shows on videos uploaded by the logged-in user. -->
<string name="revanced_hide_hype_button_title">Скрий хайпа</string> <string name="revanced_hide_hype_button_title">Скрий хайпа</string>
<string name="revanced_hide_hype_button_summary_on">Бутонът за хайп е скрит</string> <string name="revanced_hide_hype_button_summary_on">Бутонът за хайп е скрит</string>
<string name="revanced_hide_hype_button_summary_off">Бутонът за хайп е показан</string> <string name="revanced_hide_hype_button_summary_off">Бутонът за хайп е показан</string>
@@ -786,10 +814,11 @@ Second \"item\" text"</string>
<string name="revanced_hide_player_flyout_audio_track_title">Избор на Аудио</string> <string name="revanced_hide_player_flyout_audio_track_title">Избор на Аудио</string>
<string name="revanced_hide_player_flyout_audio_track_summary_on">Менюто за избор на Аудио е скрито</string> <string name="revanced_hide_player_flyout_audio_track_summary_on">Менюто за избор на Аудио е скрито</string>
<string name="revanced_hide_player_flyout_audio_track_summary_off">Менюто за избор на Аудио се показва</string> <string name="revanced_hide_player_flyout_audio_track_summary_off">Менюто за избор на Аудио се показва</string>
<!-- 'Spoof video streams' should be the same translation used for 'revanced_spoof_video_streams_screen_title'. --> <!-- 'Spoof video streams' should be the same translation used for 'revanced_spoof_video_streams_screen_title'.
'Android No SDK' must be kept untranslated. -->
<string name="revanced_hide_player_flyout_audio_track_not_available">"Менюто за аудиозапис е скрито <string name="revanced_hide_player_flyout_audio_track_not_available">"Менюто за аудиозапис е скрито
За да покажете менюто за аудиозапис, променете „Подправяне на видео потоци“ на iPadOS"</string> За да покажете менюто за аудиозапис, променете „Подправяне на видео потоци“ на „Android No SDK“"</string>
<!-- 'Watch in VR' should be translated using the same localized wording YouTube displays for the menu item. --> <!-- 'Watch in VR' should be translated using the same localized wording YouTube displays for the menu item. -->
<string name="revanced_hide_player_flyout_watch_in_vr_title">Гледайте във VR</string> <string name="revanced_hide_player_flyout_watch_in_vr_title">Гледайте във VR</string>
<string name="revanced_hide_player_flyout_watch_in_vr_summary_on">Менюто за гледане в VR е скрито</string> <string name="revanced_hide_player_flyout_watch_in_vr_summary_on">Менюто за гледане в VR е скрито</string>
@@ -865,13 +894,16 @@ Second \"item\" text"</string>
<string name="revanced_hide_shorts_history_title">Скриване на шортите в историята на гледане</string> <string name="revanced_hide_shorts_history_title">Скриване на шортите в историята на гледане</string>
<string name="revanced_hide_shorts_history_summary_on">Скрито в историята на гледане</string> <string name="revanced_hide_shorts_history_summary_on">Скрито в историята на гледане</string>
<string name="revanced_hide_shorts_history_summary_off">Показва се в историята на гледане</string> <string name="revanced_hide_shorts_history_summary_off">Показва се в историята на гледане</string>
<string name="revanced_hide_shorts_super_thanks_button_title">Скриване на бутона Buy Super Thanks</string> <string name="revanced_hide_shorts_auto_dubbed_label_title">Скриване на етикета „Автоматично озвучено“</string>
<string name="revanced_hide_shorts_auto_dubbed_label_summary_on">Етикетът за автоматично озвучаване е скрит</string>
<string name="revanced_hide_shorts_auto_dubbed_label_summary_off">Етикетът за автоматично озвучаване е показан</string>
<string name="revanced_hide_shorts_super_thanks_button_title">Скриване на бутона „Купете супер благодарности“</string>
<string name="revanced_hide_shorts_super_thanks_button_summary_on">Бутонът за Купи Super Thanks е скрит</string> <string name="revanced_hide_shorts_super_thanks_button_summary_on">Бутонът за Купи Super Thanks е скрит</string>
<string name="revanced_hide_shorts_super_thanks_button_summary_off">Бутонът за Купи Super Thanks е показан</string> <string name="revanced_hide_shorts_super_thanks_button_summary_off">Бутонът за Купи Super Thanks е показан</string>
<string name="revanced_hide_shorts_effect_button_title">Скрий бутона за ефект</string> <string name="revanced_hide_shorts_effect_button_title">Скрий бутона за ефект</string>
<string name="revanced_hide_shorts_effect_button_summary_on">Бутонът за ефекти е скрит</string> <string name="revanced_hide_shorts_effect_button_summary_on">Бутонът за ефекти е скрит</string>
<string name="revanced_hide_shorts_effect_button_summary_off">Бутонът за ефекти е видим</string> <string name="revanced_hide_shorts_effect_button_summary_off">Бутонът за ефекти е видим</string>
<string name="revanced_hide_shorts_green_screen_button_title">Скриване на бутона Green screen</string> <string name="revanced_hide_shorts_green_screen_button_title">Скриване на бутона „Зелен екран“</string>
<string name="revanced_hide_shorts_green_screen_button_summary_on">Бутон \"Зелен екран\" е скрит</string> <string name="revanced_hide_shorts_green_screen_button_summary_on">Бутон \"Зелен екран\" е скрит</string>
<string name="revanced_hide_shorts_green_screen_button_summary_off">Бутон \"Зелен екран\" се показва</string> <string name="revanced_hide_shorts_green_screen_button_summary_off">Бутон \"Зелен екран\" се показва</string>
<string name="revanced_hide_shorts_hashtag_button_title">Скриване на бутона за хаштаг</string> <string name="revanced_hide_shorts_hashtag_button_title">Скриване на бутона за хаштаг</string>
@@ -881,10 +913,13 @@ Second \"item\" text"</string>
<string name="revanced_hide_shorts_join_button_title">Скриване на бутона Join</string> <string name="revanced_hide_shorts_join_button_title">Скриване на бутона Join</string>
<string name="revanced_hide_shorts_join_button_summary_on">Бутона за присъединяване е скрит</string> <string name="revanced_hide_shorts_join_button_summary_on">Бутона за присъединяване е скрит</string>
<string name="revanced_hide_shorts_join_button_summary_off">Бутона за присъединяване се показва</string> <string name="revanced_hide_shorts_join_button_summary_off">Бутона за присъединяване се показва</string>
<string name="revanced_hide_shorts_live_preview_title">Скриване на прегледа на живо</string>
<string name="revanced_hide_shorts_live_preview_summary_on">Прегледът на живо е скрит</string>
<string name="revanced_hide_shorts_live_preview_summary_off">Прегледът на живо е показан</string>
<string name="revanced_hide_shorts_location_label_title">Етикет за местоположение</string> <string name="revanced_hide_shorts_location_label_title">Етикет за местоположение</string>
<string name="revanced_hide_shorts_location_label_summary_on">Етикет за местоположение е скрит</string> <string name="revanced_hide_shorts_location_label_summary_on">Етикет за местоположение е скрит</string>
<string name="revanced_hide_shorts_location_label_summary_off">Етикет за местоположение се показва</string> <string name="revanced_hide_shorts_location_label_summary_off">Етикет за местоположение се показва</string>
<string name="revanced_hide_shorts_new_posts_button_title">Скриване на бутона \"Нови публикации\"</string> <string name="revanced_hide_shorts_new_posts_button_title">Скриване на бутона Нови публикации</string>
<string name="revanced_hide_shorts_new_posts_button_summary_on">Бутонът \"Нови публикации\" е скрит</string> <string name="revanced_hide_shorts_new_posts_button_summary_on">Бутонът \"Нови публикации\" е скрит</string>
<string name="revanced_hide_shorts_new_posts_button_summary_off">Бутонът \"Нови публикации\" се показва</string> <string name="revanced_hide_shorts_new_posts_button_summary_off">Бутонът \"Нови публикации\" се показва</string>
<string name="revanced_hide_shorts_paused_overlay_buttons_title">Показване на бутони при пауза</string> <string name="revanced_hide_shorts_paused_overlay_buttons_title">Показване на бутони при пауза</string>
@@ -893,7 +928,7 @@ Second \"item\" text"</string>
<string name="revanced_hide_shorts_preview_comment_title">Скриване на коментара за визуализация</string> <string name="revanced_hide_shorts_preview_comment_title">Скриване на коментара за визуализация</string>
<string name="revanced_hide_shorts_preview_comment_summary_on">Коментарът за визуализация е скрит</string> <string name="revanced_hide_shorts_preview_comment_summary_on">Коментарът за визуализация е скрит</string>
<string name="revanced_hide_shorts_preview_comment_summary_off">Показва се визуализация на коментара</string> <string name="revanced_hide_shorts_preview_comment_summary_off">Показва се визуализация на коментара</string>
<string name="revanced_hide_shorts_save_sound_button_title">Скриване на бутона Save music</string> <string name="revanced_hide_shorts_save_sound_button_title">Скриване на бутона „Запазване на музика“</string>
<string name="revanced_hide_shorts_save_sound_button_summary_on">Бутонът за запазване на музика е скрит</string> <string name="revanced_hide_shorts_save_sound_button_summary_on">Бутонът за запазване на музика е скрит</string>
<string name="revanced_hide_shorts_save_sound_button_summary_off">Показан е бутонът за запазване на музика</string> <string name="revanced_hide_shorts_save_sound_button_summary_off">Показан е бутонът за запазване на музика</string>
<string name="revanced_hide_shorts_search_suggestions_title">Скриване на предложенията за търсене</string> <string name="revanced_hide_shorts_search_suggestions_title">Скриване на предложенията за търсене</string>
@@ -914,7 +949,7 @@ Second \"item\" text"</string>
<string name="revanced_hide_shorts_upcoming_button_title">Скриване на бутона Upcoming</string> <string name="revanced_hide_shorts_upcoming_button_title">Скриване на бутона Upcoming</string>
<string name="revanced_hide_shorts_upcoming_button_summary_on">Бутон \"Предстоящи събития\" е скрит</string> <string name="revanced_hide_shorts_upcoming_button_summary_on">Бутон \"Предстоящи събития\" е скрит</string>
<string name="revanced_hide_shorts_upcoming_button_summary_off">Бутон \"Предстоящи събития\" се показва</string> <string name="revanced_hide_shorts_upcoming_button_summary_off">Бутон \"Предстоящи събития\" се показва</string>
<string name="revanced_hide_shorts_use_sound_button_title">Скриване на бутона \"Използвайте този звук\"</string> <string name="revanced_hide_shorts_use_sound_button_title">Скриване на бутона Използване на този звук</string>
<string name="revanced_hide_shorts_use_sound_button_summary_on">Бутонът \"Използвайте този звук\" е скрит</string> <string name="revanced_hide_shorts_use_sound_button_summary_on">Бутонът \"Използвайте този звук\" е скрит</string>
<string name="revanced_hide_shorts_use_sound_button_summary_off">Бутонът \"Използвайте този звук\" е показан</string> <string name="revanced_hide_shorts_use_sound_button_summary_off">Бутонът \"Използвайте този звук\" е показан</string>
<string name="revanced_hide_shorts_use_template_button_title">Скриване на бутона „Използване на този шаблон“</string> <string name="revanced_hide_shorts_use_template_button_title">Скриване на бутона „Използване на този шаблон“</string>
@@ -1560,13 +1595,13 @@ Second \"item\" text"</string>
</patch> </patch>
<patch id="video.speed.button.playbackSpeedButtonPatch"> <patch id="video.speed.button.playbackSpeedButtonPatch">
<string name="revanced_playback_speed_dialog_button_title">Показване бутон за скорост</string> <string name="revanced_playback_speed_dialog_button_title">Показване бутон за скорост</string>
<string name="revanced_playback_speed_dialog_button_summary_on">Бутонът е показан. Докоснете и задръжте, за да върнете скоростта на възпроизвеждане към стойността по подразбиране</string> <string name="revanced_playback_speed_dialog_button_summary_on">Бутонът за диалогов прозорец за скорост е показан. Докоснете и задръжте, за да възстановите скоростта на възпроизвеждане до по подразбиране</string>
<string name="revanced_playback_speed_dialog_button_summary_off">Бутонът не е показан</string> <string name="revanced_playback_speed_dialog_button_summary_off">Бутонът за диалогов прозорец за скорост не е показан</string>
</patch> </patch>
<patch id="video.quality.button.videoQualityDialogButtonPatch"> <patch id="video.quality.button.videoQualityDialogButtonPatch">
<string name="revanced_video_quality_dialog_button_title">Покажи бутона за качество на видеото</string> <string name="revanced_video_quality_dialog_button_title">Покажи бутона за качество на видеото</string>
<string name="revanced_video_quality_dialog_button_summary_on">Бутонът е показан. Докоснете и задръжте, за да възстановите качеството до подразбиране</string> <string name="revanced_video_quality_dialog_button_summary_on">Бутонът за качество на видеото е показан. Докоснете и задръжте, за да възстановите качеството до по подразбиране</string>
<string name="revanced_video_quality_dialog_button_summary_off">Бутонът не е показан</string> <string name="revanced_video_quality_dialog_button_summary_off">Бутонът за качество на видеото не е показан</string>
</patch> </patch>
<patch id="video.speed.custom.customPlaybackSpeedPatch"> <patch id="video.speed.custom.customPlaybackSpeedPatch">
<string name="revanced_custom_speed_menu_title">Менюто за потребителска скорост</string> <string name="revanced_custom_speed_menu_title">Менюто за потребителска скорост</string>
@@ -1663,16 +1698,30 @@ Second \"item\" text"</string>
<string name="revanced_music_play_permanent_repeat_summary_on">Постоянното повтаряне е активирано</string> <string name="revanced_music_play_permanent_repeat_summary_on">Постоянното повтаряне е активирано</string>
<string name="revanced_music_play_permanent_repeat_summary_off">Постоянното повтаряне е деактивирано</string> <string name="revanced_music_play_permanent_repeat_summary_off">Постоянното повтаряне е деактивирано</string>
</patch> </patch>
<patch id="layout.castbutton.hideCastButton"> <patch id="layout.buttons.hideButtons">
<string name="revanced_music_hide_cast_button_title">Скриване на бутона за предаване</string> <string name="revanced_music_hide_cast_button_title">Скриване на бутона за предаване</string>
<string name="revanced_music_hide_cast_button_summary_on">Бутонът за предаване е скрит</string> <string name="revanced_music_hide_cast_button_summary_on">Бутонът за предаване е скрит</string>
<string name="revanced_music_hide_cast_button_summary_off">Бутонът за предаване е показан</string> <string name="revanced_music_hide_cast_button_summary_off">Бутонът за предаване е показан</string>
<string name="revanced_music_hide_history_button_title">Скриване на бутона за история</string>
<string name="revanced_music_hide_history_button_summary_on">Бутонът за история е скрит</string>
<string name="revanced_music_hide_history_button_summary_off">Бутонът за история е показан</string>
<string name="revanced_music_hide_notification_button_title">Скриване на бутона за известия</string>
<string name="revanced_music_hide_notification_button_summary_on">Бутонът за известия е скрит</string>
<string name="revanced_music_hide_notification_button_summary_off">Бутонът за известия е показан</string>
<string name="revanced_music_hide_search_button_title">Скриване на бутона за търсене</string>
<string name="revanced_music_hide_search_button_summary_on">Бутонът за търсене е скрит</string>
<string name="revanced_music_hide_search_button_summary_off">Бутонът за търсене е показан</string>
</patch> </patch>
<patch id="layout.compactheader.hideCategoryBar"> <patch id="layout.compactheader.hideCategoryBar">
<string name="revanced_music_hide_category_bar_title">Скриване на лентата с категории</string> <string name="revanced_music_hide_category_bar_title">Скриване на лентата с категории</string>
<string name="revanced_music_hide_category_bar_summary_on">Лентата с категории е скрита</string> <string name="revanced_music_hide_category_bar_summary_on">Лентата с категории е скрита</string>
<string name="revanced_music_hide_category_bar_summary_off">Лентата с категории е показана</string> <string name="revanced_music_hide_category_bar_summary_off">Лентата с категории е показана</string>
</patch> </patch>
<patch id="layout.miniplayercolor.changeMiniplayerColor">
<string name="revanced_music_change_miniplayer_color_title">Промяна на цвета на миниплейъра</string>
<string name="revanced_music_change_miniplayer_color_summary_on">Цветът на миниплейъра съвпада с този на плейъра на цял екран</string>
<string name="revanced_music_change_miniplayer_color_summary_off">Миниплейърът използва цвят по подразбиране</string>
</patch>
<patch id="layout.navigationbar.navigationBarPatch"> <patch id="layout.navigationbar.navigationBarPatch">
<string name="revanced_music_navigation_bar_screen_title">Навигационна лента</string> <string name="revanced_music_navigation_bar_screen_title">Навигационна лента</string>
<string name="revanced_music_navigation_bar_screen_summary">Скриване или промяна на бутоните на навигационната лента</string> <string name="revanced_music_navigation_bar_screen_summary">Скриване или промяна на бутоните на навигационната лента</string>

View File

@@ -1,5 +1,4 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<!-- Copyright 2024 ReVanced. See https://github.com/ReVanced/revanced-branding -->
<!-- <!--
All strings must have a unique path, even if the same string is declared in two different apps. All strings must have a unique path, even if the same string is declared in two different apps.
@@ -45,13 +44,14 @@ Second \"item\" text"</string>
<string name="revanced_check_environment_not_near_patch_time_invalid">APK তৈরির তারিখ ত্রুটিপূর্ণ</string> <string name="revanced_check_environment_not_near_patch_time_invalid">APK তৈরির তারিখ ত্রুটিপূর্ণ</string>
</patch> </patch>
<patch id="misc.dns.checkWatchHistoryDomainNameResolutionPatch"> <patch id="misc.dns.checkWatchHistoryDomainNameResolutionPatch">
<string name="revanced_check_watch_history_domain_name_dialog_title">সতর্কীকরণ</string> <string name="revanced_check_watch_history_domain_name_dialog_title">ReVanced নোটিশ</string>
<string name="revanced_check_watch_history_domain_name_dialog_message">আপনার দেখার ইতিহাস সংরক্ষিত হচ্ছে না।&lt;br&gt;&lt;br&gt;এটি সম্ভবত DNS অ্যাড ব্লকার অথবা নেটওয়ার্ক প্রক্সির কারণে।&lt;br&gt;&lt;br&gt;এটি ঠিক করার জন্য, &lt;b&gt;s.youtube.com&lt;/b&gt; সাদা তালিকাভুক্ত করুন অথবা সকল DNS ব্লকার এবং প্রক্সি বন্ধ করুন।</string> <string name="revanced_check_watch_history_domain_name_dialog_message">আপনার দেখার ইতিহাস সংরক্ষিত হচ্ছে না।&lt;br&gt;&lt;br&gt;এটি সম্ভবত DNS অ্যাড ব্লকার অথবা নেটওয়ার্ক প্রক্সির কারণে।&lt;br&gt;&lt;br&gt;এটি ঠিক করার জন্য, &lt;b&gt;s.youtube.com&lt;/b&gt; সাদা তালিকাভুক্ত করুন অথবা সকল DNS ব্লকার এবং প্রক্সি বন্ধ করুন।</string>
<string name="revanced_check_watch_history_domain_name_dialog_ignore">আবার দেখাবেন না</string> <string name="revanced_check_watch_history_domain_name_dialog_ignore">আবার দেখাবেন না</string>
</patch> </patch>
<patch id="misc.settings.settingsResourcePatch"> <patch id="misc.settings.settingsResourcePatch">
<string name="revanced_settings_submenu_title">সেটিংস</string> <string name="revanced_settings_submenu_title">সেটিংস</string>
<string name="revanced_settings_confirm_user_dialog_title">আপনি কি এগিয়ে যেতে চান?</string> <string name="revanced_settings_confirm_user_dialog_title">আপনি কি এগিয়ে যেতে চান?</string>
<string name="revanced_settings_save">সংরক্ষণ করুন</string>
<string name="revanced_settings_reset">আবার সেট করুন</string> <string name="revanced_settings_reset">আবার সেট করুন</string>
<string name="revanced_settings_reset_color">রঙ রিসেট করুন</string> <string name="revanced_settings_reset_color">রঙ রিসেট করুন</string>
<string name="revanced_settings_color_invalid">অবৈধ রঙ</string> <string name="revanced_settings_color_invalid">অবৈধ রঙ</string>
@@ -164,6 +164,14 @@ MicroG-এর জন্য ব্যাটারি অপ্টিমাইজ
<string name="revanced_debug_logs_clear_buffer_title">ডিবাগ লগগুলি সাফ করুন</string> <string name="revanced_debug_logs_clear_buffer_title">ডিবাগ লগগুলি সাফ করুন</string>
<string name="revanced_debug_logs_clear_buffer_summary">সমস্ত সঞ্চিত ReVanced ডিবাগ লগ সাফ করে</string> <string name="revanced_debug_logs_clear_buffer_summary">সমস্ত সঞ্চিত ReVanced ডিবাগ লগ সাফ করে</string>
<string name="revanced_debug_logs_clear_toast">লগ সাফ করা হয়েছে</string> <string name="revanced_debug_logs_clear_toast">লগ সাফ করা হয়েছে</string>
<string name="revanced_debug_feature_flags_manager_title">ফিচার ফ্ল্যাগ Manager</string>
<string name="revanced_debug_feature_flags_manager_summary">বুলিয়ান ফিচার ফ্ল্যাগ পরিচালনা করুন</string>
<string name="revanced_debug_feature_flags_manager_active_header">সক্রিয় ফ্ল্যাগ (%d)</string>
<string name="revanced_debug_feature_flags_manager_blocked_header">ব্লক করা ফ্ল্যাগ (%d)</string>
<string name="revanced_debug_feature_flags_manager_search_hint">ফ্ল্যাগ খুঁজুন...</string>
<string name="revanced_debug_feature_flags_manager_toast_saved">ফ্ল্যাগ সংরক্ষণ করা হয়েছে</string>
<string name="revanced_debug_feature_flags_manager_toast_reset">ফ্ল্যাগ রিসেট করা হয়েছে</string>
<string name="revanced_debug_feature_flags_manager_toast_copied">ফ্ল্যাগ ক্লিপবোর্ডে কপি করা হয়েছে</string>
</patch> </patch>
<patch id="misc.privacy.sanitizeSharingLinksPatch"> <patch id="misc.privacy.sanitizeSharingLinksPatch">
<string name="revanced_sanitize_sharing_links_title">শেয়ারিং লিঙ্ক স্যানিটাইজ করুন</string> <string name="revanced_sanitize_sharing_links_title">শেয়ারিং লিঙ্ক স্যানিটাইজ করুন</string>
@@ -270,6 +278,9 @@ MicroG-এর জন্য ব্যাটারি অপ্টিমাইজ
<string name="revanced_hide_video_recommendation_labels_title">ভিডিও সুপারিশ লেবেল লুকান</string> <string name="revanced_hide_video_recommendation_labels_title">ভিডিও সুপারিশ লেবেল লুকান</string>
<string name="revanced_hide_video_recommendation_labels_summary_on">\"অন্যান্য দর্শক দেখেছেন\" এবং \"আপনার পছন্দ হতে পারে\" লেবেলগুলি অনুসন্ধান ফলাফলে লুকানো আছে</string> <string name="revanced_hide_video_recommendation_labels_summary_on">\"অন্যান্য দর্শক দেখেছেন\" এবং \"আপনার পছন্দ হতে পারে\" লেবেলগুলি অনুসন্ধান ফলাফলে লুকানো আছে</string>
<string name="revanced_hide_video_recommendation_labels_summary_off">\"অন্যান্য দর্শক দেখেছেন\" এবং \"আপনার পছন্দ হতে পারে\" লেবেলগুলি অনুসন্ধান ফলাফলে দেখানো হয়েছে</string> <string name="revanced_hide_video_recommendation_labels_summary_off">\"অন্যান্য দর্শক দেখেছেন\" এবং \"আপনার পছন্দ হতে পারে\" লেবেলগুলি অনুসন্ধান ফলাফলে দেখানো হয়েছে</string>
<string name="revanced_hide_visual_spacer_title">ভিজ্যুয়াল স্পেসার লুকান</string>
<string name="revanced_hide_visual_spacer_summary_on">ভিজ্যুয়াল স্পেসার লুকানো হয়েছে</string>
<string name="revanced_hide_visual_spacer_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">লোগোতে YouTube Doodles অ্যানিমেশন লুকানো আছে</string> <string name="revanced_hide_doodles_summary_on">লোগোতে YouTube Doodles অ্যানিমেশন লুকানো আছে</string>
@@ -330,12 +341,21 @@ MicroG-এর জন্য ব্যাটারি অপ্টিমাইজ
<string name="revanced_hide_podcast_section_title">\'Explore the podcast\' লুকান</string> <string name="revanced_hide_podcast_section_title">\'Explore the podcast\' লুকান</string>
<string name="revanced_hide_podcast_section_summary_on">Explore the podcast বিভাগটি লুকানো আছে</string> <string name="revanced_hide_podcast_section_summary_on">Explore the podcast বিভাগটি লুকানো আছে</string>
<string name="revanced_hide_podcast_section_summary_off">Explore the podcast বিভাগটি দেখানো হয়েছে</string> <string name="revanced_hide_podcast_section_summary_off">Explore the podcast বিভাগটি দেখানো হয়েছে</string>
<string name="revanced_hide_featured_links_section_title">ফিচার লিঙ্ক লুকান</string>
<string name="revanced_hide_featured_links_section_summary_on">বিশেষ লিঙ্ক বিভাগ লুকানো আছে</string>
<string name="revanced_hide_featured_links_section_summary_off">বিশেষ লিঙ্ক বিভাগ দেখানো আছে</string>
<string name="revanced_hide_featured_videos_section_title">বিশেষ ভিডিও লুকান</string>
<string name="revanced_hide_featured_videos_section_summary_on">বিশেষ ভিডিও বিভাগ লুকানো আছে</string>
<string name="revanced_hide_featured_videos_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">\'Key concepts\' লুকান</string> <string name="revanced_hide_key_concepts_section_title">\'Key concepts\' লুকান</string>
<string name="revanced_hide_key_concepts_section_summary_on">Key concepts বিভাগটি লুকানো আছে</string> <string name="revanced_hide_key_concepts_section_summary_on">Key concepts বিভাগটি লুকানো আছে</string>
<string name="revanced_hide_key_concepts_section_summary_off">Key concepts বিভাগটি দেখানো হয়েছে</string> <string name="revanced_hide_key_concepts_section_summary_off">Key concepts বিভাগটি দেখানো হয়েছে</string>
<string name="revanced_hide_subscribe_button_title">সাবস্ক্রাইব বোতাম লুকান</string>
<string name="revanced_hide_subscribe_button_summary_on">সাবস্ক্রাইব বোতাম লুকানো আছে</string>
<string name="revanced_hide_subscribe_button_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>
@@ -357,24 +377,32 @@ MicroG-এর জন্য ব্যাটারি অপ্টিমাইজ
<string name="revanced_hide_filter_bar_feed_in_history_summary_off">দেখার ইতিহাসে দেখানো হয়েছে</string> <string name="revanced_hide_filter_bar_feed_in_history_summary_off">দেখার ইতিহাসে দেখানো হয়েছে</string>
<string name="revanced_channel_screen_title">চ্যানেল পৃষ্ঠা</string> <string name="revanced_channel_screen_title">চ্যানেল পৃষ্ঠা</string>
<string name="revanced_channel_screen_summary">চ্যানেল পৃষ্ঠার উপাদানগুলি লুকান বা দেখান</string> <string name="revanced_channel_screen_summary">চ্যানেল পৃষ্ঠার উপাদানগুলি লুকান বা দেখান</string>
<!-- 'Community' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_community_button_title">কমিউনিটি বোতাম লুকান</string>
<string name="revanced_hide_community_button_summary_on">কমিউনিটি বোতাম লুকানো আছে</string>
<string name="revanced_hide_community_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>
<!-- 'Join' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_join_button_title">যোগদান বোতাম লুকান</string>
<string name="revanced_hide_join_button_summary_on">যোগদান বোতাম লুকানো আছে</string>
<string name="revanced_hide_join_button_summary_off">যোগদান বোতাম দেখানো আছে</string>
<string name="revanced_hide_links_preview_title">লিঙ্ক পূর্বরূপ লুকান</string> <string name="revanced_hide_links_preview_title">লিঙ্ক পূর্বরূপ লুকান</string>
<string name="revanced_hide_links_preview_summary_on">লিঙ্ক পূর্বরূপ লুকানো আছে</string> <string name="revanced_hide_links_preview_summary_on">লিঙ্ক পূর্বরূপ লুকানো আছে</string>
<string name="revanced_hide_links_preview_summary_off">লিঙ্ক পূর্বরূপ দেখানো আছে</string> <string name="revanced_hide_links_preview_summary_off">লিঙ্ক পূর্বরূপ দেখানো আছে</string>
<string name="revanced_hide_members_shelf_title">সদস্য শেল্ফ লুকান</string> <string name="revanced_hide_members_shelf_title">সদস্য শেল্ফ লুকান</string>
<string name="revanced_hide_members_shelf_summary_on">সদস্য শেল্ফ লুকানো আছে</string> <string name="revanced_hide_members_shelf_summary_on">সদস্য শেল্ফ লুকানো আছে</string>
<string name="revanced_hide_members_shelf_summary_off">সদস্যদের শেল্ফ দেখানো হয়েছে</string> <string name="revanced_hide_members_shelf_summary_off">সদস্যদের শেল্ফ দেখানো হয়েছে</string>
<!-- 'Visit Community' should be translated with the same localized wording that YouTube displays. --> <!-- 'Store' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_visit_community_button_title">\'কমিউনিটি দেখুন\' বোতাম লুকান</string> <string name="revanced_hide_store_button_title">স্টোর বোতাম লুকান</string>
<string name="revanced_hide_visit_community_button_summary_on">\'কমিউনিটি দেখুন\' বোতাম লুকানো হয়েছে</string> <string name="revanced_hide_store_button_summary_on">স্টোর বোতাম লুকানো ছে</string>
<string name="revanced_hide_visit_community_button_summary_off">কমিউনিটি ভিজিট বাটন দেখানো আছে</string> <string name="revanced_hide_store_button_summary_off">স্টোর বোতাম দেখানো আছে</string>
<!-- 'Visit store' should be translated with the same localized wording that YouTube displays. --> <!-- 'Subscribe' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_visit_store_button_title">চ্যানেল পাতায় \'স্টোরে যান\' বোতাম লুকান</string> <string name="revanced_hide_subscribe_button_in_channel_page_title">সাবস্ক্রাইব বোতাম লুকান</string>
<string name="revanced_hide_visit_store_button_summary_on">স্টোর ভিজিট বাটন লুকানো আছে</string> <string name="revanced_hide_subscribe_button_in_channel_page_summary_on">সাবস্ক্রাইব বোতাম লুকানো আছে</string>
<string name="revanced_hide_visit_store_button_summary_off">্টোর ভিজিট বাটন দেখানো আছে</string> <string name="revanced_hide_subscribe_button_in_channel_page_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_ai_chat_summary_title">এআই চ্যাট সারাংশ লুকান</string> <string name="revanced_hide_comments_ai_chat_summary_title">এআই চ্যাট সারাংশ লুকান</string>
@@ -516,11 +544,11 @@ 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 কপি করতে আলতো চাপুন। টাইমস্ট্যাম্প সহ কপি করতে টিপুন এবং ধরে রাখুন</string> <string name="revanced_copy_video_url_summary_on">ভিডিও ইউআরএল কপি বোতাম দেখানো ছে। ভিডিও ইউআরএল কপি করতে ট্যাপ করুন। টাইমস্ট্যাম্প সহ কপি করতে ট্যাপ করে ধরে রাখুন</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">টাইমস্ট্যাম্প ইউআরএল কপি বোতাম দেখানো ছে। টাইমস্ট্যাম্প সহ ভিডিও ইউআরএল কপি করতে ট্যাপ করুন। টাইমস্ট্যাম্প ছাড়া কপি করতে ট্যাপ করে ধরে রাখুন</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">
<string name="revanced_remove_viewer_discretion_dialog_title">দর্শকের বিচক্ষণতা ডায়ালগ সরান</string> <string name="revanced_remove_viewer_discretion_dialog_title">দর্শকের বিচক্ষণতা ডায়ালগ সরান</string>
@@ -529,7 +557,7 @@ MicroG-এর জন্য ব্যাটারি অপ্টিমাইজ
<string name="revanced_remove_viewer_discretion_dialog_user_dialog_message">এটি বয়সের সীমাবদ্ধতাকে বাইপাস করে না। এটা শুধু স্বয়ংক্রিয়ভাবে গ্রহণ করে।</string> <string name="revanced_remove_viewer_discretion_dialog_user_dialog_message">এটি বয়সের সীমাবদ্ধতাকে বাইপাস করে না। এটা শুধু স্বয়ংক্রিয়ভাবে গ্রহণ করে।</string>
</patch> </patch>
<patch id="layout.hide.signintotv.disableSignInToTvPopupPatch"> <patch id="layout.hide.signintotv.disableSignInToTvPopupPatch">
<string name="revanced_disable_signin_to_tv_popup_title">টিভিতে সাইন ইন পপআপ অক্ষম করুন</string> <string name="revanced_disable_signin_to_tv_popup_title">\'টিভি-তে সাইন ইন করুন\' পপআপ নিষ্ক্রিয় করুন</string>
<string name="revanced_disable_signin_to_tv_popup_summary_on">টিভিতে সাইন ইন পপআপ অক্ষম করা হয়েছে</string> <string name="revanced_disable_signin_to_tv_popup_summary_on">টিভিতে সাইন ইন পপআপ অক্ষম করা হয়েছে</string>
<string name="revanced_disable_signin_to_tv_popup_summary_off">টিভিতে সাইন ইন পপআপ সক্ষম করা হয়েছে</string> <string name="revanced_disable_signin_to_tv_popup_summary_off">টিভিতে সাইন ইন পপআপ সক্ষম করা হয়েছে</string>
</patch> </patch>
@@ -661,7 +689,7 @@ MicroG-এর জন্য ব্যাটারি অপ্টিমাইজ
<string name="revanced_hide_download_button_summary_on">ডাউনলোড বোতাম লুকানো আছে</string> <string name="revanced_hide_download_button_summary_on">ডাউনলোড বোতাম লুকানো আছে</string>
<string name="revanced_hide_download_button_summary_off">ডাউনলোড বোতাম দেখানো হয়েছে</string> <string name="revanced_hide_download_button_summary_off">ডাউনলোড বোতাম দেখানো হয়েছে</string>
<!-- 'Hype' should be translated with the same localized wording that YouTube displays. <!-- 'Hype' should be translated with the same localized wording that YouTube displays.
This button only shows on videos uploaded by the logged in user. --> This button only shows on videos uploaded by the logged-in user. -->
<string name="revanced_hide_hype_button_title">হাইপ লুকান</string> <string name="revanced_hide_hype_button_title">হাইপ লুকান</string>
<string name="revanced_hide_hype_button_summary_on">হাইপ বোতাম লুকানো আছে</string> <string name="revanced_hide_hype_button_summary_on">হাইপ বোতাম লুকানো আছে</string>
<string name="revanced_hide_hype_button_summary_off">হাইপ বাটন দেখানো হয়েছে</string> <string name="revanced_hide_hype_button_summary_off">হাইপ বাটন দেখানো হয়েছে</string>
@@ -782,10 +810,11 @@ MicroG-এর জন্য ব্যাটারি অপ্টিমাইজ
<string name="revanced_hide_player_flyout_audio_track_title">অডিও ট্র্যাক লুকান</string> <string name="revanced_hide_player_flyout_audio_track_title">অডিও ট্র্যাক লুকান</string>
<string name="revanced_hide_player_flyout_audio_track_summary_on">অডিও ট্র্যাক মেনু লুকানো আছে</string> <string name="revanced_hide_player_flyout_audio_track_summary_on">অডিও ট্র্যাক মেনু লুকানো আছে</string>
<string name="revanced_hide_player_flyout_audio_track_summary_off">অডিও ট্র্যাক মেনু দেখানো হয়</string> <string name="revanced_hide_player_flyout_audio_track_summary_off">অডিও ট্র্যাক মেনু দেখানো হয়</string>
<!-- 'Spoof video streams' should be the same translation used for 'revanced_spoof_video_streams_screen_title'. --> <!-- 'Spoof video streams' should be the same translation used for 'revanced_spoof_video_streams_screen_title'.
'Android No SDK' must be kept untranslated. -->
<string name="revanced_hide_player_flyout_audio_track_not_available">"অডিও ট্র্যাক মেনু লুকানো আছে <string name="revanced_hide_player_flyout_audio_track_not_available">"অডিও ট্র্যাক মেনু লুকানো আছে
অডিও ট্র্যাক মেনু দেখানোর জন্য, 'ভিডিও স্ট্রিম স্পুফ করুন' কে iPadOS এ পরিবর্তন করুন"</string> অডিও ট্র্যাক মেনু দেখাতে, 'Spoof video streams' কে 'Android No SDK'-তে পরিবর্তন করুন"</string>
<!-- 'Watch in VR' should be translated using the same localized wording YouTube displays for the menu item. --> <!-- 'Watch in VR' should be translated using the same localized wording YouTube displays for the menu item. -->
<string name="revanced_hide_player_flyout_watch_in_vr_title">ভিআর-এ ঘড়ি লুকান</string> <string name="revanced_hide_player_flyout_watch_in_vr_title">ভিআর-এ ঘড়ি লুকান</string>
<string name="revanced_hide_player_flyout_watch_in_vr_summary_on">ভিআর মেনুতে দেখুন লুকানো আছে</string> <string name="revanced_hide_player_flyout_watch_in_vr_summary_on">ভিআর মেনুতে দেখুন লুকানো আছে</string>
@@ -861,13 +890,16 @@ MicroG-এর জন্য ব্যাটারি অপ্টিমাইজ
<string name="revanced_hide_shorts_history_title">Shortsগুলিকে ওয়াচ ইতিহাসে লুকান</string> <string name="revanced_hide_shorts_history_title">Shortsগুলিকে ওয়াচ ইতিহাসে লুকান</string>
<string name="revanced_hide_shorts_history_summary_on">ওয়াচ হিস্ট্রিতে লুকানো</string> <string name="revanced_hide_shorts_history_summary_on">ওয়াচ হিস্ট্রিতে লুকানো</string>
<string name="revanced_hide_shorts_history_summary_off">ওয়াচ ইতিহাসে দেখানো</string> <string name="revanced_hide_shorts_history_summary_off">ওয়াচ ইতিহাসে দেখানো</string>
<string name="revanced_hide_shorts_super_thanks_button_title">সুপার থ্যাঙ্কস বোতামটি লুকান</string> <string name="revanced_hide_shorts_auto_dubbed_label_title">\'স্বয়ংক্রিয়-ডাবড\' লেবেল লুকান</string>
<string name="revanced_hide_shorts_auto_dubbed_label_summary_on">স্বয়ংক্রিয় ডাব করা লেবেল লুকানো হয়েছে</string>
<string name="revanced_hide_shorts_auto_dubbed_label_summary_off">স্বয়ংক্রিয় ডাব করা লেবেল দেখা যাচ্ছে</string>
<string name="revanced_hide_shorts_super_thanks_button_title">\'সুপার থ্যাঙ্কস কিনুন\' বোতাম লুকান</string>
<string name="revanced_hide_shorts_super_thanks_button_summary_on">সুপার থ্যাঙ্কস কিনুন বোতামটি লুকানো আছে</string> <string name="revanced_hide_shorts_super_thanks_button_summary_on">সুপার থ্যাঙ্কস কিনুন বোতামটি লুকানো আছে</string>
<string name="revanced_hide_shorts_super_thanks_button_summary_off">সুপার থ্যাঙ্কস কিনুন বোতামটি দেখানো হয়েছে</string> <string name="revanced_hide_shorts_super_thanks_button_summary_off">সুপার থ্যাঙ্কস কিনুন বোতামটি দেখানো হয়েছে</string>
<string name="revanced_hide_shorts_effect_button_title">ইফেক্ট বোতাম লুকান</string> <string name="revanced_hide_shorts_effect_button_title">ইফেক্ট বোতাম লুকান</string>
<string name="revanced_hide_shorts_effect_button_summary_on">ইফেক্ট বাটন লুকানো আছে</string> <string name="revanced_hide_shorts_effect_button_summary_on">ইফেক্ট বাটন লুকানো আছে</string>
<string name="revanced_hide_shorts_effect_button_summary_off">ইফেক্ট বাটন দেখানো আছে</string> <string name="revanced_hide_shorts_effect_button_summary_off">ইফেক্ট বাটন দেখানো আছে</string>
<string name="revanced_hide_shorts_green_screen_button_title">গ্রিন স্ক্রিন বোতামটি লুকান</string> <string name="revanced_hide_shorts_green_screen_button_title">\'গ্রিন স্ক্রিন\' বোতাম লুকান</string>
<string name="revanced_hide_shorts_green_screen_button_summary_on">সবুজ পর্দা বোতাম লুকানো আছে</string> <string name="revanced_hide_shorts_green_screen_button_summary_on">সবুজ পর্দা বোতাম লুকানো আছে</string>
<string name="revanced_hide_shorts_green_screen_button_summary_off">সবুজ পর্দা বোতাম দেখানো হচ্ছে</string> <string name="revanced_hide_shorts_green_screen_button_summary_off">সবুজ পর্দা বোতাম দেখানো হচ্ছে</string>
<string name="revanced_hide_shorts_hashtag_button_title">হ্যাশট্যাগ বোতাম লুকান</string> <string name="revanced_hide_shorts_hashtag_button_title">হ্যাশট্যাগ বোতাম লুকান</string>
@@ -877,10 +909,13 @@ MicroG-এর জন্য ব্যাটারি অপ্টিমাইজ
<string name="revanced_hide_shorts_join_button_title">সামিল হও বোতামটি লুকান</string> <string name="revanced_hide_shorts_join_button_title">সামিল হও বোতামটি লুকান</string>
<string name="revanced_hide_shorts_join_button_summary_on">জয়েন করুন বোতাম লুকিয়ে রয়েছে</string> <string name="revanced_hide_shorts_join_button_summary_on">জয়েন করুন বোতাম লুকিয়ে রয়েছে</string>
<string name="revanced_hide_shorts_join_button_summary_off">জয়েন করুন বোতাম প্রদর্শিত হয়েছে</string> <string name="revanced_hide_shorts_join_button_summary_off">জয়েন করুন বোতাম প্রদর্শিত হয়েছে</string>
<string name="revanced_hide_shorts_live_preview_title">সরাসরি পূর্বরূপ লুকান</string>
<string name="revanced_hide_shorts_live_preview_summary_on">লাইভ প্রিভিউ লুকানো আছে</string>
<string name="revanced_hide_shorts_live_preview_summary_off">লাইভ প্রিভিউ দেখানো হয়েছে</string>
<string name="revanced_hide_shorts_location_label_title">অবস্থান লেবেল লুকান</string> <string name="revanced_hide_shorts_location_label_title">অবস্থান লেবেল লুকান</string>
<string name="revanced_hide_shorts_location_label_summary_on">অবস্থান লেবেল লুকিয়ে রয়েছে</string> <string name="revanced_hide_shorts_location_label_summary_on">অবস্থান লেবেল লুকিয়ে রয়েছে</string>
<string name="revanced_hide_shorts_location_label_summary_off">অবস্থান লেবেল প্রদর্শিত হয়েছে</string> <string name="revanced_hide_shorts_location_label_summary_off">অবস্থান লেবেল প্রদর্শিত হয়েছে</string>
<string name="revanced_hide_shorts_new_posts_button_title">নতুন পোস্ট বোতাম লুকান</string> <string name="revanced_hide_shorts_new_posts_button_title">\'নতুন পোস্ট\' বোতাম লুকান</string>
<string name="revanced_hide_shorts_new_posts_button_summary_on">নতুন পোস্ট বোতাম লুকানো হয়েছে</string> <string name="revanced_hide_shorts_new_posts_button_summary_on">নতুন পোস্ট বোতাম লুকানো হয়েছে</string>
<string name="revanced_hide_shorts_new_posts_button_summary_off">নতুন পোস্ট বোতাম দেখানো হয়েছে</string> <string name="revanced_hide_shorts_new_posts_button_summary_off">নতুন পোস্ট বোতাম দেখানো হয়েছে</string>
<string name="revanced_hide_shorts_paused_overlay_buttons_title">থেমে থাকা ওভারলে বোতাম লুকান</string> <string name="revanced_hide_shorts_paused_overlay_buttons_title">থেমে থাকা ওভারলে বোতাম লুকান</string>
@@ -889,7 +924,7 @@ MicroG-এর জন্য ব্যাটারি অপ্টিমাইজ
<string name="revanced_hide_shorts_preview_comment_title">Preview comment লুকান</string> <string name="revanced_hide_shorts_preview_comment_title">Preview comment লুকান</string>
<string name="revanced_hide_shorts_preview_comment_summary_on">Preview comment লুকানো আছে</string> <string name="revanced_hide_shorts_preview_comment_summary_on">Preview comment লুকানো আছে</string>
<string name="revanced_hide_shorts_preview_comment_summary_off">Preview comment দেখানো হয়েছে</string> <string name="revanced_hide_shorts_preview_comment_summary_off">Preview comment দেখানো হয়েছে</string>
<string name="revanced_hide_shorts_save_sound_button_title">সেভ মিউজিক বোতামটি লুকান</string> <string name="revanced_hide_shorts_save_sound_button_title">\'মিউজিক সেভ করুন\' বোতাম লুকান</string>
<string name="revanced_hide_shorts_save_sound_button_summary_on">Save music বোতাম লুকানো আছে</string> <string name="revanced_hide_shorts_save_sound_button_summary_on">Save music বোতাম লুকানো আছে</string>
<string name="revanced_hide_shorts_save_sound_button_summary_off">Save music বোতাম দেখানো হচ্ছে</string> <string name="revanced_hide_shorts_save_sound_button_summary_off">Save music বোতাম দেখানো হচ্ছে</string>
<string name="revanced_hide_shorts_search_suggestions_title">অনুসন্ধান পরামর্শগুলি লুকান</string> <string name="revanced_hide_shorts_search_suggestions_title">অনুসন্ধান পরামর্শগুলি লুকান</string>
@@ -910,10 +945,10 @@ MicroG-এর জন্য ব্যাটারি অপ্টিমাইজ
<string name="revanced_hide_shorts_upcoming_button_title">আসন্ন বোতামটি লুকান</string> <string name="revanced_hide_shorts_upcoming_button_title">আসন্ন বোতামটি লুকান</string>
<string name="revanced_hide_shorts_upcoming_button_summary_on">আগামী বোতাম লুকানো আছে</string> <string name="revanced_hide_shorts_upcoming_button_summary_on">আগামী বোতাম লুকানো আছে</string>
<string name="revanced_hide_shorts_upcoming_button_summary_off">আগামী বোতাম দেখানো হচ্ছে</string> <string name="revanced_hide_shorts_upcoming_button_summary_off">আগামী বোতাম দেখানো হচ্ছে</string>
<string name="revanced_hide_shorts_use_sound_button_title">এই সাউন্ড বাটনটি লুকান</string> <string name="revanced_hide_shorts_use_sound_button_title">\'এই সাউন্ড ব্যবহার করুন\' বোতাম লুকান</string>
<string name="revanced_hide_shorts_use_sound_button_summary_on">এই সাউন্ড বাটনটি লুকানো আছে</string> <string name="revanced_hide_shorts_use_sound_button_summary_on">এই সাউন্ড বাটনটি লুকানো আছে</string>
<string name="revanced_hide_shorts_use_sound_button_summary_off">এই সাউন্ড বাটনটি দেখা যাচ্ছে</string> <string name="revanced_hide_shorts_use_sound_button_summary_off">এই সাউন্ড বাটনটি দেখা যাচ্ছে</string>
<string name="revanced_hide_shorts_use_template_button_title">\"এই টেমপ্লেট ব্যবহার করুন\" বোতাম লুকান</string> <string name="revanced_hide_shorts_use_template_button_title">\'এই টেমপ্লেট ব্যবহার করুন\' বোতাম লুকান</string>
<string name="revanced_hide_shorts_use_template_button_summary_on">এই টেমপ্লেট বাটনটি লুকানো আছে</string> <string name="revanced_hide_shorts_use_template_button_summary_on">এই টেমপ্লেট বাটনটি লুকানো আছে</string>
<string name="revanced_hide_shorts_use_template_button_summary_off">\"এই টেমপ্লেট ব্যবহার করুন\" বোতামটি দেখানো হয়েছে</string> <string name="revanced_hide_shorts_use_template_button_summary_off">\"এই টেমপ্লেট ব্যবহার করুন\" বোতামটি দেখানো হয়েছে</string>
<string name="revanced_hide_shorts_like_fountain_title">লাইক বোতাম ফাউন্টেন অ্যানিমেশনটি লুকান</string> <string name="revanced_hide_shorts_like_fountain_title">লাইক বোতাম ফাউন্টেন অ্যানিমেশনটি লুকান</string>
@@ -1556,13 +1591,13 @@ DeArrow সম্পর্কে আরও জানতে এখানে ট
</patch> </patch>
<patch id="video.speed.button.playbackSpeedButtonPatch"> <patch id="video.speed.button.playbackSpeedButtonPatch">
<string name="revanced_playback_speed_dialog_button_title">স্পিড ডায়ালগ বোতাম দেখান</string> <string name="revanced_playback_speed_dialog_button_title">স্পিড ডায়ালগ বোতাম দেখান</string>
<string name="revanced_playback_speed_dialog_button_summary_on">বোতামটি দেখানো হয়েছে। প্লেব্যাক স্পড ডিফল্টে রিসেট করতে ট্যাপ করে ধরে রাখুন</string> <string name="revanced_playback_speed_dialog_button_summary_on">স্পিড ডায়ালগ বোতাম দেখানো ছে। প্লেব্যাক স্পিড ডিফল্টে রিসেট করতে ট্যাপ করে ধরে রাখুন</string>
<string name="revanced_playback_speed_dialog_button_summary_off">বোতাম প্রদর্শিত হয়নি</string> <string name="revanced_playback_speed_dialog_button_summary_off">স্পিড ডায়ালগ বোতাম দেখানো নেই</string>
</patch> </patch>
<patch id="video.quality.button.videoQualityDialogButtonPatch"> <patch id="video.quality.button.videoQualityDialogButtonPatch">
<string name="revanced_video_quality_dialog_button_title">ভিডিও গুণমান বোতাম দেখান</string> <string name="revanced_video_quality_dialog_button_title">ভিডিও গুণমান বোতাম দেখান</string>
<string name="revanced_video_quality_dialog_button_summary_on">বোতামটি দেখানো হয়েছে। গুণমান ডিফল্টে রিসেট করতে ট্যাপ করে ধরে রাখুন</string> <string name="revanced_video_quality_dialog_button_summary_on">ভিডিও কোয়ালিটি বোতাম দেখানো আছে। কোয়ালিটি ডিফল্টে রিসেট করতে ট্যাপ করে ধরে রাখুন</string>
<string name="revanced_video_quality_dialog_button_summary_off">বোতামটি দেখানো হয়নি।</string> <string name="revanced_video_quality_dialog_button_summary_off">ভিডিও কোয়ালিটি বোতাম দেখানো নেই</string>
</patch> </patch>
<patch id="video.speed.custom.customPlaybackSpeedPatch"> <patch id="video.speed.custom.customPlaybackSpeedPatch">
<string name="revanced_custom_speed_menu_title">কাস্টম প্লেব্যাক গতি মেনু</string> <string name="revanced_custom_speed_menu_title">কাস্টম প্লেব্যাক গতি মেনু</string>
@@ -1659,16 +1694,30 @@ AV1 সহ ভিডিও প্লেব্যাক আটকে যেতে
<string name="revanced_music_play_permanent_repeat_summary_on">স্থায়ী পুনরাবৃত্তি সক্ষম করা হয়েছে</string> <string name="revanced_music_play_permanent_repeat_summary_on">স্থায়ী পুনরাবৃত্তি সক্ষম করা হয়েছে</string>
<string name="revanced_music_play_permanent_repeat_summary_off">স্থায়ী পুনরাবৃত্তি অক্ষম করা হয়েছে</string> <string name="revanced_music_play_permanent_repeat_summary_off">স্থায়ী পুনরাবৃত্তি অক্ষম করা হয়েছে</string>
</patch> </patch>
<patch id="layout.castbutton.hideCastButton"> <patch id="layout.buttons.hideButtons">
<string name="revanced_music_hide_cast_button_title">কাস্ট বোতাম লুকান</string> <string name="revanced_music_hide_cast_button_title">কাস্ট বোতাম লুকান</string>
<string name="revanced_music_hide_cast_button_summary_on">কাস্ট বোতাম লুকানো আছে</string> <string name="revanced_music_hide_cast_button_summary_on">কাস্ট বোতাম লুকানো আছে</string>
<string name="revanced_music_hide_cast_button_summary_off">কাস্ট বোতাম দেখানো আছে</string> <string name="revanced_music_hide_cast_button_summary_off">কাস্ট বোতাম দেখানো আছে</string>
<string name="revanced_music_hide_history_button_title">ইতিহাস বোতাম লুকান</string>
<string name="revanced_music_hide_history_button_summary_on">ইতিহাস বোতাম লুকানো আছে</string>
<string name="revanced_music_hide_history_button_summary_off">ইতিহাস বোতাম দেখানো আছে</string>
<string name="revanced_music_hide_notification_button_title">বিজ্ঞপ্তি বাটন লুকান</string>
<string name="revanced_music_hide_notification_button_summary_on">বিজ্ঞপ্তি বাটন লুকানো আছে</string>
<string name="revanced_music_hide_notification_button_summary_off">বিজ্ঞপ্তি বাটন দেখানো হয়েছে</string>
<string name="revanced_music_hide_search_button_title">অনুসন্ধান বাটন লুকান</string>
<string name="revanced_music_hide_search_button_summary_on">অনুসন্ধান বাটন লুকানো আছে</string>
<string name="revanced_music_hide_search_button_summary_off">অনুসন্ধান বাটন দেখানো হয়েছে</string>
</patch> </patch>
<patch id="layout.compactheader.hideCategoryBar"> <patch id="layout.compactheader.hideCategoryBar">
<string name="revanced_music_hide_category_bar_title">ক্যাটাগরি বার লুকান</string> <string name="revanced_music_hide_category_bar_title">ক্যাটাগরি বার লুকান</string>
<string name="revanced_music_hide_category_bar_summary_on">ক্যাটাগরি বার লুকানো আছে</string> <string name="revanced_music_hide_category_bar_summary_on">ক্যাটাগরি বার লুকানো আছে</string>
<string name="revanced_music_hide_category_bar_summary_off">ক্যাটাগরি বার দেখানো আছে</string> <string name="revanced_music_hide_category_bar_summary_off">ক্যাটাগরি বার দেখানো আছে</string>
</patch> </patch>
<patch id="layout.miniplayercolor.changeMiniplayerColor">
<string name="revanced_music_change_miniplayer_color_title">মিনিপ্লেয়ারের রঙ পরিবর্তন করুন</string>
<string name="revanced_music_change_miniplayer_color_summary_on">মিনিপ্লেয়ারের রঙ ফুলস্ক্রিন প্লেয়ারের সাথে মেলে</string>
<string name="revanced_music_change_miniplayer_color_summary_off">মিনিপ্লেয়ার ডিফল্ট রঙ ব্যবহার করে</string>
</patch>
<patch id="layout.navigationbar.navigationBarPatch"> <patch id="layout.navigationbar.navigationBarPatch">
<string name="revanced_music_navigation_bar_screen_title">নেভিগেশন বার</string> <string name="revanced_music_navigation_bar_screen_title">নেভিগেশন বার</string>
<string name="revanced_music_navigation_bar_screen_summary">নেভিগেশন বারের বোতামগুলি লুকান বা পরিবর্তন করুন</string> <string name="revanced_music_navigation_bar_screen_summary">নেভিগেশন বারের বোতামগুলি লুকান বা পরিবর্তন করুন</string>

View File

@@ -1,5 +1,4 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<!-- Copyright 2024 ReVanced. See https://github.com/ReVanced/revanced-branding -->
<!-- <!--
All strings must have a unique path, even if the same string is declared in two different apps. All strings must have a unique path, even if the same string is declared in two different apps.
@@ -64,9 +63,11 @@ Second \"item\" text"</string>
<!-- https://logos.fandom.com/wiki/YouTube/Yoodles --> <!-- https://logos.fandom.com/wiki/YouTube/Yoodles -->
<!-- '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. -->
<!-- 'Community' should be translated with the same localized wording that YouTube displays. -->
<!-- 'For You' should be translated using the same localized wording YouTube displays. --> <!-- 'For You' should be translated using the same localized wording YouTube displays. -->
<!-- 'Visit Community' should be translated with the same localized wording that YouTube displays. --> <!-- 'Join' should be translated with the same localized wording that YouTube displays. -->
<!-- 'Visit store' should be translated with the same localized wording that YouTube displays. --> <!-- 'Store' should be translated with the same localized wording that YouTube displays. -->
<!-- 'Subscribe' should be translated with the same localized wording that YouTube displays. -->
<!-- 'Component path builder strings' is the technical name for identifying the Litho UI layout items to hide. This is an advanced feature and most users will never use this. --> <!-- 'Component path builder strings' is the technical name for identifying the Litho UI layout items to hide. This is an advanced feature and most users will never use this. -->
<!-- Translations should lanaguge similar to revanced_hide_upload_time_user_dialog_message --> <!-- Translations should lanaguge similar to revanced_hide_upload_time_user_dialog_message -->
<!-- Translations should lanaguge similar to revanced_hide_view_count_user_dialog_message --> <!-- Translations should lanaguge similar to revanced_hide_view_count_user_dialog_message -->
@@ -110,7 +111,7 @@ Second \"item\" text"</string>
<!-- 'Remix' should be translated with the same localized wording that YouTube displays. --> <!-- 'Remix' should be translated with the same localized wording that YouTube displays. -->
<!-- 'Download' should be translated with the same localized wording that YouTube displays. --> <!-- 'Download' should be translated with the same localized wording that YouTube displays. -->
<!-- 'Hype' should be translated with the same localized wording that YouTube displays. <!-- 'Hype' should be translated with the same localized wording that YouTube displays.
This button only shows on videos uploaded by the logged in user. --> This button only shows on videos uploaded by the logged-in user. -->
<!-- 'Promote' should be translated with the same localized wording that YouTube displays. --> <!-- 'Promote' should be translated with the same localized wording that YouTube displays. -->
<!-- 'Thanks' should be translated with the same localized wording that YouTube displays. --> <!-- 'Thanks' should be translated with the same localized wording that YouTube displays. -->
<!-- 'Ask' should be translated with the same localized wording that YouTube displays. <!-- 'Ask' should be translated with the same localized wording that YouTube displays.
@@ -137,7 +138,8 @@ Second \"item\" text"</string>
<!-- 'Lock screen' should be translated using the same localized wording YouTube displays for the menu item. --> <!-- 'Lock screen' should be translated using the same localized wording YouTube displays for the menu item. -->
<!-- 'Listen with YouTube Music' should be translated using the same localized wording YouTube displays for the menu item. --> <!-- 'Listen with YouTube Music' should be translated using the same localized wording YouTube displays for the menu item. -->
<!-- 'Audio track' should be translated using the same localized wording YouTube displays for the menu item. --> <!-- 'Audio track' should be translated using the same localized wording YouTube displays for the menu item. -->
<!-- 'Spoof video streams' should be the same translation used for 'revanced_spoof_video_streams_screen_title'. --> <!-- 'Spoof video streams' should be the same translation used for 'revanced_spoof_video_streams_screen_title'.
'Android No SDK' must be kept untranslated. -->
<!-- 'Watch in VR' should be translated using the same localized wording YouTube displays for the menu item. --> <!-- 'Watch in VR' should be translated using the same localized wording YouTube displays for the menu item. -->
</patch> </patch>
<patch id="layout.buttons.overlay.hidePlayerOverlayButtonsPatch"> <patch id="layout.buttons.overlay.hidePlayerOverlayButtonsPatch">
@@ -267,10 +269,12 @@ Second \"item\" text"</string>
</patch> </patch>
<patch id="interaction.permanentrepeat.permanentRepeatPatch"> <patch id="interaction.permanentrepeat.permanentRepeatPatch">
</patch> </patch>
<patch id="layout.castbutton.hideCastButton"> <patch id="layout.buttons.hideButtons">
</patch> </patch>
<patch id="layout.compactheader.hideCategoryBar"> <patch id="layout.compactheader.hideCategoryBar">
</patch> </patch>
<patch id="layout.miniplayercolor.changeMiniplayerColor">
</patch>
<patch id="layout.navigationbar.navigationBarPatch"> <patch id="layout.navigationbar.navigationBarPatch">
<!-- 'Home' should be translated using the same localized wording YouTube Music displays for the tab. --> <!-- 'Home' should be translated using the same localized wording YouTube Music displays for the tab. -->
<!-- 'Samples' should be translated using the same localized wording YouTube Music displays for the tab. --> <!-- 'Samples' should be translated using the same localized wording YouTube Music displays for the tab. -->

View File

@@ -1,5 +1,4 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<!-- Copyright 2024 ReVanced. See https://github.com/ReVanced/revanced-branding -->
<!-- <!--
All strings must have a unique path, even if the same string is declared in two different apps. All strings must have a unique path, even if the same string is declared in two different apps.
@@ -64,9 +63,11 @@ Second \"item\" text"</string>
<!-- https://logos.fandom.com/wiki/YouTube/Yoodles --> <!-- https://logos.fandom.com/wiki/YouTube/Yoodles -->
<!-- '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. -->
<!-- 'Community' should be translated with the same localized wording that YouTube displays. -->
<!-- 'For You' should be translated using the same localized wording YouTube displays. --> <!-- 'For You' should be translated using the same localized wording YouTube displays. -->
<!-- 'Visit Community' should be translated with the same localized wording that YouTube displays. --> <!-- 'Join' should be translated with the same localized wording that YouTube displays. -->
<!-- 'Visit store' should be translated with the same localized wording that YouTube displays. --> <!-- 'Store' should be translated with the same localized wording that YouTube displays. -->
<!-- 'Subscribe' should be translated with the same localized wording that YouTube displays. -->
<!-- 'Component path builder strings' is the technical name for identifying the Litho UI layout items to hide. This is an advanced feature and most users will never use this. --> <!-- 'Component path builder strings' is the technical name for identifying the Litho UI layout items to hide. This is an advanced feature and most users will never use this. -->
<!-- Translations should lanaguge similar to revanced_hide_upload_time_user_dialog_message --> <!-- Translations should lanaguge similar to revanced_hide_upload_time_user_dialog_message -->
<!-- Translations should lanaguge similar to revanced_hide_view_count_user_dialog_message --> <!-- Translations should lanaguge similar to revanced_hide_view_count_user_dialog_message -->
@@ -110,7 +111,7 @@ Second \"item\" text"</string>
<!-- 'Remix' should be translated with the same localized wording that YouTube displays. --> <!-- 'Remix' should be translated with the same localized wording that YouTube displays. -->
<!-- 'Download' should be translated with the same localized wording that YouTube displays. --> <!-- 'Download' should be translated with the same localized wording that YouTube displays. -->
<!-- 'Hype' should be translated with the same localized wording that YouTube displays. <!-- 'Hype' should be translated with the same localized wording that YouTube displays.
This button only shows on videos uploaded by the logged in user. --> This button only shows on videos uploaded by the logged-in user. -->
<!-- 'Promote' should be translated with the same localized wording that YouTube displays. --> <!-- 'Promote' should be translated with the same localized wording that YouTube displays. -->
<!-- 'Thanks' should be translated with the same localized wording that YouTube displays. --> <!-- 'Thanks' should be translated with the same localized wording that YouTube displays. -->
<!-- 'Ask' should be translated with the same localized wording that YouTube displays. <!-- 'Ask' should be translated with the same localized wording that YouTube displays.
@@ -137,7 +138,8 @@ Second \"item\" text"</string>
<!-- 'Lock screen' should be translated using the same localized wording YouTube displays for the menu item. --> <!-- 'Lock screen' should be translated using the same localized wording YouTube displays for the menu item. -->
<!-- 'Listen with YouTube Music' should be translated using the same localized wording YouTube displays for the menu item. --> <!-- 'Listen with YouTube Music' should be translated using the same localized wording YouTube displays for the menu item. -->
<!-- 'Audio track' should be translated using the same localized wording YouTube displays for the menu item. --> <!-- 'Audio track' should be translated using the same localized wording YouTube displays for the menu item. -->
<!-- 'Spoof video streams' should be the same translation used for 'revanced_spoof_video_streams_screen_title'. --> <!-- 'Spoof video streams' should be the same translation used for 'revanced_spoof_video_streams_screen_title'.
'Android No SDK' must be kept untranslated. -->
<!-- 'Watch in VR' should be translated using the same localized wording YouTube displays for the menu item. --> <!-- 'Watch in VR' should be translated using the same localized wording YouTube displays for the menu item. -->
</patch> </patch>
<patch id="layout.buttons.overlay.hidePlayerOverlayButtonsPatch"> <patch id="layout.buttons.overlay.hidePlayerOverlayButtonsPatch">
@@ -267,10 +269,12 @@ Second \"item\" text"</string>
</patch> </patch>
<patch id="interaction.permanentrepeat.permanentRepeatPatch"> <patch id="interaction.permanentrepeat.permanentRepeatPatch">
</patch> </patch>
<patch id="layout.castbutton.hideCastButton"> <patch id="layout.buttons.hideButtons">
</patch> </patch>
<patch id="layout.compactheader.hideCategoryBar"> <patch id="layout.compactheader.hideCategoryBar">
</patch> </patch>
<patch id="layout.miniplayercolor.changeMiniplayerColor">
</patch>
<patch id="layout.navigationbar.navigationBarPatch"> <patch id="layout.navigationbar.navigationBarPatch">
<!-- 'Home' should be translated using the same localized wording YouTube Music displays for the tab. --> <!-- 'Home' should be translated using the same localized wording YouTube Music displays for the tab. -->
<!-- 'Samples' should be translated using the same localized wording YouTube Music displays for the tab. --> <!-- 'Samples' should be translated using the same localized wording YouTube Music displays for the tab. -->

View File

@@ -1,5 +1,4 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<!-- Copyright 2024 ReVanced. See https://github.com/ReVanced/revanced-branding -->
<!-- <!--
All strings must have a unique path, even if the same string is declared in two different apps. All strings must have a unique path, even if the same string is declared in two different apps.
@@ -45,13 +44,14 @@ Second \"item\" text"</string>
<string name="revanced_check_environment_not_near_patch_time_invalid">Datum sestavení souboru APK je poškozeno</string> <string name="revanced_check_environment_not_near_patch_time_invalid">Datum sestavení souboru APK je poškozeno</string>
</patch> </patch>
<patch id="misc.dns.checkWatchHistoryDomainNameResolutionPatch"> <patch id="misc.dns.checkWatchHistoryDomainNameResolutionPatch">
<string name="revanced_check_watch_history_domain_name_dialog_title">Varování</string> <string name="revanced_check_watch_history_domain_name_dialog_title">Upozornění ReVanced</string>
<string name="revanced_check_watch_history_domain_name_dialog_message">Vaše historie sledování není ukládána.&lt;br&gt;&lt;br&gt;Příčinou je s největší pravděpodobností DNS blokátor reklam nebo síťový proxy server.&lt;br&gt;&lt;br&gt;Chcete-li to opravit, přidejte&lt;b&gt;s.youtube.com&lt;/b&gt; na whitelist nebo vypněte všechny DNS blokátory a proxy servery.</string> <string name="revanced_check_watch_history_domain_name_dialog_message">Vaše historie sledování není ukládána.&lt;br&gt;&lt;br&gt;Příčinou je s největší pravděpodobností DNS blokátor reklam nebo síťový proxy server.&lt;br&gt;&lt;br&gt;Chcete-li to opravit, přidejte&lt;b&gt;s.youtube.com&lt;/b&gt; na whitelist nebo vypněte všechny DNS blokátory a proxy servery.</string>
<string name="revanced_check_watch_history_domain_name_dialog_ignore">Už nezobrazovat</string> <string name="revanced_check_watch_history_domain_name_dialog_ignore">Už nezobrazovat</string>
</patch> </patch>
<patch id="misc.settings.settingsResourcePatch"> <patch id="misc.settings.settingsResourcePatch">
<string name="revanced_settings_submenu_title">Nastavení</string> <string name="revanced_settings_submenu_title">Nastavení</string>
<string name="revanced_settings_confirm_user_dialog_title">Opravdu chcete pokračovat?</string> <string name="revanced_settings_confirm_user_dialog_title">Opravdu chcete pokračovat?</string>
<string name="revanced_settings_save">Uložit</string>
<string name="revanced_settings_reset">Výchozí</string> <string name="revanced_settings_reset">Výchozí</string>
<string name="revanced_settings_reset_color">Obnovit barvu</string> <string name="revanced_settings_reset_color">Obnovit barvu</string>
<string name="revanced_settings_color_invalid">Neplatná barva</string> <string name="revanced_settings_color_invalid">Neplatná barva</string>
@@ -164,6 +164,14 @@ Nebudete informováni o žádné neočekávané události."</string>
<string name="revanced_debug_logs_clear_buffer_title">Vymazat ladicí protokoly</string> <string name="revanced_debug_logs_clear_buffer_title">Vymazat ladicí protokoly</string>
<string name="revanced_debug_logs_clear_buffer_summary">Vymaže všechny uložené ladicí protokoly ReVanced</string> <string name="revanced_debug_logs_clear_buffer_summary">Vymaže všechny uložené ladicí protokoly ReVanced</string>
<string name="revanced_debug_logs_clear_toast">Protokoly vymazány</string> <string name="revanced_debug_logs_clear_toast">Protokoly vymazány</string>
<string name="revanced_debug_feature_flags_manager_title">Příznaky funkcí Manager</string>
<string name="revanced_debug_feature_flags_manager_summary">Spravovat boolean příznaky funkcí</string>
<string name="revanced_debug_feature_flags_manager_active_header">Aktivní přepínače (%d)</string>
<string name="revanced_debug_feature_flags_manager_blocked_header">Zablokované přepínače (%d)</string>
<string name="revanced_debug_feature_flags_manager_search_hint">Hledat přepínače...</string>
<string name="revanced_debug_feature_flags_manager_toast_saved">Přepínače uloženy</string>
<string name="revanced_debug_feature_flags_manager_toast_reset">Přepínače resetovány</string>
<string name="revanced_debug_feature_flags_manager_toast_copied">Přepínače zkopírovány do schránky</string>
</patch> </patch>
<patch id="misc.privacy.sanitizeSharingLinksPatch"> <patch id="misc.privacy.sanitizeSharingLinksPatch">
<string name="revanced_sanitize_sharing_links_title">Vyčistit sdílené odkazy</string> <string name="revanced_sanitize_sharing_links_title">Vyčistit sdílené odkazy</string>
@@ -274,6 +282,9 @@ Povolením této možnosti se však budou zaznamenávat i některá uživatelsk
<string name="revanced_hide_video_recommendation_labels_title">Skrýt štítky doporučení videí</string> <string name="revanced_hide_video_recommendation_labels_title">Skrýt štítky doporučení videí</string>
<string name="revanced_hide_video_recommendation_labels_summary_on">Štítky „Lidé také sledovali“ a „Mohlo by se vám také líbit“ ve výsledcích vyhledávání jsou skryty</string> <string name="revanced_hide_video_recommendation_labels_summary_on">Štítky „Lidé také sledovali“ a „Mohlo by se vám také líbit“ ve výsledcích vyhledávání jsou skryty</string>
<string name="revanced_hide_video_recommendation_labels_summary_off">Štítky „Lidé také sledovali“ a „Mohlo by se vám také líbit“ ve výsledcích vyhledávání jsou zobrazeny</string> <string name="revanced_hide_video_recommendation_labels_summary_off">Štítky „Lidé také sledovali“ a „Mohlo by se vám také líbit“ ve výsledcích vyhledávání jsou zobrazeny</string>
<string name="revanced_hide_visual_spacer_title">Skrýt vizuální oddělovač</string>
<string name="revanced_hide_visual_spacer_summary_on">Vizuální oddělovač je skryt</string>
<string name="revanced_hide_visual_spacer_summary_off">Vizuální oddělovač je zobrazen</string>
<!-- https://logos.fandom.com/wiki/YouTube/Yoodles --> <!-- https://logos.fandom.com/wiki/YouTube/Yoodles -->
<string name="revanced_hide_doodles_title">Skrýt YouTube Doodles</string> <string name="revanced_hide_doodles_title">Skrýt YouTube Doodles</string>
<string name="revanced_hide_doodles_summary_on">Animace \"Doodles\" YouTube na logu je skryta</string> <string name="revanced_hide_doodles_summary_on">Animace \"Doodles\" YouTube na logu je skryta</string>
@@ -334,12 +345,21 @@ Pokud se Doodle v současné době zobrazuje ve vaší oblasti a toto nastavení
<string name="revanced_hide_podcast_section_title">Skrýt „Prozkoumat podcast“</string> <string name="revanced_hide_podcast_section_title">Skrýt „Prozkoumat podcast“</string>
<string name="revanced_hide_podcast_section_summary_on">Sekce Prozkoumat podcast je skrytá</string> <string name="revanced_hide_podcast_section_summary_on">Sekce Prozkoumat podcast je skrytá</string>
<string name="revanced_hide_podcast_section_summary_off">Sekce Prozkoumat podcast je zobrazena</string> <string name="revanced_hide_podcast_section_summary_off">Sekce Prozkoumat podcast je zobrazena</string>
<string name="revanced_hide_featured_links_section_title">Skrýt doporučené odkazy</string>
<string name="revanced_hide_featured_links_section_summary_on">Sekce doporučených odkazů je skrytá</string>
<string name="revanced_hide_featured_links_section_summary_off">Sekce doporučených odkazů je zobrazena</string>
<string name="revanced_hide_featured_videos_section_title">Skrýt doporučená videa</string>
<string name="revanced_hide_featured_videos_section_summary_on">Sekce doporučených videí je skrytá</string>
<string name="revanced_hide_featured_videos_section_summary_off">Sekce doporučených videí je zobrazena</string>
<string name="revanced_hide_info_cards_section_title">Skrýt informační karty</string> <string name="revanced_hide_info_cards_section_title">Skrýt informační karty</string>
<string name="revanced_hide_info_cards_section_summary_on">Sekce informačních karet je skrytá</string> <string name="revanced_hide_info_cards_section_summary_on">Sekce informačních karet je skrytá</string>
<string name="revanced_hide_info_cards_section_summary_off">Sekce informačních karet je zobrazena</string> <string name="revanced_hide_info_cards_section_summary_off">Sekce informačních karet je zobrazena</string>
<string name="revanced_hide_key_concepts_section_title">Skrýt „Klíčové koncepty“</string> <string name="revanced_hide_key_concepts_section_title">Skrýt „Klíčové koncepty“</string>
<string name="revanced_hide_key_concepts_section_summary_on">Sekce Klíčové koncepty je skrytá</string> <string name="revanced_hide_key_concepts_section_summary_on">Sekce Klíčové koncepty je skrytá</string>
<string name="revanced_hide_key_concepts_section_summary_off">Sekce Klíčové koncepty je zobrazena</string> <string name="revanced_hide_key_concepts_section_summary_off">Sekce Klíčové koncepty je zobrazena</string>
<string name="revanced_hide_subscribe_button_title">Skrýt tlačítko Odebírat</string>
<string name="revanced_hide_subscribe_button_summary_on">Tlačítko Odebírat je skryté</string>
<string name="revanced_hide_subscribe_button_summary_off">Tlačítko Odebírat je zobrazeno</string>
<string name="revanced_hide_transcript_section_title">Skrýt přepis</string> <string name="revanced_hide_transcript_section_title">Skrýt přepis</string>
<string name="revanced_hide_transcript_section_summary_on">Sekce přepisu je skrytá</string> <string name="revanced_hide_transcript_section_summary_on">Sekce přepisu je skrytá</string>
<string name="revanced_hide_transcript_section_summary_off">Sekce přepisu je zobrazena</string> <string name="revanced_hide_transcript_section_summary_off">Sekce přepisu je zobrazena</string>
@@ -361,24 +381,32 @@ Pokud se Doodle v současné době zobrazuje ve vaší oblasti a toto nastavení
<string name="revanced_hide_filter_bar_feed_in_history_summary_off">Zobrazeno v historii sledování</string> <string name="revanced_hide_filter_bar_feed_in_history_summary_off">Zobrazeno v historii sledování</string>
<string name="revanced_channel_screen_title">Stránka kanálu</string> <string name="revanced_channel_screen_title">Stránka kanálu</string>
<string name="revanced_channel_screen_summary">Skrýt nebo zobrazit komponenty stránky kanálu</string> <string name="revanced_channel_screen_summary">Skrýt nebo zobrazit komponenty stránky kanálu</string>
<!-- 'Community' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_community_button_title">Skrýt tlačítko Komunita</string>
<string name="revanced_hide_community_button_summary_on">Tlačítko Komunita je skryto</string>
<string name="revanced_hide_community_button_summary_off">Tlačítko Komunita je zobrazeno</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">Skrýt panel „Pro vás“</string> <string name="revanced_hide_for_you_shelf_title">Skrýt panel „Pro vás“</string>
<string name="revanced_hide_for_you_shelf_summary_on">Polička Pro vás je skryta</string> <string name="revanced_hide_for_you_shelf_summary_on">Polička Pro vás je skryta</string>
<string name="revanced_hide_for_you_shelf_summary_off">Polička Pro vás je zobrazena</string> <string name="revanced_hide_for_you_shelf_summary_off">Polička Pro vás je zobrazena</string>
<!-- 'Join' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_join_button_title">Skrýt tlačítko Připojit se</string>
<string name="revanced_hide_join_button_summary_on">Tlačítko Připojit se je skryto</string>
<string name="revanced_hide_join_button_summary_off">Tlačítko Připojit se je zobrazeno</string>
<string name="revanced_hide_links_preview_title">Skrýt náhled odkazů</string> <string name="revanced_hide_links_preview_title">Skrýt náhled odkazů</string>
<string name="revanced_hide_links_preview_summary_on">Náhled odkazů je skryt</string> <string name="revanced_hide_links_preview_summary_on">Náhled odkazů je skryt</string>
<string name="revanced_hide_links_preview_summary_off">Náhled odkazů je zobrazen</string> <string name="revanced_hide_links_preview_summary_off">Náhled odkazů je zobrazen</string>
<string name="revanced_hide_members_shelf_title">Skrýt poličku členů</string> <string name="revanced_hide_members_shelf_title">Skrýt poličku členů</string>
<string name="revanced_hide_members_shelf_summary_on">Polička členů je skryta</string> <string name="revanced_hide_members_shelf_summary_on">Polička členů je skryta</string>
<string name="revanced_hide_members_shelf_summary_off">Police pro členy je zobrazena</string> <string name="revanced_hide_members_shelf_summary_off">Police pro členy je zobrazena</string>
<!-- 'Visit Community' should be translated with the same localized wording that YouTube displays. --> <!-- 'Store' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_visit_community_button_title">Skrýt tlačítko „Navštívit komunitu“</string> <string name="revanced_hide_store_button_title">Skrýt tlačítko Obchod</string>
<string name="revanced_hide_visit_community_button_summary_on">Tlačítko Navštívit komunitu je skryto</string> <string name="revanced_hide_store_button_summary_on">Tlačítko Obchod je skryto</string>
<string name="revanced_hide_visit_community_button_summary_off">Tlačítko Navštívit komunitu je zobrazeno</string> <string name="revanced_hide_store_button_summary_off">Tlačítko Obchod je zobrazeno</string>
<!-- 'Visit store' should be translated with the same localized wording that YouTube displays. --> <!-- 'Subscribe' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_visit_store_button_title">Skrýt tlačítko \'Navštívit obchod\' na stránkách kanálů</string> <string name="revanced_hide_subscribe_button_in_channel_page_title">Skrýt tlačítko Odebírat</string>
<string name="revanced_hide_visit_store_button_summary_on">Tlačítko Navštívit obchod je skryto</string> <string name="revanced_hide_subscribe_button_in_channel_page_summary_on">Tlačítko Odebírat je skryto</string>
<string name="revanced_hide_visit_store_button_summary_off">Tlačítko Navštívit obchod je zobrazeno</string> <string name="revanced_hide_subscribe_button_in_channel_page_summary_off">Tlačítko Odebírat je zobrazeno</string>
<string name="revanced_comments_screen_title">Komentáře</string> <string name="revanced_comments_screen_title">Komentáře</string>
<string name="revanced_comments_screen_summary">Skrýt nebo zobrazit komponenty sekce komentářů</string> <string name="revanced_comments_screen_summary">Skrýt nebo zobrazit komponenty sekce komentářů</string>
<string name="revanced_hide_comments_ai_chat_summary_title">Skrýt souhrn chatu s AI</string> <string name="revanced_hide_comments_ai_chat_summary_title">Skrýt souhrn chatu s AI</string>
@@ -520,11 +548,11 @@ Tato funkce je dostupná pouze pro starší zařízení"</string>
<string name="revanced_share_copy_url_success">URL zkopírováno do schránky</string> <string name="revanced_share_copy_url_success">URL zkopírováno do schránky</string>
<string name="revanced_share_copy_url_timestamp_success">Adresa URL s časovým razítkem zkopírována</string> <string name="revanced_share_copy_url_timestamp_success">Adresa URL s časovým razítkem zkopírována</string>
<string name="revanced_copy_video_url_title">Zobrazit tlačítko pro kopírování adresy URL videa</string> <string name="revanced_copy_video_url_title">Zobrazit tlačítko pro kopírování adresy URL videa</string>
<string name="revanced_copy_video_url_summary_on">Zobrazí se tlačítko. Klepnutím zkopírujete URL videa. Klepnutím a podržením zkopírujete s časovou značkou</string> <string name="revanced_copy_video_url_summary_on">Tlačítko Kopírovat URL videa je zobrazeno. Klepnutím zkopírujete URL videa. Klepnutím a podržením zkopírujete s časovou značkou</string>
<string name="revanced_copy_video_url_summary_off">Tlačítko se nezobrazuje</string> <string name="revanced_copy_video_url_summary_off">Tlačítko Kopírovat URL videa není zobrazeno</string>
<string name="revanced_copy_video_url_timestamp_title">Zobrazit tlačítko pro kopírování adresy URL videa s časovým razítkem</string> <string name="revanced_copy_video_url_timestamp_title">Zobrazit tlačítko pro kopírování adresy URL videa s časovým razítkem</string>
<string name="revanced_copy_video_url_timestamp_summary_on">Zobrazí se tlačítko. Klepnutím zkopírujete URL videa s časovou značkou. Klepnutím a podržením zkopírujete bez časové značky</string> <string name="revanced_copy_video_url_timestamp_summary_on">Tlačítko Kopírovat URL s časovou značkou je zobrazeno. Klepnutím zkopírujete URL videa s časovou značkou. Klepnutím a podržením zkopírujete bez časové značky</string>
<string name="revanced_copy_video_url_timestamp_summary_off">Tlačítko se nezobrazuje</string> <string name="revanced_copy_video_url_timestamp_summary_off">Tlačítko Kopírovat URL s časovou značkou není zobrazeno</string>
</patch> </patch>
<patch id="interaction.dialog.removeViewerDiscretionDialogPatch"> <patch id="interaction.dialog.removeViewerDiscretionDialogPatch">
<string name="revanced_remove_viewer_discretion_dialog_title">Odstranit dialog s upozorněním na věkové omezení</string> <string name="revanced_remove_viewer_discretion_dialog_title">Odstranit dialog s upozorněním na věkové omezení</string>
@@ -533,7 +561,7 @@ Tato funkce je dostupná pouze pro starší zařízení"</string>
<string name="revanced_remove_viewer_discretion_dialog_user_dialog_message">Tímto krokem neobcházíte věkové omezení. Pouze jej automaticky akceptujete.</string> <string name="revanced_remove_viewer_discretion_dialog_user_dialog_message">Tímto krokem neobcházíte věkové omezení. Pouze jej automaticky akceptujete.</string>
</patch> </patch>
<patch id="layout.hide.signintotv.disableSignInToTvPopupPatch"> <patch id="layout.hide.signintotv.disableSignInToTvPopupPatch">
<string name="revanced_disable_signin_to_tv_popup_title">Zakázat vyskakovací okno Přihlásit se k televizi</string> <string name="revanced_disable_signin_to_tv_popup_title">Zakázat vyskakovací okno Přihlásit se k televizi</string>
<string name="revanced_disable_signin_to_tv_popup_summary_on">Vyskakovací okno Přihlásit se k televizi je zakázáno</string> <string name="revanced_disable_signin_to_tv_popup_summary_on">Vyskakovací okno Přihlásit se k televizi je zakázáno</string>
<string name="revanced_disable_signin_to_tv_popup_summary_off">Vyskakovací okno Přihlásit se k televizi je povoleno</string> <string name="revanced_disable_signin_to_tv_popup_summary_off">Vyskakovací okno Přihlásit se k televizi je povoleno</string>
</patch> </patch>
@@ -665,7 +693,7 @@ Hlasitost se upravuje svislým přejetím po pravé straně obrazovky"</string>
<string name="revanced_hide_download_button_summary_on">Tlačítko Stáhnout je skryto</string> <string name="revanced_hide_download_button_summary_on">Tlačítko Stáhnout je skryto</string>
<string name="revanced_hide_download_button_summary_off">Tlačítko Stáhnout je zobrazeno</string> <string name="revanced_hide_download_button_summary_off">Tlačítko Stáhnout je zobrazeno</string>
<!-- 'Hype' should be translated with the same localized wording that YouTube displays. <!-- 'Hype' should be translated with the same localized wording that YouTube displays.
This button only shows on videos uploaded by the logged in user. --> This button only shows on videos uploaded by the logged-in user. -->
<string name="revanced_hide_hype_button_title">Skrýt Hype</string> <string name="revanced_hide_hype_button_title">Skrýt Hype</string>
<string name="revanced_hide_hype_button_summary_on">Tlačítko Hype je skryto</string> <string name="revanced_hide_hype_button_summary_on">Tlačítko Hype je skryto</string>
<string name="revanced_hide_hype_button_summary_off">Tlačítko Hype je zobrazeno</string> <string name="revanced_hide_hype_button_summary_off">Tlačítko Hype je zobrazeno</string>
@@ -786,10 +814,11 @@ Pokud změna tohoto nastavení nemá žádný účinek, zkuste přepnout do rež
<string name="revanced_hide_player_flyout_audio_track_title">Skrýt Zvuková stopa</string> <string name="revanced_hide_player_flyout_audio_track_title">Skrýt Zvuková stopa</string>
<string name="revanced_hide_player_flyout_audio_track_summary_on">Menu Zvuková stopa je skryto</string> <string name="revanced_hide_player_flyout_audio_track_summary_on">Menu Zvuková stopa je skryto</string>
<string name="revanced_hide_player_flyout_audio_track_summary_off">Menu Zvuková stopa je zobrazeno</string> <string name="revanced_hide_player_flyout_audio_track_summary_off">Menu Zvuková stopa je zobrazeno</string>
<!-- 'Spoof video streams' should be the same translation used for 'revanced_spoof_video_streams_screen_title'. --> <!-- 'Spoof video streams' should be the same translation used for 'revanced_spoof_video_streams_screen_title'.
<string name="revanced_hide_player_flyout_audio_track_not_available">"Nabídka zvukové stopy je skryta 'Android No SDK' must be kept untranslated. -->
<string name="revanced_hide_player_flyout_audio_track_not_available">"Nabídka zvukových stop je skryta
Chcete-li zobrazit nabídku zvukové stopy, změňte 'Zfalšovat streamy videa' na iPadOS"</string> Chcete-li zobrazit nabídku zvukových stop, změňte \"Podvrhnout video streamy\" na \"Android No SDK\""</string>
<!-- 'Watch in VR' should be translated using the same localized wording YouTube displays for the menu item. --> <!-- 'Watch in VR' should be translated using the same localized wording YouTube displays for the menu item. -->
<string name="revanced_hide_player_flyout_watch_in_vr_title">Skrýt Sledovat ve VR</string> <string name="revanced_hide_player_flyout_watch_in_vr_title">Skrýt Sledovat ve VR</string>
<string name="revanced_hide_player_flyout_watch_in_vr_summary_on">Menu Sledovat ve VR je skryto</string> <string name="revanced_hide_player_flyout_watch_in_vr_summary_on">Menu Sledovat ve VR je skryto</string>
@@ -865,13 +894,16 @@ Chcete-li zobrazit nabídku zvukové stopy, změňte 'Zfalšovat streamy videa'
<string name="revanced_hide_shorts_history_title">Skrýt Shorts z historie sledování</string> <string name="revanced_hide_shorts_history_title">Skrýt Shorts z historie sledování</string>
<string name="revanced_hide_shorts_history_summary_on">Skryté v historii sledování</string> <string name="revanced_hide_shorts_history_summary_on">Skryté v historii sledování</string>
<string name="revanced_hide_shorts_history_summary_off">Zobrazené v historii sledování</string> <string name="revanced_hide_shorts_history_summary_off">Zobrazené v historii sledování</string>
<string name="revanced_hide_shorts_super_thanks_button_title">Skrýt tlačítko Koupit Super Thanks</string> <string name="revanced_hide_shorts_auto_dubbed_label_title">Skrýt štítek „Automatický dabing“</string>
<string name="revanced_hide_shorts_auto_dubbed_label_summary_on">Štítek s automatickým dabingem je skryt</string>
<string name="revanced_hide_shorts_auto_dubbed_label_summary_off">Štítek s automatickým dabingem je zobrazen</string>
<string name="revanced_hide_shorts_super_thanks_button_title">Skrýt tlačítko „Koupit Superdíky“</string>
<string name="revanced_hide_shorts_super_thanks_button_summary_on">Tlačítko \"Koupit Super Thanks\" je skryto</string> <string name="revanced_hide_shorts_super_thanks_button_summary_on">Tlačítko \"Koupit Super Thanks\" je skryto</string>
<string name="revanced_hide_shorts_super_thanks_button_summary_off">Tlačítko \"Koupit Super Thanks\" je zobrazeno</string> <string name="revanced_hide_shorts_super_thanks_button_summary_off">Tlačítko \"Koupit Super Thanks\" je zobrazeno</string>
<string name="revanced_hide_shorts_effect_button_title">Skrýt tlačítko efektu</string> <string name="revanced_hide_shorts_effect_button_title">Skrýt tlačítko efektu</string>
<string name="revanced_hide_shorts_effect_button_summary_on">Tlačítko Efekt je skryté</string> <string name="revanced_hide_shorts_effect_button_summary_on">Tlačítko Efekt je skryté</string>
<string name="revanced_hide_shorts_effect_button_summary_off">Tlačítko Efekt je zobrazeno</string> <string name="revanced_hide_shorts_effect_button_summary_off">Tlačítko Efekt je zobrazeno</string>
<string name="revanced_hide_shorts_green_screen_button_title">Skrýt tlačítko Zelená obrazovka</string> <string name="revanced_hide_shorts_green_screen_button_title">Skrýt tlačítko Zelené plátno“</string>
<string name="revanced_hide_shorts_green_screen_button_summary_on">Tlačítko zelené obrazovky je skryté</string> <string name="revanced_hide_shorts_green_screen_button_summary_on">Tlačítko zelené obrazovky je skryté</string>
<string name="revanced_hide_shorts_green_screen_button_summary_off">Tlačítko zelené obrazovky je zobrazeno</string> <string name="revanced_hide_shorts_green_screen_button_summary_off">Tlačítko zelené obrazovky je zobrazeno</string>
<string name="revanced_hide_shorts_hashtag_button_title">Skrýt tlačítko hashtagů</string> <string name="revanced_hide_shorts_hashtag_button_title">Skrýt tlačítko hashtagů</string>
@@ -881,10 +913,13 @@ Chcete-li zobrazit nabídku zvukové stopy, změňte 'Zfalšovat streamy videa'
<string name="revanced_hide_shorts_join_button_title">Skrýt tlačítko Připojit se</string> <string name="revanced_hide_shorts_join_button_title">Skrýt tlačítko Připojit se</string>
<string name="revanced_hide_shorts_join_button_summary_on">Tlačítko Připojit se je skryto</string> <string name="revanced_hide_shorts_join_button_summary_on">Tlačítko Připojit se je skryto</string>
<string name="revanced_hide_shorts_join_button_summary_off">Tlačítko Připojit se je zobrazeno</string> <string name="revanced_hide_shorts_join_button_summary_off">Tlačítko Připojit se je zobrazeno</string>
<string name="revanced_hide_shorts_live_preview_title">Skrýt živý náhled</string>
<string name="revanced_hide_shorts_live_preview_summary_on">Živý náhled je skrytý</string>
<string name="revanced_hide_shorts_live_preview_summary_off">Živý náhled je zobrazen</string>
<string name="revanced_hide_shorts_location_label_title">Skrýt štítek umístění</string> <string name="revanced_hide_shorts_location_label_title">Skrýt štítek umístění</string>
<string name="revanced_hide_shorts_location_label_summary_on">Štítek umístění je skrytý</string> <string name="revanced_hide_shorts_location_label_summary_on">Štítek umístění je skrytý</string>
<string name="revanced_hide_shorts_location_label_summary_off">Štítek umístění je zobrazen</string> <string name="revanced_hide_shorts_location_label_summary_off">Štítek umístění je zobrazen</string>
<string name="revanced_hide_shorts_new_posts_button_title">Skrýt tlačítko Nové příspěvky</string> <string name="revanced_hide_shorts_new_posts_button_title">Skrýt tlačítko Nové příspěvky</string>
<string name="revanced_hide_shorts_new_posts_button_summary_on">Tlačítko Nové příspěvky je skryto</string> <string name="revanced_hide_shorts_new_posts_button_summary_on">Tlačítko Nové příspěvky je skryto</string>
<string name="revanced_hide_shorts_new_posts_button_summary_off">Tlačítko Nové příspěvky je zobrazeno</string> <string name="revanced_hide_shorts_new_posts_button_summary_off">Tlačítko Nové příspěvky je zobrazeno</string>
<string name="revanced_hide_shorts_paused_overlay_buttons_title">Skrýt tlačítka pozastaveného překrytí</string> <string name="revanced_hide_shorts_paused_overlay_buttons_title">Skrýt tlačítka pozastaveného překrytí</string>
@@ -893,7 +928,7 @@ Chcete-li zobrazit nabídku zvukové stopy, změňte 'Zfalšovat streamy videa'
<string name="revanced_hide_shorts_preview_comment_title">Skrýt náhled komentáře</string> <string name="revanced_hide_shorts_preview_comment_title">Skrýt náhled komentáře</string>
<string name="revanced_hide_shorts_preview_comment_summary_on">Náhled komentáře je skrytý</string> <string name="revanced_hide_shorts_preview_comment_summary_on">Náhled komentáře je skrytý</string>
<string name="revanced_hide_shorts_preview_comment_summary_off">Zobrazuje se náhled komentáře</string> <string name="revanced_hide_shorts_preview_comment_summary_off">Zobrazuje se náhled komentáře</string>
<string name="revanced_hide_shorts_save_sound_button_title">Skrýt tlačítko Uložit hudbu</string> <string name="revanced_hide_shorts_save_sound_button_title">Skrýt tlačítko Uložit hudbu</string>
<string name="revanced_hide_shorts_save_sound_button_summary_on">Tlačítko Uložit hudbu je skryté</string> <string name="revanced_hide_shorts_save_sound_button_summary_on">Tlačítko Uložit hudbu je skryté</string>
<string name="revanced_hide_shorts_save_sound_button_summary_off">Tlačítko Uložit hudbu je zobrazeno</string> <string name="revanced_hide_shorts_save_sound_button_summary_off">Tlačítko Uložit hudbu je zobrazeno</string>
<string name="revanced_hide_shorts_search_suggestions_title">Skrýt návrhy vyhledávání</string> <string name="revanced_hide_shorts_search_suggestions_title">Skrýt návrhy vyhledávání</string>
@@ -914,10 +949,10 @@ Chcete-li zobrazit nabídku zvukové stopy, změňte 'Zfalšovat streamy videa'
<string name="revanced_hide_shorts_upcoming_button_title">Skrýt tlačítko Nadcházející</string> <string name="revanced_hide_shorts_upcoming_button_title">Skrýt tlačítko Nadcházející</string>
<string name="revanced_hide_shorts_upcoming_button_summary_on">Tlačítko \"Další\" je skryté</string> <string name="revanced_hide_shorts_upcoming_button_summary_on">Tlačítko \"Další\" je skryté</string>
<string name="revanced_hide_shorts_upcoming_button_summary_off">Tlačítko \"Další\" je zobrazeno</string> <string name="revanced_hide_shorts_upcoming_button_summary_off">Tlačítko \"Další\" je zobrazeno</string>
<string name="revanced_hide_shorts_use_sound_button_title">Skrýt tlačítko Použít tento zvuk</string> <string name="revanced_hide_shorts_use_sound_button_title">Skrýt tlačítko Použít tento zvuk</string>
<string name="revanced_hide_shorts_use_sound_button_summary_on">Tlačítko Použít tento zvuk je skryté</string> <string name="revanced_hide_shorts_use_sound_button_summary_on">Tlačítko Použít tento zvuk je skryté</string>
<string name="revanced_hide_shorts_use_sound_button_summary_off">Tlačítko Použít tento zvuk je zobrazené</string> <string name="revanced_hide_shorts_use_sound_button_summary_off">Tlačítko Použít tento zvuk je zobrazené</string>
<string name="revanced_hide_shorts_use_template_button_title">Skrýt tlačítko Použít tuto šablonu</string> <string name="revanced_hide_shorts_use_template_button_title">Skrýt tlačítko Použít tuto šablonu</string>
<string name="revanced_hide_shorts_use_template_button_summary_on">Tlačítko Použít tuto šablonu je skryté</string> <string name="revanced_hide_shorts_use_template_button_summary_on">Tlačítko Použít tuto šablonu je skryté</string>
<string name="revanced_hide_shorts_use_template_button_summary_off">Tlačítko Použít tuto šablonu je zobrazeno</string> <string name="revanced_hide_shorts_use_template_button_summary_off">Tlačítko Použít tuto šablonu je zobrazeno</string>
<string name="revanced_hide_shorts_like_fountain_title">Skrýt animaci s fontánou u tlačítka To se mi líbí</string> <string name="revanced_hide_shorts_like_fountain_title">Skrýt animaci s fontánou u tlačítka To se mi líbí</string>
@@ -1560,13 +1595,13 @@ Povolením této funkce lze odemknout vyšší kvality videa"</string>
</patch> </patch>
<patch id="video.speed.button.playbackSpeedButtonPatch"> <patch id="video.speed.button.playbackSpeedButtonPatch">
<string name="revanced_playback_speed_dialog_button_title">Zobrazit tlačítko dialogu rychlosti</string> <string name="revanced_playback_speed_dialog_button_title">Zobrazit tlačítko dialogu rychlosti</string>
<string name="revanced_playback_speed_dialog_button_summary_on">Tlačítko je zobrazeno. Klepnutím a podržením obnovíte výchozí rychlost přehrávání</string> <string name="revanced_playback_speed_dialog_button_summary_on">Tlačítko dialogu rychlosti je zobrazeno. Klepnutím a podržením obnovíte rychlost přehrávání na výchozí</string>
<string name="revanced_playback_speed_dialog_button_summary_off">Tlačítko se nezobrazuje</string> <string name="revanced_playback_speed_dialog_button_summary_off">Tlačítko dialogu rychlosti není zobrazeno</string>
</patch> </patch>
<patch id="video.quality.button.videoQualityDialogButtonPatch"> <patch id="video.quality.button.videoQualityDialogButtonPatch">
<string name="revanced_video_quality_dialog_button_title">Zobrazit tlačítko kvality videa</string> <string name="revanced_video_quality_dialog_button_title">Zobrazit tlačítko kvality videa</string>
<string name="revanced_video_quality_dialog_button_summary_on">Tlačítko je zobrazeno. Klepnutím a podržením obnovíte kvalitu na výchozí</string> <string name="revanced_video_quality_dialog_button_summary_on">Tlačítko kvality videa je zobrazeno. Klepnutím a podržením obnovíte kvalitu na výchozí</string>
<string name="revanced_video_quality_dialog_button_summary_off">Tlačítko není zobrazeno.</string> <string name="revanced_video_quality_dialog_button_summary_off">Tlačítko kvality videa není zobrazeno</string>
</patch> </patch>
<patch id="video.speed.custom.customPlaybackSpeedPatch"> <patch id="video.speed.custom.customPlaybackSpeedPatch">
<string name="revanced_custom_speed_menu_title">Menu vlastní rychlosti přehrávání</string> <string name="revanced_custom_speed_menu_title">Menu vlastní rychlosti přehrávání</string>
@@ -1663,16 +1698,30 @@ Přehrávání videa s AV1 se může sekat nebo vypadávat snímky."</string>
<string name="revanced_music_play_permanent_repeat_summary_on">Trvalé opakování je povoleno</string> <string name="revanced_music_play_permanent_repeat_summary_on">Trvalé opakování je povoleno</string>
<string name="revanced_music_play_permanent_repeat_summary_off">Trvalé opakování je zakázáno</string> <string name="revanced_music_play_permanent_repeat_summary_off">Trvalé opakování je zakázáno</string>
</patch> </patch>
<patch id="layout.castbutton.hideCastButton"> <patch id="layout.buttons.hideButtons">
<string name="revanced_music_hide_cast_button_title">Skrýt tlačítko Odesílat</string> <string name="revanced_music_hide_cast_button_title">Skrýt tlačítko Odesílat</string>
<string name="revanced_music_hide_cast_button_summary_on">Tlačítko Odesílat je skryté</string> <string name="revanced_music_hide_cast_button_summary_on">Tlačítko Odesílat je skryté</string>
<string name="revanced_music_hide_cast_button_summary_off">Tlačítko Odesílat je zobrazené</string> <string name="revanced_music_hide_cast_button_summary_off">Tlačítko Odesílat je zobrazené</string>
<string name="revanced_music_hide_history_button_title">Skrýt tlačítko historie</string>
<string name="revanced_music_hide_history_button_summary_on">Tlačítko historie je skryté</string>
<string name="revanced_music_hide_history_button_summary_off">Tlačítko historie je zobrazeno</string>
<string name="revanced_music_hide_notification_button_title">Skrýt tlačítko oznámení</string>
<string name="revanced_music_hide_notification_button_summary_on">Tlačítko oznámení je skryté</string>
<string name="revanced_music_hide_notification_button_summary_off">Tlačítko oznámení je zobrazené</string>
<string name="revanced_music_hide_search_button_title">Skrýt tlačítko vyhledávání</string>
<string name="revanced_music_hide_search_button_summary_on">Tlačítko vyhledávání je skryté</string>
<string name="revanced_music_hide_search_button_summary_off">Tlačítko vyhledávání je zobrazené</string>
</patch> </patch>
<patch id="layout.compactheader.hideCategoryBar"> <patch id="layout.compactheader.hideCategoryBar">
<string name="revanced_music_hide_category_bar_title">Skrýt panel kategorií</string> <string name="revanced_music_hide_category_bar_title">Skrýt panel kategorií</string>
<string name="revanced_music_hide_category_bar_summary_on">Panel kategorií je skryt</string> <string name="revanced_music_hide_category_bar_summary_on">Panel kategorií je skryt</string>
<string name="revanced_music_hide_category_bar_summary_off">Panel kategorií je zobrazen</string> <string name="revanced_music_hide_category_bar_summary_off">Panel kategorií je zobrazen</string>
</patch> </patch>
<patch id="layout.miniplayercolor.changeMiniplayerColor">
<string name="revanced_music_change_miniplayer_color_title">Změnit barvu minipřehrávače</string>
<string name="revanced_music_change_miniplayer_color_summary_on">Barva minipřehrávače odpovídá přehrávači na celou obrazovku</string>
<string name="revanced_music_change_miniplayer_color_summary_off">Minipřehrávač používá výchozí barvu</string>
</patch>
<patch id="layout.navigationbar.navigationBarPatch"> <patch id="layout.navigationbar.navigationBarPatch">
<string name="revanced_music_navigation_bar_screen_title">Navigační panel</string> <string name="revanced_music_navigation_bar_screen_title">Navigační panel</string>
<string name="revanced_music_navigation_bar_screen_summary">Skrýt nebo změnit tlačítka navigačního panelu</string> <string name="revanced_music_navigation_bar_screen_summary">Skrýt nebo změnit tlačítka navigačního panelu</string>

View File

@@ -1,5 +1,4 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<!-- Copyright 2024 ReVanced. See https://github.com/ReVanced/revanced-branding -->
<!-- <!--
All strings must have a unique path, even if the same string is declared in two different apps. All strings must have a unique path, even if the same string is declared in two different apps.
@@ -45,13 +44,14 @@ Second \"item\" text"</string>
<string name="revanced_check_environment_not_near_patch_time_invalid">APK byggedato er ødelagt</string> <string name="revanced_check_environment_not_near_patch_time_invalid">APK byggedato er ødelagt</string>
</patch> </patch>
<patch id="misc.dns.checkWatchHistoryDomainNameResolutionPatch"> <patch id="misc.dns.checkWatchHistoryDomainNameResolutionPatch">
<string name="revanced_check_watch_history_domain_name_dialog_title">Advarsel</string> <string name="revanced_check_watch_history_domain_name_dialog_title">ReVanced Meddelelse</string>
<string name="revanced_check_watch_history_domain_name_dialog_message">Din urhistorik gemmes ikke.&lt;br&gt;&lt;br&gt;Dette skyldes sandsynligvis en DNS-annonceblokker eller netværksproxy.&lt;br&gt;&lt;br&gt;For at løse dette, whitelist &lt;b&gt;s.youtube.com&lt;/b&gt; eller slå alle DNS-blokkere og fuldmagter fra.</string> <string name="revanced_check_watch_history_domain_name_dialog_message">Din urhistorik gemmes ikke.&lt;br&gt;&lt;br&gt;Dette skyldes sandsynligvis en DNS-annonceblokker eller netværksproxy.&lt;br&gt;&lt;br&gt;For at løse dette, whitelist &lt;b&gt;s.youtube.com&lt;/b&gt; eller slå alle DNS-blokkere og fuldmagter fra.</string>
<string name="revanced_check_watch_history_domain_name_dialog_ignore">Vis ikke igen</string> <string name="revanced_check_watch_history_domain_name_dialog_ignore">Vis ikke igen</string>
</patch> </patch>
<patch id="misc.settings.settingsResourcePatch"> <patch id="misc.settings.settingsResourcePatch">
<string name="revanced_settings_submenu_title">Indstillinger</string> <string name="revanced_settings_submenu_title">Indstillinger</string>
<string name="revanced_settings_confirm_user_dialog_title">Er du sikker på, at du vil fortsætte?</string> <string name="revanced_settings_confirm_user_dialog_title">Er du sikker på, at du vil fortsætte?</string>
<string name="revanced_settings_save">Gem</string>
<string name="revanced_settings_reset">Nulstil</string> <string name="revanced_settings_reset">Nulstil</string>
<string name="revanced_settings_reset_color">Nulstil farve</string> <string name="revanced_settings_reset_color">Nulstil farve</string>
<string name="revanced_settings_color_invalid">Ugyldig farve</string> <string name="revanced_settings_color_invalid">Ugyldig farve</string>
@@ -164,6 +164,14 @@ Du modtager ikke notifikationer om uventede hændelser."</string>
<string name="revanced_debug_logs_clear_buffer_title">Ryd fejlsøgningslogfiler</string> <string name="revanced_debug_logs_clear_buffer_title">Ryd fejlsøgningslogfiler</string>
<string name="revanced_debug_logs_clear_buffer_summary">Rydder alle gemte ReVanced-fejlsøgningslogfiler</string> <string name="revanced_debug_logs_clear_buffer_summary">Rydder alle gemte ReVanced-fejlsøgningslogfiler</string>
<string name="revanced_debug_logs_clear_toast">Logfiler ryddet</string> <string name="revanced_debug_logs_clear_toast">Logfiler ryddet</string>
<string name="revanced_debug_feature_flags_manager_title">Funktionsflag Manager</string>
<string name="revanced_debug_feature_flags_manager_summary">Administrer booleske funktionsflag</string>
<string name="revanced_debug_feature_flags_manager_active_header">Aktive flag (%d)</string>
<string name="revanced_debug_feature_flags_manager_blocked_header">Blokerede flag (%d)</string>
<string name="revanced_debug_feature_flags_manager_search_hint">Søg flag...</string>
<string name="revanced_debug_feature_flags_manager_toast_saved">Flag gemt</string>
<string name="revanced_debug_feature_flags_manager_toast_reset">Flag nulstillet</string>
<string name="revanced_debug_feature_flags_manager_toast_copied">Flag kopieret til udklipsholder</string>
</patch> </patch>
<patch id="misc.privacy.sanitizeSharingLinksPatch"> <patch id="misc.privacy.sanitizeSharingLinksPatch">
<string name="revanced_sanitize_sharing_links_title">Rens delingslinks</string> <string name="revanced_sanitize_sharing_links_title">Rens delingslinks</string>
@@ -274,6 +282,9 @@ Aktivering af dette vil dog også logge nogle brugerdata, såsom din IP-adresse.
<string name="revanced_hide_video_recommendation_labels_title">Skjul etiketter for videoanbefalinger</string> <string name="revanced_hide_video_recommendation_labels_title">Skjul etiketter for videoanbefalinger</string>
<string name="revanced_hide_video_recommendation_labels_summary_on">\'Folk har også set\'- og \'Du vil måske også synes om\'-etiketter i søgeresultater er skjult</string> <string name="revanced_hide_video_recommendation_labels_summary_on">\'Folk har også set\'- og \'Du vil måske også synes om\'-etiketter i søgeresultater er skjult</string>
<string name="revanced_hide_video_recommendation_labels_summary_off">\'Folk har også set\'- og \'Du vil måske også synes om\'-etiketter i søgeresultater vises</string> <string name="revanced_hide_video_recommendation_labels_summary_off">\'Folk har også set\'- og \'Du vil måske også synes om\'-etiketter i søgeresultater vises</string>
<string name="revanced_hide_visual_spacer_title">Skjul visuelt mellemrum</string>
<string name="revanced_hide_visual_spacer_summary_on">Visuelt mellemrum er skjult</string>
<string name="revanced_hide_visual_spacer_summary_off">Visuelt mellemrum vises</string>
<!-- https://logos.fandom.com/wiki/YouTube/Yoodles --> <!-- https://logos.fandom.com/wiki/YouTube/Yoodles -->
<string name="revanced_hide_doodles_title">Skjul YouTube-Doudler</string> <string name="revanced_hide_doodles_title">Skjul YouTube-Doudler</string>
<string name="revanced_hide_doodles_summary_on">YouTube Doodles-animation på logoet er skjult</string> <string name="revanced_hide_doodles_summary_on">YouTube Doodles-animation på logoet er skjult</string>
@@ -334,12 +345,21 @@ Hvis et Doodle vises i øjeblikket i din region, og denne skjuleindstilling er a
<string name="revanced_hide_podcast_section_title">Skjul \"Udforsk podcasten\"</string> <string name="revanced_hide_podcast_section_title">Skjul \"Udforsk podcasten\"</string>
<string name="revanced_hide_podcast_section_summary_on">Sektionen Udforsk podcasten er skjult</string> <string name="revanced_hide_podcast_section_summary_on">Sektionen Udforsk podcasten er skjult</string>
<string name="revanced_hide_podcast_section_summary_off">Sektionen Udforsk podcasten vises</string> <string name="revanced_hide_podcast_section_summary_off">Sektionen Udforsk podcasten vises</string>
<string name="revanced_hide_featured_links_section_title">Skjul fremhævede links</string>
<string name="revanced_hide_featured_links_section_summary_on">Sektionen med fremhævede links er skjult</string>
<string name="revanced_hide_featured_links_section_summary_off">Sektionen med fremhævede links er vist</string>
<string name="revanced_hide_featured_videos_section_title">Skjul fremhævede videoer</string>
<string name="revanced_hide_featured_videos_section_summary_on">Sektionen med fremhævede videoer er skjult</string>
<string name="revanced_hide_featured_videos_section_summary_off">Sektionen med fremhævede videoer er vist</string>
<string name="revanced_hide_info_cards_section_title">Skjul infokort</string> <string name="revanced_hide_info_cards_section_title">Skjul infokort</string>
<string name="revanced_hide_info_cards_section_summary_on">Info-kort sektion er skjult</string> <string name="revanced_hide_info_cards_section_summary_on">Info-kort sektion er skjult</string>
<string name="revanced_hide_info_cards_section_summary_off">Info-kort sektion er vist</string> <string name="revanced_hide_info_cards_section_summary_off">Info-kort sektion er vist</string>
<string name="revanced_hide_key_concepts_section_title">Skjul \"Nøglebegreber\"</string> <string name="revanced_hide_key_concepts_section_title">Skjul \"Nøglebegreber\"</string>
<string name="revanced_hide_key_concepts_section_summary_on">Nøglebegrebssektionen er skjult</string> <string name="revanced_hide_key_concepts_section_summary_on">Nøglebegrebssektionen er skjult</string>
<string name="revanced_hide_key_concepts_section_summary_off">Nøglebegrebssektionen vises</string> <string name="revanced_hide_key_concepts_section_summary_off">Nøglebegrebssektionen vises</string>
<string name="revanced_hide_subscribe_button_title">Skjul abonner-knappen</string>
<string name="revanced_hide_subscribe_button_summary_on">Abonner-knappen er skjult</string>
<string name="revanced_hide_subscribe_button_summary_off">Abonner-knappen er vist</string>
<string name="revanced_hide_transcript_section_title">Skjul udskrift</string> <string name="revanced_hide_transcript_section_title">Skjul udskrift</string>
<string name="revanced_hide_transcript_section_summary_on">Afsnittet er skjult</string> <string name="revanced_hide_transcript_section_summary_on">Afsnittet er skjult</string>
<string name="revanced_hide_transcript_section_summary_off">Afsnittet er vist</string> <string name="revanced_hide_transcript_section_summary_off">Afsnittet er vist</string>
@@ -361,24 +381,32 @@ Hvis et Doodle vises i øjeblikket i din region, og denne skjuleindstilling er a
<string name="revanced_hide_filter_bar_feed_in_history_summary_off">Vist i seerhistorik</string> <string name="revanced_hide_filter_bar_feed_in_history_summary_off">Vist i seerhistorik</string>
<string name="revanced_channel_screen_title">Kanalside</string> <string name="revanced_channel_screen_title">Kanalside</string>
<string name="revanced_channel_screen_summary">Skjul eller vis kanalsidekomponenter</string> <string name="revanced_channel_screen_summary">Skjul eller vis kanalsidekomponenter</string>
<!-- 'Community' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_community_button_title">Skjul knappen Fællesskab</string>
<string name="revanced_hide_community_button_summary_on">Fællesskabs-knap er skjult</string>
<string name="revanced_hide_community_button_summary_off">Fællesskabs-knap vises</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">Skjul hylden \"Til dig\"</string> <string name="revanced_hide_for_you_shelf_title">Skjul hylden \"Til dig\"</string>
<string name="revanced_hide_for_you_shelf_summary_on">Til dig-hylden er skjult</string> <string name="revanced_hide_for_you_shelf_summary_on">Til dig-hylden er skjult</string>
<string name="revanced_hide_for_you_shelf_summary_off">Til dig-hylden er vist</string> <string name="revanced_hide_for_you_shelf_summary_off">Til dig-hylden er vist</string>
<!-- 'Join' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_join_button_title">Skjul Tilmeld-knap</string>
<string name="revanced_hide_join_button_summary_on">Tilmeld-knap er skjult</string>
<string name="revanced_hide_join_button_summary_off">Tilmeld-knap vises</string>
<string name="revanced_hide_links_preview_title">Skjul forhåndsvisning af links</string> <string name="revanced_hide_links_preview_title">Skjul forhåndsvisning af links</string>
<string name="revanced_hide_links_preview_summary_on">Forhåndsvisning af links er skjult</string> <string name="revanced_hide_links_preview_summary_on">Forhåndsvisning af links er skjult</string>
<string name="revanced_hide_links_preview_summary_off">Forhåndsvisning af links er vist</string> <string name="revanced_hide_links_preview_summary_off">Forhåndsvisning af links er vist</string>
<string name="revanced_hide_members_shelf_title">Skjul medlemshylden</string> <string name="revanced_hide_members_shelf_title">Skjul medlemshylden</string>
<string name="revanced_hide_members_shelf_summary_on">Medlemshylden er skjult</string> <string name="revanced_hide_members_shelf_summary_on">Medlemshylden er skjult</string>
<string name="revanced_hide_members_shelf_summary_off">Medlemsvisning er vist</string> <string name="revanced_hide_members_shelf_summary_off">Medlemsvisning er vist</string>
<!-- 'Visit Community' should be translated with the same localized wording that YouTube displays. --> <!-- 'Store' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_visit_community_button_title">Skjul knappen \"Besøg fællesskab\"</string> <string name="revanced_hide_store_button_title">Skjul Butik-knap</string>
<string name="revanced_hide_visit_community_button_summary_on">Knappen \"Besøg fællesskab\" er skjult</string> <string name="revanced_hide_store_button_summary_on">Butik-knap er skjult</string>
<string name="revanced_hide_visit_community_button_summary_off">Besøg fællesskab-knap er vist</string> <string name="revanced_hide_store_button_summary_off">Butik-knap vises</string>
<!-- 'Visit store' should be translated with the same localized wording that YouTube displays. --> <!-- 'Subscribe' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_visit_store_button_title">Skjul knappen \'Besøg butik\' på kanalsider</string> <string name="revanced_hide_subscribe_button_in_channel_page_title">Skjul Abonner-knap</string>
<string name="revanced_hide_visit_store_button_summary_on">Besøg butik-knap er skjult</string> <string name="revanced_hide_subscribe_button_in_channel_page_summary_on">Abonner-knap er skjult</string>
<string name="revanced_hide_visit_store_button_summary_off">Besøg butik-knap er vist</string> <string name="revanced_hide_subscribe_button_in_channel_page_summary_off">Abonner-knap vises</string>
<string name="revanced_comments_screen_title">Kommentarer</string> <string name="revanced_comments_screen_title">Kommentarer</string>
<string name="revanced_comments_screen_summary">Skjul eller vis kommentarer sektion komponenter</string> <string name="revanced_comments_screen_summary">Skjul eller vis kommentarer sektion komponenter</string>
<string name="revanced_hide_comments_ai_chat_summary_title">Skjul AI-chatsammendrag</string> <string name="revanced_hide_comments_ai_chat_summary_title">Skjul AI-chatsammendrag</string>
@@ -520,11 +548,11 @@ Denne funktion er kun tilgængelig for ældre enheder"</string>
<string name="revanced_share_copy_url_success">URL kopieret til udklipsholder</string> <string name="revanced_share_copy_url_success">URL kopieret til udklipsholder</string>
<string name="revanced_share_copy_url_timestamp_success">URL med tidsstempel kopieret</string> <string name="revanced_share_copy_url_timestamp_success">URL med tidsstempel kopieret</string>
<string name="revanced_copy_video_url_title">Vis kopiér video URL knap</string> <string name="revanced_copy_video_url_title">Vis kopiér video URL knap</string>
<string name="revanced_copy_video_url_summary_on">Knappen vises. Tryk for at kopiere videoens URL. Tryk og hold for at kopiere med tidsstempel</string> <string name="revanced_copy_video_url_summary_on">Kopier video-URL-knap vises. Tryk for at kopiere video-URL. Tryk og hold nede for at kopiere med tidsstempel</string>
<string name="revanced_copy_video_url_summary_off">Knap vises ikke</string> <string name="revanced_copy_video_url_summary_off">Kopier video-URL-knap vises ikke</string>
<string name="revanced_copy_video_url_timestamp_title">Vis kopi tidsstempel URL knap</string> <string name="revanced_copy_video_url_timestamp_title">Vis kopi tidsstempel URL knap</string>
<string name="revanced_copy_video_url_timestamp_summary_on">Knappen vises. Tryk for at kopiere videoens URL med tidsstempel. Tryk og hold for at kopiere uden tidsstempel</string> <string name="revanced_copy_video_url_timestamp_summary_on">Kopier tidsstempel-URL-knap vises. Tryk for at kopiere video-URL med tidsstempel. Tryk og hold nede for at kopiere uden tidsstempel</string>
<string name="revanced_copy_video_url_timestamp_summary_off">Knap vises ikke</string> <string name="revanced_copy_video_url_timestamp_summary_off">Kopier tidsstempel-URL-knap vises ikke</string>
</patch> </patch>
<patch id="interaction.dialog.removeViewerDiscretionDialogPatch"> <patch id="interaction.dialog.removeViewerDiscretionDialogPatch">
<string name="revanced_remove_viewer_discretion_dialog_title">Fjern visningsdialog</string> <string name="revanced_remove_viewer_discretion_dialog_title">Fjern visningsdialog</string>
@@ -533,7 +561,7 @@ Denne funktion er kun tilgængelig for ældre enheder"</string>
<string name="revanced_remove_viewer_discretion_dialog_user_dialog_message">Dette går ikke uden om aldersbegrænsningen. Det accepterer bare det automatisk.</string> <string name="revanced_remove_viewer_discretion_dialog_user_dialog_message">Dette går ikke uden om aldersbegrænsningen. Det accepterer bare det automatisk.</string>
</patch> </patch>
<patch id="layout.hide.signintotv.disableSignInToTvPopupPatch"> <patch id="layout.hide.signintotv.disableSignInToTvPopupPatch">
<string name="revanced_disable_signin_to_tv_popup_title">Deaktiver log ind på TV-pop op</string> <string name="revanced_disable_signin_to_tv_popup_title">Deaktiver \'Log ind på TV\'-popup</string>
<string name="revanced_disable_signin_to_tv_popup_summary_on">Log ind på TV-pop op er deaktiveret</string> <string name="revanced_disable_signin_to_tv_popup_summary_on">Log ind på TV-pop op er deaktiveret</string>
<string name="revanced_disable_signin_to_tv_popup_summary_off">Log ind på TV-pop op er aktiveret</string> <string name="revanced_disable_signin_to_tv_popup_summary_off">Log ind på TV-pop op er aktiveret</string>
</patch> </patch>
@@ -665,7 +693,7 @@ Juster lydstyrken ved at swipe lodret i højre side af skærmen"</string>
<string name="revanced_hide_download_button_summary_on">Download-knappen er skjult</string> <string name="revanced_hide_download_button_summary_on">Download-knappen er skjult</string>
<string name="revanced_hide_download_button_summary_off">Download-knappen vises</string> <string name="revanced_hide_download_button_summary_off">Download-knappen vises</string>
<!-- 'Hype' should be translated with the same localized wording that YouTube displays. <!-- 'Hype' should be translated with the same localized wording that YouTube displays.
This button only shows on videos uploaded by the logged in user. --> This button only shows on videos uploaded by the logged-in user. -->
<string name="revanced_hide_hype_button_title">Skjul Hype</string> <string name="revanced_hide_hype_button_title">Skjul Hype</string>
<string name="revanced_hide_hype_button_summary_on">Hype-knappen er skjult</string> <string name="revanced_hide_hype_button_summary_on">Hype-knappen er skjult</string>
<string name="revanced_hide_hype_button_summary_off">Hype-knappen vises</string> <string name="revanced_hide_hype_button_summary_off">Hype-knappen vises</string>
@@ -786,10 +814,11 @@ Hvis ændring af denne indstilling ikke træder i kraft, kan du prøve at skifte
<string name="revanced_hide_player_flyout_audio_track_title">Skjul lydspor</string> <string name="revanced_hide_player_flyout_audio_track_title">Skjul lydspor</string>
<string name="revanced_hide_player_flyout_audio_track_summary_on">Menuen for lydspor er skjult</string> <string name="revanced_hide_player_flyout_audio_track_summary_on">Menuen for lydspor er skjult</string>
<string name="revanced_hide_player_flyout_audio_track_summary_off">Menuen Lydspor vises</string> <string name="revanced_hide_player_flyout_audio_track_summary_off">Menuen Lydspor vises</string>
<!-- 'Spoof video streams' should be the same translation used for 'revanced_spoof_video_streams_screen_title'. --> <!-- 'Spoof video streams' should be the same translation used for 'revanced_spoof_video_streams_screen_title'.
<string name="revanced_hide_player_flyout_audio_track_not_available">"Lydsporsmenuen er skjult 'Android No SDK' must be kept untranslated. -->
<string name="revanced_hide_player_flyout_audio_track_not_available">"Audiorspormenuen er skjult
For at vise lydsporsmenuen, skift 'Spoof videostreams' til iPadOS"</string> For at vise audiospormenuen, skift 'Maskér videostreams' til 'Android No SDK'"</string>
<!-- 'Watch in VR' should be translated using the same localized wording YouTube displays for the menu item. --> <!-- 'Watch in VR' should be translated using the same localized wording YouTube displays for the menu item. -->
<string name="revanced_hide_player_flyout_watch_in_vr_title">Skjul vagt i VR</string> <string name="revanced_hide_player_flyout_watch_in_vr_title">Skjul vagt i VR</string>
<string name="revanced_hide_player_flyout_watch_in_vr_summary_on">Se i VR-menuen er skjult</string> <string name="revanced_hide_player_flyout_watch_in_vr_summary_on">Se i VR-menuen er skjult</string>
@@ -865,13 +894,16 @@ For at vise lydsporsmenuen, skift 'Spoof videostreams' til iPadOS"</string>
<string name="revanced_hide_shorts_history_title">Skjul shorts i historik</string> <string name="revanced_hide_shorts_history_title">Skjul shorts i historik</string>
<string name="revanced_hide_shorts_history_summary_on">Skjult i historikken</string> <string name="revanced_hide_shorts_history_summary_on">Skjult i historikken</string>
<string name="revanced_hide_shorts_history_summary_off">Vises i historik</string> <string name="revanced_hide_shorts_history_summary_off">Vises i historik</string>
<string name="revanced_hide_shorts_super_thanks_button_title">Skjul knappen Køb Super Thanks</string> <string name="revanced_hide_shorts_auto_dubbed_label_title">Skjul \'Auto-dubbet\'-etiket</string>
<string name="revanced_hide_shorts_auto_dubbed_label_summary_on">Automatisk dubbet etiket er skjult</string>
<string name="revanced_hide_shorts_auto_dubbed_label_summary_off">Automatisk dubbet etiket vises</string>
<string name="revanced_hide_shorts_super_thanks_button_title">Skjul \'Køb Super Thanks\'-knap</string>
<string name="revanced_hide_shorts_super_thanks_button_summary_on">Køb Super Thanks-knap er skjult</string> <string name="revanced_hide_shorts_super_thanks_button_summary_on">Køb Super Thanks-knap er skjult</string>
<string name="revanced_hide_shorts_super_thanks_button_summary_off">Køb Super Thanks-knap vises</string> <string name="revanced_hide_shorts_super_thanks_button_summary_off">Køb Super Thanks-knap vises</string>
<string name="revanced_hide_shorts_effect_button_title">Skjul effektknap</string> <string name="revanced_hide_shorts_effect_button_title">Skjul effektknap</string>
<string name="revanced_hide_shorts_effect_button_summary_on">Effektknap er skjult</string> <string name="revanced_hide_shorts_effect_button_summary_on">Effektknap er skjult</string>
<string name="revanced_hide_shorts_effect_button_summary_off">Effektknap er vist</string> <string name="revanced_hide_shorts_effect_button_summary_off">Effektknap er vist</string>
<string name="revanced_hide_shorts_green_screen_button_title">Skjul knappen Grøn skærm</string> <string name="revanced_hide_shorts_green_screen_button_title">Skjul \'Green screen\'-knap</string>
<string name="revanced_hide_shorts_green_screen_button_summary_on">Grøn skærmknap er skjult</string> <string name="revanced_hide_shorts_green_screen_button_summary_on">Grøn skærmknap er skjult</string>
<string name="revanced_hide_shorts_green_screen_button_summary_off">Grøn skærmknap vises</string> <string name="revanced_hide_shorts_green_screen_button_summary_off">Grøn skærmknap vises</string>
<string name="revanced_hide_shorts_hashtag_button_title">Skjul hashtag knap</string> <string name="revanced_hide_shorts_hashtag_button_title">Skjul hashtag knap</string>
@@ -881,10 +913,13 @@ For at vise lydsporsmenuen, skift 'Spoof videostreams' til iPadOS"</string>
<string name="revanced_hide_shorts_join_button_title">Skjul knappen Deltag</string> <string name="revanced_hide_shorts_join_button_title">Skjul knappen Deltag</string>
<string name="revanced_hide_shorts_join_button_summary_on">Deltag-knappen er skjult</string> <string name="revanced_hide_shorts_join_button_summary_on">Deltag-knappen er skjult</string>
<string name="revanced_hide_shorts_join_button_summary_off">Tilmeldingsknappen vises</string> <string name="revanced_hide_shorts_join_button_summary_off">Tilmeldingsknappen vises</string>
<string name="revanced_hide_shorts_live_preview_title">Skjul live forhåndsvisning</string>
<string name="revanced_hide_shorts_live_preview_summary_on">Live-forhåndsvisning er skjult</string>
<string name="revanced_hide_shorts_live_preview_summary_off">Live-forhåndsvisning vises</string>
<string name="revanced_hide_shorts_location_label_title">Skjul placeringsetiket</string> <string name="revanced_hide_shorts_location_label_title">Skjul placeringsetiket</string>
<string name="revanced_hide_shorts_location_label_summary_on">Placeringsetiket er skjult</string> <string name="revanced_hide_shorts_location_label_summary_on">Placeringsetiket er skjult</string>
<string name="revanced_hide_shorts_location_label_summary_off">Placeringsetiket er vist</string> <string name="revanced_hide_shorts_location_label_summary_off">Placeringsetiket er vist</string>
<string name="revanced_hide_shorts_new_posts_button_title">Skjul knappen Nye indlæg</string> <string name="revanced_hide_shorts_new_posts_button_title">Skjul \'Nye indlæg\'-knap</string>
<string name="revanced_hide_shorts_new_posts_button_summary_on">Knappen Nye indlæg er skjult</string> <string name="revanced_hide_shorts_new_posts_button_summary_on">Knappen Nye indlæg er skjult</string>
<string name="revanced_hide_shorts_new_posts_button_summary_off">Knappen Nye indlæg vises</string> <string name="revanced_hide_shorts_new_posts_button_summary_off">Knappen Nye indlæg vises</string>
<string name="revanced_hide_shorts_paused_overlay_buttons_title">Skjul overlay knapper på pause</string> <string name="revanced_hide_shorts_paused_overlay_buttons_title">Skjul overlay knapper på pause</string>
@@ -893,7 +928,7 @@ For at vise lydsporsmenuen, skift 'Spoof videostreams' til iPadOS"</string>
<string name="revanced_hide_shorts_preview_comment_title">Skjul forhåndsvisning af kommentar</string> <string name="revanced_hide_shorts_preview_comment_title">Skjul forhåndsvisning af kommentar</string>
<string name="revanced_hide_shorts_preview_comment_summary_on">Forhåndsvisning af kommentar er skjult</string> <string name="revanced_hide_shorts_preview_comment_summary_on">Forhåndsvisning af kommentar er skjult</string>
<string name="revanced_hide_shorts_preview_comment_summary_off">Forhåndsvisningskommentar vises</string> <string name="revanced_hide_shorts_preview_comment_summary_off">Forhåndsvisningskommentar vises</string>
<string name="revanced_hide_shorts_save_sound_button_title">Skjul knappen Gem musik</string> <string name="revanced_hide_shorts_save_sound_button_title">Skjul \'Gem musik\'-knap</string>
<string name="revanced_hide_shorts_save_sound_button_summary_on">Gem musik knap er skjult</string> <string name="revanced_hide_shorts_save_sound_button_summary_on">Gem musik knap er skjult</string>
<string name="revanced_hide_shorts_save_sound_button_summary_off">Gem musik knap er vist</string> <string name="revanced_hide_shorts_save_sound_button_summary_off">Gem musik knap er vist</string>
<string name="revanced_hide_shorts_search_suggestions_title">Skjul søgeforslag</string> <string name="revanced_hide_shorts_search_suggestions_title">Skjul søgeforslag</string>
@@ -914,10 +949,10 @@ For at vise lydsporsmenuen, skift 'Spoof videostreams' til iPadOS"</string>
<string name="revanced_hide_shorts_upcoming_button_title">Skjul knappen Kommende</string> <string name="revanced_hide_shorts_upcoming_button_title">Skjul knappen Kommende</string>
<string name="revanced_hide_shorts_upcoming_button_summary_on">Kommende knap er skjult</string> <string name="revanced_hide_shorts_upcoming_button_summary_on">Kommende knap er skjult</string>
<string name="revanced_hide_shorts_upcoming_button_summary_off">Kommende knap vises</string> <string name="revanced_hide_shorts_upcoming_button_summary_off">Kommende knap vises</string>
<string name="revanced_hide_shorts_use_sound_button_title">Skjul knappen \"Brug denne lyd\"</string> <string name="revanced_hide_shorts_use_sound_button_title">Skjul \'Brug denne lyd\'-knap</string>
<string name="revanced_hide_shorts_use_sound_button_summary_on">Knappen \"Brug denne lyd\" er skjult</string> <string name="revanced_hide_shorts_use_sound_button_summary_on">Knappen \"Brug denne lyd\" er skjult</string>
<string name="revanced_hide_shorts_use_sound_button_summary_off">Knappen \"Brug denne lyd\" vises</string> <string name="revanced_hide_shorts_use_sound_button_summary_off">Knappen \"Brug denne lyd\" vises</string>
<string name="revanced_hide_shorts_use_template_button_title">Skjul knappen Brug denne skabelon</string> <string name="revanced_hide_shorts_use_template_button_title">Skjul \'Brug denne skabelon\'-knap</string>
<string name="revanced_hide_shorts_use_template_button_summary_on">Knappen \"Brug denne skabelon\" er skjult</string> <string name="revanced_hide_shorts_use_template_button_summary_on">Knappen \"Brug denne skabelon\" er skjult</string>
<string name="revanced_hide_shorts_use_template_button_summary_off">Knappen Brug denne skabelon vises</string> <string name="revanced_hide_shorts_use_template_button_summary_off">Knappen Brug denne skabelon vises</string>
<string name="revanced_hide_shorts_like_fountain_title">Skjul knap for springvand-animation af like-knap</string> <string name="revanced_hide_shorts_like_fountain_title">Skjul knap for springvand-animation af like-knap</string>
@@ -1562,13 +1597,13 @@ Aktivering af dette kan låse op for højere videokvalitet"</string>
</patch> </patch>
<patch id="video.speed.button.playbackSpeedButtonPatch"> <patch id="video.speed.button.playbackSpeedButtonPatch">
<string name="revanced_playback_speed_dialog_button_title">Vis hastigheds dialogknap</string> <string name="revanced_playback_speed_dialog_button_title">Vis hastigheds dialogknap</string>
<string name="revanced_playback_speed_dialog_button_summary_on">Knappen vises. Tryk og hold for at nulstille afspilningshastigheden til standard.</string> <string name="revanced_playback_speed_dialog_button_summary_on">Hastighedsdialogknap vises. Tryk og hold nede for at nulstille afspilningshastigheden til standard</string>
<string name="revanced_playback_speed_dialog_button_summary_off">Knap vises ikke</string> <string name="revanced_playback_speed_dialog_button_summary_off">Hastighedsdialogknap vises ikke</string>
</patch> </patch>
<patch id="video.quality.button.videoQualityDialogButtonPatch"> <patch id="video.quality.button.videoQualityDialogButtonPatch">
<string name="revanced_video_quality_dialog_button_title">Vis videokvalitetsknap</string> <string name="revanced_video_quality_dialog_button_title">Vis videokvalitetsknap</string>
<string name="revanced_video_quality_dialog_button_summary_on">Knap vises. Tryk og hold nede for at nulstille kvaliteten til standard</string> <string name="revanced_video_quality_dialog_button_summary_on">Videokvalitetsknap vises. Tryk og hold nede for at nulstille kvaliteten til standard</string>
<string name="revanced_video_quality_dialog_button_summary_off">Knappen vises ikke</string> <string name="revanced_video_quality_dialog_button_summary_off">Videokvalitetsknap vises ikke</string>
</patch> </patch>
<patch id="video.speed.custom.customPlaybackSpeedPatch"> <patch id="video.speed.custom.customPlaybackSpeedPatch">
<string name="revanced_custom_speed_menu_title">Tilpasset afspilningshastighed menu</string> <string name="revanced_custom_speed_menu_title">Tilpasset afspilningshastighed menu</string>
@@ -1665,16 +1700,30 @@ Videoafspilning med AV1 kan hakke eller tabe billeder."</string>
<string name="revanced_music_play_permanent_repeat_summary_on">Permanent gentagelse er aktiveret</string> <string name="revanced_music_play_permanent_repeat_summary_on">Permanent gentagelse er aktiveret</string>
<string name="revanced_music_play_permanent_repeat_summary_off">Permanent gentagelse er deaktiveret</string> <string name="revanced_music_play_permanent_repeat_summary_off">Permanent gentagelse er deaktiveret</string>
</patch> </patch>
<patch id="layout.castbutton.hideCastButton"> <patch id="layout.buttons.hideButtons">
<string name="revanced_music_hide_cast_button_title">Skjul cast-knap</string> <string name="revanced_music_hide_cast_button_title">Skjul cast-knap</string>
<string name="revanced_music_hide_cast_button_summary_on">Cast-knappen er skjult</string> <string name="revanced_music_hide_cast_button_summary_on">Cast-knappen er skjult</string>
<string name="revanced_music_hide_cast_button_summary_off">Cast-knappen vises</string> <string name="revanced_music_hide_cast_button_summary_off">Cast-knappen vises</string>
<string name="revanced_music_hide_history_button_title">Skjul historikknap</string>
<string name="revanced_music_hide_history_button_summary_on">Historikknappen er skjult</string>
<string name="revanced_music_hide_history_button_summary_off">Historikknappen vises</string>
<string name="revanced_music_hide_notification_button_title">Skjul notifikationsknap</string>
<string name="revanced_music_hide_notification_button_summary_on">Notifikationsknappen er skjult</string>
<string name="revanced_music_hide_notification_button_summary_off">Notifikationsknappen vises</string>
<string name="revanced_music_hide_search_button_title">Skjul søgeknap</string>
<string name="revanced_music_hide_search_button_summary_on">Søgeknappen er skjult</string>
<string name="revanced_music_hide_search_button_summary_off">Søgeknappen vises</string>
</patch> </patch>
<patch id="layout.compactheader.hideCategoryBar"> <patch id="layout.compactheader.hideCategoryBar">
<string name="revanced_music_hide_category_bar_title">Skjul kategorilinje</string> <string name="revanced_music_hide_category_bar_title">Skjul kategorilinje</string>
<string name="revanced_music_hide_category_bar_summary_on">Kategorilinjen er skjult</string> <string name="revanced_music_hide_category_bar_summary_on">Kategorilinjen er skjult</string>
<string name="revanced_music_hide_category_bar_summary_off">Kategorilinjen vises</string> <string name="revanced_music_hide_category_bar_summary_off">Kategorilinjen vises</string>
</patch> </patch>
<patch id="layout.miniplayercolor.changeMiniplayerColor">
<string name="revanced_music_change_miniplayer_color_title">Skift miniafspillerfarve</string>
<string name="revanced_music_change_miniplayer_color_summary_on">Miniafspillerfarven matcher fuldskærmsafspilleren</string>
<string name="revanced_music_change_miniplayer_color_summary_off">Miniafspilleren bruger standardfarven</string>
</patch>
<patch id="layout.navigationbar.navigationBarPatch"> <patch id="layout.navigationbar.navigationBarPatch">
<string name="revanced_music_navigation_bar_screen_title">Navigationslinje</string> <string name="revanced_music_navigation_bar_screen_title">Navigationslinje</string>
<string name="revanced_music_navigation_bar_screen_summary">Skjul eller skift navigationslinjeknapper</string> <string name="revanced_music_navigation_bar_screen_summary">Skjul eller skift navigationslinjeknapper</string>

View File

@@ -1,5 +1,4 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<!-- Copyright 2024 ReVanced. See https://github.com/ReVanced/revanced-branding -->
<!-- <!--
All strings must have a unique path, even if the same string is declared in two different apps. All strings must have a unique path, even if the same string is declared in two different apps.
@@ -45,13 +44,14 @@ Second \"item\" text"</string>
<string name="revanced_check_environment_not_near_patch_time_invalid">APK Erstellungsdatum ist beschädigt</string> <string name="revanced_check_environment_not_near_patch_time_invalid">APK Erstellungsdatum ist beschädigt</string>
</patch> </patch>
<patch id="misc.dns.checkWatchHistoryDomainNameResolutionPatch"> <patch id="misc.dns.checkWatchHistoryDomainNameResolutionPatch">
<string name="revanced_check_watch_history_domain_name_dialog_title">Warnung</string> <string name="revanced_check_watch_history_domain_name_dialog_title">ReVanced Hinweis</string>
<string name="revanced_check_watch_history_domain_name_dialog_message">Ihr Verlauf wird nicht gespeichert.&lt;br&gt;&lt;br&gt;Dies wird höchstwahrscheinlich durch einen DNS-Werbeblocker oder einen Netzwerkproxy verursacht.&lt;br&gt;&lt;br&gt;Um dies zu beheben, setze &lt;b&gt;s.youtube.com&lt;/b&gt; auf die Whitelist oder schalten Sie alle DNS-Blocker und Proxies aus.</string> <string name="revanced_check_watch_history_domain_name_dialog_message">Ihr Verlauf wird nicht gespeichert.&lt;br&gt;&lt;br&gt;Dies wird höchstwahrscheinlich durch einen DNS-Werbeblocker oder einen Netzwerkproxy verursacht.&lt;br&gt;&lt;br&gt;Um dies zu beheben, setze &lt;b&gt;s.youtube.com&lt;/b&gt; auf die Whitelist oder schalten Sie alle DNS-Blocker und Proxies aus.</string>
<string name="revanced_check_watch_history_domain_name_dialog_ignore">Nicht wieder anzeigen</string> <string name="revanced_check_watch_history_domain_name_dialog_ignore">Nicht wieder anzeigen</string>
</patch> </patch>
<patch id="misc.settings.settingsResourcePatch"> <patch id="misc.settings.settingsResourcePatch">
<string name="revanced_settings_submenu_title">Einstellungen</string> <string name="revanced_settings_submenu_title">Einstellungen</string>
<string name="revanced_settings_confirm_user_dialog_title">Bist du sicher, dass du fortfahren möchtest?</string> <string name="revanced_settings_confirm_user_dialog_title">Bist du sicher, dass du fortfahren möchtest?</string>
<string name="revanced_settings_save">Speichern</string>
<string name="revanced_settings_reset">Zurücksetzen</string> <string name="revanced_settings_reset">Zurücksetzen</string>
<string name="revanced_settings_reset_color">Farbe zurücksetzen</string> <string name="revanced_settings_reset_color">Farbe zurücksetzen</string>
<string name="revanced_settings_color_invalid">Ungültige Farbe</string> <string name="revanced_settings_color_invalid">Ungültige Farbe</string>
@@ -164,6 +164,14 @@ Sie werden nicht über unerwartete Ereignisse informiert."</string>
<string name="revanced_debug_logs_clear_buffer_title">Debug-Protokolle löschen</string> <string name="revanced_debug_logs_clear_buffer_title">Debug-Protokolle löschen</string>
<string name="revanced_debug_logs_clear_buffer_summary">Löscht alle gespeicherten ReVanced-Debug-Protokolle</string> <string name="revanced_debug_logs_clear_buffer_summary">Löscht alle gespeicherten ReVanced-Debug-Protokolle</string>
<string name="revanced_debug_logs_clear_toast">Protokolle gelöscht</string> <string name="revanced_debug_logs_clear_toast">Protokolle gelöscht</string>
<string name="revanced_debug_feature_flags_manager_title">Feature-Flags Manager</string>
<string name="revanced_debug_feature_flags_manager_summary">Boolesche Feature-Flags verwalten</string>
<string name="revanced_debug_feature_flags_manager_active_header">Aktive Flags (%d)</string>
<string name="revanced_debug_feature_flags_manager_blocked_header">Blockierte Flags (%d)</string>
<string name="revanced_debug_feature_flags_manager_search_hint">Flags suchen...</string>
<string name="revanced_debug_feature_flags_manager_toast_saved">Flags gespeichert</string>
<string name="revanced_debug_feature_flags_manager_toast_reset">Flags zurückgesetzt</string>
<string name="revanced_debug_feature_flags_manager_toast_copied">Flags in die Zwischenablage kopiert</string>
</patch> </patch>
<patch id="misc.privacy.sanitizeSharingLinksPatch"> <patch id="misc.privacy.sanitizeSharingLinksPatch">
<string name="revanced_sanitize_sharing_links_title">Freigabelinks säubern</string> <string name="revanced_sanitize_sharing_links_title">Freigabelinks säubern</string>
@@ -274,6 +282,9 @@ Wenn Sie dies aktivieren, werden jedoch auch einige Benutzerdaten wie Ihre IP-Ad
<string name="revanced_hide_video_recommendation_labels_title">Videovorschlagsbeschriftungen ausblenden</string> <string name="revanced_hide_video_recommendation_labels_title">Videovorschlagsbeschriftungen ausblenden</string>
<string name="revanced_hide_video_recommendation_labels_summary_on">\'Das haben andere auch angesehen\' und \'Dir könnten auch gefallen\' Beschriftungen in den Suchergebnissen sind ausgeblendet</string> <string name="revanced_hide_video_recommendation_labels_summary_on">\'Das haben andere auch angesehen\' und \'Dir könnten auch gefallen\' Beschriftungen in den Suchergebnissen sind ausgeblendet</string>
<string name="revanced_hide_video_recommendation_labels_summary_off">\'Das haben andere auch angesehen\' und \'Dir könnten auch gefallen\' Beschriftungen in den Suchergebnissen werden angezeigt</string> <string name="revanced_hide_video_recommendation_labels_summary_off">\'Das haben andere auch angesehen\' und \'Dir könnten auch gefallen\' Beschriftungen in den Suchergebnissen werden angezeigt</string>
<string name="revanced_hide_visual_spacer_title">Visuellen Abstandshalter ausblenden</string>
<string name="revanced_hide_visual_spacer_summary_on">Visueller Abstandshalter ist ausgeblendet</string>
<string name="revanced_hide_visual_spacer_summary_off">Visueller Abstandshalter ist sichtbar</string>
<!-- https://logos.fandom.com/wiki/YouTube/Yoodles --> <!-- https://logos.fandom.com/wiki/YouTube/Yoodles -->
<string name="revanced_hide_doodles_title">YouTube Doodles ausblenden</string> <string name="revanced_hide_doodles_title">YouTube Doodles ausblenden</string>
<string name="revanced_hide_doodles_summary_on">YouTube Doodles-Animation auf dem Logo ist ausgeblendet</string> <string name="revanced_hide_doodles_summary_on">YouTube Doodles-Animation auf dem Logo ist ausgeblendet</string>
@@ -333,12 +344,21 @@ Wenn ein Doodle zurzeit in Ihrer Region angezeigt wird und diese Einstellung zum
<string name="revanced_hide_podcast_section_title">\'Podcast entdecken\' ausblenden</string> <string name="revanced_hide_podcast_section_title">\'Podcast entdecken\' ausblenden</string>
<string name="revanced_hide_podcast_section_summary_on">Der Abschnitt \"Podcast entdecken\" ist ausgeblendet</string> <string name="revanced_hide_podcast_section_summary_on">Der Abschnitt \"Podcast entdecken\" ist ausgeblendet</string>
<string name="revanced_hide_podcast_section_summary_off">Der Abschnitt \"Podcast entdecken\" wird angezeigt</string> <string name="revanced_hide_podcast_section_summary_off">Der Abschnitt \"Podcast entdecken\" wird angezeigt</string>
<string name="revanced_hide_featured_links_section_title">Empfohlene Links ausblenden</string>
<string name="revanced_hide_featured_links_section_summary_on">Bereich „Empfohlene Links“ wird ausgeblendet</string>
<string name="revanced_hide_featured_links_section_summary_off">Bereich „Empfohlene Links“ wird angezeigt</string>
<string name="revanced_hide_featured_videos_section_title">Empfohlene Videos ausblenden</string>
<string name="revanced_hide_featured_videos_section_summary_on">Bereich „Empfohlene Videos“ wird ausgeblendet</string>
<string name="revanced_hide_featured_videos_section_summary_off">Bereich „Empfohlene Videos“ wird angezeigt</string>
<string name="revanced_hide_info_cards_section_title">Infokarten ausblenden</string> <string name="revanced_hide_info_cards_section_title">Infokarten ausblenden</string>
<string name="revanced_hide_info_cards_section_summary_on">Info-Kartenbereich ist ausgeblendet</string> <string name="revanced_hide_info_cards_section_summary_on">Info-Kartenbereich ist ausgeblendet</string>
<string name="revanced_hide_info_cards_section_summary_off">Info-Kartenbereich wird angezeigt</string> <string name="revanced_hide_info_cards_section_summary_off">Info-Kartenbereich wird angezeigt</string>
<string name="revanced_hide_key_concepts_section_title">\'Schlüsselkonzepte\' ausblenden</string> <string name="revanced_hide_key_concepts_section_title">\'Schlüsselkonzepte\' ausblenden</string>
<string name="revanced_hide_key_concepts_section_summary_on">Abschnitt \"Schlüsselkonzepte\" ist ausgeblendet</string> <string name="revanced_hide_key_concepts_section_summary_on">Abschnitt \"Schlüsselkonzepte\" ist ausgeblendet</string>
<string name="revanced_hide_key_concepts_section_summary_off">Abschnitt \"Schlüsselkonzepte\" wird angezeigt</string> <string name="revanced_hide_key_concepts_section_summary_off">Abschnitt \"Schlüsselkonzepte\" wird angezeigt</string>
<string name="revanced_hide_subscribe_button_title">Schaltfläche „Abonnieren“ ausblenden</string>
<string name="revanced_hide_subscribe_button_summary_on">Schaltfläche „Abonnieren“ wird ausgeblendet</string>
<string name="revanced_hide_subscribe_button_summary_off">Schaltfläche „Abonnieren“ wird angezeigt</string>
<string name="revanced_hide_transcript_section_title">Transkript ausblenden</string> <string name="revanced_hide_transcript_section_title">Transkript ausblenden</string>
<string name="revanced_hide_transcript_section_summary_on">Transkript-Abschnitt ist ausgeblendet</string> <string name="revanced_hide_transcript_section_summary_on">Transkript-Abschnitt ist ausgeblendet</string>
<string name="revanced_hide_transcript_section_summary_off">Sektion Transkripte wird angezeigt</string> <string name="revanced_hide_transcript_section_summary_off">Sektion Transkripte wird angezeigt</string>
@@ -360,24 +380,32 @@ Wenn ein Doodle zurzeit in Ihrer Region angezeigt wird und diese Einstellung zum
<string name="revanced_hide_filter_bar_feed_in_history_summary_off">Im Wiedergabeverlauf angezeigt</string> <string name="revanced_hide_filter_bar_feed_in_history_summary_off">Im Wiedergabeverlauf angezeigt</string>
<string name="revanced_channel_screen_title">Kanalseite</string> <string name="revanced_channel_screen_title">Kanalseite</string>
<string name="revanced_channel_screen_summary">Kanalseitenkomponenten ausblenden oder anzeigen</string> <string name="revanced_channel_screen_summary">Kanalseitenkomponenten ausblenden oder anzeigen</string>
<!-- 'Community' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_community_button_title">Schaltfläche \"Community\" ausblenden</string>
<string name="revanced_hide_community_button_summary_on">Community-Schaltfläche ist ausgeblendet</string>
<string name="revanced_hide_community_button_summary_off">Community-Schaltfläche wird angezeigt</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">\"Für dich\" Bereich ausblenden</string> <string name="revanced_hide_for_you_shelf_title">\"Für dich\" Bereich ausblenden</string>
<string name="revanced_hide_for_you_shelf_summary_on">\"Für dich\" Bereich ist ausgeblendet</string> <string name="revanced_hide_for_you_shelf_summary_on">\"Für dich\" Bereich ist ausgeblendet</string>
<string name="revanced_hide_for_you_shelf_summary_off">\"Für dich\" Bereich ist angezeigt</string> <string name="revanced_hide_for_you_shelf_summary_off">\"Für dich\" Bereich ist angezeigt</string>
<!-- 'Join' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_join_button_title">Schaltfläche \"Mitglied werden\" ausblenden</string>
<string name="revanced_hide_join_button_summary_on">Schaltfläche \"Mitglied werden\" ist ausgeblendet</string>
<string name="revanced_hide_join_button_summary_off">Schaltfläche \"Mitglied werden\" wird angezeigt</string>
<string name="revanced_hide_links_preview_title">Linkvorschau ausblenden</string> <string name="revanced_hide_links_preview_title">Linkvorschau ausblenden</string>
<string name="revanced_hide_links_preview_summary_on">Linkvorschau ist ausgeblendet</string> <string name="revanced_hide_links_preview_summary_on">Linkvorschau ist ausgeblendet</string>
<string name="revanced_hide_links_preview_summary_off">Linkvorschau ist angezeigt</string> <string name="revanced_hide_links_preview_summary_off">Linkvorschau ist angezeigt</string>
<string name="revanced_hide_members_shelf_title">Mitglieder-Regal ausblenden</string> <string name="revanced_hide_members_shelf_title">Mitglieder-Regal ausblenden</string>
<string name="revanced_hide_members_shelf_summary_on">Mitglieder-Regal ist ausgeblendet</string> <string name="revanced_hide_members_shelf_summary_on">Mitglieder-Regal ist ausgeblendet</string>
<string name="revanced_hide_members_shelf_summary_off">Mitglieder-Regal wird angezeigt</string> <string name="revanced_hide_members_shelf_summary_off">Mitglieder-Regal wird angezeigt</string>
<!-- 'Visit Community' should be translated with the same localized wording that YouTube displays. --> <!-- 'Store' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_visit_community_button_title">Schaltfläche \'Zur Community\' ausblenden</string> <string name="revanced_hide_store_button_title">Schaltfläche \"Shop\" ausblenden</string>
<string name="revanced_hide_visit_community_button_summary_on">Schaltfläche \'Zur Community\' ist ausgeblendet</string> <string name="revanced_hide_store_button_summary_on">Schaltfläche \"Shop\" ist ausgeblendet</string>
<string name="revanced_hide_visit_community_button_summary_off">Schaltfläch \"Zur Community\" wird angezeigt</string> <string name="revanced_hide_store_button_summary_off">Schaltfläche \"Shop\" wird angezeigt</string>
<!-- 'Visit store' should be translated with the same localized wording that YouTube displays. --> <!-- 'Subscribe' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_visit_store_button_title">Den \'Store besuchen\'-Button auf Kanalseiten ausblenden</string> <string name="revanced_hide_subscribe_button_in_channel_page_title">Schaltfläche \"Abonnieren\" ausblenden</string>
<string name="revanced_hide_visit_store_button_summary_on">Schaltfläche \"Shop besuchen\" ist ausgeblendet</string> <string name="revanced_hide_subscribe_button_in_channel_page_summary_on">Schaltfläche \"Abonnieren\" ist ausgeblendet</string>
<string name="revanced_hide_visit_store_button_summary_off">Schaltfläche \"Shop besuchen\" ist angezeigt</string> <string name="revanced_hide_subscribe_button_in_channel_page_summary_off">Schaltfläche \"Abonnieren\" wird angezeigt</string>
<string name="revanced_comments_screen_title">Kommentare</string> <string name="revanced_comments_screen_title">Kommentare</string>
<string name="revanced_comments_screen_summary">Komponenten der Kommentar-Sektion ausblenden oder anzeigen</string> <string name="revanced_comments_screen_summary">Komponenten der Kommentar-Sektion ausblenden oder anzeigen</string>
<string name="revanced_hide_comments_ai_chat_summary_title">KI-Chat-Zusammenfassung ausblenden</string> <string name="revanced_hide_comments_ai_chat_summary_title">KI-Chat-Zusammenfassung ausblenden</string>
@@ -519,11 +547,11 @@ Diese Funktion ist nur für ältere Geräte verfügbar"</string>
<string name="revanced_share_copy_url_success">URL in Zwischenablage kopiert</string> <string name="revanced_share_copy_url_success">URL in Zwischenablage kopiert</string>
<string name="revanced_share_copy_url_timestamp_success">URL mit Zeitstempel kopiert</string> <string name="revanced_share_copy_url_timestamp_success">URL mit Zeitstempel kopiert</string>
<string name="revanced_copy_video_url_title">Video-URL-Schaltfläche kopieren anzeigen</string> <string name="revanced_copy_video_url_title">Video-URL-Schaltfläche kopieren anzeigen</string>
<string name="revanced_copy_video_url_summary_on">Schaltfläche wird angezeigt. Tippen, um die Video-URL zu kopieren. Zum Kopieren mit Zeitstempel tippen und halten</string> <string name="revanced_copy_video_url_summary_on">Schaltfläche \"Video-URL kopieren\" wird angezeigt. Tippen, um Video-URL zu kopieren. Tippen und halten, um mit Zeitstempel zu kopieren.</string>
<string name="revanced_copy_video_url_summary_off">Button wird nicht angezeigt</string> <string name="revanced_copy_video_url_summary_off">Schaltfläche \"Video-URL kopieren\" wird nicht angezeigt</string>
<string name="revanced_copy_video_url_timestamp_title">Kopiere Zeitstempel URL-Schaltfläche anzeigen</string> <string name="revanced_copy_video_url_timestamp_title">Kopiere Zeitstempel URL-Schaltfläche anzeigen</string>
<string name="revanced_copy_video_url_timestamp_summary_on">Schaltfläche wird angezeigt. Tippen, um die Video-URL mit Zeitstempel zu kopieren. Zum Kopieren ohne Zeitstempel tippen und halten</string> <string name="revanced_copy_video_url_timestamp_summary_on">Schaltfläche \"URL mit Zeitstempel kopieren\" wird angezeigt. Tippen, um Video-URL mit Zeitstempel zu kopieren. Tippen und halten, um ohne Zeitstempel zu kopieren.</string>
<string name="revanced_copy_video_url_timestamp_summary_off">Button wird nicht angezeigt</string> <string name="revanced_copy_video_url_timestamp_summary_off">Schaltfläche \"URL mit Zeitstempel kopieren\" wird nicht angezeigt</string>
</patch> </patch>
<patch id="interaction.dialog.removeViewerDiscretionDialogPatch"> <patch id="interaction.dialog.removeViewerDiscretionDialogPatch">
<string name="revanced_remove_viewer_discretion_dialog_title">Diskretion des Betrachters entfernen</string> <string name="revanced_remove_viewer_discretion_dialog_title">Diskretion des Betrachters entfernen</string>
@@ -532,7 +560,7 @@ Diese Funktion ist nur für ältere Geräte verfügbar"</string>
<string name="revanced_remove_viewer_discretion_dialog_user_dialog_message">Dies umgeht nicht die Altersbeschränkung, sondern akzeptiert sie nur automatisch.</string> <string name="revanced_remove_viewer_discretion_dialog_user_dialog_message">Dies umgeht nicht die Altersbeschränkung, sondern akzeptiert sie nur automatisch.</string>
</patch> </patch>
<patch id="layout.hide.signintotv.disableSignInToTvPopupPatch"> <patch id="layout.hide.signintotv.disableSignInToTvPopupPatch">
<string name="revanced_disable_signin_to_tv_popup_title">Pop-up \"Bei TV anmelden\" deaktivieren</string> <string name="revanced_disable_signin_to_tv_popup_title">Pop-up \"Beim Fernseher anmelden\" deaktivieren</string>
<string name="revanced_disable_signin_to_tv_popup_summary_on">Pop-up \"Bei TV anmelden\" ist deaktiviert</string> <string name="revanced_disable_signin_to_tv_popup_summary_on">Pop-up \"Bei TV anmelden\" ist deaktiviert</string>
<string name="revanced_disable_signin_to_tv_popup_summary_off">Pop-up \"Bei TV anmelden\" ist aktiviert</string> <string name="revanced_disable_signin_to_tv_popup_summary_off">Pop-up \"Bei TV anmelden\" ist aktiviert</string>
</patch> </patch>
@@ -662,7 +690,7 @@ Passen Sie die Helligkeit an, indem Sie auf der linken Seite des Bildschirms ver
<string name="revanced_hide_download_button_summary_on">Download-Button ist ausgeblendet</string> <string name="revanced_hide_download_button_summary_on">Download-Button ist ausgeblendet</string>
<string name="revanced_hide_download_button_summary_off">Download-Button wird angezeigt</string> <string name="revanced_hide_download_button_summary_off">Download-Button wird angezeigt</string>
<!-- 'Hype' should be translated with the same localized wording that YouTube displays. <!-- 'Hype' should be translated with the same localized wording that YouTube displays.
This button only shows on videos uploaded by the logged in user. --> This button only shows on videos uploaded by the logged-in user. -->
<string name="revanced_hide_hype_button_title">Hypen ausblenden</string> <string name="revanced_hide_hype_button_title">Hypen ausblenden</string>
<string name="revanced_hide_hype_button_summary_on">Hypen-Button ist ausgeblendet</string> <string name="revanced_hide_hype_button_summary_on">Hypen-Button ist ausgeblendet</string>
<string name="revanced_hide_hype_button_summary_off">Hypen-Button wird angezeigt</string> <string name="revanced_hide_hype_button_summary_off">Hypen-Button wird angezeigt</string>
@@ -783,10 +811,9 @@ Wenn diese Änderung nicht wirksam wird, versuchen Sie, in den Inkognito-Modus z
<string name="revanced_hide_player_flyout_audio_track_title">Audiospur ausblenden</string> <string name="revanced_hide_player_flyout_audio_track_title">Audiospur ausblenden</string>
<string name="revanced_hide_player_flyout_audio_track_summary_on">Audiospur-Menü ist ausgeblendet</string> <string name="revanced_hide_player_flyout_audio_track_summary_on">Audiospur-Menü ist ausgeblendet</string>
<string name="revanced_hide_player_flyout_audio_track_summary_off">Audiospurmenü wird angezeigt</string> <string name="revanced_hide_player_flyout_audio_track_summary_off">Audiospurmenü wird angezeigt</string>
<!-- 'Spoof video streams' should be the same translation used for 'revanced_spoof_video_streams_screen_title'. --> <!-- 'Spoof video streams' should be the same translation used for 'revanced_spoof_video_streams_screen_title'.
<string name="revanced_hide_player_flyout_audio_track_not_available">"Audiotrack-Menü ist ausgeblendet 'Android No SDK' must be kept untranslated. -->
<string name="revanced_hide_player_flyout_audio_track_not_available">"Audiotrack-Menü ist ausgeblendet\n\nUm das Audiotrack-Menü anzuzeigen, ändern Sie \"</string>
Um das Audiotrack-Menü anzuzeigen, ändern Sie \"Video-Streams fälschen\" zu iPadOS"</string>
<!-- 'Watch in VR' should be translated using the same localized wording YouTube displays for the menu item. --> <!-- 'Watch in VR' should be translated using the same localized wording YouTube displays for the menu item. -->
<string name="revanced_hide_player_flyout_watch_in_vr_title">Überwachung in VR ausblenden</string> <string name="revanced_hide_player_flyout_watch_in_vr_title">Überwachung in VR ausblenden</string>
<string name="revanced_hide_player_flyout_watch_in_vr_summary_on">Im VR-Menü beobachten ist ausgeblendet</string> <string name="revanced_hide_player_flyout_watch_in_vr_summary_on">Im VR-Menü beobachten ist ausgeblendet</string>
@@ -862,13 +889,16 @@ Um das Audiotrack-Menü anzuzeigen, ändern Sie \"Video-Streams fälschen\" zu i
<string name="revanced_hide_shorts_history_title">Shorts im Verlauf verstecken</string> <string name="revanced_hide_shorts_history_title">Shorts im Verlauf verstecken</string>
<string name="revanced_hide_shorts_history_summary_on">Im Verlauf versteckt</string> <string name="revanced_hide_shorts_history_summary_on">Im Verlauf versteckt</string>
<string name="revanced_hide_shorts_history_summary_off">Im Verlauf angezeigt</string> <string name="revanced_hide_shorts_history_summary_off">Im Verlauf angezeigt</string>
<string name="revanced_hide_shorts_super_thanks_button_title">\'Super Thanks\'-Button ausblenden</string> <string name="revanced_hide_shorts_auto_dubbed_label_title">Label \"Automatisch synchronisiert\" ausblenden</string>
<string name="revanced_hide_shorts_auto_dubbed_label_summary_on">Automatisch synchronisiertes Label ist ausgeblendet</string>
<string name="revanced_hide_shorts_auto_dubbed_label_summary_off">Automatisch synchronisiertes Label wird angezeigt</string>
<string name="revanced_hide_shorts_super_thanks_button_title">Schaltfläche \"Super Thanks kaufen\" ausblenden</string>
<string name="revanced_hide_shorts_super_thanks_button_summary_on">Schaltfläche \"Super Thanks kaufen\" ist ausgeblendet</string> <string name="revanced_hide_shorts_super_thanks_button_summary_on">Schaltfläche \"Super Thanks kaufen\" ist ausgeblendet</string>
<string name="revanced_hide_shorts_super_thanks_button_summary_off">Schaltfläche \"Super Thanks kaufen\" wird angezeigt</string> <string name="revanced_hide_shorts_super_thanks_button_summary_off">Schaltfläche \"Super Thanks kaufen\" wird angezeigt</string>
<string name="revanced_hide_shorts_effect_button_title">Effekt-Schaltfläche ausblenden</string> <string name="revanced_hide_shorts_effect_button_title">Effekt-Schaltfläche ausblenden</string>
<string name="revanced_hide_shorts_effect_button_summary_on">Effekt-Taste ist ausgeblendet</string> <string name="revanced_hide_shorts_effect_button_summary_on">Effekt-Taste ist ausgeblendet</string>
<string name="revanced_hide_shorts_effect_button_summary_off">Effekt-Taste ist eingeblendet</string> <string name="revanced_hide_shorts_effect_button_summary_off">Effekt-Taste ist eingeblendet</string>
<string name="revanced_hide_shorts_green_screen_button_title">Green-Screen-Button ausblenden</string> <string name="revanced_hide_shorts_green_screen_button_title">Schaltfläche \"Greenscreen\" ausblenden</string>
<string name="revanced_hide_shorts_green_screen_button_summary_on">Grünbildschirm-Taste ist ausgeblendet</string> <string name="revanced_hide_shorts_green_screen_button_summary_on">Grünbildschirm-Taste ist ausgeblendet</string>
<string name="revanced_hide_shorts_green_screen_button_summary_off">Grünbildschirm-Taste wird angezeigt</string> <string name="revanced_hide_shorts_green_screen_button_summary_off">Grünbildschirm-Taste wird angezeigt</string>
<string name="revanced_hide_shorts_hashtag_button_title">Hashtag Button ausblenden</string> <string name="revanced_hide_shorts_hashtag_button_title">Hashtag Button ausblenden</string>
@@ -878,10 +908,13 @@ Um das Audiotrack-Menü anzuzeigen, ändern Sie \"Video-Streams fälschen\" zu i
<string name="revanced_hide_shorts_join_button_title">\'Beitreten\'-Button ausblenden</string> <string name="revanced_hide_shorts_join_button_title">\'Beitreten\'-Button ausblenden</string>
<string name="revanced_hide_shorts_join_button_summary_on">Join Button ist ausgeblendet</string> <string name="revanced_hide_shorts_join_button_summary_on">Join Button ist ausgeblendet</string>
<string name="revanced_hide_shorts_join_button_summary_off">Schaltfläche beitreten wird angezeigt</string> <string name="revanced_hide_shorts_join_button_summary_off">Schaltfläche beitreten wird angezeigt</string>
<string name="revanced_hide_shorts_live_preview_title">Live-Vorschau ausblenden</string>
<string name="revanced_hide_shorts_live_preview_summary_on">Live-Vorschau ist ausgeblendet</string>
<string name="revanced_hide_shorts_live_preview_summary_off">Live-Vorschau wird angezeigt</string>
<string name="revanced_hide_shorts_location_label_title">Standortbezeichnung ausblenden</string> <string name="revanced_hide_shorts_location_label_title">Standortbezeichnung ausblenden</string>
<string name="revanced_hide_shorts_location_label_summary_on">Ortsbezeichnung ist ausgeblendet</string> <string name="revanced_hide_shorts_location_label_summary_on">Ortsbezeichnung ist ausgeblendet</string>
<string name="revanced_hide_shorts_location_label_summary_off">Ortsbezeichnung wird angezeigt</string> <string name="revanced_hide_shorts_location_label_summary_off">Ortsbezeichnung wird angezeigt</string>
<string name="revanced_hide_shorts_new_posts_button_title">Schaltfläche \"Neue Beiträge ausblenden\"</string> <string name="revanced_hide_shorts_new_posts_button_title">Schaltfläche \"Neue Beiträge\" ausblenden</string>
<string name="revanced_hide_shorts_new_posts_button_summary_on">Schaltfläche \"Neue Beiträge\" ist ausgeblendet</string> <string name="revanced_hide_shorts_new_posts_button_summary_on">Schaltfläche \"Neue Beiträge\" ist ausgeblendet</string>
<string name="revanced_hide_shorts_new_posts_button_summary_off">Schaltfläche \"Neue Beiträge\" wird angezeigt</string> <string name="revanced_hide_shorts_new_posts_button_summary_off">Schaltfläche \"Neue Beiträge\" wird angezeigt</string>
<string name="revanced_hide_shorts_paused_overlay_buttons_title">Pausierte Overlay-Tasten ausblenden</string> <string name="revanced_hide_shorts_paused_overlay_buttons_title">Pausierte Overlay-Tasten ausblenden</string>
@@ -890,7 +923,7 @@ Um das Audiotrack-Menü anzuzeigen, ändern Sie \"Video-Streams fälschen\" zu i
<string name="revanced_hide_shorts_preview_comment_title">Kommentarvorschau ausblenden</string> <string name="revanced_hide_shorts_preview_comment_title">Kommentarvorschau ausblenden</string>
<string name="revanced_hide_shorts_preview_comment_summary_on">Vorschaukommentar ist ausgeblendet</string> <string name="revanced_hide_shorts_preview_comment_summary_on">Vorschaukommentar ist ausgeblendet</string>
<string name="revanced_hide_shorts_preview_comment_summary_off">Vorschaukommentar wird angezeigt</string> <string name="revanced_hide_shorts_preview_comment_summary_off">Vorschaukommentar wird angezeigt</string>
<string name="revanced_hide_shorts_save_sound_button_title">\'Musik speichern\'-Button ausblenden</string> <string name="revanced_hide_shorts_save_sound_button_title">Schaltfläche \"Musik speichern\" ausblenden</string>
<string name="revanced_hide_shorts_save_sound_button_summary_on">Musikspeicher Button ist ausgeblendet</string> <string name="revanced_hide_shorts_save_sound_button_summary_on">Musikspeicher Button ist ausgeblendet</string>
<string name="revanced_hide_shorts_save_sound_button_summary_off">Musikspeicher Button wird angezeigt</string> <string name="revanced_hide_shorts_save_sound_button_summary_off">Musikspeicher Button wird angezeigt</string>
<string name="revanced_hide_shorts_search_suggestions_title">Suchvorschläge ausblenden</string> <string name="revanced_hide_shorts_search_suggestions_title">Suchvorschläge ausblenden</string>
@@ -914,7 +947,7 @@ Um das Audiotrack-Menü anzuzeigen, ändern Sie \"Video-Streams fälschen\" zu i
<string name="revanced_hide_shorts_use_sound_button_title">Schaltfläche \"Diesen Sound verwenden\" ausblenden</string> <string name="revanced_hide_shorts_use_sound_button_title">Schaltfläche \"Diesen Sound verwenden\" ausblenden</string>
<string name="revanced_hide_shorts_use_sound_button_summary_on">Schaltfläche \"Diesen Sound verwenden\" ist ausgeblendet</string> <string name="revanced_hide_shorts_use_sound_button_summary_on">Schaltfläche \"Diesen Sound verwenden\" ist ausgeblendet</string>
<string name="revanced_hide_shorts_use_sound_button_summary_off">Schaltfläche \"Diesen Sound verwenden\" ist angezeigt</string> <string name="revanced_hide_shorts_use_sound_button_summary_off">Schaltfläche \"Diesen Sound verwenden\" ist angezeigt</string>
<string name="revanced_hide_shorts_use_template_button_title">Schaltfläche Diese Vorlage verwenden ausblenden</string> <string name="revanced_hide_shorts_use_template_button_title">Schaltfläche \"Diese Vorlage verwenden\" ausblenden</string>
<string name="revanced_hide_shorts_use_template_button_summary_on">Schaltfläche \"Diese Vorlage verwenden\" ist ausgeblendet</string> <string name="revanced_hide_shorts_use_template_button_summary_on">Schaltfläche \"Diese Vorlage verwenden\" ist ausgeblendet</string>
<string name="revanced_hide_shorts_use_template_button_summary_off">Schaltfläche „Diese Vorlage verwenden“ wird angezeigt</string> <string name="revanced_hide_shorts_use_template_button_summary_off">Schaltfläche „Diese Vorlage verwenden“ wird angezeigt</string>
<string name="revanced_hide_shorts_like_fountain_title">\'Like\'-Button-Fontäne ausblenden</string> <string name="revanced_hide_shorts_like_fountain_title">\'Like\'-Button-Fontäne ausblenden</string>
@@ -1557,13 +1590,13 @@ Durch Aktivieren dieser Option können höhere Videoqualitäten freigeschaltet w
</patch> </patch>
<patch id="video.speed.button.playbackSpeedButtonPatch"> <patch id="video.speed.button.playbackSpeedButtonPatch">
<string name="revanced_playback_speed_dialog_button_title">Zeige Geschwindigkeitsdialog Taste</string> <string name="revanced_playback_speed_dialog_button_title">Zeige Geschwindigkeitsdialog Taste</string>
<string name="revanced_playback_speed_dialog_button_summary_on">Die Schaltfläche wird angezeigt. Tippen und halten, um die Wiedergabegeschwindigkeit auf die Standardeinstellung zurückzusetzen.</string> <string name="revanced_playback_speed_dialog_button_summary_on">Schaltfläche für Geschwindigkeitsdialog wird angezeigt. Tippen und halten, um die Wiedergabegeschwindigkeit auf Standard zurückzusetzen.</string>
<string name="revanced_playback_speed_dialog_button_summary_off">Button wird nicht angezeigt</string> <string name="revanced_playback_speed_dialog_button_summary_off">Schaltfläche für Geschwindigkeitsdialog wird nicht angezeigt</string>
</patch> </patch>
<patch id="video.quality.button.videoQualityDialogButtonPatch"> <patch id="video.quality.button.videoQualityDialogButtonPatch">
<string name="revanced_video_quality_dialog_button_title">Videoqualität-Schaltfläche anzeigen</string> <string name="revanced_video_quality_dialog_button_title">Videoqualität-Schaltfläche anzeigen</string>
<string name="revanced_video_quality_dialog_button_summary_on">Schaltfläche wird angezeigt. Tippen und halten, um die Qualität auf Standard zurückzusetzen</string> <string name="revanced_video_quality_dialog_button_summary_on">Schaltfläche für Videoqualität wird angezeigt. Tippen und halten, um die Qualität auf Standard zurückzusetzen.</string>
<string name="revanced_video_quality_dialog_button_summary_off">Schaltfläche wird nicht angezeigt</string> <string name="revanced_video_quality_dialog_button_summary_off">Schaltfläche für Videoqualität wird nicht angezeigt</string>
</patch> </patch>
<patch id="video.speed.custom.customPlaybackSpeedPatch"> <patch id="video.speed.custom.customPlaybackSpeedPatch">
<string name="revanced_custom_speed_menu_title">Benutzerdefiniertes Wiedergabegeschwindigkeitsmenü</string> <string name="revanced_custom_speed_menu_title">Benutzerdefiniertes Wiedergabegeschwindigkeitsmenü</string>
@@ -1660,16 +1693,30 @@ Die Videowiedergabe mit AV1 kann stottern oder Bilder überspringen."</string>
<string name="revanced_music_play_permanent_repeat_summary_on">Dauerwiederholung ist aktiviert</string> <string name="revanced_music_play_permanent_repeat_summary_on">Dauerwiederholung ist aktiviert</string>
<string name="revanced_music_play_permanent_repeat_summary_off">Dauerwiederholung ist deaktiviert</string> <string name="revanced_music_play_permanent_repeat_summary_off">Dauerwiederholung ist deaktiviert</string>
</patch> </patch>
<patch id="layout.castbutton.hideCastButton"> <patch id="layout.buttons.hideButtons">
<string name="revanced_music_hide_cast_button_title">Übertragen-Taste ausblenden</string> <string name="revanced_music_hide_cast_button_title">Übertragen-Taste ausblenden</string>
<string name="revanced_music_hide_cast_button_summary_on">Übertragen-Taste ist ausgeblendet</string> <string name="revanced_music_hide_cast_button_summary_on">Übertragen-Taste ist ausgeblendet</string>
<string name="revanced_music_hide_cast_button_summary_off">Übertragen-Taste wird angezeigt</string> <string name="revanced_music_hide_cast_button_summary_off">Übertragen-Taste wird angezeigt</string>
<string name="revanced_music_hide_history_button_title">Verlauf-Schaltfläche ausblenden</string>
<string name="revanced_music_hide_history_button_summary_on">Verlauf-Schaltfläche ist ausgeblendet</string>
<string name="revanced_music_hide_history_button_summary_off">Verlauf-Schaltfläche wird angezeigt</string>
<string name="revanced_music_hide_notification_button_title">Benachrichtigungsschaltfläche ausblenden</string>
<string name="revanced_music_hide_notification_button_summary_on">Benachrichtigungsschaltfläche wird ausgeblendet</string>
<string name="revanced_music_hide_notification_button_summary_off">Benachrichtigungsschaltfläche wird angezeigt</string>
<string name="revanced_music_hide_search_button_title">Suchschaltfläche ausblenden</string>
<string name="revanced_music_hide_search_button_summary_on">Suchschaltfläche wird ausgeblendet</string>
<string name="revanced_music_hide_search_button_summary_off">Suchschaltfläche wird angezeigt</string>
</patch> </patch>
<patch id="layout.compactheader.hideCategoryBar"> <patch id="layout.compactheader.hideCategoryBar">
<string name="revanced_music_hide_category_bar_title">Kategorieleiste ausblenden</string> <string name="revanced_music_hide_category_bar_title">Kategorieleiste ausblenden</string>
<string name="revanced_music_hide_category_bar_summary_on">Kategorieleiste ist ausgeblendet</string> <string name="revanced_music_hide_category_bar_summary_on">Kategorieleiste ist ausgeblendet</string>
<string name="revanced_music_hide_category_bar_summary_off">Kategorieleiste wird angezeigt</string> <string name="revanced_music_hide_category_bar_summary_off">Kategorieleiste wird angezeigt</string>
</patch> </patch>
<patch id="layout.miniplayercolor.changeMiniplayerColor">
<string name="revanced_music_change_miniplayer_color_title">Miniplayer-Farbe ändern</string>
<string name="revanced_music_change_miniplayer_color_summary_on">Miniplayer-Farbe entspricht dem Vollbild-Player</string>
<string name="revanced_music_change_miniplayer_color_summary_off">Miniplayer verwendet Standardfarbe</string>
</patch>
<patch id="layout.navigationbar.navigationBarPatch"> <patch id="layout.navigationbar.navigationBarPatch">
<string name="revanced_music_navigation_bar_screen_title">Navigationsleiste</string> <string name="revanced_music_navigation_bar_screen_title">Navigationsleiste</string>
<string name="revanced_music_navigation_bar_screen_summary">Navigationsleisten-Schaltflächen ausblenden oder ändern</string> <string name="revanced_music_navigation_bar_screen_summary">Navigationsleisten-Schaltflächen ausblenden oder ändern</string>

View File

@@ -1,5 +1,4 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<!-- Copyright 2024 ReVanced. See https://github.com/ReVanced/revanced-branding -->
<!-- <!--
All strings must have a unique path, even if the same string is declared in two different apps. All strings must have a unique path, even if the same string is declared in two different apps.
@@ -45,13 +44,14 @@ Second \"item\" text"</string>
<string name="revanced_check_environment_not_near_patch_time_invalid">Η ημερομηνία κατασκευής του APK είναι κατεστραμμένη</string> <string name="revanced_check_environment_not_near_patch_time_invalid">Η ημερομηνία κατασκευής του APK είναι κατεστραμμένη</string>
</patch> </patch>
<patch id="misc.dns.checkWatchHistoryDomainNameResolutionPatch"> <patch id="misc.dns.checkWatchHistoryDomainNameResolutionPatch">
<string name="revanced_check_watch_history_domain_name_dialog_title">Προειδοποίηση</string> <string name="revanced_check_watch_history_domain_name_dialog_title">Ειδοποίηση ReVanced</string>
<string name="revanced_check_watch_history_domain_name_dialog_message">Το ιστορικό παρακολούθησης δεν αποθηκεύεται.&lt;br&gt;&lt;br&gt;Πιθανό να συμβαίνει λόγω αποκλεισμού διαφημίσεων μέσω DNS ή μέσω διακομιστή μεσολάβησης δικτύου.&lt;br&gt;&lt;br&gt;Μια λύση γι\'αυτό θα ήταν να προσθέσετε σε whitelist το &lt;b&gt;s.youtube.com&lt;/b&gt; ή να απενεργοποιήστε τους DNS/proxy blockers.</string> <string name="revanced_check_watch_history_domain_name_dialog_message">Το ιστορικό παρακολούθησης δεν αποθηκεύεται.&lt;br&gt;&lt;br&gt;Πιθανό να συμβαίνει λόγω αποκλεισμού διαφημίσεων μέσω DNS ή μέσω διακομιστή μεσολάβησης δικτύου.&lt;br&gt;&lt;br&gt;Μια λύση γι\'αυτό θα ήταν να προσθέσετε σε whitelist το &lt;b&gt;s.youtube.com&lt;/b&gt; ή να απενεργοποιήστε τους DNS/proxy blockers.</string>
<string name="revanced_check_watch_history_domain_name_dialog_ignore">Να μην εμφανιστεί ξανά</string> <string name="revanced_check_watch_history_domain_name_dialog_ignore">Να μην εμφανιστεί ξανά</string>
</patch> </patch>
<patch id="misc.settings.settingsResourcePatch"> <patch id="misc.settings.settingsResourcePatch">
<string name="revanced_settings_submenu_title">Ρυθμίσεις</string> <string name="revanced_settings_submenu_title">Ρυθμίσεις</string>
<string name="revanced_settings_confirm_user_dialog_title">Είστε βέβαιοι ότι θέλετε να συνεχίσετε;</string> <string name="revanced_settings_confirm_user_dialog_title">Είστε βέβαιοι ότι θέλετε να συνεχίσετε;</string>
<string name="revanced_settings_save">Αποθήκευση</string>
<string name="revanced_settings_reset">Επαναφορά</string> <string name="revanced_settings_reset">Επαναφορά</string>
<string name="revanced_settings_reset_color">Επαναφορά χρώματος</string> <string name="revanced_settings_reset_color">Επαναφορά χρώματος</string>
<string name="revanced_settings_color_invalid">Μη έγκυρο χρώμα</string> <string name="revanced_settings_color_invalid">Μη έγκυρο χρώμα</string>
@@ -164,6 +164,14 @@ Second \"item\" text"</string>
<string name="revanced_debug_logs_clear_buffer_title">Εκκαθάριση αρχείων καταγραφής εντοπισμού σφαλμάτων</string> <string name="revanced_debug_logs_clear_buffer_title">Εκκαθάριση αρχείων καταγραφής εντοπισμού σφαλμάτων</string>
<string name="revanced_debug_logs_clear_buffer_summary">Εκκαθάριση όλων των αποθηκευμένων αρχειών καταγραφής εντοπισμού σφαλμάτων ReVanced</string> <string name="revanced_debug_logs_clear_buffer_summary">Εκκαθάριση όλων των αποθηκευμένων αρχειών καταγραφής εντοπισμού σφαλμάτων ReVanced</string>
<string name="revanced_debug_logs_clear_toast">Τα αρχεία καταγραφής εκκαθαρίστηκαν</string> <string name="revanced_debug_logs_clear_toast">Τα αρχεία καταγραφής εκκαθαρίστηκαν</string>
<string name="revanced_debug_feature_flags_manager_title">Διαχειριστής σημαιών λειτουργιών</string>
<string name="revanced_debug_feature_flags_manager_summary">Διαχείριση των boolean σημαιών λειτουργιών</string>
<string name="revanced_debug_feature_flags_manager_active_header">Ενεργές σημαίες (%d)</string>
<string name="revanced_debug_feature_flags_manager_blocked_header">Αποκλεισμένες σημαίες (%d)</string>
<string name="revanced_debug_feature_flags_manager_search_hint">Αναζήτηση σημαιών...</string>
<string name="revanced_debug_feature_flags_manager_toast_saved">Οι σημαίες αποθηκεύτηκαν</string>
<string name="revanced_debug_feature_flags_manager_toast_reset">Οι σημαίες επαναφέρθηκαν</string>
<string name="revanced_debug_feature_flags_manager_toast_copied">Οι σημαίες αντιγράφηκαν στο πρόχειρο</string>
</patch> </patch>
<patch id="misc.privacy.sanitizeSharingLinksPatch"> <patch id="misc.privacy.sanitizeSharingLinksPatch">
<string name="revanced_sanitize_sharing_links_title">Καθαρισμός συνδέσμων κοινοποίησης</string> <string name="revanced_sanitize_sharing_links_title">Καθαρισμός συνδέσμων κοινοποίησης</string>
@@ -276,6 +284,9 @@ Second \"item\" text"</string>
<string name="revanced_hide_video_recommendation_labels_title">Ετικέτες προτάσεων βίντεο</string> <string name="revanced_hide_video_recommendation_labels_title">Ετικέτες προτάσεων βίντεο</string>
<string name="revanced_hide_video_recommendation_labels_summary_on">Κρυμμένες\n\nΑφορά τις ετικέτες «Άλλοι χρήστες παρακολούθησαν επίσης» και «Ενδέχεται επίσης να σας αρέσει» στα αποτελέσματα αναζήτησης</string> <string name="revanced_hide_video_recommendation_labels_summary_on">Κρυμμένες\n\nΑφορά τις ετικέτες «Άλλοι χρήστες παρακολούθησαν επίσης» και «Ενδέχεται επίσης να σας αρέσει» στα αποτελέσματα αναζήτησης</string>
<string name="revanced_hide_video_recommendation_labels_summary_off">Εμφανίζονται\n\nΑφορά τις ετικέτες «Άλλοι χρήστες παρακολούθησαν επίσης» και «Ενδέχεται επίσης να σας αρέσει» στα αποτελέσματα αναζήτησης</string> <string name="revanced_hide_video_recommendation_labels_summary_off">Εμφανίζονται\n\nΑφορά τις ετικέτες «Άλλοι χρήστες παρακολούθησαν επίσης» και «Ενδέχεται επίσης να σας αρέσει» στα αποτελέσματα αναζήτησης</string>
<string name="revanced_hide_visual_spacer_title">Οπτικό διαχωριστικό</string>
<string name="revanced_hide_visual_spacer_summary_on">Κρυμμένο</string>
<string name="revanced_hide_visual_spacer_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">Κρυμμένα\n\nΑφορά τις κινούμενες εικόνες YouTube Doodles στο λογότυπο</string> <string name="revanced_hide_doodles_summary_on">Κρυμμένα\n\nΑφορά τις κινούμενες εικόνες YouTube Doodles στο λογότυπο</string>
@@ -327,7 +338,7 @@ Second \"item\" text"</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_hype_points_title">Πόντοι Hype</string> <string name="revanced_hide_hype_points_title">Πόντοι Hype</string>
@@ -336,12 +347,21 @@ Second \"item\" text"</string>
<string name="revanced_hide_podcast_section_title">Ενότητα «Εξερευνήστε το podcast»</string> <string name="revanced_hide_podcast_section_title">Ενότητα «Εξερευνήστε το podcast»</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_featured_links_section_title">Ενότητα προτεινόμενων συνδέσμων</string>
<string name="revanced_hide_featured_links_section_summary_on">Κρυμμένη</string>
<string name="revanced_hide_featured_links_section_summary_off">Εμφανίζεται</string>
<string name="revanced_hide_featured_videos_section_title">Ενότητα προτεινόμενων βίντεο</string>
<string name="revanced_hide_featured_videos_section_summary_on">Κρυμμένη</string>
<string name="revanced_hide_featured_videos_section_summary_off">Εμφανίζεται</string>
<string name="revanced_hide_info_cards_section_title">Ενότητα καρτών πληροφοριών</string>
<string name="revanced_hide_info_cards_section_summary_on">Κρυμμένη</string> <string name="revanced_hide_info_cards_section_summary_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_subscribe_button_title">Κουμπί «Εγγραφή»</string>
<string name="revanced_hide_subscribe_button_summary_on">Κρυμμένο</string>
<string name="revanced_hide_subscribe_button_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>
@@ -363,24 +383,32 @@ Second \"item\" text"</string>
<string name="revanced_hide_filter_bar_feed_in_history_summary_off">Εμφανίζεται</string> <string name="revanced_hide_filter_bar_feed_in_history_summary_off">Εμφανίζεται</string>
<string name="revanced_channel_screen_title">Σελίδα καναλιού</string> <string name="revanced_channel_screen_title">Σελίδα καναλιού</string>
<string name="revanced_channel_screen_summary">Απόκρυψη ή εμφάνιση στοιχείων της σελίδας καναλιού</string> <string name="revanced_channel_screen_summary">Απόκρυψη ή εμφάνιση στοιχείων της σελίδας καναλιού</string>
<!-- 'Community' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_community_button_title">Κουμπί «Κοινότητα»</string>
<string name="revanced_hide_community_button_summary_on">Κρυμμένο</string>
<string name="revanced_hide_community_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>
<!-- 'Join' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_join_button_title">Κουμπί «Συμμετοχή»</string>
<string name="revanced_hide_join_button_summary_on">Κρυμμένο</string>
<string name="revanced_hide_join_button_summary_off">Εμφανίζεται</string>
<string name="revanced_hide_links_preview_title">Προεπισκόπηση συνδέσμων</string> <string name="revanced_hide_links_preview_title">Προεπισκόπηση συνδέσμων</string>
<string name="revanced_hide_links_preview_summary_on">Κρυμμένη</string> <string name="revanced_hide_links_preview_summary_on">Κρυμμένη</string>
<string name="revanced_hide_links_preview_summary_off">Εμφανίζεται</string> <string name="revanced_hide_links_preview_summary_off">Εμφανίζεται</string>
<string name="revanced_hide_members_shelf_title">Ενότητα μελών</string> <string name="revanced_hide_members_shelf_title">Ενότητα μελών</string>
<string name="revanced_hide_members_shelf_summary_on">Κρυμμένη</string> <string name="revanced_hide_members_shelf_summary_on">Κρυμμένη</string>
<string name="revanced_hide_members_shelf_summary_off">Εμφανίζεται</string> <string name="revanced_hide_members_shelf_summary_off">Εμφανίζεται</string>
<!-- 'Visit Community' should be translated with the same localized wording that YouTube displays. --> <!-- 'Store' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_visit_community_button_title">Κουμπί «Επισκεφτείτε την κοινότητα»</string> <string name="revanced_hide_store_button_title">Κουμπί «Κατάστημα»</string>
<string name="revanced_hide_visit_community_button_summary_on">Κρυμμένο</string> <string name="revanced_hide_store_button_summary_on">Κρυμμένο</string>
<string name="revanced_hide_visit_community_button_summary_off">Εμφανίζεται</string> <string name="revanced_hide_store_button_summary_off">Εμφανίζεται</string>
<!-- 'Visit store' should be translated with the same localized wording that YouTube displays. --> <!-- 'Subscribe' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_visit_store_button_title">Κουμπί «Επίσκεψη στο κατάστημα»</string> <string name="revanced_hide_subscribe_button_in_channel_page_title">Κουμπί «Εγγραφή»</string>
<string name="revanced_hide_visit_store_button_summary_on">Κρυμμένο</string> <string name="revanced_hide_subscribe_button_in_channel_page_summary_on">Κρυμμένο</string>
<string name="revanced_hide_visit_store_button_summary_off">Εμφανίζεται</string> <string name="revanced_hide_subscribe_button_in_channel_page_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_ai_chat_summary_title">Σύνοψη συζήτησης που δημιουργήθηκε από AI</string> <string name="revanced_hide_comments_ai_chat_summary_title">Σύνοψη συζήτησης που δημιουργήθηκε από AI</string>
@@ -522,11 +550,11 @@ 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 βίντεο εμφανίζεται. Πατήστε για να αντιγράψετε τη διεύθυνση URL του βίντεο. Πατήστε παρατεταμένα για να αντιγράψετε τη διεύθυνση URL με χρονική σήμανση</string>
<string name="revanced_copy_video_url_summary_off">Το κουμπί δεν εμφανίζεται</string> <string name="revanced_copy_video_url_summary_off">Το κουμπί αντιγραφής URL βίντεο δεν εμφανίζεται</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 με χρονική σήμανση εμφανίζεται. Πατήστε για να αντιγράψετε τη διεύθυνση URL του βίντεο με χρονική σήμανση. Πατήστε παρατεταμένα για να αντιγράψετε τη διεύθυνση URL χωρίς χρονική σήμανση</string>
<string name="revanced_copy_video_url_timestamp_summary_off">Το κουμπί δεν εμφανίζεται</string> <string name="revanced_copy_video_url_timestamp_summary_off">Το κουμπί αντιγραφής URL με χρονική σήμανση δεν εμφανίζεται</string>
</patch> </patch>
<patch id="interaction.dialog.removeViewerDiscretionDialogPatch"> <patch id="interaction.dialog.removeViewerDiscretionDialogPatch">
<string name="revanced_remove_viewer_discretion_dialog_title">Παράθυρο ηλικιακού περιορισμού</string> <string name="revanced_remove_viewer_discretion_dialog_title">Παράθυρο ηλικιακού περιορισμού</string>
@@ -667,7 +695,7 @@ Second \"item\" text"</string>
<string name="revanced_hide_download_button_summary_on">Κρυμμένο</string> <string name="revanced_hide_download_button_summary_on">Κρυμμένο</string>
<string name="revanced_hide_download_button_summary_off">Εμφανίζεται</string> <string name="revanced_hide_download_button_summary_off">Εμφανίζεται</string>
<!-- 'Hype' should be translated with the same localized wording that YouTube displays. <!-- 'Hype' should be translated with the same localized wording that YouTube displays.
This button only shows on videos uploaded by the logged in user. --> This button only shows on videos uploaded by the logged-in user. -->
<string name="revanced_hide_hype_button_title">Κουμπί «Hype»</string> <string name="revanced_hide_hype_button_title">Κουμπί «Hype»</string>
<string name="revanced_hide_hype_button_summary_on">Κρυμμένο</string> <string name="revanced_hide_hype_button_summary_on">Κρυμμένο</string>
<string name="revanced_hide_hype_button_summary_off">Εμφανίζεται</string> <string name="revanced_hide_hype_button_summary_off">Εμφανίζεται</string>
@@ -788,10 +816,11 @@ Second \"item\" text"</string>
<string name="revanced_hide_player_flyout_audio_track_title">Μενού «Κομμάτι ήχου»</string> <string name="revanced_hide_player_flyout_audio_track_title">Μενού «Κομμάτι ήχου»</string>
<string name="revanced_hide_player_flyout_audio_track_summary_on">Κρυμμένο</string> <string name="revanced_hide_player_flyout_audio_track_summary_on">Κρυμμένο</string>
<string name="revanced_hide_player_flyout_audio_track_summary_off">Εμφανίζεται</string> <string name="revanced_hide_player_flyout_audio_track_summary_off">Εμφανίζεται</string>
<!-- 'Spoof video streams' should be the same translation used for 'revanced_spoof_video_streams_screen_title'. --> <!-- 'Spoof video streams' should be the same translation used for 'revanced_spoof_video_streams_screen_title'.
'Android No SDK' must be kept untranslated. -->
<string name="revanced_hide_player_flyout_audio_track_not_available">"Κρυμμένο <string name="revanced_hide_player_flyout_audio_track_not_available">"Κρυμμένο
Για να εμφανίζεται το μενού κομματιού ήχου, αλλάξτε την «Παραποίηση ροών βίντεο» σε iPadOS"</string> Για να εμφανίζεται το μενού κομματιού ήχου, αλλάξτε την «Παραποίηση ροών βίντεο» σε 'Android No SDK'"</string>
<!-- 'Watch in VR' should be translated using the same localized wording YouTube displays for the menu item. --> <!-- 'Watch in VR' should be translated using the same localized wording YouTube displays for the menu item. -->
<string name="revanced_hide_player_flyout_watch_in_vr_title">Μενού «Προβολή σε VR»</string> <string name="revanced_hide_player_flyout_watch_in_vr_title">Μενού «Προβολή σε VR»</string>
<string name="revanced_hide_player_flyout_watch_in_vr_summary_on">Κρυμμένο</string> <string name="revanced_hide_player_flyout_watch_in_vr_summary_on">Κρυμμένο</string>
@@ -867,6 +896,9 @@ Second \"item\" text"</string>
<string name="revanced_hide_shorts_history_title">Shorts στο ιστορικό παρακολούθησης</string> <string name="revanced_hide_shorts_history_title">Shorts στο ιστορικό παρακολούθησης</string>
<string name="revanced_hide_shorts_history_summary_on">Κρυμμένα</string> <string name="revanced_hide_shorts_history_summary_on">Κρυμμένα</string>
<string name="revanced_hide_shorts_history_summary_off">Εμφανίζονται</string> <string name="revanced_hide_shorts_history_summary_off">Εμφανίζονται</string>
<string name="revanced_hide_shorts_auto_dubbed_label_title">Ετικέτα αυτόματης μεταγλώττισης</string>
<string name="revanced_hide_shorts_auto_dubbed_label_summary_on">Κρυμμένη</string>
<string name="revanced_hide_shorts_auto_dubbed_label_summary_off">Εμφανίζεται</string>
<string name="revanced_hide_shorts_super_thanks_button_title">Κουμπί «Αγορά Super Thanks»</string> <string name="revanced_hide_shorts_super_thanks_button_title">Κουμπί «Αγορά Super Thanks»</string>
<string name="revanced_hide_shorts_super_thanks_button_summary_on">Κρυμμένο</string> <string name="revanced_hide_shorts_super_thanks_button_summary_on">Κρυμμένο</string>
<string name="revanced_hide_shorts_super_thanks_button_summary_off">Εμφανίζεται</string> <string name="revanced_hide_shorts_super_thanks_button_summary_off">Εμφανίζεται</string>
@@ -883,6 +915,9 @@ Second \"item\" text"</string>
<string name="revanced_hide_shorts_join_button_title">Κουμπί «Συμμετοχή»</string> <string name="revanced_hide_shorts_join_button_title">Κουμπί «Συμμετοχή»</string>
<string name="revanced_hide_shorts_join_button_summary_on">Κρυμμένο</string> <string name="revanced_hide_shorts_join_button_summary_on">Κρυμμένο</string>
<string name="revanced_hide_shorts_join_button_summary_off">Εμφανίζεται</string> <string name="revanced_hide_shorts_join_button_summary_off">Εμφανίζεται</string>
<string name="revanced_hide_shorts_live_preview_title">Προεπισκόπηση live</string>
<string name="revanced_hide_shorts_live_preview_summary_on">Κρυμμένη</string>
<string name="revanced_hide_shorts_live_preview_summary_off">Εμφανίζεται</string>
<string name="revanced_hide_shorts_location_label_title">Ετικέτα τοποθεσίας</string> <string name="revanced_hide_shorts_location_label_title">Ετικέτα τοποθεσίας</string>
<string name="revanced_hide_shorts_location_label_summary_on">Κρυμμένη</string> <string name="revanced_hide_shorts_location_label_summary_on">Κρυμμένη</string>
<string name="revanced_hide_shorts_location_label_summary_off">Εμφανίζεται</string> <string name="revanced_hide_shorts_location_label_summary_off">Εμφανίζεται</string>
@@ -1559,13 +1594,13 @@ Second \"item\" text"</string>
</patch> </patch>
<patch id="video.speed.button.playbackSpeedButtonPatch"> <patch id="video.speed.button.playbackSpeedButtonPatch">
<string name="revanced_playback_speed_dialog_button_title">Εμφάνιση κουμπιού αλλαγής ταχύτητας</string> <string name="revanced_playback_speed_dialog_button_title">Εμφάνιση κουμπιού αλλαγής ταχύτητας</string>
<string name="revanced_playback_speed_dialog_button_summary_on">Το κουμπί εμφανίζεται. Πατήστε παρατεταμένα για επαναφορά της ταχύτητας αναπαραγωγής στην προεπιλογή</string> <string name="revanced_playback_speed_dialog_button_summary_on">Το κουμπί αλλαγής ταχύτητας εμφανίζεται. Πατήστε παρατεταμένα για επαναφορά της ταχύτητας αναπαραγωγής στην προεπιλογή</string>
<string name="revanced_playback_speed_dialog_button_summary_off">Το κουμπί δεν εμφανίζεται</string> <string name="revanced_playback_speed_dialog_button_summary_off">Το κουμπί αλλαγής ταχύτητας δεν εμφανίζεται</string>
</patch> </patch>
<patch id="video.quality.button.videoQualityDialogButtonPatch"> <patch id="video.quality.button.videoQualityDialogButtonPatch">
<string name="revanced_video_quality_dialog_button_title">Εμφάνιση κουμπιού αλλαγής ποιότητας βίντεο</string> <string name="revanced_video_quality_dialog_button_title">Εμφάνιση κουμπιού αλλαγής ποιότητας βίντεο</string>
<string name="revanced_video_quality_dialog_button_summary_on">Το κουμπί εμφανίζεται. Πατήστε παρατεταμένα για επαναφορά της ποιότητας στην προεπιλογή</string> <string name="revanced_video_quality_dialog_button_summary_on">Το κουμπί ποιότητας βίντεο εμφανίζεται. Πατήστε παρατεταμένα για επαναφορά της ποιότητας στην προεπιλογή</string>
<string name="revanced_video_quality_dialog_button_summary_off">Το κουμπί δεν εμφανίζεται</string> <string name="revanced_video_quality_dialog_button_summary_off">Το κουμπί ποιότητας βίντεο δεν εμφανίζεται</string>
</patch> </patch>
<patch id="video.speed.custom.customPlaybackSpeedPatch"> <patch id="video.speed.custom.customPlaybackSpeedPatch">
<string name="revanced_custom_speed_menu_title">Μενού προσαρμοσμένης ταχύτητας αναπαραγωγής</string> <string name="revanced_custom_speed_menu_title">Μενού προσαρμοσμένης ταχύτητας αναπαραγωγής</string>
@@ -1662,16 +1697,30 @@ Second \"item\" text"</string>
<string name="revanced_music_play_permanent_repeat_summary_on">Η μόνιμη επανάληψη είναι ενεργοποιημένη</string> <string name="revanced_music_play_permanent_repeat_summary_on">Η μόνιμη επανάληψη είναι ενεργοποιημένη</string>
<string name="revanced_music_play_permanent_repeat_summary_off">Η μόνιμη επανάληψη είναι απενεργοποιημένη</string> <string name="revanced_music_play_permanent_repeat_summary_off">Η μόνιμη επανάληψη είναι απενεργοποιημένη</string>
</patch> </patch>
<patch id="layout.castbutton.hideCastButton"> <patch id="layout.buttons.hideButtons">
<string name="revanced_music_hide_cast_button_title">Κουμπί μετάδοσης</string> <string name="revanced_music_hide_cast_button_title">Κουμπί μετάδοσης</string>
<string name="revanced_music_hide_cast_button_summary_on">Κρυμμένο</string> <string name="revanced_music_hide_cast_button_summary_on">Κρυμμένο</string>
<string name="revanced_music_hide_cast_button_summary_off">Εμφανίζεται</string> <string name="revanced_music_hide_cast_button_summary_off">Εμφανίζεται</string>
<string name="revanced_music_hide_history_button_title">Κουμπί ιστορικού</string>
<string name="revanced_music_hide_history_button_summary_on">Κρυμμένο</string>
<string name="revanced_music_hide_history_button_summary_off">Εμφανίζεται</string>
<string name="revanced_music_hide_notification_button_title">Κουμπί ειδοποιήσεων</string>
<string name="revanced_music_hide_notification_button_summary_on">Κρυμμένο</string>
<string name="revanced_music_hide_notification_button_summary_off">Εμφανίζεται</string>
<string name="revanced_music_hide_search_button_title">Κουμπί αναζήτησης</string>
<string name="revanced_music_hide_search_button_summary_on">Κρυμμένο</string>
<string name="revanced_music_hide_search_button_summary_off">Εμφανίζεται</string>
</patch> </patch>
<patch id="layout.compactheader.hideCategoryBar"> <patch id="layout.compactheader.hideCategoryBar">
<string name="revanced_music_hide_category_bar_title">Γραμμή κατηγοριών</string> <string name="revanced_music_hide_category_bar_title">Γραμμή κατηγοριών</string>
<string name="revanced_music_hide_category_bar_summary_on">Κρυμμένη</string> <string name="revanced_music_hide_category_bar_summary_on">Κρυμμένη</string>
<string name="revanced_music_hide_category_bar_summary_off">Εμφανίζεται</string> <string name="revanced_music_hide_category_bar_summary_off">Εμφανίζεται</string>
</patch> </patch>
<patch id="layout.miniplayercolor.changeMiniplayerColor">
<string name="revanced_music_change_miniplayer_color_title">Αλλαγή χρώματος ελαχιστοποιημένης οθόνης αναπαραγωγής</string>
<string name="revanced_music_change_miniplayer_color_summary_on">Το χρώμα της ελαχιστοποιημένης οθόνης αναπαραγωγής ταιριάζει με αυτό της οθόνης αναπαραγωγής πλήρους οθόνης</string>
<string name="revanced_music_change_miniplayer_color_summary_off">Η ελαχιστοποιημένη οθόνη αναπαραγωγής χρησιμοποιεί το προεπιλεγμένο χρώμα</string>
</patch>
<patch id="layout.navigationbar.navigationBarPatch"> <patch id="layout.navigationbar.navigationBarPatch">
<string name="revanced_music_navigation_bar_screen_title">Γραμμή πλοήγησης</string> <string name="revanced_music_navigation_bar_screen_title">Γραμμή πλοήγησης</string>
<string name="revanced_music_navigation_bar_screen_summary">Απόκρυψη ή αλλαγή κουμπιών της γραμμής πλοήγησης</string> <string name="revanced_music_navigation_bar_screen_summary">Απόκρυψη ή αλλαγή κουμπιών της γραμμής πλοήγησης</string>

View File

@@ -1,5 +1,4 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<!-- Copyright 2024 ReVanced. See https://github.com/ReVanced/revanced-branding -->
<!-- <!--
All strings must have a unique path, even if the same string is declared in two different apps. All strings must have a unique path, even if the same string is declared in two different apps.
@@ -45,13 +44,14 @@ Second \"item\" text"</string>
<string name="revanced_check_environment_not_near_patch_time_invalid">La fecha de compilación del APK está corrupta</string> <string name="revanced_check_environment_not_near_patch_time_invalid">La fecha de compilación del APK está corrupta</string>
</patch> </patch>
<patch id="misc.dns.checkWatchHistoryDomainNameResolutionPatch"> <patch id="misc.dns.checkWatchHistoryDomainNameResolutionPatch">
<string name="revanced_check_watch_history_domain_name_dialog_title">Advertencia</string> <string name="revanced_check_watch_history_domain_name_dialog_title">Aviso de ReVanced</string>
<string name="revanced_check_watch_history_domain_name_dialog_message">Tu historial no está siendo guardado.&lt;br&gt;&lt;br&gt;Esto puede ser por un bloqueador de anuncios DNS o Proxy.&lt;br&gt;&lt;br&gt;Para arreglarlo, permita el dominio &lt;b&gt;s.youtube.com&lt;/b&gt; o desactive el bloqueador DNS o Proxy.</string> <string name="revanced_check_watch_history_domain_name_dialog_message">Tu historial no está siendo guardado.&lt;br&gt;&lt;br&gt;Esto puede ser por un bloqueador de anuncios DNS o Proxy.&lt;br&gt;&lt;br&gt;Para arreglarlo, permita el dominio &lt;b&gt;s.youtube.com&lt;/b&gt; o desactive el bloqueador DNS o Proxy.</string>
<string name="revanced_check_watch_history_domain_name_dialog_ignore">No mostrar de nuevo</string> <string name="revanced_check_watch_history_domain_name_dialog_ignore">No mostrar de nuevo</string>
</patch> </patch>
<patch id="misc.settings.settingsResourcePatch"> <patch id="misc.settings.settingsResourcePatch">
<string name="revanced_settings_submenu_title">Ajustes</string> <string name="revanced_settings_submenu_title">Ajustes</string>
<string name="revanced_settings_confirm_user_dialog_title">¿Estás seguro de que quieres continuar?</string> <string name="revanced_settings_confirm_user_dialog_title">¿Estás seguro de que quieres continuar?</string>
<string name="revanced_settings_save">Guardar</string>
<string name="revanced_settings_reset">Restablecer</string> <string name="revanced_settings_reset">Restablecer</string>
<string name="revanced_settings_reset_color">Restablecer color</string> <string name="revanced_settings_reset_color">Restablecer color</string>
<string name="revanced_settings_color_invalid">Color no válido</string> <string name="revanced_settings_color_invalid">Color no válido</string>
@@ -164,6 +164,14 @@ No se le notificará de ningún evento inesperado."</string>
<string name="revanced_debug_logs_clear_buffer_title">Borrar registros de depuración</string> <string name="revanced_debug_logs_clear_buffer_title">Borrar registros de depuración</string>
<string name="revanced_debug_logs_clear_buffer_summary">Borra todos los registros de depuración de ReVanced almacenados</string> <string name="revanced_debug_logs_clear_buffer_summary">Borra todos los registros de depuración de ReVanced almacenados</string>
<string name="revanced_debug_logs_clear_toast">Registros borrados</string> <string name="revanced_debug_logs_clear_toast">Registros borrados</string>
<string name="revanced_debug_feature_flags_manager_title">Manager de indicadores de funciones</string>
<string name="revanced_debug_feature_flags_manager_summary">Gestionar indicadores de funciones booleanos</string>
<string name="revanced_debug_feature_flags_manager_active_header">Banderas activas (%d)</string>
<string name="revanced_debug_feature_flags_manager_blocked_header">Banderas bloqueadas (%d)</string>
<string name="revanced_debug_feature_flags_manager_search_hint">Buscar banderas...</string>
<string name="revanced_debug_feature_flags_manager_toast_saved">Banderas guardadas</string>
<string name="revanced_debug_feature_flags_manager_toast_reset">Banderas restablecidas</string>
<string name="revanced_debug_feature_flags_manager_toast_copied">Banderas copiadas al portapapeles</string>
</patch> </patch>
<patch id="misc.privacy.sanitizeSharingLinksPatch"> <patch id="misc.privacy.sanitizeSharingLinksPatch">
<string name="revanced_sanitize_sharing_links_title">Sanear enlaces compartidos</string> <string name="revanced_sanitize_sharing_links_title">Sanear enlaces compartidos</string>
@@ -274,6 +282,9 @@ Sin embargo, si activas esto, también se registrarán algunos datos del usuario
<string name="revanced_hide_video_recommendation_labels_title">Ocultar etiquetas de recomendación de vídeo</string> <string name="revanced_hide_video_recommendation_labels_title">Ocultar etiquetas de recomendación de vídeo</string>
<string name="revanced_hide_video_recommendation_labels_summary_on">Las etiquetas \"La gente también vio\" y \"También te puede gustar\" en los resultados de búsqueda están ocultas</string> <string name="revanced_hide_video_recommendation_labels_summary_on">Las etiquetas \"La gente también vio\" y \"También te puede gustar\" en los resultados de búsqueda están ocultas</string>
<string name="revanced_hide_video_recommendation_labels_summary_off">Las etiquetas \"La gente también vio\" y \"También te puede gustar\" en los resultados de búsqueda son visibles</string> <string name="revanced_hide_video_recommendation_labels_summary_off">Las etiquetas \"La gente también vio\" y \"También te puede gustar\" en los resultados de búsqueda son visibles</string>
<string name="revanced_hide_visual_spacer_title">Ocultar espaciador visual</string>
<string name="revanced_hide_visual_spacer_summary_on">El espaciador visual está oculto</string>
<string name="revanced_hide_visual_spacer_summary_off">El espaciador visual está visible</string>
<!-- https://logos.fandom.com/wiki/YouTube/Yoodles --> <!-- https://logos.fandom.com/wiki/YouTube/Yoodles -->
<string name="revanced_hide_doodles_title">Ocultar YouTube Doodles</string> <string name="revanced_hide_doodles_title">Ocultar YouTube Doodles</string>
<string name="revanced_hide_doodles_summary_on">La animación de los Doodles de YouTube en el logotipo está oculta</string> <string name="revanced_hide_doodles_summary_on">La animación de los Doodles de YouTube en el logotipo está oculta</string>
@@ -334,12 +345,21 @@ Si un doodle se está mostrando actualmente en tu región y este ajuste de ocult
<string name="revanced_hide_podcast_section_title">Ocultar \"Explora el pódcast\"</string> <string name="revanced_hide_podcast_section_title">Ocultar \"Explora el pódcast\"</string>
<string name="revanced_hide_podcast_section_summary_on">La sección Explora el pódcast está oculta</string> <string name="revanced_hide_podcast_section_summary_on">La sección Explora el pódcast está oculta</string>
<string name="revanced_hide_podcast_section_summary_off">Se muestra la sección Explora el pódcast</string> <string name="revanced_hide_podcast_section_summary_off">Se muestra la sección Explora el pódcast</string>
<string name="revanced_hide_featured_links_section_title">Ocultar enlaces destacados</string>
<string name="revanced_hide_featured_links_section_summary_on">La sección de enlaces destacados está oculta</string>
<string name="revanced_hide_featured_links_section_summary_off">La sección de enlaces destacados es visible</string>
<string name="revanced_hide_featured_videos_section_title">Ocultar vídeos destacados</string>
<string name="revanced_hide_featured_videos_section_summary_on">La sección de vídeos destacados está oculta</string>
<string name="revanced_hide_featured_videos_section_summary_off">La sección de vídeos destacados es visible</string>
<string name="revanced_hide_info_cards_section_title">Ocultar tarjetas de información</string> <string name="revanced_hide_info_cards_section_title">Ocultar tarjetas de información</string>
<string name="revanced_hide_info_cards_section_summary_on">La sección de tarjetas de información está oculta</string> <string name="revanced_hide_info_cards_section_summary_on">La sección de tarjetas de información está oculta</string>
<string name="revanced_hide_info_cards_section_summary_off">Se muestra la sección de tarjetas de información</string> <string name="revanced_hide_info_cards_section_summary_off">Se muestra la sección de tarjetas de información</string>
<string name="revanced_hide_key_concepts_section_title">Ocultar \"Conceptos clave\"</string> <string name="revanced_hide_key_concepts_section_title">Ocultar \"Conceptos clave\"</string>
<string name="revanced_hide_key_concepts_section_summary_on">La sección Conceptos clave está oculta</string> <string name="revanced_hide_key_concepts_section_summary_on">La sección Conceptos clave está oculta</string>
<string name="revanced_hide_key_concepts_section_summary_off">Se muestra la sección Conceptos clave</string> <string name="revanced_hide_key_concepts_section_summary_off">Se muestra la sección Conceptos clave</string>
<string name="revanced_hide_subscribe_button_title">Ocultar botón de Suscribirse</string>
<string name="revanced_hide_subscribe_button_summary_on">El botón de Suscribirse está oculto</string>
<string name="revanced_hide_subscribe_button_summary_off">El botón de Suscribirse es visible</string>
<string name="revanced_hide_transcript_section_title">Ocultar transcripción</string> <string name="revanced_hide_transcript_section_title">Ocultar transcripción</string>
<string name="revanced_hide_transcript_section_summary_on">La sección transcripción está oculta</string> <string name="revanced_hide_transcript_section_summary_on">La sección transcripción está oculta</string>
<string name="revanced_hide_transcript_section_summary_off">Se muestra la sección transcripción</string> <string name="revanced_hide_transcript_section_summary_off">Se muestra la sección transcripción</string>
@@ -361,24 +381,32 @@ Si un doodle se está mostrando actualmente en tu región y este ajuste de ocult
<string name="revanced_hide_filter_bar_feed_in_history_summary_off">Mostrado en el historial de reproducciones</string> <string name="revanced_hide_filter_bar_feed_in_history_summary_off">Mostrado en el historial de reproducciones</string>
<string name="revanced_channel_screen_title">Página del canal</string> <string name="revanced_channel_screen_title">Página del canal</string>
<string name="revanced_channel_screen_summary">Ocultar o mostrar componentes de la página del canal</string> <string name="revanced_channel_screen_summary">Ocultar o mostrar componentes de la página del canal</string>
<!-- 'Community' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_community_button_title">Ocultar botón de Comunidad</string>
<string name="revanced_hide_community_button_summary_on">El botón de la comunidad está oculto</string>
<string name="revanced_hide_community_button_summary_off">El botón de la comunidad es visible</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">Ocultar la sección \"Para ti\"</string> <string name="revanced_hide_for_you_shelf_title">Ocultar la sección \"Para ti\"</string>
<string name="revanced_hide_for_you_shelf_summary_on">La estantería \"Para ti\" está oculta</string> <string name="revanced_hide_for_you_shelf_summary_on">La estantería \"Para ti\" está oculta</string>
<string name="revanced_hide_for_you_shelf_summary_off">La estantería \"Para ti\" es visible</string> <string name="revanced_hide_for_you_shelf_summary_off">La estantería \"Para ti\" es visible</string>
<!-- 'Join' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_join_button_title">Ocultar el botón \"Unirse\"</string>
<string name="revanced_hide_join_button_summary_on">El botón Unirse está oculto</string>
<string name="revanced_hide_join_button_summary_off">El botón Unirse es visible</string>
<string name="revanced_hide_links_preview_title">Ocultar vista previa de enlaces</string> <string name="revanced_hide_links_preview_title">Ocultar vista previa de enlaces</string>
<string name="revanced_hide_links_preview_summary_on">La vista previa de enlaces está oculta</string> <string name="revanced_hide_links_preview_summary_on">La vista previa de enlaces está oculta</string>
<string name="revanced_hide_links_preview_summary_off">Vista previa de enlaces visible</string> <string name="revanced_hide_links_preview_summary_off">Vista previa de enlaces visible</string>
<string name="revanced_hide_members_shelf_title">Ocultar estantería de miembros</string> <string name="revanced_hide_members_shelf_title">Ocultar estantería de miembros</string>
<string name="revanced_hide_members_shelf_summary_on">La estantería de miembros está oculta</string> <string name="revanced_hide_members_shelf_summary_on">La estantería de miembros está oculta</string>
<string name="revanced_hide_members_shelf_summary_off">La estantería de miembros se muestra</string> <string name="revanced_hide_members_shelf_summary_off">La estantería de miembros se muestra</string>
<!-- 'Visit Community' should be translated with the same localized wording that YouTube displays. --> <!-- 'Store' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_visit_community_button_title">Ocultar el botón \"Visitar comunidad\"</string> <string name="revanced_hide_store_button_title">Ocultar el botón Tienda</string>
<string name="revanced_hide_visit_community_button_summary_on">El botón Visitar comunidad está oculto</string> <string name="revanced_hide_store_button_summary_on">El botón Tienda está oculto</string>
<string name="revanced_hide_visit_community_button_summary_off">El botón \"Visitar comunidad\" es visible</string> <string name="revanced_hide_store_button_summary_off">El botón Tienda es visible</string>
<!-- 'Visit store' should be translated with the same localized wording that YouTube displays. --> <!-- 'Subscribe' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_visit_store_button_title">Ocultar el botón \'Visitar tienda\' en las páginas del canal</string> <string name="revanced_hide_subscribe_button_in_channel_page_title">Ocultar el botón Suscribirse</string>
<string name="revanced_hide_visit_store_button_summary_on">El botón \"Visitar tienda\" está oculto</string> <string name="revanced_hide_subscribe_button_in_channel_page_summary_on">El botón Suscribirse está oculto</string>
<string name="revanced_hide_visit_store_button_summary_off">El botón \"Visitar tienda\" es visible</string> <string name="revanced_hide_subscribe_button_in_channel_page_summary_off">El botón Suscribirse es visible</string>
<string name="revanced_comments_screen_title">Comentarios</string> <string name="revanced_comments_screen_title">Comentarios</string>
<string name="revanced_comments_screen_summary">Ocultar o mostrar los componentes de sección de comentarios</string> <string name="revanced_comments_screen_summary">Ocultar o mostrar los componentes de sección de comentarios</string>
<string name="revanced_hide_comments_ai_chat_summary_title">Ocultar resumen de chat de IA</string> <string name="revanced_hide_comments_ai_chat_summary_title">Ocultar resumen de chat de IA</string>
@@ -520,11 +548,11 @@ Esta función solo está disponible para dispositivos antiguos"</string>
<string name="revanced_share_copy_url_success">URL copiada al portapapeles</string> <string name="revanced_share_copy_url_success">URL copiada al portapapeles</string>
<string name="revanced_share_copy_url_timestamp_success">URL con marca de tiempo copiada</string> <string name="revanced_share_copy_url_timestamp_success">URL con marca de tiempo copiada</string>
<string name="revanced_copy_video_url_title">Mostrar botón URL de copia de vídeo</string> <string name="revanced_copy_video_url_title">Mostrar botón URL de copia de vídeo</string>
<string name="revanced_copy_video_url_summary_on">El botón se muestra. Toca para copiar la URL del vídeo. Toca y mantén pulsado para copiar con la marca de tiempo</string> <string name="revanced_copy_video_url_summary_on">El botón Copiar URL del vídeo es visible. Toca para copiar la URL del vídeo. Mantén pulsado para copiar con marca de tiempo</string>
<string name="revanced_copy_video_url_summary_off">El botón no se muestra</string> <string name="revanced_copy_video_url_summary_off">El botón Copiar URL del vídeo no es visible</string>
<string name="revanced_copy_video_url_timestamp_title">Mostrar botón URL de la marca de tiempo</string> <string name="revanced_copy_video_url_timestamp_title">Mostrar botón URL de la marca de tiempo</string>
<string name="revanced_copy_video_url_timestamp_summary_on">El botón se muestra. Toca para copiar la URL del vídeo con la marca de tiempo. Toca y mantén pulsado para copiar sin la marca de tiempo</string> <string name="revanced_copy_video_url_timestamp_summary_on">El botón Copiar URL con marca de tiempo es visible. Toca para copiar la URL del vídeo con marca de tiempo. Mantén pulsado para copiar sin marca de tiempo</string>
<string name="revanced_copy_video_url_timestamp_summary_off">El botón no se muestra</string> <string name="revanced_copy_video_url_timestamp_summary_off">El botón Copiar URL con marca de tiempo no es visible</string>
</patch> </patch>
<patch id="interaction.dialog.removeViewerDiscretionDialogPatch"> <patch id="interaction.dialog.removeViewerDiscretionDialogPatch">
<string name="revanced_remove_viewer_discretion_dialog_title">Eliminar diálogo de discreción del espectador</string> <string name="revanced_remove_viewer_discretion_dialog_title">Eliminar diálogo de discreción del espectador</string>
@@ -533,7 +561,7 @@ Esta función solo está disponible para dispositivos antiguos"</string>
<string name="revanced_remove_viewer_discretion_dialog_user_dialog_message">Esto no evita la restricción de edad. Solo la acepta automáticamente.</string> <string name="revanced_remove_viewer_discretion_dialog_user_dialog_message">Esto no evita la restricción de edad. Solo la acepta automáticamente.</string>
</patch> </patch>
<patch id="layout.hide.signintotv.disableSignInToTvPopupPatch"> <patch id="layout.hide.signintotv.disableSignInToTvPopupPatch">
<string name="revanced_disable_signin_to_tv_popup_title">Desactivar la ventana emergente de Iniciar sesión en TV</string> <string name="revanced_disable_signin_to_tv_popup_title">Desactivar la ventana emergente \"Iniciar sesión en TV\"</string>
<string name="revanced_disable_signin_to_tv_popup_summary_on">La ventana emergente de Iniciar sesión en TV está desactivada</string> <string name="revanced_disable_signin_to_tv_popup_summary_on">La ventana emergente de Iniciar sesión en TV está desactivada</string>
<string name="revanced_disable_signin_to_tv_popup_summary_off">La ventana emergente de Iniciar sesión en TV está activada</string> <string name="revanced_disable_signin_to_tv_popup_summary_off">La ventana emergente de Iniciar sesión en TV está activada</string>
</patch> </patch>
@@ -665,7 +693,7 @@ Ajusta el volumen deslizando verticalmente en el lado derecho de la pantalla"</s
<string name="revanced_hide_download_button_summary_on">El botón de descarga está oculto</string> <string name="revanced_hide_download_button_summary_on">El botón de descarga está oculto</string>
<string name="revanced_hide_download_button_summary_off">Se muestra el botón de descarga</string> <string name="revanced_hide_download_button_summary_off">Se muestra el botón de descarga</string>
<!-- 'Hype' should be translated with the same localized wording that YouTube displays. <!-- 'Hype' should be translated with the same localized wording that YouTube displays.
This button only shows on videos uploaded by the logged in user. --> This button only shows on videos uploaded by the logged-in user. -->
<string name="revanced_hide_hype_button_title">Ocultar Hype</string> <string name="revanced_hide_hype_button_title">Ocultar Hype</string>
<string name="revanced_hide_hype_button_summary_on">El botón Hype está oculto</string> <string name="revanced_hide_hype_button_summary_on">El botón Hype está oculto</string>
<string name="revanced_hide_hype_button_summary_off">El botón de hype es visible</string> <string name="revanced_hide_hype_button_summary_off">El botón de hype es visible</string>
@@ -786,10 +814,11 @@ Si cambiar este ajuste no tiene efecto, intenta cambiar al modo incógnito."</st
<string name="revanced_hide_player_flyout_audio_track_title">Ocultar pista de audio</string> <string name="revanced_hide_player_flyout_audio_track_title">Ocultar pista de audio</string>
<string name="revanced_hide_player_flyout_audio_track_summary_on">El menú de pista de audio está oculto</string> <string name="revanced_hide_player_flyout_audio_track_summary_on">El menú de pista de audio está oculto</string>
<string name="revanced_hide_player_flyout_audio_track_summary_off">El menú de pista de audio se muestra</string> <string name="revanced_hide_player_flyout_audio_track_summary_off">El menú de pista de audio se muestra</string>
<!-- 'Spoof video streams' should be the same translation used for 'revanced_spoof_video_streams_screen_title'. --> <!-- 'Spoof video streams' should be the same translation used for 'revanced_spoof_video_streams_screen_title'.
'Android No SDK' must be kept untranslated. -->
<string name="revanced_hide_player_flyout_audio_track_not_available">"El menú de la pista de audio está oculto <string name="revanced_hide_player_flyout_audio_track_not_available">"El menú de la pista de audio está oculto
Para mostrar el menú de la pista de audio, cambia 'Suplantar transmisiones de video' a iPadOS"</string> Para mostrar el menú de la pista de audio, cambia 'Suplantar transmisiones de video' a 'Android No SDK'"</string>
<!-- 'Watch in VR' should be translated using the same localized wording YouTube displays for the menu item. --> <!-- 'Watch in VR' should be translated using the same localized wording YouTube displays for the menu item. -->
<string name="revanced_hide_player_flyout_watch_in_vr_title">Ocultar reloj en VR</string> <string name="revanced_hide_player_flyout_watch_in_vr_title">Ocultar reloj en VR</string>
<string name="revanced_hide_player_flyout_watch_in_vr_summary_on">Ver en el menú VR está oculto</string> <string name="revanced_hide_player_flyout_watch_in_vr_summary_on">Ver en el menú VR está oculto</string>
@@ -865,13 +894,16 @@ Para mostrar el menú de la pista de audio, cambia 'Suplantar transmisiones de v
<string name="revanced_hide_shorts_history_title">Ocultar Shorts en el historial de visualización</string> <string name="revanced_hide_shorts_history_title">Ocultar Shorts en el historial de visualización</string>
<string name="revanced_hide_shorts_history_summary_on">Oculto en el historial de visualización</string> <string name="revanced_hide_shorts_history_summary_on">Oculto en el historial de visualización</string>
<string name="revanced_hide_shorts_history_summary_off">Mostrado en el historial de visualización</string> <string name="revanced_hide_shorts_history_summary_off">Mostrado en el historial de visualización</string>
<string name="revanced_hide_shorts_super_thanks_button_title">Ocultar el botón Comprar Súper Gracias</string> <string name="revanced_hide_shorts_auto_dubbed_label_title">Ocultar la etiqueta \"Doblado automáticamente\"</string>
<string name="revanced_hide_shorts_auto_dubbed_label_summary_on">La etiqueta de doblaje automático está oculta</string>
<string name="revanced_hide_shorts_auto_dubbed_label_summary_off">La etiqueta de doblaje automático está visible</string>
<string name="revanced_hide_shorts_super_thanks_button_title">Ocultar el botón \"Comprar Super Gracias\"</string>
<string name="revanced_hide_shorts_super_thanks_button_summary_on">El botón Comprar Super Thanks está oculto</string> <string name="revanced_hide_shorts_super_thanks_button_summary_on">El botón Comprar Super Thanks está oculto</string>
<string name="revanced_hide_shorts_super_thanks_button_summary_off">El botón Comprar Super Thanks es visible</string> <string name="revanced_hide_shorts_super_thanks_button_summary_off">El botón Comprar Super Thanks es visible</string>
<string name="revanced_hide_shorts_effect_button_title">Ocultar botón de efecto</string> <string name="revanced_hide_shorts_effect_button_title">Ocultar botón de efecto</string>
<string name="revanced_hide_shorts_effect_button_summary_on">El botón de efecto está oculto</string> <string name="revanced_hide_shorts_effect_button_summary_on">El botón de efecto está oculto</string>
<string name="revanced_hide_shorts_effect_button_summary_off">El botón de efecto es visible</string> <string name="revanced_hide_shorts_effect_button_summary_off">El botón de efecto es visible</string>
<string name="revanced_hide_shorts_green_screen_button_title">Ocultar el botón Pantalla verde</string> <string name="revanced_hide_shorts_green_screen_button_title">Ocultar el botón \"Pantalla verde\"</string>
<string name="revanced_hide_shorts_green_screen_button_summary_on">El botón verde de pantalla está oculto</string> <string name="revanced_hide_shorts_green_screen_button_summary_on">El botón verde de pantalla está oculto</string>
<string name="revanced_hide_shorts_green_screen_button_summary_off">Se muestra el botón verde de pantalla</string> <string name="revanced_hide_shorts_green_screen_button_summary_off">Se muestra el botón verde de pantalla</string>
<string name="revanced_hide_shorts_hashtag_button_title">Ocultar botón de hashtag</string> <string name="revanced_hide_shorts_hashtag_button_title">Ocultar botón de hashtag</string>
@@ -881,10 +913,13 @@ Para mostrar el menú de la pista de audio, cambia 'Suplantar transmisiones de v
<string name="revanced_hide_shorts_join_button_title">Ocultar el botón Unirse</string> <string name="revanced_hide_shorts_join_button_title">Ocultar el botón Unirse</string>
<string name="revanced_hide_shorts_join_button_summary_on">Botón de unión oculto</string> <string name="revanced_hide_shorts_join_button_summary_on">Botón de unión oculto</string>
<string name="revanced_hide_shorts_join_button_summary_off">Se muestra el botón de unirse</string> <string name="revanced_hide_shorts_join_button_summary_off">Se muestra el botón de unirse</string>
<string name="revanced_hide_shorts_live_preview_title">Ocultar vista previa en vivo</string>
<string name="revanced_hide_shorts_live_preview_summary_on">La vista previa en vivo está oculta</string>
<string name="revanced_hide_shorts_live_preview_summary_off">La vista previa en vivo se muestra</string>
<string name="revanced_hide_shorts_location_label_title">Ocultar etiqueta de ubicación</string> <string name="revanced_hide_shorts_location_label_title">Ocultar etiqueta de ubicación</string>
<string name="revanced_hide_shorts_location_label_summary_on">Etiqueta de ubicación oculta</string> <string name="revanced_hide_shorts_location_label_summary_on">Etiqueta de ubicación oculta</string>
<string name="revanced_hide_shorts_location_label_summary_off">Etiqueta de ubicación mostrada</string> <string name="revanced_hide_shorts_location_label_summary_off">Etiqueta de ubicación mostrada</string>
<string name="revanced_hide_shorts_new_posts_button_title">Ocultar el botón Publicaciones nuevas</string> <string name="revanced_hide_shorts_new_posts_button_title">Ocultar el botón \"Nuevas publicaciones\"</string>
<string name="revanced_hide_shorts_new_posts_button_summary_on">El botón Publicaciones nuevas está oculto</string> <string name="revanced_hide_shorts_new_posts_button_summary_on">El botón Publicaciones nuevas está oculto</string>
<string name="revanced_hide_shorts_new_posts_button_summary_off">Se muestra el botón Publicaciones nuevas</string> <string name="revanced_hide_shorts_new_posts_button_summary_off">Se muestra el botón Publicaciones nuevas</string>
<string name="revanced_hide_shorts_paused_overlay_buttons_title">Ocultar botones de superposición en pausa</string> <string name="revanced_hide_shorts_paused_overlay_buttons_title">Ocultar botones de superposición en pausa</string>
@@ -893,7 +928,7 @@ Para mostrar el menú de la pista de audio, cambia 'Suplantar transmisiones de v
<string name="revanced_hide_shorts_preview_comment_title">Ocultar vista previa de comentarios</string> <string name="revanced_hide_shorts_preview_comment_title">Ocultar vista previa de comentarios</string>
<string name="revanced_hide_shorts_preview_comment_summary_on">La vista previa de comentarios está oculta</string> <string name="revanced_hide_shorts_preview_comment_summary_on">La vista previa de comentarios está oculta</string>
<string name="revanced_hide_shorts_preview_comment_summary_off">La vista previa de comentarios es visible</string> <string name="revanced_hide_shorts_preview_comment_summary_off">La vista previa de comentarios es visible</string>
<string name="revanced_hide_shorts_save_sound_button_title">Ocultar el botón Guardar música</string> <string name="revanced_hide_shorts_save_sound_button_title">Ocultar el botón \"Guardar música\"</string>
<string name="revanced_hide_shorts_save_sound_button_summary_on">El botón Guardar música está oculto</string> <string name="revanced_hide_shorts_save_sound_button_summary_on">El botón Guardar música está oculto</string>
<string name="revanced_hide_shorts_save_sound_button_summary_off">Mostrar el botón de guardar música</string> <string name="revanced_hide_shorts_save_sound_button_summary_off">Mostrar el botón de guardar música</string>
<string name="revanced_hide_shorts_search_suggestions_title">Ocultar sugerencias de búsqueda</string> <string name="revanced_hide_shorts_search_suggestions_title">Ocultar sugerencias de búsqueda</string>
@@ -914,10 +949,10 @@ Para mostrar el menú de la pista de audio, cambia 'Suplantar transmisiones de v
<string name="revanced_hide_shorts_upcoming_button_title">Ocultar el botón Próximos</string> <string name="revanced_hide_shorts_upcoming_button_title">Ocultar el botón Próximos</string>
<string name="revanced_hide_shorts_upcoming_button_summary_on">El botón próximo está oculto</string> <string name="revanced_hide_shorts_upcoming_button_summary_on">El botón próximo está oculto</string>
<string name="revanced_hide_shorts_upcoming_button_summary_off">Se muestra el botón próximo</string> <string name="revanced_hide_shorts_upcoming_button_summary_off">Se muestra el botón próximo</string>
<string name="revanced_hide_shorts_use_sound_button_title">Ocultar el botón Usar este sonido</string> <string name="revanced_hide_shorts_use_sound_button_title">Ocultar el botón \"Usar este sonido\"</string>
<string name="revanced_hide_shorts_use_sound_button_summary_on">El botón Usar este sonido está oculto</string> <string name="revanced_hide_shorts_use_sound_button_summary_on">El botón Usar este sonido está oculto</string>
<string name="revanced_hide_shorts_use_sound_button_summary_off">El botón Usar este sonido es visible</string> <string name="revanced_hide_shorts_use_sound_button_summary_off">El botón Usar este sonido es visible</string>
<string name="revanced_hide_shorts_use_template_button_title">Ocultar botón Usar esta plantilla</string> <string name="revanced_hide_shorts_use_template_button_title">Ocultar el botón \"Usar esta plantilla\"</string>
<string name="revanced_hide_shorts_use_template_button_summary_on">El botón Usar esta plantilla está oculto</string> <string name="revanced_hide_shorts_use_template_button_summary_on">El botón Usar esta plantilla está oculto</string>
<string name="revanced_hide_shorts_use_template_button_summary_off">El botón Usar esta plantilla se muestra</string> <string name="revanced_hide_shorts_use_template_button_summary_off">El botón Usar esta plantilla se muestra</string>
<string name="revanced_hide_shorts_like_fountain_title">Ocultar la animación de la fuente de Me gusta</string> <string name="revanced_hide_shorts_like_fountain_title">Ocultar la animación de la fuente de Me gusta</string>
@@ -1551,13 +1586,13 @@ Habilitar esto puede desbloquear calidades de vídeo más altas"</string>
</patch> </patch>
<patch id="video.speed.button.playbackSpeedButtonPatch"> <patch id="video.speed.button.playbackSpeedButtonPatch">
<string name="revanced_playback_speed_dialog_button_title">Mostrar botón de diálogo de velocidad</string> <string name="revanced_playback_speed_dialog_button_title">Mostrar botón de diálogo de velocidad</string>
<string name="revanced_playback_speed_dialog_button_summary_on">Se muestra el botón. Mantén pulsado para restablecer la velocidad de reproducción predeterminada</string> <string name="revanced_playback_speed_dialog_button_summary_on">El botón del diálogo de velocidad es visible. Mantén pulsado para restablecer la velocidad de reproducción a la predeterminada</string>
<string name="revanced_playback_speed_dialog_button_summary_off">El botón no se muestra</string> <string name="revanced_playback_speed_dialog_button_summary_off">El botón del diálogo de velocidad no es visible</string>
</patch> </patch>
<patch id="video.quality.button.videoQualityDialogButtonPatch"> <patch id="video.quality.button.videoQualityDialogButtonPatch">
<string name="revanced_video_quality_dialog_button_title">Mostrar botón de calidad de vídeo</string> <string name="revanced_video_quality_dialog_button_title">Mostrar botón de calidad de vídeo</string>
<string name="revanced_video_quality_dialog_button_summary_on">Botón visible. Toca y mantén para restablecer la calidad a los valores predeterminados</string> <string name="revanced_video_quality_dialog_button_summary_on">El botón de calidad de vídeo es visible. Mantén pulsado para restablecer la calidad a la predeterminada</string>
<string name="revanced_video_quality_dialog_button_summary_off">Botón no visible</string> <string name="revanced_video_quality_dialog_button_summary_off">El botón de calidad de vídeo no es visible</string>
</patch> </patch>
<patch id="video.speed.custom.customPlaybackSpeedPatch"> <patch id="video.speed.custom.customPlaybackSpeedPatch">
<string name="revanced_custom_speed_menu_title">Menú de velocidad de reproducción personalizada</string> <string name="revanced_custom_speed_menu_title">Menú de velocidad de reproducción personalizada</string>
@@ -1652,16 +1687,30 @@ La reproducción puede tartamudear o perder fotogramas"</string>
<string name="revanced_music_play_permanent_repeat_summary_on">La repetición permanente está habilitada</string> <string name="revanced_music_play_permanent_repeat_summary_on">La repetición permanente está habilitada</string>
<string name="revanced_music_play_permanent_repeat_summary_off">La repetición permanente está deshabilitada</string> <string name="revanced_music_play_permanent_repeat_summary_off">La repetición permanente está deshabilitada</string>
</patch> </patch>
<patch id="layout.castbutton.hideCastButton"> <patch id="layout.buttons.hideButtons">
<string name="revanced_music_hide_cast_button_title">Ocultar el botón de emisión</string> <string name="revanced_music_hide_cast_button_title">Ocultar el botón de emisión</string>
<string name="revanced_music_hide_cast_button_summary_on">El botón de emisión está oculto</string> <string name="revanced_music_hide_cast_button_summary_on">El botón de emisión está oculto</string>
<string name="revanced_music_hide_cast_button_summary_off">El botón de emisión es visible</string> <string name="revanced_music_hide_cast_button_summary_off">El botón de emisión es visible</string>
<string name="revanced_music_hide_history_button_title">Ocultar el botón \"Historial\"</string>
<string name="revanced_music_hide_history_button_summary_on">El botón de Historial está oculto</string>
<string name="revanced_music_hide_history_button_summary_off">El botón de Historial es visible</string>
<string name="revanced_music_hide_notification_button_title">Ocultar el botón de notificación</string>
<string name="revanced_music_hide_notification_button_summary_on">El botón de notificación está oculto</string>
<string name="revanced_music_hide_notification_button_summary_off">Se muestra el botón de notificación</string>
<string name="revanced_music_hide_search_button_title">Ocultar el botón de búsqueda</string>
<string name="revanced_music_hide_search_button_summary_on">El botón de búsqueda está oculto</string>
<string name="revanced_music_hide_search_button_summary_off">Se muestra el botón de búsqueda</string>
</patch> </patch>
<patch id="layout.compactheader.hideCategoryBar"> <patch id="layout.compactheader.hideCategoryBar">
<string name="revanced_music_hide_category_bar_title">Ocultar barra de categorías</string> <string name="revanced_music_hide_category_bar_title">Ocultar barra de categorías</string>
<string name="revanced_music_hide_category_bar_summary_on">La barra de categorías está oculta</string> <string name="revanced_music_hide_category_bar_summary_on">La barra de categorías está oculta</string>
<string name="revanced_music_hide_category_bar_summary_off">La barra de categorías es visible</string> <string name="revanced_music_hide_category_bar_summary_off">La barra de categorías es visible</string>
</patch> </patch>
<patch id="layout.miniplayercolor.changeMiniplayerColor">
<string name="revanced_music_change_miniplayer_color_title">Cambiar color del minirreproductor</string>
<string name="revanced_music_change_miniplayer_color_summary_on">El color del minirreproductor coincide con el del reproductor de pantalla completa</string>
<string name="revanced_music_change_miniplayer_color_summary_off">El minirreproductor utiliza el color predeterminado</string>
</patch>
<patch id="layout.navigationbar.navigationBarPatch"> <patch id="layout.navigationbar.navigationBarPatch">
<string name="revanced_music_navigation_bar_screen_title">Barra de navegación</string> <string name="revanced_music_navigation_bar_screen_title">Barra de navegación</string>
<string name="revanced_music_navigation_bar_screen_summary">Ocultar o cambiar los botones de la barra de navegación</string> <string name="revanced_music_navigation_bar_screen_summary">Ocultar o cambiar los botones de la barra de navegación</string>

View File

@@ -1,5 +1,4 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<!-- Copyright 2024 ReVanced. See https://github.com/ReVanced/revanced-branding -->
<!-- <!--
All strings must have a unique path, even if the same string is declared in two different apps. All strings must have a unique path, even if the same string is declared in two different apps.
@@ -45,13 +44,14 @@ Second \"item\" text"</string>
<string name="revanced_check_environment_not_near_patch_time_invalid">APK ehituskuupäev on rikutud</string> <string name="revanced_check_environment_not_near_patch_time_invalid">APK ehituskuupäev on rikutud</string>
</patch> </patch>
<patch id="misc.dns.checkWatchHistoryDomainNameResolutionPatch"> <patch id="misc.dns.checkWatchHistoryDomainNameResolutionPatch">
<string name="revanced_check_watch_history_domain_name_dialog_title">Hoiatus</string> <string name="revanced_check_watch_history_domain_name_dialog_title">ReVancedi Teade</string>
<string name="revanced_check_watch_history_domain_name_dialog_message">Teie vaatamise ajalugu ei salvestata.&lt;br&gt;&lt;br&gt;See on tõenäoliselt tingitud DNS-i reklaamiblokeerijast või võrguproksilt.&lt;br&gt;&lt;br&gt;Selle parandamiseks lisage valgesse nimekirja &lt;b&gt;s.youtube.com&lt;/b&gt; või lülitage kõik DNS-i reklaamiblokeerijad ja proksid välja.</string> <string name="revanced_check_watch_history_domain_name_dialog_message">Teie vaatamise ajalugu ei salvestata.&lt;br&gt;&lt;br&gt;See on tõenäoliselt tingitud DNS-i reklaamiblokeerijast või võrguproksilt.&lt;br&gt;&lt;br&gt;Selle parandamiseks lisage valgesse nimekirja &lt;b&gt;s.youtube.com&lt;/b&gt; või lülitage kõik DNS-i reklaamiblokeerijad ja proksid välja.</string>
<string name="revanced_check_watch_history_domain_name_dialog_ignore">Ära kuva uuesti</string> <string name="revanced_check_watch_history_domain_name_dialog_ignore">Ära kuva uuesti</string>
</patch> </patch>
<patch id="misc.settings.settingsResourcePatch"> <patch id="misc.settings.settingsResourcePatch">
<string name="revanced_settings_submenu_title">Seaded</string> <string name="revanced_settings_submenu_title">Seaded</string>
<string name="revanced_settings_confirm_user_dialog_title">Kas sa oled kindel, et soovid jätkata?</string> <string name="revanced_settings_confirm_user_dialog_title">Kas sa oled kindel, et soovid jätkata?</string>
<string name="revanced_settings_save">Salvesta</string>
<string name="revanced_settings_reset">Lähtesta</string> <string name="revanced_settings_reset">Lähtesta</string>
<string name="revanced_settings_reset_color">Lähtesta värv</string> <string name="revanced_settings_reset_color">Lähtesta värv</string>
<string name="revanced_settings_color_invalid">Vigane värv</string> <string name="revanced_settings_color_invalid">Vigane värv</string>
@@ -164,6 +164,14 @@ Teid ei teavitata ühestki ootamatust sündmusest."</string>
<string name="revanced_debug_logs_clear_buffer_title">Puhasta silumislogid</string> <string name="revanced_debug_logs_clear_buffer_title">Puhasta silumislogid</string>
<string name="revanced_debug_logs_clear_buffer_summary">Puhastab kõik salvestatud ReVanced silumislogid</string> <string name="revanced_debug_logs_clear_buffer_summary">Puhastab kõik salvestatud ReVanced silumislogid</string>
<string name="revanced_debug_logs_clear_toast">Logid puhastatud</string> <string name="revanced_debug_logs_clear_toast">Logid puhastatud</string>
<string name="revanced_debug_feature_flags_manager_title">Funktsioonilipikute Manager</string>
<string name="revanced_debug_feature_flags_manager_summary">Halda booleani funktsioonilipikuid</string>
<string name="revanced_debug_feature_flags_manager_active_header">Aktiivsed lipud (%d)</string>
<string name="revanced_debug_feature_flags_manager_blocked_header">Blokeeritud lipud (%d)</string>
<string name="revanced_debug_feature_flags_manager_search_hint">Otsi lippe...</string>
<string name="revanced_debug_feature_flags_manager_toast_saved">Lipud salvestatud</string>
<string name="revanced_debug_feature_flags_manager_toast_reset">Lipud lähtestatud</string>
<string name="revanced_debug_feature_flags_manager_toast_copied">Lipud kopeeritud lõikelauale</string>
</patch> </patch>
<patch id="misc.privacy.sanitizeSharingLinksPatch"> <patch id="misc.privacy.sanitizeSharingLinksPatch">
<string name="revanced_sanitize_sharing_links_title">Puhasta jagamislingid</string> <string name="revanced_sanitize_sharing_links_title">Puhasta jagamislingid</string>
@@ -274,6 +282,9 @@ Selle lubamine logib aga ka mõningaid kasutajaandmeid, näiteks teie IP-aadress
<string name="revanced_hide_video_recommendation_labels_title">Peida videosoovituste sildid</string> <string name="revanced_hide_video_recommendation_labels_title">Peida videosoovituste sildid</string>
<string name="revanced_hide_video_recommendation_labels_summary_on">\'Inimesed vaatasid ka\' ja \'Võib sulle meeldida\' sildid otsingutulemustes on peidetud</string> <string name="revanced_hide_video_recommendation_labels_summary_on">\'Inimesed vaatasid ka\' ja \'Võib sulle meeldida\' sildid otsingutulemustes on peidetud</string>
<string name="revanced_hide_video_recommendation_labels_summary_off">\'Inimesed vaatasid ka\' ja \'Võib sulle meeldida\' sildid otsingutulemustes on nähtaval</string> <string name="revanced_hide_video_recommendation_labels_summary_off">\'Inimesed vaatasid ka\' ja \'Võib sulle meeldida\' sildid otsingutulemustes on nähtaval</string>
<string name="revanced_hide_visual_spacer_title">Peida visuaalne eraldaja</string>
<string name="revanced_hide_visual_spacer_summary_on">Visuaalne eraldaja on peidetud</string>
<string name="revanced_hide_visual_spacer_summary_off">Visuaalne eraldaja on nähtav</string>
<!-- https://logos.fandom.com/wiki/YouTube/Yoodles --> <!-- https://logos.fandom.com/wiki/YouTube/Yoodles -->
<string name="revanced_hide_doodles_title">Peida YouTube Doodles</string> <string name="revanced_hide_doodles_title">Peida YouTube Doodles</string>
<string name="revanced_hide_doodles_summary_on">YouTube Doodles animatsioon logol on peidetud</string> <string name="revanced_hide_doodles_summary_on">YouTube Doodles animatsioon logol on peidetud</string>
@@ -334,12 +345,21 @@ Kui Doodle on teie piirkonnas praegu nähtav ja see peitmise seade on sisse lül
<string name="revanced_hide_podcast_section_title">Peida \"Avasta taskuhäälingut\"</string> <string name="revanced_hide_podcast_section_title">Peida \"Avasta taskuhäälingut\"</string>
<string name="revanced_hide_podcast_section_summary_on">Avasta taskuhäälingut jaotis on peidetud</string> <string name="revanced_hide_podcast_section_summary_on">Avasta taskuhäälingut jaotis on peidetud</string>
<string name="revanced_hide_podcast_section_summary_off">Avasta taskuhäälingut jaotis on kuvatud</string> <string name="revanced_hide_podcast_section_summary_off">Avasta taskuhäälingut jaotis on kuvatud</string>
<string name="revanced_hide_featured_links_section_title">Peida esiletoodud lingid</string>
<string name="revanced_hide_featured_links_section_summary_on">Esiletõstetud linkide sektsioon on peidetud</string>
<string name="revanced_hide_featured_links_section_summary_off">Esiletõstetud linkide sektsioon on nähtav</string>
<string name="revanced_hide_featured_videos_section_title">Peida esiletõstetud videod</string>
<string name="revanced_hide_featured_videos_section_summary_on">Esiletõstetud videote sektsioon on peidetud</string>
<string name="revanced_hide_featured_videos_section_summary_off">Esiletõstetud videote sektsioon on nähtav</string>
<string name="revanced_hide_info_cards_section_title">Peida infokaardid</string> <string name="revanced_hide_info_cards_section_title">Peida infokaardid</string>
<string name="revanced_hide_info_cards_section_summary_on">Teabekaartide jaotis on peidetud</string> <string name="revanced_hide_info_cards_section_summary_on">Teabekaartide jaotis on peidetud</string>
<string name="revanced_hide_info_cards_section_summary_off">Kuvatakse teabekaartide jaotis</string> <string name="revanced_hide_info_cards_section_summary_off">Kuvatakse teabekaartide jaotis</string>
<string name="revanced_hide_key_concepts_section_title">Peida \"Põhimõisted\"</string> <string name="revanced_hide_key_concepts_section_title">Peida \"Põhimõisted\"</string>
<string name="revanced_hide_key_concepts_section_summary_on">Põhimõisted jaotis on peidetud</string> <string name="revanced_hide_key_concepts_section_summary_on">Põhimõisted jaotis on peidetud</string>
<string name="revanced_hide_key_concepts_section_summary_off">Põhimõisted jaotis on kuvatud</string> <string name="revanced_hide_key_concepts_section_summary_off">Põhimõisted jaotis on kuvatud</string>
<string name="revanced_hide_subscribe_button_title">Peida tellimisnupp</string>
<string name="revanced_hide_subscribe_button_summary_on">Tellimisnupp on peidetud</string>
<string name="revanced_hide_subscribe_button_summary_off">Tellimisnupp on nähtav</string>
<string name="revanced_hide_transcript_section_title">Peida transkriptsioon</string> <string name="revanced_hide_transcript_section_title">Peida transkriptsioon</string>
<string name="revanced_hide_transcript_section_summary_on">Skriptiosa on peidetud</string> <string name="revanced_hide_transcript_section_summary_on">Skriptiosa on peidetud</string>
<string name="revanced_hide_transcript_section_summary_off">Skriptiosa on näidatud</string> <string name="revanced_hide_transcript_section_summary_off">Skriptiosa on näidatud</string>
@@ -361,24 +381,32 @@ Kui Doodle on teie piirkonnas praegu nähtav ja see peitmise seade on sisse lül
<string name="revanced_hide_filter_bar_feed_in_history_summary_off">Nähtav vaatamisajaloos</string> <string name="revanced_hide_filter_bar_feed_in_history_summary_off">Nähtav vaatamisajaloos</string>
<string name="revanced_channel_screen_title">Kanali leht</string> <string name="revanced_channel_screen_title">Kanali leht</string>
<string name="revanced_channel_screen_summary">Peida või näita kanali lehe komponente</string> <string name="revanced_channel_screen_summary">Peida või näita kanali lehe komponente</string>
<!-- 'Community' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_community_button_title">Peida kogukonna nupp</string>
<string name="revanced_hide_community_button_summary_on">Kogukonna nupp on peidetud</string>
<string name="revanced_hide_community_button_summary_off">Kogukonna nupp on nähtaval</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">Peida \"Sulle\" riiul</string> <string name="revanced_hide_for_you_shelf_title">Peida \"Sulle\" riiul</string>
<string name="revanced_hide_for_you_shelf_summary_on">Sulle mõeldud riiul on peidetud</string> <string name="revanced_hide_for_you_shelf_summary_on">Sulle mõeldud riiul on peidetud</string>
<string name="revanced_hide_for_you_shelf_summary_off">Sulle mõeldud riiul on nähtav</string> <string name="revanced_hide_for_you_shelf_summary_off">Sulle mõeldud riiul on nähtav</string>
<!-- 'Join' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_join_button_title">Peida nupp „Liitu”</string>
<string name="revanced_hide_join_button_summary_on">Nupp „Liitu” on peidetud</string>
<string name="revanced_hide_join_button_summary_off">Nupp „Liitu” on nähtaval</string>
<string name="revanced_hide_links_preview_title">Peida linkide eelvaade</string> <string name="revanced_hide_links_preview_title">Peida linkide eelvaade</string>
<string name="revanced_hide_links_preview_summary_on">Linkide eelvaade on peidetud</string> <string name="revanced_hide_links_preview_summary_on">Linkide eelvaade on peidetud</string>
<string name="revanced_hide_links_preview_summary_off">Linkide eelvaade on nähtav</string> <string name="revanced_hide_links_preview_summary_off">Linkide eelvaade on nähtav</string>
<string name="revanced_hide_members_shelf_title">Peida liikmete riiul</string> <string name="revanced_hide_members_shelf_title">Peida liikmete riiul</string>
<string name="revanced_hide_members_shelf_summary_on">Liikmete riiul on peidetud</string> <string name="revanced_hide_members_shelf_summary_on">Liikmete riiul on peidetud</string>
<string name="revanced_hide_members_shelf_summary_off">Liikmete riiul on nähtav</string> <string name="revanced_hide_members_shelf_summary_off">Liikmete riiul on nähtav</string>
<!-- 'Visit Community' should be translated with the same localized wording that YouTube displays. --> <!-- 'Store' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_visit_community_button_title">Peida \"Külasta kogukonda\" nupp</string> <string name="revanced_hide_store_button_title">Peida nupp „Pood”</string>
<string name="revanced_hide_visit_community_button_summary_on">\"Külasta kogukonda\" nupp on peidetud</string> <string name="revanced_hide_store_button_summary_on">Nupp „Pood” on peidetud</string>
<string name="revanced_hide_visit_community_button_summary_off">Nupp \"Külasta kogukonda\" on nähtav</string> <string name="revanced_hide_store_button_summary_off">Nupp „Pood” on nähtaval</string>
<!-- 'Visit store' should be translated with the same localized wording that YouTube displays. --> <!-- 'Subscribe' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_visit_store_button_title">Peida kanali lehelt nuppu \"Külasta poodi\"</string> <string name="revanced_hide_subscribe_button_in_channel_page_title">Peida nupp „Telli”</string>
<string name="revanced_hide_visit_store_button_summary_on">Nupp \"Külasta poodi\" on peidetud</string> <string name="revanced_hide_subscribe_button_in_channel_page_summary_on">Nupp „Telli” on peidetud</string>
<string name="revanced_hide_visit_store_button_summary_off">Nupp \"Külasta poodi\" on nähtav</string> <string name="revanced_hide_subscribe_button_in_channel_page_summary_off">Nupp „Telli” on nähtaval</string>
<string name="revanced_comments_screen_title">Kommentaarid</string> <string name="revanced_comments_screen_title">Kommentaarid</string>
<string name="revanced_comments_screen_summary">Peida või kuva kommentaaride sektsiooni komponendid</string> <string name="revanced_comments_screen_summary">Peida või kuva kommentaaride sektsiooni komponendid</string>
<string name="revanced_hide_comments_ai_chat_summary_title">Peida AI vestluse kokkuvõte</string> <string name="revanced_hide_comments_ai_chat_summary_title">Peida AI vestluse kokkuvõte</string>
@@ -520,11 +548,11 @@ See funktsioon on saadaval ainult vanemates seadmetes"</string>
<string name="revanced_share_copy_url_success">URL kopeeritud clipboardi</string> <string name="revanced_share_copy_url_success">URL kopeeritud clipboardi</string>
<string name="revanced_share_copy_url_timestamp_success">Aadres URL ajaga kopeeritud</string> <string name="revanced_share_copy_url_timestamp_success">Aadres URL ajaga kopeeritud</string>
<string name="revanced_copy_video_url_title">Kuva video URL kopeerimise nupp</string> <string name="revanced_copy_video_url_title">Kuva video URL kopeerimise nupp</string>
<string name="revanced_copy_video_url_summary_on">Nupp on nähtav. Video URL-i kopeerimiseks puuduta. Ajakoodiga kopeerimiseks puuduta pikalt</string> <string name="revanced_copy_video_url_summary_on">Video URL-i kopeerimise nupp on nähtaval. Puudutage video URL-i kopeerimiseks. Puudutage pikalt, et kopeerida ajatempliga</string>
<string name="revanced_copy_video_url_summary_off">Nupud ei ole näha</string> <string name="revanced_copy_video_url_summary_off">Video URL-i kopeerimise nupp pole nähtaval</string>
<string name="revanced_copy_video_url_timestamp_title">Näita video URL-i ajatempliga kopeerimise nuppu</string> <string name="revanced_copy_video_url_timestamp_title">Näita video URL-i ajatempliga kopeerimise nuppu</string>
<string name="revanced_copy_video_url_timestamp_summary_on">Nupp on nähtav. Ajakoodiga video URL-i kopeerimiseks puuduta. Ilma ajakoodita kopeerimiseks puuduta pikalt</string> <string name="revanced_copy_video_url_timestamp_summary_on">Ajatempliga URL-i kopeerimise nupp on nähtaval. Puudutage video URL-i ajatempliga kopeerimiseks. Puudutage pikalt, et kopeerida ilma ajatemplita</string>
<string name="revanced_copy_video_url_timestamp_summary_off">Nupud ei ole näha</string> <string name="revanced_copy_video_url_timestamp_summary_off">Ajatempliga URL-i kopeerimise nupp pole nähtaval</string>
</patch> </patch>
<patch id="interaction.dialog.removeViewerDiscretionDialogPatch"> <patch id="interaction.dialog.removeViewerDiscretionDialogPatch">
<string name="revanced_remove_viewer_discretion_dialog_title">Eemalda vaataja arvamuse dialoog</string> <string name="revanced_remove_viewer_discretion_dialog_title">Eemalda vaataja arvamuse dialoog</string>
@@ -533,7 +561,7 @@ See funktsioon on saadaval ainult vanemates seadmetes"</string>
<string name="revanced_remove_viewer_discretion_dialog_user_dialog_message">See ei mööda vanusepiirangust. See lihtsalt aktsepteerib seda automaatselt.</string> <string name="revanced_remove_viewer_discretion_dialog_user_dialog_message">See ei mööda vanusepiirangust. See lihtsalt aktsepteerib seda automaatselt.</string>
</patch> </patch>
<patch id="layout.hide.signintotv.disableSignInToTvPopupPatch"> <patch id="layout.hide.signintotv.disableSignInToTvPopupPatch">
<string name="revanced_disable_signin_to_tv_popup_title">Keela telerisse sisselogimise hüpikaken</string> <string name="revanced_disable_signin_to_tv_popup_title">Keela hüpikaken „Logi telerisse sisse”</string>
<string name="revanced_disable_signin_to_tv_popup_summary_on">Telerisse sisselogimise hüpikaken on keelatud</string> <string name="revanced_disable_signin_to_tv_popup_summary_on">Telerisse sisselogimise hüpikaken on keelatud</string>
<string name="revanced_disable_signin_to_tv_popup_summary_off">Telerisse sisselogimise hüpikaken on lubatud</string> <string name="revanced_disable_signin_to_tv_popup_summary_off">Telerisse sisselogimise hüpikaken on lubatud</string>
</patch> </patch>
@@ -665,7 +693,7 @@ Helitugevuse reguleerimiseks pühkige ekraani paremal küljel vertikaalselt"</st
<string name="revanced_hide_download_button_summary_on">Laadi alla nupp on peidetud</string> <string name="revanced_hide_download_button_summary_on">Laadi alla nupp on peidetud</string>
<string name="revanced_hide_download_button_summary_off">Laadi alla nupp on nähtav</string> <string name="revanced_hide_download_button_summary_off">Laadi alla nupp on nähtav</string>
<!-- 'Hype' should be translated with the same localized wording that YouTube displays. <!-- 'Hype' should be translated with the same localized wording that YouTube displays.
This button only shows on videos uploaded by the logged in user. --> This button only shows on videos uploaded by the logged-in user. -->
<string name="revanced_hide_hype_button_title">Peida Hype</string> <string name="revanced_hide_hype_button_title">Peida Hype</string>
<string name="revanced_hide_hype_button_summary_on">Hype nupp on peidetud</string> <string name="revanced_hide_hype_button_summary_on">Hype nupp on peidetud</string>
<string name="revanced_hide_hype_button_summary_off">Hype\'i nupp on nähtav</string> <string name="revanced_hide_hype_button_summary_off">Hype\'i nupp on nähtav</string>
@@ -786,10 +814,11 @@ Kui selle sätte muutmine ei avalda mõju, proovige lülituda Inkognito režiimi
<string name="revanced_hide_player_flyout_audio_track_title">Peida Helitraek</string> <string name="revanced_hide_player_flyout_audio_track_title">Peida Helitraek</string>
<string name="revanced_hide_player_flyout_audio_track_summary_on">Helitraekide menüü on peidetud</string> <string name="revanced_hide_player_flyout_audio_track_summary_on">Helitraekide menüü on peidetud</string>
<string name="revanced_hide_player_flyout_audio_track_summary_off">Helitraekide menüü on nähtav</string> <string name="revanced_hide_player_flyout_audio_track_summary_off">Helitraekide menüü on nähtav</string>
<!-- 'Spoof video streams' should be the same translation used for 'revanced_spoof_video_streams_screen_title'. --> <!-- 'Spoof video streams' should be the same translation used for 'revanced_spoof_video_streams_screen_title'.
<string name="revanced_hide_player_flyout_audio_track_not_available">"Heliraja menüü on peidetud 'Android No SDK' must be kept untranslated. -->
<string name="revanced_hide_player_flyout_audio_track_not_available">"Heliriba menüü on peidetud
Heliraja menüü nägemiseks muutke \"Video voogude võltsimine\" iPadOS-iks"</string> Heliriba menüü kuvamiseks muutke „Spoof video streams” väärtuseks „Android No SDK”"</string>
<!-- 'Watch in VR' should be translated using the same localized wording YouTube displays for the menu item. --> <!-- 'Watch in VR' should be translated using the same localized wording YouTube displays for the menu item. -->
<string name="revanced_hide_player_flyout_watch_in_vr_title">Peida Vaata VR-is</string> <string name="revanced_hide_player_flyout_watch_in_vr_title">Peida Vaata VR-is</string>
<string name="revanced_hide_player_flyout_watch_in_vr_summary_on">Vaata VR-is menüü on peidetud</string> <string name="revanced_hide_player_flyout_watch_in_vr_summary_on">Vaata VR-is menüü on peidetud</string>
@@ -865,13 +894,16 @@ Heliraja menüü nägemiseks muutke \"Video voogude võltsimine\" iPadOS-iks"</s
<string name="revanced_hide_shorts_history_title">Peida Shortsid vaatamisaegadust</string> <string name="revanced_hide_shorts_history_title">Peida Shortsid vaatamisaegadust</string>
<string name="revanced_hide_shorts_history_summary_on">Peidetud vaatamise ajaloos</string> <string name="revanced_hide_shorts_history_summary_on">Peidetud vaatamise ajaloos</string>
<string name="revanced_hide_shorts_history_summary_off">Näidatud vaatamisaegadus</string> <string name="revanced_hide_shorts_history_summary_off">Näidatud vaatamisaegadus</string>
<string name="revanced_hide_shorts_super_thanks_button_title">Peida Osta Super Tänud nupp</string> <string name="revanced_hide_shorts_auto_dubbed_label_title">Peida silt „Automaatselt dubleeritud”</string>
<string name="revanced_hide_shorts_auto_dubbed_label_summary_on">Automaatselt dubleeritud silt on peidetud</string>
<string name="revanced_hide_shorts_auto_dubbed_label_summary_off">Automaatselt dubleeritud silt on nähtav</string>
<string name="revanced_hide_shorts_super_thanks_button_title">Peida nupp „Osta Super Tänud”</string>
<string name="revanced_hide_shorts_super_thanks_button_summary_on">Osta Super Thanks nupp on peidetud</string> <string name="revanced_hide_shorts_super_thanks_button_summary_on">Osta Super Thanks nupp on peidetud</string>
<string name="revanced_hide_shorts_super_thanks_button_summary_off">Osta Super Thanks nupp on nähtaval</string> <string name="revanced_hide_shorts_super_thanks_button_summary_off">Osta Super Thanks nupp on nähtaval</string>
<string name="revanced_hide_shorts_effect_button_title">Peida efekti nupp</string> <string name="revanced_hide_shorts_effect_button_title">Peida efekti nupp</string>
<string name="revanced_hide_shorts_effect_button_summary_on">Efekti nupp on peidetud</string> <string name="revanced_hide_shorts_effect_button_summary_on">Efekti nupp on peidetud</string>
<string name="revanced_hide_shorts_effect_button_summary_off">Efekti nupp on nähtav</string> <string name="revanced_hide_shorts_effect_button_summary_off">Efekti nupp on nähtav</string>
<string name="revanced_hide_shorts_green_screen_button_title">Peida Roheline ekraan nupp</string> <string name="revanced_hide_shorts_green_screen_button_title">Peida nupp „Roheline ekraan</string>
<string name="revanced_hide_shorts_green_screen_button_summary_on">Rohelise ekraani nupp on peidetud</string> <string name="revanced_hide_shorts_green_screen_button_summary_on">Rohelise ekraani nupp on peidetud</string>
<string name="revanced_hide_shorts_green_screen_button_summary_off">Rohelise ekraani nupp on nähtav</string> <string name="revanced_hide_shorts_green_screen_button_summary_off">Rohelise ekraani nupp on nähtav</string>
<string name="revanced_hide_shorts_hashtag_button_title">Peida räsimärgi nupp</string> <string name="revanced_hide_shorts_hashtag_button_title">Peida räsimärgi nupp</string>
@@ -881,10 +913,13 @@ Heliraja menüü nägemiseks muutke \"Video voogude võltsimine\" iPadOS-iks"</s
<string name="revanced_hide_shorts_join_button_title">Peida Liitu nupp</string> <string name="revanced_hide_shorts_join_button_title">Peida Liitu nupp</string>
<string name="revanced_hide_shorts_join_button_summary_on">Liitumisnupp on peidetud</string> <string name="revanced_hide_shorts_join_button_summary_on">Liitumisnupp on peidetud</string>
<string name="revanced_hide_shorts_join_button_summary_off">Liitumisnupp on nähtav</string> <string name="revanced_hide_shorts_join_button_summary_off">Liitumisnupp on nähtav</string>
<string name="revanced_hide_shorts_live_preview_title">Peida reaalajas eelvaade</string>
<string name="revanced_hide_shorts_live_preview_summary_on">Otse eelvaade on peidetud</string>
<string name="revanced_hide_shorts_live_preview_summary_off">Otse eelvaade on nähtav</string>
<string name="revanced_hide_shorts_location_label_title">Peida asukoha silt</string> <string name="revanced_hide_shorts_location_label_title">Peida asukoha silt</string>
<string name="revanced_hide_shorts_location_label_summary_on">Asukoha silt on peidetud</string> <string name="revanced_hide_shorts_location_label_summary_on">Asukoha silt on peidetud</string>
<string name="revanced_hide_shorts_location_label_summary_off">Asukoha silt on nähtav</string> <string name="revanced_hide_shorts_location_label_summary_off">Asukoha silt on nähtav</string>
<string name="revanced_hide_shorts_new_posts_button_title">Peida uute postituste nupp</string> <string name="revanced_hide_shorts_new_posts_button_title">Peida nupp „Uued postitused”</string>
<string name="revanced_hide_shorts_new_posts_button_summary_on">Uute postituste nupp on peidetud</string> <string name="revanced_hide_shorts_new_posts_button_summary_on">Uute postituste nupp on peidetud</string>
<string name="revanced_hide_shorts_new_posts_button_summary_off">Uute postituste nupp on nähtav</string> <string name="revanced_hide_shorts_new_posts_button_summary_off">Uute postituste nupp on nähtav</string>
<string name="revanced_hide_shorts_paused_overlay_buttons_title">Peida peatatud ülekatte nupud</string> <string name="revanced_hide_shorts_paused_overlay_buttons_title">Peida peatatud ülekatte nupud</string>
@@ -893,7 +928,7 @@ Heliraja menüü nägemiseks muutke \"Video voogude võltsimine\" iPadOS-iks"</s
<string name="revanced_hide_shorts_preview_comment_title">Peida eelvaate kommentaar</string> <string name="revanced_hide_shorts_preview_comment_title">Peida eelvaate kommentaar</string>
<string name="revanced_hide_shorts_preview_comment_summary_on">Kommentaari eelvaade on peidetud</string> <string name="revanced_hide_shorts_preview_comment_summary_on">Kommentaari eelvaade on peidetud</string>
<string name="revanced_hide_shorts_preview_comment_summary_off">Kommentaari eelvaade on nähtav</string> <string name="revanced_hide_shorts_preview_comment_summary_off">Kommentaari eelvaade on nähtav</string>
<string name="revanced_hide_shorts_save_sound_button_title">Peida Salvesta muusika nupp</string> <string name="revanced_hide_shorts_save_sound_button_title">Peida nupp „Salvesta muusika</string>
<string name="revanced_hide_shorts_save_sound_button_summary_on">Muusika salvestamise nupp on peidetud</string> <string name="revanced_hide_shorts_save_sound_button_summary_on">Muusika salvestamise nupp on peidetud</string>
<string name="revanced_hide_shorts_save_sound_button_summary_off">Muusika salvestamise nupp on nähtav</string> <string name="revanced_hide_shorts_save_sound_button_summary_off">Muusika salvestamise nupp on nähtav</string>
<string name="revanced_hide_shorts_search_suggestions_title">Peida otsingusoovitused</string> <string name="revanced_hide_shorts_search_suggestions_title">Peida otsingusoovitused</string>
@@ -914,10 +949,10 @@ Heliraja menüü nägemiseks muutke \"Video voogude võltsimine\" iPadOS-iks"</s
<string name="revanced_hide_shorts_upcoming_button_title">Peida Eelseisvad nupp</string> <string name="revanced_hide_shorts_upcoming_button_title">Peida Eelseisvad nupp</string>
<string name="revanced_hide_shorts_upcoming_button_summary_on">Eelseisva nuppu on peidetud</string> <string name="revanced_hide_shorts_upcoming_button_summary_on">Eelseisva nuppu on peidetud</string>
<string name="revanced_hide_shorts_upcoming_button_summary_off">Eelseisva nuppu on nähtav</string> <string name="revanced_hide_shorts_upcoming_button_summary_off">Eelseisva nuppu on nähtav</string>
<string name="revanced_hide_shorts_use_sound_button_title">Peida nupp \"Kasuta seda heli\"</string> <string name="revanced_hide_shorts_use_sound_button_title">Peida nupp Kasuta seda heli</string>
<string name="revanced_hide_shorts_use_sound_button_summary_on">Nupp \"Kasuta seda heli\" on peidetud</string> <string name="revanced_hide_shorts_use_sound_button_summary_on">Nupp \"Kasuta seda heli\" on peidetud</string>
<string name="revanced_hide_shorts_use_sound_button_summary_off">Nupp \"Kasuta seda heli\" on nähtav</string> <string name="revanced_hide_shorts_use_sound_button_summary_off">Nupp \"Kasuta seda heli\" on nähtav</string>
<string name="revanced_hide_shorts_use_template_button_title">Peida kasuta seda malli nupp</string> <string name="revanced_hide_shorts_use_template_button_title">Peida nupp „Kasuta seda malli</string>
<string name="revanced_hide_shorts_use_template_button_summary_on">Nupp \"Kasuta seda malli\" on peidetud</string> <string name="revanced_hide_shorts_use_template_button_summary_on">Nupp \"Kasuta seda malli\" on peidetud</string>
<string name="revanced_hide_shorts_use_template_button_summary_off">Kasuta seda malli nupp on nähtav</string> <string name="revanced_hide_shorts_use_template_button_summary_off">Kasuta seda malli nupp on nähtav</string>
<string name="revanced_hide_shorts_like_fountain_title">Peida Meeldi nupu purskkaevu animatsioon</string> <string name="revanced_hide_shorts_like_fountain_title">Peida Meeldi nupu purskkaevu animatsioon</string>
@@ -1560,13 +1595,13 @@ Selle lubamine võib avada kõrgema video kvaliteedi"</string>
</patch> </patch>
<patch id="video.speed.button.playbackSpeedButtonPatch"> <patch id="video.speed.button.playbackSpeedButtonPatch">
<string name="revanced_playback_speed_dialog_button_title">Kuva kiiruse dialoogi nupp</string> <string name="revanced_playback_speed_dialog_button_title">Kuva kiiruse dialoogi nupp</string>
<string name="revanced_playback_speed_dialog_button_summary_on">Nupp on nähtaval. Puudutage ja hoidke all, et taastada taasesituse kiirus vaikeväärtusele</string> <string name="revanced_playback_speed_dialog_button_summary_on">Kiiruse dialoogi nupp on nähtaval. Puudutage pikalt, et taasesituskiirus vaikeseadeks lähtestada</string>
<string name="revanced_playback_speed_dialog_button_summary_off">Nuppi ei kuvata</string> <string name="revanced_playback_speed_dialog_button_summary_off">Kiiruse dialoogi nupp pole nähtaval</string>
</patch> </patch>
<patch id="video.quality.button.videoQualityDialogButtonPatch"> <patch id="video.quality.button.videoQualityDialogButtonPatch">
<string name="revanced_video_quality_dialog_button_title">Näita video kvaliteedi nuppu</string> <string name="revanced_video_quality_dialog_button_title">Näita video kvaliteedi nuppu</string>
<string name="revanced_video_quality_dialog_button_summary_on">Nupp on nähtaval. Kvaliteedi lähtestamiseks vaikeseadeteks puudutage ja hoidke</string> <string name="revanced_video_quality_dialog_button_summary_on">Video kvaliteedi nupp on nähtaval. Kvaliteedi lähtestamiseks vaikeseadeteks puudutage ja hoidke</string>
<string name="revanced_video_quality_dialog_button_summary_off">Nuppu ei kuvata</string> <string name="revanced_video_quality_dialog_button_summary_off">Video kvaliteedi nupp pole nähtaval</string>
</patch> </patch>
<patch id="video.speed.custom.customPlaybackSpeedPatch"> <patch id="video.speed.custom.customPlaybackSpeedPatch">
<string name="revanced_custom_speed_menu_title">Kohandatud taasesituse kiiruse menüü</string> <string name="revanced_custom_speed_menu_title">Kohandatud taasesituse kiiruse menüü</string>
@@ -1663,16 +1698,30 @@ AV1-ga videotaasesitus võib hakitud olla või kaadreid vahele jätta."</string>
<string name="revanced_music_play_permanent_repeat_summary_on">Püsiv kordus on lubatud</string> <string name="revanced_music_play_permanent_repeat_summary_on">Püsiv kordus on lubatud</string>
<string name="revanced_music_play_permanent_repeat_summary_off">Püsiv kordus on keelatud</string> <string name="revanced_music_play_permanent_repeat_summary_off">Püsiv kordus on keelatud</string>
</patch> </patch>
<patch id="layout.castbutton.hideCastButton"> <patch id="layout.buttons.hideButtons">
<string name="revanced_music_hide_cast_button_title">Peida edastusnupp</string> <string name="revanced_music_hide_cast_button_title">Peida edastusnupp</string>
<string name="revanced_music_hide_cast_button_summary_on">Edastusnupp on peidetud</string> <string name="revanced_music_hide_cast_button_summary_on">Edastusnupp on peidetud</string>
<string name="revanced_music_hide_cast_button_summary_off">Edastusnupp on nähtav</string> <string name="revanced_music_hide_cast_button_summary_off">Edastusnupp on nähtav</string>
<string name="revanced_music_hide_history_button_title">Peida ajaloo nupp</string>
<string name="revanced_music_hide_history_button_summary_on">Ajaloo nupp on peidetud</string>
<string name="revanced_music_hide_history_button_summary_off">Ajaloo nupp on nähtaval</string>
<string name="revanced_music_hide_notification_button_title">Peida teavituse nupp</string>
<string name="revanced_music_hide_notification_button_summary_on">Teavituse nupp on peidetud</string>
<string name="revanced_music_hide_notification_button_summary_off">Teavituse nupp on nähtav</string>
<string name="revanced_music_hide_search_button_title">Peida otsingunupp</string>
<string name="revanced_music_hide_search_button_summary_on">Otsingunupp on peidetud</string>
<string name="revanced_music_hide_search_button_summary_off">Otsingunupp on nähtav</string>
</patch> </patch>
<patch id="layout.compactheader.hideCategoryBar"> <patch id="layout.compactheader.hideCategoryBar">
<string name="revanced_music_hide_category_bar_title">Peida kategooriariba</string> <string name="revanced_music_hide_category_bar_title">Peida kategooriariba</string>
<string name="revanced_music_hide_category_bar_summary_on">Kategooriariba on peidetud</string> <string name="revanced_music_hide_category_bar_summary_on">Kategooriariba on peidetud</string>
<string name="revanced_music_hide_category_bar_summary_off">Kategooriariba on nähtaval</string> <string name="revanced_music_hide_category_bar_summary_off">Kategooriariba on nähtaval</string>
</patch> </patch>
<patch id="layout.miniplayercolor.changeMiniplayerColor">
<string name="revanced_music_change_miniplayer_color_title">Muuda minipleieri värvi</string>
<string name="revanced_music_change_miniplayer_color_summary_on">Minipleieri värv ühtib täisekraanipleieri omaga</string>
<string name="revanced_music_change_miniplayer_color_summary_off">Minipleier kasutab vaikevärvi</string>
</patch>
<patch id="layout.navigationbar.navigationBarPatch"> <patch id="layout.navigationbar.navigationBarPatch">
<string name="revanced_music_navigation_bar_screen_title">Navigeerimisriba</string> <string name="revanced_music_navigation_bar_screen_title">Navigeerimisriba</string>
<string name="revanced_music_navigation_bar_screen_summary">Peida või muuda navigeerimisriba nuppe</string> <string name="revanced_music_navigation_bar_screen_summary">Peida või muuda navigeerimisriba nuppe</string>

View File

@@ -1,5 +1,4 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<!-- Copyright 2024 ReVanced. See https://github.com/ReVanced/revanced-branding -->
<!-- <!--
All strings must have a unique path, even if the same string is declared in two different apps. All strings must have a unique path, even if the same string is declared in two different apps.
@@ -64,9 +63,11 @@ Second \"item\" text"</string>
<!-- https://logos.fandom.com/wiki/YouTube/Yoodles --> <!-- https://logos.fandom.com/wiki/YouTube/Yoodles -->
<!-- '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. -->
<!-- 'Community' should be translated with the same localized wording that YouTube displays. -->
<!-- 'For You' should be translated using the same localized wording YouTube displays. --> <!-- 'For You' should be translated using the same localized wording YouTube displays. -->
<!-- 'Visit Community' should be translated with the same localized wording that YouTube displays. --> <!-- 'Join' should be translated with the same localized wording that YouTube displays. -->
<!-- 'Visit store' should be translated with the same localized wording that YouTube displays. --> <!-- 'Store' should be translated with the same localized wording that YouTube displays. -->
<!-- 'Subscribe' should be translated with the same localized wording that YouTube displays. -->
<!-- 'Component path builder strings' is the technical name for identifying the Litho UI layout items to hide. This is an advanced feature and most users will never use this. --> <!-- 'Component path builder strings' is the technical name for identifying the Litho UI layout items to hide. This is an advanced feature and most users will never use this. -->
<!-- Translations should lanaguge similar to revanced_hide_upload_time_user_dialog_message --> <!-- Translations should lanaguge similar to revanced_hide_upload_time_user_dialog_message -->
<!-- Translations should lanaguge similar to revanced_hide_view_count_user_dialog_message --> <!-- Translations should lanaguge similar to revanced_hide_view_count_user_dialog_message -->
@@ -110,7 +111,7 @@ Second \"item\" text"</string>
<!-- 'Remix' should be translated with the same localized wording that YouTube displays. --> <!-- 'Remix' should be translated with the same localized wording that YouTube displays. -->
<!-- 'Download' should be translated with the same localized wording that YouTube displays. --> <!-- 'Download' should be translated with the same localized wording that YouTube displays. -->
<!-- 'Hype' should be translated with the same localized wording that YouTube displays. <!-- 'Hype' should be translated with the same localized wording that YouTube displays.
This button only shows on videos uploaded by the logged in user. --> This button only shows on videos uploaded by the logged-in user. -->
<!-- 'Promote' should be translated with the same localized wording that YouTube displays. --> <!-- 'Promote' should be translated with the same localized wording that YouTube displays. -->
<!-- 'Thanks' should be translated with the same localized wording that YouTube displays. --> <!-- 'Thanks' should be translated with the same localized wording that YouTube displays. -->
<!-- 'Ask' should be translated with the same localized wording that YouTube displays. <!-- 'Ask' should be translated with the same localized wording that YouTube displays.
@@ -137,7 +138,8 @@ Second \"item\" text"</string>
<!-- 'Lock screen' should be translated using the same localized wording YouTube displays for the menu item. --> <!-- 'Lock screen' should be translated using the same localized wording YouTube displays for the menu item. -->
<!-- 'Listen with YouTube Music' should be translated using the same localized wording YouTube displays for the menu item. --> <!-- 'Listen with YouTube Music' should be translated using the same localized wording YouTube displays for the menu item. -->
<!-- 'Audio track' should be translated using the same localized wording YouTube displays for the menu item. --> <!-- 'Audio track' should be translated using the same localized wording YouTube displays for the menu item. -->
<!-- 'Spoof video streams' should be the same translation used for 'revanced_spoof_video_streams_screen_title'. --> <!-- 'Spoof video streams' should be the same translation used for 'revanced_spoof_video_streams_screen_title'.
'Android No SDK' must be kept untranslated. -->
<!-- 'Watch in VR' should be translated using the same localized wording YouTube displays for the menu item. --> <!-- 'Watch in VR' should be translated using the same localized wording YouTube displays for the menu item. -->
</patch> </patch>
<patch id="layout.buttons.overlay.hidePlayerOverlayButtonsPatch"> <patch id="layout.buttons.overlay.hidePlayerOverlayButtonsPatch">
@@ -267,10 +269,12 @@ Second \"item\" text"</string>
</patch> </patch>
<patch id="interaction.permanentrepeat.permanentRepeatPatch"> <patch id="interaction.permanentrepeat.permanentRepeatPatch">
</patch> </patch>
<patch id="layout.castbutton.hideCastButton"> <patch id="layout.buttons.hideButtons">
</patch> </patch>
<patch id="layout.compactheader.hideCategoryBar"> <patch id="layout.compactheader.hideCategoryBar">
</patch> </patch>
<patch id="layout.miniplayercolor.changeMiniplayerColor">
</patch>
<patch id="layout.navigationbar.navigationBarPatch"> <patch id="layout.navigationbar.navigationBarPatch">
<!-- 'Home' should be translated using the same localized wording YouTube Music displays for the tab. --> <!-- 'Home' should be translated using the same localized wording YouTube Music displays for the tab. -->
<!-- 'Samples' should be translated using the same localized wording YouTube Music displays for the tab. --> <!-- 'Samples' should be translated using the same localized wording YouTube Music displays for the tab. -->

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