mirror of
https://github.com/ReVanced/revanced-patches.git
synced 2026-01-18 00:33:57 +00:00
Compare commits
50 Commits
v5.47.0-de
...
dev
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3401467a6d | ||
|
|
87247590de | ||
|
|
41e2590584 | ||
|
|
778d13ce8b | ||
|
|
19f146c01d | ||
|
|
12b819d20e | ||
|
|
004b5908db | ||
|
|
f4af27dfec | ||
|
|
4cc315952d | ||
|
|
6312fe8d60 | ||
|
|
3d754575a4 | ||
|
|
a3f7609fe3 | ||
|
|
d25dcfe49a | ||
|
|
1cc2cb9cb2 | ||
|
|
f5cbb31724 | ||
|
|
b42ae27ce6 | ||
|
|
43ab29d03d | ||
|
|
789f0a5628 | ||
|
|
da836b667c | ||
|
|
44e7dbcf4d | ||
|
|
195c239000 | ||
|
|
c47beae213 | ||
|
|
cebcfab86a | ||
|
|
71c6cb569e | ||
|
|
6bb6281149 | ||
|
|
16bd96e2bb | ||
|
|
8f3f4c95bb | ||
|
|
da02d68587 | ||
|
|
a429824bb7 | ||
|
|
e0f33468e6 | ||
|
|
315931cbf8 | ||
|
|
dc69f2433e | ||
|
|
73e43b2a49 | ||
|
|
918f04793f | ||
|
|
f1a9537f01 | ||
|
|
1f4f252c81 | ||
|
|
2b560f5fe9 | ||
|
|
f8bd1239cc | ||
|
|
c825ebda37 | ||
|
|
255c00b183 | ||
|
|
0ea3491227 | ||
|
|
5d437b08dd | ||
|
|
018d176914 | ||
|
|
9a77beea8a | ||
|
|
ded8370207 | ||
|
|
4d1104fc32 | ||
|
|
34830ba63b | ||
|
|
7a6894d809 | ||
|
|
144e6e2694 | ||
|
|
847ee189a9 |
3
.github/workflows/build_pull_request.yml
vendored
3
.github/workflows/build_pull_request.yml
vendored
@@ -25,7 +25,8 @@ jobs:
|
|||||||
|
|
||||||
- name: Build
|
- name: Build
|
||||||
env:
|
env:
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
ORG_GRADLE_PROJECT_githubPackagesUsername: ${{ env.GITHUB_ACTOR }}
|
||||||
|
ORG_GRADLE_PROJECT_githubPackagesPassword: ${{ secrets.GITHUB_TOKEN }}
|
||||||
run: ./gradlew :patches:buildAndroid --no-daemon
|
run: ./gradlew :patches:buildAndroid --no-daemon
|
||||||
|
|
||||||
- name: Upload artifacts
|
- name: Upload artifacts
|
||||||
|
|||||||
2
.github/workflows/pull_strings.yml
vendored
2
.github/workflows/pull_strings.yml
vendored
@@ -2,7 +2,7 @@ name: Pull strings
|
|||||||
|
|
||||||
on:
|
on:
|
||||||
schedule:
|
schedule:
|
||||||
- cron: "0 */12 * * *"
|
- cron: "0 0 * * 0"
|
||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
|
|||||||
3
.github/workflows/release.yml
vendored
3
.github/workflows/release.yml
vendored
@@ -31,7 +31,8 @@ jobs:
|
|||||||
|
|
||||||
- name: Build
|
- name: Build
|
||||||
env:
|
env:
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
ORG_GRADLE_PROJECT_githubPackagesUsername: ${{ env.GITHUB_ACTOR }}
|
||||||
|
ORG_GRADLE_PROJECT_githubPackagesPassword: ${{ secrets.GITHUB_TOKEN }}
|
||||||
run: ./gradlew :patches:buildAndroid clean
|
run: ./gradlew :patches:buildAndroid clean
|
||||||
|
|
||||||
- name: Setup Node.js
|
- name: Setup Node.js
|
||||||
|
|||||||
154
CHANGELOG.md
154
CHANGELOG.md
@@ -1,3 +1,157 @@
|
|||||||
|
# [5.48.0-dev.9](https://github.com/ReVanced/revanced-patches/compare/v5.48.0-dev.8...v5.48.0-dev.9) (2026-01-08)
|
||||||
|
|
||||||
|
|
||||||
|
### Features
|
||||||
|
|
||||||
|
* Add `Disable Sentry telemetry` patch ([#6416](https://github.com/ReVanced/revanced-patches/issues/6416)) ([4cc3159](https://github.com/ReVanced/revanced-patches/commit/4cc315952db557c565872de9e8484805f2e42305))
|
||||||
|
* Disable Play Integrity patch ([#6412](https://github.com/ReVanced/revanced-patches/issues/6412)) ([6312fe8](https://github.com/ReVanced/revanced-patches/commit/6312fe8d60da24465c0c1b0fa4e94ceb79873d9c))
|
||||||
|
|
||||||
|
# [5.48.0-dev.8](https://github.com/ReVanced/revanced-patches/compare/v5.48.0-dev.7...v5.48.0-dev.8) (2026-01-04)
|
||||||
|
|
||||||
|
|
||||||
|
### Features
|
||||||
|
|
||||||
|
* **Letterboxd:** Add `Unlock app icons` patch ([#6415](https://github.com/ReVanced/revanced-patches/issues/6415)) ([d25dcfe](https://github.com/ReVanced/revanced-patches/commit/d25dcfe49ac331c9b3dca739ba0be95dbab669cc))
|
||||||
|
|
||||||
|
# [5.48.0-dev.7](https://github.com/ReVanced/revanced-patches/compare/v5.48.0-dev.6...v5.48.0-dev.7) (2026-01-04)
|
||||||
|
|
||||||
|
|
||||||
|
### Features
|
||||||
|
|
||||||
|
* **Strava:** Add `Disable Quick Edit` patch ([#6452](https://github.com/ReVanced/revanced-patches/issues/6452)) ([f5cbb31](https://github.com/ReVanced/revanced-patches/commit/f5cbb31724d15f7e939b96ee0186fd0a108f9fdc))
|
||||||
|
* **Strava:** Add `Overwrite media upload parameters` patch ([#6410](https://github.com/ReVanced/revanced-patches/issues/6410)) ([b42ae27](https://github.com/ReVanced/revanced-patches/commit/b42ae27ce66ebad9e9cfc5b70fc121df5bad7567))
|
||||||
|
|
||||||
|
# [5.48.0-dev.6](https://github.com/ReVanced/revanced-patches/compare/v5.48.0-dev.5...v5.48.0-dev.6) (2026-01-04)
|
||||||
|
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
* Fix build error introduced in `4046bee` ([#6417](https://github.com/ReVanced/revanced-patches/issues/6417)) ([789f0a5](https://github.com/ReVanced/revanced-patches/commit/789f0a562861825065633d172445ebf35a1ba8d8))
|
||||||
|
|
||||||
|
# [5.48.0-dev.5](https://github.com/ReVanced/revanced-patches/compare/v5.48.0-dev.4...v5.48.0-dev.5) (2025-12-30)
|
||||||
|
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
* **Disney+ - Skip ads:** Remove unsupported package names ([#6422](https://github.com/ReVanced/revanced-patches/issues/6422)) ([44e7dbc](https://github.com/ReVanced/revanced-patches/commit/44e7dbcf4d7eaf94dd0164baba847d3e19250154))
|
||||||
|
|
||||||
|
# [5.48.0-dev.4](https://github.com/ReVanced/revanced-patches/compare/v5.48.0-dev.3...v5.48.0-dev.4) (2025-12-29)
|
||||||
|
|
||||||
|
|
||||||
|
### Features
|
||||||
|
|
||||||
|
* **Strava:** Add `Block Snowplow tracking` patch ([#6413](https://github.com/ReVanced/revanced-patches/issues/6413)) ([c47beae](https://github.com/ReVanced/revanced-patches/commit/c47beae21376dd17ab8bc09afe73e9094481bde9))
|
||||||
|
|
||||||
|
# [5.48.0-dev.3](https://github.com/ReVanced/revanced-patches/compare/v5.48.0-dev.2...v5.48.0-dev.3) (2025-12-28)
|
||||||
|
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
* Fix compilation error introduced in `6bb6281` ([#6409](https://github.com/ReVanced/revanced-patches/issues/6409)) ([71c6cb5](https://github.com/ReVanced/revanced-patches/commit/71c6cb569ebf7b93cf73ee391839e5220557ce7c))
|
||||||
|
|
||||||
|
|
||||||
|
### Features
|
||||||
|
|
||||||
|
* **Instagram - Hides navigation buttons:** Add more buttons to hide ([#6390](https://github.com/ReVanced/revanced-patches/issues/6390)) ([6bb6281](https://github.com/ReVanced/revanced-patches/commit/6bb62811493da04812cc3e392e68d874f95cbef9))
|
||||||
|
|
||||||
|
# [5.48.0-dev.2](https://github.com/ReVanced/revanced-patches/compare/v5.48.0-dev.1...v5.48.0-dev.2) (2025-12-27)
|
||||||
|
|
||||||
|
|
||||||
|
### Features
|
||||||
|
|
||||||
|
* **Strava:** Add `Enable password login` patch ([#6396](https://github.com/ReVanced/revanced-patches/issues/6396)) ([8f3f4c9](https://github.com/ReVanced/revanced-patches/commit/8f3f4c95bb8f151fc9a2c272bf7d0e905c2f01fc))
|
||||||
|
|
||||||
|
# [5.48.0-dev.1](https://github.com/ReVanced/revanced-patches/compare/v5.47.0...v5.48.0-dev.1) (2025-12-23)
|
||||||
|
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
* Fix compilation error introduced in dc69f243 ([#6392](https://github.com/ReVanced/revanced-patches/issues/6392)) ([a429824](https://github.com/ReVanced/revanced-patches/commit/a429824bb77b49aea14b0b54f2204ae24d5209a1))
|
||||||
|
* **YouTube - Hide layout components:** Hide new type of crowdfunding box ([#6380](https://github.com/ReVanced/revanced-patches/issues/6380)) ([dc69f24](https://github.com/ReVanced/revanced-patches/commit/dc69f2433e2650654e2dffdd76b0b0c8a52bf515))
|
||||||
|
|
||||||
|
|
||||||
|
### Features
|
||||||
|
|
||||||
|
* **ProtonVPN:** Add `Unlock split tunneling` patch ([#6353](https://github.com/ReVanced/revanced-patches/issues/6353)) ([e0f3346](https://github.com/ReVanced/revanced-patches/commit/e0f33468e6e96b9f10cf35ec67622d6488528c90))
|
||||||
|
* **SBS On Demand:** Add `Remove ads` patch ([#6378](https://github.com/ReVanced/revanced-patches/issues/6378)) ([315931c](https://github.com/ReVanced/revanced-patches/commit/315931cbf8f61cd4b3a54ace1ff03685d748614c))
|
||||||
|
|
||||||
|
# [5.47.0](https://github.com/ReVanced/revanced-patches/compare/v5.46.0...v5.47.0) (2025-12-18)
|
||||||
|
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
* **Instagram - Disable signature check:** Change patch to default excluded ([#6283](https://github.com/ReVanced/revanced-patches/issues/6283)) ([bb745b5](https://github.com/ReVanced/revanced-patches/commit/bb745b555b3808b7679c5995319aa365630fbd76))
|
||||||
|
* **Lightroom:** Add `Disable version check` patch to fix opening the app ([#6315](https://github.com/ReVanced/revanced-patches/issues/6315)) ([018d176](https://github.com/ReVanced/revanced-patches/commit/018d176914a06a30e9007a3eb2e6b0f459078413))
|
||||||
|
* **Reddit - Hide ads:** Update patch for new versions of Reddit ([#6342](https://github.com/ReVanced/revanced-patches/issues/6342)) ([f8bd123](https://github.com/ReVanced/revanced-patches/commit/f8bd1239cc0f0bd1c2dca39f846951bf512891e3))
|
||||||
|
* **Spotify:** Make patches work with latest versions again ([#6359](https://github.com/ReVanced/revanced-patches/issues/6359)) ([34830ba](https://github.com/ReVanced/revanced-patches/commit/34830ba63b436146064f0f89f948d51cd0cb9146))
|
||||||
|
* **YouTube - Hide layout components:** Fix "Hide Subscribe button" in channel page not working ([#6363](https://github.com/ReVanced/revanced-patches/issues/6363)) ([ded8370](https://github.com/ReVanced/revanced-patches/commit/ded83702077701aac8a8749d71bf7376427f37d6))
|
||||||
|
* **YouTube - Hide player flyout menu items:** Allow hiding audio menu with 'Android No SDK' client type ([9495cf4](https://github.com/ReVanced/revanced-patches/commit/9495cf49ef8a872be64de6c971c1919b4b9a8720))
|
||||||
|
* **YouTube - Sanitize sharing links:** Handle non hierarchical urls ([654d091](https://github.com/ReVanced/revanced-patches/commit/654d091e650cda37650b57cbf3ba6f1cdd6d47d3))
|
||||||
|
|
||||||
|
|
||||||
|
### Features
|
||||||
|
|
||||||
|
* **Disney+ - SkipAds:** Add other package names the patch is compatible with ([#6372](https://github.com/ReVanced/revanced-patches/issues/6372)) ([1f4f252](https://github.com/ReVanced/revanced-patches/commit/1f4f252c81e9a89267f6e37548e66027b1bc1a1a))
|
||||||
|
* **Disney+:** Add `Skip ads` patch ([#6343](https://github.com/ReVanced/revanced-patches/issues/6343)) ([6bd7dca](https://github.com/ReVanced/revanced-patches/commit/6bd7dca75bd2ea335a596aa93a8b767d39be5f83))
|
||||||
|
* **IdAustria - Remove device integrity check:** Update patch to work with latest version ([#6360](https://github.com/ReVanced/revanced-patches/issues/6360)) ([0ea3491](https://github.com/ReVanced/revanced-patches/commit/0ea3491227fc50c03555d43d3fec78eb82906b26))
|
||||||
|
* **Instagram:** Add `Anonymous story viewing` patch ([#6263](https://github.com/ReVanced/revanced-patches/issues/6263)) ([94ae84a](https://github.com/ReVanced/revanced-patches/commit/94ae84ad0fc3a9197c82d5356301d464730c3b17))
|
||||||
|
* **Instagram:** Add `Disable auto story flipping` patch ([#6262](https://github.com/ReVanced/revanced-patches/issues/6262)) ([2f0de15](https://github.com/ReVanced/revanced-patches/commit/2f0de15e67e4f99ed6ecdc136d04cceb23b0d069))
|
||||||
|
* **Instagram:** Add `Disable Reels scrolling` patch ([#6317](https://github.com/ReVanced/revanced-patches/issues/6317)) ([0928dcd](https://github.com/ReVanced/revanced-patches/commit/0928dcd00dc2a9c1eef9a23c1e26ff5dc9ee670a))
|
||||||
|
* **Letterboxd:** Add `Hide ads` patch ([#6309](https://github.com/ReVanced/revanced-patches/issues/6309)) ([0af0ee9](https://github.com/ReVanced/revanced-patches/commit/0af0ee92c48bb2ffc332197e05439e20c5c05d83))
|
||||||
|
* **Peacock TV:** Add `Hide ads` patch ([#6348](https://github.com/ReVanced/revanced-patches/issues/6348)) ([847ee18](https://github.com/ReVanced/revanced-patches/commit/847ee189a971e6d4a99823998569f8e561b8319c))
|
||||||
|
* **ProtonVPN:** Add `Remove delay` patch ([#6326](https://github.com/ReVanced/revanced-patches/issues/6326)) ([bbd8932](https://github.com/ReVanced/revanced-patches/commit/bbd8932b2e740aff96ba047332e541bff3e09436))
|
||||||
|
* **Spoof SIM provider:** Spoof additional TelephonyManager methods ([#6293](https://github.com/ReVanced/revanced-patches/issues/6293)) ([ac583d4](https://github.com/ReVanced/revanced-patches/commit/ac583d40d0f4c0e6544e3661ff3e82a25912f2b0))
|
||||||
|
* **YouTube - Hide layout components:** Add "Hide cell divider", "Hide featured links", and "Hide featured videos" options ([#6335](https://github.com/ReVanced/revanced-patches/issues/6335)) ([a5d197b](https://github.com/ReVanced/revanced-patches/commit/a5d197b9775b98d7a37bfdee9e5f726d5e04d8cf))
|
||||||
|
* **YouTube - Hide layout components:** Add "Hide Join button" and "Hide Subscribe button" options for channel page ([#6345](https://github.com/ReVanced/revanced-patches/issues/6345)) ([02831a6](https://github.com/ReVanced/revanced-patches/commit/02831a6069fc30ffa3a87f8e4de653d003a2187e))
|
||||||
|
* **YouTube - Hide Shorts components:** Add "Hide auto-dubbed label" and "Hide live preview" options ([#6334](https://github.com/ReVanced/revanced-patches/issues/6334)) ([a7c220a](https://github.com/ReVanced/revanced-patches/commit/a7c220a4aea93ea7ae7005b5760443d7571c4228))
|
||||||
|
|
||||||
|
# [5.47.0-dev.18](https://github.com/ReVanced/revanced-patches/compare/v5.47.0-dev.17...v5.47.0-dev.18) (2025-12-18)
|
||||||
|
|
||||||
|
|
||||||
|
### Features
|
||||||
|
|
||||||
|
* **Disney+ - SkipAds:** Add other package names the patch is compatible with ([#6372](https://github.com/ReVanced/revanced-patches/issues/6372)) ([1f4f252](https://github.com/ReVanced/revanced-patches/commit/1f4f252c81e9a89267f6e37548e66027b1bc1a1a))
|
||||||
|
|
||||||
|
# [5.47.0-dev.17](https://github.com/ReVanced/revanced-patches/compare/v5.47.0-dev.16...v5.47.0-dev.17) (2025-12-18)
|
||||||
|
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
* **Reddit - Hide ads:** Update patch for new versions of Reddit ([#6342](https://github.com/ReVanced/revanced-patches/issues/6342)) ([f8bd123](https://github.com/ReVanced/revanced-patches/commit/f8bd1239cc0f0bd1c2dca39f846951bf512891e3))
|
||||||
|
|
||||||
|
# [5.47.0-dev.16](https://github.com/ReVanced/revanced-patches/compare/v5.47.0-dev.15...v5.47.0-dev.16) (2025-12-15)
|
||||||
|
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
* **Lightroom:** Add `Disable version check` patch to fix opening the app ([#6315](https://github.com/ReVanced/revanced-patches/issues/6315)) ([018d176](https://github.com/ReVanced/revanced-patches/commit/018d176914a06a30e9007a3eb2e6b0f459078413))
|
||||||
|
|
||||||
|
|
||||||
|
### Features
|
||||||
|
|
||||||
|
* **IdAustria - Remove device integrity check:** Update patch to work with latest version ([#6360](https://github.com/ReVanced/revanced-patches/issues/6360)) ([0ea3491](https://github.com/ReVanced/revanced-patches/commit/0ea3491227fc50c03555d43d3fec78eb82906b26))
|
||||||
|
|
||||||
|
# [5.47.0-dev.15](https://github.com/ReVanced/revanced-patches/compare/v5.47.0-dev.14...v5.47.0-dev.15) (2025-12-13)
|
||||||
|
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
* **YouTube - Hide layout components:** Fix "Hide Subscribe button" in channel page not working ([#6363](https://github.com/ReVanced/revanced-patches/issues/6363)) ([ded8370](https://github.com/ReVanced/revanced-patches/commit/ded83702077701aac8a8749d71bf7376427f37d6))
|
||||||
|
|
||||||
|
# [5.47.0-dev.14](https://github.com/ReVanced/revanced-patches/compare/v5.47.0-dev.13...v5.47.0-dev.14) (2025-12-13)
|
||||||
|
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
* **Spotify:** Make patches work with latest versions again ([#6359](https://github.com/ReVanced/revanced-patches/issues/6359)) ([34830ba](https://github.com/ReVanced/revanced-patches/commit/34830ba63b436146064f0f89f948d51cd0cb9146))
|
||||||
|
|
||||||
|
# [5.47.0-dev.13](https://github.com/ReVanced/revanced-patches/compare/v5.47.0-dev.12...v5.47.0-dev.13) (2025-12-10)
|
||||||
|
|
||||||
|
|
||||||
|
### Features
|
||||||
|
|
||||||
|
* **Peacock TV:** Add `Hide ads` patch ([#6348](https://github.com/ReVanced/revanced-patches/issues/6348)) ([847ee18](https://github.com/ReVanced/revanced-patches/commit/847ee189a971e6d4a99823998569f8e561b8319c))
|
||||||
|
|
||||||
# [5.47.0-dev.12](https://github.com/ReVanced/revanced-patches/compare/v5.47.0-dev.11...v5.47.0-dev.12) (2025-12-08)
|
# [5.47.0-dev.12](https://github.com/ReVanced/revanced-patches/compare/v5.47.0-dev.11...v5.47.0-dev.12) (2025-12-08)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -97,9 +97,9 @@ Thank you for considering contributing to ReVanced Patches. You can find the con
|
|||||||
|
|
||||||
To build ReVanced Patches, you can follow the [ReVanced documentation](https://github.com/ReVanced/revanced-documentation).
|
To build ReVanced Patches, you can follow the [ReVanced documentation](https://github.com/ReVanced/revanced-documentation).
|
||||||
|
|
||||||
## 📜 Licence
|
## 📜 License
|
||||||
|
|
||||||
ReVanced Patches is licensed under the GPLv3 license. Please see the [license file](LICENSE) for more information.
|
ReVanced Patches is licensed under the GPLv3 license. Please see the [license file](LICENSE) for more information.
|
||||||
[tl;dr](https://www.tldrlegal.com/license/gnu-general-public-license-v3-gpl-3) you may copy, distribute and modify ReVanced Patches as long as you track changes/dates in source files.
|
[tl;dr](https://www.tldrlegal.com/license/gnu-general-public-license-v3-gpl-3) you may copy, distribute and modify ReVanced Patches as long as you track changes/dates in source files.
|
||||||
Any modifications to ReVanced Patches must also be made available under the GPL,
|
Any modifications to ReVanced Patches must also be made available under the GPL,
|
||||||
along with build & install instructions.
|
along with build & install instructions.
|
||||||
|
|||||||
@@ -1,8 +1,9 @@
|
|||||||
project_id_env: "CROWDIN_PROJECT_ID"
|
project_id_env: "CROWDIN_PROJECT_ID"
|
||||||
api_token_env: "CROWDIN_PERSONAL_TOKEN"
|
api_token_env: "CROWDIN_PERSONAL_TOKEN"
|
||||||
|
|
||||||
preserve_hierarchy: false
|
preserve_hierarchy: true
|
||||||
files:
|
files:
|
||||||
- source: patches/src/main/resources/addresources/values/strings.xml
|
- source: patches/src/main/resources/addresources/values/strings.xml
|
||||||
|
dest: patches.xml
|
||||||
translation: patches/src/main/resources/addresources/values-%android_code%/strings.xml
|
translation: patches/src/main/resources/addresources/values-%android_code%/strings.xml
|
||||||
skip_untranslated_strings: true
|
skip_untranslated_strings: true
|
||||||
|
|||||||
20
extensions/all/misc/disable-play-integrity/build.gradle.kts
Normal file
20
extensions/all/misc/disable-play-integrity/build.gradle.kts
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
android {
|
||||||
|
namespace = "app.revanced.extension"
|
||||||
|
|
||||||
|
defaultConfig {
|
||||||
|
minSdk = 21
|
||||||
|
}
|
||||||
|
|
||||||
|
compileOptions {
|
||||||
|
sourceCompatibility = JavaVersion.VERSION_11
|
||||||
|
targetCompatibility = JavaVersion.VERSION_11
|
||||||
|
}
|
||||||
|
|
||||||
|
buildFeatures {
|
||||||
|
aidl = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
dependencies {
|
||||||
|
compileOnly(libs.annotation)
|
||||||
|
}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
<manifest/>
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
package com.google.android.play.core.integrity.protocol;
|
||||||
|
|
||||||
|
import android.os.Bundle;
|
||||||
|
import com.google.android.play.core.integrity.protocol.IExpressIntegrityServiceCallback;
|
||||||
|
|
||||||
|
interface IExpressIntegrityService {
|
||||||
|
oneway void requestIntegrityToken(in Bundle request, IExpressIntegrityServiceCallback callback) = 2;
|
||||||
|
}
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
package com.google.android.play.core.integrity.protocol;
|
||||||
|
|
||||||
|
interface IExpressIntegrityServiceCallback {
|
||||||
|
oneway void onRequestExpressIntegrityTokenResult(in Bundle result) = 2;
|
||||||
|
}
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
package com.google.android.play.core.integrity.protocol;
|
||||||
|
|
||||||
|
import android.os.Bundle;
|
||||||
|
import com.google.android.play.core.integrity.protocol.IIntegrityServiceCallback;
|
||||||
|
|
||||||
|
interface IIntegrityService {
|
||||||
|
oneway void requestIntegrityToken(in Bundle request, IIntegrityServiceCallback callback) = 1;
|
||||||
|
}
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
package com.google.android.play.core.integrity.protocol;
|
||||||
|
|
||||||
|
import android.os.Bundle;
|
||||||
|
|
||||||
|
interface IIntegrityServiceCallback {
|
||||||
|
oneway void onResult(in Bundle result) = 1;
|
||||||
|
}
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
package android.ext;
|
||||||
|
/** @hide */
|
||||||
|
// Int values that are assigned to packages in this interface can be retrieved at runtime from
|
||||||
|
// ApplicationInfo.ext().getPackageId() or from AndroidPackage.ext().getPackageId() (in system_server).
|
||||||
|
//
|
||||||
|
// PackageIds are assigned to parsed APKs only after they are verified, either by a certificate check
|
||||||
|
// or by a check that the APK is stored on an immutable OS partition.
|
||||||
|
public interface PackageId {
|
||||||
|
String PLAY_STORE_NAME = "com.android.vending";
|
||||||
|
}
|
||||||
@@ -0,0 +1,62 @@
|
|||||||
|
package android.os;
|
||||||
|
|
||||||
|
import androidx.annotation.NonNull;
|
||||||
|
import androidx.annotation.Nullable;
|
||||||
|
|
||||||
|
import java.io.FileDescriptor;
|
||||||
|
|
||||||
|
/** @hide */
|
||||||
|
public class BinderWrapper implements IBinder {
|
||||||
|
protected final IBinder base;
|
||||||
|
|
||||||
|
public BinderWrapper(IBinder base) {
|
||||||
|
this.base = base;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean transact(int code, @NonNull Parcel data, @Nullable Parcel reply, int flags) throws RemoteException {
|
||||||
|
return base.transact(code, data, reply, flags);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Nullable
|
||||||
|
@Override
|
||||||
|
public IInterface queryLocalInterface(@NonNull String descriptor) {
|
||||||
|
return base.queryLocalInterface(descriptor);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Nullable
|
||||||
|
@Override
|
||||||
|
public String getInterfaceDescriptor() throws RemoteException {
|
||||||
|
return base.getInterfaceDescriptor();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean pingBinder() {
|
||||||
|
return base.pingBinder();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isBinderAlive() {
|
||||||
|
return base.isBinderAlive();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void dump(@NonNull FileDescriptor fd, @Nullable String[] args) throws RemoteException {
|
||||||
|
base.dump(fd, args);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void dumpAsync(@NonNull FileDescriptor fd, @Nullable String[] args) throws RemoteException {
|
||||||
|
base.dumpAsync(fd, args);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void linkToDeath(@NonNull DeathRecipient recipient, int flags) throws RemoteException {
|
||||||
|
base.linkToDeath(recipient, flags);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean unlinkToDeath(@NonNull DeathRecipient recipient, int flags) {
|
||||||
|
return base.unlinkToDeath(recipient, flags);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,41 @@
|
|||||||
|
package app.grapheneos.gmscompat.lib.playintegrity;
|
||||||
|
|
||||||
|
import android.os.Binder;
|
||||||
|
import android.os.Bundle;
|
||||||
|
import android.os.IBinder;
|
||||||
|
import android.os.RemoteException;
|
||||||
|
import android.util.Log;
|
||||||
|
|
||||||
|
import com.android.internal.os.FakeBackgroundHandler;
|
||||||
|
import com.google.android.play.core.integrity.protocol.IIntegrityService;
|
||||||
|
import com.google.android.play.core.integrity.protocol.IIntegrityServiceCallback;
|
||||||
|
|
||||||
|
class ClassicPlayIntegrityServiceWrapper extends PlayIntegrityServiceWrapper {
|
||||||
|
|
||||||
|
ClassicPlayIntegrityServiceWrapper(IBinder base) {
|
||||||
|
super(base);
|
||||||
|
requestIntegrityTokenTxnCode = 2; // IIntegrityService.Stub.TRANSACTION_requestIntegrityToken
|
||||||
|
}
|
||||||
|
|
||||||
|
static class TokenRequestStub extends IIntegrityService.Stub {
|
||||||
|
public void requestIntegrityToken(Bundle request, IIntegrityServiceCallback callback) {
|
||||||
|
Runnable r = () -> {
|
||||||
|
var result = new Bundle();
|
||||||
|
// https://developer.android.com/google/play/integrity/reference/com/google/android/play/core/integrity/model/IntegrityErrorCode.html#API_NOT_AVAILABLE
|
||||||
|
final int API_NOT_AVAILABLE = -1;
|
||||||
|
result.putInt("error", API_NOT_AVAILABLE);
|
||||||
|
try {
|
||||||
|
callback.onResult(result);
|
||||||
|
} catch (RemoteException e) {
|
||||||
|
Log.e("IIntegrityService.Stub", "", e);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
FakeBackgroundHandler.getHandler().postDelayed(r, getTokenRequestResultDelay());
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected Binder createTokenRequestStub() {
|
||||||
|
return new TokenRequestStub();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,48 @@
|
|||||||
|
package app.grapheneos.gmscompat.lib.playintegrity;
|
||||||
|
|
||||||
|
import android.os.Binder;
|
||||||
|
import android.os.BinderWrapper;
|
||||||
|
import android.os.IBinder;
|
||||||
|
import android.os.Parcel;
|
||||||
|
import android.os.RemoteException;
|
||||||
|
import android.util.Log;
|
||||||
|
|
||||||
|
import androidx.annotation.Nullable;
|
||||||
|
|
||||||
|
abstract class PlayIntegrityServiceWrapper extends BinderWrapper {
|
||||||
|
final String TAG;
|
||||||
|
protected int requestIntegrityTokenTxnCode;
|
||||||
|
|
||||||
|
public PlayIntegrityServiceWrapper(IBinder base) {
|
||||||
|
super(base);
|
||||||
|
TAG = getClass().getSimpleName();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected abstract Binder createTokenRequestStub();
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean transact(int code, Parcel data, @Nullable Parcel reply, int flags) throws RemoteException {
|
||||||
|
if (code == requestIntegrityTokenTxnCode) {
|
||||||
|
if (maybeStubOutIntegrityTokenRequest(code, data, reply, flags)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return super.transact(code, data, reply, flags);
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean maybeStubOutIntegrityTokenRequest(int code, Parcel data, @Nullable Parcel reply, int flags) {
|
||||||
|
Log.d(TAG, "integrity token request detected");
|
||||||
|
|
||||||
|
try {
|
||||||
|
createTokenRequestStub().transact(code, data, reply, flags);
|
||||||
|
} catch (RemoteException e) {
|
||||||
|
// this is a local call
|
||||||
|
throw new IllegalStateException(e);
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected static long getTokenRequestResultDelay() {
|
||||||
|
return 500L;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,35 @@
|
|||||||
|
package app.grapheneos.gmscompat.lib.playintegrity;
|
||||||
|
|
||||||
|
import android.content.Intent;
|
||||||
|
import android.content.ServiceConnection;
|
||||||
|
import android.ext.PackageId;
|
||||||
|
import android.os.IBinder;
|
||||||
|
import androidx.annotation.Nullable;
|
||||||
|
import app.grapheneos.gmscompat.lib.util.ServiceConnectionWrapper;
|
||||||
|
import java.util.function.UnaryOperator;
|
||||||
|
|
||||||
|
public class PlayIntegrityUtils {
|
||||||
|
|
||||||
|
public static @Nullable ServiceConnection maybeReplaceServiceConnection(Intent service, ServiceConnection orig) {
|
||||||
|
if (PackageId.PLAY_STORE_NAME.equals(service.getPackage())) {
|
||||||
|
UnaryOperator<IBinder> binderOverride = null;
|
||||||
|
|
||||||
|
final String CLASSIC_SERVICE =
|
||||||
|
"com.google.android.play.core.integrityservice.BIND_INTEGRITY_SERVICE";
|
||||||
|
final String STANDARD_SERVICE =
|
||||||
|
"com.google.android.play.core.expressintegrityservice.BIND_EXPRESS_INTEGRITY_SERVICE";
|
||||||
|
|
||||||
|
String action = service.getAction();
|
||||||
|
if (STANDARD_SERVICE.equals(action)) {
|
||||||
|
binderOverride = StandardPlayIntegrityServiceWrapper::new;
|
||||||
|
} else if (CLASSIC_SERVICE.equals(action)) {
|
||||||
|
binderOverride = ClassicPlayIntegrityServiceWrapper::new;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (binderOverride != null) {
|
||||||
|
return new ServiceConnectionWrapper(orig, binderOverride);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,42 @@
|
|||||||
|
package app.grapheneos.gmscompat.lib.playintegrity;
|
||||||
|
|
||||||
|
import android.annotation.SuppressLint;
|
||||||
|
import android.os.Binder;
|
||||||
|
import android.os.Bundle;
|
||||||
|
import android.os.IBinder;
|
||||||
|
import android.os.RemoteException;
|
||||||
|
import android.util.Log;
|
||||||
|
import com.android.internal.os.FakeBackgroundHandler;
|
||||||
|
import com.google.android.play.core.integrity.protocol.IExpressIntegrityService;
|
||||||
|
import com.google.android.play.core.integrity.protocol.IExpressIntegrityServiceCallback;
|
||||||
|
|
||||||
|
@SuppressLint("LongLogTag")
|
||||||
|
class StandardPlayIntegrityServiceWrapper extends PlayIntegrityServiceWrapper {
|
||||||
|
|
||||||
|
StandardPlayIntegrityServiceWrapper(IBinder base) {
|
||||||
|
super(base);
|
||||||
|
requestIntegrityTokenTxnCode = 3; // IExpressIntegrityService.Stub.TRANSACTION_requestIntegrityToken
|
||||||
|
}
|
||||||
|
|
||||||
|
static class TokenRequestStub extends IExpressIntegrityService.Stub {
|
||||||
|
public void requestIntegrityToken(Bundle request, IExpressIntegrityServiceCallback callback) {
|
||||||
|
Runnable r = () -> {
|
||||||
|
var result = new Bundle();
|
||||||
|
// https://developer.android.com/google/play/integrity/reference/com/google/android/play/core/integrity/model/StandardIntegrityErrorCode.html#API_NOT_AVAILABLE
|
||||||
|
final int API_NOT_AVAILABLE = -1;
|
||||||
|
result.putInt("error", API_NOT_AVAILABLE);
|
||||||
|
try {
|
||||||
|
callback.onRequestExpressIntegrityTokenResult(result);
|
||||||
|
} catch (RemoteException e) {
|
||||||
|
Log.e("IExpressIntegrityService.Stub", "", e);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
FakeBackgroundHandler.getHandler().postDelayed(r, getTokenRequestResultDelay());
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected Binder createTokenRequestStub() {
|
||||||
|
return new TokenRequestStub();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,49 @@
|
|||||||
|
package app.grapheneos.gmscompat.lib.util;
|
||||||
|
|
||||||
|
import android.content.ComponentName;
|
||||||
|
import android.content.ServiceConnection;
|
||||||
|
import android.os.Build;
|
||||||
|
import android.os.IBinder;
|
||||||
|
|
||||||
|
import java.util.function.UnaryOperator;
|
||||||
|
|
||||||
|
public class ServiceConnectionWrapper implements ServiceConnection {
|
||||||
|
private final ServiceConnection base;
|
||||||
|
private final UnaryOperator<IBinder> binderOverride;
|
||||||
|
|
||||||
|
public ServiceConnectionWrapper(ServiceConnection base, UnaryOperator<IBinder> binderOverride) {
|
||||||
|
this.base = base;
|
||||||
|
this.binderOverride = binderOverride;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onServiceConnected(ComponentName name, IBinder service) {
|
||||||
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
|
||||||
|
IBinder override = binderOverride.apply(service);
|
||||||
|
if (override != null) {
|
||||||
|
service = override;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
base.onServiceConnected(name, service);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onServiceDisconnected(ComponentName name) {
|
||||||
|
base.onServiceDisconnected(name);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onBindingDied(ComponentName name) {
|
||||||
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
||||||
|
base.onBindingDied(name);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onNullBinding(ComponentName name) {
|
||||||
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
|
||||||
|
base.onNullBinding(name);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
package app.revanced.extension.playintegrity;
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
|
import android.content.Intent;
|
||||||
|
import android.content.ServiceConnection;
|
||||||
|
import app.grapheneos.gmscompat.lib.playintegrity.PlayIntegrityUtils;
|
||||||
|
|
||||||
|
public class DisablePlayIntegrityPatch {
|
||||||
|
public static boolean bindService(Context context, Intent service, ServiceConnection conn, int flags) {
|
||||||
|
ServiceConnection override = PlayIntegrityUtils.maybeReplaceServiceConnection(service, conn);
|
||||||
|
if (override != null) {
|
||||||
|
conn = override;
|
||||||
|
}
|
||||||
|
|
||||||
|
return context.bindService(service, conn, flags);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
package com.android.internal.os;
|
||||||
|
|
||||||
|
import android.os.Handler;
|
||||||
|
import android.os.Looper;
|
||||||
|
|
||||||
|
public class FakeBackgroundHandler {
|
||||||
|
|
||||||
|
public static Handler getHandler() {
|
||||||
|
return new Handler(Looper.getMainLooper());
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -311,6 +311,10 @@ public class Utils {
|
|||||||
return resourceId;
|
return resourceId;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static String getResourceString(int id) throws Resources.NotFoundException {
|
||||||
|
return getContext().getResources().getString(id);
|
||||||
|
}
|
||||||
|
|
||||||
public static int getResourceInteger(String resourceIdentifierName) throws Resources.NotFoundException {
|
public static int getResourceInteger(String resourceIdentifierName) throws Resources.NotFoundException {
|
||||||
return getContext().getResources().getInteger(getResourceIdentifierOrThrow(resourceIdentifierName, "integer"));
|
return getContext().getResources().getInteger(getResourceIdentifierOrThrow(resourceIdentifierName, "integer"));
|
||||||
}
|
}
|
||||||
|
|||||||
5
extensions/strava/build.gradle.kts
Normal file
5
extensions/strava/build.gradle.kts
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
dependencies {
|
||||||
|
compileOnly(project(":extensions:shared:library"))
|
||||||
|
compileOnly(project(":extensions:strava:stub"))
|
||||||
|
compileOnly(libs.okhttp)
|
||||||
|
}
|
||||||
1
extensions/strava/src/main/AndroidManifest.xml
Normal file
1
extensions/strava/src/main/AndroidManifest.xml
Normal file
@@ -0,0 +1 @@
|
|||||||
|
<manifest/>
|
||||||
@@ -0,0 +1,216 @@
|
|||||||
|
package app.revanced.extension.strava;
|
||||||
|
|
||||||
|
import android.annotation.SuppressLint;
|
||||||
|
import android.content.ContentResolver;
|
||||||
|
import android.content.ContentValues;
|
||||||
|
import android.content.Context;
|
||||||
|
import android.net.Uri;
|
||||||
|
import android.os.Build;
|
||||||
|
import android.os.Environment;
|
||||||
|
import android.provider.MediaStore;
|
||||||
|
import android.webkit.MimeTypeMap;
|
||||||
|
|
||||||
|
import com.strava.core.data.MediaType;
|
||||||
|
import com.strava.photos.data.Media;
|
||||||
|
|
||||||
|
import okhttp3.*;
|
||||||
|
|
||||||
|
import java.io.BufferedReader;
|
||||||
|
import java.io.InputStream;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.OutputStream;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.concurrent.ExecutionException;
|
||||||
|
import java.util.concurrent.Future;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
import java.util.stream.Stream;
|
||||||
|
|
||||||
|
import app.revanced.extension.shared.Utils;
|
||||||
|
|
||||||
|
@SuppressLint("NewApi")
|
||||||
|
public final class AddMediaDownloadPatch {
|
||||||
|
public static final int ACTION_DOWNLOAD = -1;
|
||||||
|
public static final int ACTION_OPEN_LINK = -2;
|
||||||
|
public static final int ACTION_COPY_LINK = -3;
|
||||||
|
|
||||||
|
private static final OkHttpClient client = new OkHttpClient();
|
||||||
|
|
||||||
|
public static boolean handleAction(int actionId, Media media) {
|
||||||
|
String url = getUrl(media);
|
||||||
|
switch (actionId) {
|
||||||
|
case ACTION_DOWNLOAD:
|
||||||
|
String name = media.getId();
|
||||||
|
if (media.getType() == MediaType.VIDEO) {
|
||||||
|
downloadVideo(url, name);
|
||||||
|
} else {
|
||||||
|
downloadPhoto(url, name);
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
case ACTION_OPEN_LINK:
|
||||||
|
Utils.openLink(url);
|
||||||
|
return true;
|
||||||
|
case ACTION_COPY_LINK:
|
||||||
|
copyLink(url);
|
||||||
|
return true;
|
||||||
|
default:
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void copyLink(CharSequence url) {
|
||||||
|
Utils.setClipboard(url);
|
||||||
|
showInfoToast("link_copied_to_clipboard", "🔗");
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void downloadPhoto(String url, String name) {
|
||||||
|
showInfoToast("loading", "⏳");
|
||||||
|
Utils.runOnBackgroundThread(() -> {
|
||||||
|
try (Response response = fetch(url)) {
|
||||||
|
ResponseBody body = response.body();
|
||||||
|
String mimeType = body.contentType().toString();
|
||||||
|
String extension = MimeTypeMap.getSingleton().getExtensionFromMimeType(mimeType);
|
||||||
|
ContentResolver resolver = Utils.getContext().getContentResolver();
|
||||||
|
ContentValues values = new ContentValues();
|
||||||
|
values.put(MediaStore.Images.Media.DISPLAY_NAME, name + '.' + extension);
|
||||||
|
values.put(MediaStore.Images.Media.IS_PENDING, 1);
|
||||||
|
values.put(MediaStore.Images.Media.MIME_TYPE, mimeType);
|
||||||
|
values.put(MediaStore.Images.Media.RELATIVE_PATH, Environment.DIRECTORY_PICTURES + "/Strava");
|
||||||
|
Uri collection = Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q
|
||||||
|
? MediaStore.Images.Media.getContentUri(MediaStore.VOLUME_EXTERNAL)
|
||||||
|
: MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
|
||||||
|
Uri row = resolver.insert(collection, values);
|
||||||
|
try (OutputStream outputStream = resolver.openOutputStream(row)) {
|
||||||
|
transferTo(body.byteStream(), outputStream);
|
||||||
|
} finally {
|
||||||
|
values.clear();
|
||||||
|
values.put(MediaStore.Images.Media.IS_PENDING, 0);
|
||||||
|
resolver.update(row, values, null);
|
||||||
|
}
|
||||||
|
showInfoToast("yis_2024_local_save_image_success", "✔️");
|
||||||
|
} catch (IOException e) {
|
||||||
|
showErrorToast("download_failure", "❌", e);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Downloads a video in the M3U8 / HLS (HTTP Live Streaming) format.
|
||||||
|
*/
|
||||||
|
public static void downloadVideo(String url, String name) {
|
||||||
|
// The first request yields multiple URLs with different stream options.
|
||||||
|
// In case of Strava, the first one is always of highest quality.
|
||||||
|
// Each stream can consist of multiple chunks.
|
||||||
|
// The second request yields the URLs of all of these chunks.
|
||||||
|
// Fetch all of them concurrently and pipe their streams into the file in order.
|
||||||
|
showInfoToast("loading", "⏳");
|
||||||
|
Utils.runOnBackgroundThread(() -> {
|
||||||
|
try {
|
||||||
|
String highestQualityStreamUrl;
|
||||||
|
try (Response response = fetch(url)) {
|
||||||
|
highestQualityStreamUrl = replaceFileName(url, lines(response).findFirst().get());
|
||||||
|
}
|
||||||
|
List<Future<Response>> futures;
|
||||||
|
try (Response response = fetch(highestQualityStreamUrl)) {
|
||||||
|
futures = lines(response)
|
||||||
|
.map(line -> replaceFileName(highestQualityStreamUrl, line))
|
||||||
|
.map(chunkUrl -> Utils.submitOnBackgroundThread(() -> fetch(chunkUrl)))
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
}
|
||||||
|
ContentResolver resolver = Utils.getContext().getContentResolver();
|
||||||
|
ContentValues values = new ContentValues();
|
||||||
|
values.put(MediaStore.Video.Media.DISPLAY_NAME, name + '.' + "mp4");
|
||||||
|
values.put(MediaStore.Video.Media.IS_PENDING, 1);
|
||||||
|
values.put(MediaStore.Video.Media.MIME_TYPE, MimeTypeMap.getSingleton().getMimeTypeFromExtension("mp4"));
|
||||||
|
values.put(MediaStore.Video.Media.RELATIVE_PATH, Environment.DIRECTORY_MOVIES + "/Strava");
|
||||||
|
Uri collection = Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q
|
||||||
|
? MediaStore.Video.Media.getContentUri(MediaStore.VOLUME_EXTERNAL)
|
||||||
|
: MediaStore.Video.Media.EXTERNAL_CONTENT_URI;
|
||||||
|
Uri row = resolver.insert(collection, values);
|
||||||
|
try (OutputStream outputStream = resolver.openOutputStream(row)) {
|
||||||
|
Throwable error = null;
|
||||||
|
for (Future<Response> future : futures) {
|
||||||
|
if (error != null) {
|
||||||
|
if (future.cancel(true)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
try (Response response = future.get()) {
|
||||||
|
if (error == null) {
|
||||||
|
transferTo(response.body().byteStream(), outputStream);
|
||||||
|
}
|
||||||
|
} catch (InterruptedException | IOException e) {
|
||||||
|
error = e;
|
||||||
|
} catch (ExecutionException e) {
|
||||||
|
error = e.getCause();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (error != null) {
|
||||||
|
throw new IOException(error);
|
||||||
|
}
|
||||||
|
} finally {
|
||||||
|
values.clear();
|
||||||
|
values.put(MediaStore.Video.Media.IS_PENDING, 0);
|
||||||
|
resolver.update(row, values, null);
|
||||||
|
}
|
||||||
|
showInfoToast("yis_2024_local_save_video_success", "✔️");
|
||||||
|
} catch (IOException e) {
|
||||||
|
showErrorToast("download_failure", "❌", e);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
private static String getUrl(Media media) {
|
||||||
|
return media.getType() == MediaType.VIDEO
|
||||||
|
? ((Media.Video) media).getVideoUrl()
|
||||||
|
: media.getLargestUrl();
|
||||||
|
}
|
||||||
|
|
||||||
|
private static String getString(String name, String fallback) {
|
||||||
|
int id = Utils.getResourceIdentifier(name, "string");
|
||||||
|
return id != 0
|
||||||
|
? Utils.getResourceString(id)
|
||||||
|
: fallback;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void showInfoToast(String resourceName, String fallback) {
|
||||||
|
String text = getString(resourceName, fallback);
|
||||||
|
Utils.showToastShort(text);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void showErrorToast(String resourceName, String fallback, IOException exception) {
|
||||||
|
String text = getString(resourceName, fallback);
|
||||||
|
Utils.showToastLong(text + ' ' + exception.getLocalizedMessage());
|
||||||
|
}
|
||||||
|
|
||||||
|
private static Response fetch(String url) throws IOException {
|
||||||
|
Request request = new Request.Builder().url(url).build();
|
||||||
|
Response response = client.newCall(request).execute();
|
||||||
|
if (!response.isSuccessful()) {
|
||||||
|
throw new IOException("Got HTTP status code " + response.code());
|
||||||
|
}
|
||||||
|
return response;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@code inputStream.transferTo(outputStream)} is "too new".
|
||||||
|
*/
|
||||||
|
private static void transferTo(InputStream in, OutputStream out) throws IOException {
|
||||||
|
byte[] buffer = new byte[1024 * 8];
|
||||||
|
int length;
|
||||||
|
while ((length = in.read(buffer)) != -1) {
|
||||||
|
out.write(buffer, 0, length);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets all file names.
|
||||||
|
*/
|
||||||
|
private static Stream<String> lines(Response response) {
|
||||||
|
BufferedReader reader = new BufferedReader(response.body().charStream());
|
||||||
|
return reader.lines().filter(line -> !line.startsWith("#"));
|
||||||
|
}
|
||||||
|
|
||||||
|
private static String replaceFileName(String uri, String newName) {
|
||||||
|
return uri.substring(0, uri.lastIndexOf('/') + 1) + newName;
|
||||||
|
}
|
||||||
|
}
|
||||||
12
extensions/strava/stub/build.gradle.kts
Normal file
12
extensions/strava/stub/build.gradle.kts
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
plugins {
|
||||||
|
alias(libs.plugins.android.library)
|
||||||
|
}
|
||||||
|
|
||||||
|
android {
|
||||||
|
namespace = "app.revanced.extension"
|
||||||
|
compileSdk = 34
|
||||||
|
|
||||||
|
defaultConfig {
|
||||||
|
minSdk = 21
|
||||||
|
}
|
||||||
|
}
|
||||||
1
extensions/strava/stub/src/main/AndroidManifest.xml
Normal file
1
extensions/strava/stub/src/main/AndroidManifest.xml
Normal file
@@ -0,0 +1 @@
|
|||||||
|
<manifest/>
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
package com.strava.core.data;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
|
||||||
|
public interface MediaContent extends Serializable {
|
||||||
|
String getCaption();
|
||||||
|
|
||||||
|
String getId();
|
||||||
|
|
||||||
|
String getReferenceId();
|
||||||
|
|
||||||
|
MediaType getType();
|
||||||
|
|
||||||
|
void setCaption(String caption);
|
||||||
|
}
|
||||||
@@ -0,0 +1,44 @@
|
|||||||
|
package com.strava.core.data;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
|
||||||
|
public final class MediaDimension implements Comparable<MediaDimension>, Serializable {
|
||||||
|
private final int height;
|
||||||
|
private final int width;
|
||||||
|
|
||||||
|
public MediaDimension(int width, int height) {
|
||||||
|
this.width = width;
|
||||||
|
this.height = height;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getHeight() {
|
||||||
|
return height;
|
||||||
|
}
|
||||||
|
|
||||||
|
public float getHeightScale() {
|
||||||
|
if (width <= 0 || height <= 0) {
|
||||||
|
return 1f;
|
||||||
|
}
|
||||||
|
return height / width;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getWidth() {
|
||||||
|
return width;
|
||||||
|
}
|
||||||
|
|
||||||
|
public float getWidthScale() {
|
||||||
|
if (width <= 0 || height <= 0) {
|
||||||
|
return 1f;
|
||||||
|
}
|
||||||
|
return width / height;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isLandscape() {
|
||||||
|
return width > 0 && width >= height;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int compareTo(MediaDimension other) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
package com.strava.core.data;
|
||||||
|
|
||||||
|
public enum MediaType {
|
||||||
|
PHOTO(1),
|
||||||
|
VIDEO(2);
|
||||||
|
|
||||||
|
private final int remoteValue;
|
||||||
|
|
||||||
|
private MediaType(int remoteValue) {
|
||||||
|
this.remoteValue = remoteValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getRemoteValue() {
|
||||||
|
return remoteValue;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
package com.strava.core.data;
|
||||||
|
|
||||||
|
import java.util.SortedMap;
|
||||||
|
|
||||||
|
public interface RemoteMediaContent extends MediaContent {
|
||||||
|
MediaDimension getLargestSize();
|
||||||
|
|
||||||
|
String getLargestUrl();
|
||||||
|
|
||||||
|
SortedMap<Integer, MediaDimension> getSizes();
|
||||||
|
|
||||||
|
String getSmallestUrl();
|
||||||
|
|
||||||
|
RemoteMediaStatus getStatus();
|
||||||
|
|
||||||
|
SortedMap<Integer, String> getUrls();
|
||||||
|
}
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
package com.strava.core.data;
|
||||||
|
|
||||||
|
public enum RemoteMediaStatus {
|
||||||
|
NEW,
|
||||||
|
PENDING,
|
||||||
|
PROCESSED,
|
||||||
|
REPORTED,
|
||||||
|
REINSTATED,
|
||||||
|
DELETED,
|
||||||
|
FAILED
|
||||||
|
}
|
||||||
@@ -0,0 +1,286 @@
|
|||||||
|
package com.strava.photos.data;
|
||||||
|
|
||||||
|
import com.strava.core.data.MediaDimension;
|
||||||
|
import com.strava.core.data.MediaType;
|
||||||
|
import com.strava.core.data.RemoteMediaContent;
|
||||||
|
import com.strava.core.data.RemoteMediaStatus;
|
||||||
|
import java.util.SortedMap;
|
||||||
|
|
||||||
|
public abstract class Media implements RemoteMediaContent {
|
||||||
|
public static final class Photo extends Media {
|
||||||
|
private final Long activityId;
|
||||||
|
private final String activityName;
|
||||||
|
private final long athleteId;
|
||||||
|
private String caption;
|
||||||
|
private final String createdAt;
|
||||||
|
private final String createdAtLocal;
|
||||||
|
private final String cursor;
|
||||||
|
private final String id;
|
||||||
|
private final SortedMap<Integer, MediaDimension> sizes;
|
||||||
|
private final RemoteMediaStatus status;
|
||||||
|
private final String tag;
|
||||||
|
private final MediaType type;
|
||||||
|
private final SortedMap<Integer, String> urls;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Long getActivityId() {
|
||||||
|
return activityId;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getActivityName() {
|
||||||
|
return activityName;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public long getAthleteId() {
|
||||||
|
return athleteId;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getCaption() {
|
||||||
|
return caption;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getCreatedAt() {
|
||||||
|
return createdAt;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getCreatedAtLocal() {
|
||||||
|
return createdAtLocal;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getCursor() {
|
||||||
|
return cursor;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getId() {
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public SortedMap<Integer, MediaDimension> getSizes() {
|
||||||
|
return sizes;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public RemoteMediaStatus getStatus() {
|
||||||
|
return status;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getTag() {
|
||||||
|
return tag;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public MediaType getType() {
|
||||||
|
return type;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public SortedMap<Integer, String> getUrls() {
|
||||||
|
return urls;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setCaption(String caption) {
|
||||||
|
this.caption = caption;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Photo(String id,
|
||||||
|
String caption,
|
||||||
|
SortedMap<Integer, String> urls,
|
||||||
|
SortedMap<Integer, MediaDimension> sizes,
|
||||||
|
long athleteId,
|
||||||
|
String createdAt,
|
||||||
|
String createdAtLocal,
|
||||||
|
Long activityId,
|
||||||
|
String activityName,
|
||||||
|
RemoteMediaStatus status,
|
||||||
|
String tag,
|
||||||
|
String cursor) {
|
||||||
|
this.id = id;
|
||||||
|
this.caption = caption;
|
||||||
|
this.urls = urls;
|
||||||
|
this.sizes = sizes;
|
||||||
|
this.athleteId = athleteId;
|
||||||
|
this.createdAt = createdAt;
|
||||||
|
this.createdAtLocal = createdAtLocal;
|
||||||
|
this.activityId = activityId;
|
||||||
|
this.activityName = activityName;
|
||||||
|
this.status = status;
|
||||||
|
this.tag = tag;
|
||||||
|
this.cursor = cursor;
|
||||||
|
this.type = MediaType.PHOTO;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static final class Video extends Media {
|
||||||
|
private final Long activityId;
|
||||||
|
private final String activityName;
|
||||||
|
private final long athleteId;
|
||||||
|
private String caption;
|
||||||
|
private final String createdAt;
|
||||||
|
private final String createdAtLocal;
|
||||||
|
private final String cursor;
|
||||||
|
private final Float durationSeconds;
|
||||||
|
private final String id;
|
||||||
|
private final SortedMap<Integer, MediaDimension> sizes;
|
||||||
|
private final RemoteMediaStatus status;
|
||||||
|
private final String tag;
|
||||||
|
private final MediaType type;
|
||||||
|
private final SortedMap<Integer, String> urls;
|
||||||
|
private final String videoUrl;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Long getActivityId() {
|
||||||
|
return activityId;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getActivityName() {
|
||||||
|
return activityName;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public long getAthleteId() {
|
||||||
|
return athleteId;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getCaption() {
|
||||||
|
return caption;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getCreatedAt() {
|
||||||
|
return createdAt;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getCreatedAtLocal() {
|
||||||
|
return createdAtLocal;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getCursor() {
|
||||||
|
return cursor;
|
||||||
|
}
|
||||||
|
|
||||||
|
public final Float getDurationSeconds() {
|
||||||
|
return durationSeconds;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getId() {
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public SortedMap<Integer, MediaDimension> getSizes() {
|
||||||
|
return sizes;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public RemoteMediaStatus getStatus() {
|
||||||
|
return status;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getTag() {
|
||||||
|
return tag;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public MediaType getType() {
|
||||||
|
return type;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public SortedMap<Integer, String> getUrls() {
|
||||||
|
return urls;
|
||||||
|
}
|
||||||
|
|
||||||
|
public final String getVideoUrl() {
|
||||||
|
return videoUrl;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setCaption(String caption) {
|
||||||
|
this.caption = caption;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Video(String id,
|
||||||
|
String caption,
|
||||||
|
SortedMap<Integer, String> urls,
|
||||||
|
SortedMap<Integer, MediaDimension> sizes,
|
||||||
|
long athleteId,
|
||||||
|
String createdAt,
|
||||||
|
String createdAtLocal,
|
||||||
|
Long activityId,
|
||||||
|
String activityName,
|
||||||
|
RemoteMediaStatus status,
|
||||||
|
String videoUrl,
|
||||||
|
Float durationSeconds,
|
||||||
|
String tag,
|
||||||
|
String cursor) {
|
||||||
|
this.id = id;
|
||||||
|
this.caption = caption;
|
||||||
|
this.urls = urls;
|
||||||
|
this.sizes = sizes;
|
||||||
|
this.athleteId = athleteId;
|
||||||
|
this.createdAt = createdAt;
|
||||||
|
this.createdAtLocal = createdAtLocal;
|
||||||
|
this.activityId = activityId;
|
||||||
|
this.activityName = activityName;
|
||||||
|
this.status = status;
|
||||||
|
this.videoUrl = videoUrl;
|
||||||
|
this.durationSeconds = durationSeconds;
|
||||||
|
this.tag = tag;
|
||||||
|
this.cursor = cursor;
|
||||||
|
this.type = MediaType.VIDEO;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public abstract Long getActivityId();
|
||||||
|
|
||||||
|
public abstract String getActivityName();
|
||||||
|
|
||||||
|
public abstract long getAthleteId();
|
||||||
|
|
||||||
|
public abstract String getCreatedAt();
|
||||||
|
|
||||||
|
public abstract String getCreatedAtLocal();
|
||||||
|
|
||||||
|
public abstract String getCursor();
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public MediaDimension getLargestSize() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getLargestUrl() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getReferenceId() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getSmallestUrl() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public abstract String getTag();
|
||||||
|
|
||||||
|
private Media() {
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
package app.revanced.extension.youtube.patches;
|
||||||
|
|
||||||
|
import app.revanced.extension.youtube.settings.Settings;
|
||||||
|
|
||||||
|
@SuppressWarnings("unused")
|
||||||
|
public class PauseOnAudioInterruptPatch {
|
||||||
|
|
||||||
|
private static final int AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK = -3;
|
||||||
|
private static final int AUDIOFOCUS_LOSS_TRANSIENT = -2;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Injection point for AudioFocusRequest builder.
|
||||||
|
* Returns true if audio ducking should be disabled (willPauseWhenDucked = true).
|
||||||
|
*/
|
||||||
|
public static boolean shouldPauseOnAudioInterrupt() {
|
||||||
|
return Settings.PAUSE_ON_AUDIO_INTERRUPT.get();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Injection point for onAudioFocusChange callback.
|
||||||
|
* Converts AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK to AUDIOFOCUS_LOSS_TRANSIENT
|
||||||
|
* when the setting is enabled, causing YouTube to pause instead of ducking.
|
||||||
|
*/
|
||||||
|
public static int overrideAudioFocusChange(int focusChange) {
|
||||||
|
if (Settings.PAUSE_ON_AUDIO_INTERRUPT.get() && focusChange == AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK) {
|
||||||
|
return AUDIOFOCUS_LOSS_TRANSIENT;
|
||||||
|
}
|
||||||
|
return focusChange;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -35,9 +35,12 @@ public final class LayoutComponentsFilter extends Filter {
|
|||||||
"&list="
|
"&list="
|
||||||
);
|
);
|
||||||
|
|
||||||
|
private static final String PAGE_HEADER_PATH = "page_header.e";
|
||||||
|
|
||||||
private final StringTrieSearch exceptions = new StringTrieSearch();
|
private final StringTrieSearch exceptions = new StringTrieSearch();
|
||||||
private final StringFilterGroup communityPosts;
|
private final StringFilterGroup communityPosts;
|
||||||
private final StringFilterGroup surveys;
|
private final StringFilterGroup surveys;
|
||||||
|
private final StringFilterGroup subscribeButton;
|
||||||
private final StringFilterGroup notifyMe;
|
private final StringFilterGroup notifyMe;
|
||||||
private final StringFilterGroup singleItemInformationPanel;
|
private final StringFilterGroup singleItemInformationPanel;
|
||||||
private final StringFilterGroup expandableMetadata;
|
private final StringFilterGroup expandableMetadata;
|
||||||
@@ -244,8 +247,13 @@ public final class LayoutComponentsFilter extends Filter {
|
|||||||
"sponsorships"
|
"sponsorships"
|
||||||
);
|
);
|
||||||
|
|
||||||
|
final var crowdfundingBox = new StringFilterGroup(
|
||||||
|
Settings.HIDE_CROWDFUNDING_BOX,
|
||||||
|
"donation_shelf"
|
||||||
|
);
|
||||||
|
|
||||||
final var channelWatermark = new StringFilterGroup(
|
final var channelWatermark = new StringFilterGroup(
|
||||||
Settings.HIDE_VIDEO_CHANNEL_WATERMARK,
|
Settings.HIDE_CHANNEL_WATERMARK,
|
||||||
"featured_channel_watermark_overlay"
|
"featured_channel_watermark_overlay"
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -262,7 +270,7 @@ public final class LayoutComponentsFilter extends Filter {
|
|||||||
channelProfile = new StringFilterGroup(
|
channelProfile = new StringFilterGroup(
|
||||||
null,
|
null,
|
||||||
"channel_profile.e",
|
"channel_profile.e",
|
||||||
"page_header.e"
|
PAGE_HEADER_PATH
|
||||||
);
|
);
|
||||||
channelProfileBuffer = new ByteArrayFilterGroupList();
|
channelProfileBuffer = new ByteArrayFilterGroupList();
|
||||||
channelProfileBuffer.addAll(new ByteArrayFilterGroup(
|
channelProfileBuffer.addAll(new ByteArrayFilterGroup(
|
||||||
@@ -276,13 +284,14 @@ public final class LayoutComponentsFilter extends Filter {
|
|||||||
new ByteArrayFilterGroup(
|
new ByteArrayFilterGroup(
|
||||||
Settings.HIDE_JOIN_BUTTON,
|
Settings.HIDE_JOIN_BUTTON,
|
||||||
"sponsor_button"
|
"sponsor_button"
|
||||||
),
|
|
||||||
new ByteArrayFilterGroup(
|
|
||||||
Settings.HIDE_SUBSCRIBE_BUTTON_IN_CHANNEL_PAGE,
|
|
||||||
"subscribe_menu"
|
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
subscribeButton = new StringFilterGroup(
|
||||||
|
Settings.HIDE_SUBSCRIBE_BUTTON_IN_CHANNEL_PAGE,
|
||||||
|
"subscribe_button"
|
||||||
|
);
|
||||||
|
|
||||||
horizontalShelves = new StringFilterGroup(
|
horizontalShelves = new StringFilterGroup(
|
||||||
Settings.HIDE_HORIZONTAL_SHELVES,
|
Settings.HIDE_HORIZONTAL_SHELVES,
|
||||||
"horizontal_video_shelf.e",
|
"horizontal_video_shelf.e",
|
||||||
@@ -308,6 +317,7 @@ public final class LayoutComponentsFilter extends Filter {
|
|||||||
compactChannelBar,
|
compactChannelBar,
|
||||||
compactChannelBarInner,
|
compactChannelBarInner,
|
||||||
communityPosts,
|
communityPosts,
|
||||||
|
crowdfundingBox,
|
||||||
emergencyBox,
|
emergencyBox,
|
||||||
expandableMetadata,
|
expandableMetadata,
|
||||||
forYouShelf,
|
forYouShelf,
|
||||||
@@ -322,6 +332,7 @@ public final class LayoutComponentsFilter extends Filter {
|
|||||||
quickActions,
|
quickActions,
|
||||||
relatedVideos,
|
relatedVideos,
|
||||||
singleItemInformationPanel,
|
singleItemInformationPanel,
|
||||||
|
subscribeButton,
|
||||||
subscribersCommunityGuidelines,
|
subscribersCommunityGuidelines,
|
||||||
subscriptionsChipBar,
|
subscriptionsChipBar,
|
||||||
surveys,
|
surveys,
|
||||||
@@ -352,6 +363,10 @@ public final class LayoutComponentsFilter extends Filter {
|
|||||||
return channelProfileBuffer.check(buffer).isFiltered();
|
return channelProfileBuffer.check(buffer).isFiltered();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (matchedGroup == subscribeButton) {
|
||||||
|
return path.startsWith(PAGE_HEADER_PATH);
|
||||||
|
}
|
||||||
|
|
||||||
if (matchedGroup == communityPosts && NavigationBar.isBackButtonVisible()) {
|
if (matchedGroup == communityPosts && NavigationBar.isBackButtonVisible()) {
|
||||||
// Allow community posts on channel profile page,
|
// Allow community posts on channel profile page,
|
||||||
// or if viewing an individual channel in the feed.
|
// or if viewing an individual channel in the feed.
|
||||||
@@ -418,7 +433,7 @@ public final class LayoutComponentsFilter extends Filter {
|
|||||||
* Injection point.
|
* Injection point.
|
||||||
*/
|
*/
|
||||||
public static boolean showWatermark() {
|
public static boolean showWatermark() {
|
||||||
return !Settings.HIDE_VIDEO_CHANNEL_WATERMARK.get();
|
return !Settings.HIDE_CHANNEL_WATERMARK.get();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -96,7 +96,6 @@ public class Settings extends BaseSettings {
|
|||||||
public static final BooleanSetting HIDE_CHIPS_SHELF = new BooleanSetting("revanced_hide_chips_shelf", TRUE);
|
public static final BooleanSetting HIDE_CHIPS_SHELF = new BooleanSetting("revanced_hide_chips_shelf", TRUE);
|
||||||
public static final BooleanSetting HIDE_COMMUNITY_POSTS = new BooleanSetting("revanced_hide_community_posts", FALSE);
|
public static final BooleanSetting HIDE_COMMUNITY_POSTS = new BooleanSetting("revanced_hide_community_posts", FALSE);
|
||||||
public static final BooleanSetting HIDE_COMPACT_BANNER = new BooleanSetting("revanced_hide_compact_banner", TRUE);
|
public static final BooleanSetting HIDE_COMPACT_BANNER = new BooleanSetting("revanced_hide_compact_banner", TRUE);
|
||||||
public static final BooleanSetting HIDE_CROWDFUNDING_BOX = new BooleanSetting("revanced_hide_crowdfunding_box", FALSE, true);
|
|
||||||
public static final BooleanSetting HIDE_DOODLES = new BooleanSetting("revanced_hide_doodles", FALSE, true, "revanced_hide_doodles_user_dialog_message");
|
public static final BooleanSetting HIDE_DOODLES = new BooleanSetting("revanced_hide_doodles", FALSE, true, "revanced_hide_doodles_user_dialog_message");
|
||||||
public static final BooleanSetting HIDE_EXPANDABLE_CARD = new BooleanSetting("revanced_hide_expandable_card", TRUE);
|
public static final BooleanSetting HIDE_EXPANDABLE_CARD = new BooleanSetting("revanced_hide_expandable_card", TRUE);
|
||||||
public static final BooleanSetting HIDE_FILTER_BAR_FEED_IN_FEED = new BooleanSetting("revanced_hide_filter_bar_feed_in_feed", FALSE, true);
|
public static final BooleanSetting HIDE_FILTER_BAR_FEED_IN_FEED = new BooleanSetting("revanced_hide_filter_bar_feed_in_feed", FALSE, true);
|
||||||
@@ -158,6 +157,8 @@ public class Settings extends BaseSettings {
|
|||||||
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);
|
||||||
public static final BooleanSetting HIDE_CAST_BUTTON = new BooleanSetting("revanced_hide_cast_button", TRUE, true);
|
public static final BooleanSetting HIDE_CAST_BUTTON = new BooleanSetting("revanced_hide_cast_button", TRUE, true);
|
||||||
public static final BooleanSetting HIDE_CHANNEL_BAR = new BooleanSetting("revanced_hide_channel_bar", FALSE);
|
public static final BooleanSetting HIDE_CHANNEL_BAR = new BooleanSetting("revanced_hide_channel_bar", FALSE);
|
||||||
|
public static final BooleanSetting HIDE_CHANNEL_WATERMARK = new BooleanSetting("revanced_hide_channel_watermark", TRUE);
|
||||||
|
public static final BooleanSetting HIDE_CROWDFUNDING_BOX = new BooleanSetting("revanced_hide_crowdfunding_box", FALSE, 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_END_SCREEN_SUGGESTED_VIDEO = new BooleanSetting("revanced_end_screen_suggested_video", FALSE, true);
|
||||||
@@ -172,7 +173,6 @@ public class Settings extends BaseSettings {
|
|||||||
public static final BooleanSetting HIDE_RELATED_VIDEOS = new BooleanSetting("revanced_hide_related_videos", FALSE);
|
public static final BooleanSetting HIDE_RELATED_VIDEOS = new BooleanSetting("revanced_hide_related_videos", FALSE);
|
||||||
public static final BooleanSetting HIDE_SUBSCRIBERS_COMMUNITY_GUIDELINES = new BooleanSetting("revanced_hide_subscribers_community_guidelines", TRUE);
|
public static final BooleanSetting HIDE_SUBSCRIBERS_COMMUNITY_GUIDELINES = new BooleanSetting("revanced_hide_subscribers_community_guidelines", TRUE);
|
||||||
public static final BooleanSetting HIDE_TIMED_REACTIONS = new BooleanSetting("revanced_hide_timed_reactions", TRUE);
|
public static final BooleanSetting HIDE_TIMED_REACTIONS = new BooleanSetting("revanced_hide_timed_reactions", TRUE);
|
||||||
public static final BooleanSetting HIDE_VIDEO_CHANNEL_WATERMARK = new BooleanSetting("revanced_hide_channel_watermark", TRUE);
|
|
||||||
public static final BooleanSetting OPEN_VIDEOS_FULLSCREEN_PORTRAIT = new BooleanSetting("revanced_open_videos_fullscreen_portrait", FALSE);
|
public static final BooleanSetting OPEN_VIDEOS_FULLSCREEN_PORTRAIT = new BooleanSetting("revanced_open_videos_fullscreen_portrait", FALSE);
|
||||||
public static final BooleanSetting PLAYBACK_SPEED_DIALOG_BUTTON = new BooleanSetting("revanced_playback_speed_dialog_button", FALSE);
|
public static final BooleanSetting PLAYBACK_SPEED_DIALOG_BUTTON = new BooleanSetting("revanced_playback_speed_dialog_button", FALSE);
|
||||||
public static final BooleanSetting VIDEO_QUALITY_DIALOG_BUTTON = new BooleanSetting("revanced_video_quality_dialog_button", FALSE);
|
public static final BooleanSetting VIDEO_QUALITY_DIALOG_BUTTON = new BooleanSetting("revanced_video_quality_dialog_button", FALSE);
|
||||||
@@ -356,6 +356,7 @@ public class Settings extends BaseSettings {
|
|||||||
public static final IntegerSetting ANNOUNCEMENT_LAST_ID = new IntegerSetting("revanced_announcement_last_id", -1, false, false);
|
public static final IntegerSetting ANNOUNCEMENT_LAST_ID = new IntegerSetting("revanced_announcement_last_id", -1, false, false);
|
||||||
public static final BooleanSetting LOOP_VIDEO = new BooleanSetting("revanced_loop_video", FALSE);
|
public static final BooleanSetting LOOP_VIDEO = new BooleanSetting("revanced_loop_video", FALSE);
|
||||||
public static final BooleanSetting LOOP_VIDEO_BUTTON = new BooleanSetting("revanced_loop_video_button", FALSE);
|
public static final BooleanSetting LOOP_VIDEO_BUTTON = new BooleanSetting("revanced_loop_video_button", FALSE);
|
||||||
|
public static final BooleanSetting PAUSE_ON_AUDIO_INTERRUPT = new BooleanSetting("revanced_pause_on_audio_interrupt", FALSE, true);
|
||||||
public static final BooleanSetting BYPASS_URL_REDIRECTS = new BooleanSetting("revanced_bypass_url_redirects", TRUE);
|
public static final BooleanSetting BYPASS_URL_REDIRECTS = new BooleanSetting("revanced_bypass_url_redirects", TRUE);
|
||||||
public static final BooleanSetting DISABLE_HAPTIC_FEEDBACK_CHAPTERS = new BooleanSetting("revanced_disable_haptic_feedback_chapters", FALSE);
|
public static final BooleanSetting DISABLE_HAPTIC_FEEDBACK_CHAPTERS = new BooleanSetting("revanced_disable_haptic_feedback_chapters", FALSE);
|
||||||
public static final BooleanSetting DISABLE_HAPTIC_FEEDBACK_PRECISE_SEEKING = new BooleanSetting("revanced_disable_haptic_feedback_precise_seeking", FALSE);
|
public static final BooleanSetting DISABLE_HAPTIC_FEEDBACK_PRECISE_SEEKING = new BooleanSetting("revanced_disable_haptic_feedback_precise_seeking", FALSE);
|
||||||
|
|||||||
@@ -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.47.0-dev.12
|
version = 5.48.0-dev.9
|
||||||
|
|||||||
@@ -104,6 +104,10 @@ public final class app/revanced/patches/all/misc/packagename/ChangePackageNamePa
|
|||||||
public static final fun setPackageNameOption (Lapp/revanced/patcher/patch/Option;)V
|
public static final fun setPackageNameOption (Lapp/revanced/patcher/patch/Option;)V
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public final class app/revanced/patches/all/misc/playintegrity/DisablePlayIntegrityKt {
|
||||||
|
public static final fun getDisablePlayIntegrityPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
||||||
|
}
|
||||||
|
|
||||||
public final class app/revanced/patches/all/misc/resources/AddResourcesPatchKt {
|
public final class app/revanced/patches/all/misc/resources/AddResourcesPatchKt {
|
||||||
public static final fun addResource (Ljava/lang/String;Lapp/revanced/util/resource/BaseResource;)Z
|
public static final fun addResource (Ljava/lang/String;Lapp/revanced/util/resource/BaseResource;)Z
|
||||||
public static final fun addResources (Lapp/revanced/patcher/patch/Patch;Lkotlin/jvm/functions/Function1;)Z
|
public static final fun addResources (Lapp/revanced/patcher/patch/Patch;Lkotlin/jvm/functions/Function1;)Z
|
||||||
@@ -176,6 +180,10 @@ public final class app/revanced/patches/cieid/restrictions/root/BypassRootChecks
|
|||||||
public static final fun getBypassRootChecksPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
public static final fun getBypassRootChecksPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public final class app/revanced/patches/com/sbs/ondemand/tv/RemoveAdsPatchKt {
|
||||||
|
public static final fun getRemoveAdsPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
||||||
|
}
|
||||||
|
|
||||||
public final class app/revanced/patches/cricbuzz/ads/DisableAdsPatchKt {
|
public final class app/revanced/patches/cricbuzz/ads/DisableAdsPatchKt {
|
||||||
public static final fun getDisableAdsPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
public static final fun getDisableAdsPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
||||||
}
|
}
|
||||||
@@ -268,6 +276,10 @@ public final class app/revanced/patches/iconpackstudio/misc/pro/UnlockProPatchKt
|
|||||||
public static final fun getUnlockProPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
public static final fun getUnlockProPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public final class app/revanced/patches/idaustria/detection/deviceintegrity/RemoveDeviceIntegrityChecksPatchKt {
|
||||||
|
public static final fun getRemoveDeviceIntegrityChecksPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
||||||
|
}
|
||||||
|
|
||||||
public final class app/revanced/patches/idaustria/detection/root/RootDetectionPatchKt {
|
public final class app/revanced/patches/idaustria/detection/root/RootDetectionPatchKt {
|
||||||
public static final fun getRootDetectionPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
public static final fun getRootDetectionPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
||||||
}
|
}
|
||||||
@@ -344,6 +356,10 @@ public final class app/revanced/patches/letterboxd/ads/HideAdsPatchKt {
|
|||||||
public static final fun getHideAdsPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
public static final fun getHideAdsPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public final class app/revanced/patches/letterboxd/unlock/unlockAppIcons/UnlockAppIconsPatchKt {
|
||||||
|
public static final fun getUnlockAppIconsPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
||||||
|
}
|
||||||
|
|
||||||
public final class app/revanced/patches/lightroom/misc/login/DisableMandatoryLoginPatchKt {
|
public final class app/revanced/patches/lightroom/misc/login/DisableMandatoryLoginPatchKt {
|
||||||
public static final fun getDisableMandatoryLoginPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
public static final fun getDisableMandatoryLoginPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
||||||
}
|
}
|
||||||
@@ -352,6 +368,10 @@ public final class app/revanced/patches/lightroom/misc/premium/UnlockPremiumPatc
|
|||||||
public static final fun getUnlockPremiumPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
public static final fun getUnlockPremiumPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public final class app/revanced/patches/lightroom/misc/version/DisableVersionCheckPatchKt {
|
||||||
|
public static final fun getDisableVersionCheckPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
||||||
|
}
|
||||||
|
|
||||||
public final class app/revanced/patches/memegenerator/detection/license/LicenseValidationPatchKt {
|
public final class app/revanced/patches/memegenerator/detection/license/LicenseValidationPatchKt {
|
||||||
public static final fun getLicenseValidationPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
public static final fun getLicenseValidationPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
||||||
}
|
}
|
||||||
@@ -573,6 +593,10 @@ public final class app/revanced/patches/pandora/misc/EnableUnlimitedSkipsPatchKt
|
|||||||
public static final fun getEnableUnlimitedSkipsPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
public static final fun getEnableUnlimitedSkipsPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public final class app/revanced/patches/peacocktv/ads/HideAdsPatchKt {
|
||||||
|
public static final fun getHideAdsPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
||||||
|
}
|
||||||
|
|
||||||
public final class app/revanced/patches/photomath/detection/deviceid/SpoofDeviceIdPatchKt {
|
public final class app/revanced/patches/photomath/detection/deviceid/SpoofDeviceIdPatchKt {
|
||||||
public static final fun getGetDeviceIdPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
public static final fun getGetDeviceIdPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
||||||
}
|
}
|
||||||
@@ -633,6 +657,10 @@ public final class app/revanced/patches/protonvpn/delay/RemoveDelayPatchKt {
|
|||||||
public static final fun getRemoveDelayPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
public static final fun getRemoveDelayPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public final class app/revanced/patches/protonvpn/splittunneling/UnlockSplitTunnelingKt {
|
||||||
|
public static final fun getUnlockSplitTunnelingPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
||||||
|
}
|
||||||
|
|
||||||
public final class app/revanced/patches/rar/misc/annoyances/purchasereminder/HidePurchaseReminderPatchKt {
|
public final class app/revanced/patches/rar/misc/annoyances/purchasereminder/HidePurchaseReminderPatchKt {
|
||||||
public static final fun getHidePurchaseReminderPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
public static final fun getHidePurchaseReminderPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
||||||
}
|
}
|
||||||
@@ -916,6 +944,10 @@ public final class app/revanced/patches/shared/misc/pairip/license/DisableLicens
|
|||||||
public static final fun getDisableLicenseCheckPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
public static final fun getDisableLicenseCheckPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public final class app/revanced/patches/shared/misc/privacy/DisableSentryTelemetryKt {
|
||||||
|
public static final fun getDisableSentryTelemetryPatch ()Lapp/revanced/patcher/patch/ResourcePatch;
|
||||||
|
}
|
||||||
|
|
||||||
public final class app/revanced/patches/shared/misc/settings/SettingsPatchKt {
|
public final class app/revanced/patches/shared/misc/settings/SettingsPatchKt {
|
||||||
public static final fun overrideThemeColors (Ljava/lang/String;Ljava/lang/String;)V
|
public static final fun overrideThemeColors (Ljava/lang/String;Ljava/lang/String;)V
|
||||||
public static final fun settingsPatch (Ljava/util/List;Ljava/util/Set;)Lapp/revanced/patcher/patch/ResourcePatch;
|
public static final fun settingsPatch (Ljava/util/List;Ljava/util/Set;)Lapp/revanced/patcher/patch/ResourcePatch;
|
||||||
@@ -1168,6 +1200,30 @@ public final class app/revanced/patches/stocard/layout/HideStoryBubblesPatchKt {
|
|||||||
public static final fun getHideStoryBubblesPatch ()Lapp/revanced/patcher/patch/ResourcePatch;
|
public static final fun getHideStoryBubblesPatch ()Lapp/revanced/patcher/patch/ResourcePatch;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public final class app/revanced/patches/strava/media/download/AddMediaDownloadPatchKt {
|
||||||
|
public static final fun getAddMediaDownloadPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
||||||
|
}
|
||||||
|
|
||||||
|
public final class app/revanced/patches/strava/media/upload/OverwriteMediaUploadParametersPatchKt {
|
||||||
|
public static final fun getOverwriteMediaUploadParametersPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
||||||
|
}
|
||||||
|
|
||||||
|
public final class app/revanced/patches/strava/misc/extension/SharedExtensionPatchKt {
|
||||||
|
public static final fun getSharedExtensionPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
||||||
|
}
|
||||||
|
|
||||||
|
public final class app/revanced/patches/strava/password/EnablePasswordLoginPatchKt {
|
||||||
|
public static final fun getEnablePasswordLoginPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
||||||
|
}
|
||||||
|
|
||||||
|
public final class app/revanced/patches/strava/privacy/BlockSnowplowTrackingPatchKt {
|
||||||
|
public static final fun getBlockSnowplowTrackingPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
||||||
|
}
|
||||||
|
|
||||||
|
public final class app/revanced/patches/strava/quickedit/DisableQuickEditPatchKt {
|
||||||
|
public static final fun getDisableQuickEditPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
||||||
|
}
|
||||||
|
|
||||||
public final class app/revanced/patches/strava/subscription/UnlockSubscriptionPatchKt {
|
public final class app/revanced/patches/strava/subscription/UnlockSubscriptionPatchKt {
|
||||||
public static final fun getUnlockSubscriptionPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
public static final fun getUnlockSubscriptionPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
||||||
}
|
}
|
||||||
@@ -1648,6 +1704,10 @@ public final class app/revanced/patches/youtube/misc/announcements/Announcements
|
|||||||
public static final fun getAnnouncementsPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
public static final fun getAnnouncementsPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public final class app/revanced/patches/youtube/misc/audiofocus/PauseOnAudioInterruptPatchKt {
|
||||||
|
public static final fun getPauseOnAudioInterruptPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
||||||
|
}
|
||||||
|
|
||||||
public final class app/revanced/patches/youtube/misc/autorepeat/AutoRepeatPatchKt {
|
public final class app/revanced/patches/youtube/misc/autorepeat/AutoRepeatPatchKt {
|
||||||
public static final fun getAutoRepeatPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
public static final fun getAutoRepeatPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
||||||
}
|
}
|
||||||
@@ -1943,6 +2003,7 @@ public final class app/revanced/util/BytecodeUtilsKt {
|
|||||||
public static final fun indexOfFirstResourceIdOrThrow (Lcom/android/tools/smali/dexlib2/iface/Method;Ljava/lang/String;)I
|
public static final fun indexOfFirstResourceIdOrThrow (Lcom/android/tools/smali/dexlib2/iface/Method;Ljava/lang/String;)I
|
||||||
public static final fun injectHideViewCall (Lapp/revanced/patcher/util/proxy/mutableTypes/MutableMethod;IILjava/lang/String;Ljava/lang/String;)V
|
public static final fun injectHideViewCall (Lapp/revanced/patcher/util/proxy/mutableTypes/MutableMethod;IILjava/lang/String;Ljava/lang/String;)V
|
||||||
public static final fun literal (Lapp/revanced/patcher/FingerprintBuilder;Lkotlin/jvm/functions/Function0;)V
|
public static final fun literal (Lapp/revanced/patcher/FingerprintBuilder;Lkotlin/jvm/functions/Function0;)V
|
||||||
|
public static final fun returnEarly (Lapp/revanced/patcher/util/proxy/mutableTypes/MutableMethod;)V
|
||||||
public static final fun returnEarly (Lapp/revanced/patcher/util/proxy/mutableTypes/MutableMethod;B)V
|
public static final fun returnEarly (Lapp/revanced/patcher/util/proxy/mutableTypes/MutableMethod;B)V
|
||||||
public static final fun returnEarly (Lapp/revanced/patcher/util/proxy/mutableTypes/MutableMethod;C)V
|
public static final fun returnEarly (Lapp/revanced/patcher/util/proxy/mutableTypes/MutableMethod;C)V
|
||||||
public static final fun returnEarly (Lapp/revanced/patcher/util/proxy/mutableTypes/MutableMethod;D)V
|
public static final fun returnEarly (Lapp/revanced/patcher/util/proxy/mutableTypes/MutableMethod;D)V
|
||||||
@@ -1952,7 +2013,6 @@ public final class app/revanced/util/BytecodeUtilsKt {
|
|||||||
public static final fun returnEarly (Lapp/revanced/patcher/util/proxy/mutableTypes/MutableMethod;Ljava/lang/String;)V
|
public static final fun returnEarly (Lapp/revanced/patcher/util/proxy/mutableTypes/MutableMethod;Ljava/lang/String;)V
|
||||||
public static final fun returnEarly (Lapp/revanced/patcher/util/proxy/mutableTypes/MutableMethod;S)V
|
public static final fun returnEarly (Lapp/revanced/patcher/util/proxy/mutableTypes/MutableMethod;S)V
|
||||||
public static final fun returnEarly (Lapp/revanced/patcher/util/proxy/mutableTypes/MutableMethod;Z)V
|
public static final fun returnEarly (Lapp/revanced/patcher/util/proxy/mutableTypes/MutableMethod;Z)V
|
||||||
public static synthetic fun returnEarly$default (Lapp/revanced/patcher/util/proxy/mutableTypes/MutableMethod;ZILjava/lang/Object;)V
|
|
||||||
public static final fun returnLate (Lapp/revanced/patcher/util/proxy/mutableTypes/MutableMethod;B)V
|
public static final fun returnLate (Lapp/revanced/patcher/util/proxy/mutableTypes/MutableMethod;B)V
|
||||||
public static final fun returnLate (Lapp/revanced/patcher/util/proxy/mutableTypes/MutableMethod;C)V
|
public static final fun returnLate (Lapp/revanced/patcher/util/proxy/mutableTypes/MutableMethod;C)V
|
||||||
public static final fun returnLate (Lapp/revanced/patcher/util/proxy/mutableTypes/MutableMethod;D)V
|
public static final fun returnLate (Lapp/revanced/patcher/util/proxy/mutableTypes/MutableMethod;D)V
|
||||||
|
|||||||
@@ -50,12 +50,9 @@ kotlin {
|
|||||||
publishing {
|
publishing {
|
||||||
repositories {
|
repositories {
|
||||||
maven {
|
maven {
|
||||||
name = "GitHubPackages"
|
name = "githubPackages"
|
||||||
url = uri("https://maven.pkg.github.com/revanced/revanced-patches")
|
url = uri("https://maven.pkg.github.com/revanced/revanced-patches")
|
||||||
credentials {
|
credentials(PasswordCredentials::class)
|
||||||
username = System.getenv("GITHUB_ACTOR")
|
|
||||||
password = System.getenv("GITHUB_TOKEN")
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,55 @@
|
|||||||
|
package app.revanced.patches.all.misc.playintegrity
|
||||||
|
|
||||||
|
import app.revanced.patcher.extensions.InstructionExtensions.replaceInstruction
|
||||||
|
import app.revanced.patcher.patch.bytecodePatch
|
||||||
|
import app.revanced.patches.all.misc.transformation.transformInstructionsPatch
|
||||||
|
import app.revanced.util.getReference
|
||||||
|
import com.android.tools.smali.dexlib2.Opcode
|
||||||
|
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.immutable.reference.ImmutableMethodReference
|
||||||
|
import com.android.tools.smali.dexlib2.util.MethodUtil
|
||||||
|
|
||||||
|
private const val EXTENSION_CLASS_DESCRIPTOR = "Lapp/revanced/extension/playintegrity/DisablePlayIntegrityPatch;"
|
||||||
|
|
||||||
|
private val CONTEXT_BIND_SERVICE_METHOD_REFERENCE = ImmutableMethodReference(
|
||||||
|
"Landroid/content/Context;",
|
||||||
|
"bindService",
|
||||||
|
listOf("Landroid/content/Intent;", "Landroid/content/ServiceConnection;", "I"),
|
||||||
|
"Z"
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@Suppress("unused")
|
||||||
|
val disablePlayIntegrityPatch = bytecodePatch(
|
||||||
|
name = "Disable Play Integrity",
|
||||||
|
description = "Prevents apps from using Play Integrity by pretending it is not available.",
|
||||||
|
use = false,
|
||||||
|
) {
|
||||||
|
extendWith("extensions/all/misc/disable-play-integrity.rve")
|
||||||
|
|
||||||
|
dependsOn(
|
||||||
|
transformInstructionsPatch(
|
||||||
|
filterMap = filterMap@{ classDef, method, instruction, instructionIndex ->
|
||||||
|
val reference = instruction
|
||||||
|
.getReference<MethodReference>()
|
||||||
|
?.takeIf {
|
||||||
|
MethodUtil.methodSignaturesMatch(CONTEXT_BIND_SERVICE_METHOD_REFERENCE, it)
|
||||||
|
}
|
||||||
|
?: return@filterMap null
|
||||||
|
|
||||||
|
Triple(instruction as Instruction35c, instructionIndex, reference.parameterTypes)
|
||||||
|
},
|
||||||
|
transform = { method, entry ->
|
||||||
|
val (instruction, index, parameterTypes) = entry
|
||||||
|
val parameterString = parameterTypes.joinToString(separator = "")
|
||||||
|
val registerString = "v${instruction.registerC}, v${instruction.registerD}, v${instruction.registerE}, v${instruction.registerF}"
|
||||||
|
|
||||||
|
method.replaceInstruction(
|
||||||
|
index,
|
||||||
|
"invoke-static { $registerString }, $EXTENSION_CLASS_DESCRIPTOR->bindService(Landroid/content/Context;$parameterString)Z"
|
||||||
|
)
|
||||||
|
}
|
||||||
|
)
|
||||||
|
)
|
||||||
|
}
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
package app.revanced.patches.com.sbs.ondemand.tv
|
||||||
|
|
||||||
|
import app.revanced.patcher.fingerprint
|
||||||
|
|
||||||
|
internal val shouldShowAdvertisingTVFingerprint = fingerprint {
|
||||||
|
returns("Z")
|
||||||
|
custom { method, classDef ->
|
||||||
|
method.name == "getShouldShowAdvertisingTV" &&
|
||||||
|
classDef.type == "Lcom/sbs/ondemand/common/InMemoryStorage;"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
internal val shouldShowPauseAdFingerprint = fingerprint {
|
||||||
|
returns("Z")
|
||||||
|
custom { method, classDef ->
|
||||||
|
method.name == "shouldShowPauseAd" &&
|
||||||
|
classDef.type == "Lcom/sbs/ondemand/player/viewmodels/PauseAdController;"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
internal val requestAdStreamFingerprint = fingerprint {
|
||||||
|
returns("V")
|
||||||
|
custom { method, classDef ->
|
||||||
|
method.name == "requestAdStream\$player_googleStoreTvRelease" &&
|
||||||
|
classDef.type == "Lcom/sbs/ondemand/player/viewmodels/AdsController;"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@@ -0,0 +1,37 @@
|
|||||||
|
package app.revanced.patches.com.sbs.ondemand.tv
|
||||||
|
|
||||||
|
import app.revanced.patcher.extensions.InstructionExtensions.addInstructions
|
||||||
|
import app.revanced.patcher.patch.bytecodePatch
|
||||||
|
import app.revanced.patches.shared.misc.pairip.license.disableLicenseCheckPatch
|
||||||
|
import app.revanced.util.returnEarly
|
||||||
|
|
||||||
|
@Suppress("unused")
|
||||||
|
val removeAdsPatch = bytecodePatch(
|
||||||
|
name = "Remove ads",
|
||||||
|
description = "Removes pre-roll, pause and on-demand advertisements from SBS On Demand TV.",
|
||||||
|
) {
|
||||||
|
compatibleWith("com.sbs.ondemand.tv")
|
||||||
|
|
||||||
|
dependsOn(disableLicenseCheckPatch)
|
||||||
|
|
||||||
|
execute {
|
||||||
|
shouldShowAdvertisingTVFingerprint.method.returnEarly(true)
|
||||||
|
shouldShowPauseAdFingerprint.method.returnEarly(false)
|
||||||
|
|
||||||
|
// Remove on-demand pre-roll advertisements using exception handling.
|
||||||
|
// Exception handling is used instead of returnEarly() because:
|
||||||
|
// 1. returnEarly() causes black screen when the app waits for ad content that never comes.
|
||||||
|
// 2. SBS app has built-in exception handling in handleProviderFailure().
|
||||||
|
// 3. Exception triggers fallbackToAkamaiProvider() which loads actual content.
|
||||||
|
// 4. This preserves the intended app flow: first try ads, then fail gracefully, then load content.
|
||||||
|
requestAdStreamFingerprint.method.addInstructions(
|
||||||
|
0,
|
||||||
|
"""
|
||||||
|
new-instance v0, Ljava/lang/RuntimeException;
|
||||||
|
const-string v1, "Ad stream disabled"
|
||||||
|
invoke-direct {v0, v1}, Ljava/lang/RuntimeException;-><init>(Ljava/lang/String;)V
|
||||||
|
throw v0
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
package app.revanced.patches.idaustria.detection.deviceintegrity
|
||||||
|
|
||||||
|
import app.revanced.patcher.fingerprint
|
||||||
|
import com.android.tools.smali.dexlib2.AccessFlags
|
||||||
|
|
||||||
|
internal val isDeviceBootloaderOpenFingerprint = fingerprint {
|
||||||
|
accessFlags(AccessFlags.PUBLIC)
|
||||||
|
returns("Ljava/lang/Object;")
|
||||||
|
custom { method, classDef ->
|
||||||
|
method.name == "isDeviceBootloaderOpen" &&
|
||||||
|
classDef.endsWith("/DeviceIntegrityCheckProviderImpl;")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
internal val isDeviceRootedFingerprint = fingerprint {
|
||||||
|
accessFlags(AccessFlags.PUBLIC)
|
||||||
|
returns("Z")
|
||||||
|
custom { method, classDef ->
|
||||||
|
method.name == "isDeviceRooted" &&
|
||||||
|
classDef.endsWith("/DeviceIntegrityCheckProviderImpl;")
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
package app.revanced.patches.idaustria.detection.deviceintegrity
|
||||||
|
|
||||||
|
import app.revanced.patcher.extensions.InstructionExtensions.addInstructions
|
||||||
|
import app.revanced.patcher.patch.bytecodePatch
|
||||||
|
import app.revanced.util.returnEarly
|
||||||
|
|
||||||
|
|
||||||
|
@Suppress("unused")
|
||||||
|
val removeDeviceIntegrityChecksPatch = bytecodePatch(
|
||||||
|
name = "Remove device integrity checks",
|
||||||
|
description = "Removes the check for root permissions and unlocked bootloader.",
|
||||||
|
) {
|
||||||
|
compatibleWith("at.gv.oe.app")
|
||||||
|
|
||||||
|
execute {
|
||||||
|
isDeviceRootedFingerprint.method.returnEarly(false)
|
||||||
|
|
||||||
|
isDeviceBootloaderOpenFingerprint.method.apply {
|
||||||
|
addInstructions(
|
||||||
|
0,
|
||||||
|
"""
|
||||||
|
const/4 v0, 0x0
|
||||||
|
invoke-static { v0 }, Lkotlin/coroutines/jvm/internal/Boxing;->boxBoolean(Z)Ljava/lang/Boolean;
|
||||||
|
move-result-object v0
|
||||||
|
return-object v0
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,31 +0,0 @@
|
|||||||
package app.revanced.patches.idaustria.detection.root
|
|
||||||
|
|
||||||
import app.revanced.patcher.fingerprint
|
|
||||||
import com.android.tools.smali.dexlib2.AccessFlags
|
|
||||||
|
|
||||||
internal val attestationSupportedCheckFingerprint = fingerprint {
|
|
||||||
accessFlags(AccessFlags.PUBLIC)
|
|
||||||
returns("V")
|
|
||||||
custom { method, classDef ->
|
|
||||||
method.name == "attestationSupportCheck" &&
|
|
||||||
classDef.endsWith("/DeviceIntegrityCheck;")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
internal val bootloaderCheckFingerprint = fingerprint {
|
|
||||||
accessFlags(AccessFlags.PUBLIC)
|
|
||||||
returns("Z")
|
|
||||||
custom { method, classDef ->
|
|
||||||
method.name == "bootloaderCheck" &&
|
|
||||||
classDef.endsWith("/DeviceIntegrityCheck;")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
internal val rootCheckFingerprint = fingerprint {
|
|
||||||
accessFlags(AccessFlags.PUBLIC)
|
|
||||||
returns("V")
|
|
||||||
custom { method, classDef ->
|
|
||||||
method.name == "rootCheck" &&
|
|
||||||
classDef.endsWith("/DeviceIntegrityCheck;")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,22 +1,10 @@
|
|||||||
package app.revanced.patches.idaustria.detection.root
|
package app.revanced.patches.idaustria.detection.root
|
||||||
|
|
||||||
import app.revanced.patcher.patch.bytecodePatch
|
import app.revanced.patcher.patch.bytecodePatch
|
||||||
import app.revanced.patches.shared.PATCH_DESCRIPTION_REMOVE_ROOT_DETECTION
|
import app.revanced.patches.idaustria.detection.deviceintegrity.removeDeviceIntegrityChecksPatch
|
||||||
import app.revanced.patches.shared.PATCH_NAME_REMOVE_ROOT_DETECTION
|
|
||||||
import app.revanced.util.returnEarly
|
|
||||||
|
|
||||||
|
@Deprecated("Patch was superseded", ReplaceWith("removeDeviceIntegrityChecksPatch"))
|
||||||
@Suppress("unused")
|
@Suppress("unused")
|
||||||
val rootDetectionPatch = bytecodePatch(
|
val rootDetectionPatch = bytecodePatch {
|
||||||
name = PATCH_NAME_REMOVE_ROOT_DETECTION,
|
dependsOn(removeDeviceIntegrityChecksPatch)
|
||||||
description = PATCH_DESCRIPTION_REMOVE_ROOT_DETECTION
|
|
||||||
) {
|
|
||||||
compatibleWith("at.gv.oe.app")
|
|
||||||
|
|
||||||
execute {
|
|
||||||
setOf(
|
|
||||||
attestationSupportedCheckFingerprint,
|
|
||||||
bootloaderCheckFingerprint,
|
|
||||||
rootCheckFingerprint,
|
|
||||||
).forEach { it.method.returnEarly(true) }
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -28,6 +28,13 @@ val hideNavigationButtonsPatch = bytecodePatch(
|
|||||||
|
|
||||||
dependsOn(sharedExtensionPatch)
|
dependsOn(sharedExtensionPatch)
|
||||||
|
|
||||||
|
val hideHome by booleanOption(
|
||||||
|
key = "hideHome",
|
||||||
|
default = false,
|
||||||
|
title = "Hide Home",
|
||||||
|
description = "Permanently hides the Home button. App starts at next available tab." // On the "homecoming" / current instagram layout.
|
||||||
|
)
|
||||||
|
|
||||||
val hideReels by booleanOption(
|
val hideReels by booleanOption(
|
||||||
key = "hideReels",
|
key = "hideReels",
|
||||||
default = true,
|
default = true,
|
||||||
@@ -35,6 +42,27 @@ val hideNavigationButtonsPatch = bytecodePatch(
|
|||||||
description = "Permanently hides the Reels button."
|
description = "Permanently hides the Reels button."
|
||||||
)
|
)
|
||||||
|
|
||||||
|
val hideDirect by booleanOption(
|
||||||
|
key = "hideDirect",
|
||||||
|
default = false,
|
||||||
|
title = "Hide Direct",
|
||||||
|
description = "Permanently hides the Direct button."
|
||||||
|
)
|
||||||
|
|
||||||
|
val hideSearch by booleanOption(
|
||||||
|
key = "hideSearch",
|
||||||
|
default = false,
|
||||||
|
title = "Hide Search",
|
||||||
|
description = "Permanently hides the Search button."
|
||||||
|
)
|
||||||
|
|
||||||
|
val hideProfile by booleanOption(
|
||||||
|
key = "hideProfile",
|
||||||
|
default = false,
|
||||||
|
title = "Hide Profile",
|
||||||
|
description = "Permanently hides the Profile button."
|
||||||
|
)
|
||||||
|
|
||||||
val hideCreate by booleanOption(
|
val hideCreate by booleanOption(
|
||||||
key = "hideCreate",
|
key = "hideCreate",
|
||||||
default = true,
|
default = true,
|
||||||
@@ -43,7 +71,7 @@ val hideNavigationButtonsPatch = bytecodePatch(
|
|||||||
)
|
)
|
||||||
|
|
||||||
execute {
|
execute {
|
||||||
if (!hideReels!! && !hideCreate!!) {
|
if (!hideHome!! &&!hideReels!! && !hideDirect!! && !hideSearch!! && !hideProfile!! && !hideCreate!!) {
|
||||||
return@execute Logger.getLogger(this::class.java.name).warning(
|
return@execute Logger.getLogger(this::class.java.name).warning(
|
||||||
"No hide navigation buttons options are enabled. No changes made."
|
"No hide navigation buttons options are enabled. No changes made."
|
||||||
)
|
)
|
||||||
@@ -76,6 +104,13 @@ val hideNavigationButtonsPatch = bytecodePatch(
|
|||||||
"""
|
"""
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (hideHome!!) {
|
||||||
|
addInstructionsAtControlFlowLabel(
|
||||||
|
returnIndex,
|
||||||
|
instructionsRemoveButtonByName("fragment_feed")
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
if (hideReels!!) {
|
if (hideReels!!) {
|
||||||
addInstructionsAtControlFlowLabel(
|
addInstructionsAtControlFlowLabel(
|
||||||
returnIndex,
|
returnIndex,
|
||||||
@@ -83,12 +118,33 @@ val hideNavigationButtonsPatch = bytecodePatch(
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (hideDirect!!) {
|
||||||
|
addInstructionsAtControlFlowLabel(
|
||||||
|
returnIndex,
|
||||||
|
instructionsRemoveButtonByName("fragment_direct_tab")
|
||||||
|
)
|
||||||
|
}
|
||||||
|
if (hideSearch!!) {
|
||||||
|
addInstructionsAtControlFlowLabel(
|
||||||
|
returnIndex,
|
||||||
|
instructionsRemoveButtonByName("fragment_search")
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
if (hideCreate!!) {
|
if (hideCreate!!) {
|
||||||
addInstructionsAtControlFlowLabel(
|
addInstructionsAtControlFlowLabel(
|
||||||
returnIndex,
|
returnIndex,
|
||||||
instructionsRemoveButtonByName("fragment_share")
|
instructionsRemoveButtonByName("fragment_share")
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (hideProfile!!) {
|
||||||
|
addInstructionsAtControlFlowLabel(
|
||||||
|
returnIndex,
|
||||||
|
instructionsRemoveButtonByName("fragment_profile")
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ internal val storyUrlResponseJsonParserFingerprint = fingerprint {
|
|||||||
}
|
}
|
||||||
|
|
||||||
internal val profileUrlResponseJsonParserFingerprint = fingerprint {
|
internal val profileUrlResponseJsonParserFingerprint = fingerprint {
|
||||||
strings("profile_to_share_url", "ProfileUrlResponse")
|
strings("profile_to_share_url")
|
||||||
custom { method, _ -> method.name == "parseFromJson" }
|
custom { method, _ -> method.name == "parseFromJson" }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ val disableReelsScrollingPatch = bytecodePatch(
|
|||||||
name = "Disable Reels scrolling",
|
name = "Disable Reels scrolling",
|
||||||
description = "Disables the endless scrolling behavior in Instagram Reels, preventing swiping to the next Reel. " +
|
description = "Disables the endless scrolling behavior in Instagram Reels, preventing swiping to the next Reel. " +
|
||||||
"Note: On a clean install, the 'Tip' animation may appear but will stop on its own after a few seconds.",
|
"Note: On a clean install, the 'Tip' animation may appear but will stop on its own after a few seconds.",
|
||||||
use = true
|
use = false
|
||||||
) {
|
) {
|
||||||
compatibleWith("com.instagram.android")
|
compatibleWith("com.instagram.android")
|
||||||
|
|
||||||
@@ -31,4 +31,4 @@ val disableReelsScrollingPatch = bytecodePatch(
|
|||||||
// Return false in onInterceptTouchEvent to disable pull-to-refresh.
|
// Return false in onInterceptTouchEvent to disable pull-to-refresh.
|
||||||
clipsSwipeRefreshLayoutOnInterceptTouchEventFingerprint.method.returnEarly(false)
|
clipsSwipeRefreshLayoutOnInterceptTouchEventFingerprint.method.returnEarly(false)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,9 @@
|
|||||||
|
package app.revanced.patches.letterboxd.unlock.unlockAppIcons
|
||||||
|
|
||||||
|
import app.revanced.patcher.fingerprint
|
||||||
|
|
||||||
|
internal val getCanChangeAppIconFingerprint = fingerprint {
|
||||||
|
custom { method, classDef ->
|
||||||
|
method.name == "getCanChangeAppIcon" && classDef.type.endsWith("SettingsAppIconFragment;")
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
|
||||||
|
package app.revanced.patches.letterboxd.unlock.unlockAppIcons
|
||||||
|
|
||||||
|
import app.revanced.patcher.patch.bytecodePatch
|
||||||
|
import app.revanced.util.returnEarly
|
||||||
|
|
||||||
|
@Suppress("unused")
|
||||||
|
val unlockAppIconsPatch = bytecodePatch(
|
||||||
|
name = "Unlock app icons",
|
||||||
|
) {
|
||||||
|
compatibleWith("com.letterboxd.letterboxd")
|
||||||
|
|
||||||
|
execute {
|
||||||
|
getCanChangeAppIconFingerprint.method.returnEarly(true)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
package app.revanced.patches.lightroom.misc.version
|
||||||
|
|
||||||
|
import app.revanced.patcher.extensions.InstructionExtensions.replaceInstruction
|
||||||
|
import app.revanced.patcher.patch.bytecodePatch
|
||||||
|
import com.android.tools.smali.dexlib2.Opcode
|
||||||
|
|
||||||
|
@Suppress("unused")
|
||||||
|
val disableVersionCheckPatch = bytecodePatch(
|
||||||
|
name = "Disable version check",
|
||||||
|
description = "Disables the server-side version check that prevents the app from starting.",
|
||||||
|
) {
|
||||||
|
compatibleWith("com.adobe.lrmobile"("9.3.0"))
|
||||||
|
|
||||||
|
execute {
|
||||||
|
refreshRemoteConfigurationFingerprint.method.apply {
|
||||||
|
val igetIndex = refreshRemoteConfigurationFingerprint.patternMatch!!.endIndex
|
||||||
|
|
||||||
|
// This value represents the server command to clear all version restrictions.
|
||||||
|
val statusForceReset = "-0x2";
|
||||||
|
replaceInstruction(igetIndex, "const/4 v1, $statusForceReset")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
package app.revanced.patches.lightroom.misc.version
|
||||||
|
|
||||||
|
import app.revanced.patcher.fingerprint
|
||||||
|
import com.android.tools.smali.dexlib2.AccessFlags
|
||||||
|
import com.android.tools.smali.dexlib2.Opcode
|
||||||
|
|
||||||
|
internal val refreshRemoteConfigurationFingerprint = fingerprint {
|
||||||
|
accessFlags(AccessFlags.PUBLIC, AccessFlags.STATIC)
|
||||||
|
strings(
|
||||||
|
"com.adobe.lrmobile.denylisted_version_set_key",
|
||||||
|
"com.adobe.lrmobile.app_min_version_key"
|
||||||
|
)
|
||||||
|
opcodes(
|
||||||
|
Opcode.INVOKE_STATIC,
|
||||||
|
Opcode.MOVE_RESULT_OBJECT,
|
||||||
|
Opcode.IGET, // Overwrite this instruction to disable the check.
|
||||||
|
)
|
||||||
|
}
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
package app.revanced.patches.peacocktv.ads
|
||||||
|
|
||||||
|
import app.revanced.patcher.fingerprint
|
||||||
|
import com.android.tools.smali.dexlib2.AccessFlags
|
||||||
|
|
||||||
|
internal val mediaTailerAdServiceFingerprint = fingerprint {
|
||||||
|
accessFlags(AccessFlags.PUBLIC)
|
||||||
|
returns("Ljava/lang/Object")
|
||||||
|
strings("Could not build MT Advertising service")
|
||||||
|
}
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
package app.revanced.patches.peacocktv.ads
|
||||||
|
|
||||||
|
import app.revanced.patcher.patch.bytecodePatch
|
||||||
|
import app.revanced.util.returnEarly
|
||||||
|
|
||||||
|
@Suppress("unused")
|
||||||
|
val hideAdsPatch = bytecodePatch(
|
||||||
|
name = "Hide ads",
|
||||||
|
description = "Hides all video ads.",
|
||||||
|
) {
|
||||||
|
compatibleWith("com.peacocktv.peacockandroid")
|
||||||
|
|
||||||
|
execute {
|
||||||
|
mediaTailerAdServiceFingerprint.method.returnEarly(false)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
package app.revanced.patches.protonvpn.splittunneling
|
||||||
|
|
||||||
|
import app.revanced.patcher.fingerprint
|
||||||
|
import com.android.tools.smali.dexlib2.AccessFlags
|
||||||
|
import com.android.tools.smali.dexlib2.Opcode
|
||||||
|
|
||||||
|
internal val enableSplitTunnelingUiFingerprint = fingerprint {
|
||||||
|
strings("currentModeAppNames")
|
||||||
|
opcodes(
|
||||||
|
Opcode.MOVE_OBJECT,
|
||||||
|
Opcode.MOVE_FROM16,
|
||||||
|
Opcode.INVOKE_DIRECT_RANGE
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
internal val initializeSplitTunnelingSettingsUIFingerprint = fingerprint {
|
||||||
|
custom { method, _ ->
|
||||||
|
method.name == "applyRestrictions"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,34 @@
|
|||||||
|
package app.revanced.patches.protonvpn.splittunneling
|
||||||
|
|
||||||
|
import app.revanced.patcher.extensions.InstructionExtensions.getInstruction
|
||||||
|
import app.revanced.patcher.extensions.InstructionExtensions.removeInstruction
|
||||||
|
import app.revanced.patcher.extensions.InstructionExtensions.replaceInstruction
|
||||||
|
import app.revanced.patcher.patch.bytecodePatch
|
||||||
|
import app.revanced.util.getReference
|
||||||
|
import app.revanced.util.indexOfFirstInstructionOrThrow
|
||||||
|
import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
|
||||||
|
import com.android.tools.smali.dexlib2.iface.reference.MethodReference
|
||||||
|
|
||||||
|
@Suppress("unused")
|
||||||
|
val unlockSplitTunnelingPatch =
|
||||||
|
bytecodePatch(
|
||||||
|
name = "Unlock split tunneling",
|
||||||
|
) {
|
||||||
|
compatibleWith("ch.protonvpn.android")
|
||||||
|
|
||||||
|
execute {
|
||||||
|
val registerIndex = enableSplitTunnelingUiFingerprint.patternMatch!!.endIndex - 1
|
||||||
|
|
||||||
|
enableSplitTunnelingUiFingerprint.method.apply {
|
||||||
|
val register = getInstruction<OneRegisterInstruction>(registerIndex).registerA
|
||||||
|
replaceInstruction(registerIndex, "const/4 v$register, 0x0")
|
||||||
|
}
|
||||||
|
|
||||||
|
initializeSplitTunnelingSettingsUIFingerprint.method.apply {
|
||||||
|
val initSettingsIndex = indexOfFirstInstructionOrThrow {
|
||||||
|
getReference<MethodReference>()?.name == "getSplitTunneling"
|
||||||
|
}
|
||||||
|
removeInstruction(initSettingsIndex - 1)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -3,12 +3,8 @@ package app.revanced.patches.reddit.ad.comments
|
|||||||
import app.revanced.patcher.fingerprint
|
import app.revanced.patcher.fingerprint
|
||||||
|
|
||||||
internal val hideCommentAdsFingerprint = fingerprint {
|
internal val hideCommentAdsFingerprint = fingerprint {
|
||||||
strings(
|
custom { method, classDef ->
|
||||||
"link",
|
method.name == "invokeSuspend" &&
|
||||||
// CommentPageRepository is not returning a link object
|
classDef.contains("LoadAdsCombinedCall")
|
||||||
"is not returning a link object"
|
|
||||||
)
|
|
||||||
custom { _, classDef ->
|
|
||||||
classDef.sourceFile == "PostDetailPresenter.kt"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
package app.revanced.patches.reddit.ad.comments
|
package app.revanced.patches.reddit.ad.comments
|
||||||
|
|
||||||
import app.revanced.patcher.extensions.InstructionExtensions.addInstructions
|
import app.revanced.patcher.extensions.InstructionExtensions.replaceInstructions
|
||||||
import app.revanced.patcher.patch.bytecodePatch
|
import app.revanced.patcher.patch.bytecodePatch
|
||||||
|
|
||||||
val hideCommentAdsPatch = bytecodePatch(
|
val hideCommentAdsPatch = bytecodePatch(
|
||||||
@@ -8,13 +8,6 @@ val hideCommentAdsPatch = bytecodePatch(
|
|||||||
) {
|
) {
|
||||||
|
|
||||||
execute {
|
execute {
|
||||||
hideCommentAdsFingerprint.method.addInstructions(
|
hideCommentAdsFingerprint.method.replaceInstructions(0, "return-object p1")
|
||||||
0,
|
|
||||||
"""
|
|
||||||
new-instance v0, Ljava/lang/Object;
|
|
||||||
invoke-direct {v0}, Ljava/lang/Object;-><init>()V
|
|
||||||
return-object v0
|
|
||||||
""",
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,6 +12,5 @@ internal val adPostFingerprint = fingerprint {
|
|||||||
|
|
||||||
internal val newAdPostFingerprint = fingerprint {
|
internal val newAdPostFingerprint = fingerprint {
|
||||||
opcodes(Opcode.INVOKE_VIRTUAL)
|
opcodes(Opcode.INVOKE_VIRTUAL)
|
||||||
strings("chain", "feedElement")
|
strings("feedElement", "com.reddit.cookie")
|
||||||
custom { _, classDef -> classDef.sourceFile == "AdElementConverter.kt" }
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,7 +3,6 @@ package app.revanced.patches.reddit.ad.general
|
|||||||
import app.revanced.patcher.extensions.InstructionExtensions.addInstructions
|
import app.revanced.patcher.extensions.InstructionExtensions.addInstructions
|
||||||
import app.revanced.patcher.extensions.InstructionExtensions.removeInstruction
|
import app.revanced.patcher.extensions.InstructionExtensions.removeInstruction
|
||||||
import app.revanced.patcher.patch.bytecodePatch
|
import app.revanced.patcher.patch.bytecodePatch
|
||||||
import app.revanced.patches.reddit.ad.banner.hideBannerPatch
|
|
||||||
import app.revanced.patches.reddit.ad.comments.hideCommentAdsPatch
|
import app.revanced.patches.reddit.ad.comments.hideCommentAdsPatch
|
||||||
import app.revanced.patches.reddit.misc.extension.sharedExtensionPatch
|
import app.revanced.patches.reddit.misc.extension.sharedExtensionPatch
|
||||||
import com.android.tools.smali.dexlib2.Opcode
|
import com.android.tools.smali.dexlib2.Opcode
|
||||||
@@ -16,14 +15,9 @@ import com.android.tools.smali.dexlib2.iface.reference.MethodReference
|
|||||||
val hideAdsPatch = bytecodePatch(
|
val hideAdsPatch = bytecodePatch(
|
||||||
name = "Hide ads",
|
name = "Hide ads",
|
||||||
) {
|
) {
|
||||||
dependsOn(hideBannerPatch, hideCommentAdsPatch, sharedExtensionPatch)
|
dependsOn(hideCommentAdsPatch, sharedExtensionPatch)
|
||||||
|
|
||||||
// Note that for now, this patch and anything using it will only work on
|
compatibleWith("com.reddit.frontpage")
|
||||||
// Reddit 2024.17.0 or older. Newer versions will crash during patching.
|
|
||||||
// See https://github.com/ReVanced/revanced-patches/issues/3099
|
|
||||||
// and https://github.com/iBotPeaches/Apktool/issues/3534.
|
|
||||||
// This constraint is necessary due to dependency on hideBannerPatch.
|
|
||||||
compatibleWith("com.reddit.frontpage"("2024.17.0"))
|
|
||||||
|
|
||||||
execute {
|
execute {
|
||||||
// region Filter promoted ads (does not work in popular or latest feed)
|
// region Filter promoted ads (does not work in popular or latest feed)
|
||||||
|
|||||||
@@ -0,0 +1,36 @@
|
|||||||
|
package app.revanced.patches.shared.misc.privacy
|
||||||
|
|
||||||
|
import app.revanced.patcher.patch.resourcePatch
|
||||||
|
import app.revanced.util.asSequence
|
||||||
|
import app.revanced.util.getNode
|
||||||
|
import org.w3c.dom.Element
|
||||||
|
|
||||||
|
@Suppress("unused")
|
||||||
|
val disableSentryTelemetryPatch = resourcePatch(
|
||||||
|
name = "Disable Sentry telemetry",
|
||||||
|
description = "Disables Sentry telemetry. See https://sentry.io/for/android/ for more information.",
|
||||||
|
use = false,
|
||||||
|
) {
|
||||||
|
execute {
|
||||||
|
fun Element.replaceOrCreate(tagName: String, attributeName: String, attributeValue: String) {
|
||||||
|
val childElements = getElementsByTagName(tagName).asSequence().filterIsInstance<Element>()
|
||||||
|
val targetChild = childElements.find { childElement ->
|
||||||
|
childElement.getAttribute("android:name") == attributeName
|
||||||
|
}
|
||||||
|
if (targetChild != null) {
|
||||||
|
targetChild.setAttribute("android:value", attributeValue)
|
||||||
|
} else {
|
||||||
|
appendChild(ownerDocument.createElement(tagName).apply {
|
||||||
|
setAttribute("android:name", attributeName)
|
||||||
|
setAttribute("android:value", attributeValue)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
document("AndroidManifest.xml").use { document ->
|
||||||
|
val application = document.getNode("application") as Element
|
||||||
|
application.replaceOrCreate("meta-data", "io.sentry.enabled", "false")
|
||||||
|
application.replaceOrCreate("meta-data", "io.sentry.dsn", "")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -3,5 +3,5 @@ package app.revanced.patches.spotify.misc.extension
|
|||||||
import app.revanced.patcher.fingerprint
|
import app.revanced.patcher.fingerprint
|
||||||
|
|
||||||
internal val loadOrbitLibraryFingerprint = fingerprint {
|
internal val loadOrbitLibraryFingerprint = fingerprint {
|
||||||
strings("OrbitLibraryLoader", "cst")
|
strings("orbit_library_load", "orbit-jni-spotify")
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,116 @@
|
|||||||
|
package app.revanced.patches.strava.media.download
|
||||||
|
|
||||||
|
import app.revanced.patcher.extensions.InstructionExtensions.addInstruction
|
||||||
|
import app.revanced.patcher.extensions.InstructionExtensions.addInstructions
|
||||||
|
import app.revanced.patcher.extensions.InstructionExtensions.addInstructionsWithLabels
|
||||||
|
import app.revanced.patcher.extensions.InstructionExtensions.getInstruction
|
||||||
|
import app.revanced.patcher.extensions.InstructionExtensions.instructions
|
||||||
|
import app.revanced.patcher.patch.bytecodePatch
|
||||||
|
import app.revanced.patcher.util.smali.ExternalLabel
|
||||||
|
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.strava.misc.extension.sharedExtensionPatch
|
||||||
|
import app.revanced.util.getReference
|
||||||
|
import app.revanced.util.writeRegister
|
||||||
|
import com.android.tools.smali.dexlib2.Opcode
|
||||||
|
import com.android.tools.smali.dexlib2.builder.instruction.BuilderInstruction22c
|
||||||
|
import com.android.tools.smali.dexlib2.iface.reference.FieldReference
|
||||||
|
import com.android.tools.smali.dexlib2.iface.reference.TypeReference
|
||||||
|
|
||||||
|
private const val ACTION_CLASS_DESCRIPTOR = "Lcom/strava/bottomsheet/Action;"
|
||||||
|
private const val MEDIA_CLASS_DESCRIPTOR = "Lcom/strava/photos/data/Media;"
|
||||||
|
private const val MEDIA_DOWNLOAD_CLASS_DESCRIPTOR = "Lapp/revanced/extension/strava/AddMediaDownloadPatch;"
|
||||||
|
|
||||||
|
@Suppress("unused")
|
||||||
|
val addMediaDownloadPatch = bytecodePatch(
|
||||||
|
name = "Add media download",
|
||||||
|
description = "Extends the full-screen media viewer menu with items to copy or open their URLs or download them directly."
|
||||||
|
) {
|
||||||
|
compatibleWith("com.strava")
|
||||||
|
|
||||||
|
dependsOn(
|
||||||
|
resourceMappingPatch,
|
||||||
|
sharedExtensionPatch
|
||||||
|
)
|
||||||
|
|
||||||
|
execute {
|
||||||
|
val fragmentClass = classBy { it.endsWith("/FullscreenMediaFragment;") }!!.mutableClass
|
||||||
|
|
||||||
|
// region Extend menu of `FullscreenMediaFragment` with actions.
|
||||||
|
|
||||||
|
createAndShowFragmentFingerprint.match(fragmentClass).method.apply {
|
||||||
|
val setTrueIndex = instructions.indexOfFirst { instruction ->
|
||||||
|
instruction.opcode == Opcode.IPUT_BOOLEAN
|
||||||
|
}
|
||||||
|
val actionRegistrarRegister = getInstruction<BuilderInstruction22c>(setTrueIndex).registerB
|
||||||
|
val actionRegister = instructions.first { instruction ->
|
||||||
|
instruction.getReference<TypeReference>()?.type == ACTION_CLASS_DESCRIPTOR
|
||||||
|
}.writeRegister!!
|
||||||
|
|
||||||
|
fun addMenuItem(actionId: String, string: String, color: String, drawable: String) = addInstructions(
|
||||||
|
setTrueIndex + 1,
|
||||||
|
"""
|
||||||
|
new-instance v$actionRegister, $ACTION_CLASS_DESCRIPTOR
|
||||||
|
sget v${actionRegister + 1}, $MEDIA_DOWNLOAD_CLASS_DESCRIPTOR->$actionId:I
|
||||||
|
const v${actionRegister + 2}, 0x0
|
||||||
|
const v${actionRegister + 3}, ${resourceMappings["string", string]}
|
||||||
|
const v${actionRegister + 4}, ${resourceMappings["color", color]}
|
||||||
|
const v${actionRegister + 5}, ${resourceMappings["drawable", drawable]}
|
||||||
|
move/from16 v${actionRegister + 6}, v${actionRegister + 4}
|
||||||
|
invoke-direct/range { v$actionRegister .. v${actionRegister + 7} }, $ACTION_CLASS_DESCRIPTOR-><init>(ILjava/lang/String;IIIILjava/io/Serializable;)V
|
||||||
|
invoke-virtual { v$actionRegistrarRegister, v$actionRegister }, Lcom/strava/bottomsheet/a;->a(Lcom/strava/bottomsheet/BottomSheetItem;)V
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
|
||||||
|
addMenuItem("ACTION_COPY_LINK", "copy_link", "core_o3", "actions_link_normal_xsmall")
|
||||||
|
addMenuItem("ACTION_OPEN_LINK", "fallback_menu_item_open_in_browser", "core_o3", "actions_link_external_normal_xsmall")
|
||||||
|
addMenuItem("ACTION_DOWNLOAD", "download", "core_o3", "actions_download_normal_xsmall")
|
||||||
|
|
||||||
|
// Move media to last parameter of `Action` constructor.
|
||||||
|
val getMediaInstruction = instructions.first { instruction ->
|
||||||
|
instruction.getReference<FieldReference>()?.type == MEDIA_CLASS_DESCRIPTOR
|
||||||
|
}
|
||||||
|
addInstruction(
|
||||||
|
getMediaInstruction.location.index + 1,
|
||||||
|
"move-object/from16 v${actionRegister + 7}, v${getMediaInstruction.writeRegister}"
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
// endregion
|
||||||
|
|
||||||
|
// region Handle new actions.
|
||||||
|
|
||||||
|
val actionClass = classes.first { clazz ->
|
||||||
|
clazz.type == ACTION_CLASS_DESCRIPTOR
|
||||||
|
}
|
||||||
|
val actionSerializableField = actionClass.instanceFields.first { field ->
|
||||||
|
field.type == "Ljava/io/Serializable;"
|
||||||
|
}
|
||||||
|
|
||||||
|
// Handle "copy link" & "open link" & "download" actions.
|
||||||
|
handleMediaActionFingerprint.match(fragmentClass).method.apply {
|
||||||
|
// Call handler if action ID < 0 (= custom).
|
||||||
|
val moveInstruction = instructions.first { instruction ->
|
||||||
|
instruction.opcode == Opcode.MOVE_RESULT
|
||||||
|
}
|
||||||
|
val indexAfterMoveInstruction = moveInstruction.location.index + 1
|
||||||
|
val actionIdRegister = moveInstruction.writeRegister
|
||||||
|
addInstructionsWithLabels(
|
||||||
|
indexAfterMoveInstruction,
|
||||||
|
"""
|
||||||
|
if-gez v$actionIdRegister, :move
|
||||||
|
check-cast p2, $ACTION_CLASS_DESCRIPTOR
|
||||||
|
iget-object v0, p2, $actionSerializableField
|
||||||
|
check-cast v0, $MEDIA_CLASS_DESCRIPTOR
|
||||||
|
invoke-static { v$actionIdRegister, v0 }, $MEDIA_DOWNLOAD_CLASS_DESCRIPTOR->handleAction(I$MEDIA_CLASS_DESCRIPTOR)Z
|
||||||
|
move-result v0
|
||||||
|
return v0
|
||||||
|
""",
|
||||||
|
ExternalLabel("move", instructions[indexAfterMoveInstruction])
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
// endregion
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
package app.revanced.patches.strava.media.download
|
||||||
|
|
||||||
|
import app.revanced.patcher.fingerprint
|
||||||
|
import com.android.tools.smali.dexlib2.AccessFlags
|
||||||
|
|
||||||
|
internal val createAndShowFragmentFingerprint = fingerprint {
|
||||||
|
accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL)
|
||||||
|
returns("V")
|
||||||
|
parameters("L")
|
||||||
|
strings("mediaType")
|
||||||
|
}
|
||||||
|
|
||||||
|
internal val handleMediaActionFingerprint = fingerprint {
|
||||||
|
parameters("Landroid/view/View;", "Lcom/strava/bottomsheet/BottomSheetItem;")
|
||||||
|
}
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
package app.revanced.patches.strava.media.upload
|
||||||
|
|
||||||
|
import app.revanced.patcher.fingerprint
|
||||||
|
|
||||||
|
internal val getCompressionQualityFingerprint = fingerprint {
|
||||||
|
custom { method, _ ->
|
||||||
|
method.name == "getCompressionQuality"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
internal val getMaxDurationFingerprint = fingerprint {
|
||||||
|
custom { method, _ ->
|
||||||
|
method.name == "getMaxDuration"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
internal val getMaxSizeFingerprint = fingerprint {
|
||||||
|
custom { method, _ ->
|
||||||
|
method.name == "getMaxSize"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,48 @@
|
|||||||
|
package app.revanced.patches.strava.media.upload
|
||||||
|
|
||||||
|
import app.revanced.patcher.patch.bytecodePatch
|
||||||
|
import app.revanced.patcher.patch.intOption
|
||||||
|
import app.revanced.patcher.patch.longOption
|
||||||
|
import app.revanced.util.returnEarly
|
||||||
|
|
||||||
|
@Suppress("unused")
|
||||||
|
val overwriteMediaUploadParametersPatch = bytecodePatch(
|
||||||
|
name = "Overwrite media upload parameters",
|
||||||
|
description = "Overwrites the compression, resize and trim media (images and videos) parameters returned by Strava's server before upload.",
|
||||||
|
) {
|
||||||
|
compatibleWith("com.strava")
|
||||||
|
|
||||||
|
val compressionQuality by intOption(
|
||||||
|
key = "compressionQuality",
|
||||||
|
title = "Compression quality (percent)",
|
||||||
|
description = "This is used as the JPEG quality setting (≤ 100).",
|
||||||
|
) { it == null || it in 1..100 }
|
||||||
|
|
||||||
|
val maxDuration by longOption(
|
||||||
|
key = "maxDuration",
|
||||||
|
title = "Max duration (seconds)",
|
||||||
|
description = "The maximum length (≤ ${60 * 60}) of a video before it gets trimmed.",
|
||||||
|
) { it == null || it in 1..60 * 60 }
|
||||||
|
|
||||||
|
val maxSize by intOption(
|
||||||
|
key = "maxSize",
|
||||||
|
title = "Max size (pixels)",
|
||||||
|
description = "The image gets resized so that the smaller dimension (width/height) does not exceed this value (≤ 10000).",
|
||||||
|
) { it == null || it in 1..10000 }
|
||||||
|
|
||||||
|
execute {
|
||||||
|
val mediaUploadParametersClass = classes.single { it.endsWith("/MediaUploadParameters;") }
|
||||||
|
|
||||||
|
compressionQuality?.let { compressionQuality ->
|
||||||
|
getCompressionQualityFingerprint.match(mediaUploadParametersClass).method.returnEarly(compressionQuality / 100f)
|
||||||
|
}
|
||||||
|
|
||||||
|
maxDuration?.let { maxDuration ->
|
||||||
|
getMaxDurationFingerprint.match(mediaUploadParametersClass).method.returnEarly(maxDuration)
|
||||||
|
}
|
||||||
|
|
||||||
|
maxSize?.let {
|
||||||
|
getMaxSizeFingerprint.match(mediaUploadParametersClass).method.returnEarly(it)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
package app.revanced.patches.strava.misc.extension
|
||||||
|
|
||||||
|
import app.revanced.patches.shared.misc.extension.extensionHook
|
||||||
|
|
||||||
|
internal val applicationOnCreateHook = extensionHook {
|
||||||
|
custom { method, classDef ->
|
||||||
|
method.name == "onCreate" && classDef.endsWith("/StravaApplication;")
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
package app.revanced.patches.strava.misc.extension
|
||||||
|
|
||||||
|
import app.revanced.patches.shared.misc.extension.sharedExtensionPatch
|
||||||
|
|
||||||
|
val sharedExtensionPatch = sharedExtensionPatch("strava", applicationOnCreateHook)
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
package app.revanced.patches.strava.password
|
||||||
|
|
||||||
|
import app.revanced.patcher.Fingerprint
|
||||||
|
import app.revanced.patcher.patch.bytecodePatch
|
||||||
|
import app.revanced.util.returnEarly
|
||||||
|
|
||||||
|
@Suppress("unused")
|
||||||
|
val enablePasswordLoginPatch = bytecodePatch(
|
||||||
|
name = "Enable password login",
|
||||||
|
description = "Re-enables password login after having used an OTP code.",
|
||||||
|
) {
|
||||||
|
compatibleWith("com.strava")
|
||||||
|
|
||||||
|
execute {
|
||||||
|
fun Fingerprint.returnTrue() = method.returnEarly(true)
|
||||||
|
|
||||||
|
logInGetUsePasswordFingerprint.returnTrue()
|
||||||
|
emailChangeGetUsePasswordFingerprint.returnTrue()
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
package app.revanced.patches.strava.password
|
||||||
|
|
||||||
|
import app.revanced.patcher.fingerprint
|
||||||
|
|
||||||
|
internal val logInGetUsePasswordFingerprint = fingerprint {
|
||||||
|
custom { method, classDef ->
|
||||||
|
method.name == "getUsePassword" && classDef.endsWith("/RequestOtpLogInNetworkResponse;")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
internal val emailChangeGetUsePasswordFingerprint = fingerprint {
|
||||||
|
custom { method, classDef ->
|
||||||
|
method.name == "getUsePassword" && classDef.endsWith("/RequestEmailChangeWithOtpOrPasswordResponse;")
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
package app.revanced.patches.strava.privacy
|
||||||
|
|
||||||
|
import app.revanced.patcher.patch.bytecodePatch
|
||||||
|
import app.revanced.util.returnEarly
|
||||||
|
|
||||||
|
@Suppress("unused")
|
||||||
|
val blockSnowplowTrackingPatch = bytecodePatch(
|
||||||
|
name = "Block Snowplow tracking",
|
||||||
|
description = "Blocks Snowplow analytics. See https://snowplow.io for more information.",
|
||||||
|
) {
|
||||||
|
compatibleWith("com.strava")
|
||||||
|
|
||||||
|
execute {
|
||||||
|
// Keep events list empty, otherwise sent to https://c.strava.com/com.snowplowanalytics.snowplow/tp2.
|
||||||
|
insertEventFingerprint.method.returnEarly()
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
package app.revanced.patches.strava.privacy
|
||||||
|
|
||||||
|
import app.revanced.patcher.fingerprint
|
||||||
|
|
||||||
|
// https://github.com/snowplow/snowplow-android-tracker/blob/2.2.0/snowplow-tracker/src/main/java/com/snowplowanalytics/snowplow/internal/emitter/storage/SQLiteEventStore.java#L130
|
||||||
|
// Not the exact same code (e.g. returns void instead of long), even though the version number matches.
|
||||||
|
internal val insertEventFingerprint = fingerprint {
|
||||||
|
strings("Added event to database: %s")
|
||||||
|
}
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
package app.revanced.patches.strava.quickedit
|
||||||
|
|
||||||
|
import app.revanced.patcher.patch.bytecodePatch
|
||||||
|
import app.revanced.util.returnEarly
|
||||||
|
|
||||||
|
@Suppress("unused")
|
||||||
|
val disableQuickEditPatch = bytecodePatch(
|
||||||
|
name = "Disable Quick Edit",
|
||||||
|
description = "Prevents the Quick Edit prompt from popping up.",
|
||||||
|
) {
|
||||||
|
compatibleWith("com.strava")
|
||||||
|
|
||||||
|
execute {
|
||||||
|
getHasAccessToQuickEditFingerprint.method.returnEarly()
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
package app.revanced.patches.strava.quickedit
|
||||||
|
|
||||||
|
import app.revanced.patcher.fingerprint
|
||||||
|
|
||||||
|
internal val getHasAccessToQuickEditFingerprint = fingerprint {
|
||||||
|
returns("Z")
|
||||||
|
custom { method, _ ->
|
||||||
|
method.name == "getHasAccessToQuickEdit"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,11 +1,9 @@
|
|||||||
package app.revanced.patches.strava.subscription
|
package app.revanced.patches.strava.subscription
|
||||||
|
|
||||||
import app.revanced.patcher.fingerprint
|
import app.revanced.patcher.fingerprint
|
||||||
import com.android.tools.smali.dexlib2.Opcode
|
|
||||||
|
|
||||||
internal val getSubscribedFingerprint = fingerprint {
|
internal val getSubscribedFingerprint = fingerprint {
|
||||||
opcodes(Opcode.IGET_BOOLEAN)
|
|
||||||
custom { method, classDef ->
|
custom { method, classDef ->
|
||||||
classDef.endsWith("/SubscriptionDetailResponse;") && method.name == "getSubscribed"
|
method.name == "getSubscribed" && classDef.endsWith("/SubscriptionDetailResponse;")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
package app.revanced.patches.strava.subscription
|
package app.revanced.patches.strava.subscription
|
||||||
|
|
||||||
import app.revanced.patcher.extensions.InstructionExtensions.replaceInstruction
|
|
||||||
import app.revanced.patcher.patch.bytecodePatch
|
import app.revanced.patcher.patch.bytecodePatch
|
||||||
|
import app.revanced.util.returnEarly
|
||||||
|
|
||||||
@Suppress("unused")
|
@Suppress("unused")
|
||||||
val unlockSubscriptionPatch = bytecodePatch(
|
val unlockSubscriptionPatch = bytecodePatch(
|
||||||
@@ -11,9 +11,6 @@ val unlockSubscriptionPatch = bytecodePatch(
|
|||||||
compatibleWith("com.strava")
|
compatibleWith("com.strava")
|
||||||
|
|
||||||
execute {
|
execute {
|
||||||
getSubscribedFingerprint.method.replaceInstruction(
|
getSubscribedFingerprint.method.returnEarly(true)
|
||||||
getSubscribedFingerprint.patternMatch!!.startIndex,
|
|
||||||
"const/4 v0, 0x1",
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -174,6 +174,7 @@ val hideLayoutComponentsPatch = bytecodePatch(
|
|||||||
),
|
),
|
||||||
SwitchPreference("revanced_hide_channel_bar"),
|
SwitchPreference("revanced_hide_channel_bar"),
|
||||||
SwitchPreference("revanced_hide_channel_watermark"),
|
SwitchPreference("revanced_hide_channel_watermark"),
|
||||||
|
SwitchPreference("revanced_hide_crowdfunding_box"),
|
||||||
SwitchPreference("revanced_hide_emergency_box"),
|
SwitchPreference("revanced_hide_emergency_box"),
|
||||||
SwitchPreference("revanced_hide_info_panels"),
|
SwitchPreference("revanced_hide_info_panels"),
|
||||||
SwitchPreference("revanced_hide_join_membership_button"),
|
SwitchPreference("revanced_hide_join_membership_button"),
|
||||||
@@ -229,7 +230,6 @@ val hideLayoutComponentsPatch = bytecodePatch(
|
|||||||
SwitchPreference("revanced_hide_chips_shelf"),
|
SwitchPreference("revanced_hide_chips_shelf"),
|
||||||
SwitchPreference("revanced_hide_community_posts"),
|
SwitchPreference("revanced_hide_community_posts"),
|
||||||
SwitchPreference("revanced_hide_compact_banner"),
|
SwitchPreference("revanced_hide_compact_banner"),
|
||||||
SwitchPreference("revanced_hide_crowdfunding_box"),
|
|
||||||
SwitchPreference("revanced_hide_expandable_card"),
|
SwitchPreference("revanced_hide_expandable_card"),
|
||||||
SwitchPreference("revanced_hide_floating_microphone_button"),
|
SwitchPreference("revanced_hide_floating_microphone_button"),
|
||||||
SwitchPreference(
|
SwitchPreference(
|
||||||
|
|||||||
@@ -0,0 +1,14 @@
|
|||||||
|
package app.revanced.patches.youtube.misc.audiofocus
|
||||||
|
|
||||||
|
import app.revanced.patcher.fingerprint
|
||||||
|
|
||||||
|
internal val audioFocusChangeListenerFingerprint = fingerprint {
|
||||||
|
strings(
|
||||||
|
"AudioFocus DUCK",
|
||||||
|
"AudioFocus loss; Will lower volume",
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
internal val audioFocusRequestBuilderFingerprint = fingerprint {
|
||||||
|
strings("Can't build an AudioFocusRequestCompat instance without a listener")
|
||||||
|
}
|
||||||
@@ -0,0 +1,66 @@
|
|||||||
|
package app.revanced.patches.youtube.misc.audiofocus
|
||||||
|
|
||||||
|
import app.revanced.patcher.extensions.InstructionExtensions.addInstructions
|
||||||
|
import app.revanced.patcher.extensions.InstructionExtensions.addInstructionsWithLabels
|
||||||
|
import app.revanced.patcher.extensions.InstructionExtensions.getInstruction
|
||||||
|
import app.revanced.patcher.patch.bytecodePatch
|
||||||
|
import app.revanced.patcher.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.patches.youtube.misc.settings.settingsPatch
|
||||||
|
|
||||||
|
private const val EXTENSION_CLASS_DESCRIPTOR = "Lapp/revanced/extension/youtube/patches/PauseOnAudioInterruptPatch;"
|
||||||
|
|
||||||
|
val pauseOnAudioInterruptPatch = bytecodePatch(
|
||||||
|
name = "Pause on audio interrupt",
|
||||||
|
description = "Adds an option to pause playback instead of lowering volume when other audio plays.",
|
||||||
|
) {
|
||||||
|
dependsOn(
|
||||||
|
sharedExtensionPatch,
|
||||||
|
settingsPatch,
|
||||||
|
addResourcesPatch,
|
||||||
|
)
|
||||||
|
|
||||||
|
compatibleWith(
|
||||||
|
"com.google.android.youtube"(
|
||||||
|
"20.14.43",
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
execute {
|
||||||
|
addResources("youtube", "misc.audiofocus.pauseOnAudioInterruptPatch")
|
||||||
|
|
||||||
|
PreferenceScreen.MISC.addPreferences(
|
||||||
|
SwitchPreference("revanced_pause_on_audio_interrupt"),
|
||||||
|
)
|
||||||
|
|
||||||
|
// Hook the builder method that creates AudioFocusRequest.
|
||||||
|
// At the start, set the willPauseWhenDucked field (b) to true if setting is enabled.
|
||||||
|
val builderMethod = audioFocusRequestBuilderFingerprint.method
|
||||||
|
val builderClass = builderMethod.definingClass
|
||||||
|
|
||||||
|
builderMethod.addInstructionsWithLabels(
|
||||||
|
0,
|
||||||
|
"""
|
||||||
|
invoke-static {}, $EXTENSION_CLASS_DESCRIPTOR->shouldPauseOnAudioInterrupt()Z
|
||||||
|
move-result v0
|
||||||
|
if-eqz v0, :skip_override
|
||||||
|
const/4 v0, 0x1
|
||||||
|
iput-boolean v0, p0, $builderClass->b:Z
|
||||||
|
""",
|
||||||
|
ExternalLabel("skip_override", builderMethod.getInstruction(0)),
|
||||||
|
)
|
||||||
|
|
||||||
|
// Also hook the audio focus change listener as a backup.
|
||||||
|
audioFocusChangeListenerFingerprint.method.addInstructions(
|
||||||
|
0,
|
||||||
|
"""
|
||||||
|
invoke-static { p1 }, $EXTENSION_CLASS_DESCRIPTOR->overrideAudioFocusChange(I)I
|
||||||
|
move-result p1
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -23,22 +23,19 @@ import app.revanced.util.InstructionUtils.Companion.writeOpcodes
|
|||||||
import com.android.tools.smali.dexlib2.AccessFlags
|
import com.android.tools.smali.dexlib2.AccessFlags
|
||||||
import com.android.tools.smali.dexlib2.Opcode
|
import com.android.tools.smali.dexlib2.Opcode
|
||||||
import com.android.tools.smali.dexlib2.Opcode.*
|
import com.android.tools.smali.dexlib2.Opcode.*
|
||||||
|
import com.android.tools.smali.dexlib2.analysis.reflection.util.ReflectionUtils
|
||||||
|
import com.android.tools.smali.dexlib2.formatter.DexFormatter
|
||||||
import com.android.tools.smali.dexlib2.iface.Method
|
import com.android.tools.smali.dexlib2.iface.Method
|
||||||
import com.android.tools.smali.dexlib2.iface.instruction.FiveRegisterInstruction
|
import com.android.tools.smali.dexlib2.iface.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.ReferenceInstruction
|
|
||||||
import com.android.tools.smali.dexlib2.iface.instruction.RegisterRangeInstruction
|
|
||||||
import com.android.tools.smali.dexlib2.iface.instruction.ThreeRegisterInstruction
|
|
||||||
import com.android.tools.smali.dexlib2.iface.instruction.TwoRegisterInstruction
|
|
||||||
import com.android.tools.smali.dexlib2.iface.instruction.WideLiteralInstruction
|
|
||||||
import com.android.tools.smali.dexlib2.iface.reference.FieldReference
|
import com.android.tools.smali.dexlib2.iface.reference.FieldReference
|
||||||
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.Reference
|
import com.android.tools.smali.dexlib2.iface.reference.Reference
|
||||||
import com.android.tools.smali.dexlib2.iface.reference.StringReference
|
import com.android.tools.smali.dexlib2.iface.reference.StringReference
|
||||||
|
import com.android.tools.smali.dexlib2.iface.value.*
|
||||||
import com.android.tools.smali.dexlib2.immutable.ImmutableField
|
import com.android.tools.smali.dexlib2.immutable.ImmutableField
|
||||||
|
import com.android.tools.smali.dexlib2.immutable.value.*
|
||||||
import com.android.tools.smali.dexlib2.util.MethodUtil
|
import com.android.tools.smali.dexlib2.util.MethodUtil
|
||||||
import java.util.EnumSet
|
import java.util.*
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Starting from and including the instruction at index [startIndex],
|
* Starting from and including the instruction at index [startIndex],
|
||||||
@@ -180,7 +177,7 @@ internal val Instruction.isReturnInstruction: Boolean
|
|||||||
*
|
*
|
||||||
* @param fieldName The name of the field to find. Partial matches are allowed.
|
* @param fieldName The name of the field to find. Partial matches are allowed.
|
||||||
*/
|
*/
|
||||||
private fun Method.findInstructionIndexFromToString(fieldName: String) : Int {
|
private fun Method.findInstructionIndexFromToString(fieldName: String): Int {
|
||||||
val stringIndex = indexOfFirstInstruction {
|
val stringIndex = indexOfFirstInstruction {
|
||||||
val reference = getReference<StringReference>()
|
val reference = getReference<StringReference>()
|
||||||
reference?.string?.contains(fieldName) == true
|
reference?.string?.contains(fieldName) == true
|
||||||
@@ -233,7 +230,7 @@ private fun Method.findInstructionIndexFromToString(fieldName: String) : Int {
|
|||||||
* @param fieldName The name of the field to find. Partial matches are allowed.
|
* @param fieldName The name of the field to find. Partial matches are allowed.
|
||||||
*/
|
*/
|
||||||
context(BytecodePatchContext)
|
context(BytecodePatchContext)
|
||||||
internal fun Method.findMethodFromToString(fieldName: String) : MutableMethod {
|
internal fun Method.findMethodFromToString(fieldName: String): MutableMethod {
|
||||||
val methodUsageIndex = findInstructionIndexFromToString(fieldName)
|
val methodUsageIndex = findInstructionIndexFromToString(fieldName)
|
||||||
return navigate(this).to(methodUsageIndex).stop()
|
return navigate(this).to(methodUsageIndex).stop()
|
||||||
}
|
}
|
||||||
@@ -243,7 +240,7 @@ internal fun Method.findMethodFromToString(fieldName: String) : MutableMethod {
|
|||||||
*
|
*
|
||||||
* @param fieldName The name of the field to find. Partial matches are allowed.
|
* @param fieldName The name of the field to find. Partial matches are allowed.
|
||||||
*/
|
*/
|
||||||
internal fun Method.findFieldFromToString(fieldName: String) : FieldReference {
|
internal fun Method.findFieldFromToString(fieldName: String): FieldReference {
|
||||||
val methodUsageIndex = findInstructionIndexFromToString(fieldName)
|
val methodUsageIndex = findInstructionIndexFromToString(fieldName)
|
||||||
return getInstruction<ReferenceInstruction>(methodUsageIndex).getReference<FieldReference>()!!
|
return getInstruction<ReferenceInstruction>(methodUsageIndex).getReference<FieldReference>()!!
|
||||||
}
|
}
|
||||||
@@ -838,23 +835,59 @@ fun BytecodePatchContext.forEachLiteralValueInstruction(
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private const val RETURN_TYPE_MISMATCH = "Mismatch between override type and Method return type"
|
private fun MutableMethod.checkReturnType(expectedTypes: Iterable<Class<*>>) {
|
||||||
|
val returnTypeJava = ReflectionUtils.dexToJavaName(returnType)
|
||||||
|
check(expectedTypes.any { returnTypeJava == it.name }) {
|
||||||
|
"Actual return type $returnTypeJava is not contained in expected types: $expectedTypes"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Overrides the first instruction of a method with a constant `Boolean` return value.
|
* Overrides the first instruction of a method with returning the default value for the type (or `void`).
|
||||||
* None of the method code will ever execute.
|
* None of the method code will ever execute.
|
||||||
*
|
*
|
||||||
* For methods that return an object or any array type, calling this method with `false`
|
|
||||||
* will force the method to return a `null` value.
|
|
||||||
*
|
|
||||||
* @see returnLate
|
* @see returnLate
|
||||||
*/
|
*/
|
||||||
fun MutableMethod.returnEarly(value: Boolean = false) {
|
fun MutableMethod.returnEarly() {
|
||||||
val returnType = returnType.first()
|
val value = when (returnType) {
|
||||||
check(returnType == 'Z' || (!value && (returnType == 'V' || returnType == 'L' || returnType != '['))) {
|
"V" -> null
|
||||||
RETURN_TYPE_MISMATCH
|
"Z" -> ImmutableBooleanEncodedValue.FALSE_VALUE
|
||||||
|
"B" -> ImmutableByteEncodedValue(0)
|
||||||
|
"S" -> ImmutableShortEncodedValue(0)
|
||||||
|
"C" -> ImmutableCharEncodedValue(Char.MIN_VALUE)
|
||||||
|
"I" -> ImmutableIntEncodedValue(0)
|
||||||
|
"F" -> ImmutableFloatEncodedValue(0f)
|
||||||
|
"J" -> ImmutableLongEncodedValue(0)
|
||||||
|
"D" -> ImmutableDoubleEncodedValue(0.0)
|
||||||
|
else -> ImmutableNullEncodedValue.INSTANCE
|
||||||
}
|
}
|
||||||
overrideReturnValue(value.toHexString(), false)
|
overrideReturnValue(value, false)
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun MutableMethod.returnString(value: String, late: Boolean) {
|
||||||
|
checkReturnType(String::class.java.allAssignableTypes())
|
||||||
|
overrideReturnValue(ImmutableStringEncodedValue(value), late)
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Overrides the first instruction of a method with a constant `String` return value.
|
||||||
|
* None of the method code will ever execute.
|
||||||
|
*
|
||||||
|
* @see returnLate
|
||||||
|
*/
|
||||||
|
fun MutableMethod.returnEarly(value: String) = returnString(value, false)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Overrides all return statements with a constant `String` value.
|
||||||
|
* All method code is executed the same as unpatched.
|
||||||
|
*
|
||||||
|
* @see returnEarly
|
||||||
|
*/
|
||||||
|
fun MutableMethod.returnLate(value: String) = returnString(value, true)
|
||||||
|
|
||||||
|
private fun MutableMethod.returnByte(value: Byte, late: Boolean) {
|
||||||
|
checkReturnType(Byte::class.javaObjectType.allAssignableTypes() + Byte::class.javaPrimitiveType!!)
|
||||||
|
overrideReturnValue(ImmutableByteEncodedValue(value), late)
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -863,9 +896,40 @@ fun MutableMethod.returnEarly(value: Boolean = false) {
|
|||||||
*
|
*
|
||||||
* @see returnLate
|
* @see returnLate
|
||||||
*/
|
*/
|
||||||
fun MutableMethod.returnEarly(value: Byte) {
|
fun MutableMethod.returnEarly(value: Byte) = returnByte(value, false)
|
||||||
check(returnType.first() == 'B') { RETURN_TYPE_MISMATCH }
|
|
||||||
overrideReturnValue(value.toString(), false)
|
/**
|
||||||
|
* Overrides all return statements with a constant `Byte` value.
|
||||||
|
* All method code is executed the same as unpatched.
|
||||||
|
*
|
||||||
|
* @see returnEarly
|
||||||
|
*/
|
||||||
|
fun MutableMethod.returnLate(value: Byte) = returnByte(value, true)
|
||||||
|
|
||||||
|
private fun MutableMethod.returnBoolean(value: Boolean, late: Boolean) {
|
||||||
|
checkReturnType(Boolean::class.javaObjectType.allAssignableTypes() + Boolean::class.javaPrimitiveType!!)
|
||||||
|
overrideReturnValue(ImmutableBooleanEncodedValue.forBoolean(value), late)
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Overrides the first instruction of a method with a constant `Boolean` return value.
|
||||||
|
* None of the method code will ever execute.
|
||||||
|
*
|
||||||
|
* @see returnLate
|
||||||
|
*/
|
||||||
|
fun MutableMethod.returnEarly(value: Boolean) = returnBoolean(value, false)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Overrides all return statements with a constant `Boolean` value.
|
||||||
|
* All method code is executed the same as unpatched.
|
||||||
|
*
|
||||||
|
* @see returnEarly
|
||||||
|
*/
|
||||||
|
fun MutableMethod.returnLate(value: Boolean) = returnBoolean(value, true)
|
||||||
|
|
||||||
|
private fun MutableMethod.returnShort(value: Short, late: Boolean) {
|
||||||
|
checkReturnType(Short::class.javaObjectType.allAssignableTypes() + Short::class.javaPrimitiveType!!)
|
||||||
|
overrideReturnValue(ImmutableShortEncodedValue(value), late)
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -874,9 +938,19 @@ fun MutableMethod.returnEarly(value: Byte) {
|
|||||||
*
|
*
|
||||||
* @see returnLate
|
* @see returnLate
|
||||||
*/
|
*/
|
||||||
fun MutableMethod.returnEarly(value: Short) {
|
fun MutableMethod.returnEarly(value: Short) = returnShort(value, false)
|
||||||
check(returnType.first() == 'S') { RETURN_TYPE_MISMATCH }
|
|
||||||
overrideReturnValue(value.toString(), false)
|
/**
|
||||||
|
* Overrides all return statements with a constant `Short` value.
|
||||||
|
* All method code is executed the same as unpatched.
|
||||||
|
*
|
||||||
|
* @see returnEarly
|
||||||
|
*/
|
||||||
|
fun MutableMethod.returnLate(value: Short) = returnShort(value, true)
|
||||||
|
|
||||||
|
private fun MutableMethod.returnChar(value: Char, late: Boolean) {
|
||||||
|
checkReturnType(Char::class.javaObjectType.allAssignableTypes() + Char::class.javaPrimitiveType!!)
|
||||||
|
overrideReturnValue(ImmutableCharEncodedValue(value), late)
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -885,9 +959,19 @@ fun MutableMethod.returnEarly(value: Short) {
|
|||||||
*
|
*
|
||||||
* @see returnLate
|
* @see returnLate
|
||||||
*/
|
*/
|
||||||
fun MutableMethod.returnEarly(value: Char) {
|
fun MutableMethod.returnEarly(value: Char) = returnChar(value, false)
|
||||||
check(returnType.first() == 'C') { RETURN_TYPE_MISMATCH }
|
|
||||||
overrideReturnValue(value.code.toString(), false)
|
/**
|
||||||
|
* Overrides all return statements with a constant `Char` value.
|
||||||
|
* All method code is executed the same as unpatched.
|
||||||
|
*
|
||||||
|
* @see returnEarly
|
||||||
|
*/
|
||||||
|
fun MutableMethod.returnLate(value: Char) = returnChar(value, true)
|
||||||
|
|
||||||
|
private fun MutableMethod.returnInt(value: Int, late: Boolean) {
|
||||||
|
checkReturnType(Int::class.javaObjectType.allAssignableTypes() + Int::class.javaPrimitiveType!!)
|
||||||
|
overrideReturnValue(ImmutableIntEncodedValue(value), late)
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -896,20 +980,19 @@ fun MutableMethod.returnEarly(value: Char) {
|
|||||||
*
|
*
|
||||||
* @see returnLate
|
* @see returnLate
|
||||||
*/
|
*/
|
||||||
fun MutableMethod.returnEarly(value: Int) {
|
fun MutableMethod.returnEarly(value: Int) = returnInt(value, false)
|
||||||
check(returnType.first() == 'I') { RETURN_TYPE_MISMATCH }
|
|
||||||
overrideReturnValue(value.toString(), false)
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Overrides the first instruction of a method with a constant `Long` return value.
|
* Overrides all return statements with a constant `Int` value.
|
||||||
* None of the method code will ever execute.
|
* All method code is executed the same as unpatched.
|
||||||
*
|
*
|
||||||
* @see returnLate
|
* @see returnEarly
|
||||||
*/
|
*/
|
||||||
fun MutableMethod.returnEarly(value: Long) {
|
fun MutableMethod.returnLate(value: Int) = returnInt(value, true)
|
||||||
check(returnType.first() == 'J') { RETURN_TYPE_MISMATCH }
|
|
||||||
overrideReturnValue(value.toString(), false)
|
private fun MutableMethod.returnFloat(value: Float, late: Boolean) {
|
||||||
|
checkReturnType(Float::class.javaObjectType.allAssignableTypes() + Float::class.javaPrimitiveType!!)
|
||||||
|
overrideReturnValue(ImmutableFloatEncodedValue(value), late)
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -918,9 +1001,40 @@ fun MutableMethod.returnEarly(value: Long) {
|
|||||||
*
|
*
|
||||||
* @see returnLate
|
* @see returnLate
|
||||||
*/
|
*/
|
||||||
fun MutableMethod.returnEarly(value: Float) {
|
fun MutableMethod.returnEarly(value: Float) = returnFloat(value, false)
|
||||||
check(returnType.first() == 'F') { RETURN_TYPE_MISMATCH }
|
|
||||||
overrideReturnValue(value.toString(), false)
|
/**
|
||||||
|
* Overrides all return statements with a constant `Float` value.
|
||||||
|
* All method code is executed the same as unpatched.
|
||||||
|
*
|
||||||
|
* @see returnEarly
|
||||||
|
*/
|
||||||
|
fun MutableMethod.returnLate(value: Float) = returnFloat(value, true)
|
||||||
|
|
||||||
|
private fun MutableMethod.returnLong(value: Long, late: Boolean) {
|
||||||
|
checkReturnType(Long::class.javaObjectType.allAssignableTypes() + Long::class.javaPrimitiveType!!)
|
||||||
|
overrideReturnValue(ImmutableLongEncodedValue(value), late)
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Overrides the first instruction of a method with a constant `Long` return value.
|
||||||
|
* None of the method code will ever execute.
|
||||||
|
*
|
||||||
|
* @see returnLate
|
||||||
|
*/
|
||||||
|
fun MutableMethod.returnEarly(value: Long) = returnLong(value, false)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Overrides all return statements with a constant `Long` value.
|
||||||
|
* All method code is executed the same as unpatched.
|
||||||
|
*
|
||||||
|
* @see returnEarly
|
||||||
|
*/
|
||||||
|
fun MutableMethod.returnLate(value: Long) = returnLong(value, true)
|
||||||
|
|
||||||
|
private fun MutableMethod.returnDouble(value: Double, late: Boolean) {
|
||||||
|
checkReturnType(Double::class.javaObjectType.allAssignableTypes() + Double::class.javaPrimitiveType!!)
|
||||||
|
overrideReturnValue(ImmutableDoubleEncodedValue(value), late)
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -929,113 +1043,7 @@ fun MutableMethod.returnEarly(value: Float) {
|
|||||||
*
|
*
|
||||||
* @see returnLate
|
* @see returnLate
|
||||||
*/
|
*/
|
||||||
fun MutableMethod.returnEarly(value: Double) {
|
fun MutableMethod.returnEarly(value: Double) = returnDouble(value, false)
|
||||||
check(returnType.first() == 'J') { RETURN_TYPE_MISMATCH }
|
|
||||||
overrideReturnValue(value.toString(), false)
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Overrides the first instruction of a method with a constant String return value.
|
|
||||||
* None of the method code will ever execute.
|
|
||||||
*
|
|
||||||
* Target method must have return type
|
|
||||||
* Ljava/lang/String; or Ljava/lang/CharSequence;
|
|
||||||
*
|
|
||||||
* @see returnLate
|
|
||||||
*/
|
|
||||||
fun MutableMethod.returnEarly(value: String) {
|
|
||||||
check(returnType == "Ljava/lang/String;" || returnType == "Ljava/lang/CharSequence;") {
|
|
||||||
RETURN_TYPE_MISMATCH
|
|
||||||
}
|
|
||||||
overrideReturnValue(value, false)
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Overrides all return statements with a constant `Boolean` value.
|
|
||||||
* All method code is executed the same as unpatched.
|
|
||||||
*
|
|
||||||
* For methods that return an object or any array type, calling this method with `false`
|
|
||||||
* will force the method to return a `null` value.
|
|
||||||
*
|
|
||||||
* @see returnEarly
|
|
||||||
*/
|
|
||||||
fun MutableMethod.returnLate(value: Boolean) {
|
|
||||||
val returnType = returnType.first()
|
|
||||||
if (returnType == 'V') {
|
|
||||||
error("Cannot return late for Method of void type")
|
|
||||||
}
|
|
||||||
check(returnType == 'Z' || (!value && (returnType == 'L' || returnType == '['))) {
|
|
||||||
RETURN_TYPE_MISMATCH
|
|
||||||
}
|
|
||||||
|
|
||||||
overrideReturnValue(value.toHexString(), true)
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Overrides all return statements with a constant `Byte` value.
|
|
||||||
* All method code is executed the same as unpatched.
|
|
||||||
*
|
|
||||||
* @see returnEarly
|
|
||||||
*/
|
|
||||||
fun MutableMethod.returnLate(value: Byte) {
|
|
||||||
check(returnType.first() == 'B') { RETURN_TYPE_MISMATCH }
|
|
||||||
overrideReturnValue(value.toString(), true)
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Overrides all return statements with a constant `Short` value.
|
|
||||||
* All method code is executed the same as unpatched.
|
|
||||||
*
|
|
||||||
* @see returnEarly
|
|
||||||
*/
|
|
||||||
fun MutableMethod.returnLate(value: Short) {
|
|
||||||
check(returnType.first() == 'S') { RETURN_TYPE_MISMATCH }
|
|
||||||
overrideReturnValue(value.toString(), true)
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Overrides all return statements with a constant `Char` value.
|
|
||||||
* All method code is executed the same as unpatched.
|
|
||||||
*
|
|
||||||
* @see returnEarly
|
|
||||||
*/
|
|
||||||
fun MutableMethod.returnLate(value: Char) {
|
|
||||||
check(returnType.first() == 'C') { RETURN_TYPE_MISMATCH }
|
|
||||||
overrideReturnValue(value.code.toString(), true)
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Overrides all return statements with a constant `Int` value.
|
|
||||||
* All method code is executed the same as unpatched.
|
|
||||||
*
|
|
||||||
* @see returnEarly
|
|
||||||
*/
|
|
||||||
fun MutableMethod.returnLate(value: Int) {
|
|
||||||
check(returnType.first() == 'I') { RETURN_TYPE_MISMATCH }
|
|
||||||
overrideReturnValue(value.toString(), true)
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Overrides all return statements with a constant `Long` value.
|
|
||||||
* All method code is executed the same as unpatched.
|
|
||||||
*
|
|
||||||
* @see returnEarly
|
|
||||||
*/
|
|
||||||
fun MutableMethod.returnLate(value: Long) {
|
|
||||||
check(returnType.first() == 'J') { RETURN_TYPE_MISMATCH }
|
|
||||||
overrideReturnValue(value.toString(), true)
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Overrides all return statements with a constant `Float` value.
|
|
||||||
* All method code is executed the same as unpatched.
|
|
||||||
*
|
|
||||||
* @see returnEarly
|
|
||||||
*/
|
|
||||||
fun MutableMethod.returnLate(value: Float) {
|
|
||||||
check(returnType.first() == 'F') { RETURN_TYPE_MISMATCH }
|
|
||||||
overrideReturnValue(value.toString(), true)
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Overrides all return statements with a constant `Double` value.
|
* Overrides all return statements with a constant `Double` value.
|
||||||
@@ -1043,75 +1051,164 @@ fun MutableMethod.returnLate(value: Float) {
|
|||||||
*
|
*
|
||||||
* @see returnEarly
|
* @see returnEarly
|
||||||
*/
|
*/
|
||||||
fun MutableMethod.returnLate(value: Double) {
|
fun MutableMethod.returnLate(value: Double) = returnDouble(value, true)
|
||||||
check(returnType.first() == 'D') { RETURN_TYPE_MISMATCH }
|
|
||||||
overrideReturnValue(value.toString(), true)
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
private fun MutableMethod.overrideReturnValue(value: EncodedValue?, returnLate: Boolean) {
|
||||||
* Overrides all return statements with a constant String value.
|
val instructions = if (value == null) {
|
||||||
* All method code is executed the same as unpatched.
|
require(!returnLate) {
|
||||||
*
|
"Cannot return late for method of void type"
|
||||||
* Target method must have return type
|
}
|
||||||
* Ljava/lang/String; or Ljava/lang/CharSequence;
|
"return-void"
|
||||||
*
|
} else {
|
||||||
* @see returnEarly
|
val encodedValue = DexFormatter.INSTANCE.getEncodedValue(value)
|
||||||
*/
|
when (value) {
|
||||||
fun MutableMethod.returnLate(value: String) {
|
is NullEncodedValue -> {
|
||||||
check(returnType == "Ljava/lang/String;" || returnType == "Ljava/lang/CharSequence;") {
|
"""
|
||||||
RETURN_TYPE_MISMATCH
|
|
||||||
}
|
|
||||||
overrideReturnValue(value, true)
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun MutableMethod.overrideReturnValue(value: String, returnLate: Boolean) {
|
|
||||||
val instructions = if (returnType == "Ljava/lang/String;" || returnType == "Ljava/lang/CharSequence;" ) {
|
|
||||||
"""
|
|
||||||
const-string v0, "$value"
|
|
||||||
return-object v0
|
|
||||||
"""
|
|
||||||
} else when (returnType.first()) {
|
|
||||||
// If return type is an object, always return null.
|
|
||||||
'L', '[' -> {
|
|
||||||
"""
|
|
||||||
const/4 v0, 0x0
|
const/4 v0, 0x0
|
||||||
return-object v0
|
return-object v0
|
||||||
"""
|
"""
|
||||||
}
|
}
|
||||||
|
|
||||||
'V' -> {
|
is StringEncodedValue -> {
|
||||||
"return-void"
|
"""
|
||||||
}
|
const-string v0, $encodedValue
|
||||||
|
return-object v0
|
||||||
|
"""
|
||||||
|
}
|
||||||
|
|
||||||
'B', 'Z' -> {
|
is ByteEncodedValue -> {
|
||||||
"""
|
if (returnType == "B") {
|
||||||
const/4 v0, $value
|
"""
|
||||||
return v0
|
const/4 v0, $encodedValue
|
||||||
"""
|
return v0
|
||||||
}
|
"""
|
||||||
|
} else {
|
||||||
|
"""
|
||||||
|
const/4 v0, $encodedValue
|
||||||
|
invoke-static { v0 }, Ljava/lang/Byte;->valueOf(B)Ljava/lang/Byte;
|
||||||
|
move-result-object v0
|
||||||
|
return-object v0
|
||||||
|
"""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
'S', 'C' -> {
|
is BooleanEncodedValue -> {
|
||||||
"""
|
val encodedValue = value.value.toHexString()
|
||||||
const/16 v0, $value
|
if (returnType == "Z") {
|
||||||
return v0
|
"""
|
||||||
"""
|
const/4 v0, $encodedValue
|
||||||
}
|
return v0
|
||||||
|
"""
|
||||||
|
} else {
|
||||||
|
"""
|
||||||
|
const/4 v0, $encodedValue
|
||||||
|
invoke-static { v0 }, Ljava/lang/Boolean;->valueOf(Z)Ljava/lang/Boolean;
|
||||||
|
move-result-object v0
|
||||||
|
return-object v0
|
||||||
|
"""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
'I', 'F' -> {
|
is ShortEncodedValue -> {
|
||||||
"""
|
if (returnType == "S") {
|
||||||
const v0, $value
|
"""
|
||||||
return v0
|
const/16 v0, $encodedValue
|
||||||
"""
|
return v0
|
||||||
}
|
"""
|
||||||
|
} else {
|
||||||
|
"""
|
||||||
|
const/16 v0, $encodedValue
|
||||||
|
invoke-static { v0 }, Ljava/lang/Short;->valueOf(S)Ljava/lang/Short;
|
||||||
|
move-result-object v0
|
||||||
|
return-object v0
|
||||||
|
"""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
'J', 'D' -> {
|
is CharEncodedValue -> {
|
||||||
"""
|
if (returnType == "C") {
|
||||||
const-wide v0, $value
|
"""
|
||||||
return-wide v0
|
const/16 v0, $encodedValue
|
||||||
"""
|
return v0
|
||||||
}
|
"""
|
||||||
|
} else {
|
||||||
|
"""
|
||||||
|
const/16 v0, $encodedValue
|
||||||
|
invoke-static { v0 }, Ljava/lang/Character;->valueOf(C)Ljava/lang/Character;
|
||||||
|
move-result-object v0
|
||||||
|
return-object v0
|
||||||
|
"""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
else -> throw Exception("Return type is not supported: $this")
|
is IntEncodedValue -> {
|
||||||
|
if (returnType == "I") {
|
||||||
|
"""
|
||||||
|
const v0, $encodedValue
|
||||||
|
return v0
|
||||||
|
"""
|
||||||
|
} else {
|
||||||
|
"""
|
||||||
|
const v0, $encodedValue
|
||||||
|
invoke-static { v0 }, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
|
||||||
|
move-result-object v0
|
||||||
|
return-object v0
|
||||||
|
"""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
is FloatEncodedValue -> {
|
||||||
|
val encodedValue = "${encodedValue}f"
|
||||||
|
if (returnType == "F") {
|
||||||
|
"""
|
||||||
|
const v0, $encodedValue
|
||||||
|
return v0
|
||||||
|
"""
|
||||||
|
} else {
|
||||||
|
"""
|
||||||
|
const v0, $encodedValue
|
||||||
|
invoke-static { v0 }, Ljava/lang/Float;->valueOf(F)Ljava/lang/Float;
|
||||||
|
move-result-object v0
|
||||||
|
return-object v0
|
||||||
|
"""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
is LongEncodedValue -> {
|
||||||
|
val encodedValue = "${encodedValue}L"
|
||||||
|
if (returnType == "J") {
|
||||||
|
"""
|
||||||
|
const-wide v0, $encodedValue
|
||||||
|
return-wide v0
|
||||||
|
"""
|
||||||
|
} else {
|
||||||
|
"""
|
||||||
|
const-wide v0, $encodedValue
|
||||||
|
invoke-static { v0 }, Ljava/lang/Long;->valueOf(J)Ljava/lang/Long;
|
||||||
|
move-result-object v0
|
||||||
|
return-object v0
|
||||||
|
"""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
is DoubleEncodedValue -> {
|
||||||
|
if (returnType == "D") {
|
||||||
|
"""
|
||||||
|
const-wide v0, $encodedValue
|
||||||
|
return-wide v0
|
||||||
|
"""
|
||||||
|
} else {
|
||||||
|
"""
|
||||||
|
const-wide v0, $encodedValue
|
||||||
|
invoke-static { v0 }, Ljava/lang/Double;->valueOf(D)Ljava/lang/Double;
|
||||||
|
move-result-object v0
|
||||||
|
return-object v0
|
||||||
|
"""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
else -> throw IllegalArgumentException("Value $value cannot be returned from $this")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (returnLate) {
|
if (returnLate) {
|
||||||
|
|||||||
@@ -7,4 +7,21 @@ internal object Utils {
|
|||||||
.trimIndent() // Remove the leading newline.
|
.trimIndent() // Remove the leading newline.
|
||||||
}
|
}
|
||||||
|
|
||||||
internal fun Boolean.toHexString(): String = if (this) "0x1" else "0x0"
|
internal fun Boolean.toHexString(): String = if (this) "0x1" else "0x0"
|
||||||
|
|
||||||
|
internal fun Class<*>.allAssignableTypes(): Set<Class<*>> {
|
||||||
|
val result = mutableSetOf<Class<*>>()
|
||||||
|
|
||||||
|
fun visit(child: Class<*>?) {
|
||||||
|
if (child == null || !result.add(child)) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
child.interfaces.forEach(::visit)
|
||||||
|
visit(child.superclass)
|
||||||
|
}
|
||||||
|
|
||||||
|
visit(this)
|
||||||
|
|
||||||
|
return result
|
||||||
|
}
|
||||||
|
|||||||
@@ -63,9 +63,11 @@ Second \"item\" text"</string>
|
|||||||
<!-- https://logos.fandom.com/wiki/YouTube/Yoodles -->
|
<!-- https://logos.fandom.com/wiki/YouTube/Yoodles -->
|
||||||
<!-- 'Join' should be translated using the same localized wording YouTube displays.
|
<!-- 'Join' should be translated using the same localized wording YouTube displays.
|
||||||
This appears in the video player for certain videos. -->
|
This appears in the video player for certain videos. -->
|
||||||
|
<!-- 'Community' should be translated with the same localized wording that YouTube displays. -->
|
||||||
<!-- 'For You' should be translated using the same localized wording YouTube displays. -->
|
<!-- 'For You' should be translated using the same localized wording YouTube displays. -->
|
||||||
<!-- 'Visit Community' should be translated with the same localized wording that YouTube displays. -->
|
<!-- 'Join' should be translated with the same localized wording that YouTube displays. -->
|
||||||
<!-- 'Visit store' should be translated with the same localized wording that YouTube displays. -->
|
<!-- 'Store' should be translated with the same localized wording that YouTube displays. -->
|
||||||
|
<!-- 'Subscribe' should be translated with the same localized wording that YouTube displays. -->
|
||||||
<!-- 'Component path builder strings' is the technical name for identifying the Litho UI layout items to hide. This is an advanced feature and most users will never use this. -->
|
<!-- 'Component path builder strings' is the technical name for identifying the Litho UI layout items to hide. This is an advanced feature and most users will never use this. -->
|
||||||
<!-- Translations should lanaguge similar to revanced_hide_upload_time_user_dialog_message -->
|
<!-- Translations should lanaguge similar to revanced_hide_upload_time_user_dialog_message -->
|
||||||
<!-- Translations should lanaguge similar to revanced_hide_view_count_user_dialog_message -->
|
<!-- Translations should lanaguge similar to revanced_hide_view_count_user_dialog_message -->
|
||||||
@@ -109,7 +111,7 @@ Second \"item\" text"</string>
|
|||||||
<!-- 'Remix' should be translated with the same localized wording that YouTube displays. -->
|
<!-- 'Remix' should be translated with the same localized wording that YouTube displays. -->
|
||||||
<!-- 'Download' should be translated with the same localized wording that YouTube displays. -->
|
<!-- 'Download' should be translated with the same localized wording that YouTube displays. -->
|
||||||
<!-- 'Hype' should be translated with the same localized wording that YouTube displays.
|
<!-- 'Hype' should be translated with the same localized wording that YouTube displays.
|
||||||
This button only shows on videos uploaded by the logged in user. -->
|
This button only shows on videos uploaded by the logged-in user. -->
|
||||||
<!-- 'Promote' should be translated with the same localized wording that YouTube displays. -->
|
<!-- 'Promote' should be translated with the same localized wording that YouTube displays. -->
|
||||||
<!-- 'Thanks' should be translated with the same localized wording that YouTube displays. -->
|
<!-- 'Thanks' should be translated with the same localized wording that YouTube displays. -->
|
||||||
<!-- 'Ask' should be translated with the same localized wording that YouTube displays.
|
<!-- 'Ask' should be translated with the same localized wording that YouTube displays.
|
||||||
@@ -136,7 +138,8 @@ Second \"item\" text"</string>
|
|||||||
<!-- 'Lock screen' should be translated using the same localized wording YouTube displays for the menu item. -->
|
<!-- 'Lock screen' should be translated using the same localized wording YouTube displays for the menu item. -->
|
||||||
<!-- 'Listen with YouTube Music' should be translated using the same localized wording YouTube displays for the menu item. -->
|
<!-- 'Listen with YouTube Music' should be translated using the same localized wording YouTube displays for the menu item. -->
|
||||||
<!-- 'Audio track' should be translated using the same localized wording YouTube displays for the menu item. -->
|
<!-- 'Audio track' should be translated using the same localized wording YouTube displays for the menu item. -->
|
||||||
<!-- 'Spoof video streams' should be the same translation used for 'revanced_spoof_video_streams_screen_title'. -->
|
<!-- 'Spoof video streams' should be the same translation used for 'revanced_spoof_video_streams_screen_title'.
|
||||||
|
'Android No SDK' must be kept untranslated. -->
|
||||||
<!-- 'Watch in VR' should be translated using the same localized wording YouTube displays for the menu item. -->
|
<!-- 'Watch in VR' should be translated using the same localized wording YouTube displays for the menu item. -->
|
||||||
</patch>
|
</patch>
|
||||||
<patch id="layout.buttons.overlay.hidePlayerOverlayButtonsPatch">
|
<patch id="layout.buttons.overlay.hidePlayerOverlayButtonsPatch">
|
||||||
|
|||||||
@@ -63,9 +63,11 @@ Second \"item\" text"</string>
|
|||||||
<!-- https://logos.fandom.com/wiki/YouTube/Yoodles -->
|
<!-- https://logos.fandom.com/wiki/YouTube/Yoodles -->
|
||||||
<!-- 'Join' should be translated using the same localized wording YouTube displays.
|
<!-- 'Join' should be translated using the same localized wording YouTube displays.
|
||||||
This appears in the video player for certain videos. -->
|
This appears in the video player for certain videos. -->
|
||||||
|
<!-- 'Community' should be translated with the same localized wording that YouTube displays. -->
|
||||||
<!-- 'For You' should be translated using the same localized wording YouTube displays. -->
|
<!-- 'For You' should be translated using the same localized wording YouTube displays. -->
|
||||||
<!-- 'Visit Community' should be translated with the same localized wording that YouTube displays. -->
|
<!-- 'Join' should be translated with the same localized wording that YouTube displays. -->
|
||||||
<!-- 'Visit store' should be translated with the same localized wording that YouTube displays. -->
|
<!-- 'Store' should be translated with the same localized wording that YouTube displays. -->
|
||||||
|
<!-- 'Subscribe' should be translated with the same localized wording that YouTube displays. -->
|
||||||
<!-- 'Component path builder strings' is the technical name for identifying the Litho UI layout items to hide. This is an advanced feature and most users will never use this. -->
|
<!-- 'Component path builder strings' is the technical name for identifying the Litho UI layout items to hide. This is an advanced feature and most users will never use this. -->
|
||||||
<!-- Translations should lanaguge similar to revanced_hide_upload_time_user_dialog_message -->
|
<!-- Translations should lanaguge similar to revanced_hide_upload_time_user_dialog_message -->
|
||||||
<!-- Translations should lanaguge similar to revanced_hide_view_count_user_dialog_message -->
|
<!-- Translations should lanaguge similar to revanced_hide_view_count_user_dialog_message -->
|
||||||
@@ -109,7 +111,7 @@ Second \"item\" text"</string>
|
|||||||
<!-- 'Remix' should be translated with the same localized wording that YouTube displays. -->
|
<!-- 'Remix' should be translated with the same localized wording that YouTube displays. -->
|
||||||
<!-- 'Download' should be translated with the same localized wording that YouTube displays. -->
|
<!-- 'Download' should be translated with the same localized wording that YouTube displays. -->
|
||||||
<!-- 'Hype' should be translated with the same localized wording that YouTube displays.
|
<!-- 'Hype' should be translated with the same localized wording that YouTube displays.
|
||||||
This button only shows on videos uploaded by the logged in user. -->
|
This button only shows on videos uploaded by the logged-in user. -->
|
||||||
<!-- 'Promote' should be translated with the same localized wording that YouTube displays. -->
|
<!-- 'Promote' should be translated with the same localized wording that YouTube displays. -->
|
||||||
<!-- 'Thanks' should be translated with the same localized wording that YouTube displays. -->
|
<!-- 'Thanks' should be translated with the same localized wording that YouTube displays. -->
|
||||||
<!-- 'Ask' should be translated with the same localized wording that YouTube displays.
|
<!-- 'Ask' should be translated with the same localized wording that YouTube displays.
|
||||||
@@ -136,7 +138,8 @@ Second \"item\" text"</string>
|
|||||||
<!-- 'Lock screen' should be translated using the same localized wording YouTube displays for the menu item. -->
|
<!-- 'Lock screen' should be translated using the same localized wording YouTube displays for the menu item. -->
|
||||||
<!-- 'Listen with YouTube Music' should be translated using the same localized wording YouTube displays for the menu item. -->
|
<!-- 'Listen with YouTube Music' should be translated using the same localized wording YouTube displays for the menu item. -->
|
||||||
<!-- 'Audio track' should be translated using the same localized wording YouTube displays for the menu item. -->
|
<!-- 'Audio track' should be translated using the same localized wording YouTube displays for the menu item. -->
|
||||||
<!-- 'Spoof video streams' should be the same translation used for 'revanced_spoof_video_streams_screen_title'. -->
|
<!-- 'Spoof video streams' should be the same translation used for 'revanced_spoof_video_streams_screen_title'.
|
||||||
|
'Android No SDK' must be kept untranslated. -->
|
||||||
<!-- 'Watch in VR' should be translated using the same localized wording YouTube displays for the menu item. -->
|
<!-- 'Watch in VR' should be translated using the same localized wording YouTube displays for the menu item. -->
|
||||||
</patch>
|
</patch>
|
||||||
<patch id="layout.buttons.overlay.hidePlayerOverlayButtonsPatch">
|
<patch id="layout.buttons.overlay.hidePlayerOverlayButtonsPatch">
|
||||||
|
|||||||
@@ -282,6 +282,9 @@ Second \"item\" text"</string>
|
|||||||
<string name="revanced_hide_video_recommendation_labels_title">إخفاء تسميات توصيات الفيديو</string>
|
<string name="revanced_hide_video_recommendation_labels_title">إخفاء تسميات توصيات الفيديو</string>
|
||||||
<string name="revanced_hide_video_recommendation_labels_summary_on">تم إخفاء تسميات \'شاهد المستخدمون أيضًا\' و\'قد يعجبك أيضًا\' في نتائج البحث</string>
|
<string name="revanced_hide_video_recommendation_labels_summary_on">تم إخفاء تسميات \'شاهد المستخدمون أيضًا\' و\'قد يعجبك أيضًا\' في نتائج البحث</string>
|
||||||
<string name="revanced_hide_video_recommendation_labels_summary_off">يتم عرض تسميات \'شاهد المستخدمون أيضًا\' و\'قد يعجبك أيضًا\' في نتائج البحث</string>
|
<string name="revanced_hide_video_recommendation_labels_summary_off">يتم عرض تسميات \'شاهد المستخدمون أيضًا\' و\'قد يعجبك أيضًا\' في نتائج البحث</string>
|
||||||
|
<string name="revanced_hide_visual_spacer_title">إخفاء المسافة البادئة المرئية</string>
|
||||||
|
<string name="revanced_hide_visual_spacer_summary_on">المسافة البادئة المرئية مخفية</string>
|
||||||
|
<string name="revanced_hide_visual_spacer_summary_off">المسافة البادئة المرئية ظاهرة</string>
|
||||||
<!-- https://logos.fandom.com/wiki/YouTube/Yoodles -->
|
<!-- https://logos.fandom.com/wiki/YouTube/Yoodles -->
|
||||||
<string name="revanced_hide_doodles_title">إخفاء رسومات YouTube</string>
|
<string name="revanced_hide_doodles_title">إخفاء رسومات YouTube</string>
|
||||||
<string name="revanced_hide_doodles_summary_on">تم إخفاء رسوم Doodles المتحركة على شعار YouTube</string>
|
<string name="revanced_hide_doodles_summary_on">تم إخفاء رسوم Doodles المتحركة على شعار YouTube</string>
|
||||||
@@ -342,18 +345,21 @@ Second \"item\" text"</string>
|
|||||||
<string name="revanced_hide_podcast_section_title">إخفاء \'استكشاف البودكاست\'</string>
|
<string name="revanced_hide_podcast_section_title">إخفاء \'استكشاف البودكاست\'</string>
|
||||||
<string name="revanced_hide_podcast_section_summary_on">تم إخفاء قسم استكشاف البودكاست</string>
|
<string name="revanced_hide_podcast_section_summary_on">تم إخفاء قسم استكشاف البودكاست</string>
|
||||||
<string name="revanced_hide_podcast_section_summary_off">يتم عرض قسم استكشاف البودكاست</string>
|
<string name="revanced_hide_podcast_section_summary_off">يتم عرض قسم استكشاف البودكاست</string>
|
||||||
<string name="revanced_hide_featured_section_title">إخفاء المحتوى المميز</string>
|
<string name="revanced_hide_featured_links_section_title">إخفاء الروابط المميزة</string>
|
||||||
<string name="revanced_hide_featured_section_summary_on">تم إخفاء قسم المحتوى المميز</string>
|
<string name="revanced_hide_featured_links_section_summary_on">تم إخفاء قسم الروابط المميزة</string>
|
||||||
<string name="revanced_hide_featured_section_summary_off">يتم عرض قسم المحتوى المميز</string>
|
<string name="revanced_hide_featured_links_section_summary_off">يتم عرض قسم الروابط المميزة</string>
|
||||||
|
<string name="revanced_hide_featured_videos_section_title">إخفاء الفيديوهات المميزة</string>
|
||||||
|
<string name="revanced_hide_featured_videos_section_summary_on">تم إخفاء قسم الفيديوهات المميزة</string>
|
||||||
|
<string name="revanced_hide_featured_videos_section_summary_off">يتم عرض قسم الفيديوهات المميزة</string>
|
||||||
<string name="revanced_hide_info_cards_section_title">إخفاء بطاقات المعلومات</string>
|
<string name="revanced_hide_info_cards_section_title">إخفاء بطاقات المعلومات</string>
|
||||||
<string name="revanced_hide_info_cards_section_summary_on">تم إخفاء قسم بطاقات المعلومات</string>
|
<string name="revanced_hide_info_cards_section_summary_on">تم إخفاء قسم بطاقات المعلومات</string>
|
||||||
<string name="revanced_hide_info_cards_section_summary_off">يتم عرض قسم بطاقات المعلومات</string>
|
<string name="revanced_hide_info_cards_section_summary_off">يتم عرض قسم بطاقات المعلومات</string>
|
||||||
<string name="revanced_hide_key_concepts_section_title">إخفاء \'المفاهيم الأساسية\'</string>
|
<string name="revanced_hide_key_concepts_section_title">إخفاء \'المفاهيم الأساسية\'</string>
|
||||||
<string name="revanced_hide_key_concepts_section_summary_on">تم إخفاء قسم المفاهيم الأساسية</string>
|
<string name="revanced_hide_key_concepts_section_summary_on">تم إخفاء قسم المفاهيم الأساسية</string>
|
||||||
<string name="revanced_hide_key_concepts_section_summary_off">يتم عرض قسم المفاهيم الأساسية</string>
|
<string name="revanced_hide_key_concepts_section_summary_off">يتم عرض قسم المفاهيم الأساسية</string>
|
||||||
<string name="revanced_hide_description_subscribe_button_title">إخفاء زر الاشتراك</string>
|
<string name="revanced_hide_subscribe_button_title">إخفاء زر الاشتراك</string>
|
||||||
<string name="revanced_hide_description_subscribe_button_summary_on">تم إخفاء زر الاشتراك</string>
|
<string name="revanced_hide_subscribe_button_summary_on">تم إخفاء زر الاشتراك</string>
|
||||||
<string name="revanced_hide_description_subscribe_button_summary_off">يتم عرض زر الاشتراك</string>
|
<string name="revanced_hide_subscribe_button_summary_off">يتم عرض زر الاشتراك</string>
|
||||||
<string name="revanced_hide_transcript_section_title">إخفاء النص</string>
|
<string name="revanced_hide_transcript_section_title">إخفاء النص</string>
|
||||||
<string name="revanced_hide_transcript_section_summary_on">تم إخفاء قسم النص</string>
|
<string name="revanced_hide_transcript_section_summary_on">تم إخفاء قسم النص</string>
|
||||||
<string name="revanced_hide_transcript_section_summary_off">يتم عرض قسم النص</string>
|
<string name="revanced_hide_transcript_section_summary_off">يتم عرض قسم النص</string>
|
||||||
@@ -375,24 +381,32 @@ Second \"item\" text"</string>
|
|||||||
<string name="revanced_hide_filter_bar_feed_in_history_summary_off">يُعرض في السجلّ</string>
|
<string name="revanced_hide_filter_bar_feed_in_history_summary_off">يُعرض في السجلّ</string>
|
||||||
<string name="revanced_channel_screen_title">صفحة القناة</string>
|
<string name="revanced_channel_screen_title">صفحة القناة</string>
|
||||||
<string name="revanced_channel_screen_summary">إخفاء أو عرض مكونات صفحة القناة</string>
|
<string name="revanced_channel_screen_summary">إخفاء أو عرض مكونات صفحة القناة</string>
|
||||||
|
<!-- 'Community' should be translated with the same localized wording that YouTube displays. -->
|
||||||
|
<string name="revanced_hide_community_button_title">إخفاء زر المنتدى</string>
|
||||||
|
<string name="revanced_hide_community_button_summary_on">تم إخفاء زر المجتمع</string>
|
||||||
|
<string name="revanced_hide_community_button_summary_off">يتم عرض زر المجتمع</string>
|
||||||
<!-- 'For You' should be translated using the same localized wording YouTube displays. -->
|
<!-- 'For You' should be translated using the same localized wording YouTube displays. -->
|
||||||
<string name="revanced_hide_for_you_shelf_title">إخفاء رف \'مقترحات لك\'</string>
|
<string name="revanced_hide_for_you_shelf_title">إخفاء رف \'مقترحات لك\'</string>
|
||||||
<string name="revanced_hide_for_you_shelf_summary_on">تم إخفاء رف مقترح لك</string>
|
<string name="revanced_hide_for_you_shelf_summary_on">تم إخفاء رف مقترح لك</string>
|
||||||
<string name="revanced_hide_for_you_shelf_summary_off">يتم عرض رف مقترح لك</string>
|
<string name="revanced_hide_for_you_shelf_summary_off">يتم عرض رف مقترح لك</string>
|
||||||
|
<!-- 'Join' should be translated with the same localized wording that YouTube displays. -->
|
||||||
|
<string name="revanced_hide_join_button_title">إخفاء زر الانضمام</string>
|
||||||
|
<string name="revanced_hide_join_button_summary_on">تم إخفاء زر الانضمام</string>
|
||||||
|
<string name="revanced_hide_join_button_summary_off">يتم عرض زر الانضمام</string>
|
||||||
<string name="revanced_hide_links_preview_title">إخفاء معاينة الروابط</string>
|
<string name="revanced_hide_links_preview_title">إخفاء معاينة الروابط</string>
|
||||||
<string name="revanced_hide_links_preview_summary_on">تم إخفاء معاينة الروابط</string>
|
<string name="revanced_hide_links_preview_summary_on">تم إخفاء معاينة الروابط</string>
|
||||||
<string name="revanced_hide_links_preview_summary_off">يتم عرض معاينة الروابط</string>
|
<string name="revanced_hide_links_preview_summary_off">يتم عرض معاينة الروابط</string>
|
||||||
<string name="revanced_hide_members_shelf_title">إخفاء رف الأعضاء</string>
|
<string name="revanced_hide_members_shelf_title">إخفاء رف الأعضاء</string>
|
||||||
<string name="revanced_hide_members_shelf_summary_on">تم إخفاء رف الأعضاء</string>
|
<string name="revanced_hide_members_shelf_summary_on">تم إخفاء رف الأعضاء</string>
|
||||||
<string name="revanced_hide_members_shelf_summary_off">يتم عرض رف الأعضاء</string>
|
<string name="revanced_hide_members_shelf_summary_off">يتم عرض رف الأعضاء</string>
|
||||||
<!-- 'Visit Community' should be translated with the same localized wording that YouTube displays. -->
|
<!-- 'Store' should be translated with the same localized wording that YouTube displays. -->
|
||||||
<string name="revanced_hide_visit_community_button_title">إخفاء زر \'زيارة المجتمع\'</string>
|
<string name="revanced_hide_store_button_title">إخفاء زر المتجر</string>
|
||||||
<string name="revanced_hide_visit_community_button_summary_on">تم إخفاء زر زيارة المجتمع</string>
|
<string name="revanced_hide_store_button_summary_on">تم إخفاء زر المتجر</string>
|
||||||
<string name="revanced_hide_visit_community_button_summary_off">يتم عرض زر زيارة المجتمع</string>
|
<string name="revanced_hide_store_button_summary_off">يتم عرض زر المتجر</string>
|
||||||
<!-- 'Visit store' should be translated with the same localized wording that YouTube displays. -->
|
<!-- 'Subscribe' should be translated with the same localized wording that YouTube displays. -->
|
||||||
<string name="revanced_hide_visit_store_button_title">إخفاء زر \'زيارة المتجر\'</string>
|
<string name="revanced_hide_subscribe_button_in_channel_page_title">إخفاء زر الاشتراك</string>
|
||||||
<string name="revanced_hide_visit_store_button_summary_on">تم إخفاء زر زيارة المتجر</string>
|
<string name="revanced_hide_subscribe_button_in_channel_page_summary_on">تم إخفاء زر الاشتراك</string>
|
||||||
<string name="revanced_hide_visit_store_button_summary_off">يتم عرض زر زيارة المتجر</string>
|
<string name="revanced_hide_subscribe_button_in_channel_page_summary_off">يتم عرض زر الاشتراك</string>
|
||||||
<string name="revanced_comments_screen_title">التعليقات</string>
|
<string name="revanced_comments_screen_title">التعليقات</string>
|
||||||
<string name="revanced_comments_screen_summary">إخفاء أو عرض مكونات قسم التعليقات</string>
|
<string name="revanced_comments_screen_summary">إخفاء أو عرض مكونات قسم التعليقات</string>
|
||||||
<string name="revanced_hide_comments_ai_chat_summary_title">إخفاء ملخص محادثات الذكاء الاصطناعي</string>
|
<string name="revanced_hide_comments_ai_chat_summary_title">إخفاء ملخص محادثات الذكاء الاصطناعي</string>
|
||||||
@@ -534,11 +548,11 @@ Second \"item\" text"</string>
|
|||||||
<string name="revanced_share_copy_url_success">تم نسخ URL إلى الحافظة</string>
|
<string name="revanced_share_copy_url_success">تم نسخ URL إلى الحافظة</string>
|
||||||
<string name="revanced_share_copy_url_timestamp_success">تم نسخ عنوان URL مع الطابع الزمني</string>
|
<string name="revanced_share_copy_url_timestamp_success">تم نسخ عنوان URL مع الطابع الزمني</string>
|
||||||
<string name="revanced_copy_video_url_title">عرض زر نسخ عنوان URL للفيديو</string>
|
<string name="revanced_copy_video_url_title">عرض زر نسخ عنوان URL للفيديو</string>
|
||||||
<string name="revanced_copy_video_url_summary_on">يتم عرض الزر. انقر لنسخ عنوان URL للفيديو. انقر مع الاستمرار للنسخ مع الطابع الزمني</string>
|
<string name="revanced_copy_video_url_summary_on">يتم عرض زر نسخ عنوان URL للفيديو. انقر لنسخ عنوان URL للفيديو. انقر مع الاستمرار للنسخ مع الطابع الزمني</string>
|
||||||
<string name="revanced_copy_video_url_summary_off">لا يتم عرض الزر</string>
|
<string name="revanced_copy_video_url_summary_off">لا يتم عرض زر نسخ عنوان URL للفيديو</string>
|
||||||
<string name="revanced_copy_video_url_timestamp_title">عرض زر نسخ URL مع الطابع الزمني</string>
|
<string name="revanced_copy_video_url_timestamp_title">عرض زر نسخ URL مع الطابع الزمني</string>
|
||||||
<string name="revanced_copy_video_url_timestamp_summary_on">يتم عرض الزر. انقر لنسخ عنوان URL للفيديو مع الطابع الزمني. انقر مع الاستمرار للنسخ بدون الطابع الزمني</string>
|
<string name="revanced_copy_video_url_timestamp_summary_on">يتم عرض زر نسخ عنوان URL مع الطابع الزمني. انقر لنسخ عنوان URL للفيديو مع الطابع الزمني. انقر مع الاستمرار للنسخ بدون الطابع الزمني</string>
|
||||||
<string name="revanced_copy_video_url_timestamp_summary_off">لا يتم عرض الزر</string>
|
<string name="revanced_copy_video_url_timestamp_summary_off">لا يتم عرض زر نسخ عنوان URL مع الطابع الزمني</string>
|
||||||
</patch>
|
</patch>
|
||||||
<patch id="interaction.dialog.removeViewerDiscretionDialogPatch">
|
<patch id="interaction.dialog.removeViewerDiscretionDialogPatch">
|
||||||
<string name="revanced_remove_viewer_discretion_dialog_title">إزالة مربع حوار تقدير المشاهد</string>
|
<string name="revanced_remove_viewer_discretion_dialog_title">إزالة مربع حوار تقدير المشاهد</string>
|
||||||
@@ -679,7 +693,7 @@ Second \"item\" text"</string>
|
|||||||
<string name="revanced_hide_download_button_summary_on">تم إخفاء زر تنزيل</string>
|
<string name="revanced_hide_download_button_summary_on">تم إخفاء زر تنزيل</string>
|
||||||
<string name="revanced_hide_download_button_summary_off">يتم عرض زر تنزيل</string>
|
<string name="revanced_hide_download_button_summary_off">يتم عرض زر تنزيل</string>
|
||||||
<!-- 'Hype' should be translated with the same localized wording that YouTube displays.
|
<!-- 'Hype' should be translated with the same localized wording that YouTube displays.
|
||||||
This button only shows on videos uploaded by the logged in user. -->
|
This button only shows on videos uploaded by the logged-in user. -->
|
||||||
<string name="revanced_hide_hype_button_title">إخفاء التشجيع</string>
|
<string name="revanced_hide_hype_button_title">إخفاء التشجيع</string>
|
||||||
<string name="revanced_hide_hype_button_summary_on">تم إخفاء زر التشجيع</string>
|
<string name="revanced_hide_hype_button_summary_on">تم إخفاء زر التشجيع</string>
|
||||||
<string name="revanced_hide_hype_button_summary_off">يتم عرض زر التشجيع</string>
|
<string name="revanced_hide_hype_button_summary_off">يتم عرض زر التشجيع</string>
|
||||||
@@ -800,10 +814,11 @@ Second \"item\" text"</string>
|
|||||||
<string name="revanced_hide_player_flyout_audio_track_title">إخفاء المقطع الصوتي</string>
|
<string name="revanced_hide_player_flyout_audio_track_title">إخفاء المقطع الصوتي</string>
|
||||||
<string name="revanced_hide_player_flyout_audio_track_summary_on">تم إخفاء قائمة المقطع الصوتي</string>
|
<string name="revanced_hide_player_flyout_audio_track_summary_on">تم إخفاء قائمة المقطع الصوتي</string>
|
||||||
<string name="revanced_hide_player_flyout_audio_track_summary_off">يتم عرض قائمة المقطع الصوتي</string>
|
<string name="revanced_hide_player_flyout_audio_track_summary_off">يتم عرض قائمة المقطع الصوتي</string>
|
||||||
<!-- 'Spoof video streams' should be the same translation used for 'revanced_spoof_video_streams_screen_title'. -->
|
<!-- 'Spoof video streams' should be the same translation used for 'revanced_spoof_video_streams_screen_title'.
|
||||||
|
'Android No SDK' must be kept untranslated. -->
|
||||||
<string name="revanced_hide_player_flyout_audio_track_not_available">"تم إخفاء قائمة المقطع الصوتي
|
<string name="revanced_hide_player_flyout_audio_track_not_available">"تم إخفاء قائمة المقطع الصوتي
|
||||||
|
|
||||||
لعرض قائمة المقطع الصوتي، غيّر 'Spoof video streams' إلى iPadOS"</string>
|
لعرض قائمة المقطع الصوتي، غيّر 'Spoof Video Streams' إلى 'Android No SDK'"</string>
|
||||||
<!-- 'Watch in VR' should be translated using the same localized wording YouTube displays for the menu item. -->
|
<!-- 'Watch in VR' should be translated using the same localized wording YouTube displays for the menu item. -->
|
||||||
<string name="revanced_hide_player_flyout_watch_in_vr_title">إخفاء المشاهدة في VR</string>
|
<string name="revanced_hide_player_flyout_watch_in_vr_title">إخفاء المشاهدة في VR</string>
|
||||||
<string name="revanced_hide_player_flyout_watch_in_vr_summary_on">تم إخفاء قائمة المشاهدة في الوضع الافتراضي</string>
|
<string name="revanced_hide_player_flyout_watch_in_vr_summary_on">تم إخفاء قائمة المشاهدة في الوضع الافتراضي</string>
|
||||||
@@ -879,6 +894,9 @@ Second \"item\" text"</string>
|
|||||||
<string name="revanced_hide_shorts_history_title">إخفاء Shorts في السجلّ</string>
|
<string name="revanced_hide_shorts_history_title">إخفاء Shorts في السجلّ</string>
|
||||||
<string name="revanced_hide_shorts_history_summary_on">مخفي في السجلّ</string>
|
<string name="revanced_hide_shorts_history_summary_on">مخفي في السجلّ</string>
|
||||||
<string name="revanced_hide_shorts_history_summary_off">يُعرض في السجلّ</string>
|
<string name="revanced_hide_shorts_history_summary_off">يُعرض في السجلّ</string>
|
||||||
|
<string name="revanced_hide_shorts_auto_dubbed_label_title">إخفاء تسمية \"مدبلج تلقائياً\"</string>
|
||||||
|
<string name="revanced_hide_shorts_auto_dubbed_label_summary_on">تم إخفاء تسمية الدبلجة التلقائية</string>
|
||||||
|
<string name="revanced_hide_shorts_auto_dubbed_label_summary_off">يتم عرض تسمية الدبلجة التلقائية</string>
|
||||||
<string name="revanced_hide_shorts_super_thanks_button_title">إخفاء زر شراء Super Thanks</string>
|
<string name="revanced_hide_shorts_super_thanks_button_title">إخفاء زر شراء Super Thanks</string>
|
||||||
<string name="revanced_hide_shorts_super_thanks_button_summary_on">تم إخفاء زر شراء Super Thanks</string>
|
<string name="revanced_hide_shorts_super_thanks_button_summary_on">تم إخفاء زر شراء Super Thanks</string>
|
||||||
<string name="revanced_hide_shorts_super_thanks_button_summary_off">يتم عرض زر شراء Super Thanks</string>
|
<string name="revanced_hide_shorts_super_thanks_button_summary_off">يتم عرض زر شراء Super Thanks</string>
|
||||||
@@ -895,6 +913,9 @@ Second \"item\" text"</string>
|
|||||||
<string name="revanced_hide_shorts_join_button_title">إخفاء زر الانضمام</string>
|
<string name="revanced_hide_shorts_join_button_title">إخفاء زر الانضمام</string>
|
||||||
<string name="revanced_hide_shorts_join_button_summary_on">تم إخفاء زر الانضمام</string>
|
<string name="revanced_hide_shorts_join_button_summary_on">تم إخفاء زر الانضمام</string>
|
||||||
<string name="revanced_hide_shorts_join_button_summary_off">يتم عرض زر الانضمام</string>
|
<string name="revanced_hide_shorts_join_button_summary_off">يتم عرض زر الانضمام</string>
|
||||||
|
<string name="revanced_hide_shorts_live_preview_title">إخفاء المعاينة المباشرة</string>
|
||||||
|
<string name="revanced_hide_shorts_live_preview_summary_on">تم إخفاء معاينة البث المباشر</string>
|
||||||
|
<string name="revanced_hide_shorts_live_preview_summary_off">تم عرض معاينة البث المباشر</string>
|
||||||
<string name="revanced_hide_shorts_location_label_title">إخفاء تسمية الموقع</string>
|
<string name="revanced_hide_shorts_location_label_title">إخفاء تسمية الموقع</string>
|
||||||
<string name="revanced_hide_shorts_location_label_summary_on">تم إخفاء تسمية الموقع</string>
|
<string name="revanced_hide_shorts_location_label_summary_on">تم إخفاء تسمية الموقع</string>
|
||||||
<string name="revanced_hide_shorts_location_label_summary_off">يتم عرض تسمية الموقع</string>
|
<string name="revanced_hide_shorts_location_label_summary_off">يتم عرض تسمية الموقع</string>
|
||||||
@@ -1574,13 +1595,13 @@ Second \"item\" text"</string>
|
|||||||
</patch>
|
</patch>
|
||||||
<patch id="video.speed.button.playbackSpeedButtonPatch">
|
<patch id="video.speed.button.playbackSpeedButtonPatch">
|
||||||
<string name="revanced_playback_speed_dialog_button_title">عرض زر مربع حوار السرعة</string>
|
<string name="revanced_playback_speed_dialog_button_title">عرض زر مربع حوار السرعة</string>
|
||||||
<string name="revanced_playback_speed_dialog_button_summary_on">يتم عرض الزر. انقر مع الاستمرار لإعادة ضبط سرعة التشغيل إلى الوضع الافتراضي</string>
|
<string name="revanced_playback_speed_dialog_button_summary_on">يتم عرض زر مربع حوار السرعة. انقر مع الاستمرار لإعادة ضبط سرعة التشغيل إلى الوضع الافتراضي</string>
|
||||||
<string name="revanced_playback_speed_dialog_button_summary_off">لا يتم عرض الزر</string>
|
<string name="revanced_playback_speed_dialog_button_summary_off">لا يتم عرض زر مربع حوار السرعة</string>
|
||||||
</patch>
|
</patch>
|
||||||
<patch id="video.quality.button.videoQualityDialogButtonPatch">
|
<patch id="video.quality.button.videoQualityDialogButtonPatch">
|
||||||
<string name="revanced_video_quality_dialog_button_title">عرض زر جودة الفيديو</string>
|
<string name="revanced_video_quality_dialog_button_title">عرض زر جودة الفيديو</string>
|
||||||
<string name="revanced_video_quality_dialog_button_summary_on">يتم عرض الزر. انقر مع الاستمرار لإعادة تعيين الجودة إلى الوضع الافتراضي</string>
|
<string name="revanced_video_quality_dialog_button_summary_on">يتم عرض زر جودة الفيديو. انقر مع الاستمرار لإعادة تعيين الجودة إلى الوضع الافتراضي</string>
|
||||||
<string name="revanced_video_quality_dialog_button_summary_off">لا يتم عرض الزر</string>
|
<string name="revanced_video_quality_dialog_button_summary_off">لا يتم عرض زر جودة الفيديو</string>
|
||||||
</patch>
|
</patch>
|
||||||
<patch id="video.speed.custom.customPlaybackSpeedPatch">
|
<patch id="video.speed.custom.customPlaybackSpeedPatch">
|
||||||
<string name="revanced_custom_speed_menu_title">قائمة سرعة التشغيل المخصصة</string>
|
<string name="revanced_custom_speed_menu_title">قائمة سرعة التشغيل المخصصة</string>
|
||||||
@@ -1682,8 +1703,8 @@ Second \"item\" text"</string>
|
|||||||
<string name="revanced_music_hide_cast_button_summary_on">تم إخفاء زر البث</string>
|
<string name="revanced_music_hide_cast_button_summary_on">تم إخفاء زر البث</string>
|
||||||
<string name="revanced_music_hide_cast_button_summary_off">يتم عرض زر البث</string>
|
<string name="revanced_music_hide_cast_button_summary_off">يتم عرض زر البث</string>
|
||||||
<string name="revanced_music_hide_history_button_title">إخفاء زر السجل</string>
|
<string name="revanced_music_hide_history_button_title">إخفاء زر السجل</string>
|
||||||
<string name="revanced_music_hide_history_button_summary_on">زر السجل مخفي</string>
|
<string name="revanced_music_hide_history_button_summary_on">تم إخفاء زر السجل</string>
|
||||||
<string name="revanced_music_hide_history_button_summary_off">زر السجل ظاهر</string>
|
<string name="revanced_music_hide_history_button_summary_off">يتم عرض زر السجل</string>
|
||||||
<string name="revanced_music_hide_notification_button_title">إخفاء زر الإشعارات</string>
|
<string name="revanced_music_hide_notification_button_title">إخفاء زر الإشعارات</string>
|
||||||
<string name="revanced_music_hide_notification_button_summary_on">تم إخفاء زر الإشعارات</string>
|
<string name="revanced_music_hide_notification_button_summary_on">تم إخفاء زر الإشعارات</string>
|
||||||
<string name="revanced_music_hide_notification_button_summary_off">يتم عرض زر الإشعارات</string>
|
<string name="revanced_music_hide_notification_button_summary_off">يتم عرض زر الإشعارات</string>
|
||||||
|
|||||||
@@ -63,9 +63,11 @@ Second \"item\" text"</string>
|
|||||||
<!-- https://logos.fandom.com/wiki/YouTube/Yoodles -->
|
<!-- https://logos.fandom.com/wiki/YouTube/Yoodles -->
|
||||||
<!-- 'Join' should be translated using the same localized wording YouTube displays.
|
<!-- 'Join' should be translated using the same localized wording YouTube displays.
|
||||||
This appears in the video player for certain videos. -->
|
This appears in the video player for certain videos. -->
|
||||||
|
<!-- 'Community' should be translated with the same localized wording that YouTube displays. -->
|
||||||
<!-- 'For You' should be translated using the same localized wording YouTube displays. -->
|
<!-- 'For You' should be translated using the same localized wording YouTube displays. -->
|
||||||
<!-- 'Visit Community' should be translated with the same localized wording that YouTube displays. -->
|
<!-- 'Join' should be translated with the same localized wording that YouTube displays. -->
|
||||||
<!-- 'Visit store' should be translated with the same localized wording that YouTube displays. -->
|
<!-- 'Store' should be translated with the same localized wording that YouTube displays. -->
|
||||||
|
<!-- 'Subscribe' should be translated with the same localized wording that YouTube displays. -->
|
||||||
<!-- 'Component path builder strings' is the technical name for identifying the Litho UI layout items to hide. This is an advanced feature and most users will never use this. -->
|
<!-- 'Component path builder strings' is the technical name for identifying the Litho UI layout items to hide. This is an advanced feature and most users will never use this. -->
|
||||||
<!-- Translations should lanaguge similar to revanced_hide_upload_time_user_dialog_message -->
|
<!-- Translations should lanaguge similar to revanced_hide_upload_time_user_dialog_message -->
|
||||||
<!-- Translations should lanaguge similar to revanced_hide_view_count_user_dialog_message -->
|
<!-- Translations should lanaguge similar to revanced_hide_view_count_user_dialog_message -->
|
||||||
@@ -109,7 +111,7 @@ Second \"item\" text"</string>
|
|||||||
<!-- 'Remix' should be translated with the same localized wording that YouTube displays. -->
|
<!-- 'Remix' should be translated with the same localized wording that YouTube displays. -->
|
||||||
<!-- 'Download' should be translated with the same localized wording that YouTube displays. -->
|
<!-- 'Download' should be translated with the same localized wording that YouTube displays. -->
|
||||||
<!-- 'Hype' should be translated with the same localized wording that YouTube displays.
|
<!-- 'Hype' should be translated with the same localized wording that YouTube displays.
|
||||||
This button only shows on videos uploaded by the logged in user. -->
|
This button only shows on videos uploaded by the logged-in user. -->
|
||||||
<!-- 'Promote' should be translated with the same localized wording that YouTube displays. -->
|
<!-- 'Promote' should be translated with the same localized wording that YouTube displays. -->
|
||||||
<!-- 'Thanks' should be translated with the same localized wording that YouTube displays. -->
|
<!-- 'Thanks' should be translated with the same localized wording that YouTube displays. -->
|
||||||
<!-- 'Ask' should be translated with the same localized wording that YouTube displays.
|
<!-- 'Ask' should be translated with the same localized wording that YouTube displays.
|
||||||
@@ -136,7 +138,8 @@ Second \"item\" text"</string>
|
|||||||
<!-- 'Lock screen' should be translated using the same localized wording YouTube displays for the menu item. -->
|
<!-- 'Lock screen' should be translated using the same localized wording YouTube displays for the menu item. -->
|
||||||
<!-- 'Listen with YouTube Music' should be translated using the same localized wording YouTube displays for the menu item. -->
|
<!-- 'Listen with YouTube Music' should be translated using the same localized wording YouTube displays for the menu item. -->
|
||||||
<!-- 'Audio track' should be translated using the same localized wording YouTube displays for the menu item. -->
|
<!-- 'Audio track' should be translated using the same localized wording YouTube displays for the menu item. -->
|
||||||
<!-- 'Spoof video streams' should be the same translation used for 'revanced_spoof_video_streams_screen_title'. -->
|
<!-- 'Spoof video streams' should be the same translation used for 'revanced_spoof_video_streams_screen_title'.
|
||||||
|
'Android No SDK' must be kept untranslated. -->
|
||||||
<!-- 'Watch in VR' should be translated using the same localized wording YouTube displays for the menu item. -->
|
<!-- 'Watch in VR' should be translated using the same localized wording YouTube displays for the menu item. -->
|
||||||
</patch>
|
</patch>
|
||||||
<patch id="layout.buttons.overlay.hidePlayerOverlayButtonsPatch">
|
<patch id="layout.buttons.overlay.hidePlayerOverlayButtonsPatch">
|
||||||
|
|||||||
@@ -282,6 +282,9 @@ Hər halda, bunu aktivləşdirmə IP ünvanınız kimi bəzi istifadəçi məlum
|
|||||||
<string name="revanced_hide_video_recommendation_labels_title">Video tövsiyə etiketlərini gizlət</string>
|
<string name="revanced_hide_video_recommendation_labels_title">Video tövsiyə etiketlərini gizlət</string>
|
||||||
<string name="revanced_hide_video_recommendation_labels_summary_on">\'İnsanlar həmçinin izləyiblər\' və \'Bunu da bəyənə bilərsiniz\' etiketləri axtarış nəticələrində gizlədilib</string>
|
<string name="revanced_hide_video_recommendation_labels_summary_on">\'İnsanlar həmçinin izləyiblər\' və \'Bunu da bəyənə bilərsiniz\' etiketləri axtarış nəticələrində gizlədilib</string>
|
||||||
<string name="revanced_hide_video_recommendation_labels_summary_off">\'İnsanlar həmçinin izləyiblər\' və \'Bunu da bəyənə bilərsiniz\' etiketləri axtarış nəticələrində görünür</string>
|
<string name="revanced_hide_video_recommendation_labels_summary_off">\'İnsanlar həmçinin izləyiblər\' və \'Bunu da bəyənə bilərsiniz\' etiketləri axtarış nəticələrində görünür</string>
|
||||||
|
<string name="revanced_hide_visual_spacer_title">Vizual ayırıcı gizlət</string>
|
||||||
|
<string name="revanced_hide_visual_spacer_summary_on">Vizual ayırıcı gizlənib</string>
|
||||||
|
<string name="revanced_hide_visual_spacer_summary_off">Vizual ayırıcı göstərilib</string>
|
||||||
<!-- https://logos.fandom.com/wiki/YouTube/Yoodles -->
|
<!-- https://logos.fandom.com/wiki/YouTube/Yoodles -->
|
||||||
<string name="revanced_hide_doodles_title">YouTube Doodle-ları gizlət</string>
|
<string name="revanced_hide_doodles_title">YouTube Doodle-ları gizlət</string>
|
||||||
<string name="revanced_hide_doodles_summary_on">YouTube Doodles animasiyası simvolda gizlidir</string>
|
<string name="revanced_hide_doodles_summary_on">YouTube Doodles animasiyası simvolda gizlidir</string>
|
||||||
@@ -342,18 +345,21 @@ Hər halda, bunu aktivləşdirmə IP ünvanınız kimi bəzi istifadəçi məlum
|
|||||||
<string name="revanced_hide_podcast_section_title">\'Podkastı araşdırın\"-ı Gizlət</string>
|
<string name="revanced_hide_podcast_section_title">\'Podkastı araşdırın\"-ı Gizlət</string>
|
||||||
<string name="revanced_hide_podcast_section_summary_on">Podkast bölməsin araşdırın gizlidir</string>
|
<string name="revanced_hide_podcast_section_summary_on">Podkast bölməsin araşdırın gizlidir</string>
|
||||||
<string name="revanced_hide_podcast_section_summary_off">Podkast bölməsin araşdırın görünür</string>
|
<string name="revanced_hide_podcast_section_summary_off">Podkast bölməsin araşdırın görünür</string>
|
||||||
<string name="revanced_hide_featured_section_title">Seçilən məzmunu gizlət</string>
|
<string name="revanced_hide_featured_links_section_title">Seçilən keçidləri gizlət</string>
|
||||||
<string name="revanced_hide_featured_section_summary_on">Seçilən məzmun bölməsi gizlidir</string>
|
<string name="revanced_hide_featured_links_section_summary_on">Seçilən keçidlər bölməsi gizlidir</string>
|
||||||
<string name="revanced_hide_featured_section_summary_off">Seçilən məzmun bölməsi göstərilir</string>
|
<string name="revanced_hide_featured_links_section_summary_off">Seçilən keçidlər bölməsi göstərilir</string>
|
||||||
|
<string name="revanced_hide_featured_videos_section_title">Seçilən videoları gizlət</string>
|
||||||
|
<string name="revanced_hide_featured_videos_section_summary_on">Seçilən videolar bölməsi gizlidir</string>
|
||||||
|
<string name="revanced_hide_featured_videos_section_summary_off">Seçilən videolar bölməsi göstərilir</string>
|
||||||
<string name="revanced_hide_info_cards_section_title">Məlumat Kartlarını Gizlət</string>
|
<string name="revanced_hide_info_cards_section_title">Məlumat Kartlarını Gizlət</string>
|
||||||
<string name="revanced_hide_info_cards_section_summary_on">Məlumat kartları bölməsi gizlədilir</string>
|
<string name="revanced_hide_info_cards_section_summary_on">Məlumat kartları bölməsi gizlədilir</string>
|
||||||
<string name="revanced_hide_info_cards_section_summary_off">Məlumat kartları bölməsi göstərilir</string>
|
<string name="revanced_hide_info_cards_section_summary_off">Məlumat kartları bölməsi göstərilir</string>
|
||||||
<string name="revanced_hide_key_concepts_section_title">\"Əsas konseptlər-i\" gizlət</string>
|
<string name="revanced_hide_key_concepts_section_title">\"Əsas konseptlər-i\" gizlət</string>
|
||||||
<string name="revanced_hide_key_concepts_section_summary_on">Əsas konseptlər bölməsi gizlidir</string>
|
<string name="revanced_hide_key_concepts_section_summary_on">Əsas konseptlər bölməsi gizlidir</string>
|
||||||
<string name="revanced_hide_key_concepts_section_summary_off">Əsas konseptlər bölməsi görünür</string>
|
<string name="revanced_hide_key_concepts_section_summary_off">Əsas konseptlər bölməsi görünür</string>
|
||||||
<string name="revanced_hide_description_subscribe_button_title">Abunə ol düyməsini gizlət</string>
|
<string name="revanced_hide_subscribe_button_title">Abunə ol düyməsini gizlət</string>
|
||||||
<string name="revanced_hide_description_subscribe_button_summary_on">Abunə ol düyməsi gizlidir</string>
|
<string name="revanced_hide_subscribe_button_summary_on">Abunə ol düyməsi gizlidir</string>
|
||||||
<string name="revanced_hide_description_subscribe_button_summary_off">Abunə ol düyməsi görünür</string>
|
<string name="revanced_hide_subscribe_button_summary_off">Abunə ol düyməsi görünür</string>
|
||||||
<string name="revanced_hide_transcript_section_title">Transkript-i Gizlət</string>
|
<string name="revanced_hide_transcript_section_title">Transkript-i Gizlət</string>
|
||||||
<string name="revanced_hide_transcript_section_summary_on">Transkripsiya bölməsi gizlidir</string>
|
<string name="revanced_hide_transcript_section_summary_on">Transkripsiya bölməsi gizlidir</string>
|
||||||
<string name="revanced_hide_transcript_section_summary_off">Transkripsiya bölməsi göstərilir</string>
|
<string name="revanced_hide_transcript_section_summary_off">Transkripsiya bölməsi göstərilir</string>
|
||||||
@@ -375,24 +381,32 @@ Hər halda, bunu aktivləşdirmə IP ünvanınız kimi bəzi istifadəçi məlum
|
|||||||
<string name="revanced_hide_filter_bar_feed_in_history_summary_off">Baxış tarixçəsində görünür</string>
|
<string name="revanced_hide_filter_bar_feed_in_history_summary_off">Baxış tarixçəsində görünür</string>
|
||||||
<string name="revanced_channel_screen_title">Kanal səhifəsi</string>
|
<string name="revanced_channel_screen_title">Kanal səhifəsi</string>
|
||||||
<string name="revanced_channel_screen_summary">Kanal səhifə elementlərini gizlət və ya göstər</string>
|
<string name="revanced_channel_screen_summary">Kanal səhifə elementlərini gizlət və ya göstər</string>
|
||||||
|
<!-- 'Community' should be translated with the same localized wording that YouTube displays. -->
|
||||||
|
<string name="revanced_hide_community_button_title">İcma düyməsini gizlət</string>
|
||||||
|
<string name="revanced_hide_community_button_summary_on">İcmaya düyməsi gizlidir</string>
|
||||||
|
<string name="revanced_hide_community_button_summary_off">İcmaya düyməsi görünür</string>
|
||||||
<!-- 'For You' should be translated using the same localized wording YouTube displays. -->
|
<!-- 'For You' should be translated using the same localized wording YouTube displays. -->
|
||||||
<string name="revanced_hide_for_you_shelf_title">\"Sizin üçün\" bölməsin gizlət</string>
|
<string name="revanced_hide_for_you_shelf_title">\"Sizin üçün\" bölməsin gizlət</string>
|
||||||
<string name="revanced_hide_for_you_shelf_summary_on">Sizin üçün cərgəsi gizlidir</string>
|
<string name="revanced_hide_for_you_shelf_summary_on">Sizin üçün cərgəsi gizlidir</string>
|
||||||
<string name="revanced_hide_for_you_shelf_summary_off">Sizin üçün cərgəsi görünür</string>
|
<string name="revanced_hide_for_you_shelf_summary_off">Sizin üçün cərgəsi görünür</string>
|
||||||
|
<!-- 'Join' should be translated with the same localized wording that YouTube displays. -->
|
||||||
|
<string name="revanced_hide_join_button_title">Qoşulun düyməsini gizlət</string>
|
||||||
|
<string name="revanced_hide_join_button_summary_on">Qoşul düyməsi gizlidir</string>
|
||||||
|
<string name="revanced_hide_join_button_summary_off">Qoşul düyməsi görünür</string>
|
||||||
<string name="revanced_hide_links_preview_title">Keçidlərin önizləməsini gizlət</string>
|
<string name="revanced_hide_links_preview_title">Keçidlərin önizləməsini gizlət</string>
|
||||||
<string name="revanced_hide_links_preview_summary_on">Keçidlər önizləməsi gizlədilib</string>
|
<string name="revanced_hide_links_preview_summary_on">Keçidlər önizləməsi gizlədilib</string>
|
||||||
<string name="revanced_hide_links_preview_summary_off">Keçidlər önizləməsi görünür</string>
|
<string name="revanced_hide_links_preview_summary_off">Keçidlər önizləməsi görünür</string>
|
||||||
<string name="revanced_hide_members_shelf_title">Üzvlər cərgəsini gizlət</string>
|
<string name="revanced_hide_members_shelf_title">Üzvlər cərgəsini gizlət</string>
|
||||||
<string name="revanced_hide_members_shelf_summary_on">Üzvlər cərgəsi gizlidir</string>
|
<string name="revanced_hide_members_shelf_summary_on">Üzvlər cərgəsi gizlidir</string>
|
||||||
<string name="revanced_hide_members_shelf_summary_off">Üzvlər cərgəsi görünür</string>
|
<string name="revanced_hide_members_shelf_summary_off">Üzvlər cərgəsi görünür</string>
|
||||||
<!-- 'Visit Community' should be translated with the same localized wording that YouTube displays. -->
|
<!-- 'Store' should be translated with the same localized wording that YouTube displays. -->
|
||||||
<string name="revanced_hide_visit_community_button_title">\'İcmaya daxil olun\' düyməsini gizlət</string>
|
<string name="revanced_hide_store_button_title">Mağaza düyməsini gizlət</string>
|
||||||
<string name="revanced_hide_visit_community_button_summary_on">İcmaya daxil ol düyməsi gizlidir</string>
|
<string name="revanced_hide_store_button_summary_on">Mağaza düyməsi gizlidir</string>
|
||||||
<string name="revanced_hide_visit_community_button_summary_off">İcmaya daxil ol düyməsi görünür</string>
|
<string name="revanced_hide_store_button_summary_off">Mağaza düyməsi görünür</string>
|
||||||
<!-- 'Visit store' should be translated with the same localized wording that YouTube displays. -->
|
<!-- 'Subscribe' should be translated with the same localized wording that YouTube displays. -->
|
||||||
<string name="revanced_hide_visit_store_button_title">Kanalda \"Mağazaya baxın\" düyməsin gizlə</string>
|
<string name="revanced_hide_subscribe_button_in_channel_page_title">Abunə ol düyməsini gizlət</string>
|
||||||
<string name="revanced_hide_visit_store_button_summary_on">Mağazaya baxın düyməsi gizlidir</string>
|
<string name="revanced_hide_subscribe_button_in_channel_page_summary_on">Abunə ol düyməsi gizlidir</string>
|
||||||
<string name="revanced_hide_visit_store_button_summary_off">Mağazaya baxın düyməsi görünür</string>
|
<string name="revanced_hide_subscribe_button_in_channel_page_summary_off">Abunə ol düyməsi görünür</string>
|
||||||
<string name="revanced_comments_screen_title">Şərhlər</string>
|
<string name="revanced_comments_screen_title">Şərhlər</string>
|
||||||
<string name="revanced_comments_screen_summary">Şərhlər bölməsi elementlərin gizlət və ya göstər</string>
|
<string name="revanced_comments_screen_summary">Şərhlər bölməsi elementlərin gizlət və ya göstər</string>
|
||||||
<string name="revanced_hide_comments_ai_chat_summary_title">Sİ söhbət xülasəsini gizlət</string>
|
<string name="revanced_hide_comments_ai_chat_summary_title">Sİ söhbət xülasəsini gizlət</string>
|
||||||
@@ -534,11 +548,11 @@ Bu xüsusiyyət yalnız köhnə cihazlar üçün mövcuddur"</string>
|
|||||||
<string name="revanced_share_copy_url_success">URL buferə köçürüldü</string>
|
<string name="revanced_share_copy_url_success">URL buferə köçürüldü</string>
|
||||||
<string name="revanced_share_copy_url_timestamp_success">Vaxt möhürlü URL köçürüldü</string>
|
<string name="revanced_share_copy_url_timestamp_success">Vaxt möhürlü URL köçürüldü</string>
|
||||||
<string name="revanced_copy_video_url_title">Video URL-i köçürmə düyməsin göstər</string>
|
<string name="revanced_copy_video_url_title">Video URL-i köçürmə düyməsin göstər</string>
|
||||||
<string name="revanced_copy_video_url_summary_on">Düymə göstərilir. Video URL-ni köçürmək üçün toxun. Vaxt möhürü ilə köçürmək üçün basıb saxlayın</string>
|
<string name="revanced_copy_video_url_summary_on">Video URL-ini kopyala düyməsi görünür. Video URL-ini kopyalamaq üçün toxunun. Zaman nişanı ilə kopyalamaq üçün toxunub saxlayın</string>
|
||||||
<string name="revanced_copy_video_url_summary_off">Düymə göstərilmir</string>
|
<string name="revanced_copy_video_url_summary_off">Video URL-ini kopyala düyməsi görünmür</string>
|
||||||
<string name="revanced_copy_video_url_timestamp_title">Vaxt möhürü URL köçür düyməsi göstər</string>
|
<string name="revanced_copy_video_url_timestamp_title">Vaxt möhürü URL köçür düyməsi göstər</string>
|
||||||
<string name="revanced_copy_video_url_timestamp_summary_on">Düymə göstərilir. Video URL-ni vaxt möhürü ilə köçürmək üçün toxun. Vaxt möhürü olmadan köçürmək üçün basıb saxlayın</string>
|
<string name="revanced_copy_video_url_timestamp_summary_on">Zaman nişanı URL-ini kopyala düyməsi görünür. Zaman nişanı ilə video URL-ini kopyalamaq üçün toxunun. Zaman nişanı olmadan kopyalamaq üçün toxunub saxlayın</string>
|
||||||
<string name="revanced_copy_video_url_timestamp_summary_off">Düymə göstərilmir</string>
|
<string name="revanced_copy_video_url_timestamp_summary_off">Zaman nişanı URL-ini kopyala düyməsi görünmür</string>
|
||||||
</patch>
|
</patch>
|
||||||
<patch id="interaction.dialog.removeViewerDiscretionDialogPatch">
|
<patch id="interaction.dialog.removeViewerDiscretionDialogPatch">
|
||||||
<string name="revanced_remove_viewer_discretion_dialog_title">İzləyici mülahizə dialoqun sil</string>
|
<string name="revanced_remove_viewer_discretion_dialog_title">İzləyici mülahizə dialoqun sil</string>
|
||||||
@@ -679,7 +693,7 @@ Ekranın sağ tərəfində düzünə sürüşdürərək səs səviyyəsini tənz
|
|||||||
<string name="revanced_hide_download_button_summary_on">Yükləmə düyməsi gizlidir</string>
|
<string name="revanced_hide_download_button_summary_on">Yükləmə düyməsi gizlidir</string>
|
||||||
<string name="revanced_hide_download_button_summary_off">Yükləmə düyməsi göstərilir</string>
|
<string name="revanced_hide_download_button_summary_off">Yükləmə düyməsi göstərilir</string>
|
||||||
<!-- 'Hype' should be translated with the same localized wording that YouTube displays.
|
<!-- 'Hype' should be translated with the same localized wording that YouTube displays.
|
||||||
This button only shows on videos uploaded by the logged in user. -->
|
This button only shows on videos uploaded by the logged-in user. -->
|
||||||
<string name="revanced_hide_hype_button_title">Coşqu Gizlət</string>
|
<string name="revanced_hide_hype_button_title">Coşqu Gizlət</string>
|
||||||
<string name="revanced_hide_hype_button_summary_on">Coşqu düyməsi gizlidir</string>
|
<string name="revanced_hide_hype_button_summary_on">Coşqu düyməsi gizlidir</string>
|
||||||
<string name="revanced_hide_hype_button_summary_off">Coşqu düyməsi görünür</string>
|
<string name="revanced_hide_hype_button_summary_off">Coşqu düyməsi görünür</string>
|
||||||
@@ -800,10 +814,11 @@ Bu seçimi dəyişdirmə işə düşmürsə, Gizli rejimə keçməyə çalışı
|
|||||||
<string name="revanced_hide_player_flyout_audio_track_title">Səs trekini gizlət</string>
|
<string name="revanced_hide_player_flyout_audio_track_title">Səs trekini gizlət</string>
|
||||||
<string name="revanced_hide_player_flyout_audio_track_summary_on">Səs axını menyusu gizlidir</string>
|
<string name="revanced_hide_player_flyout_audio_track_summary_on">Səs axını menyusu gizlidir</string>
|
||||||
<string name="revanced_hide_player_flyout_audio_track_summary_off">Səs axını menyusu göstərilir</string>
|
<string name="revanced_hide_player_flyout_audio_track_summary_off">Səs axını menyusu göstərilir</string>
|
||||||
<!-- 'Spoof video streams' should be the same translation used for 'revanced_spoof_video_streams_screen_title'. -->
|
<!-- 'Spoof video streams' should be the same translation used for 'revanced_spoof_video_streams_screen_title'.
|
||||||
<string name="revanced_hide_player_flyout_audio_track_not_available">"Səs trek menyusu gizlidir
|
'Android No SDK' must be kept untranslated. -->
|
||||||
|
<string name="revanced_hide_player_flyout_audio_track_not_available">"Səs axını menyusu gizlidir
|
||||||
|
|
||||||
Səs treki menyusunu göstərmək üçün \"Video yayımları saxtalaşdır\"ı iPadOS-a dəyiş"</string>
|
Səs treki menyusunu göstərmək üçün \"Video yayımları saxtalaşdır\"-ı 'Android No SDK'-a dəyiş"</string>
|
||||||
<!-- 'Watch in VR' should be translated using the same localized wording YouTube displays for the menu item. -->
|
<!-- 'Watch in VR' should be translated using the same localized wording YouTube displays for the menu item. -->
|
||||||
<string name="revanced_hide_player_flyout_watch_in_vr_title">\"VR-da İzləni\" gizlət</string>
|
<string name="revanced_hide_player_flyout_watch_in_vr_title">\"VR-da İzləni\" gizlət</string>
|
||||||
<string name="revanced_hide_player_flyout_watch_in_vr_summary_on">VR menyusunda izləmə gizlidir</string>
|
<string name="revanced_hide_player_flyout_watch_in_vr_summary_on">VR menyusunda izləmə gizlidir</string>
|
||||||
@@ -879,13 +894,16 @@ Səs treki menyusunu göstərmək üçün \"Video yayımları saxtalaşdır\"ı
|
|||||||
<string name="revanced_hide_shorts_history_title">Baxış tarixçəsində Shorts-u gizlət</string>
|
<string name="revanced_hide_shorts_history_title">Baxış tarixçəsində Shorts-u gizlət</string>
|
||||||
<string name="revanced_hide_shorts_history_summary_on">Baxış tarixçəsində gizlidir</string>
|
<string name="revanced_hide_shorts_history_summary_on">Baxış tarixçəsində gizlidir</string>
|
||||||
<string name="revanced_hide_shorts_history_summary_off">Baxış tarixçəsində göstərilib</string>
|
<string name="revanced_hide_shorts_history_summary_off">Baxış tarixçəsində göstərilib</string>
|
||||||
<string name="revanced_hide_shorts_super_thanks_button_title">Super Təşəkkür Al düyməsini gizlət</string>
|
<string name="revanced_hide_shorts_auto_dubbed_label_title">\'Avtomatik dublyaj olunmuş\' etiketini gizlət</string>
|
||||||
|
<string name="revanced_hide_shorts_auto_dubbed_label_summary_on">Avto-dublyaj etiketi gizlidir</string>
|
||||||
|
<string name="revanced_hide_shorts_auto_dubbed_label_summary_off">Avto-dublyaj etiketi göstərilir</string>
|
||||||
|
<string name="revanced_hide_shorts_super_thanks_button_title">\'Super Təşəkkür Al\' düyməsini gizlət</string>
|
||||||
<string name="revanced_hide_shorts_super_thanks_button_summary_on">Super Təşəkkürlər Al düyməsi gizlidir</string>
|
<string name="revanced_hide_shorts_super_thanks_button_summary_on">Super Təşəkkürlər Al düyməsi gizlidir</string>
|
||||||
<string name="revanced_hide_shorts_super_thanks_button_summary_off">Super Təşəkkürlər Al düyməsi görünür</string>
|
<string name="revanced_hide_shorts_super_thanks_button_summary_off">Super Təşəkkürlər Al düyməsi görünür</string>
|
||||||
<string name="revanced_hide_shorts_effect_button_title">Effekt düyməsini gizlət</string>
|
<string name="revanced_hide_shorts_effect_button_title">Effekt düyməsini gizlət</string>
|
||||||
<string name="revanced_hide_shorts_effect_button_summary_on">Effekt düyməsi gizlidir</string>
|
<string name="revanced_hide_shorts_effect_button_summary_on">Effekt düyməsi gizlidir</string>
|
||||||
<string name="revanced_hide_shorts_effect_button_summary_off">Effekt düyməsi görünür</string>
|
<string name="revanced_hide_shorts_effect_button_summary_off">Effekt düyməsi görünür</string>
|
||||||
<string name="revanced_hide_shorts_green_screen_button_title">Yaşıl ekran düyməsini gizlət</string>
|
<string name="revanced_hide_shorts_green_screen_button_title">\'Yaşıl ekran\' düyməsini gizlət</string>
|
||||||
<string name="revanced_hide_shorts_green_screen_button_summary_on">\"Yaşıl ekran\" düyməsi gizlidir</string>
|
<string name="revanced_hide_shorts_green_screen_button_summary_on">\"Yaşıl ekran\" düyməsi gizlidir</string>
|
||||||
<string name="revanced_hide_shorts_green_screen_button_summary_off">\"Yaşıl ekran\" düyməsi göstərilir</string>
|
<string name="revanced_hide_shorts_green_screen_button_summary_off">\"Yaşıl ekran\" düyməsi göstərilir</string>
|
||||||
<string name="revanced_hide_shorts_hashtag_button_title">Mövzu etiketi düyməsini gizlət</string>
|
<string name="revanced_hide_shorts_hashtag_button_title">Mövzu etiketi düyməsini gizlət</string>
|
||||||
@@ -895,6 +913,9 @@ Səs treki menyusunu göstərmək üçün \"Video yayımları saxtalaşdır\"ı
|
|||||||
<string name="revanced_hide_shorts_join_button_title">Qoşul düyməsin gizlə</string>
|
<string name="revanced_hide_shorts_join_button_title">Qoşul düyməsin gizlə</string>
|
||||||
<string name="revanced_hide_shorts_join_button_summary_on">Qoşulma düyməsi gizlidir</string>
|
<string name="revanced_hide_shorts_join_button_summary_on">Qoşulma düyməsi gizlidir</string>
|
||||||
<string name="revanced_hide_shorts_join_button_summary_off">Qoşulma düyməsi göstərilir</string>
|
<string name="revanced_hide_shorts_join_button_summary_off">Qoşulma düyməsi göstərilir</string>
|
||||||
|
<string name="revanced_hide_shorts_live_preview_title">Canlı önizləməni gizlət</string>
|
||||||
|
<string name="revanced_hide_shorts_live_preview_summary_on">Canlı önizləmə gizlədilib</string>
|
||||||
|
<string name="revanced_hide_shorts_live_preview_summary_off">Canlı önizləmə göstərilir</string>
|
||||||
<string name="revanced_hide_shorts_location_label_title">Məkan etiketini gizlət</string>
|
<string name="revanced_hide_shorts_location_label_title">Məkan etiketini gizlət</string>
|
||||||
<string name="revanced_hide_shorts_location_label_summary_on">Məkan etiketi gizlidir</string>
|
<string name="revanced_hide_shorts_location_label_summary_on">Məkan etiketi gizlidir</string>
|
||||||
<string name="revanced_hide_shorts_location_label_summary_off">Məkan etiketi göstərilir</string>
|
<string name="revanced_hide_shorts_location_label_summary_off">Məkan etiketi göstərilir</string>
|
||||||
@@ -907,7 +928,7 @@ Səs treki menyusunu göstərmək üçün \"Video yayımları saxtalaşdır\"ı
|
|||||||
<string name="revanced_hide_shorts_preview_comment_title">Öncül baxış şərhini gizlət</string>
|
<string name="revanced_hide_shorts_preview_comment_title">Öncül baxış şərhini gizlət</string>
|
||||||
<string name="revanced_hide_shorts_preview_comment_summary_on">Öncül baxış şərhi gizlidir</string>
|
<string name="revanced_hide_shorts_preview_comment_summary_on">Öncül baxış şərhi gizlidir</string>
|
||||||
<string name="revanced_hide_shorts_preview_comment_summary_off">Öncül baxış şərhi göstərilir</string>
|
<string name="revanced_hide_shorts_preview_comment_summary_off">Öncül baxış şərhi göstərilir</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_title">Musiqini saxla düyməsini gizlət</string>
|
<string name="revanced_hide_shorts_save_sound_button_title">\'Musiqini yadda saxla\' düyməsini gizlət</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_summary_on">\"Musiqini saxla\" düyməsi gizlidir</string>
|
<string name="revanced_hide_shorts_save_sound_button_summary_on">\"Musiqini saxla\" düyməsi gizlidir</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_summary_off">\"Musiqini saxla\" düyməsi göstərilir</string>
|
<string name="revanced_hide_shorts_save_sound_button_summary_off">\"Musiqini saxla\" düyməsi göstərilir</string>
|
||||||
<string name="revanced_hide_shorts_search_suggestions_title">Axtarış təkliflərini gizlət</string>
|
<string name="revanced_hide_shorts_search_suggestions_title">Axtarış təkliflərini gizlət</string>
|
||||||
@@ -1573,13 +1594,13 @@ Bunu aktivləşdirmə daha yüksək video keyfiyyətləri əngəlin silə bilər
|
|||||||
</patch>
|
</patch>
|
||||||
<patch id="video.speed.button.playbackSpeedButtonPatch">
|
<patch id="video.speed.button.playbackSpeedButtonPatch">
|
||||||
<string name="revanced_playback_speed_dialog_button_title">Sürət dialoq düyməsini göstər</string>
|
<string name="revanced_playback_speed_dialog_button_title">Sürət dialoq düyməsini göstər</string>
|
||||||
<string name="revanced_playback_speed_dialog_button_summary_on">Düymə göstərilir. Oynatma sürətin standart olaraq qaytarmaq üçün toxunub saxla</string>
|
<string name="revanced_playback_speed_dialog_button_summary_on">Sürət dialoqu düyməsi görünür. Oxutma sürətini ilkin vəziyyətinə qaytarmaq üçün toxunub saxlayın</string>
|
||||||
<string name="revanced_playback_speed_dialog_button_summary_off">Düymə göstərilmir</string>
|
<string name="revanced_playback_speed_dialog_button_summary_off">Sürət dialoqu düyməsi görünmür</string>
|
||||||
</patch>
|
</patch>
|
||||||
<patch id="video.quality.button.videoQualityDialogButtonPatch">
|
<patch id="video.quality.button.videoQualityDialogButtonPatch">
|
||||||
<string name="revanced_video_quality_dialog_button_title">Video keyfiyyəti düyməsini göstər</string>
|
<string name="revanced_video_quality_dialog_button_title">Video keyfiyyəti düyməsini göstər</string>
|
||||||
<string name="revanced_video_quality_dialog_button_summary_on">Düymə görünür. Keyfiyyəti ilkin vəziyyətinə qaytarmaq üçün toxunub saxlayın</string>
|
<string name="revanced_video_quality_dialog_button_summary_on">Video keyfiyyəti düyməsi görünür. Keyfiyyəti ilkin vəziyyətinə qaytarmaq üçün toxunub saxlayın</string>
|
||||||
<string name="revanced_video_quality_dialog_button_summary_off">Düymə görünmür</string>
|
<string name="revanced_video_quality_dialog_button_summary_off">Video keyfiyyəti düyməsi görünmür</string>
|
||||||
</patch>
|
</patch>
|
||||||
<patch id="video.speed.custom.customPlaybackSpeedPatch">
|
<patch id="video.speed.custom.customPlaybackSpeedPatch">
|
||||||
<string name="revanced_custom_speed_menu_title">Fərdi oynatma sürəti siyahısı</string>
|
<string name="revanced_custom_speed_menu_title">Fərdi oynatma sürəti siyahısı</string>
|
||||||
|
|||||||
@@ -282,6 +282,9 @@ Second \"item\" text"</string>
|
|||||||
<string name="revanced_hide_video_recommendation_labels_title">Схаваць меткі рэкамендацый відэа</string>
|
<string name="revanced_hide_video_recommendation_labels_title">Схаваць меткі рэкамендацый відэа</string>
|
||||||
<string name="revanced_hide_video_recommendation_labels_summary_on">Меткі «Людзі таксама глядзелі» і «Вам таксама можа спадабацца» ў выніках пошуку схаваныя</string>
|
<string name="revanced_hide_video_recommendation_labels_summary_on">Меткі «Людзі таксама глядзелі» і «Вам таксама можа спадабацца» ў выніках пошуку схаваныя</string>
|
||||||
<string name="revanced_hide_video_recommendation_labels_summary_off">Меткі «Людзі таксама глядзелі» і «Вам таксама можа спадабацца» ў выніках пошуку паказаныя</string>
|
<string name="revanced_hide_video_recommendation_labels_summary_off">Меткі «Людзі таксама глядзелі» і «Вам таксама можа спадабацца» ў выніках пошуку паказаныя</string>
|
||||||
|
<string name="revanced_hide_visual_spacer_title">Схаваць візуальны падзельнік</string>
|
||||||
|
<string name="revanced_hide_visual_spacer_summary_on">Візуальны падзельнік схаваны</string>
|
||||||
|
<string name="revanced_hide_visual_spacer_summary_off">Візуальны падзельнік паказаны</string>
|
||||||
<!-- https://logos.fandom.com/wiki/YouTube/Yoodles -->
|
<!-- https://logos.fandom.com/wiki/YouTube/Yoodles -->
|
||||||
<string name="revanced_hide_doodles_title">Схаваць YouTube Doodles</string>
|
<string name="revanced_hide_doodles_title">Схаваць YouTube Doodles</string>
|
||||||
<string name="revanced_hide_doodles_summary_on">Анімацыя YouTube Doodles на лагатыпе схаваная</string>
|
<string name="revanced_hide_doodles_summary_on">Анімацыя YouTube Doodles на лагатыпе схаваная</string>
|
||||||
@@ -342,18 +345,21 @@ Second \"item\" text"</string>
|
|||||||
<string name="revanced_hide_podcast_section_title">Схаваць «Пазнаёмцеся з падкастам»</string>
|
<string name="revanced_hide_podcast_section_title">Схаваць «Пазнаёмцеся з падкастам»</string>
|
||||||
<string name="revanced_hide_podcast_section_summary_on">Раздзел «Пазнаёмцеся з падкастам» схаваны</string>
|
<string name="revanced_hide_podcast_section_summary_on">Раздзел «Пазнаёмцеся з падкастам» схаваны</string>
|
||||||
<string name="revanced_hide_podcast_section_summary_off">Раздзел «Пазнаёмцеся з падкастам» паказаны</string>
|
<string name="revanced_hide_podcast_section_summary_off">Раздзел «Пазнаёмцеся з падкастам» паказаны</string>
|
||||||
<string name="revanced_hide_featured_section_title">Схаваць рэкамендаваны кантэнт</string>
|
<string name="revanced_hide_featured_links_section_title">Схаваць выбраныя спасылкі</string>
|
||||||
<string name="revanced_hide_featured_section_summary_on">Раздзел рэкамендаванага кантэнту схаваны</string>
|
<string name="revanced_hide_featured_links_section_summary_on">Раздзел з рэкамендаванымі спасылкамі схаваны</string>
|
||||||
<string name="revanced_hide_featured_section_summary_off">Раздзел рэкамендаванага кантэнту паказаны</string>
|
<string name="revanced_hide_featured_links_section_summary_off">Раздзел з рэкамендаванымі спасылкамі паказаны</string>
|
||||||
|
<string name="revanced_hide_featured_videos_section_title">Схаваць рэкамендаваныя відэа</string>
|
||||||
|
<string name="revanced_hide_featured_videos_section_summary_on">Раздзел з рэкамендаванымі відэа схаваны</string>
|
||||||
|
<string name="revanced_hide_featured_videos_section_summary_off">Раздзел з рэкамендаванымі відэа паказаны</string>
|
||||||
<string name="revanced_hide_info_cards_section_title">Схаваць інфармацыйныя карткі</string>
|
<string name="revanced_hide_info_cards_section_title">Схаваць інфармацыйныя карткі</string>
|
||||||
<string name="revanced_hide_info_cards_section_summary_on">Раздзел інфармацыйных картак схаваны</string>
|
<string name="revanced_hide_info_cards_section_summary_on">Раздзел інфармацыйных картак схаваны</string>
|
||||||
<string name="revanced_hide_info_cards_section_summary_off">Паказваецца раздзел інфармацыйных карт</string>
|
<string name="revanced_hide_info_cards_section_summary_off">Паказваецца раздзел інфармацыйных карт</string>
|
||||||
<string name="revanced_hide_key_concepts_section_title">Схаваць «Ключавыя канцэпцыі»</string>
|
<string name="revanced_hide_key_concepts_section_title">Схаваць «Ключавыя канцэпцыі»</string>
|
||||||
<string name="revanced_hide_key_concepts_section_summary_on">Раздзел «Ключавыя канцэпцыі» схаваны</string>
|
<string name="revanced_hide_key_concepts_section_summary_on">Раздзел «Ключавыя канцэпцыі» схаваны</string>
|
||||||
<string name="revanced_hide_key_concepts_section_summary_off">Раздзел «Ключавыя канцэпцыі» паказаны</string>
|
<string name="revanced_hide_key_concepts_section_summary_off">Раздзел «Ключавыя канцэпцыі» паказаны</string>
|
||||||
<string name="revanced_hide_description_subscribe_button_title">Схаваць кнопку «Падпісацца»</string>
|
<string name="revanced_hide_subscribe_button_title">Схаваць кнопку «Падпісацца»</string>
|
||||||
<string name="revanced_hide_description_subscribe_button_summary_on">Кнопка падпіскі схавана</string>
|
<string name="revanced_hide_subscribe_button_summary_on">Кнопка «Падпісацца» схавана</string>
|
||||||
<string name="revanced_hide_description_subscribe_button_summary_off">Кнопка падпіскі паказана</string>
|
<string name="revanced_hide_subscribe_button_summary_off">Кнопка «Падпісацца» паказана</string>
|
||||||
<string name="revanced_hide_transcript_section_title">Схаваць стэнаграму</string>
|
<string name="revanced_hide_transcript_section_title">Схаваць стэнаграму</string>
|
||||||
<string name="revanced_hide_transcript_section_summary_on">Раздзел стэнаграмы схаваны</string>
|
<string name="revanced_hide_transcript_section_summary_on">Раздзел стэнаграмы схаваны</string>
|
||||||
<string name="revanced_hide_transcript_section_summary_off">Паказваецца раздзел стэнаграмы</string>
|
<string name="revanced_hide_transcript_section_summary_off">Паказваецца раздзел стэнаграмы</string>
|
||||||
@@ -375,24 +381,32 @@ Second \"item\" text"</string>
|
|||||||
<string name="revanced_hide_filter_bar_feed_in_history_summary_off">Паказаны ў гісторыі праглядаў</string>
|
<string name="revanced_hide_filter_bar_feed_in_history_summary_off">Паказаны ў гісторыі праглядаў</string>
|
||||||
<string name="revanced_channel_screen_title">Старонка канала</string>
|
<string name="revanced_channel_screen_title">Старонка канала</string>
|
||||||
<string name="revanced_channel_screen_summary">Схаваць або паказаць кампаненты старонкі канала</string>
|
<string name="revanced_channel_screen_summary">Схаваць або паказаць кампаненты старонкі канала</string>
|
||||||
|
<!-- 'Community' should be translated with the same localized wording that YouTube displays. -->
|
||||||
|
<string name="revanced_hide_community_button_title">Схаваць кнопку «Супольнасць»</string>
|
||||||
|
<string name="revanced_hide_community_button_summary_on">Кнопка супольнасці схавана</string>
|
||||||
|
<string name="revanced_hide_community_button_summary_off">Кнопка супольнасці паказана</string>
|
||||||
<!-- 'For You' should be translated using the same localized wording YouTube displays. -->
|
<!-- 'For You' should be translated using the same localized wording YouTube displays. -->
|
||||||
<string name="revanced_hide_for_you_shelf_title">Схаваць паліцу «Для вас»</string>
|
<string name="revanced_hide_for_you_shelf_title">Схаваць паліцу «Для вас»</string>
|
||||||
<string name="revanced_hide_for_you_shelf_summary_on">Паліца \"Для вас\" схаваная</string>
|
<string name="revanced_hide_for_you_shelf_summary_on">Паліца \"Для вас\" схаваная</string>
|
||||||
<string name="revanced_hide_for_you_shelf_summary_off">Паліца \"Для вас\" паказаная</string>
|
<string name="revanced_hide_for_you_shelf_summary_off">Паліца \"Для вас\" паказаная</string>
|
||||||
|
<!-- 'Join' should be translated with the same localized wording that YouTube displays. -->
|
||||||
|
<string name="revanced_hide_join_button_title">Схаваць кнопку Далучыцца</string>
|
||||||
|
<string name="revanced_hide_join_button_summary_on">Кнопка Далучыцца схавана</string>
|
||||||
|
<string name="revanced_hide_join_button_summary_off">Кнопка Далучыцца паказана</string>
|
||||||
<string name="revanced_hide_links_preview_title">Схаваць папярэдні прагляд спасылак</string>
|
<string name="revanced_hide_links_preview_title">Схаваць папярэдні прагляд спасылак</string>
|
||||||
<string name="revanced_hide_links_preview_summary_on">Папярэдні прагляд спасылак схаваны</string>
|
<string name="revanced_hide_links_preview_summary_on">Папярэдні прагляд спасылак схаваны</string>
|
||||||
<string name="revanced_hide_links_preview_summary_off">Папярэдні прагляд спасылак паказаны</string>
|
<string name="revanced_hide_links_preview_summary_off">Папярэдні прагляд спасылак паказаны</string>
|
||||||
<string name="revanced_hide_members_shelf_title">Схаваць паліцу ўдзельнікаў</string>
|
<string name="revanced_hide_members_shelf_title">Схаваць паліцу ўдзельнікаў</string>
|
||||||
<string name="revanced_hide_members_shelf_summary_on">Паліца ўдзельнікаў схаваная</string>
|
<string name="revanced_hide_members_shelf_summary_on">Паліца ўдзельнікаў схаваная</string>
|
||||||
<string name="revanced_hide_members_shelf_summary_off">Паліца ўдзельнікаў паказана</string>
|
<string name="revanced_hide_members_shelf_summary_off">Паліца ўдзельнікаў паказана</string>
|
||||||
<!-- 'Visit Community' should be translated with the same localized wording that YouTube displays. -->
|
<!-- 'Store' should be translated with the same localized wording that YouTube displays. -->
|
||||||
<string name="revanced_hide_visit_community_button_title">Схаваць кнопку \"Наведаць супольнасць\"</string>
|
<string name="revanced_hide_store_button_title">Схаваць кнопку Крама</string>
|
||||||
<string name="revanced_hide_visit_community_button_summary_on">Кнопка \"Наведаць супольнасць\" схавана</string>
|
<string name="revanced_hide_store_button_summary_on">Кнопка Крама схавана</string>
|
||||||
<string name="revanced_hide_visit_community_button_summary_off">Кнопка \"Наведаць супольнасць\" паказаная</string>
|
<string name="revanced_hide_store_button_summary_off">Кнопка Крама паказана</string>
|
||||||
<!-- 'Visit store' should be translated with the same localized wording that YouTube displays. -->
|
<!-- 'Subscribe' should be translated with the same localized wording that YouTube displays. -->
|
||||||
<string name="revanced_hide_visit_store_button_title">Схавайце кнопку \"Наведайце краму\" на старонках канала</string>
|
<string name="revanced_hide_subscribe_button_in_channel_page_title">Схаваць кнопку Падпісацца</string>
|
||||||
<string name="revanced_hide_visit_store_button_summary_on">Кнопка \"Наведаць краму\" схаваная</string>
|
<string name="revanced_hide_subscribe_button_in_channel_page_summary_on">Кнопка Падпісацца схавана</string>
|
||||||
<string name="revanced_hide_visit_store_button_summary_off">Кнопка \"Наведаць краму\" паказаная</string>
|
<string name="revanced_hide_subscribe_button_in_channel_page_summary_off">Кнопка Падпісацца паказана</string>
|
||||||
<string name="revanced_comments_screen_title">Каментарыі</string>
|
<string name="revanced_comments_screen_title">Каментарыі</string>
|
||||||
<string name="revanced_comments_screen_summary">Схаваць або паказаць кампаненты раздзела каментарыяў</string>
|
<string name="revanced_comments_screen_summary">Схаваць або паказаць кампаненты раздзела каментарыяў</string>
|
||||||
<string name="revanced_hide_comments_ai_chat_summary_title">Схаваць зводку чата са штучным інтэлектам</string>
|
<string name="revanced_hide_comments_ai_chat_summary_title">Схаваць зводку чата са штучным інтэлектам</string>
|
||||||
@@ -534,11 +548,11 @@ Second \"item\" text"</string>
|
|||||||
<string name="revanced_share_copy_url_success">URL скапіраваны ў буфер абмену</string>
|
<string name="revanced_share_copy_url_success">URL скапіраваны ў буфер абмену</string>
|
||||||
<string name="revanced_share_copy_url_timestamp_success">URL-адрас з пазнакай часу скапіраваны</string>
|
<string name="revanced_share_copy_url_timestamp_success">URL-адрас з пазнакай часу скапіраваны</string>
|
||||||
<string name="revanced_copy_video_url_title">Паказаць кнопку скапіравання URL відэа</string>
|
<string name="revanced_copy_video_url_title">Паказаць кнопку скапіравання URL відэа</string>
|
||||||
<string name="revanced_copy_video_url_summary_on">Кнопка паказана. Націсніце, каб скапіяваць URL відэа. Націсніце і ўтрымлівайце, каб скапіяваць з пазнакай часу</string>
|
<string name="revanced_copy_video_url_summary_on">Кнопка \"Капіяваць URL відэа\" паказана. Націсніце, каб скапіяваць URL відэа. Націсніце і ўтрымлівайце, каб скапіяваць з пазнакай часу</string>
|
||||||
<string name="revanced_copy_video_url_summary_off">Кнопка не паказваецца</string>
|
<string name="revanced_copy_video_url_summary_off">Кнопка \"Капіяваць URL відэа\" не паказана</string>
|
||||||
<string name="revanced_copy_video_url_timestamp_title">Паказаць кнопку URL-адрас з часовай пазнакай</string>
|
<string name="revanced_copy_video_url_timestamp_title">Паказаць кнопку URL-адрас з часовай пазнакай</string>
|
||||||
<string name="revanced_copy_video_url_timestamp_summary_on">Кнопка паказана. Націсніце, каб скапіяваць URL відэа з пазнакай часу. Націсніце і ўтрымлівайце, каб скапіяваць без пазнакі часу</string>
|
<string name="revanced_copy_video_url_timestamp_summary_on">Кнопка \"Капіяваць URL з пазнакай часу\" паказана. Націсніце, каб скапіяваць URL відэа з пазнакай часу. Націсніце і ўтрымлівайце, каб скапіяваць без пазнакі часу</string>
|
||||||
<string name="revanced_copy_video_url_timestamp_summary_off">Кнопка не паказваецца</string>
|
<string name="revanced_copy_video_url_timestamp_summary_off">Кнопка \"Капіяваць URL з пазнакай часу\" не паказана</string>
|
||||||
</patch>
|
</patch>
|
||||||
<patch id="interaction.dialog.removeViewerDiscretionDialogPatch">
|
<patch id="interaction.dialog.removeViewerDiscretionDialogPatch">
|
||||||
<string name="revanced_remove_viewer_discretion_dialog_title">Выдаліць дыялогавае акно права прагляду</string>
|
<string name="revanced_remove_viewer_discretion_dialog_title">Выдаліць дыялогавае акно права прагляду</string>
|
||||||
@@ -547,7 +561,7 @@ Second \"item\" text"</string>
|
|||||||
<string name="revanced_remove_viewer_discretion_dialog_user_dialog_message">Гэта не абыходзіць узроставае абмежаванне. Ён проста прымае гэта аўтаматычна.</string>
|
<string name="revanced_remove_viewer_discretion_dialog_user_dialog_message">Гэта не абыходзіць узроставае абмежаванне. Ён проста прымае гэта аўтаматычна.</string>
|
||||||
</patch>
|
</patch>
|
||||||
<patch id="layout.hide.signintotv.disableSignInToTvPopupPatch">
|
<patch id="layout.hide.signintotv.disableSignInToTvPopupPatch">
|
||||||
<string name="revanced_disable_signin_to_tv_popup_title">Адключыць усплывальнае акно «Уваход у ТБ»</string>
|
<string name="revanced_disable_signin_to_tv_popup_title">Адключыць усплываючае акно \"Увайсці ў ТБ\"</string>
|
||||||
<string name="revanced_disable_signin_to_tv_popup_summary_on">Усплывальнае акно «Уваход у ТБ» адключана</string>
|
<string name="revanced_disable_signin_to_tv_popup_summary_on">Усплывальнае акно «Уваход у ТБ» адключана</string>
|
||||||
<string name="revanced_disable_signin_to_tv_popup_summary_off">Усплывальнае акно «Уваход у ТБ» уключана</string>
|
<string name="revanced_disable_signin_to_tv_popup_summary_off">Усплывальнае акно «Уваход у ТБ» уключана</string>
|
||||||
</patch>
|
</patch>
|
||||||
@@ -679,7 +693,7 @@ Second \"item\" text"</string>
|
|||||||
<string name="revanced_hide_download_button_summary_on">Кнопка загрузкі схавана</string>
|
<string name="revanced_hide_download_button_summary_on">Кнопка загрузкі схавана</string>
|
||||||
<string name="revanced_hide_download_button_summary_off">Паказана кнопка загрузкі</string>
|
<string name="revanced_hide_download_button_summary_off">Паказана кнопка загрузкі</string>
|
||||||
<!-- 'Hype' should be translated with the same localized wording that YouTube displays.
|
<!-- 'Hype' should be translated with the same localized wording that YouTube displays.
|
||||||
This button only shows on videos uploaded by the logged in user. -->
|
This button only shows on videos uploaded by the logged-in user. -->
|
||||||
<string name="revanced_hide_hype_button_title">Схаваць хайп</string>
|
<string name="revanced_hide_hype_button_title">Схаваць хайп</string>
|
||||||
<string name="revanced_hide_hype_button_summary_on">Кнопка Hype схаваная</string>
|
<string name="revanced_hide_hype_button_summary_on">Кнопка Hype схаваная</string>
|
||||||
<string name="revanced_hide_hype_button_summary_off">Кнопка хайпу паказана</string>
|
<string name="revanced_hide_hype_button_summary_off">Кнопка хайпу паказана</string>
|
||||||
@@ -800,10 +814,11 @@ Second \"item\" text"</string>
|
|||||||
<string name="revanced_hide_player_flyout_audio_track_title">Схаваць гукавую дарожку</string>
|
<string name="revanced_hide_player_flyout_audio_track_title">Схаваць гукавую дарожку</string>
|
||||||
<string name="revanced_hide_player_flyout_audio_track_summary_on">Меню гукавой дарожкі схавана</string>
|
<string name="revanced_hide_player_flyout_audio_track_summary_on">Меню гукавой дарожкі схавана</string>
|
||||||
<string name="revanced_hide_player_flyout_audio_track_summary_off">Адлюструецца меню гукавой дарожкі</string>
|
<string name="revanced_hide_player_flyout_audio_track_summary_off">Адлюструецца меню гукавой дарожкі</string>
|
||||||
<!-- 'Spoof video streams' should be the same translation used for 'revanced_spoof_video_streams_screen_title'. -->
|
<!-- 'Spoof video streams' should be the same translation used for 'revanced_spoof_video_streams_screen_title'.
|
||||||
|
'Android No SDK' must be kept untranslated. -->
|
||||||
<string name="revanced_hide_player_flyout_audio_track_not_available">"Меню аўдыядарожкі схавана
|
<string name="revanced_hide_player_flyout_audio_track_not_available">"Меню аўдыядарожкі схавана
|
||||||
|
|
||||||
Каб паказаць меню аўдыядарожкі, змяніце \"Падмена відэапатокаў\" на iPadOS"</string>
|
Каб паказаць меню аўдыядарожкі, зменіце \"Імітацыя відэапатокаў\" на \"Android No SDK\""</string>
|
||||||
<!-- 'Watch in VR' should be translated using the same localized wording YouTube displays for the menu item. -->
|
<!-- 'Watch in VR' should be translated using the same localized wording YouTube displays for the menu item. -->
|
||||||
<string name="revanced_hide_player_flyout_watch_in_vr_title">Схаваць гадзіннік у VR</string>
|
<string name="revanced_hide_player_flyout_watch_in_vr_title">Схаваць гадзіннік у VR</string>
|
||||||
<string name="revanced_hide_player_flyout_watch_in_vr_summary_on">Меню прагляду ў VR схавана</string>
|
<string name="revanced_hide_player_flyout_watch_in_vr_summary_on">Меню прагляду ў VR схавана</string>
|
||||||
@@ -879,13 +894,16 @@ Second \"item\" text"</string>
|
|||||||
<string name="revanced_hide_shorts_history_title">Схаваць Shorts з гісторыі праглядаў</string>
|
<string name="revanced_hide_shorts_history_title">Схаваць Shorts з гісторыі праглядаў</string>
|
||||||
<string name="revanced_hide_shorts_history_summary_on">Схавана ў гісторыі праглядаў</string>
|
<string name="revanced_hide_shorts_history_summary_on">Схавана ў гісторыі праглядаў</string>
|
||||||
<string name="revanced_hide_shorts_history_summary_off">Паказаны ў гісторыі праглядаў</string>
|
<string name="revanced_hide_shorts_history_summary_off">Паказаны ў гісторыі праглядаў</string>
|
||||||
<string name="revanced_hide_shorts_super_thanks_button_title">Схаваць кнопку «Купіць Super Thanks»</string>
|
<string name="revanced_hide_shorts_auto_dubbed_label_title">Схаваць метку \"Аўтаматычны дубляж\"</string>
|
||||||
|
<string name="revanced_hide_shorts_auto_dubbed_label_summary_on">Надпіс з аўтадубляжом схаваны</string>
|
||||||
|
<string name="revanced_hide_shorts_auto_dubbed_label_summary_off">Надпіс з аўтадубляжом паказаны</string>
|
||||||
|
<string name="revanced_hide_shorts_super_thanks_button_title">Схаваць кнопку \"Набыць Super Thanks\"</string>
|
||||||
<string name="revanced_hide_shorts_super_thanks_button_summary_on">Кнопка «Набыць Super Thanks» схавана</string>
|
<string name="revanced_hide_shorts_super_thanks_button_summary_on">Кнопка «Набыць Super Thanks» схавана</string>
|
||||||
<string name="revanced_hide_shorts_super_thanks_button_summary_off">Кнопка «Набыць Super Thanks» паказана</string>
|
<string name="revanced_hide_shorts_super_thanks_button_summary_off">Кнопка «Набыць Super Thanks» паказана</string>
|
||||||
<string name="revanced_hide_shorts_effect_button_title">Схаваць кнопку эфекту</string>
|
<string name="revanced_hide_shorts_effect_button_title">Схаваць кнопку эфекту</string>
|
||||||
<string name="revanced_hide_shorts_effect_button_summary_on">Кнопка эфекту схавана</string>
|
<string name="revanced_hide_shorts_effect_button_summary_on">Кнопка эфекту схавана</string>
|
||||||
<string name="revanced_hide_shorts_effect_button_summary_off">Кнопка эфекту паказана</string>
|
<string name="revanced_hide_shorts_effect_button_summary_off">Кнопка эфекту паказана</string>
|
||||||
<string name="revanced_hide_shorts_green_screen_button_title">Схаваць кнопку «Зялёны экран»</string>
|
<string name="revanced_hide_shorts_green_screen_button_title">Схаваць кнопку \"Зялёны экран\"</string>
|
||||||
<string name="revanced_hide_shorts_green_screen_button_summary_on">Кнопка с зелёным экраном Shorts скрыта</string>
|
<string name="revanced_hide_shorts_green_screen_button_summary_on">Кнопка с зелёным экраном Shorts скрыта</string>
|
||||||
<string name="revanced_hide_shorts_green_screen_button_summary_off">Кнопка с зелёным экраном Shorts отображается</string>
|
<string name="revanced_hide_shorts_green_screen_button_summary_off">Кнопка с зелёным экраном Shorts отображается</string>
|
||||||
<string name="revanced_hide_shorts_hashtag_button_title">Скрыть хештег-кнопку Shorts</string>
|
<string name="revanced_hide_shorts_hashtag_button_title">Скрыть хештег-кнопку Shorts</string>
|
||||||
@@ -895,10 +913,13 @@ Second \"item\" text"</string>
|
|||||||
<string name="revanced_hide_shorts_join_button_title">Схаваць кнопку «Далучыцца»</string>
|
<string name="revanced_hide_shorts_join_button_title">Схаваць кнопку «Далучыцца»</string>
|
||||||
<string name="revanced_hide_shorts_join_button_summary_on">Кнопка «Далучыцца» схавана</string>
|
<string name="revanced_hide_shorts_join_button_summary_on">Кнопка «Далучыцца» схавана</string>
|
||||||
<string name="revanced_hide_shorts_join_button_summary_off">Паказана кнопка «Далучыцца»</string>
|
<string name="revanced_hide_shorts_join_button_summary_off">Паказана кнопка «Далучыцца»</string>
|
||||||
|
<string name="revanced_hide_shorts_live_preview_title">Схаваць жывы папярэдні прагляд</string>
|
||||||
|
<string name="revanced_hide_shorts_live_preview_summary_on">Папярэдні прагляд у рэальным часе схаваны</string>
|
||||||
|
<string name="revanced_hide_shorts_live_preview_summary_off">Папярэдні прагляд у рэальным часе паказаны</string>
|
||||||
<string name="revanced_hide_shorts_location_label_title">Схаваць метку месцазнаходжання</string>
|
<string name="revanced_hide_shorts_location_label_title">Схаваць метку месцазнаходжання</string>
|
||||||
<string name="revanced_hide_shorts_location_label_summary_on">Метка месцазнаходжання схавана</string>
|
<string name="revanced_hide_shorts_location_label_summary_on">Метка месцазнаходжання схавана</string>
|
||||||
<string name="revanced_hide_shorts_location_label_summary_off">Паказана метка месцазнаходжання</string>
|
<string name="revanced_hide_shorts_location_label_summary_off">Паказана метка месцазнаходжання</string>
|
||||||
<string name="revanced_hide_shorts_new_posts_button_title">Схаваць кнопку «Новыя паведамленні»</string>
|
<string name="revanced_hide_shorts_new_posts_button_title">Схаваць кнопку \"Новыя паведамленні\"</string>
|
||||||
<string name="revanced_hide_shorts_new_posts_button_summary_on">Кнопка «Новыя паведамленні» схавана</string>
|
<string name="revanced_hide_shorts_new_posts_button_summary_on">Кнопка «Новыя паведамленні» схавана</string>
|
||||||
<string name="revanced_hide_shorts_new_posts_button_summary_off">Кнопка «Новыя паведамленні» паказана</string>
|
<string name="revanced_hide_shorts_new_posts_button_summary_off">Кнопка «Новыя паведамленні» паказана</string>
|
||||||
<string name="revanced_hide_shorts_paused_overlay_buttons_title">Схаваць прыпыненыя кнопкі накладання</string>
|
<string name="revanced_hide_shorts_paused_overlay_buttons_title">Схаваць прыпыненыя кнопкі накладання</string>
|
||||||
@@ -907,7 +928,7 @@ Second \"item\" text"</string>
|
|||||||
<string name="revanced_hide_shorts_preview_comment_title">Схаваць папярэдні прагляд каментарыя</string>
|
<string name="revanced_hide_shorts_preview_comment_title">Схаваць папярэдні прагляд каментарыя</string>
|
||||||
<string name="revanced_hide_shorts_preview_comment_summary_on">Папярэдні прагляд каментарыя схаваны</string>
|
<string name="revanced_hide_shorts_preview_comment_summary_on">Папярэдні прагляд каментарыя схаваны</string>
|
||||||
<string name="revanced_hide_shorts_preview_comment_summary_off">Паказваецца папярэдні прагляд каментарыя</string>
|
<string name="revanced_hide_shorts_preview_comment_summary_off">Паказваецца папярэдні прагляд каментарыя</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_title">Схаваць кнопку «Захаваць музыку»</string>
|
<string name="revanced_hide_shorts_save_sound_button_title">Схаваць кнопку \"Захаваць музыку\"</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_summary_on">Кнопка захавання музыкі схавана</string>
|
<string name="revanced_hide_shorts_save_sound_button_summary_on">Кнопка захавання музыкі схавана</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_summary_off">Кнопка захавання музыкі паказана</string>
|
<string name="revanced_hide_shorts_save_sound_button_summary_off">Кнопка захавання музыкі паказана</string>
|
||||||
<string name="revanced_hide_shorts_search_suggestions_title">Схаваць прапановы пошуку</string>
|
<string name="revanced_hide_shorts_search_suggestions_title">Схаваць прапановы пошуку</string>
|
||||||
@@ -1575,13 +1596,13 @@ Second \"item\" text"</string>
|
|||||||
</patch>
|
</patch>
|
||||||
<patch id="video.speed.button.playbackSpeedButtonPatch">
|
<patch id="video.speed.button.playbackSpeedButtonPatch">
|
||||||
<string name="revanced_playback_speed_dialog_button_title">Паказаць дыялогавую кнопку хуткасці</string>
|
<string name="revanced_playback_speed_dialog_button_title">Паказаць дыялогавую кнопку хуткасці</string>
|
||||||
<string name="revanced_playback_speed_dialog_button_summary_on">Кнопка паказана. Націсніце і ўтрымлівайце, каб скінуць хуткасць прайгравання да стандартнай</string>
|
<string name="revanced_playback_speed_dialog_button_summary_on">Кнопка дыялогу хуткасці паказана. Націсніце і ўтрымлівайце, каб скінуць хуткасць прайгравання да значэння па змаўчанні</string>
|
||||||
<string name="revanced_playback_speed_dialog_button_summary_off">Кнопка не паказваецца</string>
|
<string name="revanced_playback_speed_dialog_button_summary_off">Кнопка дыялогу хуткасці не паказана</string>
|
||||||
</patch>
|
</patch>
|
||||||
<patch id="video.quality.button.videoQualityDialogButtonPatch">
|
<patch id="video.quality.button.videoQualityDialogButtonPatch">
|
||||||
<string name="revanced_video_quality_dialog_button_title">Паказаць кнопку якасці відэа</string>
|
<string name="revanced_video_quality_dialog_button_title">Паказаць кнопку якасці відэа</string>
|
||||||
<string name="revanced_video_quality_dialog_button_summary_on">Кнопка паказана. Націсніце і ўтрымлівайце, каб скінуць якасць да па змаўчанні</string>
|
<string name="revanced_video_quality_dialog_button_summary_on">Кнопка якасці відэа паказана. Націсніце і ўтрымлівайце, каб скінуць якасць да значэння па змаўчанні</string>
|
||||||
<string name="revanced_video_quality_dialog_button_summary_off">Кнопка не паказваецца</string>
|
<string name="revanced_video_quality_dialog_button_summary_off">Кнопка якасці відэа не паказана</string>
|
||||||
</patch>
|
</patch>
|
||||||
<patch id="video.speed.custom.customPlaybackSpeedPatch">
|
<patch id="video.speed.custom.customPlaybackSpeedPatch">
|
||||||
<string name="revanced_custom_speed_menu_title">Меню пользовательской скорости воспроизведения</string>
|
<string name="revanced_custom_speed_menu_title">Меню пользовательской скорости воспроизведения</string>
|
||||||
|
|||||||
@@ -282,6 +282,9 @@ Second \"item\" text"</string>
|
|||||||
<string name="revanced_hide_video_recommendation_labels_title">Скриване на етикетите за препоръчани видеоклипове</string>
|
<string name="revanced_hide_video_recommendation_labels_title">Скриване на етикетите за препоръчани видеоклипове</string>
|
||||||
<string name="revanced_hide_video_recommendation_labels_summary_on">\'Хората също така гледаха\' и \'Може също да харесате\' етикетите в резултатите от търсене са скрити</string>
|
<string name="revanced_hide_video_recommendation_labels_summary_on">\'Хората също така гледаха\' и \'Може също да харесате\' етикетите в резултатите от търсене са скрити</string>
|
||||||
<string name="revanced_hide_video_recommendation_labels_summary_off">\'Хората също така гледаха\' и \'Може също да харесате\' етикетите в резултатите от търсене са показани</string>
|
<string name="revanced_hide_video_recommendation_labels_summary_off">\'Хората също така гледаха\' и \'Може също да харесате\' етикетите в резултатите от търсене са показани</string>
|
||||||
|
<string name="revanced_hide_visual_spacer_title">Скрий визуалния разделител</string>
|
||||||
|
<string name="revanced_hide_visual_spacer_summary_on">Визуалният разделител е скрит</string>
|
||||||
|
<string name="revanced_hide_visual_spacer_summary_off">Визуалният разделител е показан</string>
|
||||||
<!-- https://logos.fandom.com/wiki/YouTube/Yoodles -->
|
<!-- https://logos.fandom.com/wiki/YouTube/Yoodles -->
|
||||||
<string name="revanced_hide_doodles_title">YouTube Doodles</string>
|
<string name="revanced_hide_doodles_title">YouTube Doodles</string>
|
||||||
<string name="revanced_hide_doodles_summary_on">Анимацията на YouTube Doodles върху логото е скрита</string>
|
<string name="revanced_hide_doodles_summary_on">Анимацията на YouTube Doodles върху логото е скрита</string>
|
||||||
@@ -342,18 +345,21 @@ Second \"item\" text"</string>
|
|||||||
<string name="revanced_hide_podcast_section_title">Скриване на \"Разгледайте подкаста\"</string>
|
<string name="revanced_hide_podcast_section_title">Скриване на \"Разгледайте подкаста\"</string>
|
||||||
<string name="revanced_hide_podcast_section_summary_on">Секцията \"Разгледайте подкаста\" е скрита</string>
|
<string name="revanced_hide_podcast_section_summary_on">Секцията \"Разгледайте подкаста\" е скрита</string>
|
||||||
<string name="revanced_hide_podcast_section_summary_off">Секцията \"Разгледайте подкаста\" е показана</string>
|
<string name="revanced_hide_podcast_section_summary_off">Секцията \"Разгледайте подкаста\" е показана</string>
|
||||||
<string name="revanced_hide_featured_section_title">Скриване на избрано съдържание</string>
|
<string name="revanced_hide_featured_links_section_title">Скриване на препоръчени връзки</string>
|
||||||
<string name="revanced_hide_featured_section_summary_on">Секцията с избрано съдържание е скрита</string>
|
<string name="revanced_hide_featured_links_section_summary_on">Секцията с представени връзки е скрита</string>
|
||||||
<string name="revanced_hide_featured_section_summary_off">Секцията с избрано съдържание е показана</string>
|
<string name="revanced_hide_featured_links_section_summary_off">Секцията с представени връзки е показана</string>
|
||||||
|
<string name="revanced_hide_featured_videos_section_title">Скриване на представени видеоклипове</string>
|
||||||
|
<string name="revanced_hide_featured_videos_section_summary_on">Секцията с представени видеоклипове е скрита</string>
|
||||||
|
<string name="revanced_hide_featured_videos_section_summary_off">Секцията с представени видеоклипове е показана</string>
|
||||||
<string name="revanced_hide_info_cards_section_title">Скриване на инфо. карти</string>
|
<string name="revanced_hide_info_cards_section_title">Скриване на инфо. карти</string>
|
||||||
<string name="revanced_hide_info_cards_section_summary_on">Разделът за информационни карти е скрит</string>
|
<string name="revanced_hide_info_cards_section_summary_on">Разделът за информационни карти е скрит</string>
|
||||||
<string name="revanced_hide_info_cards_section_summary_off">Разделът за информационни карти е показан</string>
|
<string name="revanced_hide_info_cards_section_summary_off">Разделът за информационни карти е показан</string>
|
||||||
<string name="revanced_hide_key_concepts_section_title">Скриване на \"Основни концепции\"</string>
|
<string name="revanced_hide_key_concepts_section_title">Скриване на \"Основни концепции\"</string>
|
||||||
<string name="revanced_hide_key_concepts_section_summary_on">Секцията \"Основни концепции\" е скрита</string>
|
<string name="revanced_hide_key_concepts_section_summary_on">Секцията \"Основни концепции\" е скрита</string>
|
||||||
<string name="revanced_hide_key_concepts_section_summary_off">Секцията \"Основни концепции\" е показана</string>
|
<string name="revanced_hide_key_concepts_section_summary_off">Секцията \"Основни концепции\" е показана</string>
|
||||||
<string name="revanced_hide_description_subscribe_button_title">Скриване на бутона за абониране</string>
|
<string name="revanced_hide_subscribe_button_title">Скриване на бутона за абониране</string>
|
||||||
<string name="revanced_hide_description_subscribe_button_summary_on">Бутонът за абониране е скрит</string>
|
<string name="revanced_hide_subscribe_button_summary_on">Бутонът за абониране е скрит</string>
|
||||||
<string name="revanced_hide_description_subscribe_button_summary_off">Бутонът за абониране е показан</string>
|
<string name="revanced_hide_subscribe_button_summary_off">Бутонът за абониране е показан</string>
|
||||||
<string name="revanced_hide_transcript_section_title">Скриване на транскрипт</string>
|
<string name="revanced_hide_transcript_section_title">Скриване на транскрипт</string>
|
||||||
<string name="revanced_hide_transcript_section_summary_on">Разделът за транскрипция е скрит</string>
|
<string name="revanced_hide_transcript_section_summary_on">Разделът за транскрипция е скрит</string>
|
||||||
<string name="revanced_hide_transcript_section_summary_off">Разделът за транскрипция е показан</string>
|
<string name="revanced_hide_transcript_section_summary_off">Разделът за транскрипция е показан</string>
|
||||||
@@ -375,24 +381,32 @@ Second \"item\" text"</string>
|
|||||||
<string name="revanced_hide_filter_bar_feed_in_history_summary_off">Показано в историята на гледанията</string>
|
<string name="revanced_hide_filter_bar_feed_in_history_summary_off">Показано в историята на гледанията</string>
|
||||||
<string name="revanced_channel_screen_title">Страница на канала</string>
|
<string name="revanced_channel_screen_title">Страница на канала</string>
|
||||||
<string name="revanced_channel_screen_summary">Скриване или показване на компоненти на страницата на канала</string>
|
<string name="revanced_channel_screen_summary">Скриване или показване на компоненти на страницата на канала</string>
|
||||||
|
<!-- 'Community' should be translated with the same localized wording that YouTube displays. -->
|
||||||
|
<string name="revanced_hide_community_button_title">Скрий бутона за Общност</string>
|
||||||
|
<string name="revanced_hide_community_button_summary_on">Бутонът за общност е скрит</string>
|
||||||
|
<string name="revanced_hide_community_button_summary_off">Бутонът за общност е показан</string>
|
||||||
<!-- 'For You' should be translated using the same localized wording YouTube displays. -->
|
<!-- 'For You' should be translated using the same localized wording YouTube displays. -->
|
||||||
<string name="revanced_hide_for_you_shelf_title">Скриване на рафта \"За вас\"</string>
|
<string name="revanced_hide_for_you_shelf_title">Скриване на рафта \"За вас\"</string>
|
||||||
<string name="revanced_hide_for_you_shelf_summary_on">Рафтът „За Вас“ е скрит</string>
|
<string name="revanced_hide_for_you_shelf_summary_on">Рафтът „За Вас“ е скрит</string>
|
||||||
<string name="revanced_hide_for_you_shelf_summary_off">Рафтът „За Вас“ е показан</string>
|
<string name="revanced_hide_for_you_shelf_summary_off">Рафтът „За Вас“ е показан</string>
|
||||||
|
<!-- 'Join' should be translated with the same localized wording that YouTube displays. -->
|
||||||
|
<string name="revanced_hide_join_button_title">Скриване на бутона Присъединяване</string>
|
||||||
|
<string name="revanced_hide_join_button_summary_on">Бутонът Присъединяване е скрит</string>
|
||||||
|
<string name="revanced_hide_join_button_summary_off">Бутонът Присъединяване е показан</string>
|
||||||
<string name="revanced_hide_links_preview_title">Скриване на преглед на връзки</string>
|
<string name="revanced_hide_links_preview_title">Скриване на преглед на връзки</string>
|
||||||
<string name="revanced_hide_links_preview_summary_on">Прегледът на връзки е скрит</string>
|
<string name="revanced_hide_links_preview_summary_on">Прегледът на връзки е скрит</string>
|
||||||
<string name="revanced_hide_links_preview_summary_off">Прегледът на връзки е показан</string>
|
<string name="revanced_hide_links_preview_summary_off">Прегледът на връзки е показан</string>
|
||||||
<string name="revanced_hide_members_shelf_title">Скриване на рафта за членове</string>
|
<string name="revanced_hide_members_shelf_title">Скриване на рафта за членове</string>
|
||||||
<string name="revanced_hide_members_shelf_summary_on">Рафтът за членове е скрит</string>
|
<string name="revanced_hide_members_shelf_summary_on">Рафтът за членове е скрит</string>
|
||||||
<string name="revanced_hide_members_shelf_summary_off">Рафтът за членове е показан</string>
|
<string name="revanced_hide_members_shelf_summary_off">Рафтът за членове е показан</string>
|
||||||
<!-- 'Visit Community' should be translated with the same localized wording that YouTube displays. -->
|
<!-- 'Store' should be translated with the same localized wording that YouTube displays. -->
|
||||||
<string name="revanced_hide_visit_community_button_title">Скриване на бутона \"Посетете общността\"</string>
|
<string name="revanced_hide_store_button_title">Скриване на бутона Магазин</string>
|
||||||
<string name="revanced_hide_visit_community_button_summary_on">Бутонът \"Посетете общността\" е скрит</string>
|
<string name="revanced_hide_store_button_summary_on">Бутонът Магазин е скрит</string>
|
||||||
<string name="revanced_hide_visit_community_button_summary_off">Бутонът „Посетете общността“ е показан</string>
|
<string name="revanced_hide_store_button_summary_off">Бутонът Магазин е показан</string>
|
||||||
<!-- 'Visit store' should be translated with the same localized wording that YouTube displays. -->
|
<!-- 'Subscribe' should be translated with the same localized wording that YouTube displays. -->
|
||||||
<string name="revanced_hide_visit_store_button_title">Скрийте бутона „Посетете магазина“ на страниците на каналите</string>
|
<string name="revanced_hide_subscribe_button_in_channel_page_title">Скриване на бутона Абониране</string>
|
||||||
<string name="revanced_hide_visit_store_button_summary_on">Бутонът „Посетете магазина“ е скрит</string>
|
<string name="revanced_hide_subscribe_button_in_channel_page_summary_on">Бутонът Абониране е скрит</string>
|
||||||
<string name="revanced_hide_visit_store_button_summary_off">Бутонът „Посетете магазина“ е показан</string>
|
<string name="revanced_hide_subscribe_button_in_channel_page_summary_off">Бутонът Абониране е показан</string>
|
||||||
<string name="revanced_comments_screen_title">Коментари</string>
|
<string name="revanced_comments_screen_title">Коментари</string>
|
||||||
<string name="revanced_comments_screen_summary">Скриване или показване на секцията за коментари</string>
|
<string name="revanced_comments_screen_summary">Скриване или показване на секцията за коментари</string>
|
||||||
<string name="revanced_hide_comments_ai_chat_summary_title">Скриване на резюмето на AI чата</string>
|
<string name="revanced_hide_comments_ai_chat_summary_title">Скриване на резюмето на AI чата</string>
|
||||||
@@ -534,11 +548,11 @@ Second \"item\" text"</string>
|
|||||||
<string name="revanced_share_copy_url_success">Връзката е копирана в клипборда.</string>
|
<string name="revanced_share_copy_url_success">Връзката е копирана в клипборда.</string>
|
||||||
<string name="revanced_share_copy_url_timestamp_success">URL адрес с отметка за време, копиран в клипборда.</string>
|
<string name="revanced_share_copy_url_timestamp_success">URL адрес с отметка за време, копиран в клипборда.</string>
|
||||||
<string name="revanced_copy_video_url_title">Показване на бутона за копиране на URL адреса на видеоклипа</string>
|
<string name="revanced_copy_video_url_title">Показване на бутона за копиране на URL адреса на видеоклипа</string>
|
||||||
<string name="revanced_copy_video_url_summary_on">Бутонът е показан. Докоснете, за да копирате URL адреса на видеоклипа. Докоснете и задръжте, за да копирате с времеви печат</string>
|
<string name="revanced_copy_video_url_summary_on">Бутонът за копиране на URL адрес на видео е показан. Докоснете, за да копирате URL адреса на видеото. Докоснете и задръжте, за да копирате с времева отметка</string>
|
||||||
<string name="revanced_copy_video_url_summary_off">Бутонът не е показан</string>
|
<string name="revanced_copy_video_url_summary_off">Бутонът за копиране на URL адрес на видео не е показан</string>
|
||||||
<string name="revanced_copy_video_url_timestamp_title">Показване на бутона за копиране на URL адреса на времевия отпечатък на видеоклипа</string>
|
<string name="revanced_copy_video_url_timestamp_title">Показване на бутона за копиране на URL адреса на времевия отпечатък на видеоклипа</string>
|
||||||
<string name="revanced_copy_video_url_timestamp_summary_on">Бутонът е показан. Докоснете, за да копирате URL адреса на видеоклипа с времеви печат. Докоснете и задръжте, за да копирате без времеви печат</string>
|
<string name="revanced_copy_video_url_timestamp_summary_on">Бутонът за копиране на URL адрес с времева отметка е показан. Докоснете, за да копирате URL адрес на видео с времева отметка. Докоснете и задръжте, за да копирате без времева отметка</string>
|
||||||
<string name="revanced_copy_video_url_timestamp_summary_off">Бутонът не е показан</string>
|
<string name="revanced_copy_video_url_timestamp_summary_off">Бутонът за копиране на URL адрес с времева отметка не е показан</string>
|
||||||
</patch>
|
</patch>
|
||||||
<patch id="interaction.dialog.removeViewerDiscretionDialogPatch">
|
<patch id="interaction.dialog.removeViewerDiscretionDialogPatch">
|
||||||
<string name="revanced_remove_viewer_discretion_dialog_title">Прозорец за възрастово ограничение</string>
|
<string name="revanced_remove_viewer_discretion_dialog_title">Прозорец за възрастово ограничение</string>
|
||||||
@@ -547,7 +561,7 @@ Second \"item\" text"</string>
|
|||||||
<string name="revanced_remove_viewer_discretion_dialog_user_dialog_message">Тази функция не заобикаля възрастовото ограничение. Тя просто приема възрастовата граница автоматично.</string>
|
<string name="revanced_remove_viewer_discretion_dialog_user_dialog_message">Тази функция не заобикаля възрастовото ограничение. Тя просто приема възрастовата граница автоматично.</string>
|
||||||
</patch>
|
</patch>
|
||||||
<patch id="layout.hide.signintotv.disableSignInToTvPopupPatch">
|
<patch id="layout.hide.signintotv.disableSignInToTvPopupPatch">
|
||||||
<string name="revanced_disable_signin_to_tv_popup_title">Деактивиране на изскачащия прозорец „Влизане в телевизора“</string>
|
<string name="revanced_disable_signin_to_tv_popup_title">Деактивиране на изскачащия прозорец „Вход в телевизор“</string>
|
||||||
<string name="revanced_disable_signin_to_tv_popup_summary_on">Изскачащият прозорец „Влизане в телевизора“ е деактивиран</string>
|
<string name="revanced_disable_signin_to_tv_popup_summary_on">Изскачащият прозорец „Влизане в телевизора“ е деактивиран</string>
|
||||||
<string name="revanced_disable_signin_to_tv_popup_summary_off">Изскачащият прозорец „Влизане в телевизора“ е активиран</string>
|
<string name="revanced_disable_signin_to_tv_popup_summary_off">Изскачащият прозорец „Влизане в телевизора“ е активиран</string>
|
||||||
</patch>
|
</patch>
|
||||||
@@ -679,7 +693,7 @@ Second \"item\" text"</string>
|
|||||||
<string name="revanced_hide_download_button_summary_on">Бутона за изтегляне е скрит</string>
|
<string name="revanced_hide_download_button_summary_on">Бутона за изтегляне е скрит</string>
|
||||||
<string name="revanced_hide_download_button_summary_off">Бутона за изтегляне се показва</string>
|
<string name="revanced_hide_download_button_summary_off">Бутона за изтегляне се показва</string>
|
||||||
<!-- 'Hype' should be translated with the same localized wording that YouTube displays.
|
<!-- 'Hype' should be translated with the same localized wording that YouTube displays.
|
||||||
This button only shows on videos uploaded by the logged in user. -->
|
This button only shows on videos uploaded by the logged-in user. -->
|
||||||
<string name="revanced_hide_hype_button_title">Скрий хайпа</string>
|
<string name="revanced_hide_hype_button_title">Скрий хайпа</string>
|
||||||
<string name="revanced_hide_hype_button_summary_on">Бутонът за хайп е скрит</string>
|
<string name="revanced_hide_hype_button_summary_on">Бутонът за хайп е скрит</string>
|
||||||
<string name="revanced_hide_hype_button_summary_off">Бутонът за хайп е показан</string>
|
<string name="revanced_hide_hype_button_summary_off">Бутонът за хайп е показан</string>
|
||||||
@@ -800,10 +814,11 @@ Second \"item\" text"</string>
|
|||||||
<string name="revanced_hide_player_flyout_audio_track_title">Избор на Аудио</string>
|
<string name="revanced_hide_player_flyout_audio_track_title">Избор на Аудио</string>
|
||||||
<string name="revanced_hide_player_flyout_audio_track_summary_on">Менюто за избор на Аудио е скрито</string>
|
<string name="revanced_hide_player_flyout_audio_track_summary_on">Менюто за избор на Аудио е скрито</string>
|
||||||
<string name="revanced_hide_player_flyout_audio_track_summary_off">Менюто за избор на Аудио се показва</string>
|
<string name="revanced_hide_player_flyout_audio_track_summary_off">Менюто за избор на Аудио се показва</string>
|
||||||
<!-- 'Spoof video streams' should be the same translation used for 'revanced_spoof_video_streams_screen_title'. -->
|
<!-- 'Spoof video streams' should be the same translation used for 'revanced_spoof_video_streams_screen_title'.
|
||||||
|
'Android No SDK' must be kept untranslated. -->
|
||||||
<string name="revanced_hide_player_flyout_audio_track_not_available">"Менюто за аудиозапис е скрито
|
<string name="revanced_hide_player_flyout_audio_track_not_available">"Менюто за аудиозапис е скрито
|
||||||
|
|
||||||
За да покажете менюто за аудиозапис, променете „Подправяне на видео потоци“ на iPadOS"</string>
|
За да покажете менюто за аудиозапис, променете „Подправяне на видео потоци“ на „Android No SDK“"</string>
|
||||||
<!-- 'Watch in VR' should be translated using the same localized wording YouTube displays for the menu item. -->
|
<!-- 'Watch in VR' should be translated using the same localized wording YouTube displays for the menu item. -->
|
||||||
<string name="revanced_hide_player_flyout_watch_in_vr_title">Гледайте във VR</string>
|
<string name="revanced_hide_player_flyout_watch_in_vr_title">Гледайте във VR</string>
|
||||||
<string name="revanced_hide_player_flyout_watch_in_vr_summary_on">Менюто за гледане в VR е скрито</string>
|
<string name="revanced_hide_player_flyout_watch_in_vr_summary_on">Менюто за гледане в VR е скрито</string>
|
||||||
@@ -879,13 +894,16 @@ Second \"item\" text"</string>
|
|||||||
<string name="revanced_hide_shorts_history_title">Скриване на шортите в историята на гледане</string>
|
<string name="revanced_hide_shorts_history_title">Скриване на шортите в историята на гледане</string>
|
||||||
<string name="revanced_hide_shorts_history_summary_on">Скрито в историята на гледане</string>
|
<string name="revanced_hide_shorts_history_summary_on">Скрито в историята на гледане</string>
|
||||||
<string name="revanced_hide_shorts_history_summary_off">Показва се в историята на гледане</string>
|
<string name="revanced_hide_shorts_history_summary_off">Показва се в историята на гледане</string>
|
||||||
<string name="revanced_hide_shorts_super_thanks_button_title">Скриване на бутона Buy Super Thanks</string>
|
<string name="revanced_hide_shorts_auto_dubbed_label_title">Скриване на етикета „Автоматично озвучено“</string>
|
||||||
|
<string name="revanced_hide_shorts_auto_dubbed_label_summary_on">Етикетът за автоматично озвучаване е скрит</string>
|
||||||
|
<string name="revanced_hide_shorts_auto_dubbed_label_summary_off">Етикетът за автоматично озвучаване е показан</string>
|
||||||
|
<string name="revanced_hide_shorts_super_thanks_button_title">Скриване на бутона „Купете супер благодарности“</string>
|
||||||
<string name="revanced_hide_shorts_super_thanks_button_summary_on">Бутонът за Купи Super Thanks е скрит</string>
|
<string name="revanced_hide_shorts_super_thanks_button_summary_on">Бутонът за Купи Super Thanks е скрит</string>
|
||||||
<string name="revanced_hide_shorts_super_thanks_button_summary_off">Бутонът за Купи Super Thanks е показан</string>
|
<string name="revanced_hide_shorts_super_thanks_button_summary_off">Бутонът за Купи Super Thanks е показан</string>
|
||||||
<string name="revanced_hide_shorts_effect_button_title">Скрий бутона за ефект</string>
|
<string name="revanced_hide_shorts_effect_button_title">Скрий бутона за ефект</string>
|
||||||
<string name="revanced_hide_shorts_effect_button_summary_on">Бутонът за ефекти е скрит</string>
|
<string name="revanced_hide_shorts_effect_button_summary_on">Бутонът за ефекти е скрит</string>
|
||||||
<string name="revanced_hide_shorts_effect_button_summary_off">Бутонът за ефекти е видим</string>
|
<string name="revanced_hide_shorts_effect_button_summary_off">Бутонът за ефекти е видим</string>
|
||||||
<string name="revanced_hide_shorts_green_screen_button_title">Скриване на бутона Green screen</string>
|
<string name="revanced_hide_shorts_green_screen_button_title">Скриване на бутона „Зелен екран“</string>
|
||||||
<string name="revanced_hide_shorts_green_screen_button_summary_on">Бутон \"Зелен екран\" е скрит</string>
|
<string name="revanced_hide_shorts_green_screen_button_summary_on">Бутон \"Зелен екран\" е скрит</string>
|
||||||
<string name="revanced_hide_shorts_green_screen_button_summary_off">Бутон \"Зелен екран\" се показва</string>
|
<string name="revanced_hide_shorts_green_screen_button_summary_off">Бутон \"Зелен екран\" се показва</string>
|
||||||
<string name="revanced_hide_shorts_hashtag_button_title">Скриване на бутона за хаштаг</string>
|
<string name="revanced_hide_shorts_hashtag_button_title">Скриване на бутона за хаштаг</string>
|
||||||
@@ -895,10 +913,13 @@ Second \"item\" text"</string>
|
|||||||
<string name="revanced_hide_shorts_join_button_title">Скриване на бутона Join</string>
|
<string name="revanced_hide_shorts_join_button_title">Скриване на бутона Join</string>
|
||||||
<string name="revanced_hide_shorts_join_button_summary_on">Бутона за присъединяване е скрит</string>
|
<string name="revanced_hide_shorts_join_button_summary_on">Бутона за присъединяване е скрит</string>
|
||||||
<string name="revanced_hide_shorts_join_button_summary_off">Бутона за присъединяване се показва</string>
|
<string name="revanced_hide_shorts_join_button_summary_off">Бутона за присъединяване се показва</string>
|
||||||
|
<string name="revanced_hide_shorts_live_preview_title">Скриване на прегледа на живо</string>
|
||||||
|
<string name="revanced_hide_shorts_live_preview_summary_on">Прегледът на живо е скрит</string>
|
||||||
|
<string name="revanced_hide_shorts_live_preview_summary_off">Прегледът на живо е показан</string>
|
||||||
<string name="revanced_hide_shorts_location_label_title">Етикет за местоположение</string>
|
<string name="revanced_hide_shorts_location_label_title">Етикет за местоположение</string>
|
||||||
<string name="revanced_hide_shorts_location_label_summary_on">Етикет за местоположение е скрит</string>
|
<string name="revanced_hide_shorts_location_label_summary_on">Етикет за местоположение е скрит</string>
|
||||||
<string name="revanced_hide_shorts_location_label_summary_off">Етикет за местоположение се показва</string>
|
<string name="revanced_hide_shorts_location_label_summary_off">Етикет за местоположение се показва</string>
|
||||||
<string name="revanced_hide_shorts_new_posts_button_title">Скриване на бутона \"Нови публикации\"</string>
|
<string name="revanced_hide_shorts_new_posts_button_title">Скриване на бутона „Нови публикации“</string>
|
||||||
<string name="revanced_hide_shorts_new_posts_button_summary_on">Бутонът \"Нови публикации\" е скрит</string>
|
<string name="revanced_hide_shorts_new_posts_button_summary_on">Бутонът \"Нови публикации\" е скрит</string>
|
||||||
<string name="revanced_hide_shorts_new_posts_button_summary_off">Бутонът \"Нови публикации\" се показва</string>
|
<string name="revanced_hide_shorts_new_posts_button_summary_off">Бутонът \"Нови публикации\" се показва</string>
|
||||||
<string name="revanced_hide_shorts_paused_overlay_buttons_title">Показване на бутони при пауза</string>
|
<string name="revanced_hide_shorts_paused_overlay_buttons_title">Показване на бутони при пауза</string>
|
||||||
@@ -907,7 +928,7 @@ Second \"item\" text"</string>
|
|||||||
<string name="revanced_hide_shorts_preview_comment_title">Скриване на коментара за визуализация</string>
|
<string name="revanced_hide_shorts_preview_comment_title">Скриване на коментара за визуализация</string>
|
||||||
<string name="revanced_hide_shorts_preview_comment_summary_on">Коментарът за визуализация е скрит</string>
|
<string name="revanced_hide_shorts_preview_comment_summary_on">Коментарът за визуализация е скрит</string>
|
||||||
<string name="revanced_hide_shorts_preview_comment_summary_off">Показва се визуализация на коментара</string>
|
<string name="revanced_hide_shorts_preview_comment_summary_off">Показва се визуализация на коментара</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_title">Скриване на бутона Save music</string>
|
<string name="revanced_hide_shorts_save_sound_button_title">Скриване на бутона „Запазване на музика“</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_summary_on">Бутонът за запазване на музика е скрит</string>
|
<string name="revanced_hide_shorts_save_sound_button_summary_on">Бутонът за запазване на музика е скрит</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_summary_off">Показан е бутонът за запазване на музика</string>
|
<string name="revanced_hide_shorts_save_sound_button_summary_off">Показан е бутонът за запазване на музика</string>
|
||||||
<string name="revanced_hide_shorts_search_suggestions_title">Скриване на предложенията за търсене</string>
|
<string name="revanced_hide_shorts_search_suggestions_title">Скриване на предложенията за търсене</string>
|
||||||
@@ -928,7 +949,7 @@ Second \"item\" text"</string>
|
|||||||
<string name="revanced_hide_shorts_upcoming_button_title">Скриване на бутона Upcoming</string>
|
<string name="revanced_hide_shorts_upcoming_button_title">Скриване на бутона Upcoming</string>
|
||||||
<string name="revanced_hide_shorts_upcoming_button_summary_on">Бутон \"Предстоящи събития\" е скрит</string>
|
<string name="revanced_hide_shorts_upcoming_button_summary_on">Бутон \"Предстоящи събития\" е скрит</string>
|
||||||
<string name="revanced_hide_shorts_upcoming_button_summary_off">Бутон \"Предстоящи събития\" се показва</string>
|
<string name="revanced_hide_shorts_upcoming_button_summary_off">Бутон \"Предстоящи събития\" се показва</string>
|
||||||
<string name="revanced_hide_shorts_use_sound_button_title">Скриване на бутона \"Използвайте този звук\"</string>
|
<string name="revanced_hide_shorts_use_sound_button_title">Скриване на бутона „Използване на този звук“</string>
|
||||||
<string name="revanced_hide_shorts_use_sound_button_summary_on">Бутонът \"Използвайте този звук\" е скрит</string>
|
<string name="revanced_hide_shorts_use_sound_button_summary_on">Бутонът \"Използвайте този звук\" е скрит</string>
|
||||||
<string name="revanced_hide_shorts_use_sound_button_summary_off">Бутонът \"Използвайте този звук\" е показан</string>
|
<string name="revanced_hide_shorts_use_sound_button_summary_off">Бутонът \"Използвайте този звук\" е показан</string>
|
||||||
<string name="revanced_hide_shorts_use_template_button_title">Скриване на бутона „Използване на този шаблон“</string>
|
<string name="revanced_hide_shorts_use_template_button_title">Скриване на бутона „Използване на този шаблон“</string>
|
||||||
@@ -1574,13 +1595,13 @@ Second \"item\" text"</string>
|
|||||||
</patch>
|
</patch>
|
||||||
<patch id="video.speed.button.playbackSpeedButtonPatch">
|
<patch id="video.speed.button.playbackSpeedButtonPatch">
|
||||||
<string name="revanced_playback_speed_dialog_button_title">Показване бутон за скорост</string>
|
<string name="revanced_playback_speed_dialog_button_title">Показване бутон за скорост</string>
|
||||||
<string name="revanced_playback_speed_dialog_button_summary_on">Бутонът е показан. Докоснете и задръжте, за да върнете скоростта на възпроизвеждане към стойността по подразбиране</string>
|
<string name="revanced_playback_speed_dialog_button_summary_on">Бутонът за диалогов прозорец за скорост е показан. Докоснете и задръжте, за да възстановите скоростта на възпроизвеждане до по подразбиране</string>
|
||||||
<string name="revanced_playback_speed_dialog_button_summary_off">Бутонът не е показан</string>
|
<string name="revanced_playback_speed_dialog_button_summary_off">Бутонът за диалогов прозорец за скорост не е показан</string>
|
||||||
</patch>
|
</patch>
|
||||||
<patch id="video.quality.button.videoQualityDialogButtonPatch">
|
<patch id="video.quality.button.videoQualityDialogButtonPatch">
|
||||||
<string name="revanced_video_quality_dialog_button_title">Покажи бутона за качество на видеото</string>
|
<string name="revanced_video_quality_dialog_button_title">Покажи бутона за качество на видеото</string>
|
||||||
<string name="revanced_video_quality_dialog_button_summary_on">Бутонът е показан. Докоснете и задръжте, за да възстановите качеството до подразбиране</string>
|
<string name="revanced_video_quality_dialog_button_summary_on">Бутонът за качество на видеото е показан. Докоснете и задръжте, за да възстановите качеството до по подразбиране</string>
|
||||||
<string name="revanced_video_quality_dialog_button_summary_off">Бутонът не е показан</string>
|
<string name="revanced_video_quality_dialog_button_summary_off">Бутонът за качество на видеото не е показан</string>
|
||||||
</patch>
|
</patch>
|
||||||
<patch id="video.speed.custom.customPlaybackSpeedPatch">
|
<patch id="video.speed.custom.customPlaybackSpeedPatch">
|
||||||
<string name="revanced_custom_speed_menu_title">Менюто за потребителска скорост</string>
|
<string name="revanced_custom_speed_menu_title">Менюто за потребителска скорост</string>
|
||||||
|
|||||||
@@ -278,6 +278,9 @@ MicroG-এর জন্য ব্যাটারি অপ্টিমাইজ
|
|||||||
<string name="revanced_hide_video_recommendation_labels_title">ভিডিও সুপারিশ লেবেল লুকান</string>
|
<string name="revanced_hide_video_recommendation_labels_title">ভিডিও সুপারিশ লেবেল লুকান</string>
|
||||||
<string name="revanced_hide_video_recommendation_labels_summary_on">\"অন্যান্য দর্শক দেখেছেন\" এবং \"আপনার পছন্দ হতে পারে\" লেবেলগুলি অনুসন্ধান ফলাফলে লুকানো আছে</string>
|
<string name="revanced_hide_video_recommendation_labels_summary_on">\"অন্যান্য দর্শক দেখেছেন\" এবং \"আপনার পছন্দ হতে পারে\" লেবেলগুলি অনুসন্ধান ফলাফলে লুকানো আছে</string>
|
||||||
<string name="revanced_hide_video_recommendation_labels_summary_off">\"অন্যান্য দর্শক দেখেছেন\" এবং \"আপনার পছন্দ হতে পারে\" লেবেলগুলি অনুসন্ধান ফলাফলে দেখানো হয়েছে</string>
|
<string name="revanced_hide_video_recommendation_labels_summary_off">\"অন্যান্য দর্শক দেখেছেন\" এবং \"আপনার পছন্দ হতে পারে\" লেবেলগুলি অনুসন্ধান ফলাফলে দেখানো হয়েছে</string>
|
||||||
|
<string name="revanced_hide_visual_spacer_title">ভিজ্যুয়াল স্পেসার লুকান</string>
|
||||||
|
<string name="revanced_hide_visual_spacer_summary_on">ভিজ্যুয়াল স্পেসার লুকানো হয়েছে</string>
|
||||||
|
<string name="revanced_hide_visual_spacer_summary_off">ভিজ্যুয়াল স্পেসার দেখানো হয়েছে</string>
|
||||||
<!-- https://logos.fandom.com/wiki/YouTube/Yoodles -->
|
<!-- https://logos.fandom.com/wiki/YouTube/Yoodles -->
|
||||||
<string name="revanced_hide_doodles_title">YouTube Doodles छिपाएँ</string>
|
<string name="revanced_hide_doodles_title">YouTube Doodles छिपाएँ</string>
|
||||||
<string name="revanced_hide_doodles_summary_on">লোগোতে YouTube Doodles অ্যানিমেশন লুকানো আছে</string>
|
<string name="revanced_hide_doodles_summary_on">লোগোতে YouTube Doodles অ্যানিমেশন লুকানো আছে</string>
|
||||||
@@ -338,18 +341,21 @@ MicroG-এর জন্য ব্যাটারি অপ্টিমাইজ
|
|||||||
<string name="revanced_hide_podcast_section_title">\'Explore the podcast\' লুকান</string>
|
<string name="revanced_hide_podcast_section_title">\'Explore the podcast\' লুকান</string>
|
||||||
<string name="revanced_hide_podcast_section_summary_on">Explore the podcast বিভাগটি লুকানো আছে</string>
|
<string name="revanced_hide_podcast_section_summary_on">Explore the podcast বিভাগটি লুকানো আছে</string>
|
||||||
<string name="revanced_hide_podcast_section_summary_off">Explore the podcast বিভাগটি দেখানো হয়েছে</string>
|
<string name="revanced_hide_podcast_section_summary_off">Explore the podcast বিভাগটি দেখানো হয়েছে</string>
|
||||||
<string name="revanced_hide_featured_section_title">বিশেষ বিষয়বস্তু লুকান</string>
|
<string name="revanced_hide_featured_links_section_title">ফিচার লিঙ্ক লুকান</string>
|
||||||
<string name="revanced_hide_featured_section_summary_on">বিশেষ বিষয়বস্তু বিভাগ লুকানো আছে</string>
|
<string name="revanced_hide_featured_links_section_summary_on">বিশেষ লিঙ্ক বিভাগ লুকানো আছে</string>
|
||||||
<string name="revanced_hide_featured_section_summary_off">বিশেষ বিষয়বস্তু বিভাগ দেখানো হচ্ছে</string>
|
<string name="revanced_hide_featured_links_section_summary_off">বিশেষ লিঙ্ক বিভাগ দেখানো আছে</string>
|
||||||
|
<string name="revanced_hide_featured_videos_section_title">বিশেষ ভিডিও লুকান</string>
|
||||||
|
<string name="revanced_hide_featured_videos_section_summary_on">বিশেষ ভিডিও বিভাগ লুকানো আছে</string>
|
||||||
|
<string name="revanced_hide_featured_videos_section_summary_off">বিশেষ ভিডিও বিভাগ দেখানো আছে</string>
|
||||||
<string name="revanced_hide_info_cards_section_title">তথ্য কার্ড লুকান</string>
|
<string name="revanced_hide_info_cards_section_title">তথ্য কার্ড লুকান</string>
|
||||||
<string name="revanced_hide_info_cards_section_summary_on">তথ্য কার্ড সেকশন লুকিয়ে রয়েছে</string>
|
<string name="revanced_hide_info_cards_section_summary_on">তথ্য কার্ড সেকশন লুকিয়ে রয়েছে</string>
|
||||||
<string name="revanced_hide_info_cards_section_summary_off">তথ্য কার্ড সেকশন প্রদর্শিত হয়েছে</string>
|
<string name="revanced_hide_info_cards_section_summary_off">তথ্য কার্ড সেকশন প্রদর্শিত হয়েছে</string>
|
||||||
<string name="revanced_hide_key_concepts_section_title">\'Key concepts\' লুকান</string>
|
<string name="revanced_hide_key_concepts_section_title">\'Key concepts\' লুকান</string>
|
||||||
<string name="revanced_hide_key_concepts_section_summary_on">Key concepts বিভাগটি লুকানো আছে</string>
|
<string name="revanced_hide_key_concepts_section_summary_on">Key concepts বিভাগটি লুকানো আছে</string>
|
||||||
<string name="revanced_hide_key_concepts_section_summary_off">Key concepts বিভাগটি দেখানো হয়েছে</string>
|
<string name="revanced_hide_key_concepts_section_summary_off">Key concepts বিভাগটি দেখানো হয়েছে</string>
|
||||||
<string name="revanced_hide_description_subscribe_button_title">সদস্যতা বোতাম লুকান</string>
|
<string name="revanced_hide_subscribe_button_title">সাবস্ক্রাইব বোতাম লুকান</string>
|
||||||
<string name="revanced_hide_description_subscribe_button_summary_on">সাবস্ক্রাইব বাটন লুকানো আছে</string>
|
<string name="revanced_hide_subscribe_button_summary_on">সাবস্ক্রাইব বোতাম লুকানো আছে</string>
|
||||||
<string name="revanced_hide_description_subscribe_button_summary_off">সাবস্ক্রাইব বাটন দেখানো আছে</string>
|
<string name="revanced_hide_subscribe_button_summary_off">সাবস্ক্রাইব বোতাম দেখানো আছে</string>
|
||||||
<string name="revanced_hide_transcript_section_title">নথি লুকান</string>
|
<string name="revanced_hide_transcript_section_title">নথি লুকান</string>
|
||||||
<string name="revanced_hide_transcript_section_summary_on">ট্রান্সস্ক্রিপ্ট বিভাগ লুকিয়ে রয়েছে</string>
|
<string name="revanced_hide_transcript_section_summary_on">ট্রান্সস্ক্রিপ্ট বিভাগ লুকিয়ে রয়েছে</string>
|
||||||
<string name="revanced_hide_transcript_section_summary_off">ট্রান্সস্ক্রিপ্ট বিভাগ প্রদর্শিত হয়েছে</string>
|
<string name="revanced_hide_transcript_section_summary_off">ট্রান্সস্ক্রিপ্ট বিভাগ প্রদর্শিত হয়েছে</string>
|
||||||
@@ -371,24 +377,32 @@ MicroG-এর জন্য ব্যাটারি অপ্টিমাইজ
|
|||||||
<string name="revanced_hide_filter_bar_feed_in_history_summary_off">দেখার ইতিহাসে দেখানো হয়েছে</string>
|
<string name="revanced_hide_filter_bar_feed_in_history_summary_off">দেখার ইতিহাসে দেখানো হয়েছে</string>
|
||||||
<string name="revanced_channel_screen_title">চ্যানেল পৃষ্ঠা</string>
|
<string name="revanced_channel_screen_title">চ্যানেল পৃষ্ঠা</string>
|
||||||
<string name="revanced_channel_screen_summary">চ্যানেল পৃষ্ঠার উপাদানগুলি লুকান বা দেখান</string>
|
<string name="revanced_channel_screen_summary">চ্যানেল পৃষ্ঠার উপাদানগুলি লুকান বা দেখান</string>
|
||||||
|
<!-- 'Community' should be translated with the same localized wording that YouTube displays. -->
|
||||||
|
<string name="revanced_hide_community_button_title">কমিউনিটি বোতাম লুকান</string>
|
||||||
|
<string name="revanced_hide_community_button_summary_on">কমিউনিটি বোতাম লুকানো আছে</string>
|
||||||
|
<string name="revanced_hide_community_button_summary_off">কমিউনিটি বোতাম দেখানো আছে</string>
|
||||||
<!-- 'For You' should be translated using the same localized wording YouTube displays. -->
|
<!-- 'For You' should be translated using the same localized wording YouTube displays. -->
|
||||||
<string name="revanced_hide_for_you_shelf_title">\'আপনার জন্য\' শেল্ফ লুকান</string>
|
<string name="revanced_hide_for_you_shelf_title">\'আপনার জন্য\' শেল্ফ লুকান</string>
|
||||||
<string name="revanced_hide_for_you_shelf_summary_on">আপনার জন্য শেল্ফ লুকানো আছে</string>
|
<string name="revanced_hide_for_you_shelf_summary_on">আপনার জন্য শেল্ফ লুকানো আছে</string>
|
||||||
<string name="revanced_hide_for_you_shelf_summary_off">আপনার জন্য শেল্ফ দেখানো আছে</string>
|
<string name="revanced_hide_for_you_shelf_summary_off">আপনার জন্য শেল্ফ দেখানো আছে</string>
|
||||||
|
<!-- 'Join' should be translated with the same localized wording that YouTube displays. -->
|
||||||
|
<string name="revanced_hide_join_button_title">যোগদান বোতাম লুকান</string>
|
||||||
|
<string name="revanced_hide_join_button_summary_on">যোগদান বোতাম লুকানো আছে</string>
|
||||||
|
<string name="revanced_hide_join_button_summary_off">যোগদান বোতাম দেখানো আছে</string>
|
||||||
<string name="revanced_hide_links_preview_title">লিঙ্ক পূর্বরূপ লুকান</string>
|
<string name="revanced_hide_links_preview_title">লিঙ্ক পূর্বরূপ লুকান</string>
|
||||||
<string name="revanced_hide_links_preview_summary_on">লিঙ্ক পূর্বরূপ লুকানো আছে</string>
|
<string name="revanced_hide_links_preview_summary_on">লিঙ্ক পূর্বরূপ লুকানো আছে</string>
|
||||||
<string name="revanced_hide_links_preview_summary_off">লিঙ্ক পূর্বরূপ দেখানো আছে</string>
|
<string name="revanced_hide_links_preview_summary_off">লিঙ্ক পূর্বরূপ দেখানো আছে</string>
|
||||||
<string name="revanced_hide_members_shelf_title">সদস্য শেল্ফ লুকান</string>
|
<string name="revanced_hide_members_shelf_title">সদস্য শেল্ফ লুকান</string>
|
||||||
<string name="revanced_hide_members_shelf_summary_on">সদস্য শেল্ফ লুকানো আছে</string>
|
<string name="revanced_hide_members_shelf_summary_on">সদস্য শেল্ফ লুকানো আছে</string>
|
||||||
<string name="revanced_hide_members_shelf_summary_off">সদস্যদের শেল্ফ দেখানো হয়েছে</string>
|
<string name="revanced_hide_members_shelf_summary_off">সদস্যদের শেল্ফ দেখানো হয়েছে</string>
|
||||||
<!-- 'Visit Community' should be translated with the same localized wording that YouTube displays. -->
|
<!-- 'Store' should be translated with the same localized wording that YouTube displays. -->
|
||||||
<string name="revanced_hide_visit_community_button_title">\'কমিউনিটি দেখুন\' বোতাম লুকান</string>
|
<string name="revanced_hide_store_button_title">স্টোর বোতাম লুকান</string>
|
||||||
<string name="revanced_hide_visit_community_button_summary_on">\'কমিউনিটি দেখুন\' বোতাম লুকানো হয়েছে</string>
|
<string name="revanced_hide_store_button_summary_on">স্টোর বোতাম লুকানো আছে</string>
|
||||||
<string name="revanced_hide_visit_community_button_summary_off">কমিউনিটি ভিজিট বাটন দেখানো আছে</string>
|
<string name="revanced_hide_store_button_summary_off">স্টোর বোতাম দেখানো আছে</string>
|
||||||
<!-- 'Visit store' should be translated with the same localized wording that YouTube displays. -->
|
<!-- 'Subscribe' should be translated with the same localized wording that YouTube displays. -->
|
||||||
<string name="revanced_hide_visit_store_button_title">চ্যানেল পাতায় \'স্টোরে যান\' বোতাম লুকান</string>
|
<string name="revanced_hide_subscribe_button_in_channel_page_title">সাবস্ক্রাইব বোতাম লুকান</string>
|
||||||
<string name="revanced_hide_visit_store_button_summary_on">স্টোর ভিজিট বাটন লুকানো আছে</string>
|
<string name="revanced_hide_subscribe_button_in_channel_page_summary_on">সাবস্ক্রাইব বোতাম লুকানো আছে</string>
|
||||||
<string name="revanced_hide_visit_store_button_summary_off">স্টোর ভিজিট বাটন দেখানো আছে</string>
|
<string name="revanced_hide_subscribe_button_in_channel_page_summary_off">সাবস্ক্রাইব বোতাম দেখানো আছে</string>
|
||||||
<string name="revanced_comments_screen_title">মন্তব্য</string>
|
<string name="revanced_comments_screen_title">মন্তব্য</string>
|
||||||
<string name="revanced_comments_screen_summary">মন্তব্য বিভাগের উপাদানগুলি লুকান বা দেখান৷</string>
|
<string name="revanced_comments_screen_summary">মন্তব্য বিভাগের উপাদানগুলি লুকান বা দেখান৷</string>
|
||||||
<string name="revanced_hide_comments_ai_chat_summary_title">এআই চ্যাট সারাংশ লুকান</string>
|
<string name="revanced_hide_comments_ai_chat_summary_title">এআই চ্যাট সারাংশ লুকান</string>
|
||||||
@@ -530,11 +544,11 @@ MicroG-এর জন্য ব্যাটারি অপ্টিমাইজ
|
|||||||
<string name="revanced_share_copy_url_success">ক্লিপবোর্ডে URL অনুলিপি করা হয়েছে</string>
|
<string name="revanced_share_copy_url_success">ক্লিপবোর্ডে URL অনুলিপি করা হয়েছে</string>
|
||||||
<string name="revanced_share_copy_url_timestamp_success">টাইমস্ট্যাম্প সহ URL অনুলিপি করা হয়েছে</string>
|
<string name="revanced_share_copy_url_timestamp_success">টাইমস্ট্যাম্প সহ URL অনুলিপি করা হয়েছে</string>
|
||||||
<string name="revanced_copy_video_url_title">ভিডিও URL অনুলিপি বোতাম দেখান</string>
|
<string name="revanced_copy_video_url_title">ভিডিও URL অনুলিপি বোতাম দেখান</string>
|
||||||
<string name="revanced_copy_video_url_summary_on">বোতামটি দেখানো হয়েছে। ভিডিও URL কপি করতে আলতো চাপুন। টাইমস্ট্যাম্প সহ কপি করতে টিপুন এবং ধরে রাখুন।</string>
|
<string name="revanced_copy_video_url_summary_on">ভিডিও ইউআরএল কপি বোতাম দেখানো আছে। ভিডিও ইউআরএল কপি করতে ট্যাপ করুন। টাইমস্ট্যাম্প সহ কপি করতে ট্যাপ করে ধরে রাখুন</string>
|
||||||
<string name="revanced_copy_video_url_summary_off">বোতাম প্রদর্শিত হয়নি</string>
|
<string name="revanced_copy_video_url_summary_off">ভিডিও ইউআরএল কপি বোতাম দেখানো নেই</string>
|
||||||
<string name="revanced_copy_video_url_timestamp_title">টাইমস্ট্যাম্প URL অনুলিপি বোতাম দেখান</string>
|
<string name="revanced_copy_video_url_timestamp_title">টাইমস্ট্যাম্প URL অনুলিপি বোতাম দেখান</string>
|
||||||
<string name="revanced_copy_video_url_timestamp_summary_on">বোতামটি দেখানো হয়েছে। টাইমস্ট্যাম্প সহ ভিডিও URL কপি করতে আলতো চাপুন। টাইমস্ট্যাম্প ছাড়া কপি করতে টিপুন এবং ধরে রাখুন।</string>
|
<string name="revanced_copy_video_url_timestamp_summary_on">টাইমস্ট্যাম্প ইউআরএল কপি বোতাম দেখানো আছে। টাইমস্ট্যাম্প সহ ভিডিও ইউআরএল কপি করতে ট্যাপ করুন। টাইমস্ট্যাম্প ছাড়া কপি করতে ট্যাপ করে ধরে রাখুন</string>
|
||||||
<string name="revanced_copy_video_url_timestamp_summary_off">বোতাম প্রদর্শিত হয়নি</string>
|
<string name="revanced_copy_video_url_timestamp_summary_off">টাইমস্ট্যাম্প ইউআরএল কপি বোতাম দেখানো নেই</string>
|
||||||
</patch>
|
</patch>
|
||||||
<patch id="interaction.dialog.removeViewerDiscretionDialogPatch">
|
<patch id="interaction.dialog.removeViewerDiscretionDialogPatch">
|
||||||
<string name="revanced_remove_viewer_discretion_dialog_title">দর্শকের বিচক্ষণতা ডায়ালগ সরান</string>
|
<string name="revanced_remove_viewer_discretion_dialog_title">দর্শকের বিচক্ষণতা ডায়ালগ সরান</string>
|
||||||
@@ -543,7 +557,7 @@ MicroG-এর জন্য ব্যাটারি অপ্টিমাইজ
|
|||||||
<string name="revanced_remove_viewer_discretion_dialog_user_dialog_message">এটি বয়সের সীমাবদ্ধতাকে বাইপাস করে না। এটা শুধু স্বয়ংক্রিয়ভাবে গ্রহণ করে।</string>
|
<string name="revanced_remove_viewer_discretion_dialog_user_dialog_message">এটি বয়সের সীমাবদ্ধতাকে বাইপাস করে না। এটা শুধু স্বয়ংক্রিয়ভাবে গ্রহণ করে।</string>
|
||||||
</patch>
|
</patch>
|
||||||
<patch id="layout.hide.signintotv.disableSignInToTvPopupPatch">
|
<patch id="layout.hide.signintotv.disableSignInToTvPopupPatch">
|
||||||
<string name="revanced_disable_signin_to_tv_popup_title">টিভিতে সাইন ইন পপআপ অক্ষম করুন</string>
|
<string name="revanced_disable_signin_to_tv_popup_title">\'টিভি-তে সাইন ইন করুন\' পপআপ নিষ্ক্রিয় করুন</string>
|
||||||
<string name="revanced_disable_signin_to_tv_popup_summary_on">টিভিতে সাইন ইন পপআপ অক্ষম করা হয়েছে</string>
|
<string name="revanced_disable_signin_to_tv_popup_summary_on">টিভিতে সাইন ইন পপআপ অক্ষম করা হয়েছে</string>
|
||||||
<string name="revanced_disable_signin_to_tv_popup_summary_off">টিভিতে সাইন ইন পপআপ সক্ষম করা হয়েছে</string>
|
<string name="revanced_disable_signin_to_tv_popup_summary_off">টিভিতে সাইন ইন পপআপ সক্ষম করা হয়েছে</string>
|
||||||
</patch>
|
</patch>
|
||||||
@@ -675,7 +689,7 @@ MicroG-এর জন্য ব্যাটারি অপ্টিমাইজ
|
|||||||
<string name="revanced_hide_download_button_summary_on">ডাউনলোড বোতাম লুকানো আছে</string>
|
<string name="revanced_hide_download_button_summary_on">ডাউনলোড বোতাম লুকানো আছে</string>
|
||||||
<string name="revanced_hide_download_button_summary_off">ডাউনলোড বোতাম দেখানো হয়েছে</string>
|
<string name="revanced_hide_download_button_summary_off">ডাউনলোড বোতাম দেখানো হয়েছে</string>
|
||||||
<!-- 'Hype' should be translated with the same localized wording that YouTube displays.
|
<!-- 'Hype' should be translated with the same localized wording that YouTube displays.
|
||||||
This button only shows on videos uploaded by the logged in user. -->
|
This button only shows on videos uploaded by the logged-in user. -->
|
||||||
<string name="revanced_hide_hype_button_title">হাইপ লুকান</string>
|
<string name="revanced_hide_hype_button_title">হাইপ লুকান</string>
|
||||||
<string name="revanced_hide_hype_button_summary_on">হাইপ বোতাম লুকানো আছে</string>
|
<string name="revanced_hide_hype_button_summary_on">হাইপ বোতাম লুকানো আছে</string>
|
||||||
<string name="revanced_hide_hype_button_summary_off">হাইপ বাটন দেখানো হয়েছে</string>
|
<string name="revanced_hide_hype_button_summary_off">হাইপ বাটন দেখানো হয়েছে</string>
|
||||||
@@ -796,10 +810,11 @@ MicroG-এর জন্য ব্যাটারি অপ্টিমাইজ
|
|||||||
<string name="revanced_hide_player_flyout_audio_track_title">অডিও ট্র্যাক লুকান</string>
|
<string name="revanced_hide_player_flyout_audio_track_title">অডিও ট্র্যাক লুকান</string>
|
||||||
<string name="revanced_hide_player_flyout_audio_track_summary_on">অডিও ট্র্যাক মেনু লুকানো আছে</string>
|
<string name="revanced_hide_player_flyout_audio_track_summary_on">অডিও ট্র্যাক মেনু লুকানো আছে</string>
|
||||||
<string name="revanced_hide_player_flyout_audio_track_summary_off">অডিও ট্র্যাক মেনু দেখানো হয়</string>
|
<string name="revanced_hide_player_flyout_audio_track_summary_off">অডিও ট্র্যাক মেনু দেখানো হয়</string>
|
||||||
<!-- 'Spoof video streams' should be the same translation used for 'revanced_spoof_video_streams_screen_title'. -->
|
<!-- 'Spoof video streams' should be the same translation used for 'revanced_spoof_video_streams_screen_title'.
|
||||||
|
'Android No SDK' must be kept untranslated. -->
|
||||||
<string name="revanced_hide_player_flyout_audio_track_not_available">"অডিও ট্র্যাক মেনু লুকানো আছে
|
<string name="revanced_hide_player_flyout_audio_track_not_available">"অডিও ট্র্যাক মেনু লুকানো আছে
|
||||||
|
|
||||||
অডিও ট্র্যাক মেনু দেখানোর জন্য, 'ভিডিও স্ট্রিম স্পুফ করুন' কে iPadOS এ পরিবর্তন করুন"</string>
|
অডিও ট্র্যাক মেনু দেখাতে, 'Spoof video streams' কে 'Android No SDK'-তে পরিবর্তন করুন।"</string>
|
||||||
<!-- 'Watch in VR' should be translated using the same localized wording YouTube displays for the menu item. -->
|
<!-- 'Watch in VR' should be translated using the same localized wording YouTube displays for the menu item. -->
|
||||||
<string name="revanced_hide_player_flyout_watch_in_vr_title">ভিআর-এ ঘড়ি লুকান</string>
|
<string name="revanced_hide_player_flyout_watch_in_vr_title">ভিআর-এ ঘড়ি লুকান</string>
|
||||||
<string name="revanced_hide_player_flyout_watch_in_vr_summary_on">ভিআর মেনুতে দেখুন লুকানো আছে</string>
|
<string name="revanced_hide_player_flyout_watch_in_vr_summary_on">ভিআর মেনুতে দেখুন লুকানো আছে</string>
|
||||||
@@ -875,13 +890,16 @@ MicroG-এর জন্য ব্যাটারি অপ্টিমাইজ
|
|||||||
<string name="revanced_hide_shorts_history_title">Shortsগুলিকে ওয়াচ ইতিহাসে লুকান</string>
|
<string name="revanced_hide_shorts_history_title">Shortsগুলিকে ওয়াচ ইতিহাসে লুকান</string>
|
||||||
<string name="revanced_hide_shorts_history_summary_on">ওয়াচ হিস্ট্রিতে লুকানো</string>
|
<string name="revanced_hide_shorts_history_summary_on">ওয়াচ হিস্ট্রিতে লুকানো</string>
|
||||||
<string name="revanced_hide_shorts_history_summary_off">ওয়াচ ইতিহাসে দেখানো</string>
|
<string name="revanced_hide_shorts_history_summary_off">ওয়াচ ইতিহাসে দেখানো</string>
|
||||||
<string name="revanced_hide_shorts_super_thanks_button_title">সুপার থ্যাঙ্কস বোতামটি লুকান</string>
|
<string name="revanced_hide_shorts_auto_dubbed_label_title">\'স্বয়ংক্রিয়-ডাবড\' লেবেল লুকান</string>
|
||||||
|
<string name="revanced_hide_shorts_auto_dubbed_label_summary_on">স্বয়ংক্রিয় ডাব করা লেবেল লুকানো হয়েছে</string>
|
||||||
|
<string name="revanced_hide_shorts_auto_dubbed_label_summary_off">স্বয়ংক্রিয় ডাব করা লেবেল দেখা যাচ্ছে</string>
|
||||||
|
<string name="revanced_hide_shorts_super_thanks_button_title">\'সুপার থ্যাঙ্কস কিনুন\' বোতাম লুকান</string>
|
||||||
<string name="revanced_hide_shorts_super_thanks_button_summary_on">সুপার থ্যাঙ্কস কিনুন বোতামটি লুকানো আছে</string>
|
<string name="revanced_hide_shorts_super_thanks_button_summary_on">সুপার থ্যাঙ্কস কিনুন বোতামটি লুকানো আছে</string>
|
||||||
<string name="revanced_hide_shorts_super_thanks_button_summary_off">সুপার থ্যাঙ্কস কিনুন বোতামটি দেখানো হয়েছে</string>
|
<string name="revanced_hide_shorts_super_thanks_button_summary_off">সুপার থ্যাঙ্কস কিনুন বোতামটি দেখানো হয়েছে</string>
|
||||||
<string name="revanced_hide_shorts_effect_button_title">ইফেক্ট বোতাম লুকান</string>
|
<string name="revanced_hide_shorts_effect_button_title">ইফেক্ট বোতাম লুকান</string>
|
||||||
<string name="revanced_hide_shorts_effect_button_summary_on">ইফেক্ট বাটন লুকানো আছে</string>
|
<string name="revanced_hide_shorts_effect_button_summary_on">ইফেক্ট বাটন লুকানো আছে</string>
|
||||||
<string name="revanced_hide_shorts_effect_button_summary_off">ইফেক্ট বাটন দেখানো আছে</string>
|
<string name="revanced_hide_shorts_effect_button_summary_off">ইফেক্ট বাটন দেখানো আছে</string>
|
||||||
<string name="revanced_hide_shorts_green_screen_button_title">গ্রিন স্ক্রিন বোতামটি লুকান</string>
|
<string name="revanced_hide_shorts_green_screen_button_title">\'গ্রিন স্ক্রিন\' বোতাম লুকান</string>
|
||||||
<string name="revanced_hide_shorts_green_screen_button_summary_on">সবুজ পর্দা বোতাম লুকানো আছে</string>
|
<string name="revanced_hide_shorts_green_screen_button_summary_on">সবুজ পর্দা বোতাম লুকানো আছে</string>
|
||||||
<string name="revanced_hide_shorts_green_screen_button_summary_off">সবুজ পর্দা বোতাম দেখানো হচ্ছে</string>
|
<string name="revanced_hide_shorts_green_screen_button_summary_off">সবুজ পর্দা বোতাম দেখানো হচ্ছে</string>
|
||||||
<string name="revanced_hide_shorts_hashtag_button_title">হ্যাশট্যাগ বোতাম লুকান</string>
|
<string name="revanced_hide_shorts_hashtag_button_title">হ্যাশট্যাগ বোতাম লুকান</string>
|
||||||
@@ -891,10 +909,13 @@ MicroG-এর জন্য ব্যাটারি অপ্টিমাইজ
|
|||||||
<string name="revanced_hide_shorts_join_button_title">সামিল হও বোতামটি লুকান</string>
|
<string name="revanced_hide_shorts_join_button_title">সামিল হও বোতামটি লুকান</string>
|
||||||
<string name="revanced_hide_shorts_join_button_summary_on">জয়েন করুন বোতাম লুকিয়ে রয়েছে</string>
|
<string name="revanced_hide_shorts_join_button_summary_on">জয়েন করুন বোতাম লুকিয়ে রয়েছে</string>
|
||||||
<string name="revanced_hide_shorts_join_button_summary_off">জয়েন করুন বোতাম প্রদর্শিত হয়েছে</string>
|
<string name="revanced_hide_shorts_join_button_summary_off">জয়েন করুন বোতাম প্রদর্শিত হয়েছে</string>
|
||||||
|
<string name="revanced_hide_shorts_live_preview_title">সরাসরি পূর্বরূপ লুকান</string>
|
||||||
|
<string name="revanced_hide_shorts_live_preview_summary_on">লাইভ প্রিভিউ লুকানো আছে</string>
|
||||||
|
<string name="revanced_hide_shorts_live_preview_summary_off">লাইভ প্রিভিউ দেখানো হয়েছে</string>
|
||||||
<string name="revanced_hide_shorts_location_label_title">অবস্থান লেবেল লুকান</string>
|
<string name="revanced_hide_shorts_location_label_title">অবস্থান লেবেল লুকান</string>
|
||||||
<string name="revanced_hide_shorts_location_label_summary_on">অবস্থান লেবেল লুকিয়ে রয়েছে</string>
|
<string name="revanced_hide_shorts_location_label_summary_on">অবস্থান লেবেল লুকিয়ে রয়েছে</string>
|
||||||
<string name="revanced_hide_shorts_location_label_summary_off">অবস্থান লেবেল প্রদর্শিত হয়েছে</string>
|
<string name="revanced_hide_shorts_location_label_summary_off">অবস্থান লেবেল প্রদর্শিত হয়েছে</string>
|
||||||
<string name="revanced_hide_shorts_new_posts_button_title">নতুন পোস্ট বোতাম লুকান</string>
|
<string name="revanced_hide_shorts_new_posts_button_title">\'নতুন পোস্ট\' বোতাম লুকান</string>
|
||||||
<string name="revanced_hide_shorts_new_posts_button_summary_on">নতুন পোস্ট বোতাম লুকানো হয়েছে</string>
|
<string name="revanced_hide_shorts_new_posts_button_summary_on">নতুন পোস্ট বোতাম লুকানো হয়েছে</string>
|
||||||
<string name="revanced_hide_shorts_new_posts_button_summary_off">নতুন পোস্ট বোতাম দেখানো হয়েছে</string>
|
<string name="revanced_hide_shorts_new_posts_button_summary_off">নতুন পোস্ট বোতাম দেখানো হয়েছে</string>
|
||||||
<string name="revanced_hide_shorts_paused_overlay_buttons_title">থেমে থাকা ওভারলে বোতাম লুকান</string>
|
<string name="revanced_hide_shorts_paused_overlay_buttons_title">থেমে থাকা ওভারলে বোতাম লুকান</string>
|
||||||
@@ -903,7 +924,7 @@ MicroG-এর জন্য ব্যাটারি অপ্টিমাইজ
|
|||||||
<string name="revanced_hide_shorts_preview_comment_title">Preview comment লুকান</string>
|
<string name="revanced_hide_shorts_preview_comment_title">Preview comment লুকান</string>
|
||||||
<string name="revanced_hide_shorts_preview_comment_summary_on">Preview comment লুকানো আছে</string>
|
<string name="revanced_hide_shorts_preview_comment_summary_on">Preview comment লুকানো আছে</string>
|
||||||
<string name="revanced_hide_shorts_preview_comment_summary_off">Preview comment দেখানো হয়েছে</string>
|
<string name="revanced_hide_shorts_preview_comment_summary_off">Preview comment দেখানো হয়েছে</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_title">সেভ মিউজিক বোতামটি লুকান</string>
|
<string name="revanced_hide_shorts_save_sound_button_title">\'মিউজিক সেভ করুন\' বোতাম লুকান</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_summary_on">Save music বোতাম লুকানো আছে</string>
|
<string name="revanced_hide_shorts_save_sound_button_summary_on">Save music বোতাম লুকানো আছে</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_summary_off">Save music বোতাম দেখানো হচ্ছে</string>
|
<string name="revanced_hide_shorts_save_sound_button_summary_off">Save music বোতাম দেখানো হচ্ছে</string>
|
||||||
<string name="revanced_hide_shorts_search_suggestions_title">অনুসন্ধান পরামর্শগুলি লুকান</string>
|
<string name="revanced_hide_shorts_search_suggestions_title">অনুসন্ধান পরামর্শগুলি লুকান</string>
|
||||||
@@ -924,10 +945,10 @@ MicroG-এর জন্য ব্যাটারি অপ্টিমাইজ
|
|||||||
<string name="revanced_hide_shorts_upcoming_button_title">আসন্ন বোতামটি লুকান</string>
|
<string name="revanced_hide_shorts_upcoming_button_title">আসন্ন বোতামটি লুকান</string>
|
||||||
<string name="revanced_hide_shorts_upcoming_button_summary_on">আগামী বোতাম লুকানো আছে</string>
|
<string name="revanced_hide_shorts_upcoming_button_summary_on">আগামী বোতাম লুকানো আছে</string>
|
||||||
<string name="revanced_hide_shorts_upcoming_button_summary_off">আগামী বোতাম দেখানো হচ্ছে</string>
|
<string name="revanced_hide_shorts_upcoming_button_summary_off">আগামী বোতাম দেখানো হচ্ছে</string>
|
||||||
<string name="revanced_hide_shorts_use_sound_button_title">এই সাউন্ড বাটনটি লুকান</string>
|
<string name="revanced_hide_shorts_use_sound_button_title">\'এই সাউন্ড ব্যবহার করুন\' বোতাম লুকান</string>
|
||||||
<string name="revanced_hide_shorts_use_sound_button_summary_on">এই সাউন্ড বাটনটি লুকানো আছে</string>
|
<string name="revanced_hide_shorts_use_sound_button_summary_on">এই সাউন্ড বাটনটি লুকানো আছে</string>
|
||||||
<string name="revanced_hide_shorts_use_sound_button_summary_off">এই সাউন্ড বাটনটি দেখা যাচ্ছে</string>
|
<string name="revanced_hide_shorts_use_sound_button_summary_off">এই সাউন্ড বাটনটি দেখা যাচ্ছে</string>
|
||||||
<string name="revanced_hide_shorts_use_template_button_title">\"এই টেমপ্লেট ব্যবহার করুন\" বোতাম লুকান</string>
|
<string name="revanced_hide_shorts_use_template_button_title">\'এই টেমপ্লেট ব্যবহার করুন\' বোতাম লুকান</string>
|
||||||
<string name="revanced_hide_shorts_use_template_button_summary_on">এই টেমপ্লেট বাটনটি লুকানো আছে</string>
|
<string name="revanced_hide_shorts_use_template_button_summary_on">এই টেমপ্লেট বাটনটি লুকানো আছে</string>
|
||||||
<string name="revanced_hide_shorts_use_template_button_summary_off">\"এই টেমপ্লেট ব্যবহার করুন\" বোতামটি দেখানো হয়েছে</string>
|
<string name="revanced_hide_shorts_use_template_button_summary_off">\"এই টেমপ্লেট ব্যবহার করুন\" বোতামটি দেখানো হয়েছে</string>
|
||||||
<string name="revanced_hide_shorts_like_fountain_title">লাইক বোতাম ফাউন্টেন অ্যানিমেশনটি লুকান</string>
|
<string name="revanced_hide_shorts_like_fountain_title">লাইক বোতাম ফাউন্টেন অ্যানিমেশনটি লুকান</string>
|
||||||
@@ -1570,13 +1591,13 @@ DeArrow সম্পর্কে আরও জানতে এখানে ট
|
|||||||
</patch>
|
</patch>
|
||||||
<patch id="video.speed.button.playbackSpeedButtonPatch">
|
<patch id="video.speed.button.playbackSpeedButtonPatch">
|
||||||
<string name="revanced_playback_speed_dialog_button_title">স্পিড ডায়ালগ বোতাম দেখান</string>
|
<string name="revanced_playback_speed_dialog_button_title">স্পিড ডায়ালগ বোতাম দেখান</string>
|
||||||
<string name="revanced_playback_speed_dialog_button_summary_on">বোতামটি দেখানো হয়েছে। প্লেব্যাক স্পীড ডিফল্টে রিসেট করতে ট্যাপ করে ধরে রাখুন।</string>
|
<string name="revanced_playback_speed_dialog_button_summary_on">স্পিড ডায়ালগ বোতাম দেখানো আছে। প্লেব্যাক স্পিড ডিফল্টে রিসেট করতে ট্যাপ করে ধরে রাখুন</string>
|
||||||
<string name="revanced_playback_speed_dialog_button_summary_off">বোতাম প্রদর্শিত হয়নি</string>
|
<string name="revanced_playback_speed_dialog_button_summary_off">স্পিড ডায়ালগ বোতাম দেখানো নেই</string>
|
||||||
</patch>
|
</patch>
|
||||||
<patch id="video.quality.button.videoQualityDialogButtonPatch">
|
<patch id="video.quality.button.videoQualityDialogButtonPatch">
|
||||||
<string name="revanced_video_quality_dialog_button_title">ভিডিও গুণমান বোতাম দেখান</string>
|
<string name="revanced_video_quality_dialog_button_title">ভিডিও গুণমান বোতাম দেখান</string>
|
||||||
<string name="revanced_video_quality_dialog_button_summary_on">বোতামটি দেখানো হয়েছে। গুণমান ডিফল্টে রিসেট করতে ট্যাপ করে ধরে রাখুন।</string>
|
<string name="revanced_video_quality_dialog_button_summary_on">ভিডিও কোয়ালিটি বোতাম দেখানো আছে। কোয়ালিটি ডিফল্টে রিসেট করতে ট্যাপ করে ধরে রাখুন</string>
|
||||||
<string name="revanced_video_quality_dialog_button_summary_off">বোতামটি দেখানো হয়নি।</string>
|
<string name="revanced_video_quality_dialog_button_summary_off">ভিডিও কোয়ালিটি বোতাম দেখানো নেই</string>
|
||||||
</patch>
|
</patch>
|
||||||
<patch id="video.speed.custom.customPlaybackSpeedPatch">
|
<patch id="video.speed.custom.customPlaybackSpeedPatch">
|
||||||
<string name="revanced_custom_speed_menu_title">কাস্টম প্লেব্যাক গতি মেনু</string>
|
<string name="revanced_custom_speed_menu_title">কাস্টম প্লেব্যাক গতি মেনু</string>
|
||||||
|
|||||||
@@ -63,9 +63,11 @@ Second \"item\" text"</string>
|
|||||||
<!-- https://logos.fandom.com/wiki/YouTube/Yoodles -->
|
<!-- https://logos.fandom.com/wiki/YouTube/Yoodles -->
|
||||||
<!-- 'Join' should be translated using the same localized wording YouTube displays.
|
<!-- 'Join' should be translated using the same localized wording YouTube displays.
|
||||||
This appears in the video player for certain videos. -->
|
This appears in the video player for certain videos. -->
|
||||||
|
<!-- 'Community' should be translated with the same localized wording that YouTube displays. -->
|
||||||
<!-- 'For You' should be translated using the same localized wording YouTube displays. -->
|
<!-- 'For You' should be translated using the same localized wording YouTube displays. -->
|
||||||
<!-- 'Visit Community' should be translated with the same localized wording that YouTube displays. -->
|
<!-- 'Join' should be translated with the same localized wording that YouTube displays. -->
|
||||||
<!-- 'Visit store' should be translated with the same localized wording that YouTube displays. -->
|
<!-- 'Store' should be translated with the same localized wording that YouTube displays. -->
|
||||||
|
<!-- 'Subscribe' should be translated with the same localized wording that YouTube displays. -->
|
||||||
<!-- 'Component path builder strings' is the technical name for identifying the Litho UI layout items to hide. This is an advanced feature and most users will never use this. -->
|
<!-- 'Component path builder strings' is the technical name for identifying the Litho UI layout items to hide. This is an advanced feature and most users will never use this. -->
|
||||||
<!-- Translations should lanaguge similar to revanced_hide_upload_time_user_dialog_message -->
|
<!-- Translations should lanaguge similar to revanced_hide_upload_time_user_dialog_message -->
|
||||||
<!-- Translations should lanaguge similar to revanced_hide_view_count_user_dialog_message -->
|
<!-- Translations should lanaguge similar to revanced_hide_view_count_user_dialog_message -->
|
||||||
@@ -109,7 +111,7 @@ Second \"item\" text"</string>
|
|||||||
<!-- 'Remix' should be translated with the same localized wording that YouTube displays. -->
|
<!-- 'Remix' should be translated with the same localized wording that YouTube displays. -->
|
||||||
<!-- 'Download' should be translated with the same localized wording that YouTube displays. -->
|
<!-- 'Download' should be translated with the same localized wording that YouTube displays. -->
|
||||||
<!-- 'Hype' should be translated with the same localized wording that YouTube displays.
|
<!-- 'Hype' should be translated with the same localized wording that YouTube displays.
|
||||||
This button only shows on videos uploaded by the logged in user. -->
|
This button only shows on videos uploaded by the logged-in user. -->
|
||||||
<!-- 'Promote' should be translated with the same localized wording that YouTube displays. -->
|
<!-- 'Promote' should be translated with the same localized wording that YouTube displays. -->
|
||||||
<!-- 'Thanks' should be translated with the same localized wording that YouTube displays. -->
|
<!-- 'Thanks' should be translated with the same localized wording that YouTube displays. -->
|
||||||
<!-- 'Ask' should be translated with the same localized wording that YouTube displays.
|
<!-- 'Ask' should be translated with the same localized wording that YouTube displays.
|
||||||
@@ -136,7 +138,8 @@ Second \"item\" text"</string>
|
|||||||
<!-- 'Lock screen' should be translated using the same localized wording YouTube displays for the menu item. -->
|
<!-- 'Lock screen' should be translated using the same localized wording YouTube displays for the menu item. -->
|
||||||
<!-- 'Listen with YouTube Music' should be translated using the same localized wording YouTube displays for the menu item. -->
|
<!-- 'Listen with YouTube Music' should be translated using the same localized wording YouTube displays for the menu item. -->
|
||||||
<!-- 'Audio track' should be translated using the same localized wording YouTube displays for the menu item. -->
|
<!-- 'Audio track' should be translated using the same localized wording YouTube displays for the menu item. -->
|
||||||
<!-- 'Spoof video streams' should be the same translation used for 'revanced_spoof_video_streams_screen_title'. -->
|
<!-- 'Spoof video streams' should be the same translation used for 'revanced_spoof_video_streams_screen_title'.
|
||||||
|
'Android No SDK' must be kept untranslated. -->
|
||||||
<!-- 'Watch in VR' should be translated using the same localized wording YouTube displays for the menu item. -->
|
<!-- 'Watch in VR' should be translated using the same localized wording YouTube displays for the menu item. -->
|
||||||
</patch>
|
</patch>
|
||||||
<patch id="layout.buttons.overlay.hidePlayerOverlayButtonsPatch">
|
<patch id="layout.buttons.overlay.hidePlayerOverlayButtonsPatch">
|
||||||
|
|||||||
@@ -63,9 +63,11 @@ Second \"item\" text"</string>
|
|||||||
<!-- https://logos.fandom.com/wiki/YouTube/Yoodles -->
|
<!-- https://logos.fandom.com/wiki/YouTube/Yoodles -->
|
||||||
<!-- 'Join' should be translated using the same localized wording YouTube displays.
|
<!-- 'Join' should be translated using the same localized wording YouTube displays.
|
||||||
This appears in the video player for certain videos. -->
|
This appears in the video player for certain videos. -->
|
||||||
|
<!-- 'Community' should be translated with the same localized wording that YouTube displays. -->
|
||||||
<!-- 'For You' should be translated using the same localized wording YouTube displays. -->
|
<!-- 'For You' should be translated using the same localized wording YouTube displays. -->
|
||||||
<!-- 'Visit Community' should be translated with the same localized wording that YouTube displays. -->
|
<!-- 'Join' should be translated with the same localized wording that YouTube displays. -->
|
||||||
<!-- 'Visit store' should be translated with the same localized wording that YouTube displays. -->
|
<!-- 'Store' should be translated with the same localized wording that YouTube displays. -->
|
||||||
|
<!-- 'Subscribe' should be translated with the same localized wording that YouTube displays. -->
|
||||||
<!-- 'Component path builder strings' is the technical name for identifying the Litho UI layout items to hide. This is an advanced feature and most users will never use this. -->
|
<!-- 'Component path builder strings' is the technical name for identifying the Litho UI layout items to hide. This is an advanced feature and most users will never use this. -->
|
||||||
<!-- Translations should lanaguge similar to revanced_hide_upload_time_user_dialog_message -->
|
<!-- Translations should lanaguge similar to revanced_hide_upload_time_user_dialog_message -->
|
||||||
<!-- Translations should lanaguge similar to revanced_hide_view_count_user_dialog_message -->
|
<!-- Translations should lanaguge similar to revanced_hide_view_count_user_dialog_message -->
|
||||||
@@ -109,7 +111,7 @@ Second \"item\" text"</string>
|
|||||||
<!-- 'Remix' should be translated with the same localized wording that YouTube displays. -->
|
<!-- 'Remix' should be translated with the same localized wording that YouTube displays. -->
|
||||||
<!-- 'Download' should be translated with the same localized wording that YouTube displays. -->
|
<!-- 'Download' should be translated with the same localized wording that YouTube displays. -->
|
||||||
<!-- 'Hype' should be translated with the same localized wording that YouTube displays.
|
<!-- 'Hype' should be translated with the same localized wording that YouTube displays.
|
||||||
This button only shows on videos uploaded by the logged in user. -->
|
This button only shows on videos uploaded by the logged-in user. -->
|
||||||
<!-- 'Promote' should be translated with the same localized wording that YouTube displays. -->
|
<!-- 'Promote' should be translated with the same localized wording that YouTube displays. -->
|
||||||
<!-- 'Thanks' should be translated with the same localized wording that YouTube displays. -->
|
<!-- 'Thanks' should be translated with the same localized wording that YouTube displays. -->
|
||||||
<!-- 'Ask' should be translated with the same localized wording that YouTube displays.
|
<!-- 'Ask' should be translated with the same localized wording that YouTube displays.
|
||||||
@@ -136,7 +138,8 @@ Second \"item\" text"</string>
|
|||||||
<!-- 'Lock screen' should be translated using the same localized wording YouTube displays for the menu item. -->
|
<!-- 'Lock screen' should be translated using the same localized wording YouTube displays for the menu item. -->
|
||||||
<!-- 'Listen with YouTube Music' should be translated using the same localized wording YouTube displays for the menu item. -->
|
<!-- 'Listen with YouTube Music' should be translated using the same localized wording YouTube displays for the menu item. -->
|
||||||
<!-- 'Audio track' should be translated using the same localized wording YouTube displays for the menu item. -->
|
<!-- 'Audio track' should be translated using the same localized wording YouTube displays for the menu item. -->
|
||||||
<!-- 'Spoof video streams' should be the same translation used for 'revanced_spoof_video_streams_screen_title'. -->
|
<!-- 'Spoof video streams' should be the same translation used for 'revanced_spoof_video_streams_screen_title'.
|
||||||
|
'Android No SDK' must be kept untranslated. -->
|
||||||
<!-- 'Watch in VR' should be translated using the same localized wording YouTube displays for the menu item. -->
|
<!-- 'Watch in VR' should be translated using the same localized wording YouTube displays for the menu item. -->
|
||||||
</patch>
|
</patch>
|
||||||
<patch id="layout.buttons.overlay.hidePlayerOverlayButtonsPatch">
|
<patch id="layout.buttons.overlay.hidePlayerOverlayButtonsPatch">
|
||||||
|
|||||||
@@ -282,6 +282,9 @@ Povolením této možnosti se však budou zaznamenávat i některá uživatelsk
|
|||||||
<string name="revanced_hide_video_recommendation_labels_title">Skrýt štítky doporučení videí</string>
|
<string name="revanced_hide_video_recommendation_labels_title">Skrýt štítky doporučení videí</string>
|
||||||
<string name="revanced_hide_video_recommendation_labels_summary_on">Štítky „Lidé také sledovali“ a „Mohlo by se vám také líbit“ ve výsledcích vyhledávání jsou skryty</string>
|
<string name="revanced_hide_video_recommendation_labels_summary_on">Štítky „Lidé také sledovali“ a „Mohlo by se vám také líbit“ ve výsledcích vyhledávání jsou skryty</string>
|
||||||
<string name="revanced_hide_video_recommendation_labels_summary_off">Štítky „Lidé také sledovali“ a „Mohlo by se vám také líbit“ ve výsledcích vyhledávání jsou zobrazeny</string>
|
<string name="revanced_hide_video_recommendation_labels_summary_off">Štítky „Lidé také sledovali“ a „Mohlo by se vám také líbit“ ve výsledcích vyhledávání jsou zobrazeny</string>
|
||||||
|
<string name="revanced_hide_visual_spacer_title">Skrýt vizuální oddělovač</string>
|
||||||
|
<string name="revanced_hide_visual_spacer_summary_on">Vizuální oddělovač je skryt</string>
|
||||||
|
<string name="revanced_hide_visual_spacer_summary_off">Vizuální oddělovač je zobrazen</string>
|
||||||
<!-- https://logos.fandom.com/wiki/YouTube/Yoodles -->
|
<!-- https://logos.fandom.com/wiki/YouTube/Yoodles -->
|
||||||
<string name="revanced_hide_doodles_title">Skrýt YouTube Doodles</string>
|
<string name="revanced_hide_doodles_title">Skrýt YouTube Doodles</string>
|
||||||
<string name="revanced_hide_doodles_summary_on">Animace \"Doodles\" YouTube na logu je skryta</string>
|
<string name="revanced_hide_doodles_summary_on">Animace \"Doodles\" YouTube na logu je skryta</string>
|
||||||
@@ -342,18 +345,21 @@ Pokud se Doodle v současné době zobrazuje ve vaší oblasti a toto nastavení
|
|||||||
<string name="revanced_hide_podcast_section_title">Skrýt „Prozkoumat podcast“</string>
|
<string name="revanced_hide_podcast_section_title">Skrýt „Prozkoumat podcast“</string>
|
||||||
<string name="revanced_hide_podcast_section_summary_on">Sekce Prozkoumat podcast je skrytá</string>
|
<string name="revanced_hide_podcast_section_summary_on">Sekce Prozkoumat podcast je skrytá</string>
|
||||||
<string name="revanced_hide_podcast_section_summary_off">Sekce Prozkoumat podcast je zobrazena</string>
|
<string name="revanced_hide_podcast_section_summary_off">Sekce Prozkoumat podcast je zobrazena</string>
|
||||||
<string name="revanced_hide_featured_section_title">Skrýt doporučený obsah</string>
|
<string name="revanced_hide_featured_links_section_title">Skrýt doporučené odkazy</string>
|
||||||
<string name="revanced_hide_featured_section_summary_on">Sekce doporučeného obsahu je skrytá</string>
|
<string name="revanced_hide_featured_links_section_summary_on">Sekce doporučených odkazů je skrytá</string>
|
||||||
<string name="revanced_hide_featured_section_summary_off">Sekce doporučeného obsahu je zobrazena</string>
|
<string name="revanced_hide_featured_links_section_summary_off">Sekce doporučených odkazů je zobrazena</string>
|
||||||
|
<string name="revanced_hide_featured_videos_section_title">Skrýt doporučená videa</string>
|
||||||
|
<string name="revanced_hide_featured_videos_section_summary_on">Sekce doporučených videí je skrytá</string>
|
||||||
|
<string name="revanced_hide_featured_videos_section_summary_off">Sekce doporučených videí je zobrazena</string>
|
||||||
<string name="revanced_hide_info_cards_section_title">Skrýt informační karty</string>
|
<string name="revanced_hide_info_cards_section_title">Skrýt informační karty</string>
|
||||||
<string name="revanced_hide_info_cards_section_summary_on">Sekce informačních karet je skrytá</string>
|
<string name="revanced_hide_info_cards_section_summary_on">Sekce informačních karet je skrytá</string>
|
||||||
<string name="revanced_hide_info_cards_section_summary_off">Sekce informačních karet je zobrazena</string>
|
<string name="revanced_hide_info_cards_section_summary_off">Sekce informačních karet je zobrazena</string>
|
||||||
<string name="revanced_hide_key_concepts_section_title">Skrýt „Klíčové koncepty“</string>
|
<string name="revanced_hide_key_concepts_section_title">Skrýt „Klíčové koncepty“</string>
|
||||||
<string name="revanced_hide_key_concepts_section_summary_on">Sekce Klíčové koncepty je skrytá</string>
|
<string name="revanced_hide_key_concepts_section_summary_on">Sekce Klíčové koncepty je skrytá</string>
|
||||||
<string name="revanced_hide_key_concepts_section_summary_off">Sekce Klíčové koncepty je zobrazena</string>
|
<string name="revanced_hide_key_concepts_section_summary_off">Sekce Klíčové koncepty je zobrazena</string>
|
||||||
<string name="revanced_hide_description_subscribe_button_title">Skrýt tlačítko Odebírat</string>
|
<string name="revanced_hide_subscribe_button_title">Skrýt tlačítko Odebírat</string>
|
||||||
<string name="revanced_hide_description_subscribe_button_summary_on">Tlačítko Odebírat je skryto</string>
|
<string name="revanced_hide_subscribe_button_summary_on">Tlačítko Odebírat je skryté</string>
|
||||||
<string name="revanced_hide_description_subscribe_button_summary_off">Tlačítko Odebírat je zobrazeno</string>
|
<string name="revanced_hide_subscribe_button_summary_off">Tlačítko Odebírat je zobrazeno</string>
|
||||||
<string name="revanced_hide_transcript_section_title">Skrýt přepis</string>
|
<string name="revanced_hide_transcript_section_title">Skrýt přepis</string>
|
||||||
<string name="revanced_hide_transcript_section_summary_on">Sekce přepisu je skrytá</string>
|
<string name="revanced_hide_transcript_section_summary_on">Sekce přepisu je skrytá</string>
|
||||||
<string name="revanced_hide_transcript_section_summary_off">Sekce přepisu je zobrazena</string>
|
<string name="revanced_hide_transcript_section_summary_off">Sekce přepisu je zobrazena</string>
|
||||||
@@ -375,24 +381,32 @@ Pokud se Doodle v současné době zobrazuje ve vaší oblasti a toto nastavení
|
|||||||
<string name="revanced_hide_filter_bar_feed_in_history_summary_off">Zobrazeno v historii sledování</string>
|
<string name="revanced_hide_filter_bar_feed_in_history_summary_off">Zobrazeno v historii sledování</string>
|
||||||
<string name="revanced_channel_screen_title">Stránka kanálu</string>
|
<string name="revanced_channel_screen_title">Stránka kanálu</string>
|
||||||
<string name="revanced_channel_screen_summary">Skrýt nebo zobrazit komponenty stránky kanálu</string>
|
<string name="revanced_channel_screen_summary">Skrýt nebo zobrazit komponenty stránky kanálu</string>
|
||||||
|
<!-- 'Community' should be translated with the same localized wording that YouTube displays. -->
|
||||||
|
<string name="revanced_hide_community_button_title">Skrýt tlačítko Komunita</string>
|
||||||
|
<string name="revanced_hide_community_button_summary_on">Tlačítko Komunita je skryto</string>
|
||||||
|
<string name="revanced_hide_community_button_summary_off">Tlačítko Komunita je zobrazeno</string>
|
||||||
<!-- 'For You' should be translated using the same localized wording YouTube displays. -->
|
<!-- 'For You' should be translated using the same localized wording YouTube displays. -->
|
||||||
<string name="revanced_hide_for_you_shelf_title">Skrýt panel „Pro vás“</string>
|
<string name="revanced_hide_for_you_shelf_title">Skrýt panel „Pro vás“</string>
|
||||||
<string name="revanced_hide_for_you_shelf_summary_on">Polička Pro vás je skryta</string>
|
<string name="revanced_hide_for_you_shelf_summary_on">Polička Pro vás je skryta</string>
|
||||||
<string name="revanced_hide_for_you_shelf_summary_off">Polička Pro vás je zobrazena</string>
|
<string name="revanced_hide_for_you_shelf_summary_off">Polička Pro vás je zobrazena</string>
|
||||||
|
<!-- 'Join' should be translated with the same localized wording that YouTube displays. -->
|
||||||
|
<string name="revanced_hide_join_button_title">Skrýt tlačítko Připojit se</string>
|
||||||
|
<string name="revanced_hide_join_button_summary_on">Tlačítko Připojit se je skryto</string>
|
||||||
|
<string name="revanced_hide_join_button_summary_off">Tlačítko Připojit se je zobrazeno</string>
|
||||||
<string name="revanced_hide_links_preview_title">Skrýt náhled odkazů</string>
|
<string name="revanced_hide_links_preview_title">Skrýt náhled odkazů</string>
|
||||||
<string name="revanced_hide_links_preview_summary_on">Náhled odkazů je skryt</string>
|
<string name="revanced_hide_links_preview_summary_on">Náhled odkazů je skryt</string>
|
||||||
<string name="revanced_hide_links_preview_summary_off">Náhled odkazů je zobrazen</string>
|
<string name="revanced_hide_links_preview_summary_off">Náhled odkazů je zobrazen</string>
|
||||||
<string name="revanced_hide_members_shelf_title">Skrýt poličku členů</string>
|
<string name="revanced_hide_members_shelf_title">Skrýt poličku členů</string>
|
||||||
<string name="revanced_hide_members_shelf_summary_on">Polička členů je skryta</string>
|
<string name="revanced_hide_members_shelf_summary_on">Polička členů je skryta</string>
|
||||||
<string name="revanced_hide_members_shelf_summary_off">Police pro členy je zobrazena</string>
|
<string name="revanced_hide_members_shelf_summary_off">Police pro členy je zobrazena</string>
|
||||||
<!-- 'Visit Community' should be translated with the same localized wording that YouTube displays. -->
|
<!-- 'Store' should be translated with the same localized wording that YouTube displays. -->
|
||||||
<string name="revanced_hide_visit_community_button_title">Skrýt tlačítko „Navštívit komunitu“</string>
|
<string name="revanced_hide_store_button_title">Skrýt tlačítko Obchod</string>
|
||||||
<string name="revanced_hide_visit_community_button_summary_on">Tlačítko Navštívit komunitu je skryto</string>
|
<string name="revanced_hide_store_button_summary_on">Tlačítko Obchod je skryto</string>
|
||||||
<string name="revanced_hide_visit_community_button_summary_off">Tlačítko Navštívit komunitu je zobrazeno</string>
|
<string name="revanced_hide_store_button_summary_off">Tlačítko Obchod je zobrazeno</string>
|
||||||
<!-- 'Visit store' should be translated with the same localized wording that YouTube displays. -->
|
<!-- 'Subscribe' should be translated with the same localized wording that YouTube displays. -->
|
||||||
<string name="revanced_hide_visit_store_button_title">Skrýt tlačítko \'Navštívit obchod\' na stránkách kanálů</string>
|
<string name="revanced_hide_subscribe_button_in_channel_page_title">Skrýt tlačítko Odebírat</string>
|
||||||
<string name="revanced_hide_visit_store_button_summary_on">Tlačítko Navštívit obchod je skryto</string>
|
<string name="revanced_hide_subscribe_button_in_channel_page_summary_on">Tlačítko Odebírat je skryto</string>
|
||||||
<string name="revanced_hide_visit_store_button_summary_off">Tlačítko Navštívit obchod je zobrazeno</string>
|
<string name="revanced_hide_subscribe_button_in_channel_page_summary_off">Tlačítko Odebírat je zobrazeno</string>
|
||||||
<string name="revanced_comments_screen_title">Komentáře</string>
|
<string name="revanced_comments_screen_title">Komentáře</string>
|
||||||
<string name="revanced_comments_screen_summary">Skrýt nebo zobrazit komponenty sekce komentářů</string>
|
<string name="revanced_comments_screen_summary">Skrýt nebo zobrazit komponenty sekce komentářů</string>
|
||||||
<string name="revanced_hide_comments_ai_chat_summary_title">Skrýt souhrn chatu s AI</string>
|
<string name="revanced_hide_comments_ai_chat_summary_title">Skrýt souhrn chatu s AI</string>
|
||||||
@@ -534,11 +548,11 @@ Tato funkce je dostupná pouze pro starší zařízení"</string>
|
|||||||
<string name="revanced_share_copy_url_success">URL zkopírováno do schránky</string>
|
<string name="revanced_share_copy_url_success">URL zkopírováno do schránky</string>
|
||||||
<string name="revanced_share_copy_url_timestamp_success">Adresa URL s časovým razítkem zkopírována</string>
|
<string name="revanced_share_copy_url_timestamp_success">Adresa URL s časovým razítkem zkopírována</string>
|
||||||
<string name="revanced_copy_video_url_title">Zobrazit tlačítko pro kopírování adresy URL videa</string>
|
<string name="revanced_copy_video_url_title">Zobrazit tlačítko pro kopírování adresy URL videa</string>
|
||||||
<string name="revanced_copy_video_url_summary_on">Zobrazí se tlačítko. Klepnutím zkopírujete URL videa. Klepnutím a podržením zkopírujete s časovou značkou</string>
|
<string name="revanced_copy_video_url_summary_on">Tlačítko Kopírovat URL videa je zobrazeno. Klepnutím zkopírujete URL videa. Klepnutím a podržením zkopírujete s časovou značkou</string>
|
||||||
<string name="revanced_copy_video_url_summary_off">Tlačítko se nezobrazuje</string>
|
<string name="revanced_copy_video_url_summary_off">Tlačítko Kopírovat URL videa není zobrazeno</string>
|
||||||
<string name="revanced_copy_video_url_timestamp_title">Zobrazit tlačítko pro kopírování adresy URL videa s časovým razítkem</string>
|
<string name="revanced_copy_video_url_timestamp_title">Zobrazit tlačítko pro kopírování adresy URL videa s časovým razítkem</string>
|
||||||
<string name="revanced_copy_video_url_timestamp_summary_on">Zobrazí se tlačítko. Klepnutím zkopírujete URL videa s časovou značkou. Klepnutím a podržením zkopírujete bez časové značky</string>
|
<string name="revanced_copy_video_url_timestamp_summary_on">Tlačítko Kopírovat URL s časovou značkou je zobrazeno. Klepnutím zkopírujete URL videa s časovou značkou. Klepnutím a podržením zkopírujete bez časové značky</string>
|
||||||
<string name="revanced_copy_video_url_timestamp_summary_off">Tlačítko se nezobrazuje</string>
|
<string name="revanced_copy_video_url_timestamp_summary_off">Tlačítko Kopírovat URL s časovou značkou není zobrazeno</string>
|
||||||
</patch>
|
</patch>
|
||||||
<patch id="interaction.dialog.removeViewerDiscretionDialogPatch">
|
<patch id="interaction.dialog.removeViewerDiscretionDialogPatch">
|
||||||
<string name="revanced_remove_viewer_discretion_dialog_title">Odstranit dialog s upozorněním na věkové omezení</string>
|
<string name="revanced_remove_viewer_discretion_dialog_title">Odstranit dialog s upozorněním na věkové omezení</string>
|
||||||
@@ -547,7 +561,7 @@ Tato funkce je dostupná pouze pro starší zařízení"</string>
|
|||||||
<string name="revanced_remove_viewer_discretion_dialog_user_dialog_message">Tímto krokem neobcházíte věkové omezení. Pouze jej automaticky akceptujete.</string>
|
<string name="revanced_remove_viewer_discretion_dialog_user_dialog_message">Tímto krokem neobcházíte věkové omezení. Pouze jej automaticky akceptujete.</string>
|
||||||
</patch>
|
</patch>
|
||||||
<patch id="layout.hide.signintotv.disableSignInToTvPopupPatch">
|
<patch id="layout.hide.signintotv.disableSignInToTvPopupPatch">
|
||||||
<string name="revanced_disable_signin_to_tv_popup_title">Zakázat vyskakovací okno Přihlásit se k televizi</string>
|
<string name="revanced_disable_signin_to_tv_popup_title">Zakázat vyskakovací okno „Přihlásit se k televizi“</string>
|
||||||
<string name="revanced_disable_signin_to_tv_popup_summary_on">Vyskakovací okno Přihlásit se k televizi je zakázáno</string>
|
<string name="revanced_disable_signin_to_tv_popup_summary_on">Vyskakovací okno Přihlásit se k televizi je zakázáno</string>
|
||||||
<string name="revanced_disable_signin_to_tv_popup_summary_off">Vyskakovací okno Přihlásit se k televizi je povoleno</string>
|
<string name="revanced_disable_signin_to_tv_popup_summary_off">Vyskakovací okno Přihlásit se k televizi je povoleno</string>
|
||||||
</patch>
|
</patch>
|
||||||
@@ -679,7 +693,7 @@ Hlasitost se upravuje svislým přejetím po pravé straně obrazovky"</string>
|
|||||||
<string name="revanced_hide_download_button_summary_on">Tlačítko Stáhnout je skryto</string>
|
<string name="revanced_hide_download_button_summary_on">Tlačítko Stáhnout je skryto</string>
|
||||||
<string name="revanced_hide_download_button_summary_off">Tlačítko Stáhnout je zobrazeno</string>
|
<string name="revanced_hide_download_button_summary_off">Tlačítko Stáhnout je zobrazeno</string>
|
||||||
<!-- 'Hype' should be translated with the same localized wording that YouTube displays.
|
<!-- 'Hype' should be translated with the same localized wording that YouTube displays.
|
||||||
This button only shows on videos uploaded by the logged in user. -->
|
This button only shows on videos uploaded by the logged-in user. -->
|
||||||
<string name="revanced_hide_hype_button_title">Skrýt Hype</string>
|
<string name="revanced_hide_hype_button_title">Skrýt Hype</string>
|
||||||
<string name="revanced_hide_hype_button_summary_on">Tlačítko Hype je skryto</string>
|
<string name="revanced_hide_hype_button_summary_on">Tlačítko Hype je skryto</string>
|
||||||
<string name="revanced_hide_hype_button_summary_off">Tlačítko Hype je zobrazeno</string>
|
<string name="revanced_hide_hype_button_summary_off">Tlačítko Hype je zobrazeno</string>
|
||||||
@@ -800,10 +814,11 @@ Pokud změna tohoto nastavení nemá žádný účinek, zkuste přepnout do rež
|
|||||||
<string name="revanced_hide_player_flyout_audio_track_title">Skrýt Zvuková stopa</string>
|
<string name="revanced_hide_player_flyout_audio_track_title">Skrýt Zvuková stopa</string>
|
||||||
<string name="revanced_hide_player_flyout_audio_track_summary_on">Menu Zvuková stopa je skryto</string>
|
<string name="revanced_hide_player_flyout_audio_track_summary_on">Menu Zvuková stopa je skryto</string>
|
||||||
<string name="revanced_hide_player_flyout_audio_track_summary_off">Menu Zvuková stopa je zobrazeno</string>
|
<string name="revanced_hide_player_flyout_audio_track_summary_off">Menu Zvuková stopa je zobrazeno</string>
|
||||||
<!-- 'Spoof video streams' should be the same translation used for 'revanced_spoof_video_streams_screen_title'. -->
|
<!-- 'Spoof video streams' should be the same translation used for 'revanced_spoof_video_streams_screen_title'.
|
||||||
<string name="revanced_hide_player_flyout_audio_track_not_available">"Nabídka zvukové stopy je skryta
|
'Android No SDK' must be kept untranslated. -->
|
||||||
|
<string name="revanced_hide_player_flyout_audio_track_not_available">"Nabídka zvukových stop je skryta
|
||||||
|
|
||||||
Chcete-li zobrazit nabídku zvukové stopy, změňte 'Zfalšovat streamy videa' na iPadOS"</string>
|
Chcete-li zobrazit nabídku zvukových stop, změňte \"Podvrhnout video streamy\" na \"Android No SDK\""</string>
|
||||||
<!-- 'Watch in VR' should be translated using the same localized wording YouTube displays for the menu item. -->
|
<!-- 'Watch in VR' should be translated using the same localized wording YouTube displays for the menu item. -->
|
||||||
<string name="revanced_hide_player_flyout_watch_in_vr_title">Skrýt Sledovat ve VR</string>
|
<string name="revanced_hide_player_flyout_watch_in_vr_title">Skrýt Sledovat ve VR</string>
|
||||||
<string name="revanced_hide_player_flyout_watch_in_vr_summary_on">Menu Sledovat ve VR je skryto</string>
|
<string name="revanced_hide_player_flyout_watch_in_vr_summary_on">Menu Sledovat ve VR je skryto</string>
|
||||||
@@ -879,13 +894,16 @@ Chcete-li zobrazit nabídku zvukové stopy, změňte 'Zfalšovat streamy videa'
|
|||||||
<string name="revanced_hide_shorts_history_title">Skrýt Shorts z historie sledování</string>
|
<string name="revanced_hide_shorts_history_title">Skrýt Shorts z historie sledování</string>
|
||||||
<string name="revanced_hide_shorts_history_summary_on">Skryté v historii sledování</string>
|
<string name="revanced_hide_shorts_history_summary_on">Skryté v historii sledování</string>
|
||||||
<string name="revanced_hide_shorts_history_summary_off">Zobrazené v historii sledování</string>
|
<string name="revanced_hide_shorts_history_summary_off">Zobrazené v historii sledování</string>
|
||||||
<string name="revanced_hide_shorts_super_thanks_button_title">Skrýt tlačítko Koupit Super Thanks</string>
|
<string name="revanced_hide_shorts_auto_dubbed_label_title">Skrýt štítek „Automatický dabing“</string>
|
||||||
|
<string name="revanced_hide_shorts_auto_dubbed_label_summary_on">Štítek s automatickým dabingem je skryt</string>
|
||||||
|
<string name="revanced_hide_shorts_auto_dubbed_label_summary_off">Štítek s automatickým dabingem je zobrazen</string>
|
||||||
|
<string name="revanced_hide_shorts_super_thanks_button_title">Skrýt tlačítko „Koupit Superdíky“</string>
|
||||||
<string name="revanced_hide_shorts_super_thanks_button_summary_on">Tlačítko \"Koupit Super Thanks\" je skryto</string>
|
<string name="revanced_hide_shorts_super_thanks_button_summary_on">Tlačítko \"Koupit Super Thanks\" je skryto</string>
|
||||||
<string name="revanced_hide_shorts_super_thanks_button_summary_off">Tlačítko \"Koupit Super Thanks\" je zobrazeno</string>
|
<string name="revanced_hide_shorts_super_thanks_button_summary_off">Tlačítko \"Koupit Super Thanks\" je zobrazeno</string>
|
||||||
<string name="revanced_hide_shorts_effect_button_title">Skrýt tlačítko efektu</string>
|
<string name="revanced_hide_shorts_effect_button_title">Skrýt tlačítko efektu</string>
|
||||||
<string name="revanced_hide_shorts_effect_button_summary_on">Tlačítko Efekt je skryté</string>
|
<string name="revanced_hide_shorts_effect_button_summary_on">Tlačítko Efekt je skryté</string>
|
||||||
<string name="revanced_hide_shorts_effect_button_summary_off">Tlačítko Efekt je zobrazeno</string>
|
<string name="revanced_hide_shorts_effect_button_summary_off">Tlačítko Efekt je zobrazeno</string>
|
||||||
<string name="revanced_hide_shorts_green_screen_button_title">Skrýt tlačítko Zelená obrazovka</string>
|
<string name="revanced_hide_shorts_green_screen_button_title">Skrýt tlačítko „Zelené plátno“</string>
|
||||||
<string name="revanced_hide_shorts_green_screen_button_summary_on">Tlačítko zelené obrazovky je skryté</string>
|
<string name="revanced_hide_shorts_green_screen_button_summary_on">Tlačítko zelené obrazovky je skryté</string>
|
||||||
<string name="revanced_hide_shorts_green_screen_button_summary_off">Tlačítko zelené obrazovky je zobrazeno</string>
|
<string name="revanced_hide_shorts_green_screen_button_summary_off">Tlačítko zelené obrazovky je zobrazeno</string>
|
||||||
<string name="revanced_hide_shorts_hashtag_button_title">Skrýt tlačítko hashtagů</string>
|
<string name="revanced_hide_shorts_hashtag_button_title">Skrýt tlačítko hashtagů</string>
|
||||||
@@ -895,10 +913,13 @@ Chcete-li zobrazit nabídku zvukové stopy, změňte 'Zfalšovat streamy videa'
|
|||||||
<string name="revanced_hide_shorts_join_button_title">Skrýt tlačítko Připojit se</string>
|
<string name="revanced_hide_shorts_join_button_title">Skrýt tlačítko Připojit se</string>
|
||||||
<string name="revanced_hide_shorts_join_button_summary_on">Tlačítko Připojit se je skryto</string>
|
<string name="revanced_hide_shorts_join_button_summary_on">Tlačítko Připojit se je skryto</string>
|
||||||
<string name="revanced_hide_shorts_join_button_summary_off">Tlačítko Připojit se je zobrazeno</string>
|
<string name="revanced_hide_shorts_join_button_summary_off">Tlačítko Připojit se je zobrazeno</string>
|
||||||
|
<string name="revanced_hide_shorts_live_preview_title">Skrýt živý náhled</string>
|
||||||
|
<string name="revanced_hide_shorts_live_preview_summary_on">Živý náhled je skrytý</string>
|
||||||
|
<string name="revanced_hide_shorts_live_preview_summary_off">Živý náhled je zobrazen</string>
|
||||||
<string name="revanced_hide_shorts_location_label_title">Skrýt štítek umístění</string>
|
<string name="revanced_hide_shorts_location_label_title">Skrýt štítek umístění</string>
|
||||||
<string name="revanced_hide_shorts_location_label_summary_on">Štítek umístění je skrytý</string>
|
<string name="revanced_hide_shorts_location_label_summary_on">Štítek umístění je skrytý</string>
|
||||||
<string name="revanced_hide_shorts_location_label_summary_off">Štítek umístění je zobrazen</string>
|
<string name="revanced_hide_shorts_location_label_summary_off">Štítek umístění je zobrazen</string>
|
||||||
<string name="revanced_hide_shorts_new_posts_button_title">Skrýt tlačítko Nové příspěvky</string>
|
<string name="revanced_hide_shorts_new_posts_button_title">Skrýt tlačítko „Nové příspěvky“</string>
|
||||||
<string name="revanced_hide_shorts_new_posts_button_summary_on">Tlačítko Nové příspěvky je skryto</string>
|
<string name="revanced_hide_shorts_new_posts_button_summary_on">Tlačítko Nové příspěvky je skryto</string>
|
||||||
<string name="revanced_hide_shorts_new_posts_button_summary_off">Tlačítko Nové příspěvky je zobrazeno</string>
|
<string name="revanced_hide_shorts_new_posts_button_summary_off">Tlačítko Nové příspěvky je zobrazeno</string>
|
||||||
<string name="revanced_hide_shorts_paused_overlay_buttons_title">Skrýt tlačítka pozastaveného překrytí</string>
|
<string name="revanced_hide_shorts_paused_overlay_buttons_title">Skrýt tlačítka pozastaveného překrytí</string>
|
||||||
@@ -907,7 +928,7 @@ Chcete-li zobrazit nabídku zvukové stopy, změňte 'Zfalšovat streamy videa'
|
|||||||
<string name="revanced_hide_shorts_preview_comment_title">Skrýt náhled komentáře</string>
|
<string name="revanced_hide_shorts_preview_comment_title">Skrýt náhled komentáře</string>
|
||||||
<string name="revanced_hide_shorts_preview_comment_summary_on">Náhled komentáře je skrytý</string>
|
<string name="revanced_hide_shorts_preview_comment_summary_on">Náhled komentáře je skrytý</string>
|
||||||
<string name="revanced_hide_shorts_preview_comment_summary_off">Zobrazuje se náhled komentáře</string>
|
<string name="revanced_hide_shorts_preview_comment_summary_off">Zobrazuje se náhled komentáře</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_title">Skrýt tlačítko Uložit hudbu</string>
|
<string name="revanced_hide_shorts_save_sound_button_title">Skrýt tlačítko „Uložit hudbu“</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_summary_on">Tlačítko Uložit hudbu je skryté</string>
|
<string name="revanced_hide_shorts_save_sound_button_summary_on">Tlačítko Uložit hudbu je skryté</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_summary_off">Tlačítko Uložit hudbu je zobrazeno</string>
|
<string name="revanced_hide_shorts_save_sound_button_summary_off">Tlačítko Uložit hudbu je zobrazeno</string>
|
||||||
<string name="revanced_hide_shorts_search_suggestions_title">Skrýt návrhy vyhledávání</string>
|
<string name="revanced_hide_shorts_search_suggestions_title">Skrýt návrhy vyhledávání</string>
|
||||||
@@ -928,10 +949,10 @@ Chcete-li zobrazit nabídku zvukové stopy, změňte 'Zfalšovat streamy videa'
|
|||||||
<string name="revanced_hide_shorts_upcoming_button_title">Skrýt tlačítko Nadcházející</string>
|
<string name="revanced_hide_shorts_upcoming_button_title">Skrýt tlačítko Nadcházející</string>
|
||||||
<string name="revanced_hide_shorts_upcoming_button_summary_on">Tlačítko \"Další\" je skryté</string>
|
<string name="revanced_hide_shorts_upcoming_button_summary_on">Tlačítko \"Další\" je skryté</string>
|
||||||
<string name="revanced_hide_shorts_upcoming_button_summary_off">Tlačítko \"Další\" je zobrazeno</string>
|
<string name="revanced_hide_shorts_upcoming_button_summary_off">Tlačítko \"Další\" je zobrazeno</string>
|
||||||
<string name="revanced_hide_shorts_use_sound_button_title">Skrýt tlačítko Použít tento zvuk</string>
|
<string name="revanced_hide_shorts_use_sound_button_title">Skrýt tlačítko „Použít tento zvuk“</string>
|
||||||
<string name="revanced_hide_shorts_use_sound_button_summary_on">Tlačítko Použít tento zvuk je skryté</string>
|
<string name="revanced_hide_shorts_use_sound_button_summary_on">Tlačítko Použít tento zvuk je skryté</string>
|
||||||
<string name="revanced_hide_shorts_use_sound_button_summary_off">Tlačítko Použít tento zvuk je zobrazené</string>
|
<string name="revanced_hide_shorts_use_sound_button_summary_off">Tlačítko Použít tento zvuk je zobrazené</string>
|
||||||
<string name="revanced_hide_shorts_use_template_button_title">Skrýt tlačítko Použít tuto šablonu</string>
|
<string name="revanced_hide_shorts_use_template_button_title">Skrýt tlačítko „Použít tuto šablonu“</string>
|
||||||
<string name="revanced_hide_shorts_use_template_button_summary_on">Tlačítko Použít tuto šablonu je skryté</string>
|
<string name="revanced_hide_shorts_use_template_button_summary_on">Tlačítko Použít tuto šablonu je skryté</string>
|
||||||
<string name="revanced_hide_shorts_use_template_button_summary_off">Tlačítko Použít tuto šablonu je zobrazeno</string>
|
<string name="revanced_hide_shorts_use_template_button_summary_off">Tlačítko Použít tuto šablonu je zobrazeno</string>
|
||||||
<string name="revanced_hide_shorts_like_fountain_title">Skrýt animaci s fontánou u tlačítka To se mi líbí</string>
|
<string name="revanced_hide_shorts_like_fountain_title">Skrýt animaci s fontánou u tlačítka To se mi líbí</string>
|
||||||
@@ -1574,13 +1595,13 @@ Povolením této funkce lze odemknout vyšší kvality videa"</string>
|
|||||||
</patch>
|
</patch>
|
||||||
<patch id="video.speed.button.playbackSpeedButtonPatch">
|
<patch id="video.speed.button.playbackSpeedButtonPatch">
|
||||||
<string name="revanced_playback_speed_dialog_button_title">Zobrazit tlačítko dialogu rychlosti</string>
|
<string name="revanced_playback_speed_dialog_button_title">Zobrazit tlačítko dialogu rychlosti</string>
|
||||||
<string name="revanced_playback_speed_dialog_button_summary_on">Tlačítko je zobrazeno. Klepnutím a podržením obnovíte výchozí rychlost přehrávání</string>
|
<string name="revanced_playback_speed_dialog_button_summary_on">Tlačítko dialogu rychlosti je zobrazeno. Klepnutím a podržením obnovíte rychlost přehrávání na výchozí</string>
|
||||||
<string name="revanced_playback_speed_dialog_button_summary_off">Tlačítko se nezobrazuje</string>
|
<string name="revanced_playback_speed_dialog_button_summary_off">Tlačítko dialogu rychlosti není zobrazeno</string>
|
||||||
</patch>
|
</patch>
|
||||||
<patch id="video.quality.button.videoQualityDialogButtonPatch">
|
<patch id="video.quality.button.videoQualityDialogButtonPatch">
|
||||||
<string name="revanced_video_quality_dialog_button_title">Zobrazit tlačítko kvality videa</string>
|
<string name="revanced_video_quality_dialog_button_title">Zobrazit tlačítko kvality videa</string>
|
||||||
<string name="revanced_video_quality_dialog_button_summary_on">Tlačítko je zobrazeno. Klepnutím a podržením obnovíte kvalitu na výchozí</string>
|
<string name="revanced_video_quality_dialog_button_summary_on">Tlačítko kvality videa je zobrazeno. Klepnutím a podržením obnovíte kvalitu na výchozí</string>
|
||||||
<string name="revanced_video_quality_dialog_button_summary_off">Tlačítko není zobrazeno.</string>
|
<string name="revanced_video_quality_dialog_button_summary_off">Tlačítko kvality videa není zobrazeno</string>
|
||||||
</patch>
|
</patch>
|
||||||
<patch id="video.speed.custom.customPlaybackSpeedPatch">
|
<patch id="video.speed.custom.customPlaybackSpeedPatch">
|
||||||
<string name="revanced_custom_speed_menu_title">Menu vlastní rychlosti přehrávání</string>
|
<string name="revanced_custom_speed_menu_title">Menu vlastní rychlosti přehrávání</string>
|
||||||
|
|||||||
@@ -282,6 +282,9 @@ Aktivering af dette vil dog også logge nogle brugerdata, såsom din IP-adresse.
|
|||||||
<string name="revanced_hide_video_recommendation_labels_title">Skjul etiketter for videoanbefalinger</string>
|
<string name="revanced_hide_video_recommendation_labels_title">Skjul etiketter for videoanbefalinger</string>
|
||||||
<string name="revanced_hide_video_recommendation_labels_summary_on">\'Folk har også set\'- og \'Du vil måske også synes om\'-etiketter i søgeresultater er skjult</string>
|
<string name="revanced_hide_video_recommendation_labels_summary_on">\'Folk har også set\'- og \'Du vil måske også synes om\'-etiketter i søgeresultater er skjult</string>
|
||||||
<string name="revanced_hide_video_recommendation_labels_summary_off">\'Folk har også set\'- og \'Du vil måske også synes om\'-etiketter i søgeresultater vises</string>
|
<string name="revanced_hide_video_recommendation_labels_summary_off">\'Folk har også set\'- og \'Du vil måske også synes om\'-etiketter i søgeresultater vises</string>
|
||||||
|
<string name="revanced_hide_visual_spacer_title">Skjul visuelt mellemrum</string>
|
||||||
|
<string name="revanced_hide_visual_spacer_summary_on">Visuelt mellemrum er skjult</string>
|
||||||
|
<string name="revanced_hide_visual_spacer_summary_off">Visuelt mellemrum vises</string>
|
||||||
<!-- https://logos.fandom.com/wiki/YouTube/Yoodles -->
|
<!-- https://logos.fandom.com/wiki/YouTube/Yoodles -->
|
||||||
<string name="revanced_hide_doodles_title">Skjul YouTube-Doudler</string>
|
<string name="revanced_hide_doodles_title">Skjul YouTube-Doudler</string>
|
||||||
<string name="revanced_hide_doodles_summary_on">YouTube Doodles-animation på logoet er skjult</string>
|
<string name="revanced_hide_doodles_summary_on">YouTube Doodles-animation på logoet er skjult</string>
|
||||||
@@ -342,18 +345,21 @@ Hvis et Doodle vises i øjeblikket i din region, og denne skjuleindstilling er a
|
|||||||
<string name="revanced_hide_podcast_section_title">Skjul \"Udforsk podcasten\"</string>
|
<string name="revanced_hide_podcast_section_title">Skjul \"Udforsk podcasten\"</string>
|
||||||
<string name="revanced_hide_podcast_section_summary_on">Sektionen Udforsk podcasten er skjult</string>
|
<string name="revanced_hide_podcast_section_summary_on">Sektionen Udforsk podcasten er skjult</string>
|
||||||
<string name="revanced_hide_podcast_section_summary_off">Sektionen Udforsk podcasten vises</string>
|
<string name="revanced_hide_podcast_section_summary_off">Sektionen Udforsk podcasten vises</string>
|
||||||
<string name="revanced_hide_featured_section_title">Skjul fremhævet indhold</string>
|
<string name="revanced_hide_featured_links_section_title">Skjul fremhævede links</string>
|
||||||
<string name="revanced_hide_featured_section_summary_on">Sektionen for fremhævet indhold er skjult</string>
|
<string name="revanced_hide_featured_links_section_summary_on">Sektionen med fremhævede links er skjult</string>
|
||||||
<string name="revanced_hide_featured_section_summary_off">Sektionen for fremhævet indhold er vist</string>
|
<string name="revanced_hide_featured_links_section_summary_off">Sektionen med fremhævede links er vist</string>
|
||||||
|
<string name="revanced_hide_featured_videos_section_title">Skjul fremhævede videoer</string>
|
||||||
|
<string name="revanced_hide_featured_videos_section_summary_on">Sektionen med fremhævede videoer er skjult</string>
|
||||||
|
<string name="revanced_hide_featured_videos_section_summary_off">Sektionen med fremhævede videoer er vist</string>
|
||||||
<string name="revanced_hide_info_cards_section_title">Skjul infokort</string>
|
<string name="revanced_hide_info_cards_section_title">Skjul infokort</string>
|
||||||
<string name="revanced_hide_info_cards_section_summary_on">Info-kort sektion er skjult</string>
|
<string name="revanced_hide_info_cards_section_summary_on">Info-kort sektion er skjult</string>
|
||||||
<string name="revanced_hide_info_cards_section_summary_off">Info-kort sektion er vist</string>
|
<string name="revanced_hide_info_cards_section_summary_off">Info-kort sektion er vist</string>
|
||||||
<string name="revanced_hide_key_concepts_section_title">Skjul \"Nøglebegreber\"</string>
|
<string name="revanced_hide_key_concepts_section_title">Skjul \"Nøglebegreber\"</string>
|
||||||
<string name="revanced_hide_key_concepts_section_summary_on">Nøglebegrebssektionen er skjult</string>
|
<string name="revanced_hide_key_concepts_section_summary_on">Nøglebegrebssektionen er skjult</string>
|
||||||
<string name="revanced_hide_key_concepts_section_summary_off">Nøglebegrebssektionen vises</string>
|
<string name="revanced_hide_key_concepts_section_summary_off">Nøglebegrebssektionen vises</string>
|
||||||
<string name="revanced_hide_description_subscribe_button_title">Skjul abonnér-knap</string>
|
<string name="revanced_hide_subscribe_button_title">Skjul abonner-knappen</string>
|
||||||
<string name="revanced_hide_description_subscribe_button_summary_on">Abonnér-knappen er skjult</string>
|
<string name="revanced_hide_subscribe_button_summary_on">Abonner-knappen er skjult</string>
|
||||||
<string name="revanced_hide_description_subscribe_button_summary_off">Abonnér-knappen vises</string>
|
<string name="revanced_hide_subscribe_button_summary_off">Abonner-knappen er vist</string>
|
||||||
<string name="revanced_hide_transcript_section_title">Skjul udskrift</string>
|
<string name="revanced_hide_transcript_section_title">Skjul udskrift</string>
|
||||||
<string name="revanced_hide_transcript_section_summary_on">Afsnittet er skjult</string>
|
<string name="revanced_hide_transcript_section_summary_on">Afsnittet er skjult</string>
|
||||||
<string name="revanced_hide_transcript_section_summary_off">Afsnittet er vist</string>
|
<string name="revanced_hide_transcript_section_summary_off">Afsnittet er vist</string>
|
||||||
@@ -375,24 +381,32 @@ Hvis et Doodle vises i øjeblikket i din region, og denne skjuleindstilling er a
|
|||||||
<string name="revanced_hide_filter_bar_feed_in_history_summary_off">Vist i seerhistorik</string>
|
<string name="revanced_hide_filter_bar_feed_in_history_summary_off">Vist i seerhistorik</string>
|
||||||
<string name="revanced_channel_screen_title">Kanalside</string>
|
<string name="revanced_channel_screen_title">Kanalside</string>
|
||||||
<string name="revanced_channel_screen_summary">Skjul eller vis kanalsidekomponenter</string>
|
<string name="revanced_channel_screen_summary">Skjul eller vis kanalsidekomponenter</string>
|
||||||
|
<!-- 'Community' should be translated with the same localized wording that YouTube displays. -->
|
||||||
|
<string name="revanced_hide_community_button_title">Skjul knappen Fællesskab</string>
|
||||||
|
<string name="revanced_hide_community_button_summary_on">Fællesskabs-knap er skjult</string>
|
||||||
|
<string name="revanced_hide_community_button_summary_off">Fællesskabs-knap vises</string>
|
||||||
<!-- 'For You' should be translated using the same localized wording YouTube displays. -->
|
<!-- 'For You' should be translated using the same localized wording YouTube displays. -->
|
||||||
<string name="revanced_hide_for_you_shelf_title">Skjul hylden \"Til dig\"</string>
|
<string name="revanced_hide_for_you_shelf_title">Skjul hylden \"Til dig\"</string>
|
||||||
<string name="revanced_hide_for_you_shelf_summary_on">Til dig-hylden er skjult</string>
|
<string name="revanced_hide_for_you_shelf_summary_on">Til dig-hylden er skjult</string>
|
||||||
<string name="revanced_hide_for_you_shelf_summary_off">Til dig-hylden er vist</string>
|
<string name="revanced_hide_for_you_shelf_summary_off">Til dig-hylden er vist</string>
|
||||||
|
<!-- 'Join' should be translated with the same localized wording that YouTube displays. -->
|
||||||
|
<string name="revanced_hide_join_button_title">Skjul Tilmeld-knap</string>
|
||||||
|
<string name="revanced_hide_join_button_summary_on">Tilmeld-knap er skjult</string>
|
||||||
|
<string name="revanced_hide_join_button_summary_off">Tilmeld-knap vises</string>
|
||||||
<string name="revanced_hide_links_preview_title">Skjul forhåndsvisning af links</string>
|
<string name="revanced_hide_links_preview_title">Skjul forhåndsvisning af links</string>
|
||||||
<string name="revanced_hide_links_preview_summary_on">Forhåndsvisning af links er skjult</string>
|
<string name="revanced_hide_links_preview_summary_on">Forhåndsvisning af links er skjult</string>
|
||||||
<string name="revanced_hide_links_preview_summary_off">Forhåndsvisning af links er vist</string>
|
<string name="revanced_hide_links_preview_summary_off">Forhåndsvisning af links er vist</string>
|
||||||
<string name="revanced_hide_members_shelf_title">Skjul medlemshylden</string>
|
<string name="revanced_hide_members_shelf_title">Skjul medlemshylden</string>
|
||||||
<string name="revanced_hide_members_shelf_summary_on">Medlemshylden er skjult</string>
|
<string name="revanced_hide_members_shelf_summary_on">Medlemshylden er skjult</string>
|
||||||
<string name="revanced_hide_members_shelf_summary_off">Medlemsvisning er vist</string>
|
<string name="revanced_hide_members_shelf_summary_off">Medlemsvisning er vist</string>
|
||||||
<!-- 'Visit Community' should be translated with the same localized wording that YouTube displays. -->
|
<!-- 'Store' should be translated with the same localized wording that YouTube displays. -->
|
||||||
<string name="revanced_hide_visit_community_button_title">Skjul knappen \"Besøg fællesskab\"</string>
|
<string name="revanced_hide_store_button_title">Skjul Butik-knap</string>
|
||||||
<string name="revanced_hide_visit_community_button_summary_on">Knappen \"Besøg fællesskab\" er skjult</string>
|
<string name="revanced_hide_store_button_summary_on">Butik-knap er skjult</string>
|
||||||
<string name="revanced_hide_visit_community_button_summary_off">Besøg fællesskab-knap er vist</string>
|
<string name="revanced_hide_store_button_summary_off">Butik-knap vises</string>
|
||||||
<!-- 'Visit store' should be translated with the same localized wording that YouTube displays. -->
|
<!-- 'Subscribe' should be translated with the same localized wording that YouTube displays. -->
|
||||||
<string name="revanced_hide_visit_store_button_title">Skjul knappen \'Besøg butik\' på kanalsider</string>
|
<string name="revanced_hide_subscribe_button_in_channel_page_title">Skjul Abonner-knap</string>
|
||||||
<string name="revanced_hide_visit_store_button_summary_on">Besøg butik-knap er skjult</string>
|
<string name="revanced_hide_subscribe_button_in_channel_page_summary_on">Abonner-knap er skjult</string>
|
||||||
<string name="revanced_hide_visit_store_button_summary_off">Besøg butik-knap er vist</string>
|
<string name="revanced_hide_subscribe_button_in_channel_page_summary_off">Abonner-knap vises</string>
|
||||||
<string name="revanced_comments_screen_title">Kommentarer</string>
|
<string name="revanced_comments_screen_title">Kommentarer</string>
|
||||||
<string name="revanced_comments_screen_summary">Skjul eller vis kommentarer sektion komponenter</string>
|
<string name="revanced_comments_screen_summary">Skjul eller vis kommentarer sektion komponenter</string>
|
||||||
<string name="revanced_hide_comments_ai_chat_summary_title">Skjul AI-chatsammendrag</string>
|
<string name="revanced_hide_comments_ai_chat_summary_title">Skjul AI-chatsammendrag</string>
|
||||||
@@ -534,11 +548,11 @@ Denne funktion er kun tilgængelig for ældre enheder"</string>
|
|||||||
<string name="revanced_share_copy_url_success">URL kopieret til udklipsholder</string>
|
<string name="revanced_share_copy_url_success">URL kopieret til udklipsholder</string>
|
||||||
<string name="revanced_share_copy_url_timestamp_success">URL med tidsstempel kopieret</string>
|
<string name="revanced_share_copy_url_timestamp_success">URL med tidsstempel kopieret</string>
|
||||||
<string name="revanced_copy_video_url_title">Vis kopiér video URL knap</string>
|
<string name="revanced_copy_video_url_title">Vis kopiér video URL knap</string>
|
||||||
<string name="revanced_copy_video_url_summary_on">Knappen vises. Tryk for at kopiere videoens URL. Tryk og hold for at kopiere med tidsstempel</string>
|
<string name="revanced_copy_video_url_summary_on">Kopier video-URL-knap vises. Tryk for at kopiere video-URL. Tryk og hold nede for at kopiere med tidsstempel</string>
|
||||||
<string name="revanced_copy_video_url_summary_off">Knap vises ikke</string>
|
<string name="revanced_copy_video_url_summary_off">Kopier video-URL-knap vises ikke</string>
|
||||||
<string name="revanced_copy_video_url_timestamp_title">Vis kopi tidsstempel URL knap</string>
|
<string name="revanced_copy_video_url_timestamp_title">Vis kopi tidsstempel URL knap</string>
|
||||||
<string name="revanced_copy_video_url_timestamp_summary_on">Knappen vises. Tryk for at kopiere videoens URL med tidsstempel. Tryk og hold for at kopiere uden tidsstempel</string>
|
<string name="revanced_copy_video_url_timestamp_summary_on">Kopier tidsstempel-URL-knap vises. Tryk for at kopiere video-URL med tidsstempel. Tryk og hold nede for at kopiere uden tidsstempel</string>
|
||||||
<string name="revanced_copy_video_url_timestamp_summary_off">Knap vises ikke</string>
|
<string name="revanced_copy_video_url_timestamp_summary_off">Kopier tidsstempel-URL-knap vises ikke</string>
|
||||||
</patch>
|
</patch>
|
||||||
<patch id="interaction.dialog.removeViewerDiscretionDialogPatch">
|
<patch id="interaction.dialog.removeViewerDiscretionDialogPatch">
|
||||||
<string name="revanced_remove_viewer_discretion_dialog_title">Fjern visningsdialog</string>
|
<string name="revanced_remove_viewer_discretion_dialog_title">Fjern visningsdialog</string>
|
||||||
@@ -547,7 +561,7 @@ Denne funktion er kun tilgængelig for ældre enheder"</string>
|
|||||||
<string name="revanced_remove_viewer_discretion_dialog_user_dialog_message">Dette går ikke uden om aldersbegrænsningen. Det accepterer bare det automatisk.</string>
|
<string name="revanced_remove_viewer_discretion_dialog_user_dialog_message">Dette går ikke uden om aldersbegrænsningen. Det accepterer bare det automatisk.</string>
|
||||||
</patch>
|
</patch>
|
||||||
<patch id="layout.hide.signintotv.disableSignInToTvPopupPatch">
|
<patch id="layout.hide.signintotv.disableSignInToTvPopupPatch">
|
||||||
<string name="revanced_disable_signin_to_tv_popup_title">Deaktiver log ind på TV-pop op</string>
|
<string name="revanced_disable_signin_to_tv_popup_title">Deaktiver \'Log ind på TV\'-popup</string>
|
||||||
<string name="revanced_disable_signin_to_tv_popup_summary_on">Log ind på TV-pop op er deaktiveret</string>
|
<string name="revanced_disable_signin_to_tv_popup_summary_on">Log ind på TV-pop op er deaktiveret</string>
|
||||||
<string name="revanced_disable_signin_to_tv_popup_summary_off">Log ind på TV-pop op er aktiveret</string>
|
<string name="revanced_disable_signin_to_tv_popup_summary_off">Log ind på TV-pop op er aktiveret</string>
|
||||||
</patch>
|
</patch>
|
||||||
@@ -679,7 +693,7 @@ Juster lydstyrken ved at swipe lodret i højre side af skærmen"</string>
|
|||||||
<string name="revanced_hide_download_button_summary_on">Download-knappen er skjult</string>
|
<string name="revanced_hide_download_button_summary_on">Download-knappen er skjult</string>
|
||||||
<string name="revanced_hide_download_button_summary_off">Download-knappen vises</string>
|
<string name="revanced_hide_download_button_summary_off">Download-knappen vises</string>
|
||||||
<!-- 'Hype' should be translated with the same localized wording that YouTube displays.
|
<!-- 'Hype' should be translated with the same localized wording that YouTube displays.
|
||||||
This button only shows on videos uploaded by the logged in user. -->
|
This button only shows on videos uploaded by the logged-in user. -->
|
||||||
<string name="revanced_hide_hype_button_title">Skjul Hype</string>
|
<string name="revanced_hide_hype_button_title">Skjul Hype</string>
|
||||||
<string name="revanced_hide_hype_button_summary_on">Hype-knappen er skjult</string>
|
<string name="revanced_hide_hype_button_summary_on">Hype-knappen er skjult</string>
|
||||||
<string name="revanced_hide_hype_button_summary_off">Hype-knappen vises</string>
|
<string name="revanced_hide_hype_button_summary_off">Hype-knappen vises</string>
|
||||||
@@ -800,10 +814,11 @@ Hvis ændring af denne indstilling ikke træder i kraft, kan du prøve at skifte
|
|||||||
<string name="revanced_hide_player_flyout_audio_track_title">Skjul lydspor</string>
|
<string name="revanced_hide_player_flyout_audio_track_title">Skjul lydspor</string>
|
||||||
<string name="revanced_hide_player_flyout_audio_track_summary_on">Menuen for lydspor er skjult</string>
|
<string name="revanced_hide_player_flyout_audio_track_summary_on">Menuen for lydspor er skjult</string>
|
||||||
<string name="revanced_hide_player_flyout_audio_track_summary_off">Menuen Lydspor vises</string>
|
<string name="revanced_hide_player_flyout_audio_track_summary_off">Menuen Lydspor vises</string>
|
||||||
<!-- 'Spoof video streams' should be the same translation used for 'revanced_spoof_video_streams_screen_title'. -->
|
<!-- 'Spoof video streams' should be the same translation used for 'revanced_spoof_video_streams_screen_title'.
|
||||||
<string name="revanced_hide_player_flyout_audio_track_not_available">"Lydsporsmenuen er skjult
|
'Android No SDK' must be kept untranslated. -->
|
||||||
|
<string name="revanced_hide_player_flyout_audio_track_not_available">"Audiorspormenuen er skjult
|
||||||
|
|
||||||
For at vise lydsporsmenuen, skift 'Spoof videostreams' til iPadOS"</string>
|
For at vise audiospormenuen, skift 'Maskér videostreams' til 'Android No SDK'"</string>
|
||||||
<!-- 'Watch in VR' should be translated using the same localized wording YouTube displays for the menu item. -->
|
<!-- 'Watch in VR' should be translated using the same localized wording YouTube displays for the menu item. -->
|
||||||
<string name="revanced_hide_player_flyout_watch_in_vr_title">Skjul vagt i VR</string>
|
<string name="revanced_hide_player_flyout_watch_in_vr_title">Skjul vagt i VR</string>
|
||||||
<string name="revanced_hide_player_flyout_watch_in_vr_summary_on">Se i VR-menuen er skjult</string>
|
<string name="revanced_hide_player_flyout_watch_in_vr_summary_on">Se i VR-menuen er skjult</string>
|
||||||
@@ -879,13 +894,16 @@ For at vise lydsporsmenuen, skift 'Spoof videostreams' til iPadOS"</string>
|
|||||||
<string name="revanced_hide_shorts_history_title">Skjul shorts i historik</string>
|
<string name="revanced_hide_shorts_history_title">Skjul shorts i historik</string>
|
||||||
<string name="revanced_hide_shorts_history_summary_on">Skjult i historikken</string>
|
<string name="revanced_hide_shorts_history_summary_on">Skjult i historikken</string>
|
||||||
<string name="revanced_hide_shorts_history_summary_off">Vises i historik</string>
|
<string name="revanced_hide_shorts_history_summary_off">Vises i historik</string>
|
||||||
<string name="revanced_hide_shorts_super_thanks_button_title">Skjul knappen Køb Super Thanks</string>
|
<string name="revanced_hide_shorts_auto_dubbed_label_title">Skjul \'Auto-dubbet\'-etiket</string>
|
||||||
|
<string name="revanced_hide_shorts_auto_dubbed_label_summary_on">Automatisk dubbet etiket er skjult</string>
|
||||||
|
<string name="revanced_hide_shorts_auto_dubbed_label_summary_off">Automatisk dubbet etiket vises</string>
|
||||||
|
<string name="revanced_hide_shorts_super_thanks_button_title">Skjul \'Køb Super Thanks\'-knap</string>
|
||||||
<string name="revanced_hide_shorts_super_thanks_button_summary_on">Køb Super Thanks-knap er skjult</string>
|
<string name="revanced_hide_shorts_super_thanks_button_summary_on">Køb Super Thanks-knap er skjult</string>
|
||||||
<string name="revanced_hide_shorts_super_thanks_button_summary_off">Køb Super Thanks-knap vises</string>
|
<string name="revanced_hide_shorts_super_thanks_button_summary_off">Køb Super Thanks-knap vises</string>
|
||||||
<string name="revanced_hide_shorts_effect_button_title">Skjul effektknap</string>
|
<string name="revanced_hide_shorts_effect_button_title">Skjul effektknap</string>
|
||||||
<string name="revanced_hide_shorts_effect_button_summary_on">Effektknap er skjult</string>
|
<string name="revanced_hide_shorts_effect_button_summary_on">Effektknap er skjult</string>
|
||||||
<string name="revanced_hide_shorts_effect_button_summary_off">Effektknap er vist</string>
|
<string name="revanced_hide_shorts_effect_button_summary_off">Effektknap er vist</string>
|
||||||
<string name="revanced_hide_shorts_green_screen_button_title">Skjul knappen Grøn skærm</string>
|
<string name="revanced_hide_shorts_green_screen_button_title">Skjul \'Green screen\'-knap</string>
|
||||||
<string name="revanced_hide_shorts_green_screen_button_summary_on">Grøn skærmknap er skjult</string>
|
<string name="revanced_hide_shorts_green_screen_button_summary_on">Grøn skærmknap er skjult</string>
|
||||||
<string name="revanced_hide_shorts_green_screen_button_summary_off">Grøn skærmknap vises</string>
|
<string name="revanced_hide_shorts_green_screen_button_summary_off">Grøn skærmknap vises</string>
|
||||||
<string name="revanced_hide_shorts_hashtag_button_title">Skjul hashtag knap</string>
|
<string name="revanced_hide_shorts_hashtag_button_title">Skjul hashtag knap</string>
|
||||||
@@ -895,10 +913,13 @@ For at vise lydsporsmenuen, skift 'Spoof videostreams' til iPadOS"</string>
|
|||||||
<string name="revanced_hide_shorts_join_button_title">Skjul knappen Deltag</string>
|
<string name="revanced_hide_shorts_join_button_title">Skjul knappen Deltag</string>
|
||||||
<string name="revanced_hide_shorts_join_button_summary_on">Deltag-knappen er skjult</string>
|
<string name="revanced_hide_shorts_join_button_summary_on">Deltag-knappen er skjult</string>
|
||||||
<string name="revanced_hide_shorts_join_button_summary_off">Tilmeldingsknappen vises</string>
|
<string name="revanced_hide_shorts_join_button_summary_off">Tilmeldingsknappen vises</string>
|
||||||
|
<string name="revanced_hide_shorts_live_preview_title">Skjul live forhåndsvisning</string>
|
||||||
|
<string name="revanced_hide_shorts_live_preview_summary_on">Live-forhåndsvisning er skjult</string>
|
||||||
|
<string name="revanced_hide_shorts_live_preview_summary_off">Live-forhåndsvisning vises</string>
|
||||||
<string name="revanced_hide_shorts_location_label_title">Skjul placeringsetiket</string>
|
<string name="revanced_hide_shorts_location_label_title">Skjul placeringsetiket</string>
|
||||||
<string name="revanced_hide_shorts_location_label_summary_on">Placeringsetiket er skjult</string>
|
<string name="revanced_hide_shorts_location_label_summary_on">Placeringsetiket er skjult</string>
|
||||||
<string name="revanced_hide_shorts_location_label_summary_off">Placeringsetiket er vist</string>
|
<string name="revanced_hide_shorts_location_label_summary_off">Placeringsetiket er vist</string>
|
||||||
<string name="revanced_hide_shorts_new_posts_button_title">Skjul knappen Nye indlæg</string>
|
<string name="revanced_hide_shorts_new_posts_button_title">Skjul \'Nye indlæg\'-knap</string>
|
||||||
<string name="revanced_hide_shorts_new_posts_button_summary_on">Knappen Nye indlæg er skjult</string>
|
<string name="revanced_hide_shorts_new_posts_button_summary_on">Knappen Nye indlæg er skjult</string>
|
||||||
<string name="revanced_hide_shorts_new_posts_button_summary_off">Knappen Nye indlæg vises</string>
|
<string name="revanced_hide_shorts_new_posts_button_summary_off">Knappen Nye indlæg vises</string>
|
||||||
<string name="revanced_hide_shorts_paused_overlay_buttons_title">Skjul overlay knapper på pause</string>
|
<string name="revanced_hide_shorts_paused_overlay_buttons_title">Skjul overlay knapper på pause</string>
|
||||||
@@ -907,7 +928,7 @@ For at vise lydsporsmenuen, skift 'Spoof videostreams' til iPadOS"</string>
|
|||||||
<string name="revanced_hide_shorts_preview_comment_title">Skjul forhåndsvisning af kommentar</string>
|
<string name="revanced_hide_shorts_preview_comment_title">Skjul forhåndsvisning af kommentar</string>
|
||||||
<string name="revanced_hide_shorts_preview_comment_summary_on">Forhåndsvisning af kommentar er skjult</string>
|
<string name="revanced_hide_shorts_preview_comment_summary_on">Forhåndsvisning af kommentar er skjult</string>
|
||||||
<string name="revanced_hide_shorts_preview_comment_summary_off">Forhåndsvisningskommentar vises</string>
|
<string name="revanced_hide_shorts_preview_comment_summary_off">Forhåndsvisningskommentar vises</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_title">Skjul knappen Gem musik</string>
|
<string name="revanced_hide_shorts_save_sound_button_title">Skjul \'Gem musik\'-knap</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_summary_on">Gem musik knap er skjult</string>
|
<string name="revanced_hide_shorts_save_sound_button_summary_on">Gem musik knap er skjult</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_summary_off">Gem musik knap er vist</string>
|
<string name="revanced_hide_shorts_save_sound_button_summary_off">Gem musik knap er vist</string>
|
||||||
<string name="revanced_hide_shorts_search_suggestions_title">Skjul søgeforslag</string>
|
<string name="revanced_hide_shorts_search_suggestions_title">Skjul søgeforslag</string>
|
||||||
@@ -928,10 +949,10 @@ For at vise lydsporsmenuen, skift 'Spoof videostreams' til iPadOS"</string>
|
|||||||
<string name="revanced_hide_shorts_upcoming_button_title">Skjul knappen Kommende</string>
|
<string name="revanced_hide_shorts_upcoming_button_title">Skjul knappen Kommende</string>
|
||||||
<string name="revanced_hide_shorts_upcoming_button_summary_on">Kommende knap er skjult</string>
|
<string name="revanced_hide_shorts_upcoming_button_summary_on">Kommende knap er skjult</string>
|
||||||
<string name="revanced_hide_shorts_upcoming_button_summary_off">Kommende knap vises</string>
|
<string name="revanced_hide_shorts_upcoming_button_summary_off">Kommende knap vises</string>
|
||||||
<string name="revanced_hide_shorts_use_sound_button_title">Skjul knappen \"Brug denne lyd\"</string>
|
<string name="revanced_hide_shorts_use_sound_button_title">Skjul \'Brug denne lyd\'-knap</string>
|
||||||
<string name="revanced_hide_shorts_use_sound_button_summary_on">Knappen \"Brug denne lyd\" er skjult</string>
|
<string name="revanced_hide_shorts_use_sound_button_summary_on">Knappen \"Brug denne lyd\" er skjult</string>
|
||||||
<string name="revanced_hide_shorts_use_sound_button_summary_off">Knappen \"Brug denne lyd\" vises</string>
|
<string name="revanced_hide_shorts_use_sound_button_summary_off">Knappen \"Brug denne lyd\" vises</string>
|
||||||
<string name="revanced_hide_shorts_use_template_button_title">Skjul knappen Brug denne skabelon</string>
|
<string name="revanced_hide_shorts_use_template_button_title">Skjul \'Brug denne skabelon\'-knap</string>
|
||||||
<string name="revanced_hide_shorts_use_template_button_summary_on">Knappen \"Brug denne skabelon\" er skjult</string>
|
<string name="revanced_hide_shorts_use_template_button_summary_on">Knappen \"Brug denne skabelon\" er skjult</string>
|
||||||
<string name="revanced_hide_shorts_use_template_button_summary_off">Knappen Brug denne skabelon vises</string>
|
<string name="revanced_hide_shorts_use_template_button_summary_off">Knappen Brug denne skabelon vises</string>
|
||||||
<string name="revanced_hide_shorts_like_fountain_title">Skjul knap for springvand-animation af like-knap</string>
|
<string name="revanced_hide_shorts_like_fountain_title">Skjul knap for springvand-animation af like-knap</string>
|
||||||
@@ -1576,13 +1597,13 @@ Aktivering af dette kan låse op for højere videokvalitet"</string>
|
|||||||
</patch>
|
</patch>
|
||||||
<patch id="video.speed.button.playbackSpeedButtonPatch">
|
<patch id="video.speed.button.playbackSpeedButtonPatch">
|
||||||
<string name="revanced_playback_speed_dialog_button_title">Vis hastigheds dialogknap</string>
|
<string name="revanced_playback_speed_dialog_button_title">Vis hastigheds dialogknap</string>
|
||||||
<string name="revanced_playback_speed_dialog_button_summary_on">Knappen vises. Tryk og hold for at nulstille afspilningshastigheden til standard.</string>
|
<string name="revanced_playback_speed_dialog_button_summary_on">Hastighedsdialogknap vises. Tryk og hold nede for at nulstille afspilningshastigheden til standard</string>
|
||||||
<string name="revanced_playback_speed_dialog_button_summary_off">Knap vises ikke</string>
|
<string name="revanced_playback_speed_dialog_button_summary_off">Hastighedsdialogknap vises ikke</string>
|
||||||
</patch>
|
</patch>
|
||||||
<patch id="video.quality.button.videoQualityDialogButtonPatch">
|
<patch id="video.quality.button.videoQualityDialogButtonPatch">
|
||||||
<string name="revanced_video_quality_dialog_button_title">Vis videokvalitetsknap</string>
|
<string name="revanced_video_quality_dialog_button_title">Vis videokvalitetsknap</string>
|
||||||
<string name="revanced_video_quality_dialog_button_summary_on">Knap vises. Tryk og hold nede for at nulstille kvaliteten til standard</string>
|
<string name="revanced_video_quality_dialog_button_summary_on">Videokvalitetsknap vises. Tryk og hold nede for at nulstille kvaliteten til standard</string>
|
||||||
<string name="revanced_video_quality_dialog_button_summary_off">Knappen vises ikke</string>
|
<string name="revanced_video_quality_dialog_button_summary_off">Videokvalitetsknap vises ikke</string>
|
||||||
</patch>
|
</patch>
|
||||||
<patch id="video.speed.custom.customPlaybackSpeedPatch">
|
<patch id="video.speed.custom.customPlaybackSpeedPatch">
|
||||||
<string name="revanced_custom_speed_menu_title">Tilpasset afspilningshastighed menu</string>
|
<string name="revanced_custom_speed_menu_title">Tilpasset afspilningshastighed menu</string>
|
||||||
|
|||||||
@@ -282,6 +282,9 @@ Wenn Sie dies aktivieren, werden jedoch auch einige Benutzerdaten wie Ihre IP-Ad
|
|||||||
<string name="revanced_hide_video_recommendation_labels_title">Videovorschlagsbeschriftungen ausblenden</string>
|
<string name="revanced_hide_video_recommendation_labels_title">Videovorschlagsbeschriftungen ausblenden</string>
|
||||||
<string name="revanced_hide_video_recommendation_labels_summary_on">\'Das haben andere auch angesehen\' und \'Dir könnten auch gefallen\' Beschriftungen in den Suchergebnissen sind ausgeblendet</string>
|
<string name="revanced_hide_video_recommendation_labels_summary_on">\'Das haben andere auch angesehen\' und \'Dir könnten auch gefallen\' Beschriftungen in den Suchergebnissen sind ausgeblendet</string>
|
||||||
<string name="revanced_hide_video_recommendation_labels_summary_off">\'Das haben andere auch angesehen\' und \'Dir könnten auch gefallen\' Beschriftungen in den Suchergebnissen werden angezeigt</string>
|
<string name="revanced_hide_video_recommendation_labels_summary_off">\'Das haben andere auch angesehen\' und \'Dir könnten auch gefallen\' Beschriftungen in den Suchergebnissen werden angezeigt</string>
|
||||||
|
<string name="revanced_hide_visual_spacer_title">Visuellen Abstandshalter ausblenden</string>
|
||||||
|
<string name="revanced_hide_visual_spacer_summary_on">Visueller Abstandshalter ist ausgeblendet</string>
|
||||||
|
<string name="revanced_hide_visual_spacer_summary_off">Visueller Abstandshalter ist sichtbar</string>
|
||||||
<!-- https://logos.fandom.com/wiki/YouTube/Yoodles -->
|
<!-- https://logos.fandom.com/wiki/YouTube/Yoodles -->
|
||||||
<string name="revanced_hide_doodles_title">YouTube Doodles ausblenden</string>
|
<string name="revanced_hide_doodles_title">YouTube Doodles ausblenden</string>
|
||||||
<string name="revanced_hide_doodles_summary_on">YouTube Doodles-Animation auf dem Logo ist ausgeblendet</string>
|
<string name="revanced_hide_doodles_summary_on">YouTube Doodles-Animation auf dem Logo ist ausgeblendet</string>
|
||||||
@@ -341,18 +344,21 @@ Wenn ein Doodle zurzeit in Ihrer Region angezeigt wird und diese Einstellung zum
|
|||||||
<string name="revanced_hide_podcast_section_title">\'Podcast entdecken\' ausblenden</string>
|
<string name="revanced_hide_podcast_section_title">\'Podcast entdecken\' ausblenden</string>
|
||||||
<string name="revanced_hide_podcast_section_summary_on">Der Abschnitt \"Podcast entdecken\" ist ausgeblendet</string>
|
<string name="revanced_hide_podcast_section_summary_on">Der Abschnitt \"Podcast entdecken\" ist ausgeblendet</string>
|
||||||
<string name="revanced_hide_podcast_section_summary_off">Der Abschnitt \"Podcast entdecken\" wird angezeigt</string>
|
<string name="revanced_hide_podcast_section_summary_off">Der Abschnitt \"Podcast entdecken\" wird angezeigt</string>
|
||||||
<string name="revanced_hide_featured_section_title">Vorgestellte Inhalte ausblenden</string>
|
<string name="revanced_hide_featured_links_section_title">Empfohlene Links ausblenden</string>
|
||||||
<string name="revanced_hide_featured_section_summary_on">Bereich für vorgestellte Inhalte ist ausgeblendet</string>
|
<string name="revanced_hide_featured_links_section_summary_on">Bereich „Empfohlene Links“ wird ausgeblendet</string>
|
||||||
<string name="revanced_hide_featured_section_summary_off">Bereich für vorgestellte Inhalte ist sichtbar</string>
|
<string name="revanced_hide_featured_links_section_summary_off">Bereich „Empfohlene Links“ wird angezeigt</string>
|
||||||
|
<string name="revanced_hide_featured_videos_section_title">Empfohlene Videos ausblenden</string>
|
||||||
|
<string name="revanced_hide_featured_videos_section_summary_on">Bereich „Empfohlene Videos“ wird ausgeblendet</string>
|
||||||
|
<string name="revanced_hide_featured_videos_section_summary_off">Bereich „Empfohlene Videos“ wird angezeigt</string>
|
||||||
<string name="revanced_hide_info_cards_section_title">Infokarten ausblenden</string>
|
<string name="revanced_hide_info_cards_section_title">Infokarten ausblenden</string>
|
||||||
<string name="revanced_hide_info_cards_section_summary_on">Info-Kartenbereich ist ausgeblendet</string>
|
<string name="revanced_hide_info_cards_section_summary_on">Info-Kartenbereich ist ausgeblendet</string>
|
||||||
<string name="revanced_hide_info_cards_section_summary_off">Info-Kartenbereich wird angezeigt</string>
|
<string name="revanced_hide_info_cards_section_summary_off">Info-Kartenbereich wird angezeigt</string>
|
||||||
<string name="revanced_hide_key_concepts_section_title">\'Schlüsselkonzepte\' ausblenden</string>
|
<string name="revanced_hide_key_concepts_section_title">\'Schlüsselkonzepte\' ausblenden</string>
|
||||||
<string name="revanced_hide_key_concepts_section_summary_on">Abschnitt \"Schlüsselkonzepte\" ist ausgeblendet</string>
|
<string name="revanced_hide_key_concepts_section_summary_on">Abschnitt \"Schlüsselkonzepte\" ist ausgeblendet</string>
|
||||||
<string name="revanced_hide_key_concepts_section_summary_off">Abschnitt \"Schlüsselkonzepte\" wird angezeigt</string>
|
<string name="revanced_hide_key_concepts_section_summary_off">Abschnitt \"Schlüsselkonzepte\" wird angezeigt</string>
|
||||||
<string name="revanced_hide_description_subscribe_button_title">Schaltfläche „Abonnieren“ ausblenden</string>
|
<string name="revanced_hide_subscribe_button_title">Schaltfläche „Abonnieren“ ausblenden</string>
|
||||||
<string name="revanced_hide_description_subscribe_button_summary_on">Abo-Schaltfläche ist ausgeblendet</string>
|
<string name="revanced_hide_subscribe_button_summary_on">Schaltfläche „Abonnieren“ wird ausgeblendet</string>
|
||||||
<string name="revanced_hide_description_subscribe_button_summary_off">Abo-Schaltfläche wird angezeigt</string>
|
<string name="revanced_hide_subscribe_button_summary_off">Schaltfläche „Abonnieren“ wird angezeigt</string>
|
||||||
<string name="revanced_hide_transcript_section_title">Transkript ausblenden</string>
|
<string name="revanced_hide_transcript_section_title">Transkript ausblenden</string>
|
||||||
<string name="revanced_hide_transcript_section_summary_on">Transkript-Abschnitt ist ausgeblendet</string>
|
<string name="revanced_hide_transcript_section_summary_on">Transkript-Abschnitt ist ausgeblendet</string>
|
||||||
<string name="revanced_hide_transcript_section_summary_off">Sektion Transkripte wird angezeigt</string>
|
<string name="revanced_hide_transcript_section_summary_off">Sektion Transkripte wird angezeigt</string>
|
||||||
@@ -374,24 +380,32 @@ Wenn ein Doodle zurzeit in Ihrer Region angezeigt wird und diese Einstellung zum
|
|||||||
<string name="revanced_hide_filter_bar_feed_in_history_summary_off">Im Wiedergabeverlauf angezeigt</string>
|
<string name="revanced_hide_filter_bar_feed_in_history_summary_off">Im Wiedergabeverlauf angezeigt</string>
|
||||||
<string name="revanced_channel_screen_title">Kanalseite</string>
|
<string name="revanced_channel_screen_title">Kanalseite</string>
|
||||||
<string name="revanced_channel_screen_summary">Kanalseitenkomponenten ausblenden oder anzeigen</string>
|
<string name="revanced_channel_screen_summary">Kanalseitenkomponenten ausblenden oder anzeigen</string>
|
||||||
|
<!-- 'Community' should be translated with the same localized wording that YouTube displays. -->
|
||||||
|
<string name="revanced_hide_community_button_title">Schaltfläche \"Community\" ausblenden</string>
|
||||||
|
<string name="revanced_hide_community_button_summary_on">Community-Schaltfläche ist ausgeblendet</string>
|
||||||
|
<string name="revanced_hide_community_button_summary_off">Community-Schaltfläche wird angezeigt</string>
|
||||||
<!-- 'For You' should be translated using the same localized wording YouTube displays. -->
|
<!-- 'For You' should be translated using the same localized wording YouTube displays. -->
|
||||||
<string name="revanced_hide_for_you_shelf_title">\"Für dich\" Bereich ausblenden</string>
|
<string name="revanced_hide_for_you_shelf_title">\"Für dich\" Bereich ausblenden</string>
|
||||||
<string name="revanced_hide_for_you_shelf_summary_on">\"Für dich\" Bereich ist ausgeblendet</string>
|
<string name="revanced_hide_for_you_shelf_summary_on">\"Für dich\" Bereich ist ausgeblendet</string>
|
||||||
<string name="revanced_hide_for_you_shelf_summary_off">\"Für dich\" Bereich ist angezeigt</string>
|
<string name="revanced_hide_for_you_shelf_summary_off">\"Für dich\" Bereich ist angezeigt</string>
|
||||||
|
<!-- 'Join' should be translated with the same localized wording that YouTube displays. -->
|
||||||
|
<string name="revanced_hide_join_button_title">Schaltfläche \"Mitglied werden\" ausblenden</string>
|
||||||
|
<string name="revanced_hide_join_button_summary_on">Schaltfläche \"Mitglied werden\" ist ausgeblendet</string>
|
||||||
|
<string name="revanced_hide_join_button_summary_off">Schaltfläche \"Mitglied werden\" wird angezeigt</string>
|
||||||
<string name="revanced_hide_links_preview_title">Linkvorschau ausblenden</string>
|
<string name="revanced_hide_links_preview_title">Linkvorschau ausblenden</string>
|
||||||
<string name="revanced_hide_links_preview_summary_on">Linkvorschau ist ausgeblendet</string>
|
<string name="revanced_hide_links_preview_summary_on">Linkvorschau ist ausgeblendet</string>
|
||||||
<string name="revanced_hide_links_preview_summary_off">Linkvorschau ist angezeigt</string>
|
<string name="revanced_hide_links_preview_summary_off">Linkvorschau ist angezeigt</string>
|
||||||
<string name="revanced_hide_members_shelf_title">Mitglieder-Regal ausblenden</string>
|
<string name="revanced_hide_members_shelf_title">Mitglieder-Regal ausblenden</string>
|
||||||
<string name="revanced_hide_members_shelf_summary_on">Mitglieder-Regal ist ausgeblendet</string>
|
<string name="revanced_hide_members_shelf_summary_on">Mitglieder-Regal ist ausgeblendet</string>
|
||||||
<string name="revanced_hide_members_shelf_summary_off">Mitglieder-Regal wird angezeigt</string>
|
<string name="revanced_hide_members_shelf_summary_off">Mitglieder-Regal wird angezeigt</string>
|
||||||
<!-- 'Visit Community' should be translated with the same localized wording that YouTube displays. -->
|
<!-- 'Store' should be translated with the same localized wording that YouTube displays. -->
|
||||||
<string name="revanced_hide_visit_community_button_title">Schaltfläche \'Zur Community\' ausblenden</string>
|
<string name="revanced_hide_store_button_title">Schaltfläche \"Shop\" ausblenden</string>
|
||||||
<string name="revanced_hide_visit_community_button_summary_on">Schaltfläche \'Zur Community\' ist ausgeblendet</string>
|
<string name="revanced_hide_store_button_summary_on">Schaltfläche \"Shop\" ist ausgeblendet</string>
|
||||||
<string name="revanced_hide_visit_community_button_summary_off">Schaltfläch \"Zur Community\" wird angezeigt</string>
|
<string name="revanced_hide_store_button_summary_off">Schaltfläche \"Shop\" wird angezeigt</string>
|
||||||
<!-- 'Visit store' should be translated with the same localized wording that YouTube displays. -->
|
<!-- 'Subscribe' should be translated with the same localized wording that YouTube displays. -->
|
||||||
<string name="revanced_hide_visit_store_button_title">Den \'Store besuchen\'-Button auf Kanalseiten ausblenden</string>
|
<string name="revanced_hide_subscribe_button_in_channel_page_title">Schaltfläche \"Abonnieren\" ausblenden</string>
|
||||||
<string name="revanced_hide_visit_store_button_summary_on">Schaltfläche \"Shop besuchen\" ist ausgeblendet</string>
|
<string name="revanced_hide_subscribe_button_in_channel_page_summary_on">Schaltfläche \"Abonnieren\" ist ausgeblendet</string>
|
||||||
<string name="revanced_hide_visit_store_button_summary_off">Schaltfläche \"Shop besuchen\" ist angezeigt</string>
|
<string name="revanced_hide_subscribe_button_in_channel_page_summary_off">Schaltfläche \"Abonnieren\" wird angezeigt</string>
|
||||||
<string name="revanced_comments_screen_title">Kommentare</string>
|
<string name="revanced_comments_screen_title">Kommentare</string>
|
||||||
<string name="revanced_comments_screen_summary">Komponenten der Kommentar-Sektion ausblenden oder anzeigen</string>
|
<string name="revanced_comments_screen_summary">Komponenten der Kommentar-Sektion ausblenden oder anzeigen</string>
|
||||||
<string name="revanced_hide_comments_ai_chat_summary_title">KI-Chat-Zusammenfassung ausblenden</string>
|
<string name="revanced_hide_comments_ai_chat_summary_title">KI-Chat-Zusammenfassung ausblenden</string>
|
||||||
@@ -533,11 +547,11 @@ Diese Funktion ist nur für ältere Geräte verfügbar"</string>
|
|||||||
<string name="revanced_share_copy_url_success">URL in Zwischenablage kopiert</string>
|
<string name="revanced_share_copy_url_success">URL in Zwischenablage kopiert</string>
|
||||||
<string name="revanced_share_copy_url_timestamp_success">URL mit Zeitstempel kopiert</string>
|
<string name="revanced_share_copy_url_timestamp_success">URL mit Zeitstempel kopiert</string>
|
||||||
<string name="revanced_copy_video_url_title">Video-URL-Schaltfläche kopieren anzeigen</string>
|
<string name="revanced_copy_video_url_title">Video-URL-Schaltfläche kopieren anzeigen</string>
|
||||||
<string name="revanced_copy_video_url_summary_on">Schaltfläche wird angezeigt. Tippen, um die Video-URL zu kopieren. Zum Kopieren mit Zeitstempel tippen und halten</string>
|
<string name="revanced_copy_video_url_summary_on">Schaltfläche \"Video-URL kopieren\" wird angezeigt. Tippen, um Video-URL zu kopieren. Tippen und halten, um mit Zeitstempel zu kopieren.</string>
|
||||||
<string name="revanced_copy_video_url_summary_off">Button wird nicht angezeigt</string>
|
<string name="revanced_copy_video_url_summary_off">Schaltfläche \"Video-URL kopieren\" wird nicht angezeigt</string>
|
||||||
<string name="revanced_copy_video_url_timestamp_title">Kopiere Zeitstempel URL-Schaltfläche anzeigen</string>
|
<string name="revanced_copy_video_url_timestamp_title">Kopiere Zeitstempel URL-Schaltfläche anzeigen</string>
|
||||||
<string name="revanced_copy_video_url_timestamp_summary_on">Schaltfläche wird angezeigt. Tippen, um die Video-URL mit Zeitstempel zu kopieren. Zum Kopieren ohne Zeitstempel tippen und halten</string>
|
<string name="revanced_copy_video_url_timestamp_summary_on">Schaltfläche \"URL mit Zeitstempel kopieren\" wird angezeigt. Tippen, um Video-URL mit Zeitstempel zu kopieren. Tippen und halten, um ohne Zeitstempel zu kopieren.</string>
|
||||||
<string name="revanced_copy_video_url_timestamp_summary_off">Button wird nicht angezeigt</string>
|
<string name="revanced_copy_video_url_timestamp_summary_off">Schaltfläche \"URL mit Zeitstempel kopieren\" wird nicht angezeigt</string>
|
||||||
</patch>
|
</patch>
|
||||||
<patch id="interaction.dialog.removeViewerDiscretionDialogPatch">
|
<patch id="interaction.dialog.removeViewerDiscretionDialogPatch">
|
||||||
<string name="revanced_remove_viewer_discretion_dialog_title">Diskretion des Betrachters entfernen</string>
|
<string name="revanced_remove_viewer_discretion_dialog_title">Diskretion des Betrachters entfernen</string>
|
||||||
@@ -546,7 +560,7 @@ Diese Funktion ist nur für ältere Geräte verfügbar"</string>
|
|||||||
<string name="revanced_remove_viewer_discretion_dialog_user_dialog_message">Dies umgeht nicht die Altersbeschränkung, sondern akzeptiert sie nur automatisch.</string>
|
<string name="revanced_remove_viewer_discretion_dialog_user_dialog_message">Dies umgeht nicht die Altersbeschränkung, sondern akzeptiert sie nur automatisch.</string>
|
||||||
</patch>
|
</patch>
|
||||||
<patch id="layout.hide.signintotv.disableSignInToTvPopupPatch">
|
<patch id="layout.hide.signintotv.disableSignInToTvPopupPatch">
|
||||||
<string name="revanced_disable_signin_to_tv_popup_title">Pop-up \"Bei TV anmelden\" deaktivieren</string>
|
<string name="revanced_disable_signin_to_tv_popup_title">Pop-up \"Beim Fernseher anmelden\" deaktivieren</string>
|
||||||
<string name="revanced_disable_signin_to_tv_popup_summary_on">Pop-up \"Bei TV anmelden\" ist deaktiviert</string>
|
<string name="revanced_disable_signin_to_tv_popup_summary_on">Pop-up \"Bei TV anmelden\" ist deaktiviert</string>
|
||||||
<string name="revanced_disable_signin_to_tv_popup_summary_off">Pop-up \"Bei TV anmelden\" ist aktiviert</string>
|
<string name="revanced_disable_signin_to_tv_popup_summary_off">Pop-up \"Bei TV anmelden\" ist aktiviert</string>
|
||||||
</patch>
|
</patch>
|
||||||
@@ -676,7 +690,7 @@ Passen Sie die Helligkeit an, indem Sie auf der linken Seite des Bildschirms ver
|
|||||||
<string name="revanced_hide_download_button_summary_on">Download-Button ist ausgeblendet</string>
|
<string name="revanced_hide_download_button_summary_on">Download-Button ist ausgeblendet</string>
|
||||||
<string name="revanced_hide_download_button_summary_off">Download-Button wird angezeigt</string>
|
<string name="revanced_hide_download_button_summary_off">Download-Button wird angezeigt</string>
|
||||||
<!-- 'Hype' should be translated with the same localized wording that YouTube displays.
|
<!-- 'Hype' should be translated with the same localized wording that YouTube displays.
|
||||||
This button only shows on videos uploaded by the logged in user. -->
|
This button only shows on videos uploaded by the logged-in user. -->
|
||||||
<string name="revanced_hide_hype_button_title">Hypen ausblenden</string>
|
<string name="revanced_hide_hype_button_title">Hypen ausblenden</string>
|
||||||
<string name="revanced_hide_hype_button_summary_on">Hypen-Button ist ausgeblendet</string>
|
<string name="revanced_hide_hype_button_summary_on">Hypen-Button ist ausgeblendet</string>
|
||||||
<string name="revanced_hide_hype_button_summary_off">Hypen-Button wird angezeigt</string>
|
<string name="revanced_hide_hype_button_summary_off">Hypen-Button wird angezeigt</string>
|
||||||
@@ -797,10 +811,9 @@ Wenn diese Änderung nicht wirksam wird, versuchen Sie, in den Inkognito-Modus z
|
|||||||
<string name="revanced_hide_player_flyout_audio_track_title">Audiospur ausblenden</string>
|
<string name="revanced_hide_player_flyout_audio_track_title">Audiospur ausblenden</string>
|
||||||
<string name="revanced_hide_player_flyout_audio_track_summary_on">Audiospur-Menü ist ausgeblendet</string>
|
<string name="revanced_hide_player_flyout_audio_track_summary_on">Audiospur-Menü ist ausgeblendet</string>
|
||||||
<string name="revanced_hide_player_flyout_audio_track_summary_off">Audiospurmenü wird angezeigt</string>
|
<string name="revanced_hide_player_flyout_audio_track_summary_off">Audiospurmenü wird angezeigt</string>
|
||||||
<!-- 'Spoof video streams' should be the same translation used for 'revanced_spoof_video_streams_screen_title'. -->
|
<!-- 'Spoof video streams' should be the same translation used for 'revanced_spoof_video_streams_screen_title'.
|
||||||
<string name="revanced_hide_player_flyout_audio_track_not_available">"Audiotrack-Menü ist ausgeblendet
|
'Android No SDK' must be kept untranslated. -->
|
||||||
|
<string name="revanced_hide_player_flyout_audio_track_not_available">"Audiotrack-Menü ist ausgeblendet\n\nUm das Audiotrack-Menü anzuzeigen, ändern Sie \"</string>
|
||||||
Um das Audiotrack-Menü anzuzeigen, ändern Sie \"Video-Streams fälschen\" zu iPadOS"</string>
|
|
||||||
<!-- 'Watch in VR' should be translated using the same localized wording YouTube displays for the menu item. -->
|
<!-- 'Watch in VR' should be translated using the same localized wording YouTube displays for the menu item. -->
|
||||||
<string name="revanced_hide_player_flyout_watch_in_vr_title">Überwachung in VR ausblenden</string>
|
<string name="revanced_hide_player_flyout_watch_in_vr_title">Überwachung in VR ausblenden</string>
|
||||||
<string name="revanced_hide_player_flyout_watch_in_vr_summary_on">Im VR-Menü beobachten ist ausgeblendet</string>
|
<string name="revanced_hide_player_flyout_watch_in_vr_summary_on">Im VR-Menü beobachten ist ausgeblendet</string>
|
||||||
@@ -876,13 +889,16 @@ Um das Audiotrack-Menü anzuzeigen, ändern Sie \"Video-Streams fälschen\" zu i
|
|||||||
<string name="revanced_hide_shorts_history_title">Shorts im Verlauf verstecken</string>
|
<string name="revanced_hide_shorts_history_title">Shorts im Verlauf verstecken</string>
|
||||||
<string name="revanced_hide_shorts_history_summary_on">Im Verlauf versteckt</string>
|
<string name="revanced_hide_shorts_history_summary_on">Im Verlauf versteckt</string>
|
||||||
<string name="revanced_hide_shorts_history_summary_off">Im Verlauf angezeigt</string>
|
<string name="revanced_hide_shorts_history_summary_off">Im Verlauf angezeigt</string>
|
||||||
<string name="revanced_hide_shorts_super_thanks_button_title">\'Super Thanks\'-Button ausblenden</string>
|
<string name="revanced_hide_shorts_auto_dubbed_label_title">Label \"Automatisch synchronisiert\" ausblenden</string>
|
||||||
|
<string name="revanced_hide_shorts_auto_dubbed_label_summary_on">Automatisch synchronisiertes Label ist ausgeblendet</string>
|
||||||
|
<string name="revanced_hide_shorts_auto_dubbed_label_summary_off">Automatisch synchronisiertes Label wird angezeigt</string>
|
||||||
|
<string name="revanced_hide_shorts_super_thanks_button_title">Schaltfläche \"Super Thanks kaufen\" ausblenden</string>
|
||||||
<string name="revanced_hide_shorts_super_thanks_button_summary_on">Schaltfläche \"Super Thanks kaufen\" ist ausgeblendet</string>
|
<string name="revanced_hide_shorts_super_thanks_button_summary_on">Schaltfläche \"Super Thanks kaufen\" ist ausgeblendet</string>
|
||||||
<string name="revanced_hide_shorts_super_thanks_button_summary_off">Schaltfläche \"Super Thanks kaufen\" wird angezeigt</string>
|
<string name="revanced_hide_shorts_super_thanks_button_summary_off">Schaltfläche \"Super Thanks kaufen\" wird angezeigt</string>
|
||||||
<string name="revanced_hide_shorts_effect_button_title">Effekt-Schaltfläche ausblenden</string>
|
<string name="revanced_hide_shorts_effect_button_title">Effekt-Schaltfläche ausblenden</string>
|
||||||
<string name="revanced_hide_shorts_effect_button_summary_on">Effekt-Taste ist ausgeblendet</string>
|
<string name="revanced_hide_shorts_effect_button_summary_on">Effekt-Taste ist ausgeblendet</string>
|
||||||
<string name="revanced_hide_shorts_effect_button_summary_off">Effekt-Taste ist eingeblendet</string>
|
<string name="revanced_hide_shorts_effect_button_summary_off">Effekt-Taste ist eingeblendet</string>
|
||||||
<string name="revanced_hide_shorts_green_screen_button_title">Green-Screen-Button ausblenden</string>
|
<string name="revanced_hide_shorts_green_screen_button_title">Schaltfläche \"Greenscreen\" ausblenden</string>
|
||||||
<string name="revanced_hide_shorts_green_screen_button_summary_on">Grünbildschirm-Taste ist ausgeblendet</string>
|
<string name="revanced_hide_shorts_green_screen_button_summary_on">Grünbildschirm-Taste ist ausgeblendet</string>
|
||||||
<string name="revanced_hide_shorts_green_screen_button_summary_off">Grünbildschirm-Taste wird angezeigt</string>
|
<string name="revanced_hide_shorts_green_screen_button_summary_off">Grünbildschirm-Taste wird angezeigt</string>
|
||||||
<string name="revanced_hide_shorts_hashtag_button_title">Hashtag Button ausblenden</string>
|
<string name="revanced_hide_shorts_hashtag_button_title">Hashtag Button ausblenden</string>
|
||||||
@@ -892,10 +908,13 @@ Um das Audiotrack-Menü anzuzeigen, ändern Sie \"Video-Streams fälschen\" zu i
|
|||||||
<string name="revanced_hide_shorts_join_button_title">\'Beitreten\'-Button ausblenden</string>
|
<string name="revanced_hide_shorts_join_button_title">\'Beitreten\'-Button ausblenden</string>
|
||||||
<string name="revanced_hide_shorts_join_button_summary_on">Join Button ist ausgeblendet</string>
|
<string name="revanced_hide_shorts_join_button_summary_on">Join Button ist ausgeblendet</string>
|
||||||
<string name="revanced_hide_shorts_join_button_summary_off">Schaltfläche beitreten wird angezeigt</string>
|
<string name="revanced_hide_shorts_join_button_summary_off">Schaltfläche beitreten wird angezeigt</string>
|
||||||
|
<string name="revanced_hide_shorts_live_preview_title">Live-Vorschau ausblenden</string>
|
||||||
|
<string name="revanced_hide_shorts_live_preview_summary_on">Live-Vorschau ist ausgeblendet</string>
|
||||||
|
<string name="revanced_hide_shorts_live_preview_summary_off">Live-Vorschau wird angezeigt</string>
|
||||||
<string name="revanced_hide_shorts_location_label_title">Standortbezeichnung ausblenden</string>
|
<string name="revanced_hide_shorts_location_label_title">Standortbezeichnung ausblenden</string>
|
||||||
<string name="revanced_hide_shorts_location_label_summary_on">Ortsbezeichnung ist ausgeblendet</string>
|
<string name="revanced_hide_shorts_location_label_summary_on">Ortsbezeichnung ist ausgeblendet</string>
|
||||||
<string name="revanced_hide_shorts_location_label_summary_off">Ortsbezeichnung wird angezeigt</string>
|
<string name="revanced_hide_shorts_location_label_summary_off">Ortsbezeichnung wird angezeigt</string>
|
||||||
<string name="revanced_hide_shorts_new_posts_button_title">Schaltfläche \"Neue Beiträge ausblenden\"</string>
|
<string name="revanced_hide_shorts_new_posts_button_title">Schaltfläche \"Neue Beiträge\" ausblenden</string>
|
||||||
<string name="revanced_hide_shorts_new_posts_button_summary_on">Schaltfläche \"Neue Beiträge\" ist ausgeblendet</string>
|
<string name="revanced_hide_shorts_new_posts_button_summary_on">Schaltfläche \"Neue Beiträge\" ist ausgeblendet</string>
|
||||||
<string name="revanced_hide_shorts_new_posts_button_summary_off">Schaltfläche \"Neue Beiträge\" wird angezeigt</string>
|
<string name="revanced_hide_shorts_new_posts_button_summary_off">Schaltfläche \"Neue Beiträge\" wird angezeigt</string>
|
||||||
<string name="revanced_hide_shorts_paused_overlay_buttons_title">Pausierte Overlay-Tasten ausblenden</string>
|
<string name="revanced_hide_shorts_paused_overlay_buttons_title">Pausierte Overlay-Tasten ausblenden</string>
|
||||||
@@ -904,7 +923,7 @@ Um das Audiotrack-Menü anzuzeigen, ändern Sie \"Video-Streams fälschen\" zu i
|
|||||||
<string name="revanced_hide_shorts_preview_comment_title">Kommentarvorschau ausblenden</string>
|
<string name="revanced_hide_shorts_preview_comment_title">Kommentarvorschau ausblenden</string>
|
||||||
<string name="revanced_hide_shorts_preview_comment_summary_on">Vorschaukommentar ist ausgeblendet</string>
|
<string name="revanced_hide_shorts_preview_comment_summary_on">Vorschaukommentar ist ausgeblendet</string>
|
||||||
<string name="revanced_hide_shorts_preview_comment_summary_off">Vorschaukommentar wird angezeigt</string>
|
<string name="revanced_hide_shorts_preview_comment_summary_off">Vorschaukommentar wird angezeigt</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_title">\'Musik speichern\'-Button ausblenden</string>
|
<string name="revanced_hide_shorts_save_sound_button_title">Schaltfläche \"Musik speichern\" ausblenden</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_summary_on">Musikspeicher Button ist ausgeblendet</string>
|
<string name="revanced_hide_shorts_save_sound_button_summary_on">Musikspeicher Button ist ausgeblendet</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_summary_off">Musikspeicher Button wird angezeigt</string>
|
<string name="revanced_hide_shorts_save_sound_button_summary_off">Musikspeicher Button wird angezeigt</string>
|
||||||
<string name="revanced_hide_shorts_search_suggestions_title">Suchvorschläge ausblenden</string>
|
<string name="revanced_hide_shorts_search_suggestions_title">Suchvorschläge ausblenden</string>
|
||||||
@@ -928,7 +947,7 @@ Um das Audiotrack-Menü anzuzeigen, ändern Sie \"Video-Streams fälschen\" zu i
|
|||||||
<string name="revanced_hide_shorts_use_sound_button_title">Schaltfläche \"Diesen Sound verwenden\" ausblenden</string>
|
<string name="revanced_hide_shorts_use_sound_button_title">Schaltfläche \"Diesen Sound verwenden\" ausblenden</string>
|
||||||
<string name="revanced_hide_shorts_use_sound_button_summary_on">Schaltfläche \"Diesen Sound verwenden\" ist ausgeblendet</string>
|
<string name="revanced_hide_shorts_use_sound_button_summary_on">Schaltfläche \"Diesen Sound verwenden\" ist ausgeblendet</string>
|
||||||
<string name="revanced_hide_shorts_use_sound_button_summary_off">Schaltfläche \"Diesen Sound verwenden\" ist angezeigt</string>
|
<string name="revanced_hide_shorts_use_sound_button_summary_off">Schaltfläche \"Diesen Sound verwenden\" ist angezeigt</string>
|
||||||
<string name="revanced_hide_shorts_use_template_button_title">Schaltfläche „Diese Vorlage verwenden“ ausblenden</string>
|
<string name="revanced_hide_shorts_use_template_button_title">Schaltfläche \"Diese Vorlage verwenden\" ausblenden</string>
|
||||||
<string name="revanced_hide_shorts_use_template_button_summary_on">Schaltfläche \"Diese Vorlage verwenden\" ist ausgeblendet</string>
|
<string name="revanced_hide_shorts_use_template_button_summary_on">Schaltfläche \"Diese Vorlage verwenden\" ist ausgeblendet</string>
|
||||||
<string name="revanced_hide_shorts_use_template_button_summary_off">Schaltfläche „Diese Vorlage verwenden“ wird angezeigt</string>
|
<string name="revanced_hide_shorts_use_template_button_summary_off">Schaltfläche „Diese Vorlage verwenden“ wird angezeigt</string>
|
||||||
<string name="revanced_hide_shorts_like_fountain_title">\'Like\'-Button-Fontäne ausblenden</string>
|
<string name="revanced_hide_shorts_like_fountain_title">\'Like\'-Button-Fontäne ausblenden</string>
|
||||||
@@ -1571,13 +1590,13 @@ Durch Aktivieren dieser Option können höhere Videoqualitäten freigeschaltet w
|
|||||||
</patch>
|
</patch>
|
||||||
<patch id="video.speed.button.playbackSpeedButtonPatch">
|
<patch id="video.speed.button.playbackSpeedButtonPatch">
|
||||||
<string name="revanced_playback_speed_dialog_button_title">Zeige Geschwindigkeitsdialog Taste</string>
|
<string name="revanced_playback_speed_dialog_button_title">Zeige Geschwindigkeitsdialog Taste</string>
|
||||||
<string name="revanced_playback_speed_dialog_button_summary_on">Die Schaltfläche wird angezeigt. Tippen und halten, um die Wiedergabegeschwindigkeit auf die Standardeinstellung zurückzusetzen.</string>
|
<string name="revanced_playback_speed_dialog_button_summary_on">Schaltfläche für Geschwindigkeitsdialog wird angezeigt. Tippen und halten, um die Wiedergabegeschwindigkeit auf Standard zurückzusetzen.</string>
|
||||||
<string name="revanced_playback_speed_dialog_button_summary_off">Button wird nicht angezeigt</string>
|
<string name="revanced_playback_speed_dialog_button_summary_off">Schaltfläche für Geschwindigkeitsdialog wird nicht angezeigt</string>
|
||||||
</patch>
|
</patch>
|
||||||
<patch id="video.quality.button.videoQualityDialogButtonPatch">
|
<patch id="video.quality.button.videoQualityDialogButtonPatch">
|
||||||
<string name="revanced_video_quality_dialog_button_title">Videoqualität-Schaltfläche anzeigen</string>
|
<string name="revanced_video_quality_dialog_button_title">Videoqualität-Schaltfläche anzeigen</string>
|
||||||
<string name="revanced_video_quality_dialog_button_summary_on">Schaltfläche wird angezeigt. Tippen und halten, um die Qualität auf Standard zurückzusetzen</string>
|
<string name="revanced_video_quality_dialog_button_summary_on">Schaltfläche für Videoqualität wird angezeigt. Tippen und halten, um die Qualität auf Standard zurückzusetzen.</string>
|
||||||
<string name="revanced_video_quality_dialog_button_summary_off">Schaltfläche wird nicht angezeigt</string>
|
<string name="revanced_video_quality_dialog_button_summary_off">Schaltfläche für Videoqualität wird nicht angezeigt</string>
|
||||||
</patch>
|
</patch>
|
||||||
<patch id="video.speed.custom.customPlaybackSpeedPatch">
|
<patch id="video.speed.custom.customPlaybackSpeedPatch">
|
||||||
<string name="revanced_custom_speed_menu_title">Benutzerdefiniertes Wiedergabegeschwindigkeitsmenü</string>
|
<string name="revanced_custom_speed_menu_title">Benutzerdefiniertes Wiedergabegeschwindigkeitsmenü</string>
|
||||||
|
|||||||
@@ -284,6 +284,9 @@ Second \"item\" text"</string>
|
|||||||
<string name="revanced_hide_video_recommendation_labels_title">Ετικέτες προτάσεων βίντεο</string>
|
<string name="revanced_hide_video_recommendation_labels_title">Ετικέτες προτάσεων βίντεο</string>
|
||||||
<string name="revanced_hide_video_recommendation_labels_summary_on">Κρυμμένες\n\nΑφορά τις ετικέτες «Άλλοι χρήστες παρακολούθησαν επίσης» και «Ενδέχεται επίσης να σας αρέσει» στα αποτελέσματα αναζήτησης</string>
|
<string name="revanced_hide_video_recommendation_labels_summary_on">Κρυμμένες\n\nΑφορά τις ετικέτες «Άλλοι χρήστες παρακολούθησαν επίσης» και «Ενδέχεται επίσης να σας αρέσει» στα αποτελέσματα αναζήτησης</string>
|
||||||
<string name="revanced_hide_video_recommendation_labels_summary_off">Εμφανίζονται\n\nΑφορά τις ετικέτες «Άλλοι χρήστες παρακολούθησαν επίσης» και «Ενδέχεται επίσης να σας αρέσει» στα αποτελέσματα αναζήτησης</string>
|
<string name="revanced_hide_video_recommendation_labels_summary_off">Εμφανίζονται\n\nΑφορά τις ετικέτες «Άλλοι χρήστες παρακολούθησαν επίσης» και «Ενδέχεται επίσης να σας αρέσει» στα αποτελέσματα αναζήτησης</string>
|
||||||
|
<string name="revanced_hide_visual_spacer_title">Οπτικό διαχωριστικό</string>
|
||||||
|
<string name="revanced_hide_visual_spacer_summary_on">Κρυμμένο</string>
|
||||||
|
<string name="revanced_hide_visual_spacer_summary_off">Εμφανίζεται</string>
|
||||||
<!-- https://logos.fandom.com/wiki/YouTube/Yoodles -->
|
<!-- https://logos.fandom.com/wiki/YouTube/Yoodles -->
|
||||||
<string name="revanced_hide_doodles_title">YouTube Doodles</string>
|
<string name="revanced_hide_doodles_title">YouTube Doodles</string>
|
||||||
<string name="revanced_hide_doodles_summary_on">Κρυμμένα\n\nΑφορά τις κινούμενες εικόνες YouTube Doodles στο λογότυπο</string>
|
<string name="revanced_hide_doodles_summary_on">Κρυμμένα\n\nΑφορά τις κινούμενες εικόνες YouTube Doodles στο λογότυπο</string>
|
||||||
@@ -335,7 +338,7 @@ Second \"item\" text"</string>
|
|||||||
<string name="revanced_hide_chapters_section_title">Κεφάλαια του βίντεο</string>
|
<string name="revanced_hide_chapters_section_title">Κεφάλαια του βίντεο</string>
|
||||||
<string name="revanced_hide_chapters_section_summary_on">Κρυμμένη</string>
|
<string name="revanced_hide_chapters_section_summary_on">Κρυμμένη</string>
|
||||||
<string name="revanced_hide_chapters_section_summary_off">Εμφανίζεται</string>
|
<string name="revanced_hide_chapters_section_summary_off">Εμφανίζεται</string>
|
||||||
<string name="revanced_hide_how_this_was_made_section_title">Ενότητα «Πως δημιουργήθηκε αυτό το περιεχόμενο»</string>
|
<string name="revanced_hide_how_this_was_made_section_title">Ενότητα «Πως δημιουργήθηκε»</string>
|
||||||
<string name="revanced_hide_how_this_was_made_section_summary_on">Κρυμμένη</string>
|
<string name="revanced_hide_how_this_was_made_section_summary_on">Κρυμμένη</string>
|
||||||
<string name="revanced_hide_how_this_was_made_section_summary_off">Εμφανίζεται</string>
|
<string name="revanced_hide_how_this_was_made_section_summary_off">Εμφανίζεται</string>
|
||||||
<string name="revanced_hide_hype_points_title">Πόντοι Hype</string>
|
<string name="revanced_hide_hype_points_title">Πόντοι Hype</string>
|
||||||
@@ -344,18 +347,21 @@ Second \"item\" text"</string>
|
|||||||
<string name="revanced_hide_podcast_section_title">Ενότητα «Εξερευνήστε το podcast»</string>
|
<string name="revanced_hide_podcast_section_title">Ενότητα «Εξερευνήστε το podcast»</string>
|
||||||
<string name="revanced_hide_podcast_section_summary_on">Κρυμμένη</string>
|
<string name="revanced_hide_podcast_section_summary_on">Κρυμμένη</string>
|
||||||
<string name="revanced_hide_podcast_section_summary_off">Εμφανίζεται</string>
|
<string name="revanced_hide_podcast_section_summary_off">Εμφανίζεται</string>
|
||||||
<string name="revanced_hide_featured_section_title">Ενότητα προτεινόμενων συνδέσμων</string>
|
<string name="revanced_hide_featured_links_section_title">Ενότητα προτεινόμενων συνδέσμων</string>
|
||||||
<string name="revanced_hide_featured_section_summary_on">Κρυμμένη</string>
|
<string name="revanced_hide_featured_links_section_summary_on">Κρυμμένη</string>
|
||||||
<string name="revanced_hide_featured_section_summary_off">Εμφανίζεται</string>
|
<string name="revanced_hide_featured_links_section_summary_off">Εμφανίζεται</string>
|
||||||
<string name="revanced_hide_info_cards_section_title">Κάρτες πληροφοριών</string>
|
<string name="revanced_hide_featured_videos_section_title">Ενότητα προτεινόμενων βίντεο</string>
|
||||||
|
<string name="revanced_hide_featured_videos_section_summary_on">Κρυμμένη</string>
|
||||||
|
<string name="revanced_hide_featured_videos_section_summary_off">Εμφανίζεται</string>
|
||||||
|
<string name="revanced_hide_info_cards_section_title">Ενότητα καρτών πληροφοριών</string>
|
||||||
<string name="revanced_hide_info_cards_section_summary_on">Κρυμμένη</string>
|
<string name="revanced_hide_info_cards_section_summary_on">Κρυμμένη</string>
|
||||||
<string name="revanced_hide_info_cards_section_summary_off">Εμφανίζεται</string>
|
<string name="revanced_hide_info_cards_section_summary_off">Εμφανίζεται</string>
|
||||||
<string name="revanced_hide_key_concepts_section_title">Ενότητα «Βασικές έννοιες»</string>
|
<string name="revanced_hide_key_concepts_section_title">Ενότητα «Βασικές έννοιες»</string>
|
||||||
<string name="revanced_hide_key_concepts_section_summary_on">Κρυμμένη</string>
|
<string name="revanced_hide_key_concepts_section_summary_on">Κρυμμένη</string>
|
||||||
<string name="revanced_hide_key_concepts_section_summary_off">Εμφανίζεται</string>
|
<string name="revanced_hide_key_concepts_section_summary_off">Εμφανίζεται</string>
|
||||||
<string name="revanced_hide_description_subscribe_button_title">Κουμπί «Εγγραφή»</string>
|
<string name="revanced_hide_subscribe_button_title">Κουμπί «Εγγραφή»</string>
|
||||||
<string name="revanced_hide_description_subscribe_button_summary_on">Κρυμμένο</string>
|
<string name="revanced_hide_subscribe_button_summary_on">Κρυμμένο</string>
|
||||||
<string name="revanced_hide_description_subscribe_button_summary_off">Εμφανίζεται</string>
|
<string name="revanced_hide_subscribe_button_summary_off">Εμφανίζεται</string>
|
||||||
<string name="revanced_hide_transcript_section_title">Ενότητα «Μεταγραφή»</string>
|
<string name="revanced_hide_transcript_section_title">Ενότητα «Μεταγραφή»</string>
|
||||||
<string name="revanced_hide_transcript_section_summary_on">Κρυμμένη</string>
|
<string name="revanced_hide_transcript_section_summary_on">Κρυμμένη</string>
|
||||||
<string name="revanced_hide_transcript_section_summary_off">Εμφανίζεται</string>
|
<string name="revanced_hide_transcript_section_summary_off">Εμφανίζεται</string>
|
||||||
@@ -377,24 +383,32 @@ Second \"item\" text"</string>
|
|||||||
<string name="revanced_hide_filter_bar_feed_in_history_summary_off">Εμφανίζεται</string>
|
<string name="revanced_hide_filter_bar_feed_in_history_summary_off">Εμφανίζεται</string>
|
||||||
<string name="revanced_channel_screen_title">Σελίδα καναλιού</string>
|
<string name="revanced_channel_screen_title">Σελίδα καναλιού</string>
|
||||||
<string name="revanced_channel_screen_summary">Απόκρυψη ή εμφάνιση στοιχείων της σελίδας καναλιού</string>
|
<string name="revanced_channel_screen_summary">Απόκρυψη ή εμφάνιση στοιχείων της σελίδας καναλιού</string>
|
||||||
|
<!-- 'Community' should be translated with the same localized wording that YouTube displays. -->
|
||||||
|
<string name="revanced_hide_community_button_title">Κουμπί «Κοινότητα»</string>
|
||||||
|
<string name="revanced_hide_community_button_summary_on">Κρυμμένο</string>
|
||||||
|
<string name="revanced_hide_community_button_summary_off">Εμφανίζεται</string>
|
||||||
<!-- 'For You' should be translated using the same localized wording YouTube displays. -->
|
<!-- 'For You' should be translated using the same localized wording YouTube displays. -->
|
||||||
<string name="revanced_hide_for_you_shelf_title">Ενότητα «Για εσάς» στη σελίδα καναλιού</string>
|
<string name="revanced_hide_for_you_shelf_title">Ενότητα «Για εσάς» στη σελίδα καναλιού</string>
|
||||||
<string name="revanced_hide_for_you_shelf_summary_on">Κρυμμένη</string>
|
<string name="revanced_hide_for_you_shelf_summary_on">Κρυμμένη</string>
|
||||||
<string name="revanced_hide_for_you_shelf_summary_off">Εμφανίζεται</string>
|
<string name="revanced_hide_for_you_shelf_summary_off">Εμφανίζεται</string>
|
||||||
|
<!-- 'Join' should be translated with the same localized wording that YouTube displays. -->
|
||||||
|
<string name="revanced_hide_join_button_title">Κουμπί «Συμμετοχή»</string>
|
||||||
|
<string name="revanced_hide_join_button_summary_on">Κρυμμένο</string>
|
||||||
|
<string name="revanced_hide_join_button_summary_off">Εμφανίζεται</string>
|
||||||
<string name="revanced_hide_links_preview_title">Προεπισκόπηση συνδέσμων</string>
|
<string name="revanced_hide_links_preview_title">Προεπισκόπηση συνδέσμων</string>
|
||||||
<string name="revanced_hide_links_preview_summary_on">Κρυμμένη</string>
|
<string name="revanced_hide_links_preview_summary_on">Κρυμμένη</string>
|
||||||
<string name="revanced_hide_links_preview_summary_off">Εμφανίζεται</string>
|
<string name="revanced_hide_links_preview_summary_off">Εμφανίζεται</string>
|
||||||
<string name="revanced_hide_members_shelf_title">Ενότητα μελών</string>
|
<string name="revanced_hide_members_shelf_title">Ενότητα μελών</string>
|
||||||
<string name="revanced_hide_members_shelf_summary_on">Κρυμμένη</string>
|
<string name="revanced_hide_members_shelf_summary_on">Κρυμμένη</string>
|
||||||
<string name="revanced_hide_members_shelf_summary_off">Εμφανίζεται</string>
|
<string name="revanced_hide_members_shelf_summary_off">Εμφανίζεται</string>
|
||||||
<!-- 'Visit Community' should be translated with the same localized wording that YouTube displays. -->
|
<!-- 'Store' should be translated with the same localized wording that YouTube displays. -->
|
||||||
<string name="revanced_hide_visit_community_button_title">Κουμπί «Επισκεφτείτε την κοινότητα»</string>
|
<string name="revanced_hide_store_button_title">Κουμπί «Κατάστημα»</string>
|
||||||
<string name="revanced_hide_visit_community_button_summary_on">Κρυμμένο</string>
|
<string name="revanced_hide_store_button_summary_on">Κρυμμένο</string>
|
||||||
<string name="revanced_hide_visit_community_button_summary_off">Εμφανίζεται</string>
|
<string name="revanced_hide_store_button_summary_off">Εμφανίζεται</string>
|
||||||
<!-- 'Visit store' should be translated with the same localized wording that YouTube displays. -->
|
<!-- 'Subscribe' should be translated with the same localized wording that YouTube displays. -->
|
||||||
<string name="revanced_hide_visit_store_button_title">Κουμπί «Επίσκεψη στο κατάστημα»</string>
|
<string name="revanced_hide_subscribe_button_in_channel_page_title">Κουμπί «Εγγραφή»</string>
|
||||||
<string name="revanced_hide_visit_store_button_summary_on">Κρυμμένο</string>
|
<string name="revanced_hide_subscribe_button_in_channel_page_summary_on">Κρυμμένο</string>
|
||||||
<string name="revanced_hide_visit_store_button_summary_off">Εμφανίζεται</string>
|
<string name="revanced_hide_subscribe_button_in_channel_page_summary_off">Εμφανίζεται</string>
|
||||||
<string name="revanced_comments_screen_title">Σχόλια</string>
|
<string name="revanced_comments_screen_title">Σχόλια</string>
|
||||||
<string name="revanced_comments_screen_summary">Απόκρυψη ή εμφάνιση στοιχείων στα σχόλια</string>
|
<string name="revanced_comments_screen_summary">Απόκρυψη ή εμφάνιση στοιχείων στα σχόλια</string>
|
||||||
<string name="revanced_hide_comments_ai_chat_summary_title">Σύνοψη συζήτησης που δημιουργήθηκε από AI</string>
|
<string name="revanced_hide_comments_ai_chat_summary_title">Σύνοψη συζήτησης που δημιουργήθηκε από AI</string>
|
||||||
@@ -536,11 +550,11 @@ Second \"item\" text"</string>
|
|||||||
<string name="revanced_share_copy_url_success">Η διεύθυνση URL αντιγράφηκε στο πρόχειρο</string>
|
<string name="revanced_share_copy_url_success">Η διεύθυνση URL αντιγράφηκε στο πρόχειρο</string>
|
||||||
<string name="revanced_share_copy_url_timestamp_success">Η διεύθυνση URL αντιγράφηκε με χρονική σήμανση</string>
|
<string name="revanced_share_copy_url_timestamp_success">Η διεύθυνση URL αντιγράφηκε με χρονική σήμανση</string>
|
||||||
<string name="revanced_copy_video_url_title">Εμφάνιση κουμπιού αντιγραφής URL του βίντεο</string>
|
<string name="revanced_copy_video_url_title">Εμφάνιση κουμπιού αντιγραφής URL του βίντεο</string>
|
||||||
<string name="revanced_copy_video_url_summary_on">Το κουμπί εμφανίζεται. Πατήστε για να αντιγράψετε τη διεύθυνση URL του βίντεο. Πατήστε παρατεταμένα για να αντιγράψετε τη διεύθυνση URL με χρονική σήμανση</string>
|
<string name="revanced_copy_video_url_summary_on">Το κουμπί αντιγραφής URL βίντεο εμφανίζεται. Πατήστε για να αντιγράψετε τη διεύθυνση URL του βίντεο. Πατήστε παρατεταμένα για να αντιγράψετε τη διεύθυνση URL με χρονική σήμανση</string>
|
||||||
<string name="revanced_copy_video_url_summary_off">Το κουμπί δεν εμφανίζεται</string>
|
<string name="revanced_copy_video_url_summary_off">Το κουμπί αντιγραφής URL βίντεο δεν εμφανίζεται</string>
|
||||||
<string name="revanced_copy_video_url_timestamp_title">Εμφάνιση κουμπιού αντιγραφής URL με χρονική σήμανση</string>
|
<string name="revanced_copy_video_url_timestamp_title">Εμφάνιση κουμπιού αντιγραφής URL με χρονική σήμανση</string>
|
||||||
<string name="revanced_copy_video_url_timestamp_summary_on">Το κουμπί εμφανίζεται. Πατήστε για να αντιγράψετε τη διεύθυνση URL του βίντεο με χρονική σήμανση. Πατήστε παρατεταμένα για να αντιγράψετε τη διεύθυνση URL χωρίς χρονική σήμανση</string>
|
<string name="revanced_copy_video_url_timestamp_summary_on">Το κουμπί αντιγραφής URL με χρονική σήμανση εμφανίζεται. Πατήστε για να αντιγράψετε τη διεύθυνση URL του βίντεο με χρονική σήμανση. Πατήστε παρατεταμένα για να αντιγράψετε τη διεύθυνση URL χωρίς χρονική σήμανση</string>
|
||||||
<string name="revanced_copy_video_url_timestamp_summary_off">Το κουμπί δεν εμφανίζεται</string>
|
<string name="revanced_copy_video_url_timestamp_summary_off">Το κουμπί αντιγραφής URL με χρονική σήμανση δεν εμφανίζεται</string>
|
||||||
</patch>
|
</patch>
|
||||||
<patch id="interaction.dialog.removeViewerDiscretionDialogPatch">
|
<patch id="interaction.dialog.removeViewerDiscretionDialogPatch">
|
||||||
<string name="revanced_remove_viewer_discretion_dialog_title">Παράθυρο ηλικιακού περιορισμού</string>
|
<string name="revanced_remove_viewer_discretion_dialog_title">Παράθυρο ηλικιακού περιορισμού</string>
|
||||||
@@ -681,7 +695,7 @@ Second \"item\" text"</string>
|
|||||||
<string name="revanced_hide_download_button_summary_on">Κρυμμένο</string>
|
<string name="revanced_hide_download_button_summary_on">Κρυμμένο</string>
|
||||||
<string name="revanced_hide_download_button_summary_off">Εμφανίζεται</string>
|
<string name="revanced_hide_download_button_summary_off">Εμφανίζεται</string>
|
||||||
<!-- 'Hype' should be translated with the same localized wording that YouTube displays.
|
<!-- 'Hype' should be translated with the same localized wording that YouTube displays.
|
||||||
This button only shows on videos uploaded by the logged in user. -->
|
This button only shows on videos uploaded by the logged-in user. -->
|
||||||
<string name="revanced_hide_hype_button_title">Κουμπί «Hype»</string>
|
<string name="revanced_hide_hype_button_title">Κουμπί «Hype»</string>
|
||||||
<string name="revanced_hide_hype_button_summary_on">Κρυμμένο</string>
|
<string name="revanced_hide_hype_button_summary_on">Κρυμμένο</string>
|
||||||
<string name="revanced_hide_hype_button_summary_off">Εμφανίζεται</string>
|
<string name="revanced_hide_hype_button_summary_off">Εμφανίζεται</string>
|
||||||
@@ -802,10 +816,11 @@ Second \"item\" text"</string>
|
|||||||
<string name="revanced_hide_player_flyout_audio_track_title">Μενού «Κομμάτι ήχου»</string>
|
<string name="revanced_hide_player_flyout_audio_track_title">Μενού «Κομμάτι ήχου»</string>
|
||||||
<string name="revanced_hide_player_flyout_audio_track_summary_on">Κρυμμένο</string>
|
<string name="revanced_hide_player_flyout_audio_track_summary_on">Κρυμμένο</string>
|
||||||
<string name="revanced_hide_player_flyout_audio_track_summary_off">Εμφανίζεται</string>
|
<string name="revanced_hide_player_flyout_audio_track_summary_off">Εμφανίζεται</string>
|
||||||
<!-- 'Spoof video streams' should be the same translation used for 'revanced_spoof_video_streams_screen_title'. -->
|
<!-- 'Spoof video streams' should be the same translation used for 'revanced_spoof_video_streams_screen_title'.
|
||||||
|
'Android No SDK' must be kept untranslated. -->
|
||||||
<string name="revanced_hide_player_flyout_audio_track_not_available">"Κρυμμένο
|
<string name="revanced_hide_player_flyout_audio_track_not_available">"Κρυμμένο
|
||||||
|
|
||||||
Για να εμφανίζεται το μενού κομματιού ήχου, αλλάξτε την «Παραποίηση ροών βίντεο» σε iPadOS"</string>
|
Για να εμφανίζεται το μενού κομματιού ήχου, αλλάξτε την «Παραποίηση ροών βίντεο» σε 'Android No SDK'"</string>
|
||||||
<!-- 'Watch in VR' should be translated using the same localized wording YouTube displays for the menu item. -->
|
<!-- 'Watch in VR' should be translated using the same localized wording YouTube displays for the menu item. -->
|
||||||
<string name="revanced_hide_player_flyout_watch_in_vr_title">Μενού «Προβολή σε VR»</string>
|
<string name="revanced_hide_player_flyout_watch_in_vr_title">Μενού «Προβολή σε VR»</string>
|
||||||
<string name="revanced_hide_player_flyout_watch_in_vr_summary_on">Κρυμμένο</string>
|
<string name="revanced_hide_player_flyout_watch_in_vr_summary_on">Κρυμμένο</string>
|
||||||
@@ -881,6 +896,9 @@ Second \"item\" text"</string>
|
|||||||
<string name="revanced_hide_shorts_history_title">Shorts στο ιστορικό παρακολούθησης</string>
|
<string name="revanced_hide_shorts_history_title">Shorts στο ιστορικό παρακολούθησης</string>
|
||||||
<string name="revanced_hide_shorts_history_summary_on">Κρυμμένα</string>
|
<string name="revanced_hide_shorts_history_summary_on">Κρυμμένα</string>
|
||||||
<string name="revanced_hide_shorts_history_summary_off">Εμφανίζονται</string>
|
<string name="revanced_hide_shorts_history_summary_off">Εμφανίζονται</string>
|
||||||
|
<string name="revanced_hide_shorts_auto_dubbed_label_title">Ετικέτα αυτόματης μεταγλώττισης</string>
|
||||||
|
<string name="revanced_hide_shorts_auto_dubbed_label_summary_on">Κρυμμένη</string>
|
||||||
|
<string name="revanced_hide_shorts_auto_dubbed_label_summary_off">Εμφανίζεται</string>
|
||||||
<string name="revanced_hide_shorts_super_thanks_button_title">Κουμπί «Αγορά Super Thanks»</string>
|
<string name="revanced_hide_shorts_super_thanks_button_title">Κουμπί «Αγορά Super Thanks»</string>
|
||||||
<string name="revanced_hide_shorts_super_thanks_button_summary_on">Κρυμμένο</string>
|
<string name="revanced_hide_shorts_super_thanks_button_summary_on">Κρυμμένο</string>
|
||||||
<string name="revanced_hide_shorts_super_thanks_button_summary_off">Εμφανίζεται</string>
|
<string name="revanced_hide_shorts_super_thanks_button_summary_off">Εμφανίζεται</string>
|
||||||
@@ -897,6 +915,9 @@ Second \"item\" text"</string>
|
|||||||
<string name="revanced_hide_shorts_join_button_title">Κουμπί «Συμμετοχή»</string>
|
<string name="revanced_hide_shorts_join_button_title">Κουμπί «Συμμετοχή»</string>
|
||||||
<string name="revanced_hide_shorts_join_button_summary_on">Κρυμμένο</string>
|
<string name="revanced_hide_shorts_join_button_summary_on">Κρυμμένο</string>
|
||||||
<string name="revanced_hide_shorts_join_button_summary_off">Εμφανίζεται</string>
|
<string name="revanced_hide_shorts_join_button_summary_off">Εμφανίζεται</string>
|
||||||
|
<string name="revanced_hide_shorts_live_preview_title">Προεπισκόπηση live</string>
|
||||||
|
<string name="revanced_hide_shorts_live_preview_summary_on">Κρυμμένη</string>
|
||||||
|
<string name="revanced_hide_shorts_live_preview_summary_off">Εμφανίζεται</string>
|
||||||
<string name="revanced_hide_shorts_location_label_title">Ετικέτα τοποθεσίας</string>
|
<string name="revanced_hide_shorts_location_label_title">Ετικέτα τοποθεσίας</string>
|
||||||
<string name="revanced_hide_shorts_location_label_summary_on">Κρυμμένη</string>
|
<string name="revanced_hide_shorts_location_label_summary_on">Κρυμμένη</string>
|
||||||
<string name="revanced_hide_shorts_location_label_summary_off">Εμφανίζεται</string>
|
<string name="revanced_hide_shorts_location_label_summary_off">Εμφανίζεται</string>
|
||||||
@@ -1573,13 +1594,13 @@ Second \"item\" text"</string>
|
|||||||
</patch>
|
</patch>
|
||||||
<patch id="video.speed.button.playbackSpeedButtonPatch">
|
<patch id="video.speed.button.playbackSpeedButtonPatch">
|
||||||
<string name="revanced_playback_speed_dialog_button_title">Εμφάνιση κουμπιού αλλαγής ταχύτητας</string>
|
<string name="revanced_playback_speed_dialog_button_title">Εμφάνιση κουμπιού αλλαγής ταχύτητας</string>
|
||||||
<string name="revanced_playback_speed_dialog_button_summary_on">Το κουμπί εμφανίζεται. Πατήστε παρατεταμένα για επαναφορά της ταχύτητας αναπαραγωγής στην προεπιλογή</string>
|
<string name="revanced_playback_speed_dialog_button_summary_on">Το κουμπί αλλαγής ταχύτητας εμφανίζεται. Πατήστε παρατεταμένα για επαναφορά της ταχύτητας αναπαραγωγής στην προεπιλογή</string>
|
||||||
<string name="revanced_playback_speed_dialog_button_summary_off">Το κουμπί δεν εμφανίζεται</string>
|
<string name="revanced_playback_speed_dialog_button_summary_off">Το κουμπί αλλαγής ταχύτητας δεν εμφανίζεται</string>
|
||||||
</patch>
|
</patch>
|
||||||
<patch id="video.quality.button.videoQualityDialogButtonPatch">
|
<patch id="video.quality.button.videoQualityDialogButtonPatch">
|
||||||
<string name="revanced_video_quality_dialog_button_title">Εμφάνιση κουμπιού αλλαγής ποιότητας βίντεο</string>
|
<string name="revanced_video_quality_dialog_button_title">Εμφάνιση κουμπιού αλλαγής ποιότητας βίντεο</string>
|
||||||
<string name="revanced_video_quality_dialog_button_summary_on">Το κουμπί εμφανίζεται. Πατήστε παρατεταμένα για επαναφορά της ποιότητας στην προεπιλογή</string>
|
<string name="revanced_video_quality_dialog_button_summary_on">Το κουμπί ποιότητας βίντεο εμφανίζεται. Πατήστε παρατεταμένα για επαναφορά της ποιότητας στην προεπιλογή</string>
|
||||||
<string name="revanced_video_quality_dialog_button_summary_off">Το κουμπί δεν εμφανίζεται</string>
|
<string name="revanced_video_quality_dialog_button_summary_off">Το κουμπί ποιότητας βίντεο δεν εμφανίζεται</string>
|
||||||
</patch>
|
</patch>
|
||||||
<patch id="video.speed.custom.customPlaybackSpeedPatch">
|
<patch id="video.speed.custom.customPlaybackSpeedPatch">
|
||||||
<string name="revanced_custom_speed_menu_title">Μενού προσαρμοσμένης ταχύτητας αναπαραγωγής</string>
|
<string name="revanced_custom_speed_menu_title">Μενού προσαρμοσμένης ταχύτητας αναπαραγωγής</string>
|
||||||
|
|||||||
@@ -282,6 +282,9 @@ Sin embargo, si activas esto, también se registrarán algunos datos del usuario
|
|||||||
<string name="revanced_hide_video_recommendation_labels_title">Ocultar etiquetas de recomendación de vídeo</string>
|
<string name="revanced_hide_video_recommendation_labels_title">Ocultar etiquetas de recomendación de vídeo</string>
|
||||||
<string name="revanced_hide_video_recommendation_labels_summary_on">Las etiquetas \"La gente también vio\" y \"También te puede gustar\" en los resultados de búsqueda están ocultas</string>
|
<string name="revanced_hide_video_recommendation_labels_summary_on">Las etiquetas \"La gente también vio\" y \"También te puede gustar\" en los resultados de búsqueda están ocultas</string>
|
||||||
<string name="revanced_hide_video_recommendation_labels_summary_off">Las etiquetas \"La gente también vio\" y \"También te puede gustar\" en los resultados de búsqueda son visibles</string>
|
<string name="revanced_hide_video_recommendation_labels_summary_off">Las etiquetas \"La gente también vio\" y \"También te puede gustar\" en los resultados de búsqueda son visibles</string>
|
||||||
|
<string name="revanced_hide_visual_spacer_title">Ocultar espaciador visual</string>
|
||||||
|
<string name="revanced_hide_visual_spacer_summary_on">El espaciador visual está oculto</string>
|
||||||
|
<string name="revanced_hide_visual_spacer_summary_off">El espaciador visual está visible</string>
|
||||||
<!-- https://logos.fandom.com/wiki/YouTube/Yoodles -->
|
<!-- https://logos.fandom.com/wiki/YouTube/Yoodles -->
|
||||||
<string name="revanced_hide_doodles_title">Ocultar YouTube Doodles</string>
|
<string name="revanced_hide_doodles_title">Ocultar YouTube Doodles</string>
|
||||||
<string name="revanced_hide_doodles_summary_on">La animación de los Doodles de YouTube en el logotipo está oculta</string>
|
<string name="revanced_hide_doodles_summary_on">La animación de los Doodles de YouTube en el logotipo está oculta</string>
|
||||||
@@ -342,18 +345,21 @@ Si un doodle se está mostrando actualmente en tu región y este ajuste de ocult
|
|||||||
<string name="revanced_hide_podcast_section_title">Ocultar \"Explora el pódcast\"</string>
|
<string name="revanced_hide_podcast_section_title">Ocultar \"Explora el pódcast\"</string>
|
||||||
<string name="revanced_hide_podcast_section_summary_on">La sección Explora el pódcast está oculta</string>
|
<string name="revanced_hide_podcast_section_summary_on">La sección Explora el pódcast está oculta</string>
|
||||||
<string name="revanced_hide_podcast_section_summary_off">Se muestra la sección Explora el pódcast</string>
|
<string name="revanced_hide_podcast_section_summary_off">Se muestra la sección Explora el pódcast</string>
|
||||||
<string name="revanced_hide_featured_section_title">Ocultar contenido destacado</string>
|
<string name="revanced_hide_featured_links_section_title">Ocultar enlaces destacados</string>
|
||||||
<string name="revanced_hide_featured_section_summary_on">La sección de contenido destacado está oculta</string>
|
<string name="revanced_hide_featured_links_section_summary_on">La sección de enlaces destacados está oculta</string>
|
||||||
<string name="revanced_hide_featured_section_summary_off">La sección de contenido destacado se muestra</string>
|
<string name="revanced_hide_featured_links_section_summary_off">La sección de enlaces destacados es visible</string>
|
||||||
|
<string name="revanced_hide_featured_videos_section_title">Ocultar vídeos destacados</string>
|
||||||
|
<string name="revanced_hide_featured_videos_section_summary_on">La sección de vídeos destacados está oculta</string>
|
||||||
|
<string name="revanced_hide_featured_videos_section_summary_off">La sección de vídeos destacados es visible</string>
|
||||||
<string name="revanced_hide_info_cards_section_title">Ocultar tarjetas de información</string>
|
<string name="revanced_hide_info_cards_section_title">Ocultar tarjetas de información</string>
|
||||||
<string name="revanced_hide_info_cards_section_summary_on">La sección de tarjetas de información está oculta</string>
|
<string name="revanced_hide_info_cards_section_summary_on">La sección de tarjetas de información está oculta</string>
|
||||||
<string name="revanced_hide_info_cards_section_summary_off">Se muestra la sección de tarjetas de información</string>
|
<string name="revanced_hide_info_cards_section_summary_off">Se muestra la sección de tarjetas de información</string>
|
||||||
<string name="revanced_hide_key_concepts_section_title">Ocultar \"Conceptos clave\"</string>
|
<string name="revanced_hide_key_concepts_section_title">Ocultar \"Conceptos clave\"</string>
|
||||||
<string name="revanced_hide_key_concepts_section_summary_on">La sección Conceptos clave está oculta</string>
|
<string name="revanced_hide_key_concepts_section_summary_on">La sección Conceptos clave está oculta</string>
|
||||||
<string name="revanced_hide_key_concepts_section_summary_off">Se muestra la sección Conceptos clave</string>
|
<string name="revanced_hide_key_concepts_section_summary_off">Se muestra la sección Conceptos clave</string>
|
||||||
<string name="revanced_hide_description_subscribe_button_title">Ocultar botón de Suscribirse</string>
|
<string name="revanced_hide_subscribe_button_title">Ocultar botón de Suscribirse</string>
|
||||||
<string name="revanced_hide_description_subscribe_button_summary_on">El botón de Suscribirse está oculto</string>
|
<string name="revanced_hide_subscribe_button_summary_on">El botón de Suscribirse está oculto</string>
|
||||||
<string name="revanced_hide_description_subscribe_button_summary_off">El botón de Suscribirse es visible</string>
|
<string name="revanced_hide_subscribe_button_summary_off">El botón de Suscribirse es visible</string>
|
||||||
<string name="revanced_hide_transcript_section_title">Ocultar transcripción</string>
|
<string name="revanced_hide_transcript_section_title">Ocultar transcripción</string>
|
||||||
<string name="revanced_hide_transcript_section_summary_on">La sección transcripción está oculta</string>
|
<string name="revanced_hide_transcript_section_summary_on">La sección transcripción está oculta</string>
|
||||||
<string name="revanced_hide_transcript_section_summary_off">Se muestra la sección transcripción</string>
|
<string name="revanced_hide_transcript_section_summary_off">Se muestra la sección transcripción</string>
|
||||||
@@ -375,24 +381,32 @@ Si un doodle se está mostrando actualmente en tu región y este ajuste de ocult
|
|||||||
<string name="revanced_hide_filter_bar_feed_in_history_summary_off">Mostrado en el historial de reproducciones</string>
|
<string name="revanced_hide_filter_bar_feed_in_history_summary_off">Mostrado en el historial de reproducciones</string>
|
||||||
<string name="revanced_channel_screen_title">Página del canal</string>
|
<string name="revanced_channel_screen_title">Página del canal</string>
|
||||||
<string name="revanced_channel_screen_summary">Ocultar o mostrar componentes de la página del canal</string>
|
<string name="revanced_channel_screen_summary">Ocultar o mostrar componentes de la página del canal</string>
|
||||||
|
<!-- 'Community' should be translated with the same localized wording that YouTube displays. -->
|
||||||
|
<string name="revanced_hide_community_button_title">Ocultar botón de Comunidad</string>
|
||||||
|
<string name="revanced_hide_community_button_summary_on">El botón de la comunidad está oculto</string>
|
||||||
|
<string name="revanced_hide_community_button_summary_off">El botón de la comunidad es visible</string>
|
||||||
<!-- 'For You' should be translated using the same localized wording YouTube displays. -->
|
<!-- 'For You' should be translated using the same localized wording YouTube displays. -->
|
||||||
<string name="revanced_hide_for_you_shelf_title">Ocultar la sección \"Para ti\"</string>
|
<string name="revanced_hide_for_you_shelf_title">Ocultar la sección \"Para ti\"</string>
|
||||||
<string name="revanced_hide_for_you_shelf_summary_on">La estantería \"Para ti\" está oculta</string>
|
<string name="revanced_hide_for_you_shelf_summary_on">La estantería \"Para ti\" está oculta</string>
|
||||||
<string name="revanced_hide_for_you_shelf_summary_off">La estantería \"Para ti\" es visible</string>
|
<string name="revanced_hide_for_you_shelf_summary_off">La estantería \"Para ti\" es visible</string>
|
||||||
|
<!-- 'Join' should be translated with the same localized wording that YouTube displays. -->
|
||||||
|
<string name="revanced_hide_join_button_title">Ocultar el botón \"Unirse\"</string>
|
||||||
|
<string name="revanced_hide_join_button_summary_on">El botón Unirse está oculto</string>
|
||||||
|
<string name="revanced_hide_join_button_summary_off">El botón Unirse es visible</string>
|
||||||
<string name="revanced_hide_links_preview_title">Ocultar vista previa de enlaces</string>
|
<string name="revanced_hide_links_preview_title">Ocultar vista previa de enlaces</string>
|
||||||
<string name="revanced_hide_links_preview_summary_on">La vista previa de enlaces está oculta</string>
|
<string name="revanced_hide_links_preview_summary_on">La vista previa de enlaces está oculta</string>
|
||||||
<string name="revanced_hide_links_preview_summary_off">Vista previa de enlaces visible</string>
|
<string name="revanced_hide_links_preview_summary_off">Vista previa de enlaces visible</string>
|
||||||
<string name="revanced_hide_members_shelf_title">Ocultar estantería de miembros</string>
|
<string name="revanced_hide_members_shelf_title">Ocultar estantería de miembros</string>
|
||||||
<string name="revanced_hide_members_shelf_summary_on">La estantería de miembros está oculta</string>
|
<string name="revanced_hide_members_shelf_summary_on">La estantería de miembros está oculta</string>
|
||||||
<string name="revanced_hide_members_shelf_summary_off">La estantería de miembros se muestra</string>
|
<string name="revanced_hide_members_shelf_summary_off">La estantería de miembros se muestra</string>
|
||||||
<!-- 'Visit Community' should be translated with the same localized wording that YouTube displays. -->
|
<!-- 'Store' should be translated with the same localized wording that YouTube displays. -->
|
||||||
<string name="revanced_hide_visit_community_button_title">Ocultar el botón \"Visitar comunidad\"</string>
|
<string name="revanced_hide_store_button_title">Ocultar el botón Tienda</string>
|
||||||
<string name="revanced_hide_visit_community_button_summary_on">El botón Visitar comunidad está oculto</string>
|
<string name="revanced_hide_store_button_summary_on">El botón Tienda está oculto</string>
|
||||||
<string name="revanced_hide_visit_community_button_summary_off">El botón \"Visitar comunidad\" es visible</string>
|
<string name="revanced_hide_store_button_summary_off">El botón Tienda es visible</string>
|
||||||
<!-- 'Visit store' should be translated with the same localized wording that YouTube displays. -->
|
<!-- 'Subscribe' should be translated with the same localized wording that YouTube displays. -->
|
||||||
<string name="revanced_hide_visit_store_button_title">Ocultar el botón \'Visitar tienda\' en las páginas del canal</string>
|
<string name="revanced_hide_subscribe_button_in_channel_page_title">Ocultar el botón Suscribirse</string>
|
||||||
<string name="revanced_hide_visit_store_button_summary_on">El botón \"Visitar tienda\" está oculto</string>
|
<string name="revanced_hide_subscribe_button_in_channel_page_summary_on">El botón Suscribirse está oculto</string>
|
||||||
<string name="revanced_hide_visit_store_button_summary_off">El botón \"Visitar tienda\" es visible</string>
|
<string name="revanced_hide_subscribe_button_in_channel_page_summary_off">El botón Suscribirse es visible</string>
|
||||||
<string name="revanced_comments_screen_title">Comentarios</string>
|
<string name="revanced_comments_screen_title">Comentarios</string>
|
||||||
<string name="revanced_comments_screen_summary">Ocultar o mostrar los componentes de sección de comentarios</string>
|
<string name="revanced_comments_screen_summary">Ocultar o mostrar los componentes de sección de comentarios</string>
|
||||||
<string name="revanced_hide_comments_ai_chat_summary_title">Ocultar resumen de chat de IA</string>
|
<string name="revanced_hide_comments_ai_chat_summary_title">Ocultar resumen de chat de IA</string>
|
||||||
@@ -534,11 +548,11 @@ Esta función solo está disponible para dispositivos antiguos"</string>
|
|||||||
<string name="revanced_share_copy_url_success">URL copiada al portapapeles</string>
|
<string name="revanced_share_copy_url_success">URL copiada al portapapeles</string>
|
||||||
<string name="revanced_share_copy_url_timestamp_success">URL con marca de tiempo copiada</string>
|
<string name="revanced_share_copy_url_timestamp_success">URL con marca de tiempo copiada</string>
|
||||||
<string name="revanced_copy_video_url_title">Mostrar botón URL de copia de vídeo</string>
|
<string name="revanced_copy_video_url_title">Mostrar botón URL de copia de vídeo</string>
|
||||||
<string name="revanced_copy_video_url_summary_on">El botón se muestra. Toca para copiar la URL del vídeo. Toca y mantén pulsado para copiar con la marca de tiempo</string>
|
<string name="revanced_copy_video_url_summary_on">El botón Copiar URL del vídeo es visible. Toca para copiar la URL del vídeo. Mantén pulsado para copiar con marca de tiempo</string>
|
||||||
<string name="revanced_copy_video_url_summary_off">El botón no se muestra</string>
|
<string name="revanced_copy_video_url_summary_off">El botón Copiar URL del vídeo no es visible</string>
|
||||||
<string name="revanced_copy_video_url_timestamp_title">Mostrar botón URL de la marca de tiempo</string>
|
<string name="revanced_copy_video_url_timestamp_title">Mostrar botón URL de la marca de tiempo</string>
|
||||||
<string name="revanced_copy_video_url_timestamp_summary_on">El botón se muestra. Toca para copiar la URL del vídeo con la marca de tiempo. Toca y mantén pulsado para copiar sin la marca de tiempo</string>
|
<string name="revanced_copy_video_url_timestamp_summary_on">El botón Copiar URL con marca de tiempo es visible. Toca para copiar la URL del vídeo con marca de tiempo. Mantén pulsado para copiar sin marca de tiempo</string>
|
||||||
<string name="revanced_copy_video_url_timestamp_summary_off">El botón no se muestra</string>
|
<string name="revanced_copy_video_url_timestamp_summary_off">El botón Copiar URL con marca de tiempo no es visible</string>
|
||||||
</patch>
|
</patch>
|
||||||
<patch id="interaction.dialog.removeViewerDiscretionDialogPatch">
|
<patch id="interaction.dialog.removeViewerDiscretionDialogPatch">
|
||||||
<string name="revanced_remove_viewer_discretion_dialog_title">Eliminar diálogo de discreción del espectador</string>
|
<string name="revanced_remove_viewer_discretion_dialog_title">Eliminar diálogo de discreción del espectador</string>
|
||||||
@@ -547,7 +561,7 @@ Esta función solo está disponible para dispositivos antiguos"</string>
|
|||||||
<string name="revanced_remove_viewer_discretion_dialog_user_dialog_message">Esto no evita la restricción de edad. Solo la acepta automáticamente.</string>
|
<string name="revanced_remove_viewer_discretion_dialog_user_dialog_message">Esto no evita la restricción de edad. Solo la acepta automáticamente.</string>
|
||||||
</patch>
|
</patch>
|
||||||
<patch id="layout.hide.signintotv.disableSignInToTvPopupPatch">
|
<patch id="layout.hide.signintotv.disableSignInToTvPopupPatch">
|
||||||
<string name="revanced_disable_signin_to_tv_popup_title">Desactivar la ventana emergente de Iniciar sesión en TV</string>
|
<string name="revanced_disable_signin_to_tv_popup_title">Desactivar la ventana emergente \"Iniciar sesión en TV\"</string>
|
||||||
<string name="revanced_disable_signin_to_tv_popup_summary_on">La ventana emergente de Iniciar sesión en TV está desactivada</string>
|
<string name="revanced_disable_signin_to_tv_popup_summary_on">La ventana emergente de Iniciar sesión en TV está desactivada</string>
|
||||||
<string name="revanced_disable_signin_to_tv_popup_summary_off">La ventana emergente de Iniciar sesión en TV está activada</string>
|
<string name="revanced_disable_signin_to_tv_popup_summary_off">La ventana emergente de Iniciar sesión en TV está activada</string>
|
||||||
</patch>
|
</patch>
|
||||||
@@ -679,7 +693,7 @@ Ajusta el volumen deslizando verticalmente en el lado derecho de la pantalla"</s
|
|||||||
<string name="revanced_hide_download_button_summary_on">El botón de descarga está oculto</string>
|
<string name="revanced_hide_download_button_summary_on">El botón de descarga está oculto</string>
|
||||||
<string name="revanced_hide_download_button_summary_off">Se muestra el botón de descarga</string>
|
<string name="revanced_hide_download_button_summary_off">Se muestra el botón de descarga</string>
|
||||||
<!-- 'Hype' should be translated with the same localized wording that YouTube displays.
|
<!-- 'Hype' should be translated with the same localized wording that YouTube displays.
|
||||||
This button only shows on videos uploaded by the logged in user. -->
|
This button only shows on videos uploaded by the logged-in user. -->
|
||||||
<string name="revanced_hide_hype_button_title">Ocultar Hype</string>
|
<string name="revanced_hide_hype_button_title">Ocultar Hype</string>
|
||||||
<string name="revanced_hide_hype_button_summary_on">El botón Hype está oculto</string>
|
<string name="revanced_hide_hype_button_summary_on">El botón Hype está oculto</string>
|
||||||
<string name="revanced_hide_hype_button_summary_off">El botón de hype es visible</string>
|
<string name="revanced_hide_hype_button_summary_off">El botón de hype es visible</string>
|
||||||
@@ -800,10 +814,11 @@ Si cambiar este ajuste no tiene efecto, intenta cambiar al modo incógnito."</st
|
|||||||
<string name="revanced_hide_player_flyout_audio_track_title">Ocultar pista de audio</string>
|
<string name="revanced_hide_player_flyout_audio_track_title">Ocultar pista de audio</string>
|
||||||
<string name="revanced_hide_player_flyout_audio_track_summary_on">El menú de pista de audio está oculto</string>
|
<string name="revanced_hide_player_flyout_audio_track_summary_on">El menú de pista de audio está oculto</string>
|
||||||
<string name="revanced_hide_player_flyout_audio_track_summary_off">El menú de pista de audio se muestra</string>
|
<string name="revanced_hide_player_flyout_audio_track_summary_off">El menú de pista de audio se muestra</string>
|
||||||
<!-- 'Spoof video streams' should be the same translation used for 'revanced_spoof_video_streams_screen_title'. -->
|
<!-- 'Spoof video streams' should be the same translation used for 'revanced_spoof_video_streams_screen_title'.
|
||||||
|
'Android No SDK' must be kept untranslated. -->
|
||||||
<string name="revanced_hide_player_flyout_audio_track_not_available">"El menú de la pista de audio está oculto
|
<string name="revanced_hide_player_flyout_audio_track_not_available">"El menú de la pista de audio está oculto
|
||||||
|
|
||||||
Para mostrar el menú de la pista de audio, cambia 'Suplantar transmisiones de video' a iPadOS"</string>
|
Para mostrar el menú de la pista de audio, cambia 'Suplantar transmisiones de video' a 'Android No SDK'"</string>
|
||||||
<!-- 'Watch in VR' should be translated using the same localized wording YouTube displays for the menu item. -->
|
<!-- 'Watch in VR' should be translated using the same localized wording YouTube displays for the menu item. -->
|
||||||
<string name="revanced_hide_player_flyout_watch_in_vr_title">Ocultar reloj en VR</string>
|
<string name="revanced_hide_player_flyout_watch_in_vr_title">Ocultar reloj en VR</string>
|
||||||
<string name="revanced_hide_player_flyout_watch_in_vr_summary_on">Ver en el menú VR está oculto</string>
|
<string name="revanced_hide_player_flyout_watch_in_vr_summary_on">Ver en el menú VR está oculto</string>
|
||||||
@@ -879,13 +894,16 @@ Para mostrar el menú de la pista de audio, cambia 'Suplantar transmisiones de v
|
|||||||
<string name="revanced_hide_shorts_history_title">Ocultar Shorts en el historial de visualización</string>
|
<string name="revanced_hide_shorts_history_title">Ocultar Shorts en el historial de visualización</string>
|
||||||
<string name="revanced_hide_shorts_history_summary_on">Oculto en el historial de visualización</string>
|
<string name="revanced_hide_shorts_history_summary_on">Oculto en el historial de visualización</string>
|
||||||
<string name="revanced_hide_shorts_history_summary_off">Mostrado en el historial de visualización</string>
|
<string name="revanced_hide_shorts_history_summary_off">Mostrado en el historial de visualización</string>
|
||||||
<string name="revanced_hide_shorts_super_thanks_button_title">Ocultar el botón Comprar Súper Gracias</string>
|
<string name="revanced_hide_shorts_auto_dubbed_label_title">Ocultar la etiqueta \"Doblado automáticamente\"</string>
|
||||||
|
<string name="revanced_hide_shorts_auto_dubbed_label_summary_on">La etiqueta de doblaje automático está oculta</string>
|
||||||
|
<string name="revanced_hide_shorts_auto_dubbed_label_summary_off">La etiqueta de doblaje automático está visible</string>
|
||||||
|
<string name="revanced_hide_shorts_super_thanks_button_title">Ocultar el botón \"Comprar Super Gracias\"</string>
|
||||||
<string name="revanced_hide_shorts_super_thanks_button_summary_on">El botón Comprar Super Thanks está oculto</string>
|
<string name="revanced_hide_shorts_super_thanks_button_summary_on">El botón Comprar Super Thanks está oculto</string>
|
||||||
<string name="revanced_hide_shorts_super_thanks_button_summary_off">El botón Comprar Super Thanks es visible</string>
|
<string name="revanced_hide_shorts_super_thanks_button_summary_off">El botón Comprar Super Thanks es visible</string>
|
||||||
<string name="revanced_hide_shorts_effect_button_title">Ocultar botón de efecto</string>
|
<string name="revanced_hide_shorts_effect_button_title">Ocultar botón de efecto</string>
|
||||||
<string name="revanced_hide_shorts_effect_button_summary_on">El botón de efecto está oculto</string>
|
<string name="revanced_hide_shorts_effect_button_summary_on">El botón de efecto está oculto</string>
|
||||||
<string name="revanced_hide_shorts_effect_button_summary_off">El botón de efecto es visible</string>
|
<string name="revanced_hide_shorts_effect_button_summary_off">El botón de efecto es visible</string>
|
||||||
<string name="revanced_hide_shorts_green_screen_button_title">Ocultar el botón Pantalla verde</string>
|
<string name="revanced_hide_shorts_green_screen_button_title">Ocultar el botón \"Pantalla verde\"</string>
|
||||||
<string name="revanced_hide_shorts_green_screen_button_summary_on">El botón verde de pantalla está oculto</string>
|
<string name="revanced_hide_shorts_green_screen_button_summary_on">El botón verde de pantalla está oculto</string>
|
||||||
<string name="revanced_hide_shorts_green_screen_button_summary_off">Se muestra el botón verde de pantalla</string>
|
<string name="revanced_hide_shorts_green_screen_button_summary_off">Se muestra el botón verde de pantalla</string>
|
||||||
<string name="revanced_hide_shorts_hashtag_button_title">Ocultar botón de hashtag</string>
|
<string name="revanced_hide_shorts_hashtag_button_title">Ocultar botón de hashtag</string>
|
||||||
@@ -895,10 +913,13 @@ Para mostrar el menú de la pista de audio, cambia 'Suplantar transmisiones de v
|
|||||||
<string name="revanced_hide_shorts_join_button_title">Ocultar el botón Unirse</string>
|
<string name="revanced_hide_shorts_join_button_title">Ocultar el botón Unirse</string>
|
||||||
<string name="revanced_hide_shorts_join_button_summary_on">Botón de unión oculto</string>
|
<string name="revanced_hide_shorts_join_button_summary_on">Botón de unión oculto</string>
|
||||||
<string name="revanced_hide_shorts_join_button_summary_off">Se muestra el botón de unirse</string>
|
<string name="revanced_hide_shorts_join_button_summary_off">Se muestra el botón de unirse</string>
|
||||||
|
<string name="revanced_hide_shorts_live_preview_title">Ocultar vista previa en vivo</string>
|
||||||
|
<string name="revanced_hide_shorts_live_preview_summary_on">La vista previa en vivo está oculta</string>
|
||||||
|
<string name="revanced_hide_shorts_live_preview_summary_off">La vista previa en vivo se muestra</string>
|
||||||
<string name="revanced_hide_shorts_location_label_title">Ocultar etiqueta de ubicación</string>
|
<string name="revanced_hide_shorts_location_label_title">Ocultar etiqueta de ubicación</string>
|
||||||
<string name="revanced_hide_shorts_location_label_summary_on">Etiqueta de ubicación oculta</string>
|
<string name="revanced_hide_shorts_location_label_summary_on">Etiqueta de ubicación oculta</string>
|
||||||
<string name="revanced_hide_shorts_location_label_summary_off">Etiqueta de ubicación mostrada</string>
|
<string name="revanced_hide_shorts_location_label_summary_off">Etiqueta de ubicación mostrada</string>
|
||||||
<string name="revanced_hide_shorts_new_posts_button_title">Ocultar el botón Publicaciones nuevas</string>
|
<string name="revanced_hide_shorts_new_posts_button_title">Ocultar el botón \"Nuevas publicaciones\"</string>
|
||||||
<string name="revanced_hide_shorts_new_posts_button_summary_on">El botón Publicaciones nuevas está oculto</string>
|
<string name="revanced_hide_shorts_new_posts_button_summary_on">El botón Publicaciones nuevas está oculto</string>
|
||||||
<string name="revanced_hide_shorts_new_posts_button_summary_off">Se muestra el botón Publicaciones nuevas</string>
|
<string name="revanced_hide_shorts_new_posts_button_summary_off">Se muestra el botón Publicaciones nuevas</string>
|
||||||
<string name="revanced_hide_shorts_paused_overlay_buttons_title">Ocultar botones de superposición en pausa</string>
|
<string name="revanced_hide_shorts_paused_overlay_buttons_title">Ocultar botones de superposición en pausa</string>
|
||||||
@@ -907,7 +928,7 @@ Para mostrar el menú de la pista de audio, cambia 'Suplantar transmisiones de v
|
|||||||
<string name="revanced_hide_shorts_preview_comment_title">Ocultar vista previa de comentarios</string>
|
<string name="revanced_hide_shorts_preview_comment_title">Ocultar vista previa de comentarios</string>
|
||||||
<string name="revanced_hide_shorts_preview_comment_summary_on">La vista previa de comentarios está oculta</string>
|
<string name="revanced_hide_shorts_preview_comment_summary_on">La vista previa de comentarios está oculta</string>
|
||||||
<string name="revanced_hide_shorts_preview_comment_summary_off">La vista previa de comentarios es visible</string>
|
<string name="revanced_hide_shorts_preview_comment_summary_off">La vista previa de comentarios es visible</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_title">Ocultar el botón Guardar música</string>
|
<string name="revanced_hide_shorts_save_sound_button_title">Ocultar el botón \"Guardar música\"</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_summary_on">El botón Guardar música está oculto</string>
|
<string name="revanced_hide_shorts_save_sound_button_summary_on">El botón Guardar música está oculto</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_summary_off">Mostrar el botón de guardar música</string>
|
<string name="revanced_hide_shorts_save_sound_button_summary_off">Mostrar el botón de guardar música</string>
|
||||||
<string name="revanced_hide_shorts_search_suggestions_title">Ocultar sugerencias de búsqueda</string>
|
<string name="revanced_hide_shorts_search_suggestions_title">Ocultar sugerencias de búsqueda</string>
|
||||||
@@ -928,10 +949,10 @@ Para mostrar el menú de la pista de audio, cambia 'Suplantar transmisiones de v
|
|||||||
<string name="revanced_hide_shorts_upcoming_button_title">Ocultar el botón Próximos</string>
|
<string name="revanced_hide_shorts_upcoming_button_title">Ocultar el botón Próximos</string>
|
||||||
<string name="revanced_hide_shorts_upcoming_button_summary_on">El botón próximo está oculto</string>
|
<string name="revanced_hide_shorts_upcoming_button_summary_on">El botón próximo está oculto</string>
|
||||||
<string name="revanced_hide_shorts_upcoming_button_summary_off">Se muestra el botón próximo</string>
|
<string name="revanced_hide_shorts_upcoming_button_summary_off">Se muestra el botón próximo</string>
|
||||||
<string name="revanced_hide_shorts_use_sound_button_title">Ocultar el botón Usar este sonido</string>
|
<string name="revanced_hide_shorts_use_sound_button_title">Ocultar el botón \"Usar este sonido\"</string>
|
||||||
<string name="revanced_hide_shorts_use_sound_button_summary_on">El botón Usar este sonido está oculto</string>
|
<string name="revanced_hide_shorts_use_sound_button_summary_on">El botón Usar este sonido está oculto</string>
|
||||||
<string name="revanced_hide_shorts_use_sound_button_summary_off">El botón Usar este sonido es visible</string>
|
<string name="revanced_hide_shorts_use_sound_button_summary_off">El botón Usar este sonido es visible</string>
|
||||||
<string name="revanced_hide_shorts_use_template_button_title">Ocultar botón Usar esta plantilla</string>
|
<string name="revanced_hide_shorts_use_template_button_title">Ocultar el botón \"Usar esta plantilla\"</string>
|
||||||
<string name="revanced_hide_shorts_use_template_button_summary_on">El botón Usar esta plantilla está oculto</string>
|
<string name="revanced_hide_shorts_use_template_button_summary_on">El botón Usar esta plantilla está oculto</string>
|
||||||
<string name="revanced_hide_shorts_use_template_button_summary_off">El botón Usar esta plantilla se muestra</string>
|
<string name="revanced_hide_shorts_use_template_button_summary_off">El botón Usar esta plantilla se muestra</string>
|
||||||
<string name="revanced_hide_shorts_like_fountain_title">Ocultar la animación de la fuente de Me gusta</string>
|
<string name="revanced_hide_shorts_like_fountain_title">Ocultar la animación de la fuente de Me gusta</string>
|
||||||
@@ -1565,13 +1586,13 @@ Habilitar esto puede desbloquear calidades de vídeo más altas"</string>
|
|||||||
</patch>
|
</patch>
|
||||||
<patch id="video.speed.button.playbackSpeedButtonPatch">
|
<patch id="video.speed.button.playbackSpeedButtonPatch">
|
||||||
<string name="revanced_playback_speed_dialog_button_title">Mostrar botón de diálogo de velocidad</string>
|
<string name="revanced_playback_speed_dialog_button_title">Mostrar botón de diálogo de velocidad</string>
|
||||||
<string name="revanced_playback_speed_dialog_button_summary_on">Se muestra el botón. Mantén pulsado para restablecer la velocidad de reproducción predeterminada</string>
|
<string name="revanced_playback_speed_dialog_button_summary_on">El botón del diálogo de velocidad es visible. Mantén pulsado para restablecer la velocidad de reproducción a la predeterminada</string>
|
||||||
<string name="revanced_playback_speed_dialog_button_summary_off">El botón no se muestra</string>
|
<string name="revanced_playback_speed_dialog_button_summary_off">El botón del diálogo de velocidad no es visible</string>
|
||||||
</patch>
|
</patch>
|
||||||
<patch id="video.quality.button.videoQualityDialogButtonPatch">
|
<patch id="video.quality.button.videoQualityDialogButtonPatch">
|
||||||
<string name="revanced_video_quality_dialog_button_title">Mostrar botón de calidad de vídeo</string>
|
<string name="revanced_video_quality_dialog_button_title">Mostrar botón de calidad de vídeo</string>
|
||||||
<string name="revanced_video_quality_dialog_button_summary_on">Botón visible. Toca y mantén para restablecer la calidad a los valores predeterminados</string>
|
<string name="revanced_video_quality_dialog_button_summary_on">El botón de calidad de vídeo es visible. Mantén pulsado para restablecer la calidad a la predeterminada</string>
|
||||||
<string name="revanced_video_quality_dialog_button_summary_off">Botón no visible</string>
|
<string name="revanced_video_quality_dialog_button_summary_off">El botón de calidad de vídeo no es visible</string>
|
||||||
</patch>
|
</patch>
|
||||||
<patch id="video.speed.custom.customPlaybackSpeedPatch">
|
<patch id="video.speed.custom.customPlaybackSpeedPatch">
|
||||||
<string name="revanced_custom_speed_menu_title">Menú de velocidad de reproducción personalizada</string>
|
<string name="revanced_custom_speed_menu_title">Menú de velocidad de reproducción personalizada</string>
|
||||||
|
|||||||
@@ -282,6 +282,9 @@ Selle lubamine logib aga ka mõningaid kasutajaandmeid, näiteks teie IP-aadress
|
|||||||
<string name="revanced_hide_video_recommendation_labels_title">Peida videosoovituste sildid</string>
|
<string name="revanced_hide_video_recommendation_labels_title">Peida videosoovituste sildid</string>
|
||||||
<string name="revanced_hide_video_recommendation_labels_summary_on">\'Inimesed vaatasid ka\' ja \'Võib sulle meeldida\' sildid otsingutulemustes on peidetud</string>
|
<string name="revanced_hide_video_recommendation_labels_summary_on">\'Inimesed vaatasid ka\' ja \'Võib sulle meeldida\' sildid otsingutulemustes on peidetud</string>
|
||||||
<string name="revanced_hide_video_recommendation_labels_summary_off">\'Inimesed vaatasid ka\' ja \'Võib sulle meeldida\' sildid otsingutulemustes on nähtaval</string>
|
<string name="revanced_hide_video_recommendation_labels_summary_off">\'Inimesed vaatasid ka\' ja \'Võib sulle meeldida\' sildid otsingutulemustes on nähtaval</string>
|
||||||
|
<string name="revanced_hide_visual_spacer_title">Peida visuaalne eraldaja</string>
|
||||||
|
<string name="revanced_hide_visual_spacer_summary_on">Visuaalne eraldaja on peidetud</string>
|
||||||
|
<string name="revanced_hide_visual_spacer_summary_off">Visuaalne eraldaja on nähtav</string>
|
||||||
<!-- https://logos.fandom.com/wiki/YouTube/Yoodles -->
|
<!-- https://logos.fandom.com/wiki/YouTube/Yoodles -->
|
||||||
<string name="revanced_hide_doodles_title">Peida YouTube Doodles</string>
|
<string name="revanced_hide_doodles_title">Peida YouTube Doodles</string>
|
||||||
<string name="revanced_hide_doodles_summary_on">YouTube Doodles animatsioon logol on peidetud</string>
|
<string name="revanced_hide_doodles_summary_on">YouTube Doodles animatsioon logol on peidetud</string>
|
||||||
@@ -342,18 +345,21 @@ Kui Doodle on teie piirkonnas praegu nähtav ja see peitmise seade on sisse lül
|
|||||||
<string name="revanced_hide_podcast_section_title">Peida \"Avasta taskuhäälingut\"</string>
|
<string name="revanced_hide_podcast_section_title">Peida \"Avasta taskuhäälingut\"</string>
|
||||||
<string name="revanced_hide_podcast_section_summary_on">Avasta taskuhäälingut jaotis on peidetud</string>
|
<string name="revanced_hide_podcast_section_summary_on">Avasta taskuhäälingut jaotis on peidetud</string>
|
||||||
<string name="revanced_hide_podcast_section_summary_off">Avasta taskuhäälingut jaotis on kuvatud</string>
|
<string name="revanced_hide_podcast_section_summary_off">Avasta taskuhäälingut jaotis on kuvatud</string>
|
||||||
<string name="revanced_hide_featured_section_title">Peida esiletõstetud sisu</string>
|
<string name="revanced_hide_featured_links_section_title">Peida esiletoodud lingid</string>
|
||||||
<string name="revanced_hide_featured_section_summary_on">Esiletõstetud sisu jaotis on peidetud</string>
|
<string name="revanced_hide_featured_links_section_summary_on">Esiletõstetud linkide sektsioon on peidetud</string>
|
||||||
<string name="revanced_hide_featured_section_summary_off">Esiletõstetud sisu jaotis on nähtav</string>
|
<string name="revanced_hide_featured_links_section_summary_off">Esiletõstetud linkide sektsioon on nähtav</string>
|
||||||
|
<string name="revanced_hide_featured_videos_section_title">Peida esiletõstetud videod</string>
|
||||||
|
<string name="revanced_hide_featured_videos_section_summary_on">Esiletõstetud videote sektsioon on peidetud</string>
|
||||||
|
<string name="revanced_hide_featured_videos_section_summary_off">Esiletõstetud videote sektsioon on nähtav</string>
|
||||||
<string name="revanced_hide_info_cards_section_title">Peida infokaardid</string>
|
<string name="revanced_hide_info_cards_section_title">Peida infokaardid</string>
|
||||||
<string name="revanced_hide_info_cards_section_summary_on">Teabekaartide jaotis on peidetud</string>
|
<string name="revanced_hide_info_cards_section_summary_on">Teabekaartide jaotis on peidetud</string>
|
||||||
<string name="revanced_hide_info_cards_section_summary_off">Kuvatakse teabekaartide jaotis</string>
|
<string name="revanced_hide_info_cards_section_summary_off">Kuvatakse teabekaartide jaotis</string>
|
||||||
<string name="revanced_hide_key_concepts_section_title">Peida \"Põhimõisted\"</string>
|
<string name="revanced_hide_key_concepts_section_title">Peida \"Põhimõisted\"</string>
|
||||||
<string name="revanced_hide_key_concepts_section_summary_on">Põhimõisted jaotis on peidetud</string>
|
<string name="revanced_hide_key_concepts_section_summary_on">Põhimõisted jaotis on peidetud</string>
|
||||||
<string name="revanced_hide_key_concepts_section_summary_off">Põhimõisted jaotis on kuvatud</string>
|
<string name="revanced_hide_key_concepts_section_summary_off">Põhimõisted jaotis on kuvatud</string>
|
||||||
<string name="revanced_hide_description_subscribe_button_title">Peida tellimisnupp</string>
|
<string name="revanced_hide_subscribe_button_title">Peida tellimisnupp</string>
|
||||||
<string name="revanced_hide_description_subscribe_button_summary_on">Tellimisnupp on peidetud</string>
|
<string name="revanced_hide_subscribe_button_summary_on">Tellimisnupp on peidetud</string>
|
||||||
<string name="revanced_hide_description_subscribe_button_summary_off">Tellimisnupp on nähtav</string>
|
<string name="revanced_hide_subscribe_button_summary_off">Tellimisnupp on nähtav</string>
|
||||||
<string name="revanced_hide_transcript_section_title">Peida transkriptsioon</string>
|
<string name="revanced_hide_transcript_section_title">Peida transkriptsioon</string>
|
||||||
<string name="revanced_hide_transcript_section_summary_on">Skriptiosa on peidetud</string>
|
<string name="revanced_hide_transcript_section_summary_on">Skriptiosa on peidetud</string>
|
||||||
<string name="revanced_hide_transcript_section_summary_off">Skriptiosa on näidatud</string>
|
<string name="revanced_hide_transcript_section_summary_off">Skriptiosa on näidatud</string>
|
||||||
@@ -375,24 +381,32 @@ Kui Doodle on teie piirkonnas praegu nähtav ja see peitmise seade on sisse lül
|
|||||||
<string name="revanced_hide_filter_bar_feed_in_history_summary_off">Nähtav vaatamisajaloos</string>
|
<string name="revanced_hide_filter_bar_feed_in_history_summary_off">Nähtav vaatamisajaloos</string>
|
||||||
<string name="revanced_channel_screen_title">Kanali leht</string>
|
<string name="revanced_channel_screen_title">Kanali leht</string>
|
||||||
<string name="revanced_channel_screen_summary">Peida või näita kanali lehe komponente</string>
|
<string name="revanced_channel_screen_summary">Peida või näita kanali lehe komponente</string>
|
||||||
|
<!-- 'Community' should be translated with the same localized wording that YouTube displays. -->
|
||||||
|
<string name="revanced_hide_community_button_title">Peida kogukonna nupp</string>
|
||||||
|
<string name="revanced_hide_community_button_summary_on">Kogukonna nupp on peidetud</string>
|
||||||
|
<string name="revanced_hide_community_button_summary_off">Kogukonna nupp on nähtaval</string>
|
||||||
<!-- 'For You' should be translated using the same localized wording YouTube displays. -->
|
<!-- 'For You' should be translated using the same localized wording YouTube displays. -->
|
||||||
<string name="revanced_hide_for_you_shelf_title">Peida \"Sulle\" riiul</string>
|
<string name="revanced_hide_for_you_shelf_title">Peida \"Sulle\" riiul</string>
|
||||||
<string name="revanced_hide_for_you_shelf_summary_on">Sulle mõeldud riiul on peidetud</string>
|
<string name="revanced_hide_for_you_shelf_summary_on">Sulle mõeldud riiul on peidetud</string>
|
||||||
<string name="revanced_hide_for_you_shelf_summary_off">Sulle mõeldud riiul on nähtav</string>
|
<string name="revanced_hide_for_you_shelf_summary_off">Sulle mõeldud riiul on nähtav</string>
|
||||||
|
<!-- 'Join' should be translated with the same localized wording that YouTube displays. -->
|
||||||
|
<string name="revanced_hide_join_button_title">Peida nupp „Liitu”</string>
|
||||||
|
<string name="revanced_hide_join_button_summary_on">Nupp „Liitu” on peidetud</string>
|
||||||
|
<string name="revanced_hide_join_button_summary_off">Nupp „Liitu” on nähtaval</string>
|
||||||
<string name="revanced_hide_links_preview_title">Peida linkide eelvaade</string>
|
<string name="revanced_hide_links_preview_title">Peida linkide eelvaade</string>
|
||||||
<string name="revanced_hide_links_preview_summary_on">Linkide eelvaade on peidetud</string>
|
<string name="revanced_hide_links_preview_summary_on">Linkide eelvaade on peidetud</string>
|
||||||
<string name="revanced_hide_links_preview_summary_off">Linkide eelvaade on nähtav</string>
|
<string name="revanced_hide_links_preview_summary_off">Linkide eelvaade on nähtav</string>
|
||||||
<string name="revanced_hide_members_shelf_title">Peida liikmete riiul</string>
|
<string name="revanced_hide_members_shelf_title">Peida liikmete riiul</string>
|
||||||
<string name="revanced_hide_members_shelf_summary_on">Liikmete riiul on peidetud</string>
|
<string name="revanced_hide_members_shelf_summary_on">Liikmete riiul on peidetud</string>
|
||||||
<string name="revanced_hide_members_shelf_summary_off">Liikmete riiul on nähtav</string>
|
<string name="revanced_hide_members_shelf_summary_off">Liikmete riiul on nähtav</string>
|
||||||
<!-- 'Visit Community' should be translated with the same localized wording that YouTube displays. -->
|
<!-- 'Store' should be translated with the same localized wording that YouTube displays. -->
|
||||||
<string name="revanced_hide_visit_community_button_title">Peida \"Külasta kogukonda\" nupp</string>
|
<string name="revanced_hide_store_button_title">Peida nupp „Pood”</string>
|
||||||
<string name="revanced_hide_visit_community_button_summary_on">\"Külasta kogukonda\" nupp on peidetud</string>
|
<string name="revanced_hide_store_button_summary_on">Nupp „Pood” on peidetud</string>
|
||||||
<string name="revanced_hide_visit_community_button_summary_off">Nupp \"Külasta kogukonda\" on nähtav</string>
|
<string name="revanced_hide_store_button_summary_off">Nupp „Pood” on nähtaval</string>
|
||||||
<!-- 'Visit store' should be translated with the same localized wording that YouTube displays. -->
|
<!-- 'Subscribe' should be translated with the same localized wording that YouTube displays. -->
|
||||||
<string name="revanced_hide_visit_store_button_title">Peida kanali lehelt nuppu \"Külasta poodi\"</string>
|
<string name="revanced_hide_subscribe_button_in_channel_page_title">Peida nupp „Telli”</string>
|
||||||
<string name="revanced_hide_visit_store_button_summary_on">Nupp \"Külasta poodi\" on peidetud</string>
|
<string name="revanced_hide_subscribe_button_in_channel_page_summary_on">Nupp „Telli” on peidetud</string>
|
||||||
<string name="revanced_hide_visit_store_button_summary_off">Nupp \"Külasta poodi\" on nähtav</string>
|
<string name="revanced_hide_subscribe_button_in_channel_page_summary_off">Nupp „Telli” on nähtaval</string>
|
||||||
<string name="revanced_comments_screen_title">Kommentaarid</string>
|
<string name="revanced_comments_screen_title">Kommentaarid</string>
|
||||||
<string name="revanced_comments_screen_summary">Peida või kuva kommentaaride sektsiooni komponendid</string>
|
<string name="revanced_comments_screen_summary">Peida või kuva kommentaaride sektsiooni komponendid</string>
|
||||||
<string name="revanced_hide_comments_ai_chat_summary_title">Peida AI vestluse kokkuvõte</string>
|
<string name="revanced_hide_comments_ai_chat_summary_title">Peida AI vestluse kokkuvõte</string>
|
||||||
@@ -534,11 +548,11 @@ See funktsioon on saadaval ainult vanemates seadmetes"</string>
|
|||||||
<string name="revanced_share_copy_url_success">URL kopeeritud clipboardi</string>
|
<string name="revanced_share_copy_url_success">URL kopeeritud clipboardi</string>
|
||||||
<string name="revanced_share_copy_url_timestamp_success">Aadres URL ajaga kopeeritud</string>
|
<string name="revanced_share_copy_url_timestamp_success">Aadres URL ajaga kopeeritud</string>
|
||||||
<string name="revanced_copy_video_url_title">Kuva video URL kopeerimise nupp</string>
|
<string name="revanced_copy_video_url_title">Kuva video URL kopeerimise nupp</string>
|
||||||
<string name="revanced_copy_video_url_summary_on">Nupp on nähtav. Video URL-i kopeerimiseks puuduta. Ajakoodiga kopeerimiseks puuduta pikalt</string>
|
<string name="revanced_copy_video_url_summary_on">Video URL-i kopeerimise nupp on nähtaval. Puudutage video URL-i kopeerimiseks. Puudutage pikalt, et kopeerida ajatempliga</string>
|
||||||
<string name="revanced_copy_video_url_summary_off">Nupud ei ole näha</string>
|
<string name="revanced_copy_video_url_summary_off">Video URL-i kopeerimise nupp pole nähtaval</string>
|
||||||
<string name="revanced_copy_video_url_timestamp_title">Näita video URL-i ajatempliga kopeerimise nuppu</string>
|
<string name="revanced_copy_video_url_timestamp_title">Näita video URL-i ajatempliga kopeerimise nuppu</string>
|
||||||
<string name="revanced_copy_video_url_timestamp_summary_on">Nupp on nähtav. Ajakoodiga video URL-i kopeerimiseks puuduta. Ilma ajakoodita kopeerimiseks puuduta pikalt</string>
|
<string name="revanced_copy_video_url_timestamp_summary_on">Ajatempliga URL-i kopeerimise nupp on nähtaval. Puudutage video URL-i ajatempliga kopeerimiseks. Puudutage pikalt, et kopeerida ilma ajatemplita</string>
|
||||||
<string name="revanced_copy_video_url_timestamp_summary_off">Nupud ei ole näha</string>
|
<string name="revanced_copy_video_url_timestamp_summary_off">Ajatempliga URL-i kopeerimise nupp pole nähtaval</string>
|
||||||
</patch>
|
</patch>
|
||||||
<patch id="interaction.dialog.removeViewerDiscretionDialogPatch">
|
<patch id="interaction.dialog.removeViewerDiscretionDialogPatch">
|
||||||
<string name="revanced_remove_viewer_discretion_dialog_title">Eemalda vaataja arvamuse dialoog</string>
|
<string name="revanced_remove_viewer_discretion_dialog_title">Eemalda vaataja arvamuse dialoog</string>
|
||||||
@@ -547,7 +561,7 @@ See funktsioon on saadaval ainult vanemates seadmetes"</string>
|
|||||||
<string name="revanced_remove_viewer_discretion_dialog_user_dialog_message">See ei mööda vanusepiirangust. See lihtsalt aktsepteerib seda automaatselt.</string>
|
<string name="revanced_remove_viewer_discretion_dialog_user_dialog_message">See ei mööda vanusepiirangust. See lihtsalt aktsepteerib seda automaatselt.</string>
|
||||||
</patch>
|
</patch>
|
||||||
<patch id="layout.hide.signintotv.disableSignInToTvPopupPatch">
|
<patch id="layout.hide.signintotv.disableSignInToTvPopupPatch">
|
||||||
<string name="revanced_disable_signin_to_tv_popup_title">Keela telerisse sisselogimise hüpikaken</string>
|
<string name="revanced_disable_signin_to_tv_popup_title">Keela hüpikaken „Logi telerisse sisse”</string>
|
||||||
<string name="revanced_disable_signin_to_tv_popup_summary_on">Telerisse sisselogimise hüpikaken on keelatud</string>
|
<string name="revanced_disable_signin_to_tv_popup_summary_on">Telerisse sisselogimise hüpikaken on keelatud</string>
|
||||||
<string name="revanced_disable_signin_to_tv_popup_summary_off">Telerisse sisselogimise hüpikaken on lubatud</string>
|
<string name="revanced_disable_signin_to_tv_popup_summary_off">Telerisse sisselogimise hüpikaken on lubatud</string>
|
||||||
</patch>
|
</patch>
|
||||||
@@ -679,7 +693,7 @@ Helitugevuse reguleerimiseks pühkige ekraani paremal küljel vertikaalselt"</st
|
|||||||
<string name="revanced_hide_download_button_summary_on">Laadi alla nupp on peidetud</string>
|
<string name="revanced_hide_download_button_summary_on">Laadi alla nupp on peidetud</string>
|
||||||
<string name="revanced_hide_download_button_summary_off">Laadi alla nupp on nähtav</string>
|
<string name="revanced_hide_download_button_summary_off">Laadi alla nupp on nähtav</string>
|
||||||
<!-- 'Hype' should be translated with the same localized wording that YouTube displays.
|
<!-- 'Hype' should be translated with the same localized wording that YouTube displays.
|
||||||
This button only shows on videos uploaded by the logged in user. -->
|
This button only shows on videos uploaded by the logged-in user. -->
|
||||||
<string name="revanced_hide_hype_button_title">Peida Hype</string>
|
<string name="revanced_hide_hype_button_title">Peida Hype</string>
|
||||||
<string name="revanced_hide_hype_button_summary_on">Hype nupp on peidetud</string>
|
<string name="revanced_hide_hype_button_summary_on">Hype nupp on peidetud</string>
|
||||||
<string name="revanced_hide_hype_button_summary_off">Hype\'i nupp on nähtav</string>
|
<string name="revanced_hide_hype_button_summary_off">Hype\'i nupp on nähtav</string>
|
||||||
@@ -800,10 +814,11 @@ Kui selle sätte muutmine ei avalda mõju, proovige lülituda Inkognito režiimi
|
|||||||
<string name="revanced_hide_player_flyout_audio_track_title">Peida Helitraek</string>
|
<string name="revanced_hide_player_flyout_audio_track_title">Peida Helitraek</string>
|
||||||
<string name="revanced_hide_player_flyout_audio_track_summary_on">Helitraekide menüü on peidetud</string>
|
<string name="revanced_hide_player_flyout_audio_track_summary_on">Helitraekide menüü on peidetud</string>
|
||||||
<string name="revanced_hide_player_flyout_audio_track_summary_off">Helitraekide menüü on nähtav</string>
|
<string name="revanced_hide_player_flyout_audio_track_summary_off">Helitraekide menüü on nähtav</string>
|
||||||
<!-- 'Spoof video streams' should be the same translation used for 'revanced_spoof_video_streams_screen_title'. -->
|
<!-- 'Spoof video streams' should be the same translation used for 'revanced_spoof_video_streams_screen_title'.
|
||||||
<string name="revanced_hide_player_flyout_audio_track_not_available">"Heliraja menüü on peidetud
|
'Android No SDK' must be kept untranslated. -->
|
||||||
|
<string name="revanced_hide_player_flyout_audio_track_not_available">"Heliriba menüü on peidetud
|
||||||
|
|
||||||
Heliraja menüü nägemiseks muutke \"Video voogude võltsimine\" iPadOS-iks"</string>
|
Heliriba menüü kuvamiseks muutke „Spoof video streams” väärtuseks „Android No SDK”"</string>
|
||||||
<!-- 'Watch in VR' should be translated using the same localized wording YouTube displays for the menu item. -->
|
<!-- 'Watch in VR' should be translated using the same localized wording YouTube displays for the menu item. -->
|
||||||
<string name="revanced_hide_player_flyout_watch_in_vr_title">Peida Vaata VR-is</string>
|
<string name="revanced_hide_player_flyout_watch_in_vr_title">Peida Vaata VR-is</string>
|
||||||
<string name="revanced_hide_player_flyout_watch_in_vr_summary_on">Vaata VR-is menüü on peidetud</string>
|
<string name="revanced_hide_player_flyout_watch_in_vr_summary_on">Vaata VR-is menüü on peidetud</string>
|
||||||
@@ -879,13 +894,16 @@ Heliraja menüü nägemiseks muutke \"Video voogude võltsimine\" iPadOS-iks"</s
|
|||||||
<string name="revanced_hide_shorts_history_title">Peida Shortsid vaatamisaegadust</string>
|
<string name="revanced_hide_shorts_history_title">Peida Shortsid vaatamisaegadust</string>
|
||||||
<string name="revanced_hide_shorts_history_summary_on">Peidetud vaatamise ajaloos</string>
|
<string name="revanced_hide_shorts_history_summary_on">Peidetud vaatamise ajaloos</string>
|
||||||
<string name="revanced_hide_shorts_history_summary_off">Näidatud vaatamisaegadus</string>
|
<string name="revanced_hide_shorts_history_summary_off">Näidatud vaatamisaegadus</string>
|
||||||
<string name="revanced_hide_shorts_super_thanks_button_title">Peida Osta Super Tänud nupp</string>
|
<string name="revanced_hide_shorts_auto_dubbed_label_title">Peida silt „Automaatselt dubleeritud”</string>
|
||||||
|
<string name="revanced_hide_shorts_auto_dubbed_label_summary_on">Automaatselt dubleeritud silt on peidetud</string>
|
||||||
|
<string name="revanced_hide_shorts_auto_dubbed_label_summary_off">Automaatselt dubleeritud silt on nähtav</string>
|
||||||
|
<string name="revanced_hide_shorts_super_thanks_button_title">Peida nupp „Osta Super Tänud”</string>
|
||||||
<string name="revanced_hide_shorts_super_thanks_button_summary_on">Osta Super Thanks nupp on peidetud</string>
|
<string name="revanced_hide_shorts_super_thanks_button_summary_on">Osta Super Thanks nupp on peidetud</string>
|
||||||
<string name="revanced_hide_shorts_super_thanks_button_summary_off">Osta Super Thanks nupp on nähtaval</string>
|
<string name="revanced_hide_shorts_super_thanks_button_summary_off">Osta Super Thanks nupp on nähtaval</string>
|
||||||
<string name="revanced_hide_shorts_effect_button_title">Peida efekti nupp</string>
|
<string name="revanced_hide_shorts_effect_button_title">Peida efekti nupp</string>
|
||||||
<string name="revanced_hide_shorts_effect_button_summary_on">Efekti nupp on peidetud</string>
|
<string name="revanced_hide_shorts_effect_button_summary_on">Efekti nupp on peidetud</string>
|
||||||
<string name="revanced_hide_shorts_effect_button_summary_off">Efekti nupp on nähtav</string>
|
<string name="revanced_hide_shorts_effect_button_summary_off">Efekti nupp on nähtav</string>
|
||||||
<string name="revanced_hide_shorts_green_screen_button_title">Peida Roheline ekraan nupp</string>
|
<string name="revanced_hide_shorts_green_screen_button_title">Peida nupp „Roheline ekraan”</string>
|
||||||
<string name="revanced_hide_shorts_green_screen_button_summary_on">Rohelise ekraani nupp on peidetud</string>
|
<string name="revanced_hide_shorts_green_screen_button_summary_on">Rohelise ekraani nupp on peidetud</string>
|
||||||
<string name="revanced_hide_shorts_green_screen_button_summary_off">Rohelise ekraani nupp on nähtav</string>
|
<string name="revanced_hide_shorts_green_screen_button_summary_off">Rohelise ekraani nupp on nähtav</string>
|
||||||
<string name="revanced_hide_shorts_hashtag_button_title">Peida räsimärgi nupp</string>
|
<string name="revanced_hide_shorts_hashtag_button_title">Peida räsimärgi nupp</string>
|
||||||
@@ -895,10 +913,13 @@ Heliraja menüü nägemiseks muutke \"Video voogude võltsimine\" iPadOS-iks"</s
|
|||||||
<string name="revanced_hide_shorts_join_button_title">Peida Liitu nupp</string>
|
<string name="revanced_hide_shorts_join_button_title">Peida Liitu nupp</string>
|
||||||
<string name="revanced_hide_shorts_join_button_summary_on">Liitumisnupp on peidetud</string>
|
<string name="revanced_hide_shorts_join_button_summary_on">Liitumisnupp on peidetud</string>
|
||||||
<string name="revanced_hide_shorts_join_button_summary_off">Liitumisnupp on nähtav</string>
|
<string name="revanced_hide_shorts_join_button_summary_off">Liitumisnupp on nähtav</string>
|
||||||
|
<string name="revanced_hide_shorts_live_preview_title">Peida reaalajas eelvaade</string>
|
||||||
|
<string name="revanced_hide_shorts_live_preview_summary_on">Otse eelvaade on peidetud</string>
|
||||||
|
<string name="revanced_hide_shorts_live_preview_summary_off">Otse eelvaade on nähtav</string>
|
||||||
<string name="revanced_hide_shorts_location_label_title">Peida asukoha silt</string>
|
<string name="revanced_hide_shorts_location_label_title">Peida asukoha silt</string>
|
||||||
<string name="revanced_hide_shorts_location_label_summary_on">Asukoha silt on peidetud</string>
|
<string name="revanced_hide_shorts_location_label_summary_on">Asukoha silt on peidetud</string>
|
||||||
<string name="revanced_hide_shorts_location_label_summary_off">Asukoha silt on nähtav</string>
|
<string name="revanced_hide_shorts_location_label_summary_off">Asukoha silt on nähtav</string>
|
||||||
<string name="revanced_hide_shorts_new_posts_button_title">Peida uute postituste nupp</string>
|
<string name="revanced_hide_shorts_new_posts_button_title">Peida nupp „Uued postitused”</string>
|
||||||
<string name="revanced_hide_shorts_new_posts_button_summary_on">Uute postituste nupp on peidetud</string>
|
<string name="revanced_hide_shorts_new_posts_button_summary_on">Uute postituste nupp on peidetud</string>
|
||||||
<string name="revanced_hide_shorts_new_posts_button_summary_off">Uute postituste nupp on nähtav</string>
|
<string name="revanced_hide_shorts_new_posts_button_summary_off">Uute postituste nupp on nähtav</string>
|
||||||
<string name="revanced_hide_shorts_paused_overlay_buttons_title">Peida peatatud ülekatte nupud</string>
|
<string name="revanced_hide_shorts_paused_overlay_buttons_title">Peida peatatud ülekatte nupud</string>
|
||||||
@@ -907,7 +928,7 @@ Heliraja menüü nägemiseks muutke \"Video voogude võltsimine\" iPadOS-iks"</s
|
|||||||
<string name="revanced_hide_shorts_preview_comment_title">Peida eelvaate kommentaar</string>
|
<string name="revanced_hide_shorts_preview_comment_title">Peida eelvaate kommentaar</string>
|
||||||
<string name="revanced_hide_shorts_preview_comment_summary_on">Kommentaari eelvaade on peidetud</string>
|
<string name="revanced_hide_shorts_preview_comment_summary_on">Kommentaari eelvaade on peidetud</string>
|
||||||
<string name="revanced_hide_shorts_preview_comment_summary_off">Kommentaari eelvaade on nähtav</string>
|
<string name="revanced_hide_shorts_preview_comment_summary_off">Kommentaari eelvaade on nähtav</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_title">Peida Salvesta muusika nupp</string>
|
<string name="revanced_hide_shorts_save_sound_button_title">Peida nupp „Salvesta muusika”</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_summary_on">Muusika salvestamise nupp on peidetud</string>
|
<string name="revanced_hide_shorts_save_sound_button_summary_on">Muusika salvestamise nupp on peidetud</string>
|
||||||
<string name="revanced_hide_shorts_save_sound_button_summary_off">Muusika salvestamise nupp on nähtav</string>
|
<string name="revanced_hide_shorts_save_sound_button_summary_off">Muusika salvestamise nupp on nähtav</string>
|
||||||
<string name="revanced_hide_shorts_search_suggestions_title">Peida otsingusoovitused</string>
|
<string name="revanced_hide_shorts_search_suggestions_title">Peida otsingusoovitused</string>
|
||||||
@@ -928,10 +949,10 @@ Heliraja menüü nägemiseks muutke \"Video voogude võltsimine\" iPadOS-iks"</s
|
|||||||
<string name="revanced_hide_shorts_upcoming_button_title">Peida Eelseisvad nupp</string>
|
<string name="revanced_hide_shorts_upcoming_button_title">Peida Eelseisvad nupp</string>
|
||||||
<string name="revanced_hide_shorts_upcoming_button_summary_on">Eelseisva nuppu on peidetud</string>
|
<string name="revanced_hide_shorts_upcoming_button_summary_on">Eelseisva nuppu on peidetud</string>
|
||||||
<string name="revanced_hide_shorts_upcoming_button_summary_off">Eelseisva nuppu on nähtav</string>
|
<string name="revanced_hide_shorts_upcoming_button_summary_off">Eelseisva nuppu on nähtav</string>
|
||||||
<string name="revanced_hide_shorts_use_sound_button_title">Peida nupp \"Kasuta seda heli\"</string>
|
<string name="revanced_hide_shorts_use_sound_button_title">Peida nupp „Kasuta seda heli”</string>
|
||||||
<string name="revanced_hide_shorts_use_sound_button_summary_on">Nupp \"Kasuta seda heli\" on peidetud</string>
|
<string name="revanced_hide_shorts_use_sound_button_summary_on">Nupp \"Kasuta seda heli\" on peidetud</string>
|
||||||
<string name="revanced_hide_shorts_use_sound_button_summary_off">Nupp \"Kasuta seda heli\" on nähtav</string>
|
<string name="revanced_hide_shorts_use_sound_button_summary_off">Nupp \"Kasuta seda heli\" on nähtav</string>
|
||||||
<string name="revanced_hide_shorts_use_template_button_title">Peida kasuta seda malli nupp</string>
|
<string name="revanced_hide_shorts_use_template_button_title">Peida nupp „Kasuta seda malli”</string>
|
||||||
<string name="revanced_hide_shorts_use_template_button_summary_on">Nupp \"Kasuta seda malli\" on peidetud</string>
|
<string name="revanced_hide_shorts_use_template_button_summary_on">Nupp \"Kasuta seda malli\" on peidetud</string>
|
||||||
<string name="revanced_hide_shorts_use_template_button_summary_off">Kasuta seda malli nupp on nähtav</string>
|
<string name="revanced_hide_shorts_use_template_button_summary_off">Kasuta seda malli nupp on nähtav</string>
|
||||||
<string name="revanced_hide_shorts_like_fountain_title">Peida Meeldi nupu purskkaevu animatsioon</string>
|
<string name="revanced_hide_shorts_like_fountain_title">Peida Meeldi nupu purskkaevu animatsioon</string>
|
||||||
@@ -1574,13 +1595,13 @@ Selle lubamine võib avada kõrgema video kvaliteedi"</string>
|
|||||||
</patch>
|
</patch>
|
||||||
<patch id="video.speed.button.playbackSpeedButtonPatch">
|
<patch id="video.speed.button.playbackSpeedButtonPatch">
|
||||||
<string name="revanced_playback_speed_dialog_button_title">Kuva kiiruse dialoogi nupp</string>
|
<string name="revanced_playback_speed_dialog_button_title">Kuva kiiruse dialoogi nupp</string>
|
||||||
<string name="revanced_playback_speed_dialog_button_summary_on">Nupp on nähtaval. Puudutage ja hoidke all, et taastada taasesituse kiirus vaikeväärtusele</string>
|
<string name="revanced_playback_speed_dialog_button_summary_on">Kiiruse dialoogi nupp on nähtaval. Puudutage pikalt, et taasesituskiirus vaikeseadeks lähtestada</string>
|
||||||
<string name="revanced_playback_speed_dialog_button_summary_off">Nuppi ei kuvata</string>
|
<string name="revanced_playback_speed_dialog_button_summary_off">Kiiruse dialoogi nupp pole nähtaval</string>
|
||||||
</patch>
|
</patch>
|
||||||
<patch id="video.quality.button.videoQualityDialogButtonPatch">
|
<patch id="video.quality.button.videoQualityDialogButtonPatch">
|
||||||
<string name="revanced_video_quality_dialog_button_title">Näita video kvaliteedi nuppu</string>
|
<string name="revanced_video_quality_dialog_button_title">Näita video kvaliteedi nuppu</string>
|
||||||
<string name="revanced_video_quality_dialog_button_summary_on">Nupp on nähtaval. Kvaliteedi lähtestamiseks vaikeseadeteks puudutage ja hoidke</string>
|
<string name="revanced_video_quality_dialog_button_summary_on">Video kvaliteedi nupp on nähtaval. Kvaliteedi lähtestamiseks vaikeseadeteks puudutage ja hoidke</string>
|
||||||
<string name="revanced_video_quality_dialog_button_summary_off">Nuppu ei kuvata</string>
|
<string name="revanced_video_quality_dialog_button_summary_off">Video kvaliteedi nupp pole nähtaval</string>
|
||||||
</patch>
|
</patch>
|
||||||
<patch id="video.speed.custom.customPlaybackSpeedPatch">
|
<patch id="video.speed.custom.customPlaybackSpeedPatch">
|
||||||
<string name="revanced_custom_speed_menu_title">Kohandatud taasesituse kiiruse menüü</string>
|
<string name="revanced_custom_speed_menu_title">Kohandatud taasesituse kiiruse menüü</string>
|
||||||
|
|||||||
@@ -63,9 +63,11 @@ Second \"item\" text"</string>
|
|||||||
<!-- https://logos.fandom.com/wiki/YouTube/Yoodles -->
|
<!-- https://logos.fandom.com/wiki/YouTube/Yoodles -->
|
||||||
<!-- 'Join' should be translated using the same localized wording YouTube displays.
|
<!-- 'Join' should be translated using the same localized wording YouTube displays.
|
||||||
This appears in the video player for certain videos. -->
|
This appears in the video player for certain videos. -->
|
||||||
|
<!-- 'Community' should be translated with the same localized wording that YouTube displays. -->
|
||||||
<!-- 'For You' should be translated using the same localized wording YouTube displays. -->
|
<!-- 'For You' should be translated using the same localized wording YouTube displays. -->
|
||||||
<!-- 'Visit Community' should be translated with the same localized wording that YouTube displays. -->
|
<!-- 'Join' should be translated with the same localized wording that YouTube displays. -->
|
||||||
<!-- 'Visit store' should be translated with the same localized wording that YouTube displays. -->
|
<!-- 'Store' should be translated with the same localized wording that YouTube displays. -->
|
||||||
|
<!-- 'Subscribe' should be translated with the same localized wording that YouTube displays. -->
|
||||||
<!-- 'Component path builder strings' is the technical name for identifying the Litho UI layout items to hide. This is an advanced feature and most users will never use this. -->
|
<!-- 'Component path builder strings' is the technical name for identifying the Litho UI layout items to hide. This is an advanced feature and most users will never use this. -->
|
||||||
<!-- Translations should lanaguge similar to revanced_hide_upload_time_user_dialog_message -->
|
<!-- Translations should lanaguge similar to revanced_hide_upload_time_user_dialog_message -->
|
||||||
<!-- Translations should lanaguge similar to revanced_hide_view_count_user_dialog_message -->
|
<!-- Translations should lanaguge similar to revanced_hide_view_count_user_dialog_message -->
|
||||||
@@ -109,7 +111,7 @@ Second \"item\" text"</string>
|
|||||||
<!-- 'Remix' should be translated with the same localized wording that YouTube displays. -->
|
<!-- 'Remix' should be translated with the same localized wording that YouTube displays. -->
|
||||||
<!-- 'Download' should be translated with the same localized wording that YouTube displays. -->
|
<!-- 'Download' should be translated with the same localized wording that YouTube displays. -->
|
||||||
<!-- 'Hype' should be translated with the same localized wording that YouTube displays.
|
<!-- 'Hype' should be translated with the same localized wording that YouTube displays.
|
||||||
This button only shows on videos uploaded by the logged in user. -->
|
This button only shows on videos uploaded by the logged-in user. -->
|
||||||
<!-- 'Promote' should be translated with the same localized wording that YouTube displays. -->
|
<!-- 'Promote' should be translated with the same localized wording that YouTube displays. -->
|
||||||
<!-- 'Thanks' should be translated with the same localized wording that YouTube displays. -->
|
<!-- 'Thanks' should be translated with the same localized wording that YouTube displays. -->
|
||||||
<!-- 'Ask' should be translated with the same localized wording that YouTube displays.
|
<!-- 'Ask' should be translated with the same localized wording that YouTube displays.
|
||||||
@@ -136,7 +138,8 @@ Second \"item\" text"</string>
|
|||||||
<!-- 'Lock screen' should be translated using the same localized wording YouTube displays for the menu item. -->
|
<!-- 'Lock screen' should be translated using the same localized wording YouTube displays for the menu item. -->
|
||||||
<!-- 'Listen with YouTube Music' should be translated using the same localized wording YouTube displays for the menu item. -->
|
<!-- 'Listen with YouTube Music' should be translated using the same localized wording YouTube displays for the menu item. -->
|
||||||
<!-- 'Audio track' should be translated using the same localized wording YouTube displays for the menu item. -->
|
<!-- 'Audio track' should be translated using the same localized wording YouTube displays for the menu item. -->
|
||||||
<!-- 'Spoof video streams' should be the same translation used for 'revanced_spoof_video_streams_screen_title'. -->
|
<!-- 'Spoof video streams' should be the same translation used for 'revanced_spoof_video_streams_screen_title'.
|
||||||
|
'Android No SDK' must be kept untranslated. -->
|
||||||
<!-- 'Watch in VR' should be translated using the same localized wording YouTube displays for the menu item. -->
|
<!-- 'Watch in VR' should be translated using the same localized wording YouTube displays for the menu item. -->
|
||||||
</patch>
|
</patch>
|
||||||
<patch id="layout.buttons.overlay.hidePlayerOverlayButtonsPatch">
|
<patch id="layout.buttons.overlay.hidePlayerOverlayButtonsPatch">
|
||||||
|
|||||||
@@ -114,9 +114,11 @@ Second \"item\" text"</string>
|
|||||||
<!-- https://logos.fandom.com/wiki/YouTube/Yoodles -->
|
<!-- https://logos.fandom.com/wiki/YouTube/Yoodles -->
|
||||||
<!-- 'Join' should be translated using the same localized wording YouTube displays.
|
<!-- 'Join' should be translated using the same localized wording YouTube displays.
|
||||||
This appears in the video player for certain videos. -->
|
This appears in the video player for certain videos. -->
|
||||||
|
<!-- 'Community' should be translated with the same localized wording that YouTube displays. -->
|
||||||
<!-- 'For You' should be translated using the same localized wording YouTube displays. -->
|
<!-- 'For You' should be translated using the same localized wording YouTube displays. -->
|
||||||
<!-- 'Visit Community' should be translated with the same localized wording that YouTube displays. -->
|
<!-- 'Join' should be translated with the same localized wording that YouTube displays. -->
|
||||||
<!-- 'Visit store' should be translated with the same localized wording that YouTube displays. -->
|
<!-- 'Store' should be translated with the same localized wording that YouTube displays. -->
|
||||||
|
<!-- 'Subscribe' should be translated with the same localized wording that YouTube displays. -->
|
||||||
<!-- 'Component path builder strings' is the technical name for identifying the Litho UI layout items to hide. This is an advanced feature and most users will never use this. -->
|
<!-- 'Component path builder strings' is the technical name for identifying the Litho UI layout items to hide. This is an advanced feature and most users will never use this. -->
|
||||||
<!-- Translations should lanaguge similar to revanced_hide_upload_time_user_dialog_message -->
|
<!-- Translations should lanaguge similar to revanced_hide_upload_time_user_dialog_message -->
|
||||||
<!-- Translations should lanaguge similar to revanced_hide_view_count_user_dialog_message -->
|
<!-- Translations should lanaguge similar to revanced_hide_view_count_user_dialog_message -->
|
||||||
@@ -160,7 +162,7 @@ Second \"item\" text"</string>
|
|||||||
<!-- 'Remix' should be translated with the same localized wording that YouTube displays. -->
|
<!-- 'Remix' should be translated with the same localized wording that YouTube displays. -->
|
||||||
<!-- 'Download' should be translated with the same localized wording that YouTube displays. -->
|
<!-- 'Download' should be translated with the same localized wording that YouTube displays. -->
|
||||||
<!-- 'Hype' should be translated with the same localized wording that YouTube displays.
|
<!-- 'Hype' should be translated with the same localized wording that YouTube displays.
|
||||||
This button only shows on videos uploaded by the logged in user. -->
|
This button only shows on videos uploaded by the logged-in user. -->
|
||||||
<!-- 'Promote' should be translated with the same localized wording that YouTube displays. -->
|
<!-- 'Promote' should be translated with the same localized wording that YouTube displays. -->
|
||||||
<!-- 'Thanks' should be translated with the same localized wording that YouTube displays. -->
|
<!-- 'Thanks' should be translated with the same localized wording that YouTube displays. -->
|
||||||
<!-- 'Ask' should be translated with the same localized wording that YouTube displays.
|
<!-- 'Ask' should be translated with the same localized wording that YouTube displays.
|
||||||
@@ -187,7 +189,8 @@ Second \"item\" text"</string>
|
|||||||
<!-- 'Lock screen' should be translated using the same localized wording YouTube displays for the menu item. -->
|
<!-- 'Lock screen' should be translated using the same localized wording YouTube displays for the menu item. -->
|
||||||
<!-- 'Listen with YouTube Music' should be translated using the same localized wording YouTube displays for the menu item. -->
|
<!-- 'Listen with YouTube Music' should be translated using the same localized wording YouTube displays for the menu item. -->
|
||||||
<!-- 'Audio track' should be translated using the same localized wording YouTube displays for the menu item. -->
|
<!-- 'Audio track' should be translated using the same localized wording YouTube displays for the menu item. -->
|
||||||
<!-- 'Spoof video streams' should be the same translation used for 'revanced_spoof_video_streams_screen_title'. -->
|
<!-- 'Spoof video streams' should be the same translation used for 'revanced_spoof_video_streams_screen_title'.
|
||||||
|
'Android No SDK' must be kept untranslated. -->
|
||||||
<!-- 'Watch in VR' should be translated using the same localized wording YouTube displays for the menu item. -->
|
<!-- 'Watch in VR' should be translated using the same localized wording YouTube displays for the menu item. -->
|
||||||
</patch>
|
</patch>
|
||||||
<patch id="layout.buttons.overlay.hidePlayerOverlayButtonsPatch">
|
<patch id="layout.buttons.overlay.hidePlayerOverlayButtonsPatch">
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user