Compare commits

..

39 Commits

Author SHA1 Message Date
semantic-release-bot
c162d65d5b chore: Release v5.14.0-dev.2 [skip ci]
# [5.14.0-dev.2](https://github.com/ReVanced/revanced-patches/compare/v5.14.0-dev.1...v5.14.0-dev.2) (2025-03-06)

### Bug Fixes

* **YouTube - Hide ads:** Hide new type of buttoned ad ([#4528](https://github.com/ReVanced/revanced-patches/issues/4528)) ([67dcd09](67dcd091c4))
2025-03-06 09:30:51 +00:00
ILoveOpenSourceApplications
67dcd091c4 fix(YouTube - Hide ads): Hide new type of buttoned ad (#4528) 2025-03-06 11:27:37 +02:00
github-actions[bot]
ac5ce2d67f chore: Sync translations (#4553) 2025-03-06 11:26:20 +02:00
LisoUseInAIKyrios
4b78d056fd ci: Pull Crowdin strings less often
Crowdin is starting to give errors and pulling less often may help.
2025-03-06 11:25:22 +02:00
semantic-release-bot
f8c901b2c1 chore: Release v5.14.0-dev.1 [skip ci]
# [5.14.0-dev.1](https://github.com/ReVanced/revanced-patches/compare/v5.13.1-dev.1...v5.14.0-dev.1) (2025-03-06)

### Features

* **YouTube - Remember video quality:** Add separate Shorts default quality settings ([#4543](https://github.com/ReVanced/revanced-patches/issues/4543)) ([2a67c31](2a67c312e1))
2025-03-06 06:49:39 +00:00
alieRN
2a67c312e1 feat(YouTube - Remember video quality): Add separate Shorts default quality settings (#4543) 2025-03-06 08:46:33 +02:00
semantic-release-bot
a7eed30f46 chore: Release v5.13.1-dev.1 [skip ci]
## [5.13.1-dev.1](https://github.com/ReVanced/revanced-patches/compare/v5.13.0...v5.13.1-dev.1) (2025-03-06)

### Bug Fixes

* **YouTube - Change form factor:** Restore Automotive form factor watch history menu, channel pages, and community posts ([#4541](https://github.com/ReVanced/revanced-patches/issues/4541)) ([e2de2d8](e2de2d8d44))
2025-03-06 06:28:57 +00:00
LisoUseInAIKyrios
e2de2d8d44 fix(YouTube - Change form factor): Restore Automotive form factor watch history menu, channel pages, and community posts (#4541) 2025-03-06 08:26:09 +02:00
github-actions[bot]
7ebbf356c0 chore: Sync translations (#4550) 2025-03-06 08:25:49 +02:00
ILoveOpenSourceApplications
2ced5c6e2a refactor(YouTube): Use more consistent strings (#4526) 2025-03-05 08:55:44 +02:00
semantic-release-bot
4a090ba659 chore: Release v5.13.0 [skip ci]
# [5.13.0](https://github.com/ReVanced/revanced-patches/compare/v5.12.0...v5.13.0) (2025-03-03)

### Bug Fixes

* **TikTok:** Resolve startup app crash ([3c52ab8](3c52ab8017))
* **TikTok:** Resolve startup app crash ([c817977](c8179776ed))
* **TikTok:** Resolve startup app crash ([d5aab3d](d5aab3d464))
* **TikTok:** Resolve startup app crash ([348f7e1](348f7e12cb))
* **YouTube - Copy video URL:** Use correct button ordering ([d77d5bf](d77d5bfbdd))
* **YouTube - Hide filter bar:** Fix `Hide in feed` not working in subscriptions feed ([#4512](https://github.com/ReVanced/revanced-patches/issues/4512)) ([1b60a72](1b60a72ede))
* **YouTube - Hide layout components:** Do not hide 'Show anyway' button in search results ([94fb367](94fb367618))
* **YouTube - Hide player components:** Show correct end video thumbnail if `Hide end screen suggested video` is enabled ([#4502](https://github.com/ReVanced/revanced-patches/issues/4502)) ([7cc939a](7cc939ab03))
* **YouTube - Hide video action buttons:** Move 'Disable Like and Subscribe glow' to action buttons settings menu ([7991c80](7991c80129))
* **YouTube - Return YouTube Dislike:** Use correct number formatting if using a different ReVanced language ([4ae1155](4ae1155e51))
* **YouTube - Spoof app version:** Force old settings menus if spoofing to older app targets ([#4490](https://github.com/ReVanced/revanced-patches/issues/4490)) ([0c0bbb8](0c0bbb8713))
* **YouTube - Spoof video streams:** Resolve playback issues with dynamic player config ([#4521](https://github.com/ReVanced/revanced-patches/issues/4521)) ([cbbf474](cbbf474c50))
* **YouTube - Swipe controls:** Adjust the overlay text size ([#4503](https://github.com/ReVanced/revanced-patches/issues/4503)) ([329f993](329f993024))
* **YouTube:** Do not hide player controls when using double tap to skip forward ([#4487](https://github.com/ReVanced/revanced-patches/issues/4487)) ([e664a24](e664a24f73))
* **YouTube:** Fix player button fade out animations ([#4469](https://github.com/ReVanced/revanced-patches/issues/4469)) ([a2c79f1](a2c79f1349))
* **YouTube:** Resolve button flickering when taping seekbar ([#4500](https://github.com/ReVanced/revanced-patches/issues/4500)) ([f5dd902](f5dd902915))

### Features

* **Infinity for Reddit:** Add support for Infinity for Reddit Plus ([#4511](https://github.com/ReVanced/revanced-patches/issues/4511)) ([fb8dbb4](fb8dbb4723))
* **NU.nl:** Add `Hide ads` and `Spoof Certificate` patch ([#4368](https://github.com/ReVanced/revanced-patches/issues/4368)) ([93ea250](93ea250bf3))
* **YouTube - Navigation buttons:** Add 'Hide notifications' setting ([#4485](https://github.com/ReVanced/revanced-patches/issues/4485)) ([d6eae01](d6eae01e12))
* **YouTube - Swipe controls:** Swipe controls UI improvements ([#4422](https://github.com/ReVanced/revanced-patches/issues/4422)) ([3548359](354835966d))
2025-03-03 07:01:16 +00:00
LisoUseInAIKyrios
cb609a6d9d chore: Merge branch dev to main (#4470) 2025-03-03 08:57:51 +02:00
github-actions[bot]
42e6de9e8f chore: Sync translations (#4525) 2025-03-03 08:55:55 +02:00
semantic-release-bot
c4a5b9a28c chore: Release v5.13.0-dev.19 [skip ci]
# [5.13.0-dev.19](https://github.com/ReVanced/revanced-patches/compare/v5.13.0-dev.18...v5.13.0-dev.19) (2025-03-02)

### Bug Fixes

* **YouTube - Spoof video streams:** Resolve playback issues with dynamic player config ([#4521](https://github.com/ReVanced/revanced-patches/issues/4521)) ([cbbf474](cbbf474c50))
2025-03-02 15:44:18 +00:00
github-actions[bot]
c86c85947f chore: Sync translations (#4523) 2025-03-02 17:40:33 +02:00
LisoUseInAIKyrios
cbbf474c50 fix(YouTube - Spoof video streams): Resolve playback issues with dynamic player config (#4521) 2025-03-02 17:38:43 +02:00
semantic-release-bot
f147b7b73d chore: Release v5.13.0-dev.18 [skip ci]
# [5.13.0-dev.18](https://github.com/ReVanced/revanced-patches/compare/v5.13.0-dev.17...v5.13.0-dev.18) (2025-02-28)

### Features

* **Infinity for Reddit:** Add support for Infinity for Reddit Plus ([#4511](https://github.com/ReVanced/revanced-patches/issues/4511)) ([fb8dbb4](fb8dbb4723))
2025-02-28 08:33:53 +00:00
tillcash
fb8dbb4723 feat(Infinity for Reddit): Add support for Infinity for Reddit Plus (#4511) 2025-02-28 10:31:02 +02:00
github-actions[bot]
1e0d27e689 chore: Sync translations (#4517) 2025-02-28 10:30:30 +02:00
semantic-release-bot
a2185bce09 chore: Release v5.13.0-dev.17 [skip ci]
# [5.13.0-dev.17](https://github.com/ReVanced/revanced-patches/compare/v5.13.0-dev.16...v5.13.0-dev.17) (2025-02-27)

### Bug Fixes

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

### Features

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

### Bug Fixes

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

### Bug Fixes

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

### Bug Fixes

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

### Bug Fixes

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

### Bug Fixes

* **TikTok:** Resolve startup app crash ([3c52ab8](3c52ab8017))
2025-02-23 07:31:27 +00:00
LisoUseInAIKyrios
3c52ab8017 fix(TikTok): Resolve startup app crash 2025-02-23 09:28:37 +02:00
github-actions[bot]
d1641a6e3d chore: Sync translations (#4495) 2025-02-23 09:26:22 +02:00
157 changed files with 4064 additions and 1737 deletions

View File

@@ -2,7 +2,7 @@ name: Pull strings
on: on:
schedule: schedule:
- cron: "0 */6 * * *" - cron: "0 */8 * * *"
workflow_dispatch: workflow_dispatch:
jobs: jobs:

View File

@@ -1,3 +1,117 @@
# [5.14.0-dev.2](https://github.com/ReVanced/revanced-patches/compare/v5.14.0-dev.1...v5.14.0-dev.2) (2025-03-06)
### Bug Fixes
* **YouTube - Hide ads:** Hide new type of buttoned ad ([#4528](https://github.com/ReVanced/revanced-patches/issues/4528)) ([4387a7b](https://github.com/ReVanced/revanced-patches/commit/4387a7b131f49729e902e008bb4cec073635c040))
# [5.14.0-dev.1](https://github.com/ReVanced/revanced-patches/compare/v5.13.1-dev.1...v5.14.0-dev.1) (2025-03-06)
### Features
* **YouTube - Remember video quality:** Add separate Shorts default quality settings ([#4543](https://github.com/ReVanced/revanced-patches/issues/4543)) ([88142ab](https://github.com/ReVanced/revanced-patches/commit/88142ab464192b564b1b8d56a6b45663f77f5e00))
## [5.13.1-dev.1](https://github.com/ReVanced/revanced-patches/compare/v5.13.0...v5.13.1-dev.1) (2025-03-06)
### Bug Fixes
* **YouTube - Change form factor:** Restore Automotive form factor watch history menu, channel pages, and community posts ([#4541](https://github.com/ReVanced/revanced-patches/issues/4541)) ([aa5c001](https://github.com/ReVanced/revanced-patches/commit/aa5c001968446e5270c756256724e917009612cd))
# [5.13.0](https://github.com/ReVanced/revanced-patches/compare/v5.12.0...v5.13.0) (2025-03-03)
### Bug Fixes
* **TikTok:** Resolve startup app crash ([18c0fc2](https://github.com/ReVanced/revanced-patches/commit/18c0fc2a7f186f50a904fd25dbaa739abdd24993))
* **TikTok:** Resolve startup app crash ([6466398](https://github.com/ReVanced/revanced-patches/commit/64663983b84de1f28636205f61bf0a24c83968d1))
* **TikTok:** Resolve startup app crash ([c14bc24](https://github.com/ReVanced/revanced-patches/commit/c14bc244550de30eca975ca7c09e8eb0c47534b5))
* **TikTok:** Resolve startup app crash ([d700076](https://github.com/ReVanced/revanced-patches/commit/d7000768a5e5a688c9f4e48858ac34e352222c1e))
* **YouTube - Copy video URL:** Use correct button ordering ([5e622cc](https://github.com/ReVanced/revanced-patches/commit/5e622ccf66d34af31c6026fa7f4d332460c6ecb0))
* **YouTube - Hide filter bar:** Fix `Hide in feed` not working in subscriptions feed ([#4512](https://github.com/ReVanced/revanced-patches/issues/4512)) ([634d0ee](https://github.com/ReVanced/revanced-patches/commit/634d0ee12e31491c7ee1d4ceb002daf8366a3c15))
* **YouTube - Hide layout components:** Do not hide 'Show anyway' button in search results ([4ac8854](https://github.com/ReVanced/revanced-patches/commit/4ac8854b99808a8957f3b0b7438e1e0cdedffbaf))
* **YouTube - Hide player components:** Show correct end video thumbnail if `Hide end screen suggested video` is enabled ([#4502](https://github.com/ReVanced/revanced-patches/issues/4502)) ([6c4885a](https://github.com/ReVanced/revanced-patches/commit/6c4885a1d5dfff50100b01840b5552d92e83ee4a))
* **YouTube - Hide video action buttons:** Move 'Disable Like and Subscribe glow' to action buttons settings menu ([29b265d](https://github.com/ReVanced/revanced-patches/commit/29b265d8fdaa48502650be9623bfc518a57a0bb1))
* **YouTube - Return YouTube Dislike:** Use correct number formatting if using a different ReVanced language ([edf66f4](https://github.com/ReVanced/revanced-patches/commit/edf66f4e16d46156cb8b8e31d18cb8dbcb87737e))
* **YouTube - Spoof app version:** Force old settings menus if spoofing to older app targets ([#4490](https://github.com/ReVanced/revanced-patches/issues/4490)) ([45e7c46](https://github.com/ReVanced/revanced-patches/commit/45e7c46dd9c70c926b8b1a97ada668f90f5f6f8c))
* **YouTube - Spoof video streams:** Resolve playback issues with dynamic player config ([#4521](https://github.com/ReVanced/revanced-patches/issues/4521)) ([647e764](https://github.com/ReVanced/revanced-patches/commit/647e7642efc0c00db17ccb6a620d1c96ccf4afed))
* **YouTube - Swipe controls:** Adjust the overlay text size ([#4503](https://github.com/ReVanced/revanced-patches/issues/4503)) ([6dc4bf7](https://github.com/ReVanced/revanced-patches/commit/6dc4bf75e09ed6f05534919d7b769b720043abce))
* **YouTube:** Do not hide player controls when using double tap to skip forward ([#4487](https://github.com/ReVanced/revanced-patches/issues/4487)) ([63fe870](https://github.com/ReVanced/revanced-patches/commit/63fe870d48ca2217327b952bde241b7f16ced850))
* **YouTube:** Fix player button fade out animations ([#4469](https://github.com/ReVanced/revanced-patches/issues/4469)) ([bf8e775](https://github.com/ReVanced/revanced-patches/commit/bf8e7759f9bdbdfef419a879fb3dd7cf0dff0098))
* **YouTube:** Resolve button flickering when taping seekbar ([#4500](https://github.com/ReVanced/revanced-patches/issues/4500)) ([1f08047](https://github.com/ReVanced/revanced-patches/commit/1f08047b48cc9555a4887d16ec7219a55a77251f))
### Features
* **Infinity for Reddit:** Add support for Infinity for Reddit Plus ([#4511](https://github.com/ReVanced/revanced-patches/issues/4511)) ([d74732b](https://github.com/ReVanced/revanced-patches/commit/d74732b7596104321bde263201d95649e4bd0eee))
* **NU.nl:** Add `Hide ads` and `Spoof Certificate` patch ([#4368](https://github.com/ReVanced/revanced-patches/issues/4368)) ([f3268fb](https://github.com/ReVanced/revanced-patches/commit/f3268fb03ca25fb5465e36015b6c9dec2c84a655))
* **YouTube - Navigation buttons:** Add 'Hide notifications' setting ([#4485](https://github.com/ReVanced/revanced-patches/issues/4485)) ([506d241](https://github.com/ReVanced/revanced-patches/commit/506d2414bbc760e764e5a514b32926083d6ecb6b))
* **YouTube - Swipe controls:** Swipe controls UI improvements ([#4422](https://github.com/ReVanced/revanced-patches/issues/4422)) ([198e4d2](https://github.com/ReVanced/revanced-patches/commit/198e4d2a2315c24a09eb9ecfefbd131a75384d2c))
# [5.13.0-dev.19](https://github.com/ReVanced/revanced-patches/compare/v5.13.0-dev.18...v5.13.0-dev.19) (2025-03-02)
### Bug Fixes
* **YouTube - Spoof video streams:** Resolve playback issues with dynamic player config ([#4521](https://github.com/ReVanced/revanced-patches/issues/4521)) ([647e764](https://github.com/ReVanced/revanced-patches/commit/647e7642efc0c00db17ccb6a620d1c96ccf4afed))
# [5.13.0-dev.18](https://github.com/ReVanced/revanced-patches/compare/v5.13.0-dev.17...v5.13.0-dev.18) (2025-02-28)
### Features
* **Infinity for Reddit:** Add support for Infinity for Reddit Plus ([#4511](https://github.com/ReVanced/revanced-patches/issues/4511)) ([d74732b](https://github.com/ReVanced/revanced-patches/commit/d74732b7596104321bde263201d95649e4bd0eee))
# [5.13.0-dev.17](https://github.com/ReVanced/revanced-patches/compare/v5.13.0-dev.16...v5.13.0-dev.17) (2025-02-27)
### Bug Fixes
* **YouTube - Hide filter bar:** Fix `Hide in feed` not working in subscriptions feed ([#4512](https://github.com/ReVanced/revanced-patches/issues/4512)) ([634d0ee](https://github.com/ReVanced/revanced-patches/commit/634d0ee12e31491c7ee1d4ceb002daf8366a3c15))
# [5.13.0-dev.16](https://github.com/ReVanced/revanced-patches/compare/v5.13.0-dev.15...v5.13.0-dev.16) (2025-02-27)
### Features
* **NU.nl:** Add `Hide ads` and `Spoof Certificate` patch ([#4368](https://github.com/ReVanced/revanced-patches/issues/4368)) ([f3268fb](https://github.com/ReVanced/revanced-patches/commit/f3268fb03ca25fb5465e36015b6c9dec2c84a655))
# [5.13.0-dev.15](https://github.com/ReVanced/revanced-patches/compare/v5.13.0-dev.14...v5.13.0-dev.15) (2025-02-25)
### Bug Fixes
* **YouTube - Hide player components:** Show correct end video thumbnail if `Hide end screen suggested video` is enabled ([#4502](https://github.com/ReVanced/revanced-patches/issues/4502)) ([6c4885a](https://github.com/ReVanced/revanced-patches/commit/6c4885a1d5dfff50100b01840b5552d92e83ee4a))
# [5.13.0-dev.14](https://github.com/ReVanced/revanced-patches/compare/v5.13.0-dev.13...v5.13.0-dev.14) (2025-02-25)
### Bug Fixes
* **YouTube - Swipe controls:** Adjust the overlay text size ([#4503](https://github.com/ReVanced/revanced-patches/issues/4503)) ([6dc4bf7](https://github.com/ReVanced/revanced-patches/commit/6dc4bf75e09ed6f05534919d7b769b720043abce))
# [5.13.0-dev.13](https://github.com/ReVanced/revanced-patches/compare/v5.13.0-dev.12...v5.13.0-dev.13) (2025-02-24)
### Bug Fixes
* **YouTube:** Resolve button flickering when taping seekbar ([#4500](https://github.com/ReVanced/revanced-patches/issues/4500)) ([1f08047](https://github.com/ReVanced/revanced-patches/commit/1f08047b48cc9555a4887d16ec7219a55a77251f))
# [5.13.0-dev.12](https://github.com/ReVanced/revanced-patches/compare/v5.13.0-dev.11...v5.13.0-dev.12) (2025-02-24)
### Bug Fixes
* **YouTube - Return YouTube Dislike:** Use correct number formatting if using a different ReVanced language ([edf66f4](https://github.com/ReVanced/revanced-patches/commit/edf66f4e16d46156cb8b8e31d18cb8dbcb87737e))
# [5.13.0-dev.11](https://github.com/ReVanced/revanced-patches/compare/v5.13.0-dev.10...v5.13.0-dev.11) (2025-02-23)
### Bug Fixes
* **TikTok:** Resolve startup app crash ([18c0fc2](https://github.com/ReVanced/revanced-patches/commit/18c0fc2a7f186f50a904fd25dbaa739abdd24993))
# [5.13.0-dev.10](https://github.com/ReVanced/revanced-patches/compare/v5.13.0-dev.9...v5.13.0-dev.10) (2025-02-22) # [5.13.0-dev.10](https://github.com/ReVanced/revanced-patches/compare/v5.13.0-dev.9...v5.13.0-dev.10) (2025-02-22)

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -356,33 +356,24 @@ public class Utils {
public static Context getContext() { public static Context getContext() {
if (context == null) { if (context == null) {
Logger.initializationException(Utils.class, "Context is null, returning null!", null); Logger.initializationException(Utils.class, "Context is not set by extension hook, returning null", null);
} }
return context; return context;
} }
public static void setContext(Context appContext) { public static void setContext(Context appContext) {
// Must initially set context as the language settings needs it. // Must initially set context to check the app language.
context = appContext; context = appContext;
Logger.initializationInfo(Utils.class, "Set context: " + appContext);
AppLanguage language = BaseSettings.REVANCED_LANGUAGE.get(); AppLanguage language = BaseSettings.REVANCED_LANGUAGE.get();
if (language != AppLanguage.DEFAULT) { if (language != AppLanguage.DEFAULT) {
// Create a new context with the desired language. // Create a new context with the desired language.
Logger.printDebug(() -> "Using app language: " + language);
Configuration config = appContext.getResources().getConfiguration(); Configuration config = appContext.getResources().getConfiguration();
config.setLocale(language.getLocale()); config.setLocale(language.getLocale());
context = appContext.createConfigurationContext(config); context = appContext.createConfigurationContext(config);
} }
// In some apps like TikTok, the Setting classes can load in weird orders due to cyclic class dependencies.
// Calling the regular printDebug method here can cause a Settings context null pointer exception,
// even though the context is already set before the call.
//
// The initialization logger methods do not directly or indirectly
// reference the Context or any Settings and are unaffected by this problem.
//
// Info level also helps debug if a patch hook is called before
// the context is set since debug logging is off by default.
Logger.initializationInfo(Utils.class, "Set context: " + appContext);
} }
public static void setClipboard(@NonNull String text) { public static void setClipboard(@NonNull String text) {

View File

@@ -158,16 +158,16 @@ public abstract class AbstractPreferenceFragment extends PreferenceFragment {
/** /**
* Syncs all UI Preferences to any {@link Setting} they represent. * Syncs all UI Preferences to any {@link Setting} they represent.
*/ */
private void updatePreferenceScreen(@NonNull PreferenceScreen screen, private void updatePreferenceScreen(@NonNull PreferenceGroup group,
boolean syncSettingValue, boolean syncSettingValue,
boolean applySettingToPreference) { boolean applySettingToPreference) {
// Alternatively this could iterate thru all Settings and check for any matching Preferences, // Alternatively this could iterate thru all Settings and check for any matching Preferences,
// but there are many more Settings than UI preferences so it's more efficient to only check // but there are many more Settings than UI preferences so it's more efficient to only check
// the Preferences. // the Preferences.
for (int i = 0, prefCount = screen.getPreferenceCount(); i < prefCount; i++) { for (int i = 0, prefCount = group.getPreferenceCount(); i < prefCount; i++) {
Preference pref = screen.getPreference(i); Preference pref = group.getPreference(i);
if (pref instanceof PreferenceScreen) { if (pref instanceof PreferenceGroup subGroup) {
updatePreferenceScreen((PreferenceScreen) pref, syncSettingValue, applySettingToPreference); updatePreferenceScreen(subGroup, syncSettingValue, applySettingToPreference);
} else if (pref.hasKey()) { } else if (pref.hasKey()) {
String key = pref.getKey(); String key = pref.getKey();
Setting<?> setting = Setting.getSettingFromPath(key); Setting<?> setting = Setting.getSettingFromPath(key);

View File

@@ -0,0 +1,34 @@
package app.revanced.extension.shared.settings.preference;
import android.annotation.SuppressLint;
import android.content.Context;
import android.preference.PreferenceCategory;
import android.util.AttributeSet;
import android.view.View;
import android.view.ViewGroup;
/**
* Empty preference category with no title, used to organize and group related preferences together.
*/
@SuppressWarnings({"unused", "deprecation"})
public class NoTitlePreferenceCategory extends PreferenceCategory {
public NoTitlePreferenceCategory(Context context, AttributeSet attrs) {
super(context, attrs);
}
public NoTitlePreferenceCategory(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
public NoTitlePreferenceCategory(Context context) {
super(context);
}
@Override
@SuppressLint("MissingSuperCall")
protected View onCreateView(ViewGroup parent) {
// Return an empty, zero-height view to eliminate spacing
return new View(getContext());
}
}

View File

@@ -107,6 +107,21 @@ public class SpoofVideoStreamsPatch {
return false; return false;
} }
/**
* Injection point.
* Turns off a feature flag that interferes with spoofing.
*/
public static boolean useMediaFetchHotConfigReplacement(boolean original) {
if (original) {
Logger.printDebug(() -> "useMediaFetchHotConfigReplacement is set on");
}
if (!SPOOF_STREAMING_DATA) {
return original;
}
return false;
}
/** /**
* Injection point. * Injection point.
*/ */

View File

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

View File

@@ -1,7 +1,7 @@
package app.revanced.extension.youtube.patches; package app.revanced.extension.youtube.patches;
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.ShortsPlayerState;
@SuppressWarnings("unused") @SuppressWarnings("unused")
public class BackgroundPlaybackPatch { public class BackgroundPlaybackPatch {
@@ -23,16 +23,7 @@ public class BackgroundPlaybackPatch {
// 7. Close the Short // 7. Close the Short
// 8. Resume playing the regular video // 8. Resume playing the regular video
// 9. Minimize the app (PIP should appear) // 9. Minimize the app (PIP should appear)
if (!VideoInformation.lastVideoIdIsShort()) { return !ShortsPlayerState.isOpen();
return true; // Definitely is not a Short.
}
// TODO: Add better hook.
// Might be a Shorts, or might be a prior regular video on screen again after a Shorts was closed.
// This incorrectly prevents PIP if player is in WATCH_WHILE_MINIMIZED after closing a Shorts,
// But there's no way around this unless an additional hook is added to definitively detect
// the Shorts player is on screen. This use case is unusual anyways so it's not a huge concern.
return !PlayerType.getCurrent().isNoneHiddenOrMinimized();
} }
/** /**

View File

@@ -1,9 +1,17 @@
package app.revanced.extension.youtube.patches; package app.revanced.extension.youtube.patches;
import static app.revanced.extension.youtube.shared.NavigationBar.NavigationButton;
import android.view.View;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import app.revanced.extension.shared.Utils; import java.util.Objects;
import app.revanced.extension.shared.Logger;
import app.revanced.extension.youtube.settings.Settings; import app.revanced.extension.youtube.settings.Settings;
import app.revanced.extension.youtube.shared.NavigationBar;
import app.revanced.extension.youtube.shared.PlayerType;
@SuppressWarnings("unused") @SuppressWarnings("unused")
public class ChangeFormFactorPatch { public class ChangeFormFactorPatch {
@@ -41,14 +49,57 @@ public class ChangeFormFactorPatch {
@Nullable @Nullable
private static final Integer FORM_FACTOR_TYPE = Settings.CHANGE_FORM_FACTOR.get().formFactorType; private static final Integer FORM_FACTOR_TYPE = Settings.CHANGE_FORM_FACTOR.get().formFactorType;
private static final boolean USING_AUTOMOTIVE_TYPE = Objects.requireNonNull(
FormFactor.AUTOMOTIVE.formFactorType).equals(FORM_FACTOR_TYPE);
/** /**
* Injection point. * Injection point.
*/ */
public static int getFormFactor(int original) { public static int getFormFactor(int original) {
return FORM_FACTOR_TYPE == null if (FORM_FACTOR_TYPE == null) return original;
? original
: FORM_FACTOR_TYPE; if (USING_AUTOMOTIVE_TYPE) {
// Do not change if the player is opening or is opened,
// otherwise the video description cannot be opened.
PlayerType current = PlayerType.getCurrent();
if (current.isMaximizedOrFullscreen() || current == PlayerType.WATCH_WHILE_SLIDING_MINIMIZED_MAXIMIZED) {
Logger.printDebug(() -> "Using original form factor for player");
return original;
}
if (!NavigationBar.isSearchBarActive()) {
// Automotive type shows error 400 when opening a channel page and using some explore tab.
// This is a bug in unpatched YouTube that occurs on actual Android Automotive devices.
// Work around the issue by using the original form factor if not in search and the
// navigation back button is present.
if (NavigationBar.isBackButtonVisible()) {
Logger.printDebug(() -> "Using original form factor, as back button is visible without search present");
return original;
}
// Do not change library tab otherwise watch history is hidden.
// Do this check last since the current navigation button is required.
if (NavigationButton.getSelectedNavigationButton() == NavigationButton.LIBRARY) {
return original;
}
}
}
return FORM_FACTOR_TYPE;
} }
/**
* Injection point.
*/
public static void navigationTabCreated(NavigationButton button, View tabView) {
// On first startup of the app the navigation buttons are fetched and updated.
// If the user immediately opens the 'You' or opens a video, then the call to
// update the navigtation buttons will use the non automotive form factor
// and the explore tab is missing.
// Fixing this is not so simple because of the concurrent calls for the player and You tab.
// For now, always hide the explore tab.
if (USING_AUTOMOTIVE_TYPE && button == NavigationButton.EXPLORE) {
tabView.setVisibility(View.GONE);
}
}
} }

View File

@@ -1,7 +1,7 @@
package app.revanced.extension.youtube.patches; package app.revanced.extension.youtube.patches;
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.ShortsPlayerState;
@SuppressWarnings("unused") @SuppressWarnings("unused")
public class DisableAutoCaptionsPatch { public class DisableAutoCaptionsPatch {
@@ -14,7 +14,7 @@ public class DisableAutoCaptionsPatch {
public static boolean autoCaptionsEnabled() { public static boolean autoCaptionsEnabled() {
return Settings.AUTO_CAPTIONS.get() return Settings.AUTO_CAPTIONS.get()
// Do not use auto captions for Shorts. // Do not use auto captions for Shorts.
&& !PlayerType.getCurrent().isNoneHiddenOrSlidingMinimized(); && ShortsPlayerState.isOpen();
} }
} }

View File

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

View File

@@ -24,7 +24,7 @@ public final class EnableDebuggingPatch {
/** /**
* 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 (featureFlags.putIfAbsent(flag, true) == null) {
Logger.printDebug(() -> "boolean feature is enabled: " + flag); Logger.printDebug(() -> "boolean feature is enabled: " + flag);

View File

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

View File

@@ -1,8 +1,11 @@
package app.revanced.extension.youtube.patches; package app.revanced.extension.youtube.patches;
import android.view.View;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import app.revanced.extension.youtube.shared.PlayerType; import app.revanced.extension.youtube.shared.PlayerType;
import app.revanced.extension.youtube.shared.ShortsPlayerState;
import app.revanced.extension.youtube.shared.VideoState; import app.revanced.extension.youtube.shared.VideoState;
@SuppressWarnings("unused") @SuppressWarnings("unused")
@@ -24,4 +27,26 @@ public class PlayerTypeHookPatch {
VideoState.setFromString(youTubeVideoState.name()); VideoState.setFromString(youTubeVideoState.name());
} }
/**
* Injection point.
*
* Add a listener to the shorts player overlay View.
* Triggered when a shorts player is attached or detached to Windows.
*
* @param view shorts player overlay (R.id.reel_watch_player).
*/
public static void onShortsCreate(View view) {
view.addOnAttachStateChangeListener(new View.OnAttachStateChangeListener() {
@Override
public void onViewAttachedToWindow(@Nullable View v) {
ShortsPlayerState.setOpen(true);
}
@Override
public void onViewDetachedFromWindow(@Nullable View v) {
ShortsPlayerState.setOpen(false);
}
});
}
} }

View File

@@ -74,6 +74,7 @@ public final class AdsFilter extends Filter {
"video_display_button_group_layout", "video_display_button_group_layout",
"landscape_image_wide_button_layout", "landscape_image_wide_button_layout",
"video_display_carousel_button_group_layout", "video_display_carousel_button_group_layout",
"video_display_full_buttoned_short_dr_layout",
"compact_landscape_image_layout", // Tablet layout search results. "compact_landscape_image_layout", // Tablet layout search results.
"text_image_no_button_layout" // Tablet layout search results. "text_image_no_button_layout" // Tablet layout search results.
); );

View File

@@ -98,6 +98,11 @@ public final class LayoutComponentsFilter extends Filter {
"compact_banner" "compact_banner"
); );
final var subscriptionsChipBar = new StringFilterGroup(
Settings.HIDE_FILTER_BAR_FEED_IN_FEED,
"subscriptions_chip_bar"
);
inFeedSurvey = new StringFilterGroup( inFeedSurvey = new StringFilterGroup(
Settings.HIDE_FEED_SURVEY, Settings.HIDE_FEED_SURVEY,
"in_feed_survey", "in_feed_survey",
@@ -264,6 +269,7 @@ public final class LayoutComponentsFilter extends Filter {
singleItemInformationPanel, singleItemInformationPanel,
emergencyBox, emergencyBox,
subscribersCommunityGuidelines, subscribersCommunityGuidelines,
subscriptionsChipBar,
channelGuidelines, channelGuidelines,
audioTrackButton, audioTrackButton,
artistCard, artistCard,

View File

@@ -12,15 +12,19 @@ import java.util.List;
import app.revanced.extension.shared.Logger; import app.revanced.extension.shared.Logger;
import app.revanced.extension.shared.Utils; import app.revanced.extension.shared.Utils;
import app.revanced.extension.shared.settings.BooleanSetting;
import app.revanced.extension.shared.settings.IntegerSetting; import app.revanced.extension.shared.settings.IntegerSetting;
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.ShortsPlayerState;
@SuppressWarnings("unused") @SuppressWarnings("unused")
public class RememberVideoQualityPatch { public class RememberVideoQualityPatch {
private static final int AUTOMATIC_VIDEO_QUALITY_VALUE = -2; private static final int AUTOMATIC_VIDEO_QUALITY_VALUE = -2;
private static final IntegerSetting wifiQualitySetting = Settings.VIDEO_QUALITY_DEFAULT_WIFI; private static final IntegerSetting videoQualityWifi = Settings.VIDEO_QUALITY_DEFAULT_WIFI;
private static final IntegerSetting mobileQualitySetting = Settings.VIDEO_QUALITY_DEFAULT_MOBILE; private static final IntegerSetting videoQualityMobile = Settings.VIDEO_QUALITY_DEFAULT_MOBILE;
private static final IntegerSetting shortsQualityWifi = Settings.SHORTS_QUALITY_DEFAULT_WIFI;
private static final IntegerSetting shortsQualityMobile = Settings.SHORTS_QUALITY_DEFAULT_MOBILE;
private static boolean qualityNeedsUpdating; private static boolean qualityNeedsUpdating;
@@ -41,17 +45,29 @@ public class RememberVideoQualityPatch {
@Nullable @Nullable
private static List<Integer> videoQualities; private static List<Integer> videoQualities;
private static boolean shouldRememberVideoQuality() {
BooleanSetting preference = ShortsPlayerState.isOpen() ?
Settings.REMEMBER_SHORTS_QUALITY_LAST_SELECTED
: Settings.REMEMBER_VIDEO_QUALITY_LAST_SELECTED;
return preference.get();
}
private static void changeDefaultQuality(int defaultQuality) { private static void changeDefaultQuality(int defaultQuality) {
String networkTypeMessage; String networkTypeMessage;
boolean useShortsPreference = ShortsPlayerState.isOpen();
if (Utils.getNetworkType() == NetworkType.MOBILE) { if (Utils.getNetworkType() == NetworkType.MOBILE) {
mobileQualitySetting.save(defaultQuality); if (useShortsPreference) shortsQualityMobile.save(defaultQuality);
else videoQualityMobile.save(defaultQuality);
networkTypeMessage = str("revanced_remember_video_quality_mobile"); networkTypeMessage = str("revanced_remember_video_quality_mobile");
} else { } else {
wifiQualitySetting.save(defaultQuality); if (useShortsPreference) shortsQualityWifi.save(defaultQuality);
else videoQualityWifi.save(defaultQuality);
networkTypeMessage = str("revanced_remember_video_quality_wifi"); networkTypeMessage = str("revanced_remember_video_quality_wifi");
} }
Utils.showToastShort( Utils.showToastShort(str(
str("revanced_remember_video_quality_toast", networkTypeMessage, (defaultQuality + "p"))); useShortsPreference ? "revanced_remember_video_quality_toast_shorts" : "revanced_remember_video_quality_toast",
networkTypeMessage, (defaultQuality + "p")
));
} }
/** /**
@@ -62,9 +78,10 @@ public class RememberVideoQualityPatch {
*/ */
public static int setVideoQuality(Object[] qualities, final int originalQualityIndex, Object qInterface, String qIndexMethod) { public static int setVideoQuality(Object[] qualities, final int originalQualityIndex, Object qInterface, String qIndexMethod) {
try { try {
boolean useShortsPreference = ShortsPlayerState.isOpen();
final int preferredQuality = Utils.getNetworkType() == NetworkType.MOBILE final int preferredQuality = Utils.getNetworkType() == NetworkType.MOBILE
? mobileQualitySetting.get() ? (useShortsPreference ? shortsQualityMobile : videoQualityMobile).get()
: wifiQualitySetting.get(); : (useShortsPreference ? shortsQualityWifi : videoQualityWifi).get();
if (!userChangedDefaultQuality && preferredQuality == AUTOMATIC_VIDEO_QUALITY_VALUE) { if (!userChangedDefaultQuality && preferredQuality == AUTOMATIC_VIDEO_QUALITY_VALUE) {
return originalQualityIndex; // Nothing to do. return originalQualityIndex; // Nothing to do.
@@ -141,17 +158,17 @@ public class RememberVideoQualityPatch {
* Injection point. Old quality menu. * Injection point. Old quality menu.
*/ */
public static void userChangedQuality(int selectedQualityIndex) { public static void userChangedQuality(int selectedQualityIndex) {
if (!Settings.REMEMBER_VIDEO_QUALITY_LAST_SELECTED.get()) return; if (shouldRememberVideoQuality()) {
userSelectedQualityIndex = selectedQualityIndex;
userSelectedQualityIndex = selectedQualityIndex; userChangedDefaultQuality = true;
userChangedDefaultQuality = true; }
} }
/** /**
* Injection point. New quality menu. * Injection point. New quality menu.
*/ */
public static void userChangedQualityInNewFlyout(int selectedQuality) { public static void userChangedQualityInNewFlyout(int selectedQuality) {
if (!Settings.REMEMBER_VIDEO_QUALITY_LAST_SELECTED.get()) return; if (!shouldRememberVideoQuality()) return;
changeDefaultQuality(selectedQuality); // Quality is human readable resolution (ie: 1080). changeDefaultQuality(selectedQuality); // Quality is human readable resolution (ie: 1080).
} }

View File

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

View File

@@ -48,10 +48,13 @@ import app.revanced.extension.youtube.sponsorblock.SponsorBlockSettings;
public class Settings extends BaseSettings { public class Settings extends BaseSettings {
// Video // Video
public static final BooleanSetting DISABLE_HDR_VIDEO = new BooleanSetting("revanced_disable_hdr_video", FALSE); public static final BooleanSetting DISABLE_HDR_VIDEO = new BooleanSetting("revanced_disable_hdr_video", FALSE);
public static final BooleanSetting RESTORE_OLD_VIDEO_QUALITY_MENU = new BooleanSetting("revanced_restore_old_video_quality_menu", TRUE);
public static final BooleanSetting REMEMBER_VIDEO_QUALITY_LAST_SELECTED = new BooleanSetting("revanced_remember_video_quality_last_selected", FALSE);
public static final IntegerSetting VIDEO_QUALITY_DEFAULT_WIFI = new IntegerSetting("revanced_video_quality_default_wifi", -2); public static final IntegerSetting VIDEO_QUALITY_DEFAULT_WIFI = new IntegerSetting("revanced_video_quality_default_wifi", -2);
public static final IntegerSetting VIDEO_QUALITY_DEFAULT_MOBILE = new IntegerSetting("revanced_video_quality_default_mobile", -2); public static final IntegerSetting VIDEO_QUALITY_DEFAULT_MOBILE = new IntegerSetting("revanced_video_quality_default_mobile", -2);
public static final BooleanSetting REMEMBER_VIDEO_QUALITY_LAST_SELECTED = new BooleanSetting("revanced_remember_video_quality_last_selected", FALSE);
public static final IntegerSetting SHORTS_QUALITY_DEFAULT_WIFI = new IntegerSetting("revanced_shorts_quality_default_wifi", -2, true);
public static final IntegerSetting SHORTS_QUALITY_DEFAULT_MOBILE = new IntegerSetting("revanced_shorts_quality_default_mobile", -2, true);
public static final BooleanSetting REMEMBER_SHORTS_QUALITY_LAST_SELECTED = new BooleanSetting("revanced_remember_shorts_quality_last_selected", FALSE);
public static final BooleanSetting RESTORE_OLD_VIDEO_QUALITY_MENU = new BooleanSetting("revanced_restore_old_video_quality_menu", TRUE);
// Speed // Speed
public static final FloatSetting SPEED_TAP_AND_HOLD = new FloatSetting("revanced_speed_tap_and_hold", 2.0f, true); public static final FloatSetting SPEED_TAP_AND_HOLD = new FloatSetting("revanced_speed_tap_and_hold", 2.0f, true);
public static final BooleanSetting REMEMBER_PLAYBACK_SPEED_LAST_SELECTED = new BooleanSetting("revanced_remember_playback_speed_last_selected", FALSE); public static final BooleanSetting REMEMBER_PLAYBACK_SPEED_LAST_SELECTED = new BooleanSetting("revanced_remember_playback_speed_last_selected", FALSE);
@@ -125,7 +128,6 @@ public class Settings extends BaseSettings {
public static final BooleanSetting COPY_VIDEO_URL_TIMESTAMP = new BooleanSetting("revanced_copy_video_url_timestamp", TRUE); public static final BooleanSetting COPY_VIDEO_URL_TIMESTAMP = new BooleanSetting("revanced_copy_video_url_timestamp", TRUE);
public static final BooleanSetting DISABLE_FULLSCREEN_AMBIENT_MODE = new BooleanSetting("revanced_disable_fullscreen_ambient_mode", TRUE, true); public static final BooleanSetting DISABLE_FULLSCREEN_AMBIENT_MODE = new BooleanSetting("revanced_disable_fullscreen_ambient_mode", TRUE, true);
public static final BooleanSetting DISABLE_ROLLING_NUMBER_ANIMATIONS = new BooleanSetting("revanced_disable_rolling_number_animations", FALSE); public static final BooleanSetting DISABLE_ROLLING_NUMBER_ANIMATIONS = new BooleanSetting("revanced_disable_rolling_number_animations", FALSE);
public static final BooleanSetting DISABLE_SUGGESTED_VIDEO_END_SCREEN = new BooleanSetting("revanced_disable_suggested_video_end_screen", FALSE, true);
public static final EnumSetting<FullscreenMode> EXIT_FULLSCREEN = new EnumSetting<>("revanced_exit_fullscreen", FullscreenMode.DISABLED); public static final EnumSetting<FullscreenMode> EXIT_FULLSCREEN = new EnumSetting<>("revanced_exit_fullscreen", FullscreenMode.DISABLED);
public static final BooleanSetting HIDE_AUTOPLAY_BUTTON = new BooleanSetting("revanced_hide_autoplay_button", TRUE, true); public static final BooleanSetting HIDE_AUTOPLAY_BUTTON = new BooleanSetting("revanced_hide_autoplay_button", TRUE, true);
public static final BooleanSetting HIDE_CAPTIONS_BUTTON = new BooleanSetting("revanced_hide_captions_button", FALSE); public static final BooleanSetting HIDE_CAPTIONS_BUTTON = new BooleanSetting("revanced_hide_captions_button", FALSE);
@@ -135,6 +137,7 @@ public class Settings extends BaseSettings {
public static final BooleanSetting HIDE_COMMUNITY_GUIDELINES = new BooleanSetting("revanced_hide_community_guidelines", TRUE); public static final BooleanSetting HIDE_COMMUNITY_GUIDELINES = new BooleanSetting("revanced_hide_community_guidelines", TRUE);
public static final BooleanSetting HIDE_EMERGENCY_BOX = new BooleanSetting("revanced_hide_emergency_box", TRUE); public static final BooleanSetting HIDE_EMERGENCY_BOX = new BooleanSetting("revanced_hide_emergency_box", TRUE);
public static final BooleanSetting HIDE_ENDSCREEN_CARDS = new BooleanSetting("revanced_hide_endscreen_cards", FALSE); public static final BooleanSetting HIDE_ENDSCREEN_CARDS = new BooleanSetting("revanced_hide_endscreen_cards", FALSE);
public static final BooleanSetting HIDE_END_SCREEN_SUGGESTED_VIDEO = new BooleanSetting("revanced_end_screen_suggested_video", FALSE, true);
public static final BooleanSetting HIDE_HIDE_CHANNEL_GUIDELINES = new BooleanSetting("revanced_hide_channel_guidelines", TRUE); public static final BooleanSetting HIDE_HIDE_CHANNEL_GUIDELINES = new BooleanSetting("revanced_hide_channel_guidelines", TRUE);
public static final BooleanSetting HIDE_INFO_PANELS = new BooleanSetting("revanced_hide_info_panels", TRUE); public static final BooleanSetting HIDE_INFO_PANELS = new BooleanSetting("revanced_hide_info_panels", TRUE);
public static final BooleanSetting HIDE_INFO_CARDS = new BooleanSetting("revanced_hide_info_cards", FALSE); public static final BooleanSetting HIDE_INFO_CARDS = new BooleanSetting("revanced_hide_info_cards", FALSE);
@@ -171,10 +174,10 @@ public class Settings extends BaseSettings {
public static final BooleanSetting HIDE_COMMENTS_CHAT_SUMMARY = new BooleanSetting("revanced_hide_comments_chat_summary", FALSE); public static final BooleanSetting HIDE_COMMENTS_CHAT_SUMMARY = new BooleanSetting("revanced_hide_comments_chat_summary", FALSE);
public static final BooleanSetting HIDE_COMMENTS_BY_MEMBERS_HEADER = new BooleanSetting("revanced_hide_comments_by_members_header", FALSE); public static final BooleanSetting HIDE_COMMENTS_BY_MEMBERS_HEADER = new BooleanSetting("revanced_hide_comments_by_members_header", FALSE);
public static final BooleanSetting HIDE_COMMENTS_CREATE_A_SHORT_BUTTON = new BooleanSetting("revanced_hide_comments_create_a_short_button", TRUE); public static final BooleanSetting HIDE_COMMENTS_CREATE_A_SHORT_BUTTON = new BooleanSetting("revanced_hide_comments_create_a_short_button", TRUE);
public static final BooleanSetting HIDE_COMMENTS_TIMESTAMP_AND_EMOJI_BUTTONS = new BooleanSetting("revanced_hide_comments_timestamp_and_emoji_buttons", TRUE);
public static final BooleanSetting HIDE_COMMENTS_PREVIEW_COMMENT = new BooleanSetting("revanced_hide_comments_preview_comment", FALSE); public static final BooleanSetting HIDE_COMMENTS_PREVIEW_COMMENT = new BooleanSetting("revanced_hide_comments_preview_comment", FALSE);
public static final BooleanSetting HIDE_COMMENTS_SECTION = new BooleanSetting("revanced_hide_comments_section", FALSE); public static final BooleanSetting HIDE_COMMENTS_SECTION = new BooleanSetting("revanced_hide_comments_section", FALSE);
public static final BooleanSetting HIDE_COMMENTS_THANKS_BUTTON = new BooleanSetting("revanced_hide_comments_thanks_button", TRUE); public static final BooleanSetting HIDE_COMMENTS_THANKS_BUTTON = new BooleanSetting("revanced_hide_comments_thanks_button", TRUE);
public static final BooleanSetting HIDE_COMMENTS_TIMESTAMP_AND_EMOJI_BUTTONS = new BooleanSetting("revanced_hide_comments_timestamp_and_emoji_buttons", TRUE);
// Description // Description
public static final BooleanSetting HIDE_ATTRIBUTES_SECTION = new BooleanSetting("revanced_hide_attributes_section", FALSE); public static final BooleanSetting HIDE_ATTRIBUTES_SECTION = new BooleanSetting("revanced_hide_attributes_section", FALSE);
public static final BooleanSetting HIDE_CHAPTERS_SECTION = new BooleanSetting("revanced_hide_chapters_section", TRUE); public static final BooleanSetting HIDE_CHAPTERS_SECTION = new BooleanSetting("revanced_hide_chapters_section", TRUE);
@@ -284,7 +287,6 @@ public class Settings extends BaseSettings {
"revanced_seekbar_thumbnails_high_quality_dialog_message", new SeekbarThumbnailsHighQualityAvailability()); "revanced_seekbar_thumbnails_high_quality_dialog_message", new SeekbarThumbnailsHighQualityAvailability());
public static final BooleanSetting SLIDE_TO_SEEK = new BooleanSetting("revanced_slide_to_seek", FALSE, true); public static final BooleanSetting SLIDE_TO_SEEK = new BooleanSetting("revanced_slide_to_seek", FALSE, true);
public static final BooleanSetting SEEKBAR_CUSTOM_COLOR = new BooleanSetting("revanced_seekbar_custom_color", FALSE, true); public static final BooleanSetting SEEKBAR_CUSTOM_COLOR = new BooleanSetting("revanced_seekbar_custom_color", FALSE, true);
private static final StringSetting DEPRECATED_SEEKBAR_CUSTOM_COLOR_PRIMARY = new StringSetting("revanced_seekbar_custom_color_value", "#FF0033");
public static final StringSetting SEEKBAR_CUSTOM_COLOR_PRIMARY = new StringSetting("revanced_seekbar_custom_color_primary", "#FF0033", true, parent(SEEKBAR_CUSTOM_COLOR)); public static final StringSetting SEEKBAR_CUSTOM_COLOR_PRIMARY = new StringSetting("revanced_seekbar_custom_color_primary", "#FF0033", true, parent(SEEKBAR_CUSTOM_COLOR));
public static final StringSetting SEEKBAR_CUSTOM_COLOR_ACCENT = new StringSetting("revanced_seekbar_custom_color_accent", "#FF2791", true, parent(SEEKBAR_CUSTOM_COLOR)); public static final StringSetting SEEKBAR_CUSTOM_COLOR_ACCENT = new StringSetting("revanced_seekbar_custom_color_accent", "#FF2791", true, parent(SEEKBAR_CUSTOM_COLOR));
@@ -322,7 +324,6 @@ public class Settings extends BaseSettings {
parentsAny(SWIPE_BRIGHTNESS, SWIPE_VOLUME)); parentsAny(SWIPE_BRIGHTNESS, SWIPE_VOLUME));
public static final IntegerSetting SWIPE_OVERLAY_OPACITY = new IntegerSetting("revanced_swipe_overlay_background_opacity", 60, true, public static final IntegerSetting SWIPE_OVERLAY_OPACITY = new IntegerSetting("revanced_swipe_overlay_background_opacity", 60, true,
parentsAny(SWIPE_BRIGHTNESS, SWIPE_VOLUME)); parentsAny(SWIPE_BRIGHTNESS, SWIPE_VOLUME));
private static final IntegerSetting DEPRECATED_SWIPE_OVERLAY_BACKGROUND_ALPHA = new IntegerSetting("revanced_swipe_overlay_background_alpha", 127);
public static final LongSetting SWIPE_OVERLAY_TIMEOUT = new LongSetting("revanced_swipe_overlay_timeout", 500L, true, public static final LongSetting SWIPE_OVERLAY_TIMEOUT = new LongSetting("revanced_swipe_overlay_timeout", 500L, true,
parentsAny(SWIPE_BRIGHTNESS, SWIPE_VOLUME)); parentsAny(SWIPE_BRIGHTNESS, SWIPE_VOLUME));
public static final BooleanSetting SWIPE_SAVE_AND_RESTORE_BRIGHTNESS = new BooleanSetting("revanced_swipe_save_and_restore_brightness", TRUE, true, parent(SWIPE_BRIGHTNESS)); public static final BooleanSetting SWIPE_SAVE_AND_RESTORE_BRIGHTNESS = new BooleanSetting("revanced_swipe_save_and_restore_brightness", TRUE, true, parent(SWIPE_BRIGHTNESS));
@@ -384,9 +385,12 @@ public class Settings extends BaseSettings {
public static final StringSetting SB_CATEGORY_UNSUBMITTED_COLOR = new StringSetting("sb_unsubmitted_color", "#FFFFFF"); public static final StringSetting SB_CATEGORY_UNSUBMITTED_COLOR = new StringSetting("sb_unsubmitted_color", "#FFFFFF");
// Deprecated migrations // Deprecated migrations
public static final StringSetting DEPRECATED_SB_UUID_OLD_MIGRATION_SETTING = new StringSetting("uuid", ""); // Delete sometime in 2024 private static final StringSetting DEPRECATED_SB_UUID_OLD_MIGRATION_SETTING = new StringSetting("uuid", ""); // Delete sometime in 2024
private static final BooleanSetting DEPRECATED_HIDE_PLAYER_BUTTONS = new BooleanSetting("revanced_hide_player_buttons", FALSE, true); private static final BooleanSetting DEPRECATED_HIDE_PLAYER_BUTTONS = new BooleanSetting("revanced_hide_player_buttons", FALSE, true);
private static final BooleanSetting DEPRECATED_HIDE_PLAYER_FLYOUT_VIDEO_QUALITY_FOOTER = new BooleanSetting("revanced_hide_video_quality_menu_footer", FALSE); private static final BooleanSetting DEPRECATED_HIDE_PLAYER_FLYOUT_VIDEO_QUALITY_FOOTER = new BooleanSetting("revanced_hide_video_quality_menu_footer", FALSE);
private static final IntegerSetting DEPRECATED_SWIPE_OVERLAY_BACKGROUND_ALPHA = new IntegerSetting("revanced_swipe_overlay_background_alpha", 127);
private static final StringSetting DEPRECATED_SEEKBAR_CUSTOM_COLOR_PRIMARY = new StringSetting("revanced_seekbar_custom_color_value", "#FF0033");
private static final BooleanSetting DEPRECATED_DISABLE_SUGGESTED_VIDEO_END_SCREEN = new BooleanSetting("revanced_disable_suggested_video_end_screen", FALSE);
static { static {
// region Migration // region Migration
@@ -405,6 +409,8 @@ public class Settings extends BaseSettings {
migrateOldSettingToNew(DEPRECATED_HIDE_PLAYER_FLYOUT_VIDEO_QUALITY_FOOTER, HIDE_PLAYER_FLYOUT_VIDEO_QUALITY_FOOTER); migrateOldSettingToNew(DEPRECATED_HIDE_PLAYER_FLYOUT_VIDEO_QUALITY_FOOTER, HIDE_PLAYER_FLYOUT_VIDEO_QUALITY_FOOTER);
migrateOldSettingToNew(DEPRECATED_DISABLE_SUGGESTED_VIDEO_END_SCREEN, HIDE_END_SCREEN_SUGGESTED_VIDEO);
// Migrate renamed enum. // Migrate renamed enum.
//noinspection deprecation //noinspection deprecation
if (MINIPLAYER_TYPE.get() == MiniplayerType.PHONE) { if (MINIPLAYER_TYPE.get() == MiniplayerType.PHONE) {

View File

@@ -3,7 +3,9 @@ package app.revanced.extension.youtube.shared;
import static app.revanced.extension.youtube.shared.NavigationBar.NavigationButton.CREATE; import static app.revanced.extension.youtube.shared.NavigationBar.NavigationButton.CREATE;
import android.app.Activity; import android.app.Activity;
import android.graphics.drawable.Drawable;
import android.view.View; import android.view.View;
import android.widget.FrameLayout;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
@@ -24,12 +26,22 @@ import app.revanced.extension.youtube.settings.Settings;
@SuppressWarnings("unused") @SuppressWarnings("unused")
public final class NavigationBar { public final class NavigationBar {
/**
* Interface to call obfuscated methods in AppCompat Toolbar class.
*/
public interface AppCompatToolbarPatchInterface {
Drawable patch_getNavigationIcon();
}
// //
// Search bar // Search and toolbar.
// //
private static volatile WeakReference<View> searchBarResultsRef = new WeakReference<>(null); private static volatile WeakReference<View> searchBarResultsRef = new WeakReference<>(null);
private static volatile WeakReference<AppCompatToolbarPatchInterface> toolbarResultsRef
= new WeakReference<>(null);
/** /**
* Injection point. * Injection point.
*/ */
@@ -37,6 +49,22 @@ public final class NavigationBar {
searchBarResultsRef = new WeakReference<>(searchbarResults); searchBarResultsRef = new WeakReference<>(searchbarResults);
} }
/**
* Injection point.
*/
public static void setToolbar(FrameLayout layout) {
AppCompatToolbarPatchInterface toolbar = Utils.getChildView(layout, false, (view) ->
view instanceof AppCompatToolbarPatchInterface
);
if (toolbar == null) {
Logger.printException(() -> "Could not find navigation toolbar");
return;
}
toolbarResultsRef = new WeakReference<>(toolbar);
}
/** /**
* @return If the search bar is on screen. This includes if the player * @return If the search bar is on screen. This includes if the player
* is on screen and the search results are behind the player (and not visible). * is on screen and the search results are behind the player (and not visible).
@@ -47,8 +75,13 @@ public final class NavigationBar {
return searchbarResults != null && searchbarResults.getParent() != null; return searchbarResults != null && searchbarResults.getParent() != null;
} }
public static boolean isBackButtonVisible() {
AppCompatToolbarPatchInterface toolbar = toolbarResultsRef.get();
return toolbar != null && toolbar.patch_getNavigationIcon() != null;
}
// //
// Navigation bar buttons // Navigation bar buttons.
// //
/** /**

View File

@@ -5,7 +5,7 @@ import app.revanced.extension.youtube.Event
import app.revanced.extension.youtube.patches.VideoInformation import app.revanced.extension.youtube.patches.VideoInformation
/** /**
* Main player type. * Regular player type.
*/ */
enum class PlayerType { enum class PlayerType {
/** /**
@@ -90,8 +90,6 @@ enum class PlayerType {
* Does not include the first moment after a short is opened when a regular video is minimized on screen, * Does not include the first moment after a short is opened when a regular video is minimized on screen,
* or while watching a short with a regular video present on a spoofed 16.x version of YouTube. * or while watching a short with a regular video present on a spoofed 16.x version of YouTube.
* To include those situations instead use [isNoneHiddenOrMinimized]. * To include those situations instead use [isNoneHiddenOrMinimized].
*
* @see VideoInformation
*/ */
fun isNoneOrHidden(): Boolean { fun isNoneOrHidden(): Boolean {
return this == NONE || this == HIDDEN return this == NONE || this == HIDDEN
@@ -107,8 +105,11 @@ enum class PlayerType {
* when spoofing to an old version this will return false even * when spoofing to an old version this will return false even
* though a Short is being opened or is on screen (see [isNoneHiddenOrMinimized]). * though a Short is being opened or is on screen (see [isNoneHiddenOrMinimized]).
* *
* Instead of this method, consider using {@link ShortsPlayerState}
* which may work better for some situations.
*
* @return If nothing, a Short, or a regular video is sliding off screen to a dismissed or hidden state. * @return If nothing, a Short, or a regular video is sliding off screen to a dismissed or hidden state.
* @see VideoInformation * @see ShortsPlayerState
*/ */
fun isNoneHiddenOrSlidingMinimized(): Boolean { fun isNoneHiddenOrSlidingMinimized(): Boolean {
return isNoneOrHidden() || this == WATCH_WHILE_SLIDING_MINIMIZED_DISMISSED return isNoneOrHidden() || this == WATCH_WHILE_SLIDING_MINIMIZED_DISMISSED
@@ -125,9 +126,12 @@ enum class PlayerType {
* Typically used to detect if a Short is playing when the player cannot be in a minimized state, * Typically used to detect if a Short is playing when the player cannot be in a minimized state,
* such as the user interacting with a button or element of the player. * such as the user interacting with a button or element of the player.
* *
* Instead of this method, consider using {@link ShortsPlayerState}
* which may work better for some situations.
*
* @return If nothing, a Short, a regular video is sliding off screen to a dismissed or hidden state, * @return If nothing, a Short, a regular video is sliding off screen to a dismissed or hidden state,
* a regular video is minimized (and a new video is not being opened). * a regular video is minimized (and a new video is not being opened).
* @see VideoInformation * @see ShortsPlayerState
*/ */
fun isNoneHiddenOrMinimized(): Boolean { fun isNoneHiddenOrMinimized(): Boolean {
return isNoneHiddenOrSlidingMinimized() || this == WATCH_WHILE_MINIMIZED return isNoneHiddenOrSlidingMinimized() || this == WATCH_WHILE_MINIMIZED

View File

@@ -0,0 +1,38 @@
package app.revanced.extension.youtube.shared
import app.revanced.extension.shared.Logger
import app.revanced.extension.youtube.Event
/**
* Shorts player state.
*/
class ShortsPlayerState {
companion object {
@JvmStatic
fun setOpen(open: Boolean) {
if (isOpen != open) {
Logger.printDebug { "ShortsPlayerState open changed to: $isOpen" }
isOpen = open
onChange(open)
}
}
@Volatile
private var isOpen = false
/**
* Shorts player state change listener.
*/
@JvmStatic
val onChange = Event<Boolean>()
/**
* If the Shorts player is currently open.
*/
@JvmStatic
fun isOpen(): Boolean {
return isOpen
}
}
}

View File

@@ -18,7 +18,7 @@ import kotlin.math.min
import kotlin.math.round import kotlin.math.round
/** /**
* Main overlay layout for displaying volume and brightness level with both circular and rectangular progress bars. * Main overlay layout for displaying volume and brightness level with both circular and horizontal progress bars.
*/ */
class SwipeControlsOverlayLayout( class SwipeControlsOverlayLayout(
context: Context, context: Context,
@@ -69,7 +69,7 @@ class SwipeControlsOverlayLayout(
} }
addView(circularProgressView) addView(circularProgressView)
// Initialize rectangular progress bar // Initialize horizontal progress bar
val screenWidth = resources.displayMetrics.widthPixels val screenWidth = resources.displayMetrics.widthPixels
val layoutWidth = (screenWidth * 2 / 3).toInt() // 2/3 of screen width val layoutWidth = (screenWidth * 2 / 3).toInt() // 2/3 of screen width
horizontalProgressView = HorizontalProgressView( horizontalProgressView = HorizontalProgressView(
@@ -152,10 +152,7 @@ class SwipeControlsOverlayLayout(
} }
/** /**
* Abstract base class for progress views to reduce code duplication. * Abstract base class for progress views.
*/
/**
* Abstract base class for progress views to reduce code duplication.
*/ */
abstract class AbstractProgressView( abstract class AbstractProgressView(
context: Context, context: Context,
@@ -183,10 +180,9 @@ abstract class AbstractProgressView(
public val textPaint = Paint(Paint.ANTI_ALIAS_FLAG).apply { public val textPaint = Paint(Paint.ANTI_ALIAS_FLAG).apply {
color = overlayTextColor color = overlayTextColor
textAlign = Paint.Align.CENTER textAlign = Paint.Align.CENTER
textSize = 30f // Can adjust based on need textSize = 40f // Can adjust based on need
} }
protected var progress = 0 protected var progress = 0
protected var maxProgress = 100 protected var maxProgress = 100
protected var displayText: String = "0" protected var displayText: String = "0"
@@ -211,7 +207,7 @@ abstract class AbstractProgressView(
} }
/** /**
* Custom view for rendering a circular progress indicator with text and icon. * Custom view for rendering a circular progress indicator with icons and text.
*/ */
class CircularProgressView( class CircularProgressView(
context: Context, context: Context,
@@ -235,7 +231,7 @@ class CircularProgressView(
private val rectF = RectF() private val rectF = RectF()
init { init {
textPaint.textSize = 40f // Override default text size for horizontal view textPaint.textSize = 40f // Override default text size for circular view
progressPaint.strokeWidth = 20f progressPaint.strokeWidth = 20f
fillBackgroundPaint.strokeWidth = 20f fillBackgroundPaint.strokeWidth = 20f
progressPaint.strokeCap = Paint.Cap.ROUND progressPaint.strokeCap = Paint.Cap.ROUND
@@ -266,7 +262,7 @@ class CircularProgressView(
it.draw(canvas) it.draw(canvas)
} }
// If not in icon-only mode, draw the text inside the ring. // If not a minimal style mode, draw the text inside the ring.
if (!overlayShowOverlayMinimalStyle) { if (!overlayShowOverlayMinimalStyle) {
canvas.drawText(displayText, width / 2f, height / 2f + 60f, textPaint) canvas.drawText(displayText, width / 2f, height / 2f + 60f, textPaint)
} }
@@ -300,7 +296,7 @@ class HorizontalProgressView(
private val padding = 40f private val padding = 40f
init { init {
textPaint.textSize = 30f // Override default text size for horizontal view textPaint.textSize = 36f // Override default text size for horizontal view
progressPaint.strokeWidth = 0f progressPaint.strokeWidth = 0f
progressPaint.strokeCap = Paint.Cap.BUTT progressPaint.strokeCap = Paint.Cap.BUTT
progressPaint.style = Paint.Style.FILL progressPaint.style = Paint.Style.FILL

View File

@@ -90,7 +90,13 @@ public class PlayerControlButton {
} }
public void setVisibilityImmediate(boolean visible) { public void setVisibilityImmediate(boolean visible) {
private_setVisibility(visible, false); if (visible) {
// Fix button flickering, by pushing this call to the back of
// the main thread and letting other layout code run first.
Utils.runOnMainThread(() -> private_setVisibility(true, false));
} else {
private_setVisibility(false, false);
}
} }
public void setVisibility(boolean visible, boolean animated) { public void setVisibility(boolean visible, boolean animated) {

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.13.0-dev.10 version = 5.14.0-dev.2

View File

@@ -348,6 +348,14 @@ public final class app/revanced/patches/nfctoolsse/misc/pro/UnlockProPatchKt {
public static final fun getUnlockProPatch ()Lapp/revanced/patcher/patch/BytecodePatch; public static final fun getUnlockProPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
} }
public final class app/revanced/patches/nunl/ads/HideAdsPatchKt {
public static final fun getHideAdsPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
}
public final class app/revanced/patches/nunl/firebase/SpoofCertificatePatchKt {
public static final fun getSpoofCertificatePatch ()Lapp/revanced/patcher/patch/BytecodePatch;
}
public final class app/revanced/patches/nyx/misc/pro/UnlockProPatchKt { public final class app/revanced/patches/nyx/misc/pro/UnlockProPatchKt {
public static final fun getUnlockProPatch ()Lapp/revanced/patcher/patch/BytecodePatch; public static final fun getUnlockProPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
} }
@@ -768,8 +776,8 @@ public final class app/revanced/patches/shared/misc/settings/preference/TextPref
} }
public final class app/revanced/patches/shared/misc/spoof/SpoofVideoStreamsPatchKt { public final class app/revanced/patches/shared/misc/spoof/SpoofVideoStreamsPatchKt {
public static final fun spoofVideoStreamsPatch (Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;)Lapp/revanced/patcher/patch/BytecodePatch; public static final fun spoofVideoStreamsPatch (Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;)Lapp/revanced/patcher/patch/BytecodePatch;
public static synthetic fun spoofVideoStreamsPatch$default (Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)Lapp/revanced/patcher/patch/BytecodePatch; public static synthetic fun spoofVideoStreamsPatch$default (Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)Lapp/revanced/patcher/patch/BytecodePatch;
} }
public final class app/revanced/patches/shared/misc/spoof/UserAgentClientSpoofPatchKt { public final class app/revanced/patches/shared/misc/spoof/UserAgentClientSpoofPatchKt {
@@ -1116,6 +1124,10 @@ public final class app/revanced/patches/youtube/layout/hide/endscreencards/HideE
public static final fun getHideEndscreenCardsPatch ()Lapp/revanced/patcher/patch/BytecodePatch; public static final fun getHideEndscreenCardsPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
} }
public final class app/revanced/patches/youtube/layout/hide/endscreensuggestion/HideEndScreenSuggestedVideoPatchKt {
public static final fun getHideEndScreenSuggestedVideoPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
}
public final class app/revanced/patches/youtube/layout/hide/fullscreenambientmode/DisableFullscreenAmbientModePatchKt { public final class app/revanced/patches/youtube/layout/hide/fullscreenambientmode/DisableFullscreenAmbientModePatchKt {
public static final fun getDisableFullscreenAmbientModePatch ()Lapp/revanced/patcher/patch/BytecodePatch; public static final fun getDisableFullscreenAmbientModePatch ()Lapp/revanced/patcher/patch/BytecodePatch;
} }

View File

@@ -8,9 +8,8 @@ import org.w3c.dom.Element
@Suppress("unused") @Suppress("unused")
val changeVersionCodePatch = resourcePatch( val changeVersionCodePatch = resourcePatch(
name = "Change version code", name = "Change version code",
description = "Changes the version code of the app. By default the highest version code is set. " + description = "Changes the version code of the app. This will turn off app store updates " +
"This allows older versions of an app to be installed " + "and allows downgrading an existing app install to an older app version.",
"if their version code is set to the same or a higher value and can stop app stores to update the app.",
use = false, use = false,
) { ) {
val versionCode by intOption( val versionCode by intOption(
@@ -21,7 +20,8 @@ val changeVersionCodePatch = resourcePatch(
"Highest" to Int.MAX_VALUE, "Highest" to Int.MAX_VALUE,
), ),
title = "Version code", title = "Version code",
description = "The version code to use", description = "The version code to use. Using the highest value turns off app store " +
"updates and allows downgrading an existing app install to an older app version.",
required = true, required = true,
) { versionCode -> versionCode!! >= 1 } ) { versionCode -> versionCode!! >= 1 }

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -17,7 +17,7 @@ import org.w3c.dom.Element
@Suppress("MemberVisibilityCanBePrivate") @Suppress("MemberVisibilityCanBePrivate")
abstract class BasePreference( abstract class BasePreference(
val key: String? = null, val key: String? = null,
val titleKey: String = "${key}_title", val titleKey: String? = "${key}_title",
val summaryKey: String? = "${key}_summary", val summaryKey: String? = "${key}_summary",
val icon: String? = null, val icon: String? = null,
val layout: String? = null, val layout: String? = null,
@@ -35,7 +35,7 @@ abstract class BasePreference(
open fun serialize(ownerDocument: Document, resourceCallback: (BaseResource) -> Unit): Element = open fun serialize(ownerDocument: Document, resourceCallback: (BaseResource) -> Unit): Element =
ownerDocument.createElement(tag).apply { ownerDocument.createElement(tag).apply {
key?.let { setAttribute("android:key", it) } key?.let { setAttribute("android:key", it) }
setAttribute("android:title", "@string/${titleKey}") titleKey?.let { setAttribute("android:title", "@string/${titleKey}") }
summaryKey?.let { addSummary(it) } summaryKey?.let { addSummary(it) }
icon?.let { icon?.let {
setAttribute("android:icon", it) setAttribute("android:icon", it)

View File

@@ -17,7 +17,7 @@ import org.w3c.dom.Document
@Suppress("MemberVisibilityCanBePrivate") @Suppress("MemberVisibilityCanBePrivate")
open class PreferenceCategory( open class PreferenceCategory(
key: String? = null, key: String? = null,
titleKey: String = "${key}_title", titleKey: String? = "${key}_title",
icon: String? = null, icon: String? = null,
layout: String? = null, layout: String? = null,
sorting: Sorting = Sorting.BY_TITLE, sorting: Sorting = Sorting.BY_TITLE,

View File

@@ -137,3 +137,15 @@ internal val patchIncludedExtensionMethodFingerprint = fingerprint {
classDef.type == EXTENSION_CLASS_DESCRIPTOR && method.name == "isPatchIncluded" classDef.type == EXTENSION_CLASS_DESCRIPTOR && method.name == "isPatchIncluded"
} }
} }
// Feature flag that turns on Platypus programming language code compiled to native C++.
// This code appears to replace the player config after the streams are loaded.
// Flag is present in YouTube 19.34, but is missing Platypus stream replacement code until 19.43.
// Flag and Platypus code is also present in newer versions of YouTube Music.
internal const val MEDIA_FETCH_HOT_CONFIG_FEATURE_FLAG = 45645570L
internal val mediaFetchHotConfigFingerprint = fingerprint {
literal {
MEDIA_FETCH_HOT_CONFIG_FEATURE_FLAG
}
}

View File

@@ -31,10 +31,11 @@ internal const val EXTENSION_CLASS_DESCRIPTOR =
fun spoofVideoStreamsPatch( fun spoofVideoStreamsPatch(
block: BytecodePatchBuilder.() -> Unit = {}, block: BytecodePatchBuilder.() -> Unit = {},
applyMediaFetchHotConfigChanges: BytecodePatchBuilder.() -> Boolean = { false },
executeBlock: BytecodePatchContext.() -> Unit = {}, executeBlock: BytecodePatchContext.() -> Unit = {},
) = bytecodePatch( ) = bytecodePatch(
name = "Spoof video streams", name = "Spoof video streams",
description = "Spoofs the client video streams to fix playback.", description = "Adds options to spoof the client video streams to fix playback.",
) { ) {
block() block()
@@ -238,6 +239,17 @@ fun spoofVideoStreamsPatch(
// endregion // endregion
// region turn off stream config replacement feature flag.
if (applyMediaFetchHotConfigChanges()) {
mediaFetchHotConfigFingerprint.method.insertFeatureFlagBooleanOverride(
MEDIA_FETCH_HOT_CONFIG_FEATURE_FLAG,
"$EXTENSION_CLASS_DESCRIPTOR->useMediaFetchHotConfigReplacement(Z)Z"
)
}
// endregion
executeBlock() executeBlock()
} }
} }

View File

@@ -15,8 +15,8 @@ import com.android.tools.smali.dexlib2.iface.instruction.formats.Instruction35c
import com.android.tools.smali.dexlib2.iface.reference.MethodReference import com.android.tools.smali.dexlib2.iface.reference.MethodReference
val enableSeekbarTappingPatch = bytecodePatch( val enableSeekbarTappingPatch = bytecodePatch(
name = "Seekbar tapping", name = "Enable tap to seek",
description = "Adds an option to enable tap-to-seek on the seekbar of the video player.", description = "Adds an option to enable tap to seek on the seekbar of the video player.",
) { ) {
dependsOn( dependsOn(
sharedExtensionPatch, sharedExtensionPatch,

View File

@@ -43,7 +43,7 @@ private const val EXTENSION_CLASS_DESCRIPTOR =
val hidePlayerOverlayButtonsPatch = bytecodePatch( val hidePlayerOverlayButtonsPatch = bytecodePatch(
name = "Hide player overlay buttons", name = "Hide player overlay buttons",
description = "Adds options to hide the player cast, autoplay, caption button and next/ previous buttons.", description = "Adds options to hide the player Cast, Autoplay, Captions, and Previous & Next buttons.",
) { ) {
dependsOn( dependsOn(
sharedExtensionPatch, sharedExtensionPatch,

View File

@@ -6,7 +6,9 @@ import app.revanced.patcher.patch.bytecodePatch
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.ListPreference import app.revanced.patches.shared.misc.settings.preference.ListPreference
import app.revanced.patches.youtube.layout.buttons.navigation.navigationButtonsPatch
import app.revanced.patches.youtube.misc.extension.sharedExtensionPatch import app.revanced.patches.youtube.misc.extension.sharedExtensionPatch
import app.revanced.patches.youtube.misc.navigation.hookNavigationButtonCreated
import app.revanced.patches.youtube.misc.settings.PreferenceScreen import app.revanced.patches.youtube.misc.settings.PreferenceScreen
import app.revanced.patches.youtube.misc.settings.settingsPatch import app.revanced.patches.youtube.misc.settings.settingsPatch
import app.revanced.util.getReference import app.revanced.util.getReference
@@ -15,7 +17,7 @@ import com.android.tools.smali.dexlib2.Opcode
import com.android.tools.smali.dexlib2.iface.instruction.TwoRegisterInstruction import com.android.tools.smali.dexlib2.iface.instruction.TwoRegisterInstruction
import com.android.tools.smali.dexlib2.iface.reference.FieldReference import com.android.tools.smali.dexlib2.iface.reference.FieldReference
internal const val EXTENSION_CLASS_DESCRIPTOR = "Lapp/revanced/extension/youtube/patches/ChangeFormFactorPatch;" private const val EXTENSION_CLASS_DESCRIPTOR = "Lapp/revanced/extension/youtube/patches/ChangeFormFactorPatch;"
@Suppress("unused") @Suppress("unused")
val changeFormFactorPatch = bytecodePatch( val changeFormFactorPatch = bytecodePatch(
@@ -26,6 +28,7 @@ val changeFormFactorPatch = bytecodePatch(
sharedExtensionPatch, sharedExtensionPatch,
settingsPatch, settingsPatch,
addResourcesPatch, addResourcesPatch,
navigationButtonsPatch
) )
compatibleWith( compatibleWith(
@@ -50,6 +53,8 @@ val changeFormFactorPatch = bytecodePatch(
) )
) )
hookNavigationButtonCreated(EXTENSION_CLASS_DESCRIPTOR)
createPlayerRequestBodyWithModelFingerprint.method.apply { createPlayerRequestBodyWithModelFingerprint.method.apply {
val formFactorEnumClass = formFactorEnumConstructorFingerprint.originalClassDef.type val formFactorEnumClass = formFactorEnumConstructorFingerprint.originalClassDef.type

View File

@@ -44,9 +44,12 @@ private val hideEndscreenCardsResourcePatch = resourcePatch {
} }
} }
private const val EXTENSION_CLASS_DESCRIPTOR =
"Lapp/revanced/extension/youtube/patches/HideEndscreenCardsPatch;"
@Suppress("unused") @Suppress("unused")
val hideEndscreenCardsPatch = bytecodePatch( val hideEndscreenCardsPatch = bytecodePatch(
name = "Hide endscreen cards", name = "Hide end screen cards",
description = "Adds an option to hide suggested video cards at the end of videos.", description = "Adds an option to hide suggested video cards at the end of videos.",
) { ) {
dependsOn( dependsOn(
@@ -78,9 +81,7 @@ val hideEndscreenCardsPatch = bytecodePatch(
addInstruction( addInstruction(
insertIndex, insertIndex,
"invoke-static { v$viewRegister }, " + "invoke-static { v$viewRegister }, $EXTENSION_CLASS_DESCRIPTOR->hideEndscreen(Landroid/view/View;)V",
"Lapp/revanced/extension/youtube/patches/HideEndscreenCardsPatch;->" +
"hideEndscreen(Landroid/view/View;)V",
) )
} }
} }

View File

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

View File

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

View File

@@ -158,9 +158,9 @@ val hideLayoutComponentsPatch = bytecodePatch(
SwitchPreference("revanced_hide_comments_by_members_header"), SwitchPreference("revanced_hide_comments_by_members_header"),
SwitchPreference("revanced_hide_comments_section"), SwitchPreference("revanced_hide_comments_section"),
SwitchPreference("revanced_hide_comments_create_a_short_button"), SwitchPreference("revanced_hide_comments_create_a_short_button"),
SwitchPreference("revanced_hide_comments_timestamp_and_emoji_buttons"),
SwitchPreference("revanced_hide_comments_preview_comment"), SwitchPreference("revanced_hide_comments_preview_comment"),
SwitchPreference("revanced_hide_comments_thanks_button"), SwitchPreference("revanced_hide_comments_thanks_button"),
SwitchPreference("revanced_hide_comments_timestamp_and_emoji_buttons"),
), ),
sorting = PreferenceScreenPreference.Sorting.UNSORTED, sorting = PreferenceScreenPreference.Sorting.UNSORTED,
), ),

View File

@@ -159,7 +159,7 @@ private const val FILTER_CLASS_DESCRIPTOR = "Lapp/revanced/extension/youtube/pat
@Suppress("unused") @Suppress("unused")
val hideShortsComponentsPatch = bytecodePatch( val hideShortsComponentsPatch = bytecodePatch(
name = "Hide Shorts components", name = "Hide Shorts components",
description = "Adds options to hide components related to YouTube Shorts.", description = "Adds options to hide components related to Shorts.",
) { ) {
dependsOn( dependsOn(
sharedExtensionPatch, sharedExtensionPatch,

View File

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

View File

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

View File

@@ -134,7 +134,7 @@ private const val EXTENSION_CLASS_DESCRIPTOR = "Lapp/revanced/extension/youtube/
@Suppress("unused") @Suppress("unused")
val miniplayerPatch = bytecodePatch( val miniplayerPatch = bytecodePatch(
name = "Miniplayer", name = "Miniplayer",
description = "Adds options to change the in app minimized player." description = "Adds options to change the in-app minimized player."
) { ) {
dependsOn( dependsOn(
sharedExtensionPatch, sharedExtensionPatch,

View File

@@ -12,6 +12,8 @@ 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.patches.shared.misc.settings.preference.ListPreference import app.revanced.patches.shared.misc.settings.preference.ListPreference
import app.revanced.patches.shared.misc.settings.preference.PreferenceCategory
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.patches.youtube.misc.extension.sharedExtensionPatch import app.revanced.patches.youtube.misc.extension.sharedExtensionPatch
import app.revanced.patches.youtube.misc.playservice.is_19_17_or_greater import app.revanced.patches.youtube.misc.playservice.is_19_17_or_greater
@@ -71,20 +73,31 @@ val spoofAppVersionPatch = bytecodePatch(
addResources("youtube", "layout.spoofappversion.spoofAppVersionPatch") addResources("youtube", "layout.spoofappversion.spoofAppVersionPatch")
PreferenceScreen.GENERAL_LAYOUT.addPreferences( PreferenceScreen.GENERAL_LAYOUT.addPreferences(
SwitchPreference("revanced_spoof_app_version"), // Group the switch and list preference together, since General menu is sorted by name
if (is_19_17_or_greater) { // and the preferences can be scattered apart with non English langauges.
ListPreference( PreferenceCategory(
key = "revanced_spoof_app_version_target", key = null,
summaryKey = null, // The title does not show, but is used for sorting the group.
titleKey = "revanced_spoof_app_version_title",
sorting = Sorting.UNSORTED,
tag = "app.revanced.extension.shared.settings.preference.NoTitlePreferenceCategory",
preferences = setOf(
SwitchPreference("revanced_spoof_app_version"),
if (is_19_17_or_greater) {
ListPreference(
key = "revanced_spoof_app_version_target",
summaryKey = null,
)
} else {
ListPreference(
key = "revanced_spoof_app_version_target",
summaryKey = null,
entriesKey = "revanced_spoof_app_version_target_legacy_entries",
entryValuesKey = "revanced_spoof_app_version_target_legacy_entry_values"
)
}
) )
} else { )
ListPreference(
key = "revanced_spoof_app_version_target",
summaryKey = null,
entriesKey = "revanced_spoof_app_version_target_legacy_entries",
entryValuesKey = "revanced_spoof_app_version_target_legacy_entry_values"
)
}
) )
/** /**

View File

@@ -1,6 +1,7 @@
package app.revanced.patches.youtube.misc.debugging package app.revanced.patches.youtube.misc.debugging
import app.revanced.patcher.extensions.InstructionExtensions.addInstructions 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.all.misc.resources.addResources
import app.revanced.patches.all.misc.resources.addResourcesPatch import app.revanced.patches.all.misc.resources.addResourcesPatch
@@ -11,9 +12,11 @@ import app.revanced.patches.youtube.misc.extension.sharedExtensionPatch
import app.revanced.patches.youtube.misc.playservice.versionCheckPatch import app.revanced.patches.youtube.misc.playservice.versionCheckPatch
import app.revanced.patches.youtube.misc.settings.PreferenceScreen import app.revanced.patches.youtube.misc.settings.PreferenceScreen
import app.revanced.patches.youtube.misc.settings.settingsPatch import app.revanced.patches.youtube.misc.settings.settingsPatch
import app.revanced.util.findInstructionIndicesReversedOrThrow
import app.revanced.util.indexOfFirstInstructionOrThrow import app.revanced.util.indexOfFirstInstructionOrThrow
import app.revanced.util.indexOfFirstInstructionReversedOrThrow import app.revanced.util.indexOfFirstInstructionReversedOrThrow
import com.android.tools.smali.dexlib2.Opcode import com.android.tools.smali.dexlib2.Opcode
import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
private const val EXTENSION_CLASS_DESCRIPTOR = private const val EXTENSION_CLASS_DESCRIPTOR =
"Lapp/revanced/extension/youtube/patches/EnableDebuggingPatch;" "Lapp/revanced/extension/youtube/patches/EnableDebuggingPatch;"
@@ -61,19 +64,17 @@ val enableDebuggingPatch = bytecodePatch(
experimentalBooleanFeatureFlagFingerprint.match( experimentalBooleanFeatureFlagFingerprint.match(
experimentalFeatureFlagParentFingerprint.originalClassDef experimentalFeatureFlagParentFingerprint.originalClassDef
).method.apply { ).method.apply {
val insertIndex = indexOfFirstInstructionOrThrow(Opcode.MOVE_RESULT) findInstructionIndicesReversedOrThrow(Opcode.RETURN).forEach { index ->
val register = getInstruction<OneRegisterInstruction>(index).registerA
// It appears that all usage of this method has a default of 'false', addInstructions(
// so there's no need to pass in the default. index,
addInstructions( """
insertIndex, invoke-static { v$register, p1 }, $EXTENSION_CLASS_DESCRIPTOR->isBooleanFeatureFlagEnabled(ZLjava/lang/Long;)Z
""" move-result v$register
move-result v0 """
invoke-static { v0, p1, p2 }, $EXTENSION_CLASS_DESCRIPTOR->isBooleanFeatureFlagEnabled(ZJ)Z )
move-result v0 }
return v0
"""
)
} }
experimentalDoubleFeatureFlagFingerprint.match( experimentalDoubleFeatureFlagFingerprint.match(
@@ -92,7 +93,6 @@ val enableDebuggingPatch = bytecodePatch(
) )
} }
experimentalLongFeatureFlagFingerprint.match( experimentalLongFeatureFlagFingerprint.match(
experimentalFeatureFlagParentFingerprint.originalClassDef experimentalFeatureFlagParentFingerprint.originalClassDef
).method.apply { ).method.apply {
@@ -108,21 +108,22 @@ val enableDebuggingPatch = bytecodePatch(
""" """
) )
experimentalStringFeatureFlagFingerprint.match( }
experimentalFeatureFlagParentFingerprint.originalClassDef
).method.apply {
val insertIndex = indexOfFirstInstructionReversedOrThrow(Opcode.MOVE_RESULT_OBJECT)
addInstructions( experimentalStringFeatureFlagFingerprint.match(
insertIndex, experimentalFeatureFlagParentFingerprint.originalClassDef
""" ).method.apply {
move-result-object v0 val insertIndex = indexOfFirstInstructionReversedOrThrow(Opcode.MOVE_RESULT_OBJECT)
invoke-static { v0, p1, p2, p3 }, $EXTENSION_CLASS_DESCRIPTOR->isStringFeatureFlagEnabled(Ljava/lang/String;JLjava/lang/String;)Ljava/lang/String;
move-result-object v0 addInstructions(
return-object v0 insertIndex,
""" """
) move-result-object v0
} invoke-static { v0, p1, p2, p3 }, $EXTENSION_CLASS_DESCRIPTOR->isStringFeatureFlagEnabled(Ljava/lang/String;JLjava/lang/String;)Ljava/lang/String;
move-result-object v0
return-object v0
"""
)
} }
// There exists other experimental accessor methods for byte[] // There exists other experimental accessor methods for byte[]

View File

@@ -11,9 +11,9 @@ internal val experimentalFeatureFlagParentFingerprint = fingerprint {
} }
internal val experimentalBooleanFeatureFlagFingerprint = fingerprint { internal val experimentalBooleanFeatureFlagFingerprint = fingerprint {
accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL) accessFlags(AccessFlags.PUBLIC, AccessFlags.STATIC)
returns("Z") returns("Z")
parameters("J", "Z") parameters("L", "J", "Z")
} }
internal val experimentalDoubleFeatureFlagFingerprint = fingerprint { internal val experimentalDoubleFeatureFlagFingerprint = fingerprint {
@@ -33,4 +33,3 @@ internal val experimentalStringFeatureFlagFingerprint = fingerprint {
returns("Ljava/lang/String;") returns("Ljava/lang/String;")
parameters("J", "Ljava/lang/String;") parameters("J", "Ljava/lang/String;")
} }

View File

@@ -12,7 +12,7 @@ import com.android.tools.smali.dexlib2.iface.reference.StringReference
val openLinksExternallyPatch = bytecodePatch( val openLinksExternallyPatch = bytecodePatch(
name = "Open links externally", name = "Open links externally",
description = "Adds an option to always open links in your browser instead of in the in-app-browser.", description = "Adds an option to always open links in your browser instead of the in-app browser.",
) { ) {
dependsOn( dependsOn(
transformInstructionsPatch( transformInstructionsPatch(

View File

@@ -16,6 +16,23 @@ internal val actionBarSearchResultsFingerprint = fingerprint {
literal { actionBarSearchResultsViewMicId } literal { actionBarSearchResultsViewMicId }
} }
internal val toolbarLayoutFingerprint = fingerprint {
accessFlags(AccessFlags.PROTECTED, AccessFlags.CONSTRUCTOR)
literal { toolbarContainerId }
}
/**
* Matches to https://android.googlesource.com/platform/frameworks/support/+/9eee6ba/v7/appcompat/src/android/support/v7/widget/Toolbar.java#963
*/
internal val appCompatToolbarBackButtonFingerprint = fingerprint {
accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL)
returns("Landroid/graphics/drawable/Drawable;")
parameters()
custom { methodDef, classDef ->
classDef.type == "Landroid/support/v7/widget/Toolbar;"
}
}
/** /**
* Matches to the class found in [pivotBarConstructorFingerprint]. * Matches to the class found in [pivotBarConstructorFingerprint].
*/ */

View File

@@ -8,6 +8,7 @@ import app.revanced.patcher.patch.PatchException
import app.revanced.patcher.patch.bytecodePatch import app.revanced.patcher.patch.bytecodePatch
import app.revanced.patcher.patch.resourcePatch import app.revanced.patcher.patch.resourcePatch
import app.revanced.patcher.util.proxy.mutableTypes.MutableMethod import app.revanced.patcher.util.proxy.mutableTypes.MutableMethod
import app.revanced.patcher.util.proxy.mutableTypes.MutableMethod.Companion.toMutable
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
@@ -18,12 +19,16 @@ import app.revanced.util.getReference
import app.revanced.util.indexOfFirstInstructionOrThrow import app.revanced.util.indexOfFirstInstructionOrThrow
import app.revanced.util.indexOfFirstInstructionReversedOrThrow import app.revanced.util.indexOfFirstInstructionReversedOrThrow
import app.revanced.util.indexOfFirstLiteralInstructionOrThrow import app.revanced.util.indexOfFirstLiteralInstructionOrThrow
import com.android.tools.smali.dexlib2.AccessFlags
import com.android.tools.smali.dexlib2.Opcode import com.android.tools.smali.dexlib2.Opcode
import com.android.tools.smali.dexlib2.builder.MutableMethodImplementation
import com.android.tools.smali.dexlib2.iface.instruction.FiveRegisterInstruction import com.android.tools.smali.dexlib2.iface.instruction.FiveRegisterInstruction
import com.android.tools.smali.dexlib2.iface.instruction.Instruction import com.android.tools.smali.dexlib2.iface.instruction.Instruction
import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
import com.android.tools.smali.dexlib2.iface.instruction.ReferenceInstruction import com.android.tools.smali.dexlib2.iface.instruction.ReferenceInstruction
import com.android.tools.smali.dexlib2.iface.reference.MethodReference import com.android.tools.smali.dexlib2.iface.reference.MethodReference
import com.android.tools.smali.dexlib2.iface.reference.TypeReference
import com.android.tools.smali.dexlib2.immutable.ImmutableMethod
import com.android.tools.smali.dexlib2.util.MethodUtil import com.android.tools.smali.dexlib2.util.MethodUtil
internal var imageOnlyTabResourceId = -1L internal var imageOnlyTabResourceId = -1L
@@ -32,6 +37,8 @@ internal var actionBarSearchResultsViewMicId = -1L
private set private set
internal var ytFillBellId = -1L internal var ytFillBellId = -1L
private set private set
internal var toolbarContainerId = -1L
private set
private val navigationBarHookResourcePatch = resourcePatch { private val navigationBarHookResourcePatch = resourcePatch {
dependsOn(resourceMappingPatch) dependsOn(resourceMappingPatch)
@@ -40,6 +47,7 @@ private val navigationBarHookResourcePatch = resourcePatch {
imageOnlyTabResourceId = resourceMappings["layout", "image_only_tab"] imageOnlyTabResourceId = resourceMappings["layout", "image_only_tab"]
actionBarSearchResultsViewMicId = resourceMappings["layout", "action_bar_search_results_view_mic"] actionBarSearchResultsViewMicId = resourceMappings["layout", "action_bar_search_results_view_mic"]
ytFillBellId = resourceMappings["drawable", "yt_fill_bell_black_24"] ytFillBellId = resourceMappings["drawable", "yt_fill_bell_black_24"]
toolbarContainerId = resourceMappings["id", "toolbar_container"]
} }
} }
@@ -47,6 +55,8 @@ internal const val EXTENSION_CLASS_DESCRIPTOR =
"Lapp/revanced/extension/youtube/shared/NavigationBar;" "Lapp/revanced/extension/youtube/shared/NavigationBar;"
internal const val EXTENSION_NAVIGATION_BUTTON_DESCRIPTOR = internal const val EXTENSION_NAVIGATION_BUTTON_DESCRIPTOR =
"Lapp/revanced/extension/youtube/shared/NavigationBar\$NavigationButton;" "Lapp/revanced/extension/youtube/shared/NavigationBar\$NavigationButton;"
private const val EXTENSION_TOOLBAR_INTERFACE =
"Lapp/revanced/extension/youtube/shared/NavigationBar${'$'}AppCompatToolbarPatchInterface;"
lateinit var hookNavigationButtonCreated: (String) -> Unit lateinit var hookNavigationButtonCreated: (String) -> Unit
@@ -143,11 +153,58 @@ val navigationBarHookPatch = bytecodePatch(description = "Hooks the active navig
) )
} }
// Hook the back button visibility.
toolbarLayoutFingerprint.method.apply {
val index = indexOfFirstInstructionOrThrow {
opcode == Opcode.CHECK_CAST && getReference<TypeReference>()?.type ==
"Lcom/google/android/apps/youtube/app/ui/actionbar/MainCollapsingToolbarLayout;"
}
val register = getInstruction<OneRegisterInstruction>(index).registerA
addInstruction(
index + 1,
"invoke-static { v$register }, ${EXTENSION_CLASS_DESCRIPTOR}->setToolbar(Landroid/widget/FrameLayout;)V"
)
}
// Add interface for extensions code to call obfuscated methods.
appCompatToolbarBackButtonFingerprint.let {
it.classDef.apply {
interfaces.add(EXTENSION_TOOLBAR_INTERFACE)
val definingClass = type
val obfuscatedMethodName = it.originalMethod.name
val returnType = "Landroid/graphics/drawable/Drawable;"
methods.add(
ImmutableMethod(
definingClass,
"patch_getNavigationIcon",
listOf(),
returnType,
AccessFlags.PUBLIC.value or AccessFlags.FINAL.value,
null,
null,
MutableMethodImplementation(2),
).toMutable().apply {
addInstructions(
0,
"""
invoke-virtual { p0 }, $definingClass->$obfuscatedMethodName()$returnType
move-result-object v0
return-object v0
"""
)
}
)
}
}
hookNavigationButtonCreated = { extensionClassDescriptor -> hookNavigationButtonCreated = { extensionClassDescriptor ->
navigationBarHookCallbackFingerprint.method.addInstruction( navigationBarHookCallbackFingerprint.method.addInstruction(
0, 0,
"invoke-static { p0, p1 }, " + "invoke-static { p0, p1 }, $extensionClassDescriptor->navigationTabCreated" +
"$extensionClassDescriptor->navigationTabCreated" +
"(${EXTENSION_NAVIGATION_BUTTON_DESCRIPTOR}Landroid/view/View;)V", "(${EXTENSION_NAVIGATION_BUTTON_DESCRIPTOR}Landroid/view/View;)V",
) )
} }

View File

@@ -1,6 +1,7 @@
package app.revanced.patches.youtube.misc.playertype package app.revanced.patches.youtube.misc.playertype
import app.revanced.patcher.fingerprint import app.revanced.patcher.fingerprint
import app.revanced.util.literal
import com.android.tools.smali.dexlib2.AccessFlags import com.android.tools.smali.dexlib2.AccessFlags
import com.android.tools.smali.dexlib2.Opcode import com.android.tools.smali.dexlib2.Opcode
@@ -15,6 +16,12 @@ internal val playerTypeFingerprint = fingerprint {
custom { _, classDef -> classDef.endsWith("/YouTubePlayerOverlaysLayout;") } custom { _, classDef -> classDef.endsWith("/YouTubePlayerOverlaysLayout;") }
} }
internal val reelWatchPagerFingerprint = fingerprint {
accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL)
returns("Landroid/view/View;")
literal { reelWatchPlayerId }
}
internal val videoStateFingerprint = fingerprint { internal val videoStateFingerprint = fingerprint {
accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL) accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL)
returns("V") returns("V")

View File

@@ -4,15 +4,34 @@ import app.revanced.patcher.extensions.InstructionExtensions.addInstruction
import app.revanced.patcher.extensions.InstructionExtensions.addInstructions 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.patch.resourcePatch
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.youtube.misc.extension.sharedExtensionPatch import app.revanced.patches.youtube.misc.extension.sharedExtensionPatch
import app.revanced.util.indexOfFirstInstructionOrThrow
import app.revanced.util.indexOfFirstLiteralInstructionOrThrow
import com.android.tools.smali.dexlib2.Opcode
import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
import com.android.tools.smali.dexlib2.iface.instruction.ReferenceInstruction import com.android.tools.smali.dexlib2.iface.instruction.ReferenceInstruction
internal const val EXTENSION_CLASS_DESCRIPTOR = "Lapp/revanced/extension/youtube/patches/PlayerTypeHookPatch;" internal const val EXTENSION_CLASS_DESCRIPTOR = "Lapp/revanced/extension/youtube/patches/PlayerTypeHookPatch;"
internal var reelWatchPlayerId = -1L
private set
private val playerTypeHookResourcePatch = resourcePatch {
dependsOn(resourceMappingPatch)
execute {
reelWatchPlayerId = resourceMappings["id", "reel_watch_player"]
}
}
val playerTypeHookPatch = bytecodePatch( val playerTypeHookPatch = bytecodePatch(
description = "Hook to get the current player type and video playback state.", description = "Hook to get the current player type and video playback state.",
) { ) {
dependsOn(sharedExtensionPatch) dependsOn(sharedExtensionPatch, playerTypeHookResourcePatch)
execute { execute {
playerTypeFingerprint.method.addInstruction( playerTypeFingerprint.method.addInstruction(
@@ -20,6 +39,17 @@ val playerTypeHookPatch = bytecodePatch(
"invoke-static {p1}, $EXTENSION_CLASS_DESCRIPTOR->setPlayerType(Ljava/lang/Enum;)V", "invoke-static {p1}, $EXTENSION_CLASS_DESCRIPTOR->setPlayerType(Ljava/lang/Enum;)V",
) )
reelWatchPagerFingerprint.method.apply {
val literalIndex = indexOfFirstLiteralInstructionOrThrow(reelWatchPlayerId)
val registerIndex = indexOfFirstInstructionOrThrow(literalIndex, Opcode.MOVE_RESULT_OBJECT)
val viewRegister = getInstruction<OneRegisterInstruction>(registerIndex).registerA
addInstruction(
registerIndex + 1,
"invoke-static { v$viewRegister }, $EXTENSION_CLASS_DESCRIPTOR->onShortsCreate(Landroid/view/View;)V"
)
}
videoStateFingerprint.method.apply { videoStateFingerprint.method.apply {
val endIndex = videoStateFingerprint.patternMatch!!.endIndex val endIndex = videoStateFingerprint.patternMatch!!.endIndex
val videoStateFieldName = getInstruction<ReferenceInstruction>(endIndex).reference val videoStateFieldName = getInstruction<ReferenceInstruction>(endIndex).reference
@@ -27,9 +57,9 @@ val playerTypeHookPatch = bytecodePatch(
addInstructions( addInstructions(
0, 0,
""" """
iget-object v0, p1, $videoStateFieldName # copy VideoState parameter field iget-object v0, p1, $videoStateFieldName # copy VideoState parameter field
invoke-static {v0}, $EXTENSION_CLASS_DESCRIPTOR->setVideoState(Ljava/lang/Enum;)V invoke-static {v0}, $EXTENSION_CLASS_DESCRIPTOR->setVideoState(Ljava/lang/Enum;)V
""", """
) )
} }
} }

View File

@@ -20,7 +20,7 @@ private const val EXTENSION_CLASS_DESCRIPTOR =
val removeTrackingQueryParameterPatch = bytecodePatch( val removeTrackingQueryParameterPatch = bytecodePatch(
name = "Remove tracking query parameter", name = "Remove tracking query parameter",
description = "Adds an option to remove the tracking info from links you share.", description = "Adds an option to remove the tracking parameter from links you share.",
) { ) {
dependsOn( dependsOn(
sharedExtensionPatch, sharedExtensionPatch,

View File

@@ -323,6 +323,7 @@ object PreferenceScreen : BasePreferenceScreen() {
val VIDEO = Screen( val VIDEO = Screen(
key = "revanced_settings_screen_12_video", key = "revanced_settings_screen_12_video",
summaryKey = null, summaryKey = null,
sorting = Sorting.BY_KEY,
) )
override fun commit(screen: PreferenceScreenPreference) { override fun commit(screen: PreferenceScreenPreference) {

View File

@@ -6,6 +6,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.SwitchPreference import app.revanced.patches.shared.misc.settings.preference.SwitchPreference
import app.revanced.patches.shared.misc.spoof.spoofVideoStreamsPatch import app.revanced.patches.shared.misc.spoof.spoofVideoStreamsPatch
import app.revanced.patches.youtube.misc.playservice.is_19_34_or_greater
import app.revanced.patches.youtube.misc.playservice.versionCheckPatch
import app.revanced.patches.youtube.misc.settings.PreferenceScreen import app.revanced.patches.youtube.misc.settings.PreferenceScreen
import app.revanced.patches.youtube.misc.settings.settingsPatch import app.revanced.patches.youtube.misc.settings.settingsPatch
@@ -25,7 +27,10 @@ val spoofVideoStreamsPatch = spoofVideoStreamsPatch({
dependsOn( dependsOn(
userAgentClientSpoofPatch, userAgentClientSpoofPatch,
settingsPatch, settingsPatch,
versionCheckPatch
) )
}, {
is_19_34_or_greater
}, { }, {
addResources("youtube", "misc.fix.playback.spoofVideoStreamsPatch") addResources("youtube", "misc.fix.playback.spoofVideoStreamsPatch")

View File

@@ -8,8 +8,11 @@ import app.revanced.patcher.patch.bytecodePatch
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.ListPreference import app.revanced.patches.shared.misc.settings.preference.ListPreference
import app.revanced.patches.shared.misc.settings.preference.PreferenceCategory
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.patches.youtube.misc.extension.sharedExtensionPatch import app.revanced.patches.youtube.misc.extension.sharedExtensionPatch
import app.revanced.patches.youtube.misc.playertype.playerTypeHookPatch
import app.revanced.patches.youtube.misc.settings.PreferenceScreen import app.revanced.patches.youtube.misc.settings.PreferenceScreen
import app.revanced.patches.youtube.misc.settings.settingsPatch import app.revanced.patches.youtube.misc.settings.settingsPatch
import app.revanced.patches.youtube.shared.newVideoQualityChangedFingerprint import app.revanced.patches.youtube.shared.newVideoQualityChangedFingerprint
@@ -29,6 +32,7 @@ val rememberVideoQualityPatch = bytecodePatch(
dependsOn( dependsOn(
sharedExtensionPatch, sharedExtensionPatch,
videoInformationPatch, videoInformationPatch,
playerTypeHookPatch,
settingsPatch, settingsPatch,
addResourcesPatch, addResourcesPatch,
) )
@@ -49,19 +53,42 @@ val rememberVideoQualityPatch = bytecodePatch(
addResources("youtube", "video.quality.rememberVideoQualityPatch") addResources("youtube", "video.quality.rememberVideoQualityPatch")
PreferenceScreen.VIDEO.addPreferences( PreferenceScreen.VIDEO.addPreferences(
SwitchPreference("revanced_remember_video_quality_last_selected"), // Keep the preferences organized together.
ListPreference( PreferenceCategory(
key = "revanced_video_quality_default_wifi", key = "revanced_01_video_key", // Dummy key to force the quality preferences first.
summaryKey = null, titleKey = null,
entriesKey = "revanced_video_quality_default_entries", sorting = Sorting.UNSORTED,
entryValuesKey = "revanced_video_quality_default_entry_values", tag = "app.revanced.extension.shared.settings.preference.NoTitlePreferenceCategory",
), preferences = setOf(
ListPreference( ListPreference(
key = "revanced_video_quality_default_mobile", key = "revanced_video_quality_default_mobile",
summaryKey = null, summaryKey = null,
entriesKey = "revanced_video_quality_default_entries", entriesKey = "revanced_video_quality_default_entries",
entryValuesKey = "revanced_video_quality_default_entry_values", entryValuesKey = "revanced_video_quality_default_entry_values",
), ),
ListPreference(
key = "revanced_video_quality_default_wifi",
summaryKey = null,
entriesKey = "revanced_video_quality_default_entries",
entryValuesKey = "revanced_video_quality_default_entry_values",
),
SwitchPreference("revanced_remember_video_quality_last_selected"),
ListPreference(
key = "revanced_shorts_quality_default_mobile",
summaryKey = null,
entriesKey = "revanced_video_quality_default_entries",
entryValuesKey = "revanced_video_quality_default_entry_values",
),
ListPreference(
key = "revanced_shorts_quality_default_wifi",
summaryKey = null,
entriesKey = "revanced_video_quality_default_entries",
entryValuesKey = "revanced_video_quality_default_entry_values",
),
SwitchPreference("revanced_remember_shorts_quality_last_selected")
)
)
) )
/* /*

View File

@@ -1,10 +1,19 @@
package app.revanced.patches.youtube.video.speed package app.revanced.patches.youtube.video.speed
import app.revanced.patcher.patch.bytecodePatch import app.revanced.patcher.patch.bytecodePatch
import app.revanced.patches.shared.misc.settings.preference.BasePreference
import app.revanced.patches.shared.misc.settings.preference.PreferenceCategory
import app.revanced.patches.shared.misc.settings.preference.PreferenceScreenPreference.Sorting
import app.revanced.patches.youtube.misc.settings.PreferenceScreen
import app.revanced.patches.youtube.video.speed.button.playbackSpeedButtonPatch import app.revanced.patches.youtube.video.speed.button.playbackSpeedButtonPatch
import app.revanced.patches.youtube.video.speed.custom.customPlaybackSpeedPatch import app.revanced.patches.youtube.video.speed.custom.customPlaybackSpeedPatch
import app.revanced.patches.youtube.video.speed.remember.rememberPlaybackSpeedPatch import app.revanced.patches.youtube.video.speed.remember.rememberPlaybackSpeedPatch
/**
* Speed menu settings. Used to organize all speed related settings together.
*/
internal val settingsMenuVideoSpeedGroup = mutableSetOf<BasePreference>()
@Suppress("unused") @Suppress("unused")
val playbackSpeedPatch = bytecodePatch( val playbackSpeedPatch = bytecodePatch(
name = "Playback speed", name = "Playback speed",
@@ -26,6 +35,18 @@ val playbackSpeedPatch = bytecodePatch(
"19.45.38", "19.45.38",
"19.46.42", "19.46.42",
"19.47.53", "19.47.53",
), )
) )
finalize {
PreferenceScreen.VIDEO.addPreferences(
PreferenceCategory(
key = "revanced_zz_key", // Dummy key to force the speed settings last.
titleKey = null,
sorting = Sorting.UNSORTED,
tag = "app.revanced.extension.shared.settings.preference.NoTitlePreferenceCategory",
preferences = settingsMenuVideoSpeedGroup
)
)
}
} }

View File

@@ -25,8 +25,8 @@ import app.revanced.patches.youtube.misc.playservice.is_19_25_or_greater
import app.revanced.patches.youtube.misc.playservice.versionCheckPatch import app.revanced.patches.youtube.misc.playservice.versionCheckPatch
import app.revanced.patches.youtube.misc.recyclerviewtree.hook.addRecyclerViewTreeHook import app.revanced.patches.youtube.misc.recyclerviewtree.hook.addRecyclerViewTreeHook
import app.revanced.patches.youtube.misc.recyclerviewtree.hook.recyclerViewTreeHookPatch import app.revanced.patches.youtube.misc.recyclerviewtree.hook.recyclerViewTreeHookPatch
import app.revanced.patches.youtube.misc.settings.PreferenceScreen
import app.revanced.patches.youtube.misc.settings.settingsPatch import app.revanced.patches.youtube.misc.settings.settingsPatch
import app.revanced.patches.youtube.video.speed.settingsMenuVideoSpeedGroup
import app.revanced.util.* import app.revanced.util.*
import com.android.tools.smali.dexlib2.AccessFlags import com.android.tools.smali.dexlib2.AccessFlags
import com.android.tools.smali.dexlib2.iface.instruction.NarrowLiteralInstruction import com.android.tools.smali.dexlib2.iface.instruction.NarrowLiteralInstruction
@@ -71,13 +71,18 @@ internal val customPlaybackSpeedPatch = bytecodePatch(
execute { execute {
addResources("youtube", "video.speed.custom.customPlaybackSpeedPatch") addResources("youtube", "video.speed.custom.customPlaybackSpeedPatch")
PreferenceScreen.VIDEO.addPreferences( settingsMenuVideoSpeedGroup.addAll(
SwitchPreference("revanced_custom_speed_menu"), listOf(
TextPreference("revanced_custom_playback_speeds", inputType = InputType.TEXT_MULTI_LINE), SwitchPreference("revanced_custom_speed_menu"),
TextPreference(
"revanced_custom_playback_speeds",
inputType = InputType.TEXT_MULTI_LINE
),
)
) )
if (is_19_25_or_greater) { if (is_19_25_or_greater) {
PreferenceScreen.VIDEO.addPreferences( settingsMenuVideoSpeedGroup.add(
TextPreference("revanced_speed_tap_and_hold", inputType = InputType.NUMBER_DECIMAL), TextPreference("revanced_speed_tap_and_hold", inputType = InputType.NUMBER_DECIMAL),
) )
} }

View File

@@ -9,10 +9,10 @@ import app.revanced.patches.all.misc.resources.addResourcesPatch
import app.revanced.patches.shared.misc.settings.preference.ListPreference import app.revanced.patches.shared.misc.settings.preference.ListPreference
import app.revanced.patches.shared.misc.settings.preference.SwitchPreference import app.revanced.patches.shared.misc.settings.preference.SwitchPreference
import app.revanced.patches.youtube.misc.extension.sharedExtensionPatch import app.revanced.patches.youtube.misc.extension.sharedExtensionPatch
import app.revanced.patches.youtube.misc.settings.PreferenceScreen
import app.revanced.patches.youtube.misc.settings.settingsPatch import app.revanced.patches.youtube.misc.settings.settingsPatch
import app.revanced.patches.youtube.video.information.* import app.revanced.patches.youtube.video.information.*
import app.revanced.patches.youtube.video.speed.custom.customPlaybackSpeedPatch import app.revanced.patches.youtube.video.speed.custom.customPlaybackSpeedPatch
import app.revanced.patches.youtube.video.speed.settingsMenuVideoSpeedGroup
import com.android.tools.smali.dexlib2.iface.instruction.ReferenceInstruction import com.android.tools.smali.dexlib2.iface.instruction.ReferenceInstruction
private const val EXTENSION_CLASS_DESCRIPTOR = private const val EXTENSION_CLASS_DESCRIPTOR =
@@ -30,15 +30,17 @@ internal val rememberPlaybackSpeedPatch = bytecodePatch {
execute { execute {
addResources("youtube", "video.speed.remember.rememberPlaybackSpeedPatch") addResources("youtube", "video.speed.remember.rememberPlaybackSpeedPatch")
PreferenceScreen.VIDEO.addPreferences( settingsMenuVideoSpeedGroup.addAll(
SwitchPreference("revanced_remember_playback_speed_last_selected"), listOf(
ListPreference( ListPreference(
key = "revanced_playback_speed_default", key = "revanced_playback_speed_default",
summaryKey = null, summaryKey = null,
// Entries and values are set by the extension code based on the actual speeds available. // Entries and values are set by the extension code based on the actual speeds available.
entriesKey = null, entriesKey = null,
entryValuesKey = null, entryValuesKey = null,
), ),
SwitchPreference("revanced_remember_playback_speed_last_selected")
)
) )
onCreateHook(EXTENSION_CLASS_DESCRIPTOR, "newVideoStarted") onCreateHook(EXTENSION_CLASS_DESCRIPTOR, "newVideoStarted")

View File

@@ -408,10 +408,13 @@ internal fun MutableMethod.insertFeatureFlagBooleanOverride(literal: Long, exten
val index = indexOfFirstInstructionOrThrow(literalIndex, Opcode.MOVE_RESULT) val index = indexOfFirstInstructionOrThrow(literalIndex, Opcode.MOVE_RESULT)
val register = getInstruction<OneRegisterInstruction>(index).registerA val register = getInstruction<OneRegisterInstruction>(index).registerA
val operation = if (register < 16) "invoke-static { v$register }"
else "invoke-static/range { v$register .. v$register }"
addInstructions( addInstructions(
index + 1, index + 1,
""" """
invoke-static { v$register }, $extensionsMethod $operation, $extensionsMethod
move-result v$register move-result v$register
""" """
) )
@@ -458,7 +461,7 @@ fun MutableMethod.returnEarly(bool: Boolean = false) {
return v0 return v0
""" """
else -> throw Exception("This case should never happen.") else -> throw Exception("Return type is not supported: $this")
} }
addInstructions(0, stringInstructions) addInstructions(0, stringInstructions)

View File

@@ -130,7 +130,7 @@ Second \"item\" text"</string>
<!-- 'remix' should be translated using the same localized wording YouTube displays for the button. --> <!-- 'remix' should be translated using the same localized wording YouTube displays for the button. -->
<!-- 'share' should be translated using the same localized wording YouTube displays for the button. --> <!-- 'share' should be translated using the same localized wording YouTube displays for the button. -->
</patch> </patch>
<patch id="layout.hide.suggestedvideoendscreen.disableSuggestedVideoEndScreenResourcePatch"> <patch id="layout.hide.endscreensuggestion.hideEndScreenSuggestedVideoPatch">
</patch> </patch>
<patch id="layout.hide.time.hideTimestampPatch"> <patch id="layout.hide.time.hideTimestampPatch">
</patch> </patch>
@@ -206,6 +206,7 @@ Second \"item\" text"</string>
<patch id="misc.zoomhaptics.zoomHapticsPatch"> <patch id="misc.zoomhaptics.zoomHapticsPatch">
</patch> </patch>
<patch id="video.audio.forceOriginalAudioPatch"> <patch id="video.audio.forceOriginalAudioPatch">
<!-- 'Spoof video streams' should be the same translation used for revanced_spoof_video_streams_screen_title -->
</patch> </patch>
<patch id="video.quality.rememberVideoQualityPatch"> <patch id="video.quality.rememberVideoQualityPatch">
<!-- Translations should use the same text as revanced_custom_playback_speeds_auto --> <!-- Translations should use the same text as revanced_custom_playback_speeds_auto -->

View File

@@ -130,7 +130,7 @@ Second \"item\" text"</string>
<!-- 'remix' should be translated using the same localized wording YouTube displays for the button. --> <!-- 'remix' should be translated using the same localized wording YouTube displays for the button. -->
<!-- 'share' should be translated using the same localized wording YouTube displays for the button. --> <!-- 'share' should be translated using the same localized wording YouTube displays for the button. -->
</patch> </patch>
<patch id="layout.hide.suggestedvideoendscreen.disableSuggestedVideoEndScreenResourcePatch"> <patch id="layout.hide.endscreensuggestion.hideEndScreenSuggestedVideoPatch">
</patch> </patch>
<patch id="layout.hide.time.hideTimestampPatch"> <patch id="layout.hide.time.hideTimestampPatch">
</patch> </patch>
@@ -206,6 +206,7 @@ Second \"item\" text"</string>
<patch id="misc.zoomhaptics.zoomHapticsPatch"> <patch id="misc.zoomhaptics.zoomHapticsPatch">
</patch> </patch>
<patch id="video.audio.forceOriginalAudioPatch"> <patch id="video.audio.forceOriginalAudioPatch">
<!-- 'Spoof video streams' should be the same translation used for revanced_spoof_video_streams_screen_title -->
</patch> </patch>
<patch id="video.quality.rememberVideoQualityPatch"> <patch id="video.quality.rememberVideoQualityPatch">
<!-- Translations should use the same text as revanced_custom_playback_speeds_auto --> <!-- Translations should use the same text as revanced_custom_playback_speeds_auto -->

View File

@@ -301,13 +301,13 @@ Second \"item\" text"</string>
<string name="revanced_hide_description_components_screen_title">وصف الفيديو</string> <string name="revanced_hide_description_components_screen_title">وصف الفيديو</string>
<string name="revanced_hide_description_components_screen_summary">إخفاء أو عرض مكونات وصف الفيديو</string> <string name="revanced_hide_description_components_screen_summary">إخفاء أو عرض مكونات وصف الفيديو</string>
<string name="revanced_hide_filter_bar_screen_title">شريط التصفية</string> <string name="revanced_hide_filter_bar_screen_title">شريط التصفية</string>
<string name="revanced_hide_filter_bar_screen_summary">إخفاء شريط التصفية أو عرضه في الموجز والبحث الفيديوهات ذات الصلة</string> <string name="revanced_hide_filter_bar_screen_summary">إخفاء أو إظهار شريط الفلتر في الخلاصة ونتائج البحث ومقاطع الفيديو ذات الصلة</string>
<string name="revanced_hide_filter_bar_feed_in_feed_title">إخفاء في الموجز</string> <string name="revanced_hide_filter_bar_feed_in_feed_title">إخفاء في الموجز</string>
<string name="revanced_hide_filter_bar_feed_in_feed_summary_on">مخفي في الموجز</string> <string name="revanced_hide_filter_bar_feed_in_feed_summary_on">مخفي في الموجز</string>
<string name="revanced_hide_filter_bar_feed_in_feed_summary_off">يعرض في الموجز</string> <string name="revanced_hide_filter_bar_feed_in_feed_summary_off">يعرض في الموجز</string>
<string name="revanced_hide_filter_bar_feed_in_search_title">إخفاء في البحث</string> <string name="revanced_hide_filter_bar_feed_in_search_title">إخفاء في نتائج البحث</string>
<string name="revanced_hide_filter_bar_feed_in_search_summary_on">مخفي في البحث</string> <string name="revanced_hide_filter_bar_feed_in_search_summary_on">مخفي في نتائج البحث</string>
<string name="revanced_hide_filter_bar_feed_in_search_summary_off">يعرض في البحث</string> <string name="revanced_hide_filter_bar_feed_in_search_summary_off">يظهر في نتائج البحث</string>
<string name="revanced_hide_filter_bar_feed_in_related_videos_title">إخفاء في الفيديوهات ذات الصلة</string> <string name="revanced_hide_filter_bar_feed_in_related_videos_title">إخفاء في الفيديوهات ذات الصلة</string>
<string name="revanced_hide_filter_bar_feed_in_related_videos_summary_on">مخفي في الفيديوهات ذات الصلة</string> <string name="revanced_hide_filter_bar_feed_in_related_videos_summary_on">مخفي في الفيديوهات ذات الصلة</string>
<string name="revanced_hide_filter_bar_feed_in_related_videos_summary_off">يعرض في الفيديوهات ذات الصلة</string> <string name="revanced_hide_filter_bar_feed_in_related_videos_summary_off">يعرض في الفيديوهات ذات الصلة</string>
@@ -404,7 +404,7 @@ Second \"item\" text"</string>
<string name="revanced_hide_self_sponsor_ads_title">إخفاء بطاقات الرعاية الذاتية</string> <string name="revanced_hide_self_sponsor_ads_title">إخفاء بطاقات الرعاية الذاتية</string>
<string name="revanced_hide_self_sponsor_ads_summary_on">تم إخفاء بطاقات الرعاية الذاتية</string> <string name="revanced_hide_self_sponsor_ads_summary_on">تم إخفاء بطاقات الرعاية الذاتية</string>
<string name="revanced_hide_self_sponsor_ads_summary_off">يتم عرض بطاقات الرعاية الذاتية</string> <string name="revanced_hide_self_sponsor_ads_summary_off">يتم عرض بطاقات الرعاية الذاتية</string>
<string name="revanced_hide_products_banner_title">إخفاء لافتة لعرض المنتجات</string> <string name="revanced_hide_products_banner_title">إخفاء لافتة \"عرض المنتجات\"</string>
<string name="revanced_hide_products_banner_summary_on">تم إخفاء البانر</string> <string name="revanced_hide_products_banner_summary_on">تم إخفاء البانر</string>
<string name="revanced_hide_products_banner_summary_off">يتم عرض البانر</string> <string name="revanced_hide_products_banner_summary_off">يتم عرض البانر</string>
<string name="revanced_hide_end_screen_store_banner_title">إخفاء لافتة شاشة المتجر النهائية</string> <string name="revanced_hide_end_screen_store_banner_title">إخفاء لافتة شاشة المتجر النهائية</string>
@@ -443,10 +443,10 @@ Second \"item\" text"</string>
<string name="revanced_share_copy_url_success">تم نسخ URL إلى الحافظة</string> <string name="revanced_share_copy_url_success">تم نسخ URL إلى الحافظة</string>
<string name="revanced_share_copy_url_timestamp_success">تم نسخ عنوان URL مع الطابع الزمني</string> <string name="revanced_share_copy_url_timestamp_success">تم نسخ عنوان URL مع الطابع الزمني</string>
<string name="revanced_copy_video_url_title">عرض زر نسخ عنوان URL للفيديو</string> <string name="revanced_copy_video_url_title">عرض زر نسخ عنوان URL للفيديو</string>
<string name="revanced_copy_video_url_summary_on">يتم عرض الزر. انقر لنسخ رابط الفيديو. انقر مع الاستمرار لنسخ URL الفيديو مع الطابع الزمني</string> <string name="revanced_copy_video_url_summary_on">يتم عرض الزر. انقر لنسخ عنوان URL للفيديو. انقر مع الاستمرار للنسخ مع الطابع الزمني</string>
<string name="revanced_copy_video_url_summary_off">لا يتم عرض الزر</string> <string name="revanced_copy_video_url_summary_off">لا يتم عرض الزر</string>
<string name="revanced_copy_video_url_timestamp_title">عرض زر نسخ URL مع الطابع الزمني</string> <string name="revanced_copy_video_url_timestamp_title">عرض زر نسخ URL مع الطابع الزمني</string>
<string name="revanced_copy_video_url_timestamp_summary_on">يتم عرض الزر. انقر لنسخ عنوان URL للفيديو مع الطابع الزمني. انقر مع الاستمرار لنسخ الفيديو بدون الطابع الزمني</string> <string name="revanced_copy_video_url_timestamp_summary_on">يتم عرض الزر. انقر لنسخ عنوان URL للفيديو مع الطابع الزمني. انقر مع الاستمرار للنسخ بدون الطابع الزمني</string>
<string name="revanced_copy_video_url_timestamp_summary_off">لا يتم عرض الزر</string> <string name="revanced_copy_video_url_timestamp_summary_off">لا يتم عرض الزر</string>
</patch> </patch>
<patch id="interaction.dialog.removeViewerDiscretionDialogPatch"> <patch id="interaction.dialog.removeViewerDiscretionDialogPatch">
@@ -663,7 +663,7 @@ Second \"item\" text"</string>
<string name="revanced_hide_player_flyout_video_quality_footer_summary_off">يتم عرض تذييل قائمة جودة الفيديو</string> <string name="revanced_hide_player_flyout_video_quality_footer_summary_off">يتم عرض تذييل قائمة جودة الفيديو</string>
</patch> </patch>
<patch id="layout.buttons.overlay.hidePlayerOverlayButtonsPatch"> <patch id="layout.buttons.overlay.hidePlayerOverlayButtonsPatch">
<string name="revanced_hide_player_previous_next_buttons_title">إخفاء أزرار الفيديو السابق &amp; التالي</string> <string name="revanced_hide_player_previous_next_buttons_title">إخفاء زري \"السابق\" و \"التالي\"</string>
<string name="revanced_hide_player_previous_next_buttons_summary_on">تم إخفاء الأزرار</string> <string name="revanced_hide_player_previous_next_buttons_summary_on">تم إخفاء الأزرار</string>
<string name="revanced_hide_player_previous_next_buttons_summary_off">يتم عرض الأزرار</string> <string name="revanced_hide_player_previous_next_buttons_summary_off">يتم عرض الأزرار</string>
<string name="revanced_hide_cast_button_title">إخفاء زر البث</string> <string name="revanced_hide_cast_button_title">إخفاء زر البث</string>
@@ -808,10 +808,13 @@ Second \"item\" text"</string>
<string name="revanced_hide_shorts_navigation_bar_summary_on">تم إخفاء شريط التنقل</string> <string name="revanced_hide_shorts_navigation_bar_summary_on">تم إخفاء شريط التنقل</string>
<string name="revanced_hide_shorts_navigation_bar_summary_off">يتم عرض شريط التنقل</string> <string name="revanced_hide_shorts_navigation_bar_summary_off">يتم عرض شريط التنقل</string>
</patch> </patch>
<patch id="layout.hide.suggestedvideoendscreen.disableSuggestedVideoEndScreenResourcePatch"> <patch id="layout.hide.endscreensuggestion.hideEndScreenSuggestedVideoPatch">
<string name="revanced_disable_suggested_video_end_screen_title">تعطيل شاشة نهاية الفيديو المقترح</string> <string name="revanced_end_screen_suggested_video_title">إخفاء الفيديو المقترح في شاشة النهاية</string>
<string name="revanced_disable_suggested_video_end_screen_summary_on">الفيديوهات المقترحة سيتم تعطيلها</string> <string name="revanced_end_screen_suggested_video_summary_on">"يتم إخفاء الفيديو المقترح في شاشة النهاية عند إيقاف التشغيل التلقائي
<string name="revanced_disable_suggested_video_end_screen_summary_off">الفيديوهات المقترحة سيتم عرضها</string>
يمكن تغيير التشغيل التلقائي في إعدادات YouTube:
الإعدادات ← التشغيل ← تشغيل الفيديو التالي تلقائيًا"</string>
<string name="revanced_end_screen_suggested_video_summary_off">يتم عرض الفيديو المقترح في شاشة النهاية</string>
</patch> </patch>
<patch id="layout.hide.time.hideTimestampPatch"> <patch id="layout.hide.time.hideTimestampPatch">
<string name="revanced_hide_timestamp_title">إخفاء الطابع الزمني للفيديو</string> <string name="revanced_hide_timestamp_title">إخفاء الطابع الزمني للفيديو</string>
@@ -1113,16 +1116,14 @@ Second \"item\" text"</string>
<string name="revanced_change_form_factor_entry_2">الجوّال</string> <string name="revanced_change_form_factor_entry_2">الجوّال</string>
<string name="revanced_change_form_factor_entry_3">الجهاز اللوحي</string> <string name="revanced_change_form_factor_entry_3">الجهاز اللوحي</string>
<string name="revanced_change_form_factor_entry_4">Automotive</string> <string name="revanced_change_form_factor_entry_4">Automotive</string>
<string name="revanced_change_form_factor_user_dialog_message">"تتضمن التغييرات: <string name="revanced_change_form_factor_user_dialog_message">"التغييرات تشمل:
تخطيط الجهاز اللوحي تصميم الجهاز اللوحي
إخفاء منشورات المجتمع مشاركات المجتمع مخفية
تخطيط Automotive تصميم السيارة
إخفاء قائمة سجل المشاهدة يتم فتح Shorts في المشغل العادي
استعادة علامة التبويب \"استكشاف\" يتم تنظيم الخلاصة حسب المواضيع والقنوات"</string>
• فتح فيديوهات Shorts في المشغل العادي
• تنظيم الخلاصة حسب الموضوعات والقناة"</string>
</patch> </patch>
<patch id="layout.spoofappversion.spoofAppVersionPatch"> <patch id="layout.spoofappversion.spoofAppVersionPatch">
<string name="revanced_spoof_app_version_title">خِداع إصدار التطبيق</string> <string name="revanced_spoof_app_version_title">خِداع إصدار التطبيق</string>
@@ -1338,8 +1339,8 @@ Second \"item\" text"</string>
</patch> </patch>
<patch id="misc.links.openLinksExternallyPatch"> <patch id="misc.links.openLinksExternallyPatch">
<string name="revanced_external_browser_title">فتح الروابط في المتصفح</string> <string name="revanced_external_browser_title">فتح الروابط في المتصفح</string>
<string name="revanced_external_browser_summary_on">فتح الروابط خارجيًا</string> <string name="revanced_external_browser_summary_on">فتح الروابط في متصفح خارجي</string>
<string name="revanced_external_browser_summary_off">فتح الروابط في التطبيق</string> <string name="revanced_external_browser_summary_off">فتح الروابط في متصفح داخل التطبيق</string>
</patch> </patch>
<patch id="misc.privacy.removeTrackingQueryParameterPatch"> <patch id="misc.privacy.removeTrackingQueryParameterPatch">
<string name="revanced_remove_tracking_query_parameter_title">إزالة معلمة تتبع الاستعلام</string> <string name="revanced_remove_tracking_query_parameter_title">إزالة معلمة تتبع الاستعلام</string>
@@ -1352,22 +1353,29 @@ Second \"item\" text"</string>
<string name="revanced_disable_zoom_haptics_summary_off">تم تمكين الاهتزاز</string> <string name="revanced_disable_zoom_haptics_summary_off">تم تمكين الاهتزاز</string>
</patch> </patch>
<patch id="video.audio.forceOriginalAudioPatch"> <patch id="video.audio.forceOriginalAudioPatch">
<string name="revanced_force_original_audio_title">فرض الصوت الأصلي</string> <string name="revanced_force_original_audio_summary_on">استخدام لغة الصوت الأصلية</string>
<string name="revanced_force_original_audio_summary_on">استخدام الصوت الأصلي</string>
<string name="revanced_force_original_audio_summary_off">استخدام الصوت الافتراضي</string> <string name="revanced_force_original_audio_summary_off">استخدام الصوت الافتراضي</string>
<string name="revanced_force_original_audio_not_available">لاستخدام هذه الميزة، قم بتغيير محاكاة بث المحتوى إلى نوع العميل iOS</string> <!-- 'Spoof video streams' should be the same translation used for revanced_spoof_video_streams_screen_title -->
<string name="revanced_force_original_audio_not_available">لاستخدام هذه الميزة، غيّر \"انتحال دفقات الفيديو\" إلى iOS TV</string>
</patch> </patch>
<patch id="video.quality.rememberVideoQualityPatch"> <patch id="video.quality.rememberVideoQualityPatch">
<!-- Translations should use the same text as revanced_custom_playback_speeds_auto --> <!-- Translations should use the same text as revanced_custom_playback_speeds_auto -->
<string name="revanced_video_quality_screen_title">جودة الفيديو</string>
<string name="revanced_video_quality_default_entry_1">تلقائي</string> <string name="revanced_video_quality_default_entry_1">تلقائي</string>
<string name="revanced_remember_video_quality_last_selected_title">تذكر تغييرات جودة الفيديو</string> <string name="revanced_remember_video_quality_last_selected_title">تذكر تغييرات جودة الفيديو</string>
<string name="revanced_remember_video_quality_last_selected_summary_on">تنطبق تغييرات الجودة على جميع الفيديوهات</string> <string name="revanced_remember_video_quality_last_selected_summary_on">تنطبق تغييرات الجودة على جميع الفيديوهات</string>
<string name="revanced_remember_video_quality_last_selected_summary_off">تنطبق تغييرات الجودة على الفيديو الحالي فقط</string> <string name="revanced_remember_video_quality_last_selected_summary_off">تنطبق تغييرات الجودة على الفيديو الحالي فقط</string>
<string name="revanced_video_quality_default_wifi_title">جودة الفيديو الافتراضية على شبكة Wi-Fi</string> <string name="revanced_video_quality_default_wifi_title">جودة الفيديو الافتراضية على شبكة Wi-Fi</string>
<string name="revanced_video_quality_default_mobile_title">جودة الفيديو الافتراضية على شبكة الجوَّال</string> <string name="revanced_video_quality_default_mobile_title">جودة الفيديو الافتراضية على شبكة الجوَّال</string>
<string name="revanced_remember_shorts_quality_last_selected_title">تذكر تغييرات جودة Shorts</string>
<string name="revanced_remember_shorts_quality_last_selected_summary_on">تطبق تغييرات الجودة على جميع فيديوهات Shorts</string>
<string name="revanced_remember_shorts_quality_last_selected_summary_off">تطبق تغييرات الجودة على فيديو Shorts الحالي فقط</string>
<string name="revanced_shorts_quality_default_wifi_title">جودة Shorts الافتراضية على شبكة Wi-Fi</string>
<string name="revanced_shorts_quality_default_mobile_title">جودة Shorts الافتراضية على شبكة الجوال</string>
<string name="revanced_remember_video_quality_mobile">الجوّال</string> <string name="revanced_remember_video_quality_mobile">الجوّال</string>
<string name="revanced_remember_video_quality_wifi">Wi-Fi</string> <string name="revanced_remember_video_quality_wifi">Wi-Fi</string>
<string name="revanced_remember_video_quality_toast">تم تغيير جودة %1$s الافتراضية إلى: %2$s</string> <string name="revanced_remember_video_quality_toast">تم تغيير جودة %1$s الافتراضية إلى: %2$s</string>
<string name="revanced_remember_video_quality_toast_shorts">تم تغيير جودة Shorts %1$s إلى: %2$s</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>

View File

@@ -130,7 +130,7 @@ Second \"item\" text"</string>
<!-- 'remix' should be translated using the same localized wording YouTube displays for the button. --> <!-- 'remix' should be translated using the same localized wording YouTube displays for the button. -->
<!-- 'share' should be translated using the same localized wording YouTube displays for the button. --> <!-- 'share' should be translated using the same localized wording YouTube displays for the button. -->
</patch> </patch>
<patch id="layout.hide.suggestedvideoendscreen.disableSuggestedVideoEndScreenResourcePatch"> <patch id="layout.hide.endscreensuggestion.hideEndScreenSuggestedVideoPatch">
</patch> </patch>
<patch id="layout.hide.time.hideTimestampPatch"> <patch id="layout.hide.time.hideTimestampPatch">
</patch> </patch>
@@ -208,6 +208,7 @@ Second \"item\" text"</string>
<patch id="misc.zoomhaptics.zoomHapticsPatch"> <patch id="misc.zoomhaptics.zoomHapticsPatch">
</patch> </patch>
<patch id="video.audio.forceOriginalAudioPatch"> <patch id="video.audio.forceOriginalAudioPatch">
<!-- 'Spoof video streams' should be the same translation used for revanced_spoof_video_streams_screen_title -->
</patch> </patch>
<patch id="video.quality.rememberVideoQualityPatch"> <patch id="video.quality.rememberVideoQualityPatch">
<!-- Translations should use the same text as revanced_custom_playback_speeds_auto --> <!-- Translations should use the same text as revanced_custom_playback_speeds_auto -->

View File

@@ -301,13 +301,13 @@ Gözlənilməz hallardan xəbərdar olmayacaqsınız."</string>
<string name="revanced_hide_description_components_screen_title">Video açıqlaması</string> <string name="revanced_hide_description_components_screen_title">Video açıqlaması</string>
<string name="revanced_hide_description_components_screen_summary">Video açıqlaması elementlərini gizlət və ya göstər</string> <string name="revanced_hide_description_components_screen_summary">Video açıqlaması elementlərini gizlət və ya göstər</string>
<string name="revanced_hide_filter_bar_screen_title">Filtr çubuğu</string> <string name="revanced_hide_filter_bar_screen_title">Filtr çubuğu</string>
<string name="revanced_hide_filter_bar_screen_summary">Axında, axtarışda və əlaqəli videolardakı filtr çubuğunu gizlət və ya göstər</string> <string name="revanced_hide_filter_bar_screen_summary">Axında, axtarış nəticələrində və əlaqəli videolarda filtr cərgəsin gizlət və ya göstər</string>
<string name="revanced_hide_filter_bar_feed_in_feed_title">Axında gizlət</string> <string name="revanced_hide_filter_bar_feed_in_feed_title">Axında gizlət</string>
<string name="revanced_hide_filter_bar_feed_in_feed_summary_on">Axında gizlidir</string> <string name="revanced_hide_filter_bar_feed_in_feed_summary_on">Axında gizlidir</string>
<string name="revanced_hide_filter_bar_feed_in_feed_summary_off">Axında göstərilir</string> <string name="revanced_hide_filter_bar_feed_in_feed_summary_off">Axında göstərilir</string>
<string name="revanced_hide_filter_bar_feed_in_search_title">Axtarışda gizlət</string> <string name="revanced_hide_filter_bar_feed_in_search_title">Axtarış nəticələrində gizlət</string>
<string name="revanced_hide_filter_bar_feed_in_search_summary_on">Axtarışda gizlidir</string> <string name="revanced_hide_filter_bar_feed_in_search_summary_on">Axtarış nəticələrində gizlədilib</string>
<string name="revanced_hide_filter_bar_feed_in_search_summary_off">Axtarışda görünür</string> <string name="revanced_hide_filter_bar_feed_in_search_summary_off">Axtarış nəticələrində göstərilir</string>
<string name="revanced_hide_filter_bar_feed_in_related_videos_title">Əlaqəli videolarda gizlət</string> <string name="revanced_hide_filter_bar_feed_in_related_videos_title">Əlaqəli videolarda gizlət</string>
<string name="revanced_hide_filter_bar_feed_in_related_videos_summary_on">Əlaqəli videolarda gizlidir</string> <string name="revanced_hide_filter_bar_feed_in_related_videos_summary_on">Əlaqəli videolarda gizlidir</string>
<string name="revanced_hide_filter_bar_feed_in_related_videos_summary_off">Əlaqəli videolarda görünür</string> <string name="revanced_hide_filter_bar_feed_in_related_videos_summary_off">Əlaqəli videolarda görünür</string>
@@ -404,7 +404,6 @@ Bu xüsusiyyət yalnız köhnə cihazlar üçün mövcuddur"</string>
<string name="revanced_hide_self_sponsor_ads_title">Öz-sponsorlu kartları gizlət</string> <string name="revanced_hide_self_sponsor_ads_title">Öz-sponsorlu kartları gizlət</string>
<string name="revanced_hide_self_sponsor_ads_summary_on">Özünə sponsorluq edilən kartlar gizlidir</string> <string name="revanced_hide_self_sponsor_ads_summary_on">Özünə sponsorluq edilən kartlar gizlidir</string>
<string name="revanced_hide_self_sponsor_ads_summary_off">Özünə sponsorluq edilən kartlar göstərilir</string> <string name="revanced_hide_self_sponsor_ads_summary_off">Özünə sponsorluq edilən kartlar göstərilir</string>
<string name="revanced_hide_products_banner_title">Məhsullara baxma etiketin gizlət</string>
<string name="revanced_hide_products_banner_summary_on">Etiket gizlədilib</string> <string name="revanced_hide_products_banner_summary_on">Etiket gizlədilib</string>
<string name="revanced_hide_products_banner_summary_off">Etiket göstərilir</string> <string name="revanced_hide_products_banner_summary_off">Etiket göstərilir</string>
<string name="revanced_hide_end_screen_store_banner_title">Son ekran mağaza etiketini gizlət</string> <string name="revanced_hide_end_screen_store_banner_title">Son ekran mağaza etiketini gizlət</string>
@@ -443,10 +442,10 @@ Bu xüsusiyyət yalnız köhnə cihazlar üçün mövcuddur"</string>
<string name="revanced_share_copy_url_success">URL buferə köçürüldü</string> <string name="revanced_share_copy_url_success">URL buferə köçürüldü</string>
<string name="revanced_share_copy_url_timestamp_success">Vaxt möhürlü URL köçürüldü</string> <string name="revanced_share_copy_url_timestamp_success">Vaxt möhürlü URL köçürüldü</string>
<string name="revanced_copy_video_url_title">Video URL-i köçürmə düyməsin göstər</string> <string name="revanced_copy_video_url_title">Video URL-i köçürmə düyməsin göstər</string>
<string name="revanced_copy_video_url_summary_on">Düymə göstərilir. Video URL-sini köçürmək üçün toxun. Vaxt möhürlü video URL-sini köçürmək üçün basılı saxla</string> <string name="revanced_copy_video_url_summary_on">Düymə göstərilir. Video URL-ni köçürmək üçün toxun. Vaxt möhürü ilə köçürmək üçün basıb saxlayın</string>
<string name="revanced_copy_video_url_summary_off">Düymə göstərilmir</string> <string name="revanced_copy_video_url_summary_off">Düymə göstərilmir</string>
<string name="revanced_copy_video_url_timestamp_title">Vaxt möhürü URL köçür düyməsi göstər</string> <string name="revanced_copy_video_url_timestamp_title">Vaxt möhürü URL köçür düyməsi göstər</string>
<string name="revanced_copy_video_url_timestamp_summary_on">Düymə göstərilir. Vaxt möhürlü video URL-sini köçürmək üçün toxun. Vaxt möhürü olmadan köçürmək üçün basılı saxla</string> <string name="revanced_copy_video_url_timestamp_summary_on">Düymə göstərilir. Video URL-ni vaxt möhürü ilə köçürmək üçün toxun. Vaxt möhürü olmadan köçürmək üçün basıb saxlayın</string>
<string name="revanced_copy_video_url_timestamp_summary_off">Düymə göstərilmir</string> <string name="revanced_copy_video_url_timestamp_summary_off">Düymə göstərilmir</string>
</patch> </patch>
<patch id="interaction.dialog.removeViewerDiscretionDialogPatch"> <patch id="interaction.dialog.removeViewerDiscretionDialogPatch">
@@ -663,7 +662,6 @@ Bu seçimi dəyişdirmə işə düşmürsə, Gizli rejimə keçməyə çalışı
<string name="revanced_hide_player_flyout_video_quality_footer_summary_off">Video keyfiyyət menyusu alt məlumatı göstərilir</string> <string name="revanced_hide_player_flyout_video_quality_footer_summary_off">Video keyfiyyət menyusu alt məlumatı göstərilir</string>
</patch> </patch>
<patch id="layout.buttons.overlay.hidePlayerOverlayButtonsPatch"> <patch id="layout.buttons.overlay.hidePlayerOverlayButtonsPatch">
<string name="revanced_hide_player_previous_next_buttons_title">Əvvəlki/növbəti video düymələrin gizlət</string>
<string name="revanced_hide_player_previous_next_buttons_summary_on">Düymələr gizlidir</string> <string name="revanced_hide_player_previous_next_buttons_summary_on">Düymələr gizlidir</string>
<string name="revanced_hide_player_previous_next_buttons_summary_off">Düymələr göstərilir</string> <string name="revanced_hide_player_previous_next_buttons_summary_off">Düymələr göstərilir</string>
<string name="revanced_hide_cast_button_title">Yayımla düyməsini gizlət</string> <string name="revanced_hide_cast_button_title">Yayımla düyməsini gizlət</string>
@@ -808,10 +806,12 @@ Bu seçimi dəyişdirmə işə düşmürsə, Gizli rejimə keçməyə çalışı
<string name="revanced_hide_shorts_navigation_bar_summary_on">Fəaliyyət çubuğu gizlidir</string> <string name="revanced_hide_shorts_navigation_bar_summary_on">Fəaliyyət çubuğu gizlidir</string>
<string name="revanced_hide_shorts_navigation_bar_summary_off">Fəaliyyət çubuğu göstərilir</string> <string name="revanced_hide_shorts_navigation_bar_summary_off">Fəaliyyət çubuğu göstərilir</string>
</patch> </patch>
<patch id="layout.hide.suggestedvideoendscreen.disableSuggestedVideoEndScreenResourcePatch"> <patch id="layout.hide.endscreensuggestion.hideEndScreenSuggestedVideoPatch">
<string name="revanced_disable_suggested_video_end_screen_title">Təklif edilən video bitiş ekranın qapadın</string> <string name="revanced_end_screen_suggested_video_title">Son ekran bildirilən videonu gizlət</string>
<string name="revanced_disable_suggested_video_end_screen_summary_on">Təklif olunan videolar qeyri-aktiv ediləcək</string> <string name="revanced_end_screen_suggested_video_summary_on">"Avtomatik oynatma qapadılanda son ekran bildirilən video gizlədilir
<string name="revanced_disable_suggested_video_end_screen_summary_off">Təklif olunan videolar göstəriləcək</string>
Avtomatik oynatma YouTube ayarlarında dəyişdirilə bilər: Ayarlar → Oxunuş → Növbəti videonu avtomatik oxudun"</string>
<string name="revanced_end_screen_suggested_video_summary_off">Son ekranda bildirilən video göstərilir</string>
</patch> </patch>
<patch id="layout.hide.time.hideTimestampPatch"> <patch id="layout.hide.time.hideTimestampPatch">
<string name="revanced_hide_timestamp_title">Video vaxt möhürünü gizlət</string> <string name="revanced_hide_timestamp_title">Video vaxt möhürünü gizlət</string>
@@ -1113,16 +1113,6 @@ Təqdim etməyə hazırdır?"</string>
<string name="revanced_change_form_factor_entry_2">Telefon</string> <string name="revanced_change_form_factor_entry_2">Telefon</string>
<string name="revanced_change_form_factor_entry_3">Planşet</string> <string name="revanced_change_form_factor_entry_3">Planşet</string>
<string name="revanced_change_form_factor_entry_4">Avtomobil</string> <string name="revanced_change_form_factor_entry_4">Avtomobil</string>
<string name="revanced_change_form_factor_user_dialog_message">"Dəyişikliklərə daxildir:
Planşet tərtibatı
• İcma elanları gizlidir
Avtomobil tərtibatı
• Baxış tarixçəsi seçimi gizlidir
• \"Kəşf et\" bölməsi qaytarılıb
• Shorts daimi oynadıcıda açılır
• Axın mövzulara və kanala görə hazırlanıb"</string>
</patch> </patch>
<patch id="layout.spoofappversion.spoofAppVersionPatch"> <patch id="layout.spoofappversion.spoofAppVersionPatch">
<string name="revanced_spoof_app_version_title">Tətbiq versiyasını saxtalaşdır</string> <string name="revanced_spoof_app_version_title">Tətbiq versiyasını saxtalaşdır</string>
@@ -1192,7 +1182,6 @@ Sonradan qapadılarsa, UI səhvlərin önləmək üçün tətbiq məlumatların
</patch> </patch>
<patch id="layout.miniplayer.miniplayerPatch"> <patch id="layout.miniplayer.miniplayerPatch">
<string name="revanced_miniplayer_screen_title">Kiçik oynadıcı</string> <string name="revanced_miniplayer_screen_title">Kiçik oynadıcı</string>
<string name="revanced_miniplayer_screen_summary">Tətbiqdə kiçildilən oynadıcı üslubunu dəyişdir</string>
<string name="revanced_miniplayer_type_title">Kiçik oynadıcı növü</string> <string name="revanced_miniplayer_type_title">Kiçik oynadıcı növü</string>
<string name="revanced_miniplayer_type_entry_0">Qeyri-aktivdir</string> <string name="revanced_miniplayer_type_entry_0">Qeyri-aktivdir</string>
<string name="revanced_miniplayer_type_entry_1">İlkin</string> <string name="revanced_miniplayer_type_entry_1">İlkin</string>
@@ -1338,8 +1327,6 @@ Bunu aktivləşdirmə daha yüksək video keyfiyyətləri əngəlin silə bilər
</patch> </patch>
<patch id="misc.links.openLinksExternallyPatch"> <patch id="misc.links.openLinksExternallyPatch">
<string name="revanced_external_browser_title">Bağlantıları brauzerdə aç</string> <string name="revanced_external_browser_title">Bağlantıları brauzerdə aç</string>
<string name="revanced_external_browser_summary_on">Bağlantılar xarici yolla açılır</string>
<string name="revanced_external_browser_summary_off">Bağlantılar tətbiqdə açılır</string>
</patch> </patch>
<patch id="misc.privacy.removeTrackingQueryParameterPatch"> <patch id="misc.privacy.removeTrackingQueryParameterPatch">
<string name="revanced_remove_tracking_query_parameter_title">İzləmə sorğusu faktorun sil</string> <string name="revanced_remove_tracking_query_parameter_title">İzləmə sorğusu faktorun sil</string>
@@ -1352,10 +1339,11 @@ Bunu aktivləşdirmə daha yüksək video keyfiyyətləri əngəlin silə bilər
<string name="revanced_disable_zoom_haptics_summary_off">Reaksiya aktivdir</string> <string name="revanced_disable_zoom_haptics_summary_off">Reaksiya aktivdir</string>
</patch> </patch>
<patch id="video.audio.forceOriginalAudioPatch"> <patch id="video.audio.forceOriginalAudioPatch">
<string name="revanced_force_original_audio_title">Orijinal səsi tələb et</string> <string name="revanced_force_original_audio_title">Orijinal səs dilini zorla</string>
<string name="revanced_force_original_audio_summary_on">Orijinal səs istifadəsi</string> <string name="revanced_force_original_audio_summary_on">Orijinal səs dilini istifadə</string>
<string name="revanced_force_original_audio_summary_off">İlkin səs istifadəsi</string> <string name="revanced_force_original_audio_summary_off">İlkin səs istifadəsi</string>
<string name="revanced_force_original_audio_not_available">Bu xüsusiyyəti işlətmək üçün yayım saxtalaşdırmanı iOS ötürücü növünə dəyiş</string> <!-- 'Spoof video streams' should be the same translation used for revanced_spoof_video_streams_screen_title -->
<string name="revanced_force_original_audio_not_available">Bu xüsusiyyəti istifadə etmək üçün \"Saxta video yayımların\" iOS TV-yə dəyiş</string>
</patch> </patch>
<patch id="video.quality.rememberVideoQualityPatch"> <patch id="video.quality.rememberVideoQualityPatch">
<!-- Translations should use the same text as revanced_custom_playback_speeds_auto --> <!-- Translations should use the same text as revanced_custom_playback_speeds_auto -->

View File

@@ -301,13 +301,13 @@ Second \"item\" text"</string>
<string name="revanced_hide_description_components_screen_title">Апісанне відэа</string> <string name="revanced_hide_description_components_screen_title">Апісанне відэа</string>
<string name="revanced_hide_description_components_screen_summary">Схаваць або паказаць кампаненты апісання відэа</string> <string name="revanced_hide_description_components_screen_summary">Схаваць або паказаць кампаненты апісання відэа</string>
<string name="revanced_hide_filter_bar_screen_title">Панэль фільтраў</string> <string name="revanced_hide_filter_bar_screen_title">Панэль фільтраў</string>
<string name="revanced_hide_filter_bar_screen_summary">Схаваць або паказаць панэль фільтраў у стужцы, пошуку і звязаных відэа</string> <string name="revanced_hide_filter_bar_screen_summary">Схаваць ці паказаць панэль фільтраў у стужцы, выніках пошуку і звязаных відэа</string>
<string name="revanced_hide_filter_bar_feed_in_feed_title">Схаваць у карме</string> <string name="revanced_hide_filter_bar_feed_in_feed_title">Схаваць у карме</string>
<string name="revanced_hide_filter_bar_feed_in_feed_summary_on">Схаваны ў стужцы</string> <string name="revanced_hide_filter_bar_feed_in_feed_summary_on">Схаваны ў стужцы</string>
<string name="revanced_hide_filter_bar_feed_in_feed_summary_off">Паказваецца ў стужцы</string> <string name="revanced_hide_filter_bar_feed_in_feed_summary_off">Паказваецца ў стужцы</string>
<string name="revanced_hide_filter_bar_feed_in_search_title">Схавацца ў пошуку</string> <string name="revanced_hide_filter_bar_feed_in_search_title">Схаваць у выніках пошуку</string>
<string name="revanced_hide_filter_bar_feed_in_search_summary_on">Схаваны ў пошуку</string> <string name="revanced_hide_filter_bar_feed_in_search_summary_on">Схавана ў выніках пошуку</string>
<string name="revanced_hide_filter_bar_feed_in_search_summary_off">Паказваецца ў пошуку</string> <string name="revanced_hide_filter_bar_feed_in_search_summary_off">Паказана ў выніках пошуку</string>
<string name="revanced_hide_filter_bar_feed_in_related_videos_title">Схаваць у звязаных відэа</string> <string name="revanced_hide_filter_bar_feed_in_related_videos_title">Схаваць у звязаных відэа</string>
<string name="revanced_hide_filter_bar_feed_in_related_videos_summary_on">Схавана ў звязаных відэа</string> <string name="revanced_hide_filter_bar_feed_in_related_videos_summary_on">Схавана ў звязаных відэа</string>
<string name="revanced_hide_filter_bar_feed_in_related_videos_summary_off">Паказана ў звязаных відэа</string> <string name="revanced_hide_filter_bar_feed_in_related_videos_summary_off">Паказана ў звязаных відэа</string>
@@ -404,7 +404,7 @@ Second \"item\" text"</string>
<string name="revanced_hide_self_sponsor_ads_title">Схаваць самі спансаваныя карты</string> <string name="revanced_hide_self_sponsor_ads_title">Схаваць самі спансаваныя карты</string>
<string name="revanced_hide_self_sponsor_ads_summary_on">Спонсарскія карткі схаваныя</string> <string name="revanced_hide_self_sponsor_ads_summary_on">Спонсарскія карткі схаваныя</string>
<string name="revanced_hide_self_sponsor_ads_summary_off">Паказваюцца ўласныя карты</string> <string name="revanced_hide_self_sponsor_ads_summary_off">Паказваюцца ўласныя карты</string>
<string name="revanced_hide_products_banner_title">Схаваць банер для прагляду прадуктаў</string> <string name="revanced_hide_products_banner_title">Схаваць банер «Паглядзець прадукты»</string>
<string name="revanced_hide_products_banner_summary_on">Банэр схаваны</string> <string name="revanced_hide_products_banner_summary_on">Банэр схаваны</string>
<string name="revanced_hide_products_banner_summary_off">Паказваецца банэр</string> <string name="revanced_hide_products_banner_summary_off">Паказваецца банэр</string>
<string name="revanced_hide_end_screen_store_banner_title">Схаваць банер крамы на канчатковым экране</string> <string name="revanced_hide_end_screen_store_banner_title">Схаваць банер крамы на канчатковым экране</string>
@@ -443,10 +443,10 @@ Second \"item\" text"</string>
<string name="revanced_share_copy_url_success">URL скапіраваны ў буфер абмену</string> <string name="revanced_share_copy_url_success">URL скапіраваны ў буфер абмену</string>
<string name="revanced_share_copy_url_timestamp_success">URL-адрас з пазнакай часу скапіраваны</string> <string name="revanced_share_copy_url_timestamp_success">URL-адрас з пазнакай часу скапіраваны</string>
<string name="revanced_copy_video_url_title">Паказаць кнопку скапіравання URL відэа</string> <string name="revanced_copy_video_url_title">Паказаць кнопку скапіравання URL відэа</string>
<string name="revanced_copy_video_url_summary_on">Паказана кнопка. Націсніце, каб скапіяваць URL відэа. Націсніце і ўтрымлівайце, каб скапіяваць URL відэа з пазнакай часу</string> <string name="revanced_copy_video_url_summary_on">Кнопка паказана. Націсніце, каб скапіяваць URL відэа. Націсніце і ўтрымлівайце, каб скапіяваць з пазнакай часу</string>
<string name="revanced_copy_video_url_summary_off">Кнопка не паказваецца</string> <string name="revanced_copy_video_url_summary_off">Кнопка не паказваецца</string>
<string name="revanced_copy_video_url_timestamp_title">Паказаць кнопку URL-адрас з часовай пазнакай</string> <string name="revanced_copy_video_url_timestamp_title">Паказаць кнопку URL-адрас з часовай пазнакай</string>
<string name="revanced_copy_video_url_timestamp_summary_on">Паказана кнопка. Націсніце, каб скапіяваць URL відэа з пазнакай часу. Націсніце і ўтрымлівайце, каб скапіяваць відэа без пазнакі часу</string> <string name="revanced_copy_video_url_timestamp_summary_on">Кнопка паказана. Націсніце, каб скапіяваць URL відэа з пазнакай часу. Націсніце і ўтрымлівайце, каб скапіяваць без пазнакі часу</string>
<string name="revanced_copy_video_url_timestamp_summary_off">Кнопка не паказваецца</string> <string name="revanced_copy_video_url_timestamp_summary_off">Кнопка не паказваецца</string>
</patch> </patch>
<patch id="interaction.dialog.removeViewerDiscretionDialogPatch"> <patch id="interaction.dialog.removeViewerDiscretionDialogPatch">
@@ -663,7 +663,7 @@ Second \"item\" text"</string>
<string name="revanced_hide_player_flyout_video_quality_footer_summary_off">Паказваецца ніжні калонтытул меню якасці відэа</string> <string name="revanced_hide_player_flyout_video_quality_footer_summary_off">Паказваецца ніжні калонтытул меню якасці відэа</string>
</patch> </patch>
<patch id="layout.buttons.overlay.hidePlayerOverlayButtonsPatch"> <patch id="layout.buttons.overlay.hidePlayerOverlayButtonsPatch">
<string name="revanced_hide_player_previous_next_buttons_title">Схаваць папярэдні &amp; кнопкі наступнага відэа</string> <string name="revanced_hide_player_previous_next_buttons_title">Схаваць папярэднія &amp; кнопкі «Далей»</string>
<string name="revanced_hide_player_previous_next_buttons_summary_on">Кнопкі схаваныя</string> <string name="revanced_hide_player_previous_next_buttons_summary_on">Кнопкі схаваныя</string>
<string name="revanced_hide_player_previous_next_buttons_summary_off">Паказваюцца кнопкі</string> <string name="revanced_hide_player_previous_next_buttons_summary_off">Паказваюцца кнопкі</string>
<string name="revanced_hide_cast_button_title">Схаваць кнопку «Трансляцыя»</string> <string name="revanced_hide_cast_button_title">Схаваць кнопку «Трансляцыя»</string>
@@ -808,10 +808,13 @@ Second \"item\" text"</string>
<string name="revanced_hide_shorts_navigation_bar_summary_on">Панэль навігацыі схавана</string> <string name="revanced_hide_shorts_navigation_bar_summary_on">Панэль навігацыі схавана</string>
<string name="revanced_hide_shorts_navigation_bar_summary_off">Паказана панэль навігацыі</string> <string name="revanced_hide_shorts_navigation_bar_summary_off">Паказана панэль навігацыі</string>
</patch> </patch>
<patch id="layout.hide.suggestedvideoendscreen.disableSuggestedVideoEndScreenResourcePatch"> <patch id="layout.hide.endscreensuggestion.hideEndScreenSuggestedVideoPatch">
<string name="revanced_disable_suggested_video_end_screen_title">Адключыць канчатковы экран прапанаванага відэа</string> <string name="revanced_end_screen_suggested_video_title">Схаваць прапанаванае відэа на канчатковым экране</string>
<string name="revanced_disable_suggested_video_end_screen_summary_on">Прапанаваныя відэа будуць адключаны</string> <string name="revanced_end_screen_suggested_video_summary_on">"Прапанаванае відэа на канчатковым экране будзе схавана, калі аўтаматычнае прайграванне выключана.
<string name="revanced_disable_suggested_video_end_screen_summary_off">Будуць паказаны прапанаваныя відэа</string>
Аўтаматычнае прайграванне можна змяніць у наладах YouTube:
Налады → Прайграванне → Аўтаматычнае прайграванне наступнага відэа"</string>
<string name="revanced_end_screen_suggested_video_summary_off">Паказваць прапанаванае відэа на канчатковым экране</string>
</patch> </patch>
<patch id="layout.hide.time.hideTimestampPatch"> <patch id="layout.hide.time.hideTimestampPatch">
<string name="revanced_hide_timestamp_title">Схаваць метку часу відэа</string> <string name="revanced_hide_timestamp_title">Схаваць метку часу відэа</string>
@@ -1116,13 +1119,11 @@ Second \"item\" text"</string>
<string name="revanced_change_form_factor_entry_4">Аўтамабільны</string> <string name="revanced_change_form_factor_entry_4">Аўтамабільны</string>
<string name="revanced_change_form_factor_user_dialog_message">"Змены ўключаюць: <string name="revanced_change_form_factor_user_dialog_message">"Змены ўключаюць:
Раскладка планшэта Макет для планшэта
• Паведамленні супольнасці схаваны • Паведамленні супольнасці схаваныя
Раскладка аўтамабіля Аўтамабільны макет
Меню гісторыі праглядаў схавана Shorts адкрываюцца ў звычайным плэеры
• Адноўлена ўкладка «Даследаваць»
• Ролікі Shorts адкрываюцца ў звычайным прайгравальніку
• Стужка арганізавана па тэмах і каналах"</string> • Стужка арганізавана па тэмах і каналах"</string>
</patch> </patch>
<patch id="layout.spoofappversion.spoofAppVersionPatch"> <patch id="layout.spoofappversion.spoofAppVersionPatch">
@@ -1193,7 +1194,7 @@ Second \"item\" text"</string>
</patch> </patch>
<patch id="layout.miniplayer.miniplayerPatch"> <patch id="layout.miniplayer.miniplayerPatch">
<string name="revanced_miniplayer_screen_title">Міні-плэер</string> <string name="revanced_miniplayer_screen_title">Міні-плэер</string>
<string name="revanced_miniplayer_screen_summary">Змяніце стыль мінімізаванага плэера ў праграме</string> <string name="revanced_miniplayer_screen_summary">Змяніць стыль згорнутага прайгравальніка ў праграме</string>
<string name="revanced_miniplayer_type_title">Тып мініплэера</string> <string name="revanced_miniplayer_type_title">Тып мініплэера</string>
<string name="revanced_miniplayer_type_entry_0">Інваліды</string> <string name="revanced_miniplayer_type_entry_0">Інваліды</string>
<string name="revanced_miniplayer_type_entry_1">Па змаўчанні</string> <string name="revanced_miniplayer_type_entry_1">Па змаўчанні</string>
@@ -1339,8 +1340,8 @@ Second \"item\" text"</string>
</patch> </patch>
<patch id="misc.links.openLinksExternallyPatch"> <patch id="misc.links.openLinksExternallyPatch">
<string name="revanced_external_browser_title">Адкрываць спасылкі ў браўзеры</string> <string name="revanced_external_browser_title">Адкрываць спасылкі ў браўзеры</string>
<string name="revanced_external_browser_summary_on">Адкрыццё спасылак звонку</string> <string name="revanced_external_browser_summary_on">Адкрыццё спасылак у знешнім браўзеры</string>
<string name="revanced_external_browser_summary_off">Адкрыццё спасылак у праграме</string> <string name="revanced_external_browser_summary_off">Адкрыццё спасылак ва ўбудаваным браўзеры</string>
</patch> </patch>
<patch id="misc.privacy.removeTrackingQueryParameterPatch"> <patch id="misc.privacy.removeTrackingQueryParameterPatch">
<string name="revanced_remove_tracking_query_parameter_title">Выдаліць параметр запыту адсочвання</string> <string name="revanced_remove_tracking_query_parameter_title">Выдаліць параметр запыту адсочвання</string>
@@ -1353,22 +1354,30 @@ Second \"item\" text"</string>
<string name="revanced_disable_zoom_haptics_summary_off">Тактыльныя сігналы ўключаны</string> <string name="revanced_disable_zoom_haptics_summary_off">Тактыльныя сігналы ўключаны</string>
</patch> </patch>
<patch id="video.audio.forceOriginalAudioPatch"> <patch id="video.audio.forceOriginalAudioPatch">
<string name="revanced_force_original_audio_title">Вымушанае арыгінальнае аўдыё</string> <string name="revanced_force_original_audio_title">Вымушаная арыгінальная мова аўдыё</string>
<string name="revanced_force_original_audio_summary_on">Выкарыстанне арыгінальнага аўдыё</string> <string name="revanced_force_original_audio_summary_on">Выкарыстоўваць арыгінальную мову аўдыя</string>
<string name="revanced_force_original_audio_summary_off">Выкарыстанне аўдыё па змаўчанні</string> <string name="revanced_force_original_audio_summary_off">Выкарыстанне аўдыё па змаўчанні</string>
<string name="revanced_force_original_audio_not_available">Каб выкарыстоўваць гэтую функцыю, зменіце спафінг патоку на тып кліента iOS</string> <!-- 'Spoof video streams' should be the same translation used for revanced_spoof_video_streams_screen_title -->
<string name="revanced_force_original_audio_not_available">Каб выкарыстоўваць гэту функцыю, змяніце параметр \"Падрабляць відэаструмені\" на iOS TV</string>
</patch> </patch>
<patch id="video.quality.rememberVideoQualityPatch"> <patch id="video.quality.rememberVideoQualityPatch">
<!-- Translations should use the same text as revanced_custom_playback_speeds_auto --> <!-- Translations should use the same text as revanced_custom_playback_speeds_auto -->
<string name="revanced_video_quality_screen_title">Якасць відэа</string>
<string name="revanced_video_quality_default_entry_1">Аўто</string> <string name="revanced_video_quality_default_entry_1">Аўто</string>
<string name="revanced_remember_video_quality_last_selected_title">Запомніце змены якасці відэа</string> <string name="revanced_remember_video_quality_last_selected_title">Запомніце змены якасці відэа</string>
<string name="revanced_remember_video_quality_last_selected_summary_on">Змены якасці распаўсюджваюцца на ўсе відэа</string> <string name="revanced_remember_video_quality_last_selected_summary_on">Змены якасці распаўсюджваюцца на ўсе відэа</string>
<string name="revanced_remember_video_quality_last_selected_summary_off">Змены якасці прымяняюцца толькі да бягучага відэа</string> <string name="revanced_remember_video_quality_last_selected_summary_off">Змены якасці прымяняюцца толькі да бягучага відэа</string>
<string name="revanced_video_quality_default_wifi_title">Стандартная якасць відэа ў сетцы Wi-Fi</string> <string name="revanced_video_quality_default_wifi_title">Стандартная якасць відэа ў сетцы Wi-Fi</string>
<string name="revanced_video_quality_default_mobile_title">Стандартная якасць відэа ў мабільнай сетцы</string> <string name="revanced_video_quality_default_mobile_title">Стандартная якасць відэа ў мабільнай сетцы</string>
<string name="revanced_remember_shorts_quality_last_selected_title">Запомніць змены якасці Shorts</string>
<string name="revanced_remember_shorts_quality_last_selected_summary_on">Змены якасці прымяняюцца да ўсіх відэа Shorts</string>
<string name="revanced_remember_shorts_quality_last_selected_summary_off">Змены якасці прымяняюцца толькі да бягучага відэа Shorts</string>
<string name="revanced_shorts_quality_default_wifi_title">Якасць Shorts па змаўчанні ў сетцы Wi-Fi</string>
<string name="revanced_shorts_quality_default_mobile_title">Якасць Shorts па змаўчанні ў мабільнай сетцы</string>
<string name="revanced_remember_video_quality_mobile">мабільны</string> <string name="revanced_remember_video_quality_mobile">мабільны</string>
<string name="revanced_remember_video_quality_wifi">wi-fi</string> <string name="revanced_remember_video_quality_wifi">wi-fi</string>
<string name="revanced_remember_video_quality_toast">Стандартная якасць %1$s зменена на: %2$s</string> <string name="revanced_remember_video_quality_toast">Стандартная якасць %1$s зменена на: %2$s</string>
<string name="revanced_remember_video_quality_toast_shorts">Якасць Shorts %1$s зменена на: %2$s</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>

View File

@@ -301,13 +301,13 @@ Second \"item\" text"</string>
<string name="revanced_hide_description_components_screen_title">Описание на видеото</string> <string name="revanced_hide_description_components_screen_title">Описание на видеото</string>
<string name="revanced_hide_description_components_screen_summary">Скриване или показване на компонентите за описание на видеоклиповете</string> <string name="revanced_hide_description_components_screen_summary">Скриване или показване на компонентите за описание на видеоклиповете</string>
<string name="revanced_hide_filter_bar_screen_title">Лента с филтри</string> <string name="revanced_hide_filter_bar_screen_title">Лента с филтри</string>
<string name="revanced_hide_filter_bar_screen_summary">Скриване или показване на лентата с категории в емисията, резултатите от търсенето и свързаните видеоклипове</string> <string name="revanced_hide_filter_bar_screen_summary">Скриване или показване на лентата за филтриране в емисията, резултатите от търсенето и свързаните видеоклипове</string>
<string name="revanced_hide_filter_bar_feed_in_feed_title">Скриване на горната лента с категории в емисията</string> <string name="revanced_hide_filter_bar_feed_in_feed_title">Скриване на горната лента с категории в емисията</string>
<string name="revanced_hide_filter_bar_feed_in_feed_summary_on">Скрита</string> <string name="revanced_hide_filter_bar_feed_in_feed_summary_on">Скрита</string>
<string name="revanced_hide_filter_bar_feed_in_feed_summary_off">Показва се</string> <string name="revanced_hide_filter_bar_feed_in_feed_summary_off">Показва се</string>
<string name="revanced_hide_filter_bar_feed_in_search_title">Филтъри на търсене</string> <string name="revanced_hide_filter_bar_feed_in_search_title">Скриване в резултатите от търсенето</string>
<string name="revanced_hide_filter_bar_feed_in_search_summary_on">Панелът с филтъри на търсене е скрит</string> <string name="revanced_hide_filter_bar_feed_in_search_summary_on">Скрито в резултатите от търсенето</string>
<string name="revanced_hide_filter_bar_feed_in_search_summary_off">Панелът с филтъри на търсене се показва</string> <string name="revanced_hide_filter_bar_feed_in_search_summary_off">Показано в резултатите от търсенето</string>
<string name="revanced_hide_filter_bar_feed_in_related_videos_title">Скриване в сродни видеоклипове</string> <string name="revanced_hide_filter_bar_feed_in_related_videos_title">Скриване в сродни видеоклипове</string>
<string name="revanced_hide_filter_bar_feed_in_related_videos_summary_on">Скриване в сродни видеоклипове</string> <string name="revanced_hide_filter_bar_feed_in_related_videos_summary_on">Скриване в сродни видеоклипове</string>
<string name="revanced_hide_filter_bar_feed_in_related_videos_summary_off">Показано в сродни видеоклипове</string> <string name="revanced_hide_filter_bar_feed_in_related_videos_summary_off">Показано в сродни видеоклипове</string>
@@ -404,7 +404,7 @@ Second \"item\" text"</string>
<string name="revanced_hide_self_sponsor_ads_title">Скриване на самоспонсорирани карти</string> <string name="revanced_hide_self_sponsor_ads_title">Скриване на самоспонсорирани карти</string>
<string name="revanced_hide_self_sponsor_ads_summary_on">Самоспонсорираните карти са скрити</string> <string name="revanced_hide_self_sponsor_ads_summary_on">Самоспонсорираните карти са скрити</string>
<string name="revanced_hide_self_sponsor_ads_summary_off">Самоспонсорираните карти са показани</string> <string name="revanced_hide_self_sponsor_ads_summary_off">Самоспонсорираните карти са показани</string>
<string name="revanced_hide_products_banner_title">Скриване на банера за показване на продукти</string> <string name="revanced_hide_products_banner_title">Скриване на банера \"Преглед на продукти\"</string>
<string name="revanced_hide_products_banner_summary_on">Банерът е скрит</string> <string name="revanced_hide_products_banner_summary_on">Банерът е скрит</string>
<string name="revanced_hide_products_banner_summary_off">Банерът е показан</string> <string name="revanced_hide_products_banner_summary_off">Банерът е показан</string>
<string name="revanced_hide_end_screen_store_banner_title">Скрий банера за реклама в края на екрана</string> <string name="revanced_hide_end_screen_store_banner_title">Скрий банера за реклама в края на екрана</string>
@@ -443,10 +443,10 @@ Second \"item\" text"</string>
<string name="revanced_share_copy_url_success">Връзката е копирана в клипборда.</string> <string name="revanced_share_copy_url_success">Връзката е копирана в клипборда.</string>
<string name="revanced_share_copy_url_timestamp_success">URL адрес с отметка за време, копиран в клипборда.</string> <string name="revanced_share_copy_url_timestamp_success">URL адрес с отметка за време, копиран в клипборда.</string>
<string name="revanced_copy_video_url_title">Показване на бутона за копиране на URL адреса на видеоклипа</string> <string name="revanced_copy_video_url_title">Показване на бутона за копиране на URL адреса на видеоклипа</string>
<string name="revanced_copy_video_url_summary_on">Показан е бутон. Докоснете, за да копирате URL на видеото. Докоснете и задръжте, за да копирате URL адреса на видеоклипа с клеймо за време</string> <string name="revanced_copy_video_url_summary_on">Бутонът е показан. Докоснете, за да копирате URL адреса на видеоклипа. Докоснете и задръжте, за да копирате с времеви печат</string>
<string name="revanced_copy_video_url_summary_off">Бутонът не е показан</string> <string name="revanced_copy_video_url_summary_off">Бутонът не е показан</string>
<string name="revanced_copy_video_url_timestamp_title">Показване на бутона за копиране на URL адреса на времевия отпечатък на видеоклипа</string> <string name="revanced_copy_video_url_timestamp_title">Показване на бутона за копиране на URL адреса на времевия отпечатък на видеоклипа</string>
<string name="revanced_copy_video_url_timestamp_summary_on">Показан е бутон. Докоснете, за да копирате URL адреса на видеоклипа с клеймо за време. Докоснете и задръжте, за да копирате видеоклип без клеймо за време</string> <string name="revanced_copy_video_url_timestamp_summary_on">Бутонът е показан. Докоснете, за да копирате URL адреса на видеоклипа с времеви печат. Докоснете и задръжте, за да копирате без времеви печат</string>
<string name="revanced_copy_video_url_timestamp_summary_off">Бутонът не е показан</string> <string name="revanced_copy_video_url_timestamp_summary_off">Бутонът не е показан</string>
</patch> </patch>
<patch id="interaction.dialog.removeViewerDiscretionDialogPatch"> <patch id="interaction.dialog.removeViewerDiscretionDialogPatch">
@@ -663,7 +663,7 @@ Second \"item\" text"</string>
<string name="revanced_hide_player_flyout_video_quality_footer_summary_off">Долният колонтитул на менюто за качество на видеото се показва</string> <string name="revanced_hide_player_flyout_video_quality_footer_summary_off">Долният колонтитул на менюто за качество на видеото се показва</string>
</patch> </patch>
<patch id="layout.buttons.overlay.hidePlayerOverlayButtonsPatch"> <patch id="layout.buttons.overlay.hidePlayerOverlayButtonsPatch">
<string name="revanced_hide_player_previous_next_buttons_title">Бутони за Предишно &amp; Следващо видео</string> <string name="revanced_hide_player_previous_next_buttons_title">Скриване на бутоните \"Предишен и Следващ\"</string>
<string name="revanced_hide_player_previous_next_buttons_summary_on">Бутоните са скрити</string> <string name="revanced_hide_player_previous_next_buttons_summary_on">Бутоните са скрити</string>
<string name="revanced_hide_player_previous_next_buttons_summary_off">Бутоните се показват</string> <string name="revanced_hide_player_previous_next_buttons_summary_off">Бутоните се показват</string>
<string name="revanced_hide_cast_button_title">Скриване на бутона Cast</string> <string name="revanced_hide_cast_button_title">Скриване на бутона Cast</string>
@@ -808,10 +808,13 @@ Second \"item\" text"</string>
<string name="revanced_hide_shorts_navigation_bar_summary_on">Навигационната лента е скрита</string> <string name="revanced_hide_shorts_navigation_bar_summary_on">Навигационната лента е скрита</string>
<string name="revanced_hide_shorts_navigation_bar_summary_off">Навигационната лента се показва</string> <string name="revanced_hide_shorts_navigation_bar_summary_off">Навигационната лента се показва</string>
</patch> </patch>
<patch id="layout.hide.suggestedvideoendscreen.disableSuggestedVideoEndScreenResourcePatch"> <patch id="layout.hide.endscreensuggestion.hideEndScreenSuggestedVideoPatch">
<string name="revanced_disable_suggested_video_end_screen_title">Препоръчани видеоклипове в края</string> <string name="revanced_end_screen_suggested_video_title">Скриване на предложеното видео в края на екрана</string>
<string name="revanced_disable_suggested_video_end_screen_summary_on">Препоръчаните видеоклипове в края са скрити</string> <string name="revanced_end_screen_suggested_video_summary_on">"Предложеното видео в края на екрана е скрито, когато автоматичното пускане е изключено
<string name="revanced_disable_suggested_video_end_screen_summary_off">Препоръчаните видеоклипове в края се показват</string>
Автоматичното пускане може да бъде променено в настройките на YouTube:
Настройки → Възпроизвеждане → Автоматично пускане на следващото видео"</string>
<string name="revanced_end_screen_suggested_video_summary_off">Предложеното видео в края на екрана е показано</string>
</patch> </patch>
<patch id="layout.hide.time.hideTimestampPatch"> <patch id="layout.hide.time.hideTimestampPatch">
<string name="revanced_hide_timestamp_title">Скриване на клеймото за време на видеоклипа</string> <string name="revanced_hide_timestamp_title">Скриване на клеймото за време на видеоклипа</string>
@@ -1118,11 +1121,9 @@ Second \"item\" text"</string>
Оформление за таблет Оформление за таблет
• Публикациите на общността са скрити • Публикациите на общността са скрити
Оформление за автомобил Автомобилно оформление
• Менюто „История на гледане“ е скрито
• Разделът „Разгледай“ е възстановен
• Shorts се отварят в обикновения плейър • Shorts се отварят в обикновения плейър
Лентата е организирана по теми и канал"</string> Каналът е организиран по теми и канали"</string>
</patch> </patch>
<patch id="layout.spoofappversion.spoofAppVersionPatch"> <patch id="layout.spoofappversion.spoofAppVersionPatch">
<string name="revanced_spoof_app_version_title">Подлъгване за версията на приложението</string> <string name="revanced_spoof_app_version_title">Подлъгване за версията на приложението</string>
@@ -1192,7 +1193,7 @@ Second \"item\" text"</string>
</patch> </patch>
<patch id="layout.miniplayer.miniplayerPatch"> <patch id="layout.miniplayer.miniplayerPatch">
<string name="revanced_miniplayer_screen_title">Минимизиран екран за възпроизвеждане</string> <string name="revanced_miniplayer_screen_title">Минимизиран екран за възпроизвеждане</string>
<string name="revanced_miniplayer_screen_summary">Променете стила на минимизирания екран за възпроизвеждане</string> <string name="revanced_miniplayer_screen_summary">Промяна на стила на минимизиран плейър в приложението</string>
<string name="revanced_miniplayer_type_title">Минимизиран тип екран за гледане</string> <string name="revanced_miniplayer_type_title">Минимизиран тип екран за гледане</string>
<string name="revanced_miniplayer_type_entry_0">Деактивирано</string> <string name="revanced_miniplayer_type_entry_0">Деактивирано</string>
<string name="revanced_miniplayer_type_entry_1">По подразбиране</string> <string name="revanced_miniplayer_type_entry_1">По подразбиране</string>
@@ -1338,8 +1339,8 @@ Second \"item\" text"</string>
</patch> </patch>
<patch id="misc.links.openLinksExternallyPatch"> <patch id="misc.links.openLinksExternallyPatch">
<string name="revanced_external_browser_title">Отваряне на връзки в браузъра</string> <string name="revanced_external_browser_title">Отваряне на връзки в браузъра</string>
<string name="revanced_external_browser_summary_on">Отваряне на външни връзки</string> <string name="revanced_external_browser_summary_on">Отваряне на връзки във външен браузър</string>
<string name="revanced_external_browser_summary_off">Отваряне на връзки в приложението</string> <string name="revanced_external_browser_summary_off">Отваряне на връзки във вграден браузър</string>
</patch> </patch>
<patch id="misc.privacy.removeTrackingQueryParameterPatch"> <patch id="misc.privacy.removeTrackingQueryParameterPatch">
<string name="revanced_remove_tracking_query_parameter_title">Премахнете параметъра на заявката за проследяване</string> <string name="revanced_remove_tracking_query_parameter_title">Премахнете параметъра на заявката за проследяване</string>
@@ -1352,22 +1353,30 @@ Second \"item\" text"</string>
<string name="revanced_disable_zoom_haptics_summary_off">Вибрациите са активирани</string> <string name="revanced_disable_zoom_haptics_summary_off">Вибрациите са активирани</string>
</patch> </patch>
<patch id="video.audio.forceOriginalAudioPatch"> <patch id="video.audio.forceOriginalAudioPatch">
<string name="revanced_force_original_audio_title">Принудително оригинално аудио</string> <string name="revanced_force_original_audio_title">Принудително оригинално аудио език</string>
<string name="revanced_force_original_audio_summary_on">Използване на оригинално аудио</string> <string name="revanced_force_original_audio_summary_on">Използване на оригиналния език на аудиото</string>
<string name="revanced_force_original_audio_summary_off">Използване на аудио по подразбиране</string> <string name="revanced_force_original_audio_summary_off">Използване на аудио по подразбиране</string>
<string name="revanced_force_original_audio_not_available">За да използвате тази функция, променете имитацията на поточно предаване на тип клиент на iOS</string> <!-- 'Spoof video streams' should be the same translation used for revanced_spoof_video_streams_screen_title -->
<string name="revanced_force_original_audio_not_available">За да използвате тази функция, сменете „Фалшифициране на видео потоци“ на iOS TV</string>
</patch> </patch>
<patch id="video.quality.rememberVideoQualityPatch"> <patch id="video.quality.rememberVideoQualityPatch">
<!-- Translations should use the same text as revanced_custom_playback_speeds_auto --> <!-- Translations should use the same text as revanced_custom_playback_speeds_auto -->
<string name="revanced_video_quality_screen_title">Качество на видеоклипа</string>
<string name="revanced_video_quality_default_entry_1">Авто</string> <string name="revanced_video_quality_default_entry_1">Авто</string>
<string name="revanced_remember_video_quality_last_selected_title">Запомни промените в качеството на видеото</string> <string name="revanced_remember_video_quality_last_selected_title">Запомни промените в качеството на видеото</string>
<string name="revanced_remember_video_quality_last_selected_summary_on">Промените в качеството се отнасят за всички видеоклипове</string> <string name="revanced_remember_video_quality_last_selected_summary_on">Промените в качеството се отнасят за всички видеоклипове</string>
<string name="revanced_remember_video_quality_last_selected_summary_off">Промените в качеството се отнасят само за текущия видеоклип</string> <string name="revanced_remember_video_quality_last_selected_summary_off">Промените в качеството се отнасят само за текущия видеоклип</string>
<string name="revanced_video_quality_default_wifi_title">Предпочитано качество при Wi-Fi</string> <string name="revanced_video_quality_default_wifi_title">Предпочитано качество при Wi-Fi</string>
<string name="revanced_video_quality_default_mobile_title">Предпочитано качество при мобилни данни</string> <string name="revanced_video_quality_default_mobile_title">Предпочитано качество при мобилни данни</string>
<string name="revanced_remember_shorts_quality_last_selected_title">Запомняне на промените в качеството на Shorts</string>
<string name="revanced_remember_shorts_quality_last_selected_summary_on">Промените в качеството се прилагат към всички Shorts видеа</string>
<string name="revanced_remember_shorts_quality_last_selected_summary_off">Промените в качеството се прилагат само към текущото Shorts видео</string>
<string name="revanced_shorts_quality_default_wifi_title">Качество по подразбиране на Shorts във Wi-Fi мрежа</string>
<string name="revanced_shorts_quality_default_mobile_title">Качество по подразбиране на Shorts в мобилна мрежа</string>
<string name="revanced_remember_video_quality_mobile">мобилни данни</string> <string name="revanced_remember_video_quality_mobile">мобилни данни</string>
<string name="revanced_remember_video_quality_wifi">wi-fi</string> <string name="revanced_remember_video_quality_wifi">wi-fi</string>
<string name="revanced_remember_video_quality_toast">Променено стандартно %1$s качество на: %2$s</string> <string name="revanced_remember_video_quality_toast">Променено стандартно %1$s качество на: %2$s</string>
<string name="revanced_remember_video_quality_toast_shorts">Променено качество на Shorts %1$s на: %2$s</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>

View File

@@ -301,13 +301,12 @@ MicroG-এর জন্য ব্যাটারি অপ্টিমাইজ
<string name="revanced_hide_description_components_screen_title">ভিডিওর বিবরণ</string> <string name="revanced_hide_description_components_screen_title">ভিডিওর বিবরণ</string>
<string name="revanced_hide_description_components_screen_summary">ভিডিও বিবরণ এর উপাদান লুকান বা প্রদর্শন করুন</string> <string name="revanced_hide_description_components_screen_summary">ভিডিও বিবরণ এর উপাদান লুকান বা প্রদর্শন করুন</string>
<string name="revanced_hide_filter_bar_screen_title">ফিল্টার বার</string> <string name="revanced_hide_filter_bar_screen_title">ফিল্টার বার</string>
<string name="revanced_hide_filter_bar_screen_summary">ফিড, অনুসন্ধান এবং সম্পর্কিত ভিডিওতে ফিল্টার বার লুকান বা প্রদর্শন করুন</string>
<string name="revanced_hide_filter_bar_feed_in_feed_title">ফিডে লুকান</string> <string name="revanced_hide_filter_bar_feed_in_feed_title">ফিডে লুকান</string>
<string name="revanced_hide_filter_bar_feed_in_feed_summary_on">ফিডে লুকিয়ে রয়েছে</string> <string name="revanced_hide_filter_bar_feed_in_feed_summary_on">ফিডে লুকিয়ে রয়েছে</string>
<string name="revanced_hide_filter_bar_feed_in_feed_summary_off">ফিডে প্রদর্শিত হয়েছে</string> <string name="revanced_hide_filter_bar_feed_in_feed_summary_off">ফিডে প্রদর্শিত হয়েছে</string>
<string name="revanced_hide_filter_bar_feed_in_search_title">অনুসন্ধানে লুকান</string> <string name="revanced_hide_filter_bar_feed_in_search_title">অনুসন্ধান ফলাফলে লুকান</string>
<string name="revanced_hide_filter_bar_feed_in_search_summary_on">অনুসন্ধানে লুকিয়ে রয়েছে</string> <string name="revanced_hide_filter_bar_feed_in_search_summary_on">অনুসন্ধান ফলাফলে লুকানো আছে</string>
<string name="revanced_hide_filter_bar_feed_in_search_summary_off">অনুসন্ধানে প্রদর্শিত হয়েছে</string> <string name="revanced_hide_filter_bar_feed_in_search_summary_off">অনুসন্ধান ফলাফলে দেখানো হয়েছে</string>
<string name="revanced_hide_filter_bar_feed_in_related_videos_title">সম্পর্কিত ভিডিওতে লুকান</string> <string name="revanced_hide_filter_bar_feed_in_related_videos_title">সম্পর্কিত ভিডিওতে লুকান</string>
<string name="revanced_hide_filter_bar_feed_in_related_videos_summary_on">সম্পর্কিত ভিডিওতে লুকিয়ে রয়েছে</string> <string name="revanced_hide_filter_bar_feed_in_related_videos_summary_on">সম্পর্কিত ভিডিওতে লুকিয়ে রয়েছে</string>
<string name="revanced_hide_filter_bar_feed_in_related_videos_summary_off">সম্পর্কিত ভিডিওতে প্রদর্শিত হয়েছে</string> <string name="revanced_hide_filter_bar_feed_in_related_videos_summary_off">সম্পর্কিত ভিডিওতে প্রদর্শিত হয়েছে</string>
@@ -404,7 +403,7 @@ MicroG-এর জন্য ব্যাটারি অপ্টিমাইজ
<string name="revanced_hide_self_sponsor_ads_title">স্ব-স্পন্সর কার্ড লুকান</string> <string name="revanced_hide_self_sponsor_ads_title">স্ব-স্পন্সর কার্ড লুকান</string>
<string name="revanced_hide_self_sponsor_ads_summary_on">স্ব-স্পন্সর কার্ড লুকিয়ে রয়েছে</string> <string name="revanced_hide_self_sponsor_ads_summary_on">স্ব-স্পন্সর কার্ড লুকিয়ে রয়েছে</string>
<string name="revanced_hide_self_sponsor_ads_summary_off">স্ব-স্পন্সর কার্ড প্রদর্শিত হয়েছে</string> <string name="revanced_hide_self_sponsor_ads_summary_off">স্ব-স্পন্সর কার্ড প্রদর্শিত হয়েছে</string>
<string name="revanced_hide_products_banner_title">প্রোডাক্ট দেখার ব্যানার লুকান</string> <string name="revanced_hide_products_banner_title">\'পণ্য দেখুন\' ব্যানার লুকান</string>
<string name="revanced_hide_products_banner_summary_on">ব্যানার লুকিয়ে রয়েছে</string> <string name="revanced_hide_products_banner_summary_on">ব্যানার লুকিয়ে রয়েছে</string>
<string name="revanced_hide_products_banner_summary_off">ব্যানার প্রদর্শিত হয়েছে</string> <string name="revanced_hide_products_banner_summary_off">ব্যানার প্রদর্শিত হয়েছে</string>
<string name="revanced_hide_end_screen_store_banner_title">শেষ পর্দার স্টোর ব্যানার লুকান</string> <string name="revanced_hide_end_screen_store_banner_title">শেষ পর্দার স্টোর ব্যানার লুকান</string>
@@ -443,10 +442,10 @@ MicroG-এর জন্য ব্যাটারি অপ্টিমাইজ
<string name="revanced_share_copy_url_success">ক্লিপবোর্ডে URL অনুলিপি করা হয়েছে</string> <string name="revanced_share_copy_url_success">ক্লিপবোর্ডে URL অনুলিপি করা হয়েছে</string>
<string name="revanced_share_copy_url_timestamp_success">টাইমস্ট্যাম্প সহ URL অনুলিপি করা হয়েছে</string> <string name="revanced_share_copy_url_timestamp_success">টাইমস্ট্যাম্প সহ URL অনুলিপি করা হয়েছে</string>
<string name="revanced_copy_video_url_title">ভিডিও URL অনুলিপি বোতাম দেখান</string> <string name="revanced_copy_video_url_title">ভিডিও URL অনুলিপি বোতাম দেখান</string>
<string name="revanced_copy_video_url_summary_on">বোতাম প্রদর্শিত হয়েছে। URL অনুলিপি করতে ট্যাপ করুন। টাইমস্ট্যাম্প সহ URL অনুলিপি করতে ট্যাপ করে ধরে রাখুন।</string> <string name="revanced_copy_video_url_summary_on">বোতামটি দেখানো হয়েছে। ভিডিও URL কপি করতে আলতো চাপুন। টাইমস্ট্যাম্প সহ পি করতে টিপুন এবং ধরে রাখুন।</string>
<string name="revanced_copy_video_url_summary_off">বোতাম প্রদর্শিত হয়নি</string> <string name="revanced_copy_video_url_summary_off">বোতাম প্রদর্শিত হয়নি</string>
<string name="revanced_copy_video_url_timestamp_title">টাইমস্ট্যাম্প URL অনুলিপি বোতাম দেখান</string> <string name="revanced_copy_video_url_timestamp_title">টাইমস্ট্যাম্প URL অনুলিপি বোতাম দেখান</string>
<string name="revanced_copy_video_url_timestamp_summary_on">বোতাম প্রদর্শিত হয়েছে। টাইমস্ট্যাম্প সহ URL অনুলিপি করতে ট্যাপ করুন। টাইমস্ট্যাম্প ছাড়া URL অনুলিপি করতে ট্যাপ করে ধরে রাখুন।</string> <string name="revanced_copy_video_url_timestamp_summary_on">বোতামটি দেখানো হয়েছে। টাইমস্ট্যাম্প সহ ভিডিও URL কপি করতে আলতো চাপুন। টাইমস্ট্যাম্প ছাড়া পি করতে টিপুন এবং ধরে রাখুন।</string>
<string name="revanced_copy_video_url_timestamp_summary_off">বোতাম প্রদর্শিত হয়নি</string> <string name="revanced_copy_video_url_timestamp_summary_off">বোতাম প্রদর্শিত হয়নি</string>
</patch> </patch>
<patch id="interaction.dialog.removeViewerDiscretionDialogPatch"> <patch id="interaction.dialog.removeViewerDiscretionDialogPatch">
@@ -660,7 +659,7 @@ MicroG-এর জন্য ব্যাটারি অপ্টিমাইজ
<string name="revanced_hide_player_flyout_video_quality_footer_summary_off">ভিডিও গুণমান মেনু ফুটার দেখানো হচ্ছে</string> <string name="revanced_hide_player_flyout_video_quality_footer_summary_off">ভিডিও গুণমান মেনু ফুটার দেখানো হচ্ছে</string>
</patch> </patch>
<patch id="layout.buttons.overlay.hidePlayerOverlayButtonsPatch"> <patch id="layout.buttons.overlay.hidePlayerOverlayButtonsPatch">
<string name="revanced_hide_player_previous_next_buttons_title">পূর্ববর্তী লুকান &amp; পরবর্তী ভিডিও বোতাম</string> <string name="revanced_hide_player_previous_next_buttons_title">পূর্ববর্তী লুকান &amp; পরবর্তী বোতাম</string>
<string name="revanced_hide_player_previous_next_buttons_summary_on">বোতাম লুকানো হয়</string> <string name="revanced_hide_player_previous_next_buttons_summary_on">বোতাম লুকানো হয়</string>
<string name="revanced_hide_player_previous_next_buttons_summary_off">বোতাম দেখানো হয়</string> <string name="revanced_hide_player_previous_next_buttons_summary_off">বোতাম দেখানো হয়</string>
<string name="revanced_hide_cast_button_title">কাস্ট বোতামটি লুকান</string> <string name="revanced_hide_cast_button_title">কাস্ট বোতামটি লুকান</string>
@@ -805,10 +804,13 @@ MicroG-এর জন্য ব্যাটারি অপ্টিমাইজ
<string name="revanced_hide_shorts_navigation_bar_summary_on">নেভিগেশন বার লুকিয়ে রয়েছে</string> <string name="revanced_hide_shorts_navigation_bar_summary_on">নেভিগেশন বার লুকিয়ে রয়েছে</string>
<string name="revanced_hide_shorts_navigation_bar_summary_off">পনেভিগেশন বার প্রদর্শিত হয়েছে</string> <string name="revanced_hide_shorts_navigation_bar_summary_off">পনেভিগেশন বার প্রদর্শিত হয়েছে</string>
</patch> </patch>
<patch id="layout.hide.suggestedvideoendscreen.disableSuggestedVideoEndScreenResourcePatch"> <patch id="layout.hide.endscreensuggestion.hideEndScreenSuggestedVideoPatch">
<string name="revanced_disable_suggested_video_end_screen_title">ভিডিওর শেষ স্ক্রিণে সাজেস্ট করা ভিডিও নিষ্ক্রিয় করুন</string> <string name="revanced_end_screen_suggested_video_title">শেষ স্ক্রীনে প্রস্তাবিত ভিডিও লুকানো হবে</string>
<string name="revanced_disable_suggested_video_end_screen_summary_on">সাজেস্ট করা ভিডিও নিস্ক্রিয় করা হবে</string> <string name="revanced_end_screen_suggested_video_summary_on">"অটো প্লে বন্ধ থাকলে শেষ স্ক্রীনে প্রস্তাবিত ভিডিও লুকানো থাকে
<string name="revanced_disable_suggested_video_end_screen_summary_off">সাজেস্ট করা ভিডিও প্রদর্শিত হবে</string>
YouTube সেটিংসে অটো প্লে পরিবর্তন করা যেতে পারে:
সেটিংস → প্লেব্যাক → অটো প্লে পরবর্তী ভিডিও"</string>
<string name="revanced_end_screen_suggested_video_summary_off">শেষ স্ক্রীনে প্রস্তাবিত ভিডিও দেখানো হয়েছে</string>
</patch> </patch>
<patch id="layout.hide.time.hideTimestampPatch"> <patch id="layout.hide.time.hideTimestampPatch">
<string name="revanced_hide_timestamp_title">ভিডিওর সময়স্ট্যাম্প লুকান</string> <string name="revanced_hide_timestamp_title">ভিডিওর সময়স্ট্যাম্প লুকান</string>
@@ -1110,16 +1112,14 @@ MicroG-এর জন্য ব্যাটারি অপ্টিমাইজ
<string name="revanced_change_form_factor_entry_2">ফোন</string> <string name="revanced_change_form_factor_entry_2">ফোন</string>
<string name="revanced_change_form_factor_entry_3">ট্যাবলেট</string> <string name="revanced_change_form_factor_entry_3">ট্যাবলেট</string>
<string name="revanced_change_form_factor_entry_4">স্বয়ংচালিত</string> <string name="revanced_change_form_factor_entry_4">স্বয়ংচালিত</string>
<string name="revanced_change_form_factor_user_dialog_message">"পরিবর্তনগুলো হল: <string name="revanced_change_form_factor_user_dialog_message">"পরিবর্তনগুলির মধ্যে রয়েছে:
ট্যাবলেট লেআউট ট্যাবলেট লেআউট
• কমিউনিটি পোস্ট গোপন • কমিউনিটি পোস্টগুলি লুকানো আছে
স্বয়ংচালিত লেআউট অটোমোটিভ লেআউট
ঘড়ির ইতিহাস মেনু গোপন Shorts নিয়মিত প্লেয়ারে খোলে
এক্সপ্লোর ট্যাব পুনরুদ্ার করা হয়েছে ফিড বিষয় এবং চ্যানেল দ্ারা সংগঠিত"</string>
• শর্টস নিয়মিত প্লেয়ারে খোলে
• ফিড বিষয় এবং চ্যানেল দ্বারা সংগঠিত হয়"</string>
</patch> </patch>
<patch id="layout.spoofappversion.spoofAppVersionPatch"> <patch id="layout.spoofappversion.spoofAppVersionPatch">
<string name="revanced_spoof_app_version_title">অ্যাপ সংস্করণ স্পুফ করুন</string> <string name="revanced_spoof_app_version_title">অ্যাপ সংস্করণ স্পুফ করুন</string>
@@ -1189,7 +1189,7 @@ MicroG-এর জন্য ব্যাটারি অপ্টিমাইজ
</patch> </patch>
<patch id="layout.miniplayer.miniplayerPatch"> <patch id="layout.miniplayer.miniplayerPatch">
<string name="revanced_miniplayer_screen_title">মিনিপ্লেয়ার</string> <string name="revanced_miniplayer_screen_title">মিনিপ্লেয়ার</string>
<string name="revanced_miniplayer_screen_summary">অ্যাপের মধ্যকার মিনিমাইজড প্লেয়ার এর ধরণ পরিবর্তন করুন</string> <string name="revanced_miniplayer_screen_summary">ইন-অ্যাপ মিনিমাইজড প্লেয়ারের শৈলী পরিবর্তন করুন</string>
<string name="revanced_miniplayer_type_title">মিনিপ্লেয়ার ধরণ</string> <string name="revanced_miniplayer_type_title">মিনিপ্লেয়ার ধরণ</string>
<string name="revanced_miniplayer_type_entry_0">নিষ্ক্রিয় হয়েছে</string> <string name="revanced_miniplayer_type_entry_0">নিষ্ক্রিয় হয়েছে</string>
<string name="revanced_miniplayer_type_entry_1">পূর্ব-নির্ধারিত</string> <string name="revanced_miniplayer_type_entry_1">পূর্ব-নির্ধারিত</string>
@@ -1335,8 +1335,8 @@ DeArrow সম্পর্কে আরও জানতে এখানে ট
</patch> </patch>
<patch id="misc.links.openLinksExternallyPatch"> <patch id="misc.links.openLinksExternallyPatch">
<string name="revanced_external_browser_title">লিংক ব্রাউজারে খুলুন</string> <string name="revanced_external_browser_title">লিংক ব্রাউজারে খুলুন</string>
<string name="revanced_external_browser_summary_on">লিংক বাহিরে খুলুন</string> <string name="revanced_external_browser_summary_on">বাহ্যিক ব্রাউজারে লিঙ্ক খোলা হচ্ছে</string>
<string name="revanced_external_browser_summary_off">অ্যাপের মধ্যে লিক খুলছে</string> <string name="revanced_external_browser_summary_off">ইন-অ্যাপ ব্রাউজারে লিঙ্ক খোলা হচ্ছে</string>
</patch> </patch>
<patch id="misc.privacy.removeTrackingQueryParameterPatch"> <patch id="misc.privacy.removeTrackingQueryParameterPatch">
<string name="revanced_remove_tracking_query_parameter_title">ট্র্যাকিং করার প্যারামিটার মুছুন</string> <string name="revanced_remove_tracking_query_parameter_title">ট্র্যাকিং করার প্যারামিটার মুছুন</string>
@@ -1349,22 +1349,30 @@ DeArrow সম্পর্কে আরও জানতে এখানে ট
<string name="revanced_disable_zoom_haptics_summary_off">কম্পন সক্রিয় করা হয়েছে</string> <string name="revanced_disable_zoom_haptics_summary_off">কম্পন সক্রিয় করা হয়েছে</string>
</patch> </patch>
<patch id="video.audio.forceOriginalAudioPatch"> <patch id="video.audio.forceOriginalAudioPatch">
<string name="revanced_force_original_audio_title">মূল অডিও বলপূর্বক চালু করুন</string> <string name="revanced_force_original_audio_title">মূল অডিও ভাষা বলপূর্বক চালু করুন</string>
<string name="revanced_force_original_audio_summary_on">মূল অডিও ব্যবহার করছে</string> <string name="revanced_force_original_audio_summary_on">মূল অডিও ভাষা ব্যবহার করা হচ্ছে</string>
<string name="revanced_force_original_audio_summary_off">ডিফল্ট অডিও ব্যবহার করছে</string> <string name="revanced_force_original_audio_summary_off">ডিফল্ট অডিও ব্যবহার করছে</string>
<string name="revanced_force_original_audio_not_available">এই বৈশিষ্ট্যটি ব্যবহার করার জন্য, iOS ক্লায়েন্ট প্রকারে স্ট্রিম স্পুফিং পরিবর্তন করুন</string> <!-- 'Spoof video streams' should be the same translation used for revanced_spoof_video_streams_screen_title -->
<string name="revanced_force_original_audio_not_available">এই বৈশিষ্ট্যটি ব্যবহার করতে, \'স্পুফ ভিডিও স্ট্রীম\' কে iOS TV-তে পরিবর্তন করুন</string>
</patch> </patch>
<patch id="video.quality.rememberVideoQualityPatch"> <patch id="video.quality.rememberVideoQualityPatch">
<!-- Translations should use the same text as revanced_custom_playback_speeds_auto --> <!-- Translations should use the same text as revanced_custom_playback_speeds_auto -->
<string name="revanced_video_quality_screen_title">ভিডিওর গুণমান</string>
<string name="revanced_video_quality_default_entry_1">স্বতস্ফূর্তভাবে</string> <string name="revanced_video_quality_default_entry_1">স্বতস্ফূর্তভাবে</string>
<string name="revanced_remember_video_quality_last_selected_title">ভিডিও গুণমান পরিবর্তন মনে রাখুন</string> <string name="revanced_remember_video_quality_last_selected_title">ভিডিও গুণমান পরিবর্তন মনে রাখুন</string>
<string name="revanced_remember_video_quality_last_selected_summary_on">গুণমান পরিবর্তন সব ভিডিওতে প্রয়োগ করা হয়েছে</string> <string name="revanced_remember_video_quality_last_selected_summary_on">গুণমান পরিবর্তন সব ভিডিওতে প্রয়োগ করা হয়েছে</string>
<string name="revanced_remember_video_quality_last_selected_summary_off">গুণমান পরিবর্তন বর্তমান ভিডিওতে প্রয়োগ করা হয়েছে</string> <string name="revanced_remember_video_quality_last_selected_summary_off">গুণমান পরিবর্তন বর্তমান ভিডিওতে প্রয়োগ করা হয়েছে</string>
<string name="revanced_video_quality_default_wifi_title">ওয়াই-ফাই নেটওয়ার্কে ডিফল্ট ভিডিও গুণমান</string> <string name="revanced_video_quality_default_wifi_title">ওয়াই-ফাই নেটওয়ার্কে ডিফল্ট ভিডিও গুণমান</string>
<string name="revanced_video_quality_default_mobile_title">মোবাইল নেটওয়ার্কে ডিফল্ট ভিডিও গুণমান</string> <string name="revanced_video_quality_default_mobile_title">মোবাইল নেটওয়ার্কে ডিফল্ট ভিডিও গুণমান</string>
<string name="revanced_remember_shorts_quality_last_selected_title">Shorts গুণমান পরিবর্তনের কথা মনে রাখুন</string>
<string name="revanced_remember_shorts_quality_last_selected_summary_on">গুণমানের পরিবর্তন সমস্ত Shorts ভিডিওগুলিতে প্রযোজ্য</string>
<string name="revanced_remember_shorts_quality_last_selected_summary_off">গুণমানের পরিবর্তনগুলি কেবল বর্তমান Shorts ভিডিওটিতে প্রযোজ্য</string>
<string name="revanced_shorts_quality_default_wifi_title">Wi-Fi নেটওয়ার্কে ডিফল্ট Shorts গুণমান</string>
<string name="revanced_shorts_quality_default_mobile_title">মোবাইল নেটওয়ার্কে ডিফল্ট Shorts গুণমান</string>
<string name="revanced_remember_video_quality_mobile">মোবাইল</string> <string name="revanced_remember_video_quality_mobile">মোবাইল</string>
<string name="revanced_remember_video_quality_wifi">ওয়াই-ফাই</string> <string name="revanced_remember_video_quality_wifi">ওয়াই-ফাই</string>
<string name="revanced_remember_video_quality_toast">ডিফল্ট %1$s গুণমান পরিবর্তন হচ্ছে: %2$s</string> <string name="revanced_remember_video_quality_toast">ডিফল্ট %1$s গুণমান পরিবর্তন হচ্ছে: %2$s</string>
<string name="revanced_remember_video_quality_toast_shorts">Shorts %1$s এর গুণমান পরিবর্তন করে: %2$s</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>

View File

@@ -130,7 +130,7 @@ Second \"item\" text"</string>
<!-- 'remix' should be translated using the same localized wording YouTube displays for the button. --> <!-- 'remix' should be translated using the same localized wording YouTube displays for the button. -->
<!-- 'share' should be translated using the same localized wording YouTube displays for the button. --> <!-- 'share' should be translated using the same localized wording YouTube displays for the button. -->
</patch> </patch>
<patch id="layout.hide.suggestedvideoendscreen.disableSuggestedVideoEndScreenResourcePatch"> <patch id="layout.hide.endscreensuggestion.hideEndScreenSuggestedVideoPatch">
</patch> </patch>
<patch id="layout.hide.time.hideTimestampPatch"> <patch id="layout.hide.time.hideTimestampPatch">
</patch> </patch>
@@ -206,6 +206,7 @@ Second \"item\" text"</string>
<patch id="misc.zoomhaptics.zoomHapticsPatch"> <patch id="misc.zoomhaptics.zoomHapticsPatch">
</patch> </patch>
<patch id="video.audio.forceOriginalAudioPatch"> <patch id="video.audio.forceOriginalAudioPatch">
<!-- 'Spoof video streams' should be the same translation used for revanced_spoof_video_streams_screen_title -->
</patch> </patch>
<patch id="video.quality.rememberVideoQualityPatch"> <patch id="video.quality.rememberVideoQualityPatch">
<!-- Translations should use the same text as revanced_custom_playback_speeds_auto --> <!-- Translations should use the same text as revanced_custom_playback_speeds_auto -->

View File

@@ -301,13 +301,13 @@ No se t'informarà de cap esdeveniment inesperat."</string>
<string name="revanced_hide_description_components_screen_title">Descripció del vídeo</string> <string name="revanced_hide_description_components_screen_title">Descripció del vídeo</string>
<string name="revanced_hide_description_components_screen_summary">Amaga o mostra els components de descripció del vídeo</string> <string name="revanced_hide_description_components_screen_summary">Amaga o mostra els components de descripció del vídeo</string>
<string name="revanced_hide_filter_bar_screen_title">Barra de filtre</string> <string name="revanced_hide_filter_bar_screen_title">Barra de filtre</string>
<string name="revanced_hide_filter_bar_screen_summary">Mostra o amaga la barra de filtre al feed, la cerca i els vídeos relacionats</string> <string name="revanced_hide_filter_bar_screen_summary">Amaga o mostra la barra de filtre al canal, als resultats de cerca i als vídeos relacionats</string>
<string name="revanced_hide_filter_bar_feed_in_feed_title">Amaga al feed</string> <string name="revanced_hide_filter_bar_feed_in_feed_title">Amaga al feed</string>
<string name="revanced_hide_filter_bar_feed_in_feed_summary_on">Amagat al feed</string> <string name="revanced_hide_filter_bar_feed_in_feed_summary_on">Amagat al feed</string>
<string name="revanced_hide_filter_bar_feed_in_feed_summary_off">Es mostra al feed</string> <string name="revanced_hide_filter_bar_feed_in_feed_summary_off">Es mostra al feed</string>
<string name="revanced_hide_filter_bar_feed_in_search_title">Amaga a la cerca</string> <string name="revanced_hide_filter_bar_feed_in_search_title">Amaga als resultats de cerca</string>
<string name="revanced_hide_filter_bar_feed_in_search_summary_on">Amagat a la cerca</string> <string name="revanced_hide_filter_bar_feed_in_search_summary_on">Amagat als resultats de cerca</string>
<string name="revanced_hide_filter_bar_feed_in_search_summary_off">Mostrat a la cerca</string> <string name="revanced_hide_filter_bar_feed_in_search_summary_off">Mostrat als resultats de cerca</string>
<string name="revanced_hide_filter_bar_feed_in_related_videos_title">Amaga els vídeos relacionats</string> <string name="revanced_hide_filter_bar_feed_in_related_videos_title">Amaga els vídeos relacionats</string>
<string name="revanced_hide_filter_bar_feed_in_related_videos_summary_on">Amagats als vídeos relacionats</string> <string name="revanced_hide_filter_bar_feed_in_related_videos_summary_on">Amagats als vídeos relacionats</string>
<string name="revanced_hide_filter_bar_feed_in_related_videos_summary_off">Es mostren els vídeos relacionats</string> <string name="revanced_hide_filter_bar_feed_in_related_videos_summary_off">Es mostren els vídeos relacionats</string>
@@ -404,7 +404,7 @@ Aquesta funció només està disponible per a dispositius antics"</string>
<string name="revanced_hide_self_sponsor_ads_title">Amaga les targetes d\'auto patrocini</string> <string name="revanced_hide_self_sponsor_ads_title">Amaga les targetes d\'auto patrocini</string>
<string name="revanced_hide_self_sponsor_ads_summary_on">Les targetes d\'autopatrocini estan magades</string> <string name="revanced_hide_self_sponsor_ads_summary_on">Les targetes d\'autopatrocini estan magades</string>
<string name="revanced_hide_self_sponsor_ads_summary_off">Es mostren les targetes d\'autopatrocini</string> <string name="revanced_hide_self_sponsor_ads_summary_off">Es mostren les targetes d\'autopatrocini</string>
<string name="revanced_hide_products_banner_title">Amaga el bàner per veure productes</string> <string name="revanced_hide_products_banner_title">Amaga el bàner «Mostra els productes»</string>
<string name="revanced_hide_products_banner_summary_on">La pancarta s\'amaga</string> <string name="revanced_hide_products_banner_summary_on">La pancarta s\'amaga</string>
<string name="revanced_hide_products_banner_summary_off">La pancarta es mostra</string> <string name="revanced_hide_products_banner_summary_off">La pancarta es mostra</string>
<string name="revanced_hide_end_screen_store_banner_title">Amaga el banner de la botiga a la pantalla final</string> <string name="revanced_hide_end_screen_store_banner_title">Amaga el banner de la botiga a la pantalla final</string>
@@ -443,10 +443,10 @@ Aquesta funció només està disponible per a dispositius antics"</string>
<string name="revanced_share_copy_url_success">S\'ha copiat l\'URL al porta-retalls</string> <string name="revanced_share_copy_url_success">S\'ha copiat l\'URL al porta-retalls</string>
<string name="revanced_share_copy_url_timestamp_success">S\'ha copiat l\'URL amb data i hora</string> <string name="revanced_share_copy_url_timestamp_success">S\'ha copiat l\'URL amb data i hora</string>
<string name="revanced_copy_video_url_title">Mostra el botó de l\'URL</string> <string name="revanced_copy_video_url_title">Mostra el botó de l\'URL</string>
<string name="revanced_copy_video_url_summary_on">El botó es mostra. Toca per copiar l\'URL del vídeo. Mantén premut per copiar l\'URL del vídeo amb marca de temps</string> <string name="revanced_copy_video_url_summary_on">Es mostra el botó. Toqueu per copiar l\'URL del vídeo. Toqueu i manteniu premut per copiar-lo amb la marca de temps</string>
<string name="revanced_copy_video_url_summary_off">El botó no es mostra</string> <string name="revanced_copy_video_url_summary_off">El botó no es mostra</string>
<string name="revanced_copy_video_url_timestamp_title">Mostra el botó per copiar l\'URL amb marca de temps</string> <string name="revanced_copy_video_url_timestamp_title">Mostra el botó per copiar l\'URL amb marca de temps</string>
<string name="revanced_copy_video_url_timestamp_summary_on">Es mostra el botó. Toqueu per copiar l\'URL del vídeo amb segell de temps. Toqueu i manteniu premut per copiar el vídeo sense segell de temps</string> <string name="revanced_copy_video_url_timestamp_summary_on">Es mostra el botó. Toqueu per copiar l\'URL del vídeo amb la marca de temps. Toqueu i manteniu premut per copiar-lo sense la marca de temps</string>
<string name="revanced_copy_video_url_timestamp_summary_off">No es mostra el botó</string> <string name="revanced_copy_video_url_timestamp_summary_off">No es mostra el botó</string>
</patch> </patch>
<patch id="interaction.dialog.removeViewerDiscretionDialogPatch"> <patch id="interaction.dialog.removeViewerDiscretionDialogPatch">
@@ -663,7 +663,7 @@ Si canviar aquesta opció no té cap efecte, prova a canviar al mode d'incògnit
<string name="revanced_hide_player_flyout_video_quality_footer_summary_off">La part inferior del menú de qualitat del vídeo es mostra</string> <string name="revanced_hide_player_flyout_video_quality_footer_summary_off">La part inferior del menú de qualitat del vídeo es mostra</string>
</patch> </patch>
<patch id="layout.buttons.overlay.hidePlayerOverlayButtonsPatch"> <patch id="layout.buttons.overlay.hidePlayerOverlayButtonsPatch">
<string name="revanced_hide_player_previous_next_buttons_title">Amaga els botons de vídeo anteriors i següents</string> <string name="revanced_hide_player_previous_next_buttons_title">Amaga els botons Anterior i següent</string>
<string name="revanced_hide_player_previous_next_buttons_summary_on">Els botons estan amagats</string> <string name="revanced_hide_player_previous_next_buttons_summary_on">Els botons estan amagats</string>
<string name="revanced_hide_player_previous_next_buttons_summary_off">Els botons es mostren</string> <string name="revanced_hide_player_previous_next_buttons_summary_off">Els botons es mostren</string>
<string name="revanced_hide_cast_button_title">Amaga el botó Emet</string> <string name="revanced_hide_cast_button_title">Amaga el botó Emet</string>
@@ -808,10 +808,13 @@ Si canviar aquesta opció no té cap efecte, prova a canviar al mode d'incògnit
<string name="revanced_hide_shorts_navigation_bar_summary_on">La barra de navegació està oculta</string> <string name="revanced_hide_shorts_navigation_bar_summary_on">La barra de navegació està oculta</string>
<string name="revanced_hide_shorts_navigation_bar_summary_off">La barra de navegació està visible</string> <string name="revanced_hide_shorts_navigation_bar_summary_off">La barra de navegació està visible</string>
</patch> </patch>
<patch id="layout.hide.suggestedvideoendscreen.disableSuggestedVideoEndScreenResourcePatch"> <patch id="layout.hide.endscreensuggestion.hideEndScreenSuggestedVideoPatch">
<string name="revanced_disable_suggested_video_end_screen_title">Deshabilitar pantalla final amb vídeos suggerits</string> <string name="revanced_end_screen_suggested_video_title">Amaga el vídeo suggerit de la pantalla final</string>
<string name="revanced_disable_suggested_video_end_screen_summary_on">Els vídeos suggerits estaran desactivats</string> <string name="revanced_end_screen_suggested_video_summary_on">"El vídeo suggerit de la pantalla final s'amaga quan la reproducció automàtica està desactivada
<string name="revanced_disable_suggested_video_end_screen_summary_off">Els vídeos suggerits estaran visibles</string>
La reproducció automàtica es pot canviar a la configuració de YouTube:
Configuració → Reproducció → Reprodueix el vídeo següent automàticament"</string>
<string name="revanced_end_screen_suggested_video_summary_off">Es mostra el vídeo suggerit de la pantalla final</string>
</patch> </patch>
<patch id="layout.hide.time.hideTimestampPatch"> <patch id="layout.hide.time.hideTimestampPatch">
<string name="revanced_hide_timestamp_title">Amagar segell de temps del vídeo</string> <string name="revanced_hide_timestamp_title">Amagar segell de temps del vídeo</string>
@@ -1114,14 +1117,12 @@ Preparat per enviar?"</string>
<string name="revanced_change_form_factor_entry_4">Automoció</string> <string name="revanced_change_form_factor_entry_4">Automoció</string>
<string name="revanced_change_form_factor_user_dialog_message">"Els canvis inclouen: <string name="revanced_change_form_factor_user_dialog_message">"Els canvis inclouen:
Presentació de la tauleta Disposició de tauleta
• Les publicacions de la comunitat estan amagades • Les publicacions de la comunitat s'han ocultat
Presentació de l'automòbil Disposició per a automoció
• El menú d'historial del rellotge està ocult • Els \"Shorts\" s'obren al reproductor normal
• La pestanya Explora s'ha restaurat • La font està organitzada per temes i canals"</string>
• Els Shorts s'obren al reproductor normal
• La font d'informació s'organitza per temes i canals"</string>
</patch> </patch>
<patch id="layout.spoofappversion.spoofAppVersionPatch"> <patch id="layout.spoofappversion.spoofAppVersionPatch">
<string name="revanced_spoof_app_version_title">Falsa la versió de l\'aplicació</string> <string name="revanced_spoof_app_version_title">Falsa la versió de l\'aplicació</string>
@@ -1337,8 +1338,8 @@ Si actives aquesta opció, es poden desbloquejar qualitats de vídeo més altes"
</patch> </patch>
<patch id="misc.links.openLinksExternallyPatch"> <patch id="misc.links.openLinksExternallyPatch">
<string name="revanced_external_browser_title">Obri els enllaços al navegador</string> <string name="revanced_external_browser_title">Obri els enllaços al navegador</string>
<string name="revanced_external_browser_summary_on">Obrir els enllaços externament</string> <string name="revanced_external_browser_summary_on">Obrint enllaços en un navegador extern</string>
<string name="revanced_external_browser_summary_off">Obrir els enllaços a l\'aplicació</string> <string name="revanced_external_browser_summary_off">Obrint enllaços en un navegador integrat a l\'aplicació</string>
</patch> </patch>
<patch id="misc.privacy.removeTrackingQueryParameterPatch"> <patch id="misc.privacy.removeTrackingQueryParameterPatch">
<string name="revanced_remove_tracking_query_parameter_title">Elimina el paràmetre de consulta de seguiment</string> <string name="revanced_remove_tracking_query_parameter_title">Elimina el paràmetre de consulta de seguiment</string>
@@ -1351,22 +1352,30 @@ Si actives aquesta opció, es poden desbloquejar qualitats de vídeo més altes"
<string name="revanced_disable_zoom_haptics_summary_off">Els hàptics estan habilitats</string> <string name="revanced_disable_zoom_haptics_summary_off">Els hàptics estan habilitats</string>
</patch> </patch>
<patch id="video.audio.forceOriginalAudioPatch"> <patch id="video.audio.forceOriginalAudioPatch">
<string name="revanced_force_original_audio_title">Forçar àudio original</string> <string name="revanced_force_original_audio_title">Forçar l\'idioma d\'àudio original</string>
<string name="revanced_force_original_audio_summary_on">Utilitzant àudio original</string> <string name="revanced_force_original_audio_summary_on">S\'utilitza l\'idioma d\'àudio original</string>
<string name="revanced_force_original_audio_summary_off">Utilitzant àudio predeterminat</string> <string name="revanced_force_original_audio_summary_off">Utilitzant àudio predeterminat</string>
<string name="revanced_force_original_audio_not_available">Per utilitzar aquesta funció, canvia la suplantació de flux al tipus de client iOS</string> <!-- 'Spoof video streams' should be the same translation used for revanced_spoof_video_streams_screen_title -->
<string name="revanced_force_original_audio_not_available">Per utilitzar aquesta funció, canvieu \"Suplantació de fluxos de vídeo\" a iOS TV</string>
</patch> </patch>
<patch id="video.quality.rememberVideoQualityPatch"> <patch id="video.quality.rememberVideoQualityPatch">
<!-- Translations should use the same text as revanced_custom_playback_speeds_auto --> <!-- Translations should use the same text as revanced_custom_playback_speeds_auto -->
<string name="revanced_video_quality_screen_title">Qualitat de vídeo</string>
<string name="revanced_video_quality_default_entry_1">Automàtic</string> <string name="revanced_video_quality_default_entry_1">Automàtic</string>
<string name="revanced_remember_video_quality_last_selected_title">Recorda els canvis de qualitat de vídeo</string> <string name="revanced_remember_video_quality_last_selected_title">Recorda els canvis de qualitat de vídeo</string>
<string name="revanced_remember_video_quality_last_selected_summary_on">Els canvis de qualitat s\'apliquen a tots els vídeos</string> <string name="revanced_remember_video_quality_last_selected_summary_on">Els canvis de qualitat s\'apliquen a tots els vídeos</string>
<string name="revanced_remember_video_quality_last_selected_summary_off">Els canvis de qualitat només s\'apliquen al vídeo actual</string> <string name="revanced_remember_video_quality_last_selected_summary_off">Els canvis de qualitat només s\'apliquen al vídeo actual</string>
<string name="revanced_video_quality_default_wifi_title">Qualitat de vídeo predeterminada a la xarxa Wi-Fi</string> <string name="revanced_video_quality_default_wifi_title">Qualitat de vídeo predeterminada a la xarxa Wi-Fi</string>
<string name="revanced_video_quality_default_mobile_title">Qualitat de vídeo predeterminada a la xarxa mòbil</string> <string name="revanced_video_quality_default_mobile_title">Qualitat de vídeo predeterminada a la xarxa mòbil</string>
<string name="revanced_remember_shorts_quality_last_selected_title">Recorda els canvis de qualitat de Shorts</string>
<string name="revanced_remember_shorts_quality_last_selected_summary_on">Els canvis de qualitat s\'apliquen a tots els vídeos de Shorts</string>
<string name="revanced_remember_shorts_quality_last_selected_summary_off">Els canvis de qualitat només s\'apliquen al vídeo actual de Shorts</string>
<string name="revanced_shorts_quality_default_wifi_title">Qualitat predeterminada de Shorts a la xarxa Wi-Fi</string>
<string name="revanced_shorts_quality_default_mobile_title">Qualitat predeterminada de Shorts a la xarxa mòbil</string>
<string name="revanced_remember_video_quality_mobile">mòbil</string> <string name="revanced_remember_video_quality_mobile">mòbil</string>
<string name="revanced_remember_video_quality_wifi">wifi</string> <string name="revanced_remember_video_quality_wifi">wifi</string>
<string name="revanced_remember_video_quality_toast">S\'ha canviat la qualitat predeterminada de %1$s a: %2$s</string> <string name="revanced_remember_video_quality_toast">S\'ha canviat la qualitat predeterminada de %1$s a: %2$s</string>
<string name="revanced_remember_video_quality_toast_shorts">S\'ha canviat la qualitat de Shorts %1$s a: %2$s</string>
</patch> </patch>
<patch id="video.speed.button.playbackSpeedButtonPatch"> <patch id="video.speed.button.playbackSpeedButtonPatch">
<string name="revanced_playback_speed_dialog_button_title">Mostra el botó del diàleg de velocitat</string> <string name="revanced_playback_speed_dialog_button_title">Mostra el botó del diàleg de velocitat</string>

View File

@@ -301,13 +301,13 @@ Nebudete informováni o žádné neočekávané události."</string>
<string name="revanced_hide_description_components_screen_title">Popis videa</string> <string name="revanced_hide_description_components_screen_title">Popis videa</string>
<string name="revanced_hide_description_components_screen_summary">Skrýt nebo zobrazit komponenty popisu videa</string> <string name="revanced_hide_description_components_screen_summary">Skrýt nebo zobrazit komponenty popisu videa</string>
<string name="revanced_hide_filter_bar_screen_title">Lišta filtrů</string> <string name="revanced_hide_filter_bar_screen_title">Lišta filtrů</string>
<string name="revanced_hide_filter_bar_screen_summary">Skrýt nebo zobrazit lištu filtrů ve feedu, vyhledání a souvisejících videích</string> <string name="revanced_hide_filter_bar_screen_summary">Skrýt nebo zobrazit lištu filtrů v kanálu, výsledcích hledání a souvisejících videích</string>
<string name="revanced_hide_filter_bar_feed_in_feed_title">Skrýt ve feedu</string> <string name="revanced_hide_filter_bar_feed_in_feed_title">Skrýt ve feedu</string>
<string name="revanced_hide_filter_bar_feed_in_feed_summary_on">Ve feedu skryto</string> <string name="revanced_hide_filter_bar_feed_in_feed_summary_on">Ve feedu skryto</string>
<string name="revanced_hide_filter_bar_feed_in_feed_summary_off">Ve feedu zobrazeno</string> <string name="revanced_hide_filter_bar_feed_in_feed_summary_off">Ve feedu zobrazeno</string>
<string name="revanced_hide_filter_bar_feed_in_search_title">Skrýt ve vyhledávání</string> <string name="revanced_hide_filter_bar_feed_in_search_title">Skrýt ve výsledcích vyhledávání</string>
<string name="revanced_hide_filter_bar_feed_in_search_summary_on">Ve vyhledávání skryto</string> <string name="revanced_hide_filter_bar_feed_in_search_summary_on">Skryto ve výsledcích vyhledávání</string>
<string name="revanced_hide_filter_bar_feed_in_search_summary_off">Ve vyhledávání zobrazeno</string> <string name="revanced_hide_filter_bar_feed_in_search_summary_off">Zobrazeno ve výsledcích vyhledávání</string>
<string name="revanced_hide_filter_bar_feed_in_related_videos_title">Skrýt v souvisejících videích</string> <string name="revanced_hide_filter_bar_feed_in_related_videos_title">Skrýt v souvisejících videích</string>
<string name="revanced_hide_filter_bar_feed_in_related_videos_summary_on">V souvisejících videích skryto</string> <string name="revanced_hide_filter_bar_feed_in_related_videos_summary_on">V souvisejících videích skryto</string>
<string name="revanced_hide_filter_bar_feed_in_related_videos_summary_off">V souvisejících videích zobrazeno</string> <string name="revanced_hide_filter_bar_feed_in_related_videos_summary_off">V souvisejících videích zobrazeno</string>
@@ -404,7 +404,7 @@ Tato funkce je dostupná pouze pro starší zařízení"</string>
<string name="revanced_hide_self_sponsor_ads_title">Skrýt karty se sponzorovanými produkty</string> <string name="revanced_hide_self_sponsor_ads_title">Skrýt karty se sponzorovanými produkty</string>
<string name="revanced_hide_self_sponsor_ads_summary_on">Karty se sponzorovanými produkty jsou skryty</string> <string name="revanced_hide_self_sponsor_ads_summary_on">Karty se sponzorovanými produkty jsou skryty</string>
<string name="revanced_hide_self_sponsor_ads_summary_off">Karty se sponzorovanými produkty jsou zobrazeny</string> <string name="revanced_hide_self_sponsor_ads_summary_off">Karty se sponzorovanými produkty jsou zobrazeny</string>
<string name="revanced_hide_products_banner_title">Skrýt banner pro prohlížení produktů</string> <string name="revanced_hide_products_banner_title">Skrýt banner „Zobrazit produkty“</string>
<string name="revanced_hide_products_banner_summary_on">Banner je skryt</string> <string name="revanced_hide_products_banner_summary_on">Banner je skryt</string>
<string name="revanced_hide_products_banner_summary_off">Banner je zobrazen</string> <string name="revanced_hide_products_banner_summary_off">Banner je zobrazen</string>
<string name="revanced_hide_end_screen_store_banner_title">Skrýt koncový banner obchodu</string> <string name="revanced_hide_end_screen_store_banner_title">Skrýt koncový banner obchodu</string>
@@ -443,10 +443,10 @@ Tato funkce je dostupná pouze pro starší zařízení"</string>
<string name="revanced_share_copy_url_success">URL zkopírováno do schránky</string> <string name="revanced_share_copy_url_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">Tlačítko je zobrazeno. Klepnutím zkopírujete adresu URL videa. Klepnutím a podržením zkopírujete adresu URL videa s časovým razítkem</string> <string name="revanced_copy_video_url_summary_on">Zobrazí se tlačítko. Klepnutím zkopírujete URL videa. Klepnutím a podržením zkopírujete s časovou značkou</string>
<string name="revanced_copy_video_url_summary_off">Tlačítko se nezobrazuje</string> <string name="revanced_copy_video_url_summary_off">Tlačítko se nezobrazuje</string>
<string name="revanced_copy_video_url_timestamp_title">Zobrazit tlačítko pro kopírování adresy URL videa s časovým razítkem</string> <string name="revanced_copy_video_url_timestamp_title">Zobrazit tlačítko pro kopírování adresy URL videa s časovým razítkem</string>
<string name="revanced_copy_video_url_timestamp_summary_on">Tlačítko je zobrazeno. Klepnutím zkopírujete adresu URL videa s časovým razítkem. Klepnutím a podržením zkopírujete adresu URL videa bez časového razítka</string> <string name="revanced_copy_video_url_timestamp_summary_on">Zobrazí se tlačítko. Klepnutím zkopírujete URL videa s časovou značkou. Klepnutím a podržením zkopírujete bez časové značky</string>
<string name="revanced_copy_video_url_timestamp_summary_off">Tlačítko se nezobrazuje</string> <string name="revanced_copy_video_url_timestamp_summary_off">Tlačítko se nezobrazuje</string>
</patch> </patch>
<patch id="interaction.dialog.removeViewerDiscretionDialogPatch"> <patch id="interaction.dialog.removeViewerDiscretionDialogPatch">
@@ -663,7 +663,7 @@ Pokud změna tohoto nastavení nemá žádný účinek, zkuste přepnout do rež
<string name="revanced_hide_player_flyout_video_quality_footer_summary_off">Zápatí menu kvality videa je zobrazeno</string> <string name="revanced_hide_player_flyout_video_quality_footer_summary_off">Zápatí menu kvality videa je zobrazeno</string>
</patch> </patch>
<patch id="layout.buttons.overlay.hidePlayerOverlayButtonsPatch"> <patch id="layout.buttons.overlay.hidePlayerOverlayButtonsPatch">
<string name="revanced_hide_player_previous_next_buttons_title">Skrýt tlačítka pro předchozí a další video</string> <string name="revanced_hide_player_previous_next_buttons_title">Skrýt tlačítka Předchozí a Další</string>
<string name="revanced_hide_player_previous_next_buttons_summary_on">Tlačítka jsou skryta</string> <string name="revanced_hide_player_previous_next_buttons_summary_on">Tlačítka jsou skryta</string>
<string name="revanced_hide_player_previous_next_buttons_summary_off">Tlačítka jsou zobrazena</string> <string name="revanced_hide_player_previous_next_buttons_summary_off">Tlačítka jsou zobrazena</string>
<string name="revanced_hide_cast_button_title">Skrýt tlačítko Odeslat</string> <string name="revanced_hide_cast_button_title">Skrýt tlačítko Odeslat</string>
@@ -808,10 +808,13 @@ Pokud změna tohoto nastavení nemá žádný účinek, zkuste přepnout do rež
<string name="revanced_hide_shorts_navigation_bar_summary_on">Navigační panel je skrytý</string> <string name="revanced_hide_shorts_navigation_bar_summary_on">Navigační panel je skrytý</string>
<string name="revanced_hide_shorts_navigation_bar_summary_off">Navigační panel je zobrazen</string> <string name="revanced_hide_shorts_navigation_bar_summary_off">Navigační panel je zobrazen</string>
</patch> </patch>
<patch id="layout.hide.suggestedvideoendscreen.disableSuggestedVideoEndScreenResourcePatch"> <patch id="layout.hide.endscreensuggestion.hideEndScreenSuggestedVideoPatch">
<string name="revanced_disable_suggested_video_end_screen_title">Zakázat koncovou obrazovku s doporučenými videi</string> <string name="revanced_end_screen_suggested_video_title">Skrýt navrhované video na konci obrazovky</string>
<string name="revanced_disable_suggested_video_end_screen_summary_on">Doporučená videa budou zakázána</string> <string name="revanced_end_screen_suggested_video_summary_on">"Navrhované video na konci obrazovky je skryté, když je automatické přehrávání vypnuté.
<string name="revanced_disable_suggested_video_end_screen_summary_off">Doporučená videa budou zobrazena</string>
Automatické přehrávání lze změnit v nastavení YouTube:
Nastavení → Přehrávání → Automatické přehrávání dalšího videa"</string>
<string name="revanced_end_screen_suggested_video_summary_off">Navrhované video na konci obrazovky se zobrazuje</string>
</patch> </patch>
<patch id="layout.hide.time.hideTimestampPatch"> <patch id="layout.hide.time.hideTimestampPatch">
<string name="revanced_hide_timestamp_title">Skrýt čas videa</string> <string name="revanced_hide_timestamp_title">Skrýt čas videa</string>
@@ -1118,10 +1121,8 @@ Rozložení tabletu
• Příspěvky komunity jsou skryté • Příspěvky komunity jsou skryté
Rozložení automobilu Rozložení automobilu
• Menu historie sledování je skryté
• Karta Prozkoumat je obnovena
• Shorts se otevírají v běžném přehrávači • Shorts se otevírají v běžném přehrávači
• Kanál je organizován podle témat a kanálu"</string> • Kanál je uspořádán podle témat a kanálů"</string>
</patch> </patch>
<patch id="layout.spoofappversion.spoofAppVersionPatch"> <patch id="layout.spoofappversion.spoofAppVersionPatch">
<string name="revanced_spoof_app_version_title">Napodobit verzi aplikace</string> <string name="revanced_spoof_app_version_title">Napodobit verzi aplikace</string>
@@ -1337,8 +1338,8 @@ Povolením této funkce lze odemknout vyšší kvality videa"</string>
</patch> </patch>
<patch id="misc.links.openLinksExternallyPatch"> <patch id="misc.links.openLinksExternallyPatch">
<string name="revanced_external_browser_title">Otevírat odkazy v prohlížeči</string> <string name="revanced_external_browser_title">Otevírat odkazy v prohlížeči</string>
<string name="revanced_external_browser_summary_on">Otevírání odkazů externě</string> <string name="revanced_external_browser_summary_on">Otevírání odkazů v externím prohlížeči</string>
<string name="revanced_external_browser_summary_off">Otevírání odkazů v aplikaci</string> <string name="revanced_external_browser_summary_off">Otevírání odkazů v prohlížeči v aplikaci</string>
</patch> </patch>
<patch id="misc.privacy.removeTrackingQueryParameterPatch"> <patch id="misc.privacy.removeTrackingQueryParameterPatch">
<string name="revanced_remove_tracking_query_parameter_title">Odstranit sledovací parametr dotazu</string> <string name="revanced_remove_tracking_query_parameter_title">Odstranit sledovací parametr dotazu</string>
@@ -1351,22 +1352,30 @@ Povolením této funkce lze odemknout vyšší kvality videa"</string>
<string name="revanced_disable_zoom_haptics_summary_off">Haptika je povolena</string> <string name="revanced_disable_zoom_haptics_summary_off">Haptika je povolena</string>
</patch> </patch>
<patch id="video.audio.forceOriginalAudioPatch"> <patch id="video.audio.forceOriginalAudioPatch">
<string name="revanced_force_original_audio_title">Vynutit původní zvuk</string> <string name="revanced_force_original_audio_title">Vynutit původní jazyk zvuku</string>
<string name="revanced_force_original_audio_summary_on">Používání původního zvuku</string> <string name="revanced_force_original_audio_summary_on">Použít původní jazyk zvuku</string>
<string name="revanced_force_original_audio_summary_off">Používání výchozího zvuku</string> <string name="revanced_force_original_audio_summary_off">Používání výchozího zvuku</string>
<string name="revanced_force_original_audio_not_available">Pro použití této funkce změňte typ klienta streamu na iOS</string> <!-- 'Spoof video streams' should be the same translation used for revanced_spoof_video_streams_screen_title -->
<string name="revanced_force_original_audio_not_available">Chcete-li používat tuto funkci, změňte možnost „Zfalšovat datové proudy videa“ na iOS TV</string>
</patch> </patch>
<patch id="video.quality.rememberVideoQualityPatch"> <patch id="video.quality.rememberVideoQualityPatch">
<!-- Translations should use the same text as revanced_custom_playback_speeds_auto --> <!-- Translations should use the same text as revanced_custom_playback_speeds_auto -->
<string name="revanced_video_quality_screen_title">Kvalita videa</string>
<string name="revanced_video_quality_default_entry_1">Automaticky</string> <string name="revanced_video_quality_default_entry_1">Automaticky</string>
<string name="revanced_remember_video_quality_last_selected_title">Pamatovat si změny kvality videa</string> <string name="revanced_remember_video_quality_last_selected_title">Pamatovat si změny kvality videa</string>
<string name="revanced_remember_video_quality_last_selected_summary_on">Změny kvality se vztahují na všechna videa</string> <string name="revanced_remember_video_quality_last_selected_summary_on">Změny kvality se vztahují na všechna videa</string>
<string name="revanced_remember_video_quality_last_selected_summary_off">Změny kvality se vztahují pouze na aktuální video</string> <string name="revanced_remember_video_quality_last_selected_summary_off">Změny kvality se vztahují pouze na aktuální video</string>
<string name="revanced_video_quality_default_wifi_title">Výchozí kvalita videa v síti Wi-Fi</string> <string name="revanced_video_quality_default_wifi_title">Výchozí kvalita videa v síti Wi-Fi</string>
<string name="revanced_video_quality_default_mobile_title">Výchozí kvalita videa v mobilní síti</string> <string name="revanced_video_quality_default_mobile_title">Výchozí kvalita videa v mobilní síti</string>
<string name="revanced_remember_shorts_quality_last_selected_title">Zapamatovat si změny kvality u položky Shorts</string>
<string name="revanced_remember_shorts_quality_last_selected_summary_on">Změny kvality se použijí u všech videí Shorts</string>
<string name="revanced_remember_shorts_quality_last_selected_summary_off">Změny kvality se vztahují pouze na aktuální video Shorts</string>
<string name="revanced_shorts_quality_default_wifi_title">Výchozí kvalita Shorts v síti Wi-Fi</string>
<string name="revanced_shorts_quality_default_mobile_title">Výchozí kvalita Shorts v mobilní síti</string>
<string name="revanced_remember_video_quality_mobile">mobilní</string> <string name="revanced_remember_video_quality_mobile">mobilní</string>
<string name="revanced_remember_video_quality_wifi">Wi-Fi</string> <string name="revanced_remember_video_quality_wifi">Wi-Fi</string>
<string name="revanced_remember_video_quality_toast">Výchozí kvalita %1$s změněna na: %2$s</string> <string name="revanced_remember_video_quality_toast">Výchozí kvalita %1$s změněna na: %2$s</string>
<string name="revanced_remember_video_quality_toast_shorts">Změněna kvalita Shorts %1$s na: %2$s</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>

View File

@@ -278,13 +278,13 @@ Du modtager ikke notifikationer om uventede hændelser."</string>
<string name="revanced_hide_description_components_screen_title">Video beskrivelse</string> <string name="revanced_hide_description_components_screen_title">Video beskrivelse</string>
<string name="revanced_hide_description_components_screen_summary">Skjul eller vis komponenter til videobeskrivelse</string> <string name="revanced_hide_description_components_screen_summary">Skjul eller vis komponenter til videobeskrivelse</string>
<string name="revanced_hide_filter_bar_screen_title">Filtrer bjælke</string> <string name="revanced_hide_filter_bar_screen_title">Filtrer bjælke</string>
<string name="revanced_hide_filter_bar_screen_summary">Skjul eller vis filterbjælken i feedet, søg og relaterede videoer</string> <string name="revanced_hide_filter_bar_screen_summary">Skjul eller vis filterlinjen i feedet, søgeresultaterne og relaterede videoer</string>
<string name="revanced_hide_filter_bar_feed_in_feed_title">Skjul i feed</string> <string name="revanced_hide_filter_bar_feed_in_feed_title">Skjul i feed</string>
<string name="revanced_hide_filter_bar_feed_in_feed_summary_on">Skjult i feed</string> <string name="revanced_hide_filter_bar_feed_in_feed_summary_on">Skjult i feed</string>
<string name="revanced_hide_filter_bar_feed_in_feed_summary_off">Vist i feed</string> <string name="revanced_hide_filter_bar_feed_in_feed_summary_off">Vist i feed</string>
<string name="revanced_hide_filter_bar_feed_in_search_title">Skjul i søgning</string> <string name="revanced_hide_filter_bar_feed_in_search_title">Skjul i søgeresultater</string>
<string name="revanced_hide_filter_bar_feed_in_search_summary_on">Skjult i søgning</string> <string name="revanced_hide_filter_bar_feed_in_search_summary_on">Skjult i søgeresultater</string>
<string name="revanced_hide_filter_bar_feed_in_search_summary_off">Vist i søgning</string> <string name="revanced_hide_filter_bar_feed_in_search_summary_off">Vises i søgeresultater</string>
<string name="revanced_hide_filter_bar_feed_in_related_videos_title">Skjul i relaterede videoer</string> <string name="revanced_hide_filter_bar_feed_in_related_videos_title">Skjul i relaterede videoer</string>
<string name="revanced_hide_filter_bar_feed_in_related_videos_summary_on">Skjult i relaterede videoer</string> <string name="revanced_hide_filter_bar_feed_in_related_videos_summary_on">Skjult i relaterede videoer</string>
<string name="revanced_hide_filter_bar_feed_in_related_videos_summary_off">Vist i relaterede videoer</string> <string name="revanced_hide_filter_bar_feed_in_related_videos_summary_off">Vist i relaterede videoer</string>
@@ -372,7 +372,7 @@ Denne funktion er kun tilgængelig for ældre enheder"</string>
<string name="revanced_hide_self_sponsor_ads_title">Skjul selvsponsorerede kort</string> <string name="revanced_hide_self_sponsor_ads_title">Skjul selvsponsorerede kort</string>
<string name="revanced_hide_self_sponsor_ads_summary_on">Selvsponsorerede kort er skjult</string> <string name="revanced_hide_self_sponsor_ads_summary_on">Selvsponsorerede kort er skjult</string>
<string name="revanced_hide_self_sponsor_ads_summary_off">Selvsponsorerede kort vises</string> <string name="revanced_hide_self_sponsor_ads_summary_off">Selvsponsorerede kort vises</string>
<string name="revanced_hide_products_banner_title">Skjul banner for at se produkter</string> <string name="revanced_hide_products_banner_title">Skjul banneret \"Se produkter\"</string>
<string name="revanced_hide_products_banner_summary_on">Banner er skjult</string> <string name="revanced_hide_products_banner_summary_on">Banner er skjult</string>
<string name="revanced_hide_products_banner_summary_off">Banner er vist</string> <string name="revanced_hide_products_banner_summary_off">Banner er vist</string>
<string name="revanced_hide_end_screen_store_banner_title">Skjul banner fra butikken på slutskærmen</string> <string name="revanced_hide_end_screen_store_banner_title">Skjul banner fra butikken på slutskærmen</string>
@@ -407,10 +407,10 @@ 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">Knap vises. Tryk for at kopiere video URL. Tryk og hold for at kopiere video URL med tidsstempel</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_off">Knap vises ikke</string> <string name="revanced_copy_video_url_summary_off">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">Knap vises. Tryk for at kopiere video URL med tidsstempel. Tryk og hold for at kopiere video uden tidsstempel</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_off">Knap vises ikke</string> <string name="revanced_copy_video_url_timestamp_summary_off">Knap vises ikke</string>
</patch> </patch>
<patch id="interaction.dialog.removeViewerDiscretionDialogPatch"> <patch id="interaction.dialog.removeViewerDiscretionDialogPatch">
@@ -624,7 +624,7 @@ Hvis ændring af denne indstilling ikke træder i kraft, kan du prøve at skifte
<string name="revanced_hide_player_flyout_video_quality_footer_summary_off">Videokvalitet menu footer er vist</string> <string name="revanced_hide_player_flyout_video_quality_footer_summary_off">Videokvalitet menu footer er vist</string>
</patch> </patch>
<patch id="layout.buttons.overlay.hidePlayerOverlayButtonsPatch"> <patch id="layout.buttons.overlay.hidePlayerOverlayButtonsPatch">
<string name="revanced_hide_player_previous_next_buttons_title">Skjul forrige &amp; næste video knapper</string> <string name="revanced_hide_player_previous_next_buttons_title">Skjul Forrige &amp; Næste knapper</string>
<string name="revanced_hide_player_previous_next_buttons_summary_on">Knapper er skjult</string> <string name="revanced_hide_player_previous_next_buttons_summary_on">Knapper er skjult</string>
<string name="revanced_hide_player_previous_next_buttons_summary_off">Knapper vises</string> <string name="revanced_hide_player_previous_next_buttons_summary_off">Knapper vises</string>
<string name="revanced_hide_cast_button_title">Skjul Cast-knappen</string> <string name="revanced_hide_cast_button_title">Skjul Cast-knappen</string>
@@ -769,10 +769,13 @@ Hvis ændring af denne indstilling ikke træder i kraft, kan du prøve at skifte
<string name="revanced_hide_shorts_navigation_bar_summary_on">Navigationsbjælken er skjult</string> <string name="revanced_hide_shorts_navigation_bar_summary_on">Navigationsbjælken er skjult</string>
<string name="revanced_hide_shorts_navigation_bar_summary_off">Navigationsbjælken vises</string> <string name="revanced_hide_shorts_navigation_bar_summary_off">Navigationsbjælken vises</string>
</patch> </patch>
<patch id="layout.hide.suggestedvideoendscreen.disableSuggestedVideoEndScreenResourcePatch"> <patch id="layout.hide.endscreensuggestion.hideEndScreenSuggestedVideoPatch">
<string name="revanced_disable_suggested_video_end_screen_title">Deaktivér foreslået videoslutskærm</string> <string name="revanced_end_screen_suggested_video_title">Skjul foreslået videoslutskærmen</string>
<string name="revanced_disable_suggested_video_end_screen_summary_on">Foreslåede videoer vil blive deaktiveret</string> <string name="revanced_end_screen_suggested_video_summary_on">"Foreslået video på slutskærmen er skjult, når automatisk afspilning er slået fra
<string name="revanced_disable_suggested_video_end_screen_summary_off">Foreslåede videoer vil blive vist</string>
Automatisk afspilning kan ændres i YouTube-indstillinger:
Indstillinger → Afspilning → Afspil næste video automatisk"</string>
<string name="revanced_end_screen_suggested_video_summary_off">Foreslået video på slutskærmen vises</string>
</patch> </patch>
<patch id="layout.hide.time.hideTimestampPatch"> <patch id="layout.hide.time.hideTimestampPatch">
<string name="revanced_hide_timestamp_title">Skjul tidsstempel på video</string> <string name="revanced_hide_timestamp_title">Skjul tidsstempel på video</string>
@@ -1059,13 +1062,11 @@ Er du klar til at indsende?"</string>
<string name="revanced_change_form_factor_user_dialog_message">"Ændringer omfatter: <string name="revanced_change_form_factor_user_dialog_message">"Ændringer omfatter:
Tabletlayout Tabletlayout
• Fællesindlæg er skjult • Fællesskabsopslag er skjulte
Bil layout Automotive-layout
• Se historik-menuen er skjult
• Udforsk-fanen er gendannet
• Shorts åbnes i den almindelige afspiller • Shorts åbnes i den almindelige afspiller
• Feedet er organiseret efter emner og kanal"</string> • Feed er organiseret efter emner og kanaler"</string>
</patch> </patch>
<patch id="layout.spoofappversion.spoofAppVersionPatch"> <patch id="layout.spoofappversion.spoofAppVersionPatch">
<string name="revanced_spoof_app_version_title">Spoof app-version</string> <string name="revanced_spoof_app_version_title">Spoof app-version</string>
@@ -1135,7 +1136,7 @@ Hvis det senere slås fra, anbefales det at rydde app-dataene for at forhindre U
</patch> </patch>
<patch id="layout.miniplayer.miniplayerPatch"> <patch id="layout.miniplayer.miniplayerPatch">
<string name="revanced_miniplayer_screen_title">Mini-afspiller</string> <string name="revanced_miniplayer_screen_title">Mini-afspiller</string>
<string name="revanced_miniplayer_screen_summary">Ændre stilen for den i app minimeret afspiller</string> <string name="revanced_miniplayer_screen_summary">Skift stilen den minimerede afspiller i appen</string>
<string name="revanced_miniplayer_type_title">Type af miniplayer</string> <string name="revanced_miniplayer_type_title">Type af miniplayer</string>
<string name="revanced_miniplayer_type_entry_0">Deaktiveret</string> <string name="revanced_miniplayer_type_entry_0">Deaktiveret</string>
<string name="revanced_miniplayer_type_entry_1">Standard</string> <string name="revanced_miniplayer_type_entry_1">Standard</string>
@@ -1277,8 +1278,8 @@ Aktivering af dette kan låse op for højere videokvalitet"</string>
</patch> </patch>
<patch id="misc.links.openLinksExternallyPatch"> <patch id="misc.links.openLinksExternallyPatch">
<string name="revanced_external_browser_title">Åbn links i browser</string> <string name="revanced_external_browser_title">Åbn links i browser</string>
<string name="revanced_external_browser_summary_on">Åbning af links eksternt</string> <string name="revanced_external_browser_summary_on">Åbner links i ekstern browser</string>
<string name="revanced_external_browser_summary_off">Åbner links i appen</string> <string name="revanced_external_browser_summary_off">Åbner links i browser i appen</string>
</patch> </patch>
<patch id="misc.privacy.removeTrackingQueryParameterPatch"> <patch id="misc.privacy.removeTrackingQueryParameterPatch">
<string name="revanced_remove_tracking_query_parameter_title">Fjern sporingsforespørgselsparameter</string> <string name="revanced_remove_tracking_query_parameter_title">Fjern sporingsforespørgselsparameter</string>
@@ -1291,22 +1292,30 @@ Aktivering af dette kan låse op for højere videokvalitet"</string>
<string name="revanced_disable_zoom_haptics_summary_off">Haptics er aktiveret</string> <string name="revanced_disable_zoom_haptics_summary_off">Haptics er aktiveret</string>
</patch> </patch>
<patch id="video.audio.forceOriginalAudioPatch"> <patch id="video.audio.forceOriginalAudioPatch">
<string name="revanced_force_original_audio_title">Tving original lyd</string> <string name="revanced_force_original_audio_title">Tving originalt lydsprog</string>
<string name="revanced_force_original_audio_summary_on">Brug original lyd</string> <string name="revanced_force_original_audio_summary_on">Bruger originalt lydsprog</string>
<string name="revanced_force_original_audio_summary_off">Brug standard lyd</string> <string name="revanced_force_original_audio_summary_off">Brug standard lyd</string>
<string name="revanced_force_original_audio_not_available">Tilføj musik til denne historie</string> <!-- 'Spoof video streams' should be the same translation used for revanced_spoof_video_streams_screen_title -->
<string name="revanced_force_original_audio_not_available">For at bruge denne funktion skal du ændre \"Spoof videostreams\" til iOS TV</string>
</patch> </patch>
<patch id="video.quality.rememberVideoQualityPatch"> <patch id="video.quality.rememberVideoQualityPatch">
<!-- Translations should use the same text as revanced_custom_playback_speeds_auto --> <!-- Translations should use the same text as revanced_custom_playback_speeds_auto -->
<string name="revanced_video_quality_screen_title">Videokvalitet</string>
<string name="revanced_video_quality_default_entry_1">Automatisk</string> <string name="revanced_video_quality_default_entry_1">Automatisk</string>
<string name="revanced_remember_video_quality_last_selected_title">Husk ændringer i videokvalitet</string> <string name="revanced_remember_video_quality_last_selected_title">Husk ændringer i videokvalitet</string>
<string name="revanced_remember_video_quality_last_selected_summary_on">Kvalitetsændringer gælder for alle videoer</string> <string name="revanced_remember_video_quality_last_selected_summary_on">Kvalitetsændringer gælder for alle videoer</string>
<string name="revanced_remember_video_quality_last_selected_summary_off">Kvalitetsændringer gælder kun for den aktuelle video</string> <string name="revanced_remember_video_quality_last_selected_summary_off">Kvalitetsændringer gælder kun for den aktuelle video</string>
<string name="revanced_video_quality_default_wifi_title">Standard videokvalitet på Wi-Fi-netværk</string> <string name="revanced_video_quality_default_wifi_title">Standard videokvalitet på Wi-Fi-netværk</string>
<string name="revanced_video_quality_default_mobile_title">Standard videokvalitet på mobilnetværk</string> <string name="revanced_video_quality_default_mobile_title">Standard videokvalitet på mobilnetværk</string>
<string name="revanced_remember_shorts_quality_last_selected_title">Husk kvalitetsændringer for Shorts</string>
<string name="revanced_remember_shorts_quality_last_selected_summary_on">Kvalitetsændringer gælder for alle Shorts-videoer</string>
<string name="revanced_remember_shorts_quality_last_selected_summary_off">Kvalitetsændringer gælder kun for den aktuelle Shorts-video</string>
<string name="revanced_shorts_quality_default_wifi_title">Standard Shorts-kvalitet på Wi-Fi-netværk</string>
<string name="revanced_shorts_quality_default_mobile_title">Standard Shorts-kvalitet på mobilnetværk</string>
<string name="revanced_remember_video_quality_mobile">mobil</string> <string name="revanced_remember_video_quality_mobile">mobil</string>
<string name="revanced_remember_video_quality_wifi">Wi-Fi</string> <string name="revanced_remember_video_quality_wifi">Wi-Fi</string>
<string name="revanced_remember_video_quality_toast">Ændrede standard %1$s kvalitet til: %2$s</string> <string name="revanced_remember_video_quality_toast">Ændrede standard %1$s kvalitet til: %2$s</string>
<string name="revanced_remember_video_quality_toast_shorts">Ændrede Shorts %1$s kvalitet til: %2$s</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>

View File

@@ -297,13 +297,13 @@ Sie werden nicht über unerwartete Ereignisse informiert."</string>
<string name="revanced_hide_description_components_screen_title">Videobeschreibung</string> <string name="revanced_hide_description_components_screen_title">Videobeschreibung</string>
<string name="revanced_hide_description_components_screen_summary">Komponenten der Videobeschreibung ausblenden oder anzeigen</string> <string name="revanced_hide_description_components_screen_summary">Komponenten der Videobeschreibung ausblenden oder anzeigen</string>
<string name="revanced_hide_filter_bar_screen_title">Filterleiste</string> <string name="revanced_hide_filter_bar_screen_title">Filterleiste</string>
<string name="revanced_hide_filter_bar_screen_summary">Verstecke oder zeige die Filterleiste im Feed, in der Suche und verwandten Videos</string> <string name="revanced_hide_filter_bar_screen_summary">Die Filterleiste im Feed, in den Suchergebnissen und in verwandten Videos ein- oder ausblenden</string>
<string name="revanced_hide_filter_bar_feed_in_feed_title">Im Feed ausblenden</string> <string name="revanced_hide_filter_bar_feed_in_feed_title">Im Feed ausblenden</string>
<string name="revanced_hide_filter_bar_feed_in_feed_summary_on">Versteckt im Feed</string> <string name="revanced_hide_filter_bar_feed_in_feed_summary_on">Versteckt im Feed</string>
<string name="revanced_hide_filter_bar_feed_in_feed_summary_off">Im Feed angezeigt</string> <string name="revanced_hide_filter_bar_feed_in_feed_summary_off">Im Feed angezeigt</string>
<string name="revanced_hide_filter_bar_feed_in_search_title">In der Suche ausblenden</string> <string name="revanced_hide_filter_bar_feed_in_search_title">In Suchergebnissen ausblenden</string>
<string name="revanced_hide_filter_bar_feed_in_search_summary_on">Versteckt in der Suche</string> <string name="revanced_hide_filter_bar_feed_in_search_summary_on">In Suchergebnissen versteckt</string>
<string name="revanced_hide_filter_bar_feed_in_search_summary_off">In der Suche angezeigt</string> <string name="revanced_hide_filter_bar_feed_in_search_summary_off">In den Suchergebnissen angezeigt</string>
<string name="revanced_hide_filter_bar_feed_in_related_videos_title">In verwandten Videos ausblenden</string> <string name="revanced_hide_filter_bar_feed_in_related_videos_title">In verwandten Videos ausblenden</string>
<string name="revanced_hide_filter_bar_feed_in_related_videos_summary_on">Versteckt in verwandten Videos</string> <string name="revanced_hide_filter_bar_feed_in_related_videos_summary_on">Versteckt in verwandten Videos</string>
<string name="revanced_hide_filter_bar_feed_in_related_videos_summary_off">In verwandten Videos angezeigt</string> <string name="revanced_hide_filter_bar_feed_in_related_videos_summary_off">In verwandten Videos angezeigt</string>
@@ -399,7 +399,7 @@ Diese Funktion ist nur für ältere Geräte verfügbar"</string>
<string name="revanced_hide_self_sponsor_ads_title">Selbst gesponserte Karten ausblenden</string> <string name="revanced_hide_self_sponsor_ads_title">Selbst gesponserte Karten ausblenden</string>
<string name="revanced_hide_self_sponsor_ads_summary_on">Selbst gesponserte Karten sind ausgeblendet</string> <string name="revanced_hide_self_sponsor_ads_summary_on">Selbst gesponserte Karten sind ausgeblendet</string>
<string name="revanced_hide_self_sponsor_ads_summary_off">Selbstgesponserte Karten werden angezeigt</string> <string name="revanced_hide_self_sponsor_ads_summary_off">Selbstgesponserte Karten werden angezeigt</string>
<string name="revanced_hide_products_banner_title">Banner ausblenden, um Produkte anzuzeigen</string> <string name="revanced_hide_products_banner_title">Banner \"Produkte ansehen\" ausblenden</string>
<string name="revanced_hide_products_banner_summary_on">Banner ist ausgeblendet</string> <string name="revanced_hide_products_banner_summary_on">Banner ist ausgeblendet</string>
<string name="revanced_hide_products_banner_summary_off">Banner wird angezeigt</string> <string name="revanced_hide_products_banner_summary_off">Banner wird angezeigt</string>
<string name="revanced_hide_end_screen_store_banner_title">Endbild-Banner ausblenden</string> <string name="revanced_hide_end_screen_store_banner_title">Endbild-Banner ausblenden</string>
@@ -438,10 +438,10 @@ 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 Video-URL zu kopieren. Tippen und halten um Video-URL mit Zeitstempel zu kopieren</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_off">Button wird nicht angezeigt</string> <string name="revanced_copy_video_url_summary_off">Button 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 Video-URL mit Zeitstempel zu kopieren. Tippen und halten um Video ohne Zeitstempel zu kopieren</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_off">Button wird nicht angezeigt</string> <string name="revanced_copy_video_url_timestamp_summary_off">Button wird nicht angezeigt</string>
</patch> </patch>
<patch id="interaction.dialog.removeViewerDiscretionDialogPatch"> <patch id="interaction.dialog.removeViewerDiscretionDialogPatch">
@@ -656,7 +656,7 @@ Wenn diese Änderung nicht wirksam wird, versuchen Sie, in den Inkognito-Modus z
<string name="revanced_hide_player_flyout_video_quality_footer_summary_off">Video-Qualität Menü-Fußzeile wird angezeigt</string> <string name="revanced_hide_player_flyout_video_quality_footer_summary_off">Video-Qualität Menü-Fußzeile wird angezeigt</string>
</patch> </patch>
<patch id="layout.buttons.overlay.hidePlayerOverlayButtonsPatch"> <patch id="layout.buttons.overlay.hidePlayerOverlayButtonsPatch">
<string name="revanced_hide_player_previous_next_buttons_title">Vorherige &amp; Nächste Video-Tasten ausblenden</string> <string name="revanced_hide_player_previous_next_buttons_title">Vorherige &amp; Nächste Tasten ausblenden</string>
<string name="revanced_hide_player_previous_next_buttons_summary_on">Buttons sind ausgeblendet</string> <string name="revanced_hide_player_previous_next_buttons_summary_on">Buttons sind ausgeblendet</string>
<string name="revanced_hide_player_previous_next_buttons_summary_off">Tasten werden angezeigt</string> <string name="revanced_hide_player_previous_next_buttons_summary_off">Tasten werden angezeigt</string>
<string name="revanced_hide_cast_button_title">Cast-Button ausblenden</string> <string name="revanced_hide_cast_button_title">Cast-Button ausblenden</string>
@@ -801,10 +801,13 @@ Wenn diese Änderung nicht wirksam wird, versuchen Sie, in den Inkognito-Modus z
<string name="revanced_hide_shorts_navigation_bar_summary_on">Navigationsleiste ist ausgeblendet</string> <string name="revanced_hide_shorts_navigation_bar_summary_on">Navigationsleiste ist ausgeblendet</string>
<string name="revanced_hide_shorts_navigation_bar_summary_off">Navigationsleiste wird angezeigt</string> <string name="revanced_hide_shorts_navigation_bar_summary_off">Navigationsleiste wird angezeigt</string>
</patch> </patch>
<patch id="layout.hide.suggestedvideoendscreen.disableSuggestedVideoEndScreenResourcePatch"> <patch id="layout.hide.endscreensuggestion.hideEndScreenSuggestedVideoPatch">
<string name="revanced_disable_suggested_video_end_screen_title">Empfohlene Video-Endbildschirm deaktivieren</string> <string name="revanced_end_screen_suggested_video_title">Vorgeschlagenes Video auf dem Endbildschirm ausblenden</string>
<string name="revanced_disable_suggested_video_end_screen_summary_on">Empfohlene Videos werden deaktiviert</string> <string name="revanced_end_screen_suggested_video_summary_on">"Das vorgeschlagene Video auf dem Endbildschirm wird ausgeblendet, wenn die automatische Wiedergabe deaktiviert ist.
<string name="revanced_disable_suggested_video_end_screen_summary_off">Empfohlene Videos werden angezeigt</string>
Die automatische Wiedergabe kann in den YouTube-Einstellungen geändert werden:
Einstellungen → Wiedergabe → Nächstes Video automatisch abspielen"</string>
<string name="revanced_end_screen_suggested_video_summary_off">Das vorgeschlagene Video auf dem Endbildschirm wird angezeigt</string>
</patch> </patch>
<patch id="layout.hide.time.hideTimestampPatch"> <patch id="layout.hide.time.hideTimestampPatch">
<string name="revanced_hide_timestamp_title">Verstecke Video-Zeitstempel</string> <string name="revanced_hide_timestamp_title">Verstecke Video-Zeitstempel</string>
@@ -1106,16 +1109,14 @@ Bereit zum Einreichen?"</string>
<string name="revanced_change_form_factor_entry_2">Telefon</string> <string name="revanced_change_form_factor_entry_2">Telefon</string>
<string name="revanced_change_form_factor_entry_3">Tablets</string> <string name="revanced_change_form_factor_entry_3">Tablets</string>
<string name="revanced_change_form_factor_entry_4">Automobil</string> <string name="revanced_change_form_factor_entry_4">Automobil</string>
<string name="revanced_change_form_factor_user_dialog_message">"Änderungen umfassen: <string name="revanced_change_form_factor_user_dialog_message">"Zu den Änderungen gehören:
Tablet-Layout Tablet-Layout
• Community-Beiträge werden ausgeblendet • Community-Beiträge sind ausgeblendet
Auto-Layout Automotive-Layout
Der Verlaufsmenü ist ausgeblendet Shorts werden im normalen Player geöffnet
Der Explore-Tab wird wiederhergestellt Feed ist nach Themen und Kanälen geordnet"</string>
• Shorts werden im regulären Player geöffnet
• Der Feed ist nach Themen und Kanälen organisiert"</string>
</patch> </patch>
<patch id="layout.spoofappversion.spoofAppVersionPatch"> <patch id="layout.spoofappversion.spoofAppVersionPatch">
<string name="revanced_spoof_app_version_title">Spoof-App-Version</string> <string name="revanced_spoof_app_version_title">Spoof-App-Version</string>
@@ -1185,7 +1186,7 @@ Wenn Sie die Funktion später deaktivieren, wird empfohlen, die App-Daten zu lö
</patch> </patch>
<patch id="layout.miniplayer.miniplayerPatch"> <patch id="layout.miniplayer.miniplayerPatch">
<string name="revanced_miniplayer_screen_title">Minispieler</string> <string name="revanced_miniplayer_screen_title">Minispieler</string>
<string name="revanced_miniplayer_screen_summary">Ändere den Stil des in App minimierten Players</string> <string name="revanced_miniplayer_screen_summary">Das Aussehen des minimierten In-App-Players ändern</string>
<string name="revanced_miniplayer_type_title">Minispielertyp</string> <string name="revanced_miniplayer_type_title">Minispielertyp</string>
<string name="revanced_miniplayer_type_entry_0">Deaktiviert</string> <string name="revanced_miniplayer_type_entry_0">Deaktiviert</string>
<string name="revanced_miniplayer_type_entry_1">Standard</string> <string name="revanced_miniplayer_type_entry_1">Standard</string>
@@ -1331,8 +1332,8 @@ Durch Aktivieren dieser Option können höhere Videoqualitäten freigeschaltet w
</patch> </patch>
<patch id="misc.links.openLinksExternallyPatch"> <patch id="misc.links.openLinksExternallyPatch">
<string name="revanced_external_browser_title">Links im Browser öffnen</string> <string name="revanced_external_browser_title">Links im Browser öffnen</string>
<string name="revanced_external_browser_summary_on">Links extern öffnen</string> <string name="revanced_external_browser_summary_on">Links im externen Browser öffnen</string>
<string name="revanced_external_browser_summary_off">Öffne Links in der App</string> <string name="revanced_external_browser_summary_off">Links im In-App-Browser öffnen</string>
</patch> </patch>
<patch id="misc.privacy.removeTrackingQueryParameterPatch"> <patch id="misc.privacy.removeTrackingQueryParameterPatch">
<string name="revanced_remove_tracking_query_parameter_title">Tracking-Abfrageparameter entfernen</string> <string name="revanced_remove_tracking_query_parameter_title">Tracking-Abfrageparameter entfernen</string>
@@ -1346,21 +1347,29 @@ Durch Aktivieren dieser Option können höhere Videoqualitäten freigeschaltet w
</patch> </patch>
<patch id="video.audio.forceOriginalAudioPatch"> <patch id="video.audio.forceOriginalAudioPatch">
<string name="revanced_force_original_audio_title">Original Audio erzwingen</string> <string name="revanced_force_original_audio_title">Original Audio erzwingen</string>
<string name="revanced_force_original_audio_summary_on">Originales Audio verwenden</string> <string name="revanced_force_original_audio_summary_on">Original-Audiosprache verwenden</string>
<string name="revanced_force_original_audio_summary_off">Standardaudio verwenden</string> <string name="revanced_force_original_audio_summary_off">Standardaudio verwenden</string>
<string name="revanced_force_original_audio_not_available">Um diese Funktion zu nutzen, ändern Sie das Stream-Spoofing auf den iOS-Clienttyp.</string> <!-- 'Spoof video streams' should be the same translation used for revanced_spoof_video_streams_screen_title -->
<string name="revanced_force_original_audio_not_available">Um diese Funktion zu nutzen, ändere \"Video-Streams fälschen\" zu iOS TV</string>
</patch> </patch>
<patch id="video.quality.rememberVideoQualityPatch"> <patch id="video.quality.rememberVideoQualityPatch">
<!-- Translations should use the same text as revanced_custom_playback_speeds_auto --> <!-- Translations should use the same text as revanced_custom_playback_speeds_auto -->
<string name="revanced_video_quality_screen_title">Videoqualität</string>
<string name="revanced_video_quality_default_entry_1">Autom</string> <string name="revanced_video_quality_default_entry_1">Autom</string>
<string name="revanced_remember_video_quality_last_selected_title">Änderungen der Videoqualität merken</string> <string name="revanced_remember_video_quality_last_selected_title">Änderungen der Videoqualität merken</string>
<string name="revanced_remember_video_quality_last_selected_summary_on">Qualitätsänderungen gelten für alle Videos</string> <string name="revanced_remember_video_quality_last_selected_summary_on">Qualitätsänderungen gelten für alle Videos</string>
<string name="revanced_remember_video_quality_last_selected_summary_off">Qualitätsänderungen gelten nur für das aktuelle Video</string> <string name="revanced_remember_video_quality_last_selected_summary_off">Qualitätsänderungen gelten nur für das aktuelle Video</string>
<string name="revanced_video_quality_default_wifi_title">Standard-Videoqualität im Wi-Fi-Netzwerk</string> <string name="revanced_video_quality_default_wifi_title">Standard-Videoqualität im Wi-Fi-Netzwerk</string>
<string name="revanced_video_quality_default_mobile_title">Standard-Videoqualität im Mobilfunknetz</string> <string name="revanced_video_quality_default_mobile_title">Standard-Videoqualität im Mobilfunknetz</string>
<string name="revanced_remember_shorts_quality_last_selected_title">Änderungen der Shorts-Qualität speichern</string>
<string name="revanced_remember_shorts_quality_last_selected_summary_on">Qualitätsänderungen gelten für alle Shorts-Videos</string>
<string name="revanced_remember_shorts_quality_last_selected_summary_off">Qualitätsänderungen gelten nur für das aktuelle Shorts-Video</string>
<string name="revanced_shorts_quality_default_wifi_title">Standardmäßige Shorts-Qualität im WLAN</string>
<string name="revanced_shorts_quality_default_mobile_title">Standard-Shorts-Qualität im Mobilfunknetz</string>
<string name="revanced_remember_video_quality_mobile">Mobile</string> <string name="revanced_remember_video_quality_mobile">Mobile</string>
<string name="revanced_remember_video_quality_wifi">WLAN</string> <string name="revanced_remember_video_quality_wifi">WLAN</string>
<string name="revanced_remember_video_quality_toast">Standard %1$s Qualität geändert zu: %2$s</string> <string name="revanced_remember_video_quality_toast">Standard %1$s Qualität geändert zu: %2$s</string>
<string name="revanced_remember_video_quality_toast_shorts">Shorts-Qualität von %1$s geändert in: %2$s</string>
</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>

View File

@@ -303,7 +303,7 @@ Second \"item\" text"</string>
<string name="revanced_hide_description_components_screen_title">Περιγραφή βίντεο</string> <string name="revanced_hide_description_components_screen_title">Περιγραφή βίντεο</string>
<string name="revanced_hide_description_components_screen_summary">Απόκρυψη ή εμφάνιση στοιχείων περιγραφής βίντεο</string> <string name="revanced_hide_description_components_screen_summary">Απόκρυψη ή εμφάνιση στοιχείων περιγραφής βίντεο</string>
<string name="revanced_hide_filter_bar_screen_title">Γραμμή φίλτρων</string> <string name="revanced_hide_filter_bar_screen_title">Γραμμή φίλτρων</string>
<string name="revanced_hide_filter_bar_screen_summary">Απόκρυψη η εμφάνιση της γραμμής φίλτρων στη ροή, αναζήτηση και τα σχετικά βίντεο</string> <string name="revanced_hide_filter_bar_screen_summary">Απόκρυψη ή εμφάνιση της γραμμής φίλτρων στην ροή, στα αποτελέσματα αναζήτησης και στα σχετικά βίντεο</string>
<string name="revanced_hide_filter_bar_feed_in_feed_title">Απόκρυψη στη ροή</string> <string name="revanced_hide_filter_bar_feed_in_feed_title">Απόκρυψη στη ροή</string>
<string name="revanced_hide_filter_bar_feed_in_feed_summary_on">Κρυμμένη</string> <string name="revanced_hide_filter_bar_feed_in_feed_summary_on">Κρυμμένη</string>
<string name="revanced_hide_filter_bar_feed_in_feed_summary_off">Εμφανίζεται</string> <string name="revanced_hide_filter_bar_feed_in_feed_summary_off">Εμφανίζεται</string>
@@ -406,7 +406,7 @@ Second \"item\" text"</string>
<string name="revanced_hide_self_sponsor_ads_title">Κάρτες αυτοπροώθησης</string> <string name="revanced_hide_self_sponsor_ads_title">Κάρτες αυτοπροώθησης</string>
<string name="revanced_hide_self_sponsor_ads_summary_on">Κρυμμένες</string> <string name="revanced_hide_self_sponsor_ads_summary_on">Κρυμμένες</string>
<string name="revanced_hide_self_sponsor_ads_summary_off">Εμφανίζονται</string> <string name="revanced_hide_self_sponsor_ads_summary_off">Εμφανίζονται</string>
<string name="revanced_hide_products_banner_title">Διαφημίσεις προβολής προϊόντων</string> <string name="revanced_hide_products_banner_title">Ετικέτα «Προβολή προϊόντων»</string>
<string name="revanced_hide_products_banner_summary_on">Κρυμμένες</string> <string name="revanced_hide_products_banner_summary_on">Κρυμμένες</string>
<string name="revanced_hide_products_banner_summary_off">Εμφανίζονται</string> <string name="revanced_hide_products_banner_summary_off">Εμφανίζονται</string>
<string name="revanced_hide_end_screen_store_banner_title">Ετικέτα καταστήματος στην τελική οθόνη</string> <string name="revanced_hide_end_screen_store_banner_title">Ετικέτα καταστήματος στην τελική οθόνη</string>
@@ -445,10 +445,10 @@ Second \"item\" text"</string>
<string name="revanced_share_copy_url_success">Η διεύθυνση URL αντιγράφηκε στο πρόχειρο</string> <string name="revanced_share_copy_url_success">Η διεύθυνση URL αντιγράφηκε στο πρόχειρο</string>
<string name="revanced_share_copy_url_timestamp_success">Η διεύθυνση URL αντιγράφηκε με χρονική σήμανση</string> <string name="revanced_share_copy_url_timestamp_success">Η διεύθυνση URL αντιγράφηκε με χρονική σήμανση</string>
<string name="revanced_copy_video_url_title">Εμφάνιση κουμπιού αντιγραφής URL του βίντεο</string> <string name="revanced_copy_video_url_title">Εμφάνιση κουμπιού αντιγραφής URL του βίντεο</string>
<string name="revanced_copy_video_url_summary_on">Το κουμπί εμφανίζεται. Πατήστε για αντιγραφή του συνδέσμου βίντεο ή πατήστε παρατεταμένα για αντιγραφή του συνδέσμου βίντεο με χρονική σήμανση</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">Το κουμπί δεν εμφανίζεται</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">Το κουμπί εμφανίζεται. Πατήστε για αντιγραφή του συνδέσμου βίντεο με χρονική σήμανση ή πατήστε παρατεταμένα για αντιγραφή του συνδέσμου βίντεο χωρίς χρονική σήμανση</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">Το κουμπί δεν εμφανίζεται</string>
</patch> </patch>
<patch id="interaction.dialog.removeViewerDiscretionDialogPatch"> <patch id="interaction.dialog.removeViewerDiscretionDialogPatch">
@@ -810,10 +810,13 @@ Second \"item\" text"</string>
<string name="revanced_hide_shorts_navigation_bar_summary_on">Η γραμμή πλοήγησης θα είναι κρυμμένη κατά την αναπαραγωγή Shorts</string> <string name="revanced_hide_shorts_navigation_bar_summary_on">Η γραμμή πλοήγησης θα είναι κρυμμένη κατά την αναπαραγωγή Shorts</string>
<string name="revanced_hide_shorts_navigation_bar_summary_off">Η γραμμή πλοήγησης εμφανίζεται κατά την αναπαραγωγή Shorts</string> <string name="revanced_hide_shorts_navigation_bar_summary_off">Η γραμμή πλοήγησης εμφανίζεται κατά την αναπαραγωγή Shorts</string>
</patch> </patch>
<patch id="layout.hide.suggestedvideoendscreen.disableSuggestedVideoEndScreenResourcePatch"> <patch id="layout.hide.endscreensuggestion.hideEndScreenSuggestedVideoPatch">
<string name="revanced_disable_suggested_video_end_screen_title">Τελική οθόνη προτεινόμενων βίντεο</string> <string name="revanced_end_screen_suggested_video_title">Προτεινόμενο βίντεο τελικής οθόνης</string>
<string name="revanced_disable_suggested_video_end_screen_summary_on">Κρυμμένη</string> <string name="revanced_end_screen_suggested_video_summary_on">"Κρυμμένο όταν η αυτόματη αναπαραγωγή είναι απενεργοποιημένη
<string name="revanced_disable_suggested_video_end_screen_summary_off">Εμφανίζεται</string>
Η αυτόματη αναπαραγωγή μπορεί να αλλαχτεί στις ρυθμίσεις YouTube:
Ρυθμίσεις → Αναπαραγωγή→ Αυτόματη αναπαραγωγή επόμενου βίντεο"</string>
<string name="revanced_end_screen_suggested_video_summary_off">Εμφανίζεται</string>
</patch> </patch>
<patch id="layout.hide.time.hideTimestampPatch"> <patch id="layout.hide.time.hideTimestampPatch">
<string name="revanced_hide_timestamp_title">Χρονική πρόοδος βίντεο</string> <string name="revanced_hide_timestamp_title">Χρονική πρόοδος βίντεο</string>
@@ -1114,16 +1117,14 @@ Second \"item\" text"</string>
<string name="revanced_change_form_factor_entry_2">Τηλέφωνο</string> <string name="revanced_change_form_factor_entry_2">Τηλέφωνο</string>
<string name="revanced_change_form_factor_entry_3">Ταμπλετ</string> <string name="revanced_change_form_factor_entry_3">Ταμπλετ</string>
<string name="revanced_change_form_factor_entry_4">Αυτοκίνητο</string> <string name="revanced_change_form_factor_entry_4">Αυτοκίνητο</string>
<string name="revanced_change_form_factor_user_dialog_message">"Οι αλλαγές στη διάταξη περιλαμβάνουν τα παρακάτω: <string name="revanced_change_form_factor_user_dialog_message">"Οι αλλαγές περιλαμβάνουν:
Διάταξη ταμπλετ Διάταξη tablet
Οι δημοσιεύσεις κοινότητας είναι κρυμμένες Οι αναρτήσεις κοινότητας είναι κρυφές
Διάταξη αυτοκινήτου Διάταξη αυτοκινήτου
Το μενού ιστορικού παρακολούθησης είναι κρυμμένο Τα Shorts ανοίγουν στην κανονική συσκευή αναπαραγωγής
Η καρτέλα «Εξερεύνηση» επαναφέρεται Η ροή οργανώνεται ανά θέματα και κανάλια"</string>
Τα Shorts ανοίγουν στην κανονική οθόνη αναπαραγωγής
• Η ροή οργανώνεται ανά θέματα και κανάλι"</string>
</patch> </patch>
<patch id="layout.spoofappversion.spoofAppVersionPatch"> <patch id="layout.spoofappversion.spoofAppVersionPatch">
<string name="revanced_spoof_app_version_title">Τροποποίηση έκδοσης εφαρμογής</string> <string name="revanced_spoof_app_version_title">Τροποποίηση έκδοσης εφαρμογής</string>
@@ -1193,15 +1194,15 @@ Second \"item\" text"</string>
</patch> </patch>
<patch id="layout.miniplayer.miniplayerPatch"> <patch id="layout.miniplayer.miniplayerPatch">
<string name="revanced_miniplayer_screen_title">Ελαχιστοποιημένη οθόνη αναπαραγωγής</string> <string name="revanced_miniplayer_screen_title">Ελαχιστοποιημένη οθόνη αναπαραγωγής</string>
<string name="revanced_miniplayer_screen_summary">Αλλάξτε το στυλ της ελαχιστοποιημένης οθόνης αναπαραγωγής</string> <string name="revanced_miniplayer_screen_summary">Αλλαγή του στυλ της ελαχιστοποιημένης οθόνης αναπαραγωγής της εφαρμογής</string>
<string name="revanced_miniplayer_type_title">Τύπος ελαχιστοποιημένης οθόνης αναπαραγωγής</string> <string name="revanced_miniplayer_type_title">Τύπος ελαχιστοποιημένης οθόνης αναπαραγωγής</string>
<string name="revanced_miniplayer_type_entry_0">Απενεργοποιημένη</string> <string name="revanced_miniplayer_type_entry_0">Απενεργοποιημένη</string>
<string name="revanced_miniplayer_type_entry_1">Προεπιλογή</string> <string name="revanced_miniplayer_type_entry_1">Προεπιλογή</string>
<string name="revanced_miniplayer_type_entry_2">Ελάχιστη</string> <string name="revanced_miniplayer_type_entry_2">Ελάχιστη</string>
<string name="revanced_miniplayer_type_entry_3">Ταμπλετ</string> <string name="revanced_miniplayer_type_entry_3">Ταμπλετ</string>
<string name="revanced_miniplayer_type_entry_4">Μοντέρνα 1</string> <string name="revanced_miniplayer_type_entry_4">Μοντέρνος 1</string>
<string name="revanced_miniplayer_type_entry_5">Μοντέρνα 2</string> <string name="revanced_miniplayer_type_entry_5">Μοντέρνος 2</string>
<string name="revanced_miniplayer_type_entry_6">Μοντέρνα 3</string> <string name="revanced_miniplayer_type_entry_6">Μοντέρνος 3</string>
<string name="revanced_miniplayer_rounded_corners_title">Στρογγυλεμένες γωνίες</string> <string name="revanced_miniplayer_rounded_corners_title">Στρογγυλεμένες γωνίες</string>
<string name="revanced_miniplayer_rounded_corners_summary_on">Οι γωνίες είναι στρογγυλεμένες</string> <string name="revanced_miniplayer_rounded_corners_summary_on">Οι γωνίες είναι στρογγυλεμένες</string>
<string name="revanced_miniplayer_rounded_corners_summary_off">Οι γωνίες είναι τετράγωνες</string> <string name="revanced_miniplayer_rounded_corners_summary_off">Οι γωνίες είναι τετράγωνες</string>
@@ -1337,8 +1338,8 @@ Second \"item\" text"</string>
</patch> </patch>
<patch id="misc.links.openLinksExternallyPatch"> <patch id="misc.links.openLinksExternallyPatch">
<string name="revanced_external_browser_title">Άνοιγμα συνδέσμων σε πρόγραμμα περιήγησης</string> <string name="revanced_external_browser_title">Άνοιγμα συνδέσμων σε πρόγραμμα περιήγησης</string>
<string name="revanced_external_browser_summary_on">Οι σύνδεσμοι ανοίγουν εξωτερικά</string> <string name="revanced_external_browser_summary_on">Οι σύνδεσμοι ανοίγουν σε εξωτερικό πρόγραμμα περιήγησης</string>
<string name="revanced_external_browser_summary_off">Οι σύνδεσμοι ανοίγουν εντός της εφαρμογής</string> <string name="revanced_external_browser_summary_off">Οι σύνδεσμοι ανοίγουν στο εσωτερικό πρόγραμμα περιήγησης της εφαρμογής</string>
</patch> </patch>
<patch id="misc.privacy.removeTrackingQueryParameterPatch"> <patch id="misc.privacy.removeTrackingQueryParameterPatch">
<string name="revanced_remove_tracking_query_parameter_title">Καθαρισμός συνδέσμων κοινοποίησης</string> <string name="revanced_remove_tracking_query_parameter_title">Καθαρισμός συνδέσμων κοινοποίησης</string>
@@ -1351,22 +1352,30 @@ Second \"item\" text"</string>
<string name="revanced_disable_zoom_haptics_summary_off">Η απόκριση δόνησης είναι ενεργοποιημένη</string> <string name="revanced_disable_zoom_haptics_summary_off">Η απόκριση δόνησης είναι ενεργοποιημένη</string>
</patch> </patch>
<patch id="video.audio.forceOriginalAudioPatch"> <patch id="video.audio.forceOriginalAudioPatch">
<string name="revanced_force_original_audio_title">Εξαναγκασμός αρχικού ήχου</string> <string name="revanced_force_original_audio_title">Εξαναγκασμός αρχικής γλώσσας ήχου</string>
<string name="revanced_force_original_audio_summary_on">Χρησιμοποιείται ο αρχικός ήχος</string> <string name="revanced_force_original_audio_summary_on">Χρησιμοποιείται η αρχική γλώσσα ήχου</string>
<string name="revanced_force_original_audio_summary_off">Χρησιμοποιείται ο προεπιλεγμένος ήχος</string> <string name="revanced_force_original_audio_summary_off">Χρησιμοποιείται ο προεπιλεγμένος ήχος</string>
<string name="revanced_force_original_audio_not_available">Για να χρησιμοποιήσετε αυτήν τη δυνατότητα, αλλάξτε τον τύπο παραποίησης ροών βίντεο σε iOS</string> <!-- 'Spoof video streams' should be the same translation used for revanced_spoof_video_streams_screen_title -->
<string name="revanced_force_original_audio_not_available">Για να χρησιμοποιήσετε αυτήν τη λειτουργία, αλλάξτε την επιλογή «Παραποίηση ροών βίντεο» σε iOS TV</string>
</patch> </patch>
<patch id="video.quality.rememberVideoQualityPatch"> <patch id="video.quality.rememberVideoQualityPatch">
<!-- Translations should use the same text as revanced_custom_playback_speeds_auto --> <!-- Translations should use the same text as revanced_custom_playback_speeds_auto -->
<string name="revanced_video_quality_screen_title">Ποιότητα βίντεο</string>
<string name="revanced_video_quality_default_entry_1">Αυτόματη</string> <string name="revanced_video_quality_default_entry_1">Αυτόματη</string>
<string name="revanced_remember_video_quality_last_selected_title">Απομνημόνευση αλλαγών ποιότητας βίντεο</string> <string name="revanced_remember_video_quality_last_selected_title">Απομνημόνευση αλλαγών ποιότητας βίντεο</string>
<string name="revanced_remember_video_quality_last_selected_summary_on">Οι αλλαγές ποιότητας ισχύουν για όλα τα βίντεο</string> <string name="revanced_remember_video_quality_last_selected_summary_on">Οι αλλαγές ποιότητας ισχύουν για όλα τα βίντεο</string>
<string name="revanced_remember_video_quality_last_selected_summary_off">Οι αλλαγές ποιότητας ισχύουν μόνο για το τρέχον βίντεο</string> <string name="revanced_remember_video_quality_last_selected_summary_off">Οι αλλαγές ποιότητας ισχύουν μόνο για το τρέχον βίντεο</string>
<string name="revanced_video_quality_default_wifi_title">Προεπιλεγμένη ποιότητα βίντεο με Wi-Fi</string> <string name="revanced_video_quality_default_wifi_title">Προεπιλεγμένη ποιότητα βίντεο με Wi-Fi</string>
<string name="revanced_video_quality_default_mobile_title">Προεπιλεγμένη ποιότητα βίντεο με δεδομένα κινητής τηλεφωνίας</string> <string name="revanced_video_quality_default_mobile_title">Προεπιλεγμένη ποιότητα βίντεο με δεδομένα κινητής τηλεφωνίας</string>
<string name="revanced_remember_shorts_quality_last_selected_title">Απομνημόνευση αλλαγών ποιότητας στα Shorts</string>
<string name="revanced_remember_shorts_quality_last_selected_summary_on">Οι αλλαγές ποιότητας ισχύουν για όλα τα βίντεο Shorts</string>
<string name="revanced_remember_shorts_quality_last_selected_summary_off">Οι αλλαγές ποιότητας ισχύουν μόνο για το τρέχον βίντεο Shorts</string>
<string name="revanced_shorts_quality_default_wifi_title">Προεπιλεγμένη ποιότητα Shorts σε δίκτυο Wi-Fi</string>
<string name="revanced_shorts_quality_default_mobile_title">Προεπιλεγμένη ποιότητα Shorts σε δίκτυο κινητής τηλεφωνίας</string>
<string name="revanced_remember_video_quality_mobile">δεδομένων</string> <string name="revanced_remember_video_quality_mobile">δεδομένων</string>
<string name="revanced_remember_video_quality_wifi">Wi-Fi</string> <string name="revanced_remember_video_quality_wifi">Wi-Fi</string>
<string name="revanced_remember_video_quality_toast">Η προεπιλεγμένη ποιότητα %1$s άλλαξε σε: %2$s</string> <string name="revanced_remember_video_quality_toast">Η προεπιλεγμένη ποιότητα %1$s άλλαξε σε: %2$s</string>
<string name="revanced_remember_video_quality_toast_shorts">Άλλαξε η ποιότητα των Shorts %1$s σε: %2$s</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>

View File

@@ -291,13 +291,13 @@ Para traducir nuevos idiomas, visita translate.revanced.app"</string>
<string name="revanced_hide_description_components_screen_title">Descripción del vídeo</string> <string name="revanced_hide_description_components_screen_title">Descripción del vídeo</string>
<string name="revanced_hide_description_components_screen_summary">Ocultar o mostrar componentes de descripción de vídeo</string> <string name="revanced_hide_description_components_screen_summary">Ocultar o mostrar componentes de descripción de vídeo</string>
<string name="revanced_hide_filter_bar_screen_title">Barra de filtros</string> <string name="revanced_hide_filter_bar_screen_title">Barra de filtros</string>
<string name="revanced_hide_filter_bar_screen_summary">Ocultar o mostrar la barra de filtros en el feed, la búsqueda y deos relacionados</string> <string name="revanced_hide_filter_bar_screen_summary">Ocultar o mostrar la barra de filtro en el feed, los resultados de búsqueda y los videos relacionados</string>
<string name="revanced_hide_filter_bar_feed_in_feed_title">Ocultar en el feed</string> <string name="revanced_hide_filter_bar_feed_in_feed_title">Ocultar en el feed</string>
<string name="revanced_hide_filter_bar_feed_in_feed_summary_on">Escondido en el feed</string> <string name="revanced_hide_filter_bar_feed_in_feed_summary_on">Escondido en el feed</string>
<string name="revanced_hide_filter_bar_feed_in_feed_summary_off">Mostrar en el feed</string> <string name="revanced_hide_filter_bar_feed_in_feed_summary_off">Mostrar en el feed</string>
<string name="revanced_hide_filter_bar_feed_in_search_title">Ocultar en búsqueda</string> <string name="revanced_hide_filter_bar_feed_in_search_title">Ocultar en los resultados de búsqueda</string>
<string name="revanced_hide_filter_bar_feed_in_search_summary_on">Oculto en la búsqueda</string> <string name="revanced_hide_filter_bar_feed_in_search_summary_on">Oculto en los resultados de búsqueda</string>
<string name="revanced_hide_filter_bar_feed_in_search_summary_off">Mostrar en búsqueda</string> <string name="revanced_hide_filter_bar_feed_in_search_summary_off">Mostrado en los resultados de búsqueda</string>
<string name="revanced_hide_filter_bar_feed_in_related_videos_title">Ocultar en vídeos relacionados</string> <string name="revanced_hide_filter_bar_feed_in_related_videos_title">Ocultar en vídeos relacionados</string>
<string name="revanced_hide_filter_bar_feed_in_related_videos_summary_on">Escondido en videos relacionados</string> <string name="revanced_hide_filter_bar_feed_in_related_videos_summary_on">Escondido en videos relacionados</string>
<string name="revanced_hide_filter_bar_feed_in_related_videos_summary_off">Mostrar en vídeos relacionados</string> <string name="revanced_hide_filter_bar_feed_in_related_videos_summary_off">Mostrar en vídeos relacionados</string>
@@ -394,7 +394,7 @@ Esta función solo está disponible para dispositivos antiguos"</string>
<string name="revanced_hide_self_sponsor_ads_title">Ocultar tarjetas autopatrocinadas</string> <string name="revanced_hide_self_sponsor_ads_title">Ocultar tarjetas autopatrocinadas</string>
<string name="revanced_hide_self_sponsor_ads_summary_on">Las tarjetas autopatrocinadas están ocultas</string> <string name="revanced_hide_self_sponsor_ads_summary_on">Las tarjetas autopatrocinadas están ocultas</string>
<string name="revanced_hide_self_sponsor_ads_summary_off">Se muestran las tarjetas autopatrocinadas</string> <string name="revanced_hide_self_sponsor_ads_summary_off">Se muestran las tarjetas autopatrocinadas</string>
<string name="revanced_hide_products_banner_title">Ocultar banner para ver los productos</string> <string name="revanced_hide_products_banner_title">Ocultar el banner \"Ver productos\"</string>
<string name="revanced_hide_products_banner_summary_on">Banner oculto</string> <string name="revanced_hide_products_banner_summary_on">Banner oculto</string>
<string name="revanced_hide_products_banner_summary_off">Banner mostrado</string> <string name="revanced_hide_products_banner_summary_off">Banner mostrado</string>
<string name="revanced_hide_end_screen_store_banner_title">Ocultar banner de la tienda en la pantalla final</string> <string name="revanced_hide_end_screen_store_banner_title">Ocultar banner de la tienda en la pantalla final</string>
@@ -433,10 +433,10 @@ 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. Toque para copiar la URL del vídeo. Mantenga pulsado para copiar la URL del vídeo con la marca de tiempo</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_off">El botón no se muestra</string> <string name="revanced_copy_video_url_summary_off">El botón no se muestra</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. Toque para copiar la URL del vídeo con la marca de tiempo. Toque y mantenga pulsado para copiar el vídeo sin 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_off">El botón no se muestra</string> <string name="revanced_copy_video_url_timestamp_summary_off">El botón no se muestra</string>
</patch> </patch>
<patch id="interaction.dialog.removeViewerDiscretionDialogPatch"> <patch id="interaction.dialog.removeViewerDiscretionDialogPatch">
@@ -653,7 +653,7 @@ Si cambiar este ajuste no tiene efecto, intenta cambiar al modo incógnito."</st
<string name="revanced_hide_player_flyout_video_quality_footer_summary_off">El pie del menú de calidad de vídeo se muestra</string> <string name="revanced_hide_player_flyout_video_quality_footer_summary_off">El pie del menú de calidad de vídeo se muestra</string>
</patch> </patch>
<patch id="layout.buttons.overlay.hidePlayerOverlayButtonsPatch"> <patch id="layout.buttons.overlay.hidePlayerOverlayButtonsPatch">
<string name="revanced_hide_player_previous_next_buttons_title">Ocultar botones de vídeo anteriores &amp; siguiente</string> <string name="revanced_hide_player_previous_next_buttons_title">Ocultar botones Anterior &amp; Siguiente</string>
<string name="revanced_hide_player_previous_next_buttons_summary_on">Los botones están ocultos</string> <string name="revanced_hide_player_previous_next_buttons_summary_on">Los botones están ocultos</string>
<string name="revanced_hide_player_previous_next_buttons_summary_off">Los botones se muestran</string> <string name="revanced_hide_player_previous_next_buttons_summary_off">Los botones se muestran</string>
<string name="revanced_hide_cast_button_title">Ocultar el botón Transmitir</string> <string name="revanced_hide_cast_button_title">Ocultar el botón Transmitir</string>
@@ -798,10 +798,13 @@ Si cambiar este ajuste no tiene efecto, intenta cambiar al modo incógnito."</st
<string name="revanced_hide_shorts_navigation_bar_summary_on">Barra de navegación oculta</string> <string name="revanced_hide_shorts_navigation_bar_summary_on">Barra de navegación oculta</string>
<string name="revanced_hide_shorts_navigation_bar_summary_off">Se muestra la barra de navegación</string> <string name="revanced_hide_shorts_navigation_bar_summary_off">Se muestra la barra de navegación</string>
</patch> </patch>
<patch id="layout.hide.suggestedvideoendscreen.disableSuggestedVideoEndScreenResourcePatch"> <patch id="layout.hide.endscreensuggestion.hideEndScreenSuggestedVideoPatch">
<string name="revanced_disable_suggested_video_end_screen_title">Desactivar pantalla de final de vídeo sugerida</string> <string name="revanced_end_screen_suggested_video_title">Ocultar el vídeo sugerido de la pantalla final</string>
<string name="revanced_disable_suggested_video_end_screen_summary_on">Vídeos sugeridos serán desactivados</string> <string name="revanced_end_screen_suggested_video_summary_on">"El vídeo sugerido de la pantalla final se oculta cuando la reproducción automática está desactivada
<string name="revanced_disable_suggested_video_end_screen_summary_off">Se mostrarán vídeos sugeridos</string>
La reproducción automática se puede cambiar en la configuración de YouTube:
Configuración → Reproducción → Reproducir el siguiente vídeo automáticamente"</string>
<string name="revanced_end_screen_suggested_video_summary_off">Se muestra el vídeo sugerido de la pantalla final</string>
</patch> </patch>
<patch id="layout.hide.time.hideTimestampPatch"> <patch id="layout.hide.time.hideTimestampPatch">
<string name="revanced_hide_timestamp_title">Ocultar fecha y hora de vídeo</string> <string name="revanced_hide_timestamp_title">Ocultar fecha y hora de vídeo</string>
@@ -1100,10 +1103,8 @@ Diseño para tablets
• Las publicaciones de la comunidad están ocultas • Las publicaciones de la comunidad están ocultas
Diseño para automóviles Diseño para automóviles
El menú del historial de reproducciones está oculto Los Shorts se abren en el reproductor normal
Se restauró la pestaña de Explorar El feed está organizado por temas y canales"</string>
• Se abren los Shorts en el reproductor normal
• El feed está organizado por temas y canal"</string>
</patch> </patch>
<patch id="layout.spoofappversion.spoofAppVersionPatch"> <patch id="layout.spoofappversion.spoofAppVersionPatch">
<string name="revanced_spoof_app_version_title">Versión de la aplicación Spoof</string> <string name="revanced_spoof_app_version_title">Versión de la aplicación Spoof</string>
@@ -1173,7 +1174,7 @@ Si se desactiva posteriormente, se recomienda borrar los datos de la aplicación
</patch> </patch>
<patch id="layout.miniplayer.miniplayerPatch"> <patch id="layout.miniplayer.miniplayerPatch">
<string name="revanced_miniplayer_screen_title">Minireproductor</string> <string name="revanced_miniplayer_screen_title">Minireproductor</string>
<string name="revanced_miniplayer_screen_summary">Cambiar el estilo del reproductor minimizado de la aplicación</string> <string name="revanced_miniplayer_screen_summary">Cambiar el estilo del reproductor minimizado en la aplicación</string>
<string name="revanced_miniplayer_type_title">Tipo de minreproductor</string> <string name="revanced_miniplayer_type_title">Tipo de minreproductor</string>
<string name="revanced_miniplayer_type_entry_0">Desactivado</string> <string name="revanced_miniplayer_type_entry_0">Desactivado</string>
<string name="revanced_miniplayer_type_entry_1">Predeterminado</string> <string name="revanced_miniplayer_type_entry_1">Predeterminado</string>
@@ -1319,8 +1320,8 @@ Habilitar esto puede desbloquear calidades de vídeo más altas"</string>
</patch> </patch>
<patch id="misc.links.openLinksExternallyPatch"> <patch id="misc.links.openLinksExternallyPatch">
<string name="revanced_external_browser_title">Abrir enlaces en el navegador</string> <string name="revanced_external_browser_title">Abrir enlaces en el navegador</string>
<string name="revanced_external_browser_summary_on">Abriendo enlaces externamente</string> <string name="revanced_external_browser_summary_on">Abrir enlaces en el navegador externo</string>
<string name="revanced_external_browser_summary_off">Abrir enlaces en la aplicación</string> <string name="revanced_external_browser_summary_off">Abrir enlaces en el navegador integrado en la aplicación</string>
</patch> </patch>
<patch id="misc.privacy.removeTrackingQueryParameterPatch"> <patch id="misc.privacy.removeTrackingQueryParameterPatch">
<string name="revanced_remove_tracking_query_parameter_title">Quitar parámetro de consulta de rastreo</string> <string name="revanced_remove_tracking_query_parameter_title">Quitar parámetro de consulta de rastreo</string>
@@ -1333,22 +1334,30 @@ Habilitar esto puede desbloquear calidades de vídeo más altas"</string>
<string name="revanced_disable_zoom_haptics_summary_off">Haptics están habilitados</string> <string name="revanced_disable_zoom_haptics_summary_off">Haptics están habilitados</string>
</patch> </patch>
<patch id="video.audio.forceOriginalAudioPatch"> <patch id="video.audio.forceOriginalAudioPatch">
<string name="revanced_force_original_audio_title">Forzar audio original</string> <string name="revanced_force_original_audio_title">Forzar idioma de audio original</string>
<string name="revanced_force_original_audio_summary_on">Utilizando audio original</string> <string name="revanced_force_original_audio_summary_on">Usar el idioma de audio original</string>
<string name="revanced_force_original_audio_summary_off">Utilizando audio predeterminado</string> <string name="revanced_force_original_audio_summary_off">Utilizando audio predeterminado</string>
<string name="revanced_force_original_audio_not_available">Para usar esta función, cambia la suplantación de stream al tipo de cliente iOS</string> <!-- 'Spoof video streams' should be the same translation used for revanced_spoof_video_streams_screen_title -->
<string name="revanced_force_original_audio_not_available">Para usar esta función, cambia \"Suplantar transmisiones de video\" a iOS TV</string>
</patch> </patch>
<patch id="video.quality.rememberVideoQualityPatch"> <patch id="video.quality.rememberVideoQualityPatch">
<!-- Translations should use the same text as revanced_custom_playback_speeds_auto --> <!-- Translations should use the same text as revanced_custom_playback_speeds_auto -->
<string name="revanced_video_quality_screen_title">Calidad de video</string>
<string name="revanced_video_quality_default_entry_1">Automático</string> <string name="revanced_video_quality_default_entry_1">Automático</string>
<string name="revanced_remember_video_quality_last_selected_title">Recordar cambios de calidad de vídeo</string> <string name="revanced_remember_video_quality_last_selected_title">Recordar cambios de calidad de vídeo</string>
<string name="revanced_remember_video_quality_last_selected_summary_on">Los cambios de calidad se aplican a todos los vídeos</string> <string name="revanced_remember_video_quality_last_selected_summary_on">Los cambios de calidad se aplican a todos los vídeos</string>
<string name="revanced_remember_video_quality_last_selected_summary_off">Los cambios de calidad sólo se aplican al vídeo actual</string> <string name="revanced_remember_video_quality_last_selected_summary_off">Los cambios de calidad sólo se aplican al vídeo actual</string>
<string name="revanced_video_quality_default_wifi_title">Calidad de vídeo predeterminada en la red Wi-Fi</string> <string name="revanced_video_quality_default_wifi_title">Calidad de vídeo predeterminada en la red Wi-Fi</string>
<string name="revanced_video_quality_default_mobile_title">Calidad de vídeo predeterminada en la red móvil</string> <string name="revanced_video_quality_default_mobile_title">Calidad de vídeo predeterminada en la red móvil</string>
<string name="revanced_remember_shorts_quality_last_selected_title">Recordar cambios en la calidad de Shorts</string>
<string name="revanced_remember_shorts_quality_last_selected_summary_on">Los cambios de calidad se aplican a todos los videos de Shorts</string>
<string name="revanced_remember_shorts_quality_last_selected_summary_off">Los cambios de calidad solo se aplican al video de Shorts actual</string>
<string name="revanced_shorts_quality_default_wifi_title">Calidad predeterminada de Shorts en la red Wi-Fi</string>
<string name="revanced_shorts_quality_default_mobile_title">Calidad predeterminada de Shorts en la red móvil</string>
<string name="revanced_remember_video_quality_mobile">móvil</string> <string name="revanced_remember_video_quality_mobile">móvil</string>
<string name="revanced_remember_video_quality_wifi">wifi</string> <string name="revanced_remember_video_quality_wifi">wifi</string>
<string name="revanced_remember_video_quality_toast">Cambió la calidad predeterminada %1$s a: %2$s</string> <string name="revanced_remember_video_quality_toast">Cambió la calidad predeterminada %1$s a: %2$s</string>
<string name="revanced_remember_video_quality_toast_shorts">Calidad de Shorts %1$s cambiada a: %2$s</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>

View File

@@ -301,13 +301,13 @@ Teid ei teavitata ühestki ootamatust sündmusest."</string>
<string name="revanced_hide_description_components_screen_title">Video kirjeldus</string> <string name="revanced_hide_description_components_screen_title">Video kirjeldus</string>
<string name="revanced_hide_description_components_screen_summary">Peida videokirjelduse komponendid või kuva need</string> <string name="revanced_hide_description_components_screen_summary">Peida videokirjelduse komponendid või kuva need</string>
<string name="revanced_hide_filter_bar_screen_title">Filtriseriba</string> <string name="revanced_hide_filter_bar_screen_title">Filtriseriba</string>
<string name="revanced_hide_filter_bar_screen_summary">Peida ja kuva filtririba söötes, otsingus ja seotud videotes</string> <string name="revanced_hide_filter_bar_screen_summary">Peida või näita filtripaneeli voos, otsingutulemustes ja seotud videotes</string>
<string name="revanced_hide_filter_bar_feed_in_feed_title">Peida söötes</string> <string name="revanced_hide_filter_bar_feed_in_feed_title">Peida söötes</string>
<string name="revanced_hide_filter_bar_feed_in_feed_summary_on">Peidetud söötes</string> <string name="revanced_hide_filter_bar_feed_in_feed_summary_on">Peidetud söötes</string>
<string name="revanced_hide_filter_bar_feed_in_feed_summary_off">Näidatud söötes</string> <string name="revanced_hide_filter_bar_feed_in_feed_summary_off">Näidatud söötes</string>
<string name="revanced_hide_filter_bar_feed_in_search_title">Peida otsingus</string> <string name="revanced_hide_filter_bar_feed_in_search_title">Peida otsingutulemustes</string>
<string name="revanced_hide_filter_bar_feed_in_search_summary_on">Peidetud otsingus</string> <string name="revanced_hide_filter_bar_feed_in_search_summary_on">Peidetud otsingutulemustes</string>
<string name="revanced_hide_filter_bar_feed_in_search_summary_off">Näidatakse otsingus</string> <string name="revanced_hide_filter_bar_feed_in_search_summary_off">Kuvatakse otsingutulemustes</string>
<string name="revanced_hide_filter_bar_feed_in_related_videos_title">Peida seotud videotes</string> <string name="revanced_hide_filter_bar_feed_in_related_videos_title">Peida seotud videotes</string>
<string name="revanced_hide_filter_bar_feed_in_related_videos_summary_on">Peidetud seotud videotes</string> <string name="revanced_hide_filter_bar_feed_in_related_videos_summary_on">Peidetud seotud videotes</string>
<string name="revanced_hide_filter_bar_feed_in_related_videos_summary_off">Näidatakse seotud videotes</string> <string name="revanced_hide_filter_bar_feed_in_related_videos_summary_off">Näidatakse seotud videotes</string>
@@ -404,7 +404,7 @@ See funktsioon on saadaval ainult vanemates seadmetes"</string>
<string name="revanced_hide_self_sponsor_ads_title">Peida ise-sponsoritud kaardid</string> <string name="revanced_hide_self_sponsor_ads_title">Peida ise-sponsoritud kaardid</string>
<string name="revanced_hide_self_sponsor_ads_summary_on">Ise-sponsoritud kaardid on peidus</string> <string name="revanced_hide_self_sponsor_ads_summary_on">Ise-sponsoritud kaardid on peidus</string>
<string name="revanced_hide_self_sponsor_ads_summary_off">Ise-sponsoritud kaardid on näidatud</string> <string name="revanced_hide_self_sponsor_ads_summary_off">Ise-sponsoritud kaardid on näidatud</string>
<string name="revanced_hide_products_banner_title">Peida bänner näha tooteid</string> <string name="revanced_hide_products_banner_title">Peida bänner „Vaata tooteid</string>
<string name="revanced_hide_products_banner_summary_on">Bänner on peidetud</string> <string name="revanced_hide_products_banner_summary_on">Bänner on peidetud</string>
<string name="revanced_hide_products_banner_summary_off">Bänner on nähtav</string> <string name="revanced_hide_products_banner_summary_off">Bänner on nähtav</string>
<string name="revanced_hide_end_screen_store_banner_title">Peida lõpuekraani poe bänner</string> <string name="revanced_hide_end_screen_store_banner_title">Peida lõpuekraani poe bänner</string>
@@ -443,10 +443,10 @@ 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">Nupud on näha. Koputage video URL-i kopeerimiseks. Koputage ja hoidke video URL-i ajatempliga kopeerimiseks</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_off">Nupud ei ole näha</string> <string name="revanced_copy_video_url_summary_off">Nupud ei ole näha</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">Nupud on näha. Koputage video URL-i ajatempliga kopeerimiseks. Koputage ja hoidke video kopeerimiseks ilma ajatempli</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_off">Nupud ei ole näha</string> <string name="revanced_copy_video_url_timestamp_summary_off">Nupud ei ole näha</string>
</patch> </patch>
<patch id="interaction.dialog.removeViewerDiscretionDialogPatch"> <patch id="interaction.dialog.removeViewerDiscretionDialogPatch">
@@ -663,7 +663,7 @@ Kui selle sätte muutmine ei avalda mõju, proovige lülituda Inkognito režiimi
<string name="revanced_hide_player_flyout_video_quality_footer_summary_off">Video kvaliteedi menüü jalg on nähtav</string> <string name="revanced_hide_player_flyout_video_quality_footer_summary_off">Video kvaliteedi menüü jalg on nähtav</string>
</patch> </patch>
<patch id="layout.buttons.overlay.hidePlayerOverlayButtonsPatch"> <patch id="layout.buttons.overlay.hidePlayerOverlayButtonsPatch">
<string name="revanced_hide_player_previous_next_buttons_title">Peida eelmine &amp; järgmine video nupp</string> <string name="revanced_hide_player_previous_next_buttons_title">Peida eelmine &amp; järgmine nupp</string>
<string name="revanced_hide_player_previous_next_buttons_summary_on">Nupud on peidetud</string> <string name="revanced_hide_player_previous_next_buttons_summary_on">Nupud on peidetud</string>
<string name="revanced_hide_player_previous_next_buttons_summary_off">Nupud on nähtavad</string> <string name="revanced_hide_player_previous_next_buttons_summary_off">Nupud on nähtavad</string>
<string name="revanced_hide_cast_button_title">Peida Saada kätte nupp</string> <string name="revanced_hide_cast_button_title">Peida Saada kätte nupp</string>
@@ -808,10 +808,13 @@ Kui selle sätte muutmine ei avalda mõju, proovige lülituda Inkognito režiimi
<string name="revanced_hide_shorts_navigation_bar_summary_on">Navigeerimisriba on peidetud</string> <string name="revanced_hide_shorts_navigation_bar_summary_on">Navigeerimisriba on peidetud</string>
<string name="revanced_hide_shorts_navigation_bar_summary_off">Navigeerimisriba on nähtav</string> <string name="revanced_hide_shorts_navigation_bar_summary_off">Navigeerimisriba on nähtav</string>
</patch> </patch>
<patch id="layout.hide.suggestedvideoendscreen.disableSuggestedVideoEndScreenResourcePatch"> <patch id="layout.hide.endscreensuggestion.hideEndScreenSuggestedVideoPatch">
<string name="revanced_disable_suggested_video_end_screen_title">Keela soovitatud video lõpueri</string> <string name="revanced_end_screen_suggested_video_title">Peida lõpuekraani soovitatud video</string>
<string name="revanced_disable_suggested_video_end_screen_summary_on">Soovitatud videod keelatakse</string> <string name="revanced_end_screen_suggested_video_summary_on">"Lõpuekraani soovitatud video on peidetud, kui automaatesitus on välja lülitatud.
<string name="revanced_disable_suggested_video_end_screen_summary_off">Soovitatud videod on nähtavad</string>
Automaatesitust saab muuta YouTube'i seadetes:
Seaded → Taasesitus → Esita järgmine video automaatselt"</string>
<string name="revanced_end_screen_suggested_video_summary_off">Lõpuekraani soovitatud video on näidatud</string>
</patch> </patch>
<patch id="layout.hide.time.hideTimestampPatch"> <patch id="layout.hide.time.hideTimestampPatch">
<string name="revanced_hide_timestamp_title">Peida video ajamärk</string> <string name="revanced_hide_timestamp_title">Peida video ajamärk</string>
@@ -1116,13 +1119,11 @@ Kas olete esitamiseks valmis?"</string>
<string name="revanced_change_form_factor_user_dialog_message">"Muudatused hõlmavad: <string name="revanced_change_form_factor_user_dialog_message">"Muudatused hõlmavad:
Tahvelarvuti paigutus Tahvelarvuti paigutus
Ühenduse postitused on peidetud Kogukonna postitused on peidetud
Automotiivi paigutus Autode paigutus
• Vaatamisloendi menüü on peidetud
• Uudista vaheleht on taastatud
• Shorts avanevad tavalises pleieris • Shorts avanevad tavalises pleieris
Sööt on korraldatud teemade ja kanalite kaupa"</string> Voog on korraldatud teemade ja kanalite järgi"</string>
</patch> </patch>
<patch id="layout.spoofappversion.spoofAppVersionPatch"> <patch id="layout.spoofappversion.spoofAppVersionPatch">
<string name="revanced_spoof_app_version_title">Võltsitud rakenduse versioon</string> <string name="revanced_spoof_app_version_title">Võltsitud rakenduse versioon</string>
@@ -1192,7 +1193,7 @@ Kui see hiljem välja lülitatakse, on soovitatav rakenduse andmed kustutada, et
</patch> </patch>
<patch id="layout.miniplayer.miniplayerPatch"> <patch id="layout.miniplayer.miniplayerPatch">
<string name="revanced_miniplayer_screen_title">Minimängija</string> <string name="revanced_miniplayer_screen_title">Minimängija</string>
<string name="revanced_miniplayer_screen_summary">Muuda rakenduses minimeeritud esitaja stiili</string> <string name="revanced_miniplayer_screen_summary">Muuda rakendusesisese minipleieri stiili</string>
<string name="revanced_miniplayer_type_title">Miniplayeri tüüp</string> <string name="revanced_miniplayer_type_title">Miniplayeri tüüp</string>
<string name="revanced_miniplayer_type_entry_0">Väljas</string> <string name="revanced_miniplayer_type_entry_0">Väljas</string>
<string name="revanced_miniplayer_type_entry_1">Vaikimisi</string> <string name="revanced_miniplayer_type_entry_1">Vaikimisi</string>
@@ -1338,8 +1339,8 @@ Selle lubamine võib avada kõrgema video kvaliteedi"</string>
</patch> </patch>
<patch id="misc.links.openLinksExternallyPatch"> <patch id="misc.links.openLinksExternallyPatch">
<string name="revanced_external_browser_title">Ava lingid brauseris</string> <string name="revanced_external_browser_title">Ava lingid brauseris</string>
<string name="revanced_external_browser_summary_on">Lingid avatakse välistel</string> <string name="revanced_external_browser_summary_on">Linkide avamine välises brauseris</string>
<string name="revanced_external_browser_summary_off">Lingid avatakse rakenduses</string> <string name="revanced_external_browser_summary_off">Linkide avamine rakendusesiseses brauseris</string>
</patch> </patch>
<patch id="misc.privacy.removeTrackingQueryParameterPatch"> <patch id="misc.privacy.removeTrackingQueryParameterPatch">
<string name="revanced_remove_tracking_query_parameter_title">Eemalda jälgimise päringuparameeter</string> <string name="revanced_remove_tracking_query_parameter_title">Eemalda jälgimise päringuparameeter</string>
@@ -1352,22 +1353,30 @@ Selle lubamine võib avada kõrgema video kvaliteedi"</string>
<string name="revanced_disable_zoom_haptics_summary_off">Hääled on lubatud</string> <string name="revanced_disable_zoom_haptics_summary_off">Hääled on lubatud</string>
</patch> </patch>
<patch id="video.audio.forceOriginalAudioPatch"> <patch id="video.audio.forceOriginalAudioPatch">
<string name="revanced_force_original_audio_title">Sunni originaalheli</string> <string name="revanced_force_original_audio_title">Sunni originaalheli keel</string>
<string name="revanced_force_original_audio_summary_on">Kasutatakse originaalheli</string> <string name="revanced_force_original_audio_summary_on">Algse helikeele kasutamine</string>
<string name="revanced_force_original_audio_summary_off">Kasutan vaikeheli</string> <string name="revanced_force_original_audio_summary_off">Kasutan vaikeheli</string>
<string name="revanced_force_original_audio_not_available">Selle funktsiooni kasutamiseks muutke voo esindamine iOS-i kliendi tüübiks</string> <!-- 'Spoof video streams' should be the same translation used for revanced_spoof_video_streams_screen_title -->
<string name="revanced_force_original_audio_not_available">Selle funktsiooni kasutamiseks muuda valik „Pettemanööver videovoogudele” iOS TV peale</string>
</patch> </patch>
<patch id="video.quality.rememberVideoQualityPatch"> <patch id="video.quality.rememberVideoQualityPatch">
<!-- Translations should use the same text as revanced_custom_playback_speeds_auto --> <!-- Translations should use the same text as revanced_custom_playback_speeds_auto -->
<string name="revanced_video_quality_screen_title">Video kvaliteet</string>
<string name="revanced_video_quality_default_entry_1">Automaatne</string> <string name="revanced_video_quality_default_entry_1">Automaatne</string>
<string name="revanced_remember_video_quality_last_selected_title">Määle video kvaliteedi muudatused meelde</string> <string name="revanced_remember_video_quality_last_selected_title">Määle video kvaliteedi muudatused meelde</string>
<string name="revanced_remember_video_quality_last_selected_summary_on">Kvaliteedi muudatused kehtivad kõigile videotele</string> <string name="revanced_remember_video_quality_last_selected_summary_on">Kvaliteedi muudatused kehtivad kõigile videotele</string>
<string name="revanced_remember_video_quality_last_selected_summary_off">Kvaliteedi muudatused kehtivad ainult praegusele videole</string> <string name="revanced_remember_video_quality_last_selected_summary_off">Kvaliteedi muudatused kehtivad ainult praegusele videole</string>
<string name="revanced_video_quality_default_wifi_title">Vaikimisi video kvaliteet Wi-Fi võrgus</string> <string name="revanced_video_quality_default_wifi_title">Vaikimisi video kvaliteet Wi-Fi võrgus</string>
<string name="revanced_video_quality_default_mobile_title">Vaikimisi video kvaliteet mobiilsidevõrgus</string> <string name="revanced_video_quality_default_mobile_title">Vaikimisi video kvaliteet mobiilsidevõrgus</string>
<string name="revanced_remember_shorts_quality_last_selected_title">Jäta meelde Shorts\'i kvaliteedimuudatused</string>
<string name="revanced_remember_shorts_quality_last_selected_summary_on">Kvaliteedi muudatused kehtivad kõikidele [Shorts] videotele</string>
<string name="revanced_remember_shorts_quality_last_selected_summary_off">Kvaliteedi muudatused kehtivad ainult praegusele [Shorts] videole</string>
<string name="revanced_shorts_quality_default_wifi_title">Vaikimisi [Shorts] kvaliteet WiFi võrgus</string>
<string name="revanced_shorts_quality_default_mobile_title">Vaikimisi [Shorts] kvaliteet mobiilivõrgus</string>
<string name="revanced_remember_video_quality_mobile">mobiil</string> <string name="revanced_remember_video_quality_mobile">mobiil</string>
<string name="revanced_remember_video_quality_wifi">wifi</string> <string name="revanced_remember_video_quality_wifi">wifi</string>
<string name="revanced_remember_video_quality_toast">Vaikimisi %1$s kvaliteet muudeti: %2$s</string> <string name="revanced_remember_video_quality_toast">Vaikimisi %1$s kvaliteet muudeti: %2$s</string>
<string name="revanced_remember_video_quality_toast_shorts">Muudetud Shorts %1$s kvaliteet: %2$s</string>
</patch> </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>

View File

@@ -130,7 +130,7 @@ Second \"item\" text"</string>
<!-- 'remix' should be translated using the same localized wording YouTube displays for the button. --> <!-- 'remix' should be translated using the same localized wording YouTube displays for the button. -->
<!-- 'share' should be translated using the same localized wording YouTube displays for the button. --> <!-- 'share' should be translated using the same localized wording YouTube displays for the button. -->
</patch> </patch>
<patch id="layout.hide.suggestedvideoendscreen.disableSuggestedVideoEndScreenResourcePatch"> <patch id="layout.hide.endscreensuggestion.hideEndScreenSuggestedVideoPatch">
</patch> </patch>
<patch id="layout.hide.time.hideTimestampPatch"> <patch id="layout.hide.time.hideTimestampPatch">
</patch> </patch>
@@ -206,6 +206,7 @@ Second \"item\" text"</string>
<patch id="misc.zoomhaptics.zoomHapticsPatch"> <patch id="misc.zoomhaptics.zoomHapticsPatch">
</patch> </patch>
<patch id="video.audio.forceOriginalAudioPatch"> <patch id="video.audio.forceOriginalAudioPatch">
<!-- 'Spoof video streams' should be the same translation used for revanced_spoof_video_streams_screen_title -->
</patch> </patch>
<patch id="video.quality.rememberVideoQualityPatch"> <patch id="video.quality.rememberVideoQualityPatch">
<!-- Translations should use the same text as revanced_custom_playback_speeds_auto --> <!-- Translations should use the same text as revanced_custom_playback_speeds_auto -->

View File

@@ -130,7 +130,7 @@ Second \"item\" text"</string>
<!-- 'remix' should be translated using the same localized wording YouTube displays for the button. --> <!-- 'remix' should be translated using the same localized wording YouTube displays for the button. -->
<!-- 'share' should be translated using the same localized wording YouTube displays for the button. --> <!-- 'share' should be translated using the same localized wording YouTube displays for the button. -->
</patch> </patch>
<patch id="layout.hide.suggestedvideoendscreen.disableSuggestedVideoEndScreenResourcePatch"> <patch id="layout.hide.endscreensuggestion.hideEndScreenSuggestedVideoPatch">
</patch> </patch>
<patch id="layout.hide.time.hideTimestampPatch"> <patch id="layout.hide.time.hideTimestampPatch">
</patch> </patch>
@@ -206,6 +206,7 @@ Second \"item\" text"</string>
<patch id="misc.zoomhaptics.zoomHapticsPatch"> <patch id="misc.zoomhaptics.zoomHapticsPatch">
</patch> </patch>
<patch id="video.audio.forceOriginalAudioPatch"> <patch id="video.audio.forceOriginalAudioPatch">
<!-- 'Spoof video streams' should be the same translation used for revanced_spoof_video_streams_screen_title -->
</patch> </patch>
<patch id="video.quality.rememberVideoQualityPatch"> <patch id="video.quality.rememberVideoQualityPatch">
<!-- Translations should use the same text as revanced_custom_playback_speeds_auto --> <!-- Translations should use the same text as revanced_custom_playback_speeds_auto -->

View File

@@ -284,6 +284,9 @@ Et saa ilmoituksia odottamattomista tapahtumista."</string>
<string name="revanced_hide_how_this_was_made_section_title">Piilota \"Miten sisältö on luotu\"</string> <string name="revanced_hide_how_this_was_made_section_title">Piilota \"Miten sisältö on luotu\"</string>
<string name="revanced_hide_how_this_was_made_section_summary_on">Miten sisältö on luotu -osio on piilotettu</string> <string name="revanced_hide_how_this_was_made_section_summary_on">Miten sisältö on luotu -osio on piilotettu</string>
<string name="revanced_hide_how_this_was_made_section_summary_off">Miten sisältö on luotu -osio näytetään</string> <string name="revanced_hide_how_this_was_made_section_summary_off">Miten sisältö on luotu -osio näytetään</string>
<string name="revanced_hide_podcast_section_title">Piilota \"Tutustu podcastiin\"</string>
<string name="revanced_hide_podcast_section_summary_on">Tutustu podcastiin -osio on piilotettu</string>
<string name="revanced_hide_podcast_section_summary_off">Tutustu podcastiin -osio näytetään</string>
<string name="revanced_hide_info_cards_section_title">Piilota tietokortit</string> <string name="revanced_hide_info_cards_section_title">Piilota tietokortit</string>
<string name="revanced_hide_info_cards_section_summary_on">Infokortit-osio on piilotettu</string> <string name="revanced_hide_info_cards_section_summary_on">Infokortit-osio on piilotettu</string>
<string name="revanced_hide_info_cards_section_summary_off">Infokortit-osio näytetään</string> <string name="revanced_hide_info_cards_section_summary_off">Infokortit-osio näytetään</string>
@@ -300,9 +303,9 @@ Et saa ilmoituksia odottamattomista tapahtumista."</string>
<string name="revanced_hide_filter_bar_feed_in_feed_title">Piilota syötteessä</string> <string name="revanced_hide_filter_bar_feed_in_feed_title">Piilota syötteessä</string>
<string name="revanced_hide_filter_bar_feed_in_feed_summary_on">Piilotettu syötteessä</string> <string name="revanced_hide_filter_bar_feed_in_feed_summary_on">Piilotettu syötteessä</string>
<string name="revanced_hide_filter_bar_feed_in_feed_summary_off">Näytetään syötteessä</string> <string name="revanced_hide_filter_bar_feed_in_feed_summary_off">Näytetään syötteessä</string>
<string name="revanced_hide_filter_bar_feed_in_search_title">Piilota haussa</string> <string name="revanced_hide_filter_bar_feed_in_search_title">Piilota hakutuloksissa</string>
<string name="revanced_hide_filter_bar_feed_in_search_summary_on">Piilotettu haussa</string> <string name="revanced_hide_filter_bar_feed_in_search_summary_on">Piilotettu hakutuloksissa</string>
<string name="revanced_hide_filter_bar_feed_in_search_summary_off">Näytetään haussa</string> <string name="revanced_hide_filter_bar_feed_in_search_summary_off">Näytetään hakutuloksissa</string>
<string name="revanced_hide_filter_bar_feed_in_related_videos_title">Piilota liittyvissä videoissa</string> <string name="revanced_hide_filter_bar_feed_in_related_videos_title">Piilota liittyvissä videoissa</string>
<string name="revanced_hide_filter_bar_feed_in_related_videos_summary_on">Piilotettu liittyvissä videoissa</string> <string name="revanced_hide_filter_bar_feed_in_related_videos_summary_on">Piilotettu liittyvissä videoissa</string>
<string name="revanced_hide_filter_bar_feed_in_related_videos_summary_off">Näytetään liittyvissä videoissa</string> <string name="revanced_hide_filter_bar_feed_in_related_videos_summary_off">Näytetään liittyvissä videoissa</string>
@@ -399,7 +402,6 @@ Tämä ominaisuus on käytettävissä vain vanhemmilla laitteilla"</string>
<string name="revanced_hide_self_sponsor_ads_title">Piilota itse-sponsoroidut kortit</string> <string name="revanced_hide_self_sponsor_ads_title">Piilota itse-sponsoroidut kortit</string>
<string name="revanced_hide_self_sponsor_ads_summary_on">Itse-sponsoroidut kortit ovat piilotettu</string> <string name="revanced_hide_self_sponsor_ads_summary_on">Itse-sponsoroidut kortit ovat piilotettu</string>
<string name="revanced_hide_self_sponsor_ads_summary_off">Itse-sponsoroidut kortit näytetään</string> <string name="revanced_hide_self_sponsor_ads_summary_off">Itse-sponsoroidut kortit näytetään</string>
<string name="revanced_hide_products_banner_title">Piilota tuotebanneri</string>
<string name="revanced_hide_products_banner_summary_on">Banneri on piilotettu</string> <string name="revanced_hide_products_banner_summary_on">Banneri on piilotettu</string>
<string name="revanced_hide_products_banner_summary_off">Banneri näytetään</string> <string name="revanced_hide_products_banner_summary_off">Banneri näytetään</string>
<string name="revanced_hide_end_screen_store_banner_title">Piilota loppunäytön kauppabanneri</string> <string name="revanced_hide_end_screen_store_banner_title">Piilota loppunäytön kauppabanneri</string>
@@ -438,10 +440,10 @@ Tämä ominaisuus on käytettävissä vain vanhemmilla laitteilla"</string>
<string name="revanced_share_copy_url_success">URL-osoite kopioitiin leikepöydälle</string> <string name="revanced_share_copy_url_success">URL-osoite kopioitiin leikepöydälle</string>
<string name="revanced_share_copy_url_timestamp_success">Aikaleimattu URL-osoite kopioitiin</string> <string name="revanced_share_copy_url_timestamp_success">Aikaleimattu URL-osoite kopioitiin</string>
<string name="revanced_copy_video_url_title">Näytä videon URL-osoitteen kopiointipainike</string> <string name="revanced_copy_video_url_title">Näytä videon URL-osoitteen kopiointipainike</string>
<string name="revanced_copy_video_url_summary_on">Painike näytetään. Napauta kopioidaksesi videon URL-osoitteen. Napauta ja pidä pohjassa kopioidaksesi aikaleimatun URL-osoitteen</string> <string name="revanced_copy_video_url_summary_on">Painike näytetään. Napauta kopioidaksesi videon URL-osoitteen. Napauta ja pidä pohjassa kopioidaksesi aikaleimattuna</string>
<string name="revanced_copy_video_url_summary_off">Painiketta ei näytetä</string> <string name="revanced_copy_video_url_summary_off">Painiketta ei näytetä</string>
<string name="revanced_copy_video_url_timestamp_title">Näytä videon aikaleimatun URL-osoitteen kopiointipainike</string> <string name="revanced_copy_video_url_timestamp_title">Näytä videon aikaleimatun URL-osoitteen kopiointipainike</string>
<string name="revanced_copy_video_url_timestamp_summary_on">Painike näytetään. Napauta kopioidaksesi videon aikaleimatun URL-osoitteen. Napauta ja pidä pohjassa kopioidaksesi URL-osoitteen ilman aikaleimaa</string> <string name="revanced_copy_video_url_timestamp_summary_on">Painike näytetään. Napauta kopioidaksesi videon URL-osoitteen aikaleimattuna. Napauta ja pidä pohjassa kopioidaksesi ilman aikaleimaa</string>
<string name="revanced_copy_video_url_timestamp_summary_off">Painiketta ei näytetä</string> <string name="revanced_copy_video_url_timestamp_summary_off">Painiketta ei näytetä</string>
</patch> </patch>
<patch id="interaction.dialog.removeViewerDiscretionDialogPatch"> <patch id="interaction.dialog.removeViewerDiscretionDialogPatch">
@@ -577,12 +579,18 @@ Säädä äänenvoimakkuutta pyyhkäisemällä pystysuoraan näytön oikealta pu
<string name="revanced_hide_subscriptions_button_title">Piilota Tilaukset</string> <string name="revanced_hide_subscriptions_button_title">Piilota Tilaukset</string>
<string name="revanced_hide_subscriptions_button_summary_on">Tilaukset-painike on piilotettu</string> <string name="revanced_hide_subscriptions_button_summary_on">Tilaukset-painike on piilotettu</string>
<string name="revanced_hide_subscriptions_button_summary_off">Tilaukset-painike näytetään</string> <string name="revanced_hide_subscriptions_button_summary_off">Tilaukset-painike näytetään</string>
<string name="revanced_hide_notifications_button_title">Piilota Ilmoitukset</string>
<string name="revanced_hide_notifications_button_summary_on">Ilmoitukset-painike on piilotettu</string>
<string name="revanced_hide_notifications_button_summary_off">Ilmoitukset-painike näytetään</string>
<!-- 'Notifications' should be translated using the same localized wording YouTube displays the tab. --> <!-- 'Notifications' should be translated using the same localized wording YouTube displays the tab. -->
<string name="revanced_switch_create_with_notifications_button_title">Vaihda Luo ja Ilmoitukset</string> <string name="revanced_switch_create_with_notifications_button_title">Vaihda Luo ja Ilmoitukset</string>
<string name="revanced_switch_create_with_notifications_button_summary_on">"Luo- ja Ilmoitukset-painikkeet vaihdetaan <string name="revanced_switch_create_with_notifications_button_summary_on">"Luo- ja Ilmoitukset-painikkeet vaihdetaan
Huomaa: Tämä piilottaa väkisin myös videomainokset"</string> Huomaa: Tämä piilottaa väkisin myös videomainokset"</string>
<string name="revanced_switch_create_with_notifications_button_summary_off">Luo- ja Ilmoitukset-painikkeita ei vaihdeta</string> <string name="revanced_switch_create_with_notifications_button_summary_off">Luo- ja Ilmoitukset-painikkeita ei vaihdeta</string>
<string name="revanced_switch_create_with_notifications_button_user_dialog_message">"Tämän asetuksen poistaminen käytöstä poistaa myös Shorts-mainosten eston käytöstä.
Jos tämän asetuksen muuttaminen ei tule voimaan, kokeile vaihtaa Incognito-tilaan."</string>
<string name="revanced_hide_navigation_button_labels_title">Piilota navigointipainikkeiden tunnisteet</string> <string name="revanced_hide_navigation_button_labels_title">Piilota navigointipainikkeiden tunnisteet</string>
<string name="revanced_hide_navigation_button_labels_summary_on">Tunnisteet on piilotettu</string> <string name="revanced_hide_navigation_button_labels_summary_on">Tunnisteet on piilotettu</string>
<string name="revanced_hide_navigation_button_labels_summary_off">Tunnisteet näytetään</string> <string name="revanced_hide_navigation_button_labels_summary_off">Tunnisteet näytetään</string>
@@ -652,7 +660,6 @@ Huomaa: Tämä piilottaa väkisin myös videomainokset"</string>
<string name="revanced_hide_player_flyout_video_quality_footer_summary_off">Videolaatuvalikon alatunniste näytetään</string> <string name="revanced_hide_player_flyout_video_quality_footer_summary_off">Videolaatuvalikon alatunniste näytetään</string>
</patch> </patch>
<patch id="layout.buttons.overlay.hidePlayerOverlayButtonsPatch"> <patch id="layout.buttons.overlay.hidePlayerOverlayButtonsPatch">
<string name="revanced_hide_player_previous_next_buttons_title">Piilota edellinen- ja seuraava video -painikkeet</string>
<string name="revanced_hide_player_previous_next_buttons_summary_on">Painikkeet on piilotettu</string> <string name="revanced_hide_player_previous_next_buttons_summary_on">Painikkeet on piilotettu</string>
<string name="revanced_hide_player_previous_next_buttons_summary_off">Painikkeet näytetään</string> <string name="revanced_hide_player_previous_next_buttons_summary_off">Painikkeet näytetään</string>
<string name="revanced_hide_cast_button_title">Piilota Cast-painike</string> <string name="revanced_hide_cast_button_title">Piilota Cast-painike</string>
@@ -797,10 +804,13 @@ Huomaa: Tämä piilottaa väkisin myös videomainokset"</string>
<string name="revanced_hide_shorts_navigation_bar_summary_on">Navigointipalkki on piilotettu</string> <string name="revanced_hide_shorts_navigation_bar_summary_on">Navigointipalkki on piilotettu</string>
<string name="revanced_hide_shorts_navigation_bar_summary_off">Navigointipalkki näytetään</string> <string name="revanced_hide_shorts_navigation_bar_summary_off">Navigointipalkki näytetään</string>
</patch> </patch>
<patch id="layout.hide.suggestedvideoendscreen.disableSuggestedVideoEndScreenResourcePatch"> <patch id="layout.hide.endscreensuggestion.hideEndScreenSuggestedVideoPatch">
<string name="revanced_disable_suggested_video_end_screen_title">Poista loppunäytön videoehdotukset käytöstä</string> <string name="revanced_end_screen_suggested_video_title">Piilota loppunäytön ehdotettu video</string>
<string name="revanced_disable_suggested_video_end_screen_summary_on">Ehdotetut videot on piilotettu</string> <string name="revanced_end_screen_suggested_video_summary_on">"Loppunäytön ehdotettu video on piilotettu, kun automaattinen toisto ei ole käytössä
<string name="revanced_disable_suggested_video_end_screen_summary_off">Ehdotetut videot näytetään</string>
Automaattista toistoa voidaan muuttaa YouTube-asetuksissa:
Asetukset → Toisto → Toista seuraava video automaattisesti"</string>
<string name="revanced_end_screen_suggested_video_summary_off">Loppunäytön ehdotettu video näytetään</string>
</patch> </patch>
<patch id="layout.hide.time.hideTimestampPatch"> <patch id="layout.hide.time.hideTimestampPatch">
<string name="revanced_hide_timestamp_title">Piilota videon aikaleima</string> <string name="revanced_hide_timestamp_title">Piilota videon aikaleima</string>
@@ -1102,16 +1112,6 @@ Oletko valmis lähettämään?"</string>
<string name="revanced_change_form_factor_entry_2">Puhelin</string> <string name="revanced_change_form_factor_entry_2">Puhelin</string>
<string name="revanced_change_form_factor_entry_3">Tabletti</string> <string name="revanced_change_form_factor_entry_3">Tabletti</string>
<string name="revanced_change_form_factor_entry_4">Ajoneuvo</string> <string name="revanced_change_form_factor_entry_4">Ajoneuvo</string>
<string name="revanced_change_form_factor_user_dialog_message">"Muutokset sisältävät:
Tabletti-asettelu
• Yhteisöpostaukset on piilotettu
Ajoneuvo-asettelu
• Katseluhistoriavalikko on piilotettu
• Tutustu-välilehti on palautettu
• Shortsit avautuvat tavallisessa soittimessa
• Syöte on järjestetty aiheiden ja kanavien mukaan"</string>
</patch> </patch>
<patch id="layout.spoofappversion.spoofAppVersionPatch"> <patch id="layout.spoofappversion.spoofAppVersionPatch">
<string name="revanced_spoof_app_version_title">Naamioi sovellusversio</string> <string name="revanced_spoof_app_version_title">Naamioi sovellusversio</string>
@@ -1181,7 +1181,6 @@ Jos tämä poistetaan myöhemmin käytöstä, on suositeltavaa tyhjentää sovel
</patch> </patch>
<patch id="layout.miniplayer.miniplayerPatch"> <patch id="layout.miniplayer.miniplayerPatch">
<string name="revanced_miniplayer_screen_title">Minisoitin</string> <string name="revanced_miniplayer_screen_title">Minisoitin</string>
<string name="revanced_miniplayer_screen_summary">Muuta sovelluksen sisäisen pienennetyn soittimen tyyliä</string>
<string name="revanced_miniplayer_type_title">Minisoittimen tyyppi</string> <string name="revanced_miniplayer_type_title">Minisoittimen tyyppi</string>
<string name="revanced_miniplayer_type_entry_0">Pois käytöstä</string> <string name="revanced_miniplayer_type_entry_0">Pois käytöstä</string>
<string name="revanced_miniplayer_type_entry_1">Oletus</string> <string name="revanced_miniplayer_type_entry_1">Oletus</string>
@@ -1327,8 +1326,6 @@ Tämä voi avata korkealaatuisemmat videot"</string>
</patch> </patch>
<patch id="misc.links.openLinksExternallyPatch"> <patch id="misc.links.openLinksExternallyPatch">
<string name="revanced_external_browser_title">Avaa linkit selaimessa</string> <string name="revanced_external_browser_title">Avaa linkit selaimessa</string>
<string name="revanced_external_browser_summary_on">Linkit avataan ulkoisesti</string>
<string name="revanced_external_browser_summary_off">Linkit avataan sovelluksessa</string>
</patch> </patch>
<patch id="misc.privacy.removeTrackingQueryParameterPatch"> <patch id="misc.privacy.removeTrackingQueryParameterPatch">
<string name="revanced_remove_tracking_query_parameter_title">Poista seurantakyselyparametrit</string> <string name="revanced_remove_tracking_query_parameter_title">Poista seurantakyselyparametrit</string>
@@ -1341,10 +1338,11 @@ Tämä voi avata korkealaatuisemmat videot"</string>
<string name="revanced_disable_zoom_haptics_summary_off">Haptiikka on käytössä</string> <string name="revanced_disable_zoom_haptics_summary_off">Haptiikka on käytössä</string>
</patch> </patch>
<patch id="video.audio.forceOriginalAudioPatch"> <patch id="video.audio.forceOriginalAudioPatch">
<string name="revanced_force_original_audio_title">Pakota alkuperäinen ääni</string> <string name="revanced_force_original_audio_title">Pakota alkuperäinen äänen kieli</string>
<string name="revanced_force_original_audio_summary_on">Käytetään alkuperäistä ääntä</string> <string name="revanced_force_original_audio_summary_on">Käytetään alkuperäistä ääntä</string>
<string name="revanced_force_original_audio_summary_off">Käytetään oletusääntä</string> <string name="revanced_force_original_audio_summary_off">Käytetään oletusääntä</string>
<string name="revanced_force_original_audio_not_available">Käytä tätä ominaisuutta vaihtamalla virran naamiointi iOS-asiakastyyppiiin</string> <!-- 'Spoof video streams' should be the same translation used for revanced_spoof_video_streams_screen_title -->
<string name="revanced_force_original_audio_not_available">Voit käyttää tätä ominaisuutta muuttamalla \"Naamioi videovirrat\" iOS TV:ksi</string>
</patch> </patch>
<patch id="video.quality.rememberVideoQualityPatch"> <patch id="video.quality.rememberVideoQualityPatch">
<!-- Translations should use the same text as revanced_custom_playback_speeds_auto --> <!-- Translations should use the same text as revanced_custom_playback_speeds_auto -->

View File

@@ -301,13 +301,13 @@ Hindi ka aabisuhan ng anumang hindi inaasahang mga kaganapan."</string>
<string name="revanced_hide_description_components_screen_title">Paglalarawan ng video</string> <string name="revanced_hide_description_components_screen_title">Paglalarawan ng video</string>
<string name="revanced_hide_description_components_screen_summary">Itago o ipakita ang mga bahagi ng paglalarawan ng video</string> <string name="revanced_hide_description_components_screen_summary">Itago o ipakita ang mga bahagi ng paglalarawan ng video</string>
<string name="revanced_hide_filter_bar_screen_title">Bar ng filter</string> <string name="revanced_hide_filter_bar_screen_title">Bar ng filter</string>
<string name="revanced_hide_filter_bar_screen_summary">Itago o ipakita ang filter bar sa feed, paghahanap, at mga kaugnay na video</string> <string name="revanced_hide_filter_bar_screen_summary">Itago o ipakita ang filter bar sa feed, mga resulta ng paghahanap, at mga kaugnay na video</string>
<string name="revanced_hide_filter_bar_feed_in_feed_title">Itago sa feed</string> <string name="revanced_hide_filter_bar_feed_in_feed_title">Itago sa feed</string>
<string name="revanced_hide_filter_bar_feed_in_feed_summary_on">Nakatago sa feed</string> <string name="revanced_hide_filter_bar_feed_in_feed_summary_on">Nakatago sa feed</string>
<string name="revanced_hide_filter_bar_feed_in_feed_summary_off">Ipinapakita sa feed</string> <string name="revanced_hide_filter_bar_feed_in_feed_summary_off">Ipinapakita sa feed</string>
<string name="revanced_hide_filter_bar_feed_in_search_title">Itago sa paghahanap</string> <string name="revanced_hide_filter_bar_feed_in_search_title">Itago sa mga resulta ng paghahanap</string>
<string name="revanced_hide_filter_bar_feed_in_search_summary_on">Nakatago sa paghahanap</string> <string name="revanced_hide_filter_bar_feed_in_search_summary_on">Nakatago sa mga resulta ng paghahanap</string>
<string name="revanced_hide_filter_bar_feed_in_search_summary_off">Ipinapakita sa paghahanap</string> <string name="revanced_hide_filter_bar_feed_in_search_summary_off">Ipinapakita sa mga resulta ng paghahanap</string>
<string name="revanced_hide_filter_bar_feed_in_related_videos_title">Itago sa mga kaugnay na video</string> <string name="revanced_hide_filter_bar_feed_in_related_videos_title">Itago sa mga kaugnay na video</string>
<string name="revanced_hide_filter_bar_feed_in_related_videos_summary_on">Nakatago sa mga kaugnay na video</string> <string name="revanced_hide_filter_bar_feed_in_related_videos_summary_on">Nakatago sa mga kaugnay na video</string>
<string name="revanced_hide_filter_bar_feed_in_related_videos_summary_off">Ipinapakita sa mga kaugnay na video</string> <string name="revanced_hide_filter_bar_feed_in_related_videos_summary_off">Ipinapakita sa mga kaugnay na video</string>
@@ -404,7 +404,7 @@ Ang tampok na ito ay magagamit lamang para sa mga mas lumang device"</string>
<string name="revanced_hide_self_sponsor_ads_title">Itago ang mga self sponsored card</string> <string name="revanced_hide_self_sponsor_ads_title">Itago ang mga self sponsored card</string>
<string name="revanced_hide_self_sponsor_ads_summary_on">Nakatago ang mga self sponsored card</string> <string name="revanced_hide_self_sponsor_ads_summary_on">Nakatago ang mga self sponsored card</string>
<string name="revanced_hide_self_sponsor_ads_summary_off">Ipinapakita ang mga self sponsored card</string> <string name="revanced_hide_self_sponsor_ads_summary_off">Ipinapakita ang mga self sponsored card</string>
<string name="revanced_hide_products_banner_title">Itago ang banner para tingnan ang mga produkto</string> <string name="revanced_hide_products_banner_title">Itago ang banner na \'Tingnan ang mga produkto\'</string>
<string name="revanced_hide_products_banner_summary_on">Nakatago ang banner</string> <string name="revanced_hide_products_banner_summary_on">Nakatago ang banner</string>
<string name="revanced_hide_products_banner_summary_off">Ipinakita ang banner</string> <string name="revanced_hide_products_banner_summary_off">Ipinakita ang banner</string>
<string name="revanced_hide_end_screen_store_banner_title">Itago ang banner ng tindahan ng end screen</string> <string name="revanced_hide_end_screen_store_banner_title">Itago ang banner ng tindahan ng end screen</string>
@@ -443,10 +443,10 @@ Ang tampok na ito ay magagamit lamang para sa mga mas lumang device"</string>
<string name="revanced_share_copy_url_success">Nakopya ang URL sa clipboard</string> <string name="revanced_share_copy_url_success">Nakopya ang URL sa clipboard</string>
<string name="revanced_share_copy_url_timestamp_success">URL na may timestamp na kinopya</string> <string name="revanced_share_copy_url_timestamp_success">URL na may timestamp na kinopya</string>
<string name="revanced_copy_video_url_title">Ipakita ang pindutan ng URL ng kopya ng video</string> <string name="revanced_copy_video_url_title">Ipakita ang pindutan ng URL ng kopya ng video</string>
<string name="revanced_copy_video_url_summary_on">Ang pindutan ay ipinapakita. I-tap para kopyahin ang URL ng video. I-tap nang matagal para kopyahin ang URL ng video gamit ang timestamp</string> <string name="revanced_copy_video_url_summary_on">Ipinapakita ang button. I-tap para kopyahin ang URL ng video. I-tap nang matagal para kopyahin kasama ang timestamp</string>
<string name="revanced_copy_video_url_summary_off">Hindi ipinapakita ang button</string> <string name="revanced_copy_video_url_summary_off">Hindi ipinapakita ang button</string>
<string name="revanced_copy_video_url_timestamp_title">Ipakita ang pindutan ng URL ng kopya ng timestamp</string> <string name="revanced_copy_video_url_timestamp_title">Ipakita ang pindutan ng URL ng kopya ng timestamp</string>
<string name="revanced_copy_video_url_timestamp_summary_on">Ang pindutan ay ipinapakita. I-tap para kopyahin ang URL ng video gamit ang timestamp. I-tap nang matagal upang kopyahin ang video nang walang timestamp</string> <string name="revanced_copy_video_url_timestamp_summary_on">Ipinapakita ang button. I-tap para kopyahin ang URL ng video kasama ang timestamp. I-tap nang matagal para kopyahin nang walang timestamp</string>
<string name="revanced_copy_video_url_timestamp_summary_off">Hindi ipinapakita ang button</string> <string name="revanced_copy_video_url_timestamp_summary_off">Hindi ipinapakita ang button</string>
</patch> </patch>
<patch id="interaction.dialog.removeViewerDiscretionDialogPatch"> <patch id="interaction.dialog.removeViewerDiscretionDialogPatch">
@@ -661,7 +661,7 @@ Tandaan: Ang pagpapagana nito ay nagtatago rin ng mga ad ng video"</string>
<string name="revanced_hide_player_flyout_video_quality_footer_summary_off">Ang footer ng menu ng kalidad ng video ay ipinapakita</string> <string name="revanced_hide_player_flyout_video_quality_footer_summary_off">Ang footer ng menu ng kalidad ng video ay ipinapakita</string>
</patch> </patch>
<patch id="layout.buttons.overlay.hidePlayerOverlayButtonsPatch"> <patch id="layout.buttons.overlay.hidePlayerOverlayButtonsPatch">
<string name="revanced_hide_player_previous_next_buttons_title">Itago ang nakaraang &amp; susunod na mga pindutan ng video</string> <string name="revanced_hide_player_previous_next_buttons_title">Itago ang Nakaraan at Susunod na mga pindutan</string>
<string name="revanced_hide_player_previous_next_buttons_summary_on">Nakatago ang mga pindutan</string> <string name="revanced_hide_player_previous_next_buttons_summary_on">Nakatago ang mga pindutan</string>
<string name="revanced_hide_player_previous_next_buttons_summary_off">Ang mga pindutan ay ipinapakita</string> <string name="revanced_hide_player_previous_next_buttons_summary_off">Ang mga pindutan ay ipinapakita</string>
<string name="revanced_hide_cast_button_title">Itago ang Cast button</string> <string name="revanced_hide_cast_button_title">Itago ang Cast button</string>
@@ -806,10 +806,13 @@ Tandaan: Ang pagpapagana nito ay nagtatago rin ng mga ad ng video"</string>
<string name="revanced_hide_shorts_navigation_bar_summary_on">Nakatago ang navigation bar</string> <string name="revanced_hide_shorts_navigation_bar_summary_on">Nakatago ang navigation bar</string>
<string name="revanced_hide_shorts_navigation_bar_summary_off">Ipinapakita ang navigation bar</string> <string name="revanced_hide_shorts_navigation_bar_summary_off">Ipinapakita ang navigation bar</string>
</patch> </patch>
<patch id="layout.hide.suggestedvideoendscreen.disableSuggestedVideoEndScreenResourcePatch"> <patch id="layout.hide.endscreensuggestion.hideEndScreenSuggestedVideoPatch">
<string name="revanced_disable_suggested_video_end_screen_title">I-disable ang iminungkahing video end screen</string> <string name="revanced_end_screen_suggested_video_title">Itago ang iminungkahing video sa dulo ng screen</string>
<string name="revanced_disable_suggested_video_end_screen_summary_on">Idi-disable ang mga iminungkahing video</string> <string name="revanced_end_screen_suggested_video_summary_on">"Nakatago ang iminungkahing video sa dulo ng screen kapag nakapatay ang autoplay
<string name="revanced_disable_suggested_video_end_screen_summary_off">Ipapakita ang mga iminungkahing video</string>
Maaaring baguhin ang Autoplay sa mga setting ng YouTube:
Mga Setting → Pag-playback → I-autoplay ang susunod na video"</string>
<string name="revanced_end_screen_suggested_video_summary_off">Ipinapakita ang iminungkahing video sa dulo ng screen</string>
</patch> </patch>
<patch id="layout.hide.time.hideTimestampPatch"> <patch id="layout.hide.time.hideTimestampPatch">
<string name="revanced_hide_timestamp_title">Itago ang timestamp ng video</string> <string name="revanced_hide_timestamp_title">Itago ang timestamp ng video</string>
@@ -1028,7 +1031,7 @@ Ang iyong user id ay parang isang password at hindi dapat ibahagi.
<string name="revanced_sb_skip_automatically">Awtomatikong lumaktaw</string> <string name="revanced_sb_skip_automatically">Awtomatikong lumaktaw</string>
<string name="revanced_sb_skip_automatically_once">Awtomatikong lumaktaw nang isang beses</string> <string name="revanced_sb_skip_automatically_once">Awtomatikong lumaktaw nang isang beses</string>
<string name="revanced_sb_skip_showbutton">Magpakita ng button na Laktawan</string> <string name="revanced_sb_skip_showbutton">Magpakita ng button na Laktawan</string>
<string name="revanced_sb_skip_seekbaronly">Ipakita sa seek bar</string> <string name="revanced_sb_skip_seekbaronly">Ipakita sa seekbar</string>
<string name="revanced_sb_skip_ignore">Huwag paganahin</string> <string name="revanced_sb_skip_ignore">Huwag paganahin</string>
<string name="revanced_sb_submit_failed_invalid">Hindi maisumite ang segment: %s</string> <string name="revanced_sb_submit_failed_invalid">Hindi maisumite ang segment: %s</string>
<string name="revanced_sb_submit_failed_timeout">Pansamantalang hindi gumagana ang SponsorBlock</string> <string name="revanced_sb_submit_failed_timeout">Pansamantalang hindi gumagana ang SponsorBlock</string>
@@ -1114,13 +1117,11 @@ Isumite na ba?"</string>
<string name="revanced_change_form_factor_user_dialog_message">"Kasama sa mga pagbabago: <string name="revanced_change_form_factor_user_dialog_message">"Kasama sa mga pagbabago:
Layout ng tablet Layout ng tablet
• Nakatago ang mga post ng komunidad • Nakatago ang mga post sa Community
Layout ng Automotive Layout ng automotive
• Nakatago ang menu ng history ng panonood • Nagbubukas ang Shorts sa regular na player
• Ibinabalik ang tab ng pagtuklas • Inorganisa ang feed ayon sa mga paksa at channel"</string>
• Bubukas ang Shorts sa regular na manlalaro
• Inaayos ang feed ayon sa mga paksa at channel"</string>
</patch> </patch>
<patch id="layout.spoofappversion.spoofAppVersionPatch"> <patch id="layout.spoofappversion.spoofAppVersionPatch">
<string name="revanced_spoof_app_version_title">Spoof na bersyon ng app</string> <string name="revanced_spoof_app_version_title">Spoof na bersyon ng app</string>
@@ -1190,7 +1191,6 @@ Kung mamaya ay patayin, inirerekumenda na i-clear ang data ng app upang maiwasan
</patch> </patch>
<patch id="layout.miniplayer.miniplayerPatch"> <patch id="layout.miniplayer.miniplayerPatch">
<string name="revanced_miniplayer_screen_title">Miniplayer</string> <string name="revanced_miniplayer_screen_title">Miniplayer</string>
<string name="revanced_miniplayer_screen_summary">Baguhin ang istilo ng in app minimized na player</string>
<string name="revanced_miniplayer_type_title">Uri ng miniplayer</string> <string name="revanced_miniplayer_type_title">Uri ng miniplayer</string>
<string name="revanced_miniplayer_type_entry_0">Hindi</string> <string name="revanced_miniplayer_type_entry_0">Hindi</string>
<string name="revanced_miniplayer_type_entry_1">Regular</string> <string name="revanced_miniplayer_type_entry_1">Regular</string>
@@ -1336,8 +1336,8 @@ Ang pagpapagana nito ay maaaring magbukas ng mas mataas na kalidad ng video"</st
</patch> </patch>
<patch id="misc.links.openLinksExternallyPatch"> <patch id="misc.links.openLinksExternallyPatch">
<string name="revanced_external_browser_title">Buksan ang mga link sa browser</string> <string name="revanced_external_browser_title">Buksan ang mga link sa browser</string>
<string name="revanced_external_browser_summary_on">Pagbubukas ng mga link sa labas</string> <string name="revanced_external_browser_summary_on">Binubuksan ang mga link sa panlabas na browser</string>
<string name="revanced_external_browser_summary_off">Pagbubukas ng mga link sa app</string> <string name="revanced_external_browser_summary_off">Binubuksan ang mga link sa in-app na browser</string>
</patch> </patch>
<patch id="misc.privacy.removeTrackingQueryParameterPatch"> <patch id="misc.privacy.removeTrackingQueryParameterPatch">
<string name="revanced_remove_tracking_query_parameter_title">Alisin ang parameter ng query sa pagsubaybay</string> <string name="revanced_remove_tracking_query_parameter_title">Alisin ang parameter ng query sa pagsubaybay</string>
@@ -1350,22 +1350,30 @@ Ang pagpapagana nito ay maaaring magbukas ng mas mataas na kalidad ng video"</st
<string name="revanced_disable_zoom_haptics_summary_off">Pinagana ang Haptics</string> <string name="revanced_disable_zoom_haptics_summary_off">Pinagana ang Haptics</string>
</patch> </patch>
<patch id="video.audio.forceOriginalAudioPatch"> <patch id="video.audio.forceOriginalAudioPatch">
<string name="revanced_force_original_audio_title">Pilitin ang original audio</string> <string name="revanced_force_original_audio_title">Pilitin ang orihinal na wika ng audio</string>
<string name="revanced_force_original_audio_summary_on">Gumagamit ng original audio</string> <string name="revanced_force_original_audio_summary_on">Ginagamit ang orihinal na wika ng audio</string>
<string name="revanced_force_original_audio_summary_off">Gumagamit ng default audio</string> <string name="revanced_force_original_audio_summary_off">Gumagamit ng default audio</string>
<string name="revanced_force_original_audio_not_available">Upang magamit ang tampok na ito, baguhin ang stream spoofing sa uri ng kliyente ng iOS</string> <!-- 'Spoof video streams' should be the same translation used for revanced_spoof_video_streams_screen_title -->
<string name="revanced_force_original_audio_not_available">Para magamit ang feature na ito, palitan ang \'Magpanggap na video stream\' sa iOS TV</string>
</patch> </patch>
<patch id="video.quality.rememberVideoQualityPatch"> <patch id="video.quality.rememberVideoQualityPatch">
<!-- Translations should use the same text as revanced_custom_playback_speeds_auto --> <!-- Translations should use the same text as revanced_custom_playback_speeds_auto -->
<string name="revanced_video_quality_screen_title">Kalidad ng Video</string>
<string name="revanced_video_quality_default_entry_1">Awtomatik</string> <string name="revanced_video_quality_default_entry_1">Awtomatik</string>
<string name="revanced_remember_video_quality_last_selected_title">Tandaan ang mga pagbabago sa kalidad ng video</string> <string name="revanced_remember_video_quality_last_selected_title">Tandaan ang mga pagbabago sa kalidad ng video</string>
<string name="revanced_remember_video_quality_last_selected_summary_on">Nalalapat ang mga pagbabago sa kalidad sa lahat ng video</string> <string name="revanced_remember_video_quality_last_selected_summary_on">Nalalapat ang mga pagbabago sa kalidad sa lahat ng video</string>
<string name="revanced_remember_video_quality_last_selected_summary_off">Nalalapat lang ang mga pagbabago sa kalidad sa kasalukuyang video</string> <string name="revanced_remember_video_quality_last_selected_summary_off">Nalalapat lang ang mga pagbabago sa kalidad sa kasalukuyang video</string>
<string name="revanced_video_quality_default_wifi_title">Default na kalidad ng video sa Wi-Fi network</string> <string name="revanced_video_quality_default_wifi_title">Default na kalidad ng video sa Wi-Fi network</string>
<string name="revanced_video_quality_default_mobile_title">Default na kalidad ng video sa mobile network</string> <string name="revanced_video_quality_default_mobile_title">Default na kalidad ng video sa mobile network</string>
<string name="revanced_remember_shorts_quality_last_selected_title">Tandaan ang mga pagbabago sa kalidad ng Shorts</string>
<string name="revanced_remember_shorts_quality_last_selected_summary_on">Nalalapat ang mga pagbabago sa kalidad sa lahat ng mga video ng Shorts</string>
<string name="revanced_remember_shorts_quality_last_selected_summary_off">Nalalapat lang ang mga pagbabago sa kalidad sa kasalukuyang video ng Shorts</string>
<string name="revanced_shorts_quality_default_wifi_title">Default na kalidad ng Shorts sa Wi-Fi network</string>
<string name="revanced_shorts_quality_default_mobile_title">Default na kalidad ng Shorts sa mobile network</string>
<string name="revanced_remember_video_quality_mobile">Mobile</string> <string name="revanced_remember_video_quality_mobile">Mobile</string>
<string name="revanced_remember_video_quality_wifi">Wifi</string> <string name="revanced_remember_video_quality_wifi">Wifi</string>
<string name="revanced_remember_video_quality_toast">Binago ang default na kalidad ng %1$s sa: %2$s</string> <string name="revanced_remember_video_quality_toast">Binago ang default na kalidad ng %1$s sa: %2$s</string>
<string name="revanced_remember_video_quality_toast_shorts">Binago ang kalidad ng Shorts %1$s sa: %2$s</string>
</patch> </patch>
<patch id="video.speed.button.playbackSpeedButtonPatch"> <patch id="video.speed.button.playbackSpeedButtonPatch">
<string name="revanced_playback_speed_dialog_button_title">Ipakita ang pindutan ng dialog ng bilis</string> <string name="revanced_playback_speed_dialog_button_title">Ipakita ang pindutan ng dialog ng bilis</string>

View File

@@ -174,9 +174,9 @@ Vous ne serez pas informé des événements inattendus."</string>
<string name="revanced_hide_crowdfunding_box_title">Masquer la boîte de financement participatif</string> <string name="revanced_hide_crowdfunding_box_title">Masquer la boîte de financement participatif</string>
<string name="revanced_hide_crowdfunding_box_summary_on">La boîte de financement participatif est masquée</string> <string name="revanced_hide_crowdfunding_box_summary_on">La boîte de financement participatif est masquée</string>
<string name="revanced_hide_crowdfunding_box_summary_off">La boîte de financement participatif est affichée</string> <string name="revanced_hide_crowdfunding_box_summary_off">La boîte de financement participatif est affichée</string>
<string name="revanced_hide_floating_microphone_button_title">Masquer le bouton de microphone flottant</string> <string name="revanced_hide_floating_microphone_button_title">Masquer le bouton micro flottant</string>
<string name="revanced_hide_floating_microphone_button_summary_on">Le bouton du microphone est masqué</string> <string name="revanced_hide_floating_microphone_button_summary_on">Le bouton micro est masqué</string>
<string name="revanced_hide_floating_microphone_button_summary_off">Le bouton du microphone est affiché</string> <string name="revanced_hide_floating_microphone_button_summary_off">Le bouton micro est affiché</string>
<string name="revanced_hide_channel_watermark_title">Masquer le filigrane de la chaîne</string> <string name="revanced_hide_channel_watermark_title">Masquer le filigrane de la chaîne</string>
<string name="revanced_hide_channel_watermark_summary_on">Le filigrane est masqué</string> <string name="revanced_hide_channel_watermark_summary_on">Le filigrane est masqué</string>
<string name="revanced_hide_channel_watermark_summary_off">Le filigrane est affiché</string> <string name="revanced_hide_channel_watermark_summary_off">Le filigrane est affiché</string>
@@ -199,7 +199,7 @@ Vous ne serez pas informé des événements inattendus."</string>
<string name="revanced_hide_for_you_shelf_summary_off">L\'étagère est affichée sur la page de chaîne</string> <string name="revanced_hide_for_you_shelf_summary_off">L\'étagère est affichée sur la page de chaîne</string>
<!-- 'Notify me' should be translated using the same localized wording YouTube displays. <!-- 'Notify me' should be translated using the same localized wording YouTube displays.
This item appear in the subscription feed for future livestreams or unreleased videos. --> This item appear in the subscription feed for future livestreams or unreleased videos. -->
<string name="revanced_hide_notify_me_button_title">Masquer le bouton \"M\'avertir\"</string> <string name="revanced_hide_notify_me_button_title">Masquer le bouton M\'avertir</string>
<string name="revanced_hide_notify_me_button_summary_on">Le bouton est masqué</string> <string name="revanced_hide_notify_me_button_summary_on">Le bouton est masqué</string>
<string name="revanced_hide_notify_me_button_summary_off">Le bouton est affiché</string> <string name="revanced_hide_notify_me_button_summary_off">Le bouton est affiché</string>
<!-- 'People also watched' should be translated using the same localized wording YouTube displays. --> <!-- 'People also watched' should be translated using the same localized wording YouTube displays. -->
@@ -208,7 +208,7 @@ Vous ne serez pas informé des événements inattendus."</string>
<string name="revanced_hide_search_result_recommendations_summary_off">Le libellé est affiché</string> <string name="revanced_hide_search_result_recommendations_summary_off">Le libellé est affiché</string>
<!-- 'Show more' should be translated with the same localized wording that YouTube displays. <!-- 'Show more' should be translated with the same localized wording that YouTube displays.
This button usually appears when searching for a YT creator. --> This button usually appears when searching for a YT creator. -->
<string name="revanced_hide_show_more_button_title">Masquer le bouton \"Afficher plus\"</string> <string name="revanced_hide_show_more_button_title">Masquer le bouton Afficher plus</string>
<string name="revanced_hide_show_more_button_summary_on">Le bouton est masqué</string> <string name="revanced_hide_show_more_button_summary_on">Le bouton est masqué</string>
<string name="revanced_hide_show_more_button_summary_off">Le bouton est affiché</string> <string name="revanced_hide_show_more_button_summary_off">Le bouton est affiché</string>
<string name="revanced_hide_timed_reactions_title">Masquer les réactions minutées</string> <string name="revanced_hide_timed_reactions_title">Masquer les réactions minutées</string>
@@ -301,13 +301,13 @@ Vous ne serez pas informé des événements inattendus."</string>
<string name="revanced_hide_description_components_screen_title">Description de la vidéo</string> <string name="revanced_hide_description_components_screen_title">Description de la vidéo</string>
<string name="revanced_hide_description_components_screen_summary">Masquez ou affichez des éléments dans la description des vidéos</string> <string name="revanced_hide_description_components_screen_summary">Masquez ou affichez des éléments dans la description des vidéos</string>
<string name="revanced_hide_filter_bar_screen_title">Barre des filtres</string> <string name="revanced_hide_filter_bar_screen_title">Barre des filtres</string>
<string name="revanced_hide_filter_bar_screen_summary">Masquez ou affichez la barre des filtres dans le flux, la recherche et les vidéos similaires</string> <string name="revanced_hide_filter_bar_screen_summary">Masquez ou affichez la barre des filtres dans le flux, les résultats de recherche et les vidéos similaires</string>
<string name="revanced_hide_filter_bar_feed_in_feed_title">Masquer dans le flux</string> <string name="revanced_hide_filter_bar_feed_in_feed_title">Masquer dans le flux</string>
<string name="revanced_hide_filter_bar_feed_in_feed_summary_on">Masquée dans le flux</string> <string name="revanced_hide_filter_bar_feed_in_feed_summary_on">Masquée dans le flux</string>
<string name="revanced_hide_filter_bar_feed_in_feed_summary_off">Affichée dans le flux</string> <string name="revanced_hide_filter_bar_feed_in_feed_summary_off">Affichée dans le flux</string>
<string name="revanced_hide_filter_bar_feed_in_search_title">Masquer dans la recherche</string> <string name="revanced_hide_filter_bar_feed_in_search_title">Masquer dans les résultats de recherche</string>
<string name="revanced_hide_filter_bar_feed_in_search_summary_on">Masquée dans la recherche</string> <string name="revanced_hide_filter_bar_feed_in_search_summary_on">Masquée dans les résultats de recherche</string>
<string name="revanced_hide_filter_bar_feed_in_search_summary_off">Affichée dans la recherche</string> <string name="revanced_hide_filter_bar_feed_in_search_summary_off">Affichée dans les résultats de recherche</string>
<string name="revanced_hide_filter_bar_feed_in_related_videos_title">Masquer dans les vidéos similaires</string> <string name="revanced_hide_filter_bar_feed_in_related_videos_title">Masquer dans les vidéos similaires</string>
<string name="revanced_hide_filter_bar_feed_in_related_videos_summary_on">Masquée dans les vidéos similaires</string> <string name="revanced_hide_filter_bar_feed_in_related_videos_summary_on">Masquée dans les vidéos similaires</string>
<string name="revanced_hide_filter_bar_feed_in_related_videos_summary_off">Affichée dans les vidéos similaires</string> <string name="revanced_hide_filter_bar_feed_in_related_videos_summary_off">Affichée dans les vidéos similaires</string>
@@ -407,7 +407,7 @@ Cette fonctionnalité est disponible uniquement pour les appareils anciens"</str
<string name="revanced_hide_products_banner_title">Masquer la bannière Afficher les produits</string> <string name="revanced_hide_products_banner_title">Masquer la bannière Afficher les produits</string>
<string name="revanced_hide_products_banner_summary_on">La bannière est masquée</string> <string name="revanced_hide_products_banner_summary_on">La bannière est masquée</string>
<string name="revanced_hide_products_banner_summary_off">La bannière est affichée</string> <string name="revanced_hide_products_banner_summary_off">La bannière est affichée</string>
<string name="revanced_hide_end_screen_store_banner_title">Masquer la bannière de boutique sur l\'écran de fin</string> <string name="revanced_hide_end_screen_store_banner_title">Masquer l\'écran de fin de bannière de boutique</string>
<string name="revanced_hide_end_screen_store_banner_summary_on">La bannière de boutique est masquée</string> <string name="revanced_hide_end_screen_store_banner_summary_on">La bannière de boutique est masquée</string>
<string name="revanced_hide_end_screen_store_banner_summary_off">La bannière de boutique est affichée</string> <string name="revanced_hide_end_screen_store_banner_summary_off">La bannière de boutique est affichée</string>
<string name="revanced_hide_player_store_shelf_title">Masquer l\'étagère Shopping dans le lecteur</string> <string name="revanced_hide_player_store_shelf_title">Masquer l\'étagère Shopping dans le lecteur</string>
@@ -417,7 +417,7 @@ Cette fonctionnalité est disponible uniquement pour les appareils anciens"</str
<string name="revanced_hide_shopping_links_summary_on">Les liens de shopping dans la description des vidéos sont masqués</string> <string name="revanced_hide_shopping_links_summary_on">Les liens de shopping dans la description des vidéos sont masqués</string>
<string name="revanced_hide_shopping_links_summary_off">Les liens de shopping dans la description des vidéos sont affichés</string> <string name="revanced_hide_shopping_links_summary_off">Les liens de shopping dans la description des vidéos sont affichés</string>
<!-- 'Visit store' should be translated with the same localized wording that YouTube displays. --> <!-- 'Visit store' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_visit_store_button_title">Masquer le bouton \"Visiter la boutique\"</string> <string name="revanced_hide_visit_store_button_title">Masquer le bouton Visiter la boutique</string>
<string name="revanced_hide_visit_store_button_summary_on">Le bouton est masqué sur la page de chaîne</string> <string name="revanced_hide_visit_store_button_summary_on">Le bouton est masqué sur la page de chaîne</string>
<string name="revanced_hide_visit_store_button_summary_off">Le bouton est affiché sur la page de chaîne</string> <string name="revanced_hide_visit_store_button_summary_off">Le bouton est affiché sur la page de chaîne</string>
<string name="revanced_hide_web_search_results_title">Masquer les résultats Web</string> <string name="revanced_hide_web_search_results_title">Masquer les résultats Web</string>
@@ -443,10 +443,10 @@ Cette fonctionnalité est disponible uniquement pour les appareils anciens"</str
<string name="revanced_share_copy_url_success">URL copiée dans le presse-papiers</string> <string name="revanced_share_copy_url_success">URL copiée dans le presse-papiers</string>
<string name="revanced_share_copy_url_timestamp_success">URL avec horodatage copiée</string> <string name="revanced_share_copy_url_timestamp_success">URL avec horodatage copiée</string>
<string name="revanced_copy_video_url_title">Afficher le bouton \"Copier l\'URL de la vidéo\"</string> <string name="revanced_copy_video_url_title">Afficher le bouton \"Copier l\'URL de la vidéo\"</string>
<string name="revanced_copy_video_url_summary_on">Le bouton est affiché. Appuyez pour copier l\'URL de la vidéo. Appuyez longuement pour copier l\'URL de la vidéo avec l\'horodatage.</string> <string name="revanced_copy_video_url_summary_on">Le bouton est affiché. Appuyez pour copier l\'URL de la vidéo. Appuyez longuement pour copier avec l\'horodatage.</string>
<string name="revanced_copy_video_url_summary_off">Le bouton n\'est pas affiché</string> <string name="revanced_copy_video_url_summary_off">Le bouton n\'est pas affiché</string>
<string name="revanced_copy_video_url_timestamp_title">Afficher un bouton \"Copier URL avec horodatage\"</string> <string name="revanced_copy_video_url_timestamp_title">Afficher un bouton \"Copier URL avec horodatage\"</string>
<string name="revanced_copy_video_url_timestamp_summary_on">Le bouton est affiché. Appuyez pour copier l\'URL de la vidéo avec horodatage. Appuyez longuement pour copier l\'URL de la vidéo sans horodatage.</string> <string name="revanced_copy_video_url_timestamp_summary_on">Le bouton est affiché. Appuyez pour copier l\'URL de la vidéo avec l\'horodatage. Appuyez longuement pour copier sans horodatage.</string>
<string name="revanced_copy_video_url_timestamp_summary_off">Le bouton n\'est pas affiché</string> <string name="revanced_copy_video_url_timestamp_summary_off">Le bouton n\'est pas affiché</string>
</patch> </patch>
<patch id="interaction.dialog.removeViewerDiscretionDialogPatch"> <patch id="interaction.dialog.removeViewerDiscretionDialogPatch">
@@ -663,7 +663,7 @@ Si la modification de ce paramètre ne prend pas effet, essayez de passer en mod
<string name="revanced_hide_player_flyout_video_quality_footer_summary_off">Le pied de page du menu de qualité vidéo est affiché</string> <string name="revanced_hide_player_flyout_video_quality_footer_summary_off">Le pied de page du menu de qualité vidéo est affiché</string>
</patch> </patch>
<patch id="layout.buttons.overlay.hidePlayerOverlayButtonsPatch"> <patch id="layout.buttons.overlay.hidePlayerOverlayButtonsPatch">
<string name="revanced_hide_player_previous_next_buttons_title">Masquer les boutons de vidéo précédente et suivante</string> <string name="revanced_hide_player_previous_next_buttons_title">Masquer les boutons Précédent et Suivant</string>
<string name="revanced_hide_player_previous_next_buttons_summary_on">Les boutons sont masqués</string> <string name="revanced_hide_player_previous_next_buttons_summary_on">Les boutons sont masqués</string>
<string name="revanced_hide_player_previous_next_buttons_summary_off">Les boutons sont affichés</string> <string name="revanced_hide_player_previous_next_buttons_summary_off">Les boutons sont affichés</string>
<string name="revanced_hide_cast_button_title">Masquer le bouton Caster</string> <string name="revanced_hide_cast_button_title">Masquer le bouton Caster</string>
@@ -678,9 +678,9 @@ Si la modification de ce paramètre ne prend pas effet, essayez de passer en mod
<string name="revanced_hide_autoplay_button_summary_off">Le bouton Lecture automatique est affiché</string> <string name="revanced_hide_autoplay_button_summary_off">Le bouton Lecture automatique est affiché</string>
</patch> </patch>
<patch id="layout.hide.endscreencards.hideEndscreenCardsResourcePatch"> <patch id="layout.hide.endscreencards.hideEndscreenCardsResourcePatch">
<string name="revanced_hide_endscreen_cards_title">Masquer les cartes d\'écran de fin</string> <string name="revanced_hide_endscreen_cards_title">Masquer les écrans de fin au format fiche</string>
<string name="revanced_hide_endscreen_cards_summary_on">Les cartes d\'écran de fin sont masquées</string> <string name="revanced_hide_endscreen_cards_summary_on">Les écrans de fin au format fiche sont masqués</string>
<string name="revanced_hide_endscreen_cards_summary_off">Les cartes d\'écran de fin sont affichées</string> <string name="revanced_hide_endscreen_cards_summary_off">Les écrans de fin au format fiche sont affichés</string>
</patch> </patch>
<patch id="layout.hide.fullscreenambientmode.disableFullscreenAmbientModePatch"> <patch id="layout.hide.fullscreenambientmode.disableFullscreenAmbientModePatch">
<string name="revanced_disable_fullscreen_ambient_mode_title">Désactiver le mode ambiant en plein écran</string> <string name="revanced_disable_fullscreen_ambient_mode_title">Désactiver le mode ambiant en plein écran</string>
@@ -808,10 +808,13 @@ Si la modification de ce paramètre ne prend pas effet, essayez de passer en mod
<string name="revanced_hide_shorts_navigation_bar_summary_on">La barre de navigation est masquée</string> <string name="revanced_hide_shorts_navigation_bar_summary_on">La barre de navigation est masquée</string>
<string name="revanced_hide_shorts_navigation_bar_summary_off">La barre de navigation est affichée</string> <string name="revanced_hide_shorts_navigation_bar_summary_off">La barre de navigation est affichée</string>
</patch> </patch>
<patch id="layout.hide.suggestedvideoendscreen.disableSuggestedVideoEndScreenResourcePatch"> <patch id="layout.hide.endscreensuggestion.hideEndScreenSuggestedVideoPatch">
<string name="revanced_disable_suggested_video_end_screen_title">Désactiver l\'écran de fin suggérant une vidéo</string> <string name="revanced_end_screen_suggested_video_title">Masquer l\'écran de fin suggérant une vidéo</string>
<string name="revanced_disable_suggested_video_end_screen_summary_on">Les vidéos suggérées seront désactivées</string> <string name="revanced_end_screen_suggested_video_summary_on">"L'écran de fin suggérant une vidéo est masqué lorsque la lecture automatique est désactivée
<string name="revanced_disable_suggested_video_end_screen_summary_off">Les vidéos suggérées seront affichées</string>
La lecture automatique peut être modifiée dans les paramètres de YouTube :
Paramètres → Lecture → Lecture automatique de la vidéo suivante"</string>
<string name="revanced_end_screen_suggested_video_summary_off">L\'écran de fin suggérant une vidéo est affiché</string>
</patch> </patch>
<patch id="layout.hide.time.hideTimestampPatch"> <patch id="layout.hide.time.hideTimestampPatch">
<string name="revanced_hide_timestamp_title">Masquer le temps écoulé et la durée totale</string> <string name="revanced_hide_timestamp_title">Masquer le temps écoulé et la durée totale</string>
@@ -1107,7 +1110,7 @@ Prêt à soumettre ?"</string>
<string name="revanced_sb_about_api_sum">Les données sont fournies par l\'API SponsorBlock. Appuyez ici pour en savoir plus et pour voir les téléchargements pour les autres plateformes.</string> <string name="revanced_sb_about_api_sum">Les données sont fournies par l\'API SponsorBlock. Appuyez ici pour en savoir plus et pour voir les téléchargements pour les autres plateformes.</string>
</patch> </patch>
<patch id="layout.formfactor.changeFormFactorPatch"> <patch id="layout.formfactor.changeFormFactorPatch">
<string name="revanced_change_form_factor_title">Facteur de forme de la mise en page</string> <string name="revanced_change_form_factor_title">Format de mise en page</string>
<string name="revanced_change_form_factor_entry_1">Par défaut</string> <string name="revanced_change_form_factor_entry_1">Par défaut</string>
<string name="revanced_change_form_factor_entry_2">Téléphone</string> <string name="revanced_change_form_factor_entry_2">Téléphone</string>
<string name="revanced_change_form_factor_entry_3">Tablette</string> <string name="revanced_change_form_factor_entry_3">Tablette</string>
@@ -1118,8 +1121,6 @@ Disposition pour tablette
• Les publications de la communauté sont masquées • Les publications de la communauté sont masquées
Disposition Automotive Disposition Automotive
• Le menu de l'historique des vidéos regardées est masqué
• L'onglet Explorer est restauré
• Les Shorts s'ouvrent dans le lecteur classique • Les Shorts s'ouvrent dans le lecteur classique
• Le flux est organisé par sujets et par chaînes"</string> • Le flux est organisé par sujets et par chaînes"</string>
</patch> </patch>
@@ -1191,7 +1192,7 @@ Si désactivé ultérieurement, il est recommandé d'effacer les données de l'a
</patch> </patch>
<patch id="layout.miniplayer.miniplayerPatch"> <patch id="layout.miniplayer.miniplayerPatch">
<string name="revanced_miniplayer_screen_title">Lecteur réduit</string> <string name="revanced_miniplayer_screen_title">Lecteur réduit</string>
<string name="revanced_miniplayer_screen_summary">Changer le style du lecteur réduit dans l\'application</string> <string name="revanced_miniplayer_screen_summary">Modifier le style du lecteur réduit à l\'intérieur de l\'application</string>
<string name="revanced_miniplayer_type_title">Type de lecteur réduit</string> <string name="revanced_miniplayer_type_title">Type de lecteur réduit</string>
<string name="revanced_miniplayer_type_entry_0">Désactivé</string> <string name="revanced_miniplayer_type_entry_0">Désactivé</string>
<string name="revanced_miniplayer_type_entry_1">Par défaut</string> <string name="revanced_miniplayer_type_entry_1">Par défaut</string>
@@ -1337,8 +1338,8 @@ Activer cette option peut déverrouiller des qualités vidéo supérieures"</str
</patch> </patch>
<patch id="misc.links.openLinksExternallyPatch"> <patch id="misc.links.openLinksExternallyPatch">
<string name="revanced_external_browser_title">Ouvrir les liens dans le navigateur</string> <string name="revanced_external_browser_title">Ouvrir les liens dans le navigateur</string>
<string name="revanced_external_browser_summary_on">Les liens sont ouverts dans une appli externe</string> <string name="revanced_external_browser_summary_on">Les liens sont ouverts dans le navigateur externe</string>
<string name="revanced_external_browser_summary_off">Les liens sont ouverts dans l\'application</string> <string name="revanced_external_browser_summary_off">Les liens sont ouverts dans le navigateur intégré à l\'application</string>
</patch> </patch>
<patch id="misc.privacy.removeTrackingQueryParameterPatch"> <patch id="misc.privacy.removeTrackingQueryParameterPatch">
<string name="revanced_remove_tracking_query_parameter_title">Supprimer le paramètre de suivi</string> <string name="revanced_remove_tracking_query_parameter_title">Supprimer le paramètre de suivi</string>
@@ -1351,22 +1352,30 @@ Activer cette option peut déverrouiller des qualités vidéo supérieures"</str
<string name="revanced_disable_zoom_haptics_summary_off">Le retour haptique est activé</string> <string name="revanced_disable_zoom_haptics_summary_off">Le retour haptique est activé</string>
</patch> </patch>
<patch id="video.audio.forceOriginalAudioPatch"> <patch id="video.audio.forceOriginalAudioPatch">
<string name="revanced_force_original_audio_title">Forcer l\'audio d\'origine</string> <string name="revanced_force_original_audio_title">Forcer la langue audio d\'origine</string>
<string name="revanced_force_original_audio_summary_on">Utilisation de l\'audio d\'origine</string> <string name="revanced_force_original_audio_summary_on">Utilisation de la langue audio d\'origine</string>
<string name="revanced_force_original_audio_summary_off">Utilisation de l\'audio par défaut</string> <string name="revanced_force_original_audio_summary_off">Utilisation de l\'audio par défaut</string>
<string name="revanced_force_original_audio_not_available">Pour utiliser cette fonctionnalité, falsifiez les flux vidéo à l\'aide d\'un client iOS</string> <!-- 'Spoof video streams' should be the same translation used for revanced_spoof_video_streams_screen_title -->
<string name="revanced_force_original_audio_not_available">Pour utiliser cette fonctionnalité, définissez \"Falsifier les flux vidéo\" sur iOS TV</string>
</patch> </patch>
<patch id="video.quality.rememberVideoQualityPatch"> <patch id="video.quality.rememberVideoQualityPatch">
<!-- Translations should use the same text as revanced_custom_playback_speeds_auto --> <!-- Translations should use the same text as revanced_custom_playback_speeds_auto -->
<string name="revanced_video_quality_screen_title">Qualité vidéo</string>
<string name="revanced_video_quality_default_entry_1">Automatique</string> <string name="revanced_video_quality_default_entry_1">Automatique</string>
<string name="revanced_remember_video_quality_last_selected_title">Se souvenir des modifications de la qualité vidéo</string> <string name="revanced_remember_video_quality_last_selected_title">Se souvenir des modifications de la qualité vidéo</string>
<string name="revanced_remember_video_quality_last_selected_summary_on">Les modifications de qualité s\'appliquent à toutes les vidéos</string> <string name="revanced_remember_video_quality_last_selected_summary_on">Les modifications de qualité s\'appliquent à toutes les vidéos</string>
<string name="revanced_remember_video_quality_last_selected_summary_off">Les modifications de qualité s\'appliquent uniquement à la vidéo en cours</string> <string name="revanced_remember_video_quality_last_selected_summary_off">Les modifications de qualité s\'appliquent uniquement à la vidéo en cours</string>
<string name="revanced_video_quality_default_wifi_title">Qualité vidéo par défaut sur un réseau Wi-Fi</string> <string name="revanced_video_quality_default_wifi_title">Qualité vidéo par défaut sur un réseau Wi-Fi</string>
<string name="revanced_video_quality_default_mobile_title">Qualité vidéo par défaut sur le réseau mobile</string> <string name="revanced_video_quality_default_mobile_title">Qualité vidéo par défaut sur le réseau mobile</string>
<string name="revanced_remember_shorts_quality_last_selected_title">Se souvenir des modifications de la qualité des Shorts</string>
<string name="revanced_remember_shorts_quality_last_selected_summary_on">Les modifications de qualité s\'appliquent à toutes les vidéos Shorts</string>
<string name="revanced_remember_shorts_quality_last_selected_summary_off">Les modifications de qualité s\'appliquent uniquement à la vidéo Shorts en cours</string>
<string name="revanced_shorts_quality_default_wifi_title">Qualité Shorts par défaut sur un réseau Wi-Fi</string>
<string name="revanced_shorts_quality_default_mobile_title">Qualité Shorts par défaut sur le réseau mobile</string>
<string name="revanced_remember_video_quality_mobile">mobile</string> <string name="revanced_remember_video_quality_mobile">mobile</string>
<string name="revanced_remember_video_quality_wifi">Wi-Fi</string> <string name="revanced_remember_video_quality_wifi">Wi-Fi</string>
<string name="revanced_remember_video_quality_toast">Nouvelle qualité %1$s par défaut : %2$s</string> <string name="revanced_remember_video_quality_toast">Nouvelle qualité %1$s par défaut : %2$s</string>
<string name="revanced_remember_video_quality_toast_shorts">Nouvelle qualité Shorts %1$s par défaut : %2$s</string>
</patch> </patch>
<patch id="video.speed.button.playbackSpeedButtonPatch"> <patch id="video.speed.button.playbackSpeedButtonPatch">
<string name="revanced_playback_speed_dialog_button_title">Afficher un bouton Vitesse</string> <string name="revanced_playback_speed_dialog_button_title">Afficher un bouton Vitesse</string>

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