mirror of
https://github.com/revanced/revanced-patches.git
synced 2025-12-07 09:53:55 +01:00
Compare commits
70 Commits
v5.4.0-dev
...
v5.6.0-dev
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7bac023ea5 | ||
|
|
1d0ec98bec | ||
|
|
3c603fac2d | ||
|
|
20a7ad4715 | ||
|
|
25a60e305e | ||
|
|
c7f42d9a3c | ||
|
|
670f100a29 | ||
|
|
19140e5918 | ||
|
|
1dde485013 | ||
|
|
5efcdd31c8 | ||
|
|
e6529837cb | ||
|
|
fe07033444 | ||
|
|
246333f3dc | ||
|
|
d82b02e4f5 | ||
|
|
44995a9f15 | ||
|
|
c87c788a26 | ||
|
|
4ef30618d1 | ||
|
|
b23e6c39fc | ||
|
|
de26766543 | ||
|
|
9168b5eaaf | ||
|
|
c43b9b3b03 | ||
|
|
5e8dfed3e8 | ||
|
|
d67dbba76f | ||
|
|
5dc93156e0 | ||
|
|
5275413ab7 | ||
|
|
248c05b670 | ||
|
|
9e6669d962 | ||
|
|
9c81d01cc8 | ||
|
|
59654788fc | ||
|
|
4c44982cde | ||
|
|
a7aab9aeca | ||
|
|
7a8486f562 | ||
|
|
ccb6a7f161 | ||
|
|
c792edfb77 | ||
|
|
339cd6cc70 | ||
|
|
68304fd96a | ||
|
|
4033048c9b | ||
|
|
9525137800 | ||
|
|
0cf05fa2b0 | ||
|
|
a9bfaf44e2 | ||
|
|
7b08051371 | ||
|
|
b217ca9f9d | ||
|
|
9482092579 | ||
|
|
134c2e52bd | ||
|
|
c348b10a35 | ||
|
|
9a9ec7ef18 | ||
|
|
e746507339 | ||
|
|
862ca077db | ||
|
|
138d43b34b | ||
|
|
8d06a4a8ad | ||
|
|
d7ca7c1733 | ||
|
|
8e0b7db82a | ||
|
|
b9d7867cee | ||
|
|
11216cd942 | ||
|
|
b163e5f64d | ||
|
|
5c2bbd0671 | ||
|
|
2062660d60 | ||
|
|
2d9f08a08e | ||
|
|
78c51182f2 | ||
|
|
feac2ab439 | ||
|
|
32be03c28d | ||
|
|
6a345eee37 | ||
|
|
61be7731e3 | ||
|
|
8295356f88 | ||
|
|
3ec25778eb | ||
|
|
3faf0ac160 | ||
|
|
3ff559878b | ||
|
|
ed9c78da1e | ||
|
|
eefb59020e | ||
|
|
18f18849f3 |
8
.github/workflows/build_pull_request.yml
vendored
8
.github/workflows/build_pull_request.yml
vendored
@@ -28,4 +28,10 @@ jobs:
|
||||
- name: Build
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
run: ./gradlew build --no-daemon
|
||||
run: ./gradlew :patches:buildAndroid --no-daemon
|
||||
|
||||
- name: Upload artifacts
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: revanced-patches
|
||||
path: patches/build/libs
|
||||
|
||||
20
.github/workflows/pull_strings.yml
vendored
20
.github/workflows/pull_strings.yml
vendored
@@ -1,6 +1,8 @@
|
||||
name: Pull strings
|
||||
|
||||
on:
|
||||
schedule:
|
||||
- cron: "0 */8 * * *"
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
@@ -21,16 +23,20 @@ jobs:
|
||||
uses: crowdin/github-action@v2
|
||||
with:
|
||||
config: crowdin.yml
|
||||
upload_sources: false
|
||||
download_translations: true
|
||||
localization_branch_name: feat/translations
|
||||
create_pull_request: true
|
||||
pull_request_title: "chore: Sync translations"
|
||||
pull_request_body: "Sync translations from [crowdin.com/project/revanced](https://crowdin.com/project/revanced)"
|
||||
pull_request_base_branch_name: "dev"
|
||||
commit_message: "chore: Sync translations"
|
||||
github_user_name: revanced-bot
|
||||
github_user_email: github@revanced.app
|
||||
create_pull_request: false
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
CROWDIN_PROJECT_ID: ${{ secrets.CROWDIN_PROJECT_ID }}
|
||||
CROWDIN_PERSONAL_TOKEN: ${{ secrets.CROWDIN_PERSONAL_TOKEN }}
|
||||
|
||||
- name: Open pull request
|
||||
if: github.event_name == 'workflow_dispatch'
|
||||
uses: repo-sync/pull-request@v2
|
||||
with:
|
||||
source_branch: feat/translations
|
||||
destination_branch: dev
|
||||
pr_title: "chore: Sync translations"
|
||||
pr_body: "Sync translations from [crowdin.com/project/revanced](https://crowdin.com/project/revanced)"
|
||||
|
||||
2
.github/workflows/release.yml
vendored
2
.github/workflows/release.yml
vendored
@@ -35,7 +35,7 @@ jobs:
|
||||
- name: Build
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
run: ./gradlew build clean
|
||||
run: ./gradlew :patches:buildAndroid clean
|
||||
|
||||
- name: Setup Node.js
|
||||
uses: actions/setup-node@v4
|
||||
|
||||
200
CHANGELOG.md
200
CHANGELOG.md
@@ -1,3 +1,203 @@
|
||||
# [5.6.0-dev.4](https://github.com/ReVanced/revanced-patches/compare/v5.6.0-dev.3...v5.6.0-dev.4) (2024-12-20)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **YouTube - Force original audio:** Use correct original audio stream if app language is not English ([0d20171](https://github.com/ReVanced/revanced-patches/commit/0d2017133efac230887b5c2a331d87159df8af11))
|
||||
|
||||
# [5.6.0-dev.3](https://github.com/ReVanced/revanced-patches/compare/v5.6.0-dev.2...v5.6.0-dev.3) (2024-12-20)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **Twitter - Change link sharing domain:** Use correct extension package ([ad7fab6](https://github.com/ReVanced/revanced-patches/commit/ad7fab67319ba23f267d27da9b74266965fc4be3))
|
||||
|
||||
# [5.6.0-dev.2](https://github.com/ReVanced/revanced-patches/compare/v5.6.0-dev.1...v5.6.0-dev.2) (2024-12-19)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **YouTube - Open Shorts in regular player:** Do not show the miniplayer after opening a Short while a video is playing ([894e366](https://github.com/ReVanced/revanced-patches/commit/894e36665d17d5a3a5728961d424dffc55faa50b))
|
||||
|
||||
# [5.6.0-dev.1](https://github.com/ReVanced/revanced-patches/compare/v5.5.2-dev.2...v5.6.0-dev.1) (2024-12-19)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **YouTube:** Add `Open Shorts in regular player` patch ([#4153](https://github.com/ReVanced/revanced-patches/issues/4153)) ([c7c5e5b](https://github.com/ReVanced/revanced-patches/commit/c7c5e5b2b9cf63d8225bb6bd5e735ddf945b6c29))
|
||||
|
||||
## [5.5.2-dev.2](https://github.com/ReVanced/revanced-patches/compare/v5.5.2-dev.1...v5.5.2-dev.2) (2024-12-17)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **YouTube - Hide layout components:** Hide new kind of community post ([#4155](https://github.com/ReVanced/revanced-patches/issues/4155)) ([08f68cb](https://github.com/ReVanced/revanced-patches/commit/08f68cb5d33f2cfe656d2f93d159c69981f31418))
|
||||
|
||||
## [5.5.2-dev.1](https://github.com/ReVanced/revanced-patches/compare/v5.5.1...v5.5.2-dev.1) (2024-12-17)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **YouTube - Miniplayer:** Use estimated maximum on screen size for devices with low density screens ([#4150](https://github.com/ReVanced/revanced-patches/issues/4150)) ([2694158](https://github.com/ReVanced/revanced-patches/commit/2694158c3c9935ede21c96832533222f850068df))
|
||||
* **YouTube - SponsorBlock:** Show create new segment error messages using a dialog ([#4148](https://github.com/ReVanced/revanced-patches/issues/4148)) ([5870906](https://github.com/ReVanced/revanced-patches/commit/587090636dfff0b358b15026cf7d47c65a4296dc))
|
||||
|
||||
## [5.5.1](https://github.com/ReVanced/revanced-patches/compare/v5.5.0...v5.5.1) (2024-12-16)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **YouTube:** Fix string translations ([52e04d3](https://github.com/ReVanced/revanced-patches/commit/52e04d340c1a85f3d683c67a15ae96529432d5fe))
|
||||
|
||||
## [5.5.1-dev.1](https://github.com/ReVanced/revanced-patches/compare/v5.5.0...v5.5.1-dev.1) (2024-12-16)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **YouTube:** Fix string translations ([52e04d3](https://github.com/ReVanced/revanced-patches/commit/52e04d340c1a85f3d683c67a15ae96529432d5fe))
|
||||
|
||||
# [5.5.0](https://github.com/ReVanced/revanced-patches/compare/v5.4.0...v5.5.0) (2024-12-16)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **Twitch:** Change recommended target to the latest app version ([fb32972](https://github.com/ReVanced/revanced-patches/commit/fb32972f4de92dac1fc5d73f56a392a671c4e94b))
|
||||
* **YouTube - Spoof video streams:** Make livestreams start at the current time when using iOS client ([#4137](https://github.com/ReVanced/revanced-patches/issues/4137)) ([140f484](https://github.com/ReVanced/revanced-patches/commit/140f484b4b251b0dfa94163a63f61f45f5302052))
|
||||
* **YouTube Music:** Add `Spoof client patch` to fix playback ([#4132](https://github.com/ReVanced/revanced-patches/issues/4132)) ([b092508](https://github.com/ReVanced/revanced-patches/commit/b0925088e8b41636e285cb234593d545604ce461))
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **YouTube - Hide feed components:** Remove obsolete `Hide search result shelf header` option ([#4134](https://github.com/ReVanced/revanced-patches/issues/4134)) ([c71443a](https://github.com/ReVanced/revanced-patches/commit/c71443a08883ab10ef2553213c03b00e7c580a43))
|
||||
* **YouTube - Navigation buttons:** Add options to disable translucent status bar and navigation bar ([#4133](https://github.com/ReVanced/revanced-patches/issues/4133)) ([a2d2141](https://github.com/ReVanced/revanced-patches/commit/a2d2141cec9b0b4929e07a8010889b21c324b229))
|
||||
* **YouTube:** Add `Force original audio` patch ([#4122](https://github.com/ReVanced/revanced-patches/issues/4122)) ([f4aa440](https://github.com/ReVanced/revanced-patches/commit/f4aa4406080b91f01d623e54b11b99ea849ddcdf))
|
||||
|
||||
# [5.5.0-dev.5](https://github.com/ReVanced/revanced-patches/compare/v5.5.0-dev.4...v5.5.0-dev.5) (2024-12-16)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **YouTube - Navigation buttons:** Add options to disable translucent status bar and navigation bar ([#4133](https://github.com/ReVanced/revanced-patches/issues/4133)) ([a2d2141](https://github.com/ReVanced/revanced-patches/commit/a2d2141cec9b0b4929e07a8010889b21c324b229))
|
||||
|
||||
# [5.5.0-dev.4](https://github.com/ReVanced/revanced-patches/compare/v5.5.0-dev.3...v5.5.0-dev.4) (2024-12-16)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **YouTube - Spoof video streams:** Make livestreams start at the current time when using iOS client ([#4137](https://github.com/ReVanced/revanced-patches/issues/4137)) ([140f484](https://github.com/ReVanced/revanced-patches/commit/140f484b4b251b0dfa94163a63f61f45f5302052))
|
||||
|
||||
# [5.5.0-dev.3](https://github.com/ReVanced/revanced-patches/compare/v5.5.0-dev.2...v5.5.0-dev.3) (2024-12-16)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **YouTube - Hide feed components:** Remove obsolete `Hide search result shelf header` option ([#4134](https://github.com/ReVanced/revanced-patches/issues/4134)) ([c71443a](https://github.com/ReVanced/revanced-patches/commit/c71443a08883ab10ef2553213c03b00e7c580a43))
|
||||
|
||||
# [5.5.0-dev.2](https://github.com/ReVanced/revanced-patches/compare/v5.5.0-dev.1...v5.5.0-dev.2) (2024-12-16)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **YouTube Music:** Add `Spoof client patch` to fix playback ([#4132](https://github.com/ReVanced/revanced-patches/issues/4132)) ([b092508](https://github.com/ReVanced/revanced-patches/commit/b0925088e8b41636e285cb234593d545604ce461))
|
||||
|
||||
# [5.5.0-dev.1](https://github.com/ReVanced/revanced-patches/compare/v5.4.1-dev.1...v5.5.0-dev.1) (2024-12-15)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **YouTube:** Add `Force original audio` patch ([#4122](https://github.com/ReVanced/revanced-patches/issues/4122)) ([f4aa440](https://github.com/ReVanced/revanced-patches/commit/f4aa4406080b91f01d623e54b11b99ea849ddcdf))
|
||||
|
||||
## [5.4.1-dev.1](https://github.com/ReVanced/revanced-patches/compare/v5.4.0...v5.4.1-dev.1) (2024-12-14)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **Twitch:** Change recommended target to the latest app version ([fb32972](https://github.com/ReVanced/revanced-patches/commit/fb32972f4de92dac1fc5d73f56a392a671c4e94b))
|
||||
|
||||
# [5.4.0](https://github.com/ReVanced/revanced-patches/compare/v5.3.0...v5.4.0) (2024-12-14)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **GmsCore support:** Adjust presentation of battery optimization dialog ([#4091](https://github.com/ReVanced/revanced-patches/issues/4091)) ([5d8fc1b](https://github.com/ReVanced/revanced-patches/commit/5d8fc1bcd4e453298cfac086cdbdf279612bfb63))
|
||||
* **TikTok - Settings:** Use correct colors for dark mode ([#4087](https://github.com/ReVanced/revanced-patches/issues/4087)) ([6bd22ff](https://github.com/ReVanced/revanced-patches/commit/6bd22ffa7e8af4d8f5d2d3b1711bd92c44b4e4aa))
|
||||
* **TikTok - SIM Spoof:** Change patch to default off to fix login ([#4084](https://github.com/ReVanced/revanced-patches/issues/4084)) ([f4659a3](https://github.com/ReVanced/revanced-patches/commit/f4659a328eaf600e1e5f02a66fa2af4b6d8dc7c1))
|
||||
* **YouTube - Hide ads:** Hide new type of featured promotions ([#4113](https://github.com/ReVanced/revanced-patches/issues/4113)) ([13c7592](https://github.com/ReVanced/revanced-patches/commit/13c7592b21defd27e3a7aa9b219ffc0247bb5914))
|
||||
* **YouTube - Spoof video streams:** Fix error toast that is sometimes shown ([#4090](https://github.com/ReVanced/revanced-patches/issues/4090)) ([4c46cb2](https://github.com/ReVanced/revanced-patches/commit/4c46cb27a02c6f29626cd769b6a8e825645d5b16))
|
||||
* **YouTube - Spoof video streams:** Resolve playback of age restricted videos ([#4096](https://github.com/ReVanced/revanced-patches/issues/4096)) ([839a404](https://github.com/ReVanced/revanced-patches/commit/839a4045f1bb1759d89047834e0b7695781e82a3))
|
||||
* **YouTube Music - Bypass certificate checks:** Add a recommended target version ([#4104](https://github.com/ReVanced/revanced-patches/issues/4104)) ([17a5a6c](https://github.com/ReVanced/revanced-patches/commit/17a5a6c1691b0c23f601d3355b72f122c2bd5dcb))
|
||||
* **YouTube Music - Spoof video streams:** Disable stable volume ([#4097](https://github.com/ReVanced/revanced-patches/issues/4097)) ([16bb9df](https://github.com/ReVanced/revanced-patches/commit/16bb9dfc299612f3922724c136878606987ab132))
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* Add Internal data documents provider patch ([#3830](https://github.com/ReVanced/revanced-patches/issues/3830)) ([cb22f65](https://github.com/ReVanced/revanced-patches/commit/cb22f652ed678d81ffda9ece659b3971225d6931))
|
||||
* **Change package name:** Add options to change provider and permission package names to handle installation conflicts ([75c740c](https://github.com/ReVanced/revanced-patches/commit/75c740c6ba2e0c62e567f7dc90cdad368fc4f372))
|
||||
* **Twitch:** Make patches compatible with latest versions ([#4099](https://github.com/ReVanced/revanced-patches/issues/4099)) ([eecfbb7](https://github.com/ReVanced/revanced-patches/commit/eecfbb7122a9072e55e687f2c003f63108654888))
|
||||
* **YouTube - Comments:** Add `Hide 'Chat summary'` ([#4110](https://github.com/ReVanced/revanced-patches/issues/4110)) ([269493c](https://github.com/ReVanced/revanced-patches/commit/269493cd198604f1438ea2850fb68fe900d0e56f))
|
||||
|
||||
# [5.4.0-dev.11](https://github.com/ReVanced/revanced-patches/compare/v5.4.0-dev.10...v5.4.0-dev.11) (2024-12-14)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **Twitch:** Make patches compatible with latest versions ([#4099](https://github.com/ReVanced/revanced-patches/issues/4099)) ([eecfbb7](https://github.com/ReVanced/revanced-patches/commit/eecfbb7122a9072e55e687f2c003f63108654888))
|
||||
|
||||
# [5.4.0-dev.10](https://github.com/ReVanced/revanced-patches/compare/v5.4.0-dev.9...v5.4.0-dev.10) (2024-12-13)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **YouTube - Hide ads:** Hide new type of featured promotions ([#4113](https://github.com/ReVanced/revanced-patches/issues/4113)) ([13c7592](https://github.com/ReVanced/revanced-patches/commit/13c7592b21defd27e3a7aa9b219ffc0247bb5914))
|
||||
|
||||
# [5.4.0-dev.9](https://github.com/ReVanced/revanced-patches/compare/v5.4.0-dev.8...v5.4.0-dev.9) (2024-12-12)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **YouTube - Comments:** Add `Hide 'Chat summary'` ([#4110](https://github.com/ReVanced/revanced-patches/issues/4110)) ([269493c](https://github.com/ReVanced/revanced-patches/commit/269493cd198604f1438ea2850fb68fe900d0e56f))
|
||||
|
||||
# [5.4.0-dev.8](https://github.com/ReVanced/revanced-patches/compare/v5.4.0-dev.7...v5.4.0-dev.8) (2024-12-11)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **YouTube Music - Bypass certificate checks:** Add a recommended target version ([#4104](https://github.com/ReVanced/revanced-patches/issues/4104)) ([17a5a6c](https://github.com/ReVanced/revanced-patches/commit/17a5a6c1691b0c23f601d3355b72f122c2bd5dcb))
|
||||
|
||||
# [5.4.0-dev.7](https://github.com/ReVanced/revanced-patches/compare/v5.4.0-dev.6...v5.4.0-dev.7) (2024-12-10)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **GmsCore support:** Adjust presentation of battery optimization dialog ([#4091](https://github.com/ReVanced/revanced-patches/issues/4091)) ([5d8fc1b](https://github.com/ReVanced/revanced-patches/commit/5d8fc1bcd4e453298cfac086cdbdf279612bfb63))
|
||||
|
||||
# [5.4.0-dev.6](https://github.com/ReVanced/revanced-patches/compare/v5.4.0-dev.5...v5.4.0-dev.6) (2024-12-10)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **YouTube Music - Spoof video streams:** Disable stable volume ([#4097](https://github.com/ReVanced/revanced-patches/issues/4097)) ([16bb9df](https://github.com/ReVanced/revanced-patches/commit/16bb9dfc299612f3922724c136878606987ab132))
|
||||
|
||||
# [5.4.0-dev.5](https://github.com/ReVanced/revanced-patches/compare/v5.4.0-dev.4...v5.4.0-dev.5) (2024-12-10)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **YouTube - Spoof video streams:** Resolve playback of age restricted videos ([#4096](https://github.com/ReVanced/revanced-patches/issues/4096)) ([839a404](https://github.com/ReVanced/revanced-patches/commit/839a4045f1bb1759d89047834e0b7695781e82a3))
|
||||
|
||||
# [5.4.0-dev.4](https://github.com/ReVanced/revanced-patches/compare/v5.4.0-dev.3...v5.4.0-dev.4) (2024-12-10)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **YouTube - Spoof video streams:** Fix error toast that is sometimes shown ([#4090](https://github.com/ReVanced/revanced-patches/issues/4090)) ([4c46cb2](https://github.com/ReVanced/revanced-patches/commit/4c46cb27a02c6f29626cd769b6a8e825645d5b16))
|
||||
|
||||
# [5.4.0-dev.3](https://github.com/ReVanced/revanced-patches/compare/v5.4.0-dev.2...v5.4.0-dev.3) (2024-12-09)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **TikTok - Settings:** Use correct colors for dark mode ([#4087](https://github.com/ReVanced/revanced-patches/issues/4087)) ([6bd22ff](https://github.com/ReVanced/revanced-patches/commit/6bd22ffa7e8af4d8f5d2d3b1711bd92c44b4e4aa))
|
||||
|
||||
# [5.4.0-dev.2](https://github.com/ReVanced/revanced-patches/compare/v5.4.0-dev.1...v5.4.0-dev.2) (2024-12-09)
|
||||
|
||||
|
||||
|
||||
1
extensions/music/build.gradle.kts
Normal file
1
extensions/music/build.gradle.kts
Normal file
@@ -0,0 +1 @@
|
||||
// Do not remove. Necessary for the extension plugin to be applied to the project.
|
||||
1
extensions/music/src/main/AndroidManifest.xml
Normal file
1
extensions/music/src/main/AndroidManifest.xml
Normal file
@@ -0,0 +1 @@
|
||||
<manifest/>
|
||||
@@ -0,0 +1,27 @@
|
||||
package app.revanced.extension.music.spoof;
|
||||
|
||||
/**
|
||||
* @noinspection unused
|
||||
*/
|
||||
public class SpoofClientPatch {
|
||||
private static final int CLIENT_TYPE_ID = 26;
|
||||
private static final String CLIENT_VERSION = "6.21";
|
||||
private static final String DEVICE_MODEL = "iPhone16,2";
|
||||
private static final String OS_VERSION = "17.7.2.21H221";
|
||||
|
||||
public static int getClientId() {
|
||||
return CLIENT_TYPE_ID;
|
||||
}
|
||||
|
||||
public static String getClientVersion() {
|
||||
return CLIENT_VERSION;
|
||||
}
|
||||
|
||||
public static String getClientModel() {
|
||||
return DEVICE_MODEL;
|
||||
}
|
||||
|
||||
public static String getOsVersion() {
|
||||
return OS_VERSION;
|
||||
}
|
||||
}
|
||||
@@ -24,7 +24,9 @@ import java.net.URL;
|
||||
* @noinspection unused
|
||||
*/
|
||||
public class GmsCoreSupport {
|
||||
public static final String ORIGINAL_UNPATCHED_PACKAGE_NAME = "com.google.android.youtube";
|
||||
private static final String PACKAGE_NAME_YOUTUBE = "com.google.android.youtube";
|
||||
private static final String PACKAGE_NAME_YOUTUBE_MUSIC = "com.google.android.apps.youtube.music";
|
||||
|
||||
private static final String GMS_CORE_PACKAGE_NAME
|
||||
= getGmsCoreVendorGroupId() + ".android.gms";
|
||||
private static final Uri GMS_CORE_PROVIDER
|
||||
@@ -52,17 +54,20 @@ public class GmsCoreSupport {
|
||||
|
||||
private static void showBatteryOptimizationDialog(Activity context,
|
||||
String dialogMessageRef,
|
||||
String positiveButtonStringRef,
|
||||
String positiveButtonTextRef,
|
||||
DialogInterface.OnClickListener onPositiveClickListener) {
|
||||
// Do not set cancelable to false, to allow using back button to skip the action,
|
||||
// just in case the check can never be satisfied.
|
||||
var dialog = new AlertDialog.Builder(context)
|
||||
.setIconAttribute(android.R.attr.alertDialogIcon)
|
||||
.setTitle(str("gms_core_dialog_title"))
|
||||
.setMessage(str(dialogMessageRef))
|
||||
.setPositiveButton(str(positiveButtonStringRef), onPositiveClickListener)
|
||||
.create();
|
||||
Utils.showDialog(context, dialog);
|
||||
// Use a delay to allow the activity to finish initializing.
|
||||
// Otherwise, if device is in dark mode the dialog is shown with wrong color scheme.
|
||||
Utils.runOnMainThreadDelayed(() -> {
|
||||
// Do not set cancelable to false, to allow using back button to skip the action,
|
||||
// just in case the battery change can never be satisfied.
|
||||
var dialog = new AlertDialog.Builder(context)
|
||||
.setTitle(str("gms_core_dialog_title"))
|
||||
.setMessage(str(dialogMessageRef))
|
||||
.setPositiveButton(str(positiveButtonTextRef), onPositiveClickListener)
|
||||
.create();
|
||||
Utils.showDialog(context, dialog);
|
||||
}, 100);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -74,7 +79,8 @@ public class GmsCoreSupport {
|
||||
// Verify the user has not included GmsCore for a root installation.
|
||||
// GmsCore Support changes the package name, but with a mounted installation
|
||||
// all manifest changes are ignored and the original package name is used.
|
||||
if (context.getPackageName().equals(ORIGINAL_UNPATCHED_PACKAGE_NAME)) {
|
||||
String packageName = context.getPackageName();
|
||||
if (packageName.equals(PACKAGE_NAME_YOUTUBE) || packageName.equals(PACKAGE_NAME_YOUTUBE_MUSIC)) {
|
||||
Logger.printInfo(() -> "App is mounted with root, but GmsCore patch was included");
|
||||
// Cannot use localize text here, since the app will load
|
||||
// resources from the unpatched app and all patch strings are missing.
|
||||
@@ -99,7 +105,18 @@ public class GmsCoreSupport {
|
||||
return;
|
||||
}
|
||||
|
||||
// Check if GmsCore is running in the background.
|
||||
// Check if GmsCore is whitelisted from battery optimizations.
|
||||
if (batteryOptimizationsEnabled(context)) {
|
||||
Logger.printInfo(() -> "GmsCore is not whitelisted from battery optimizations");
|
||||
|
||||
showBatteryOptimizationDialog(context,
|
||||
"gms_core_dialog_not_whitelisted_using_battery_optimizations_message",
|
||||
"gms_core_dialog_continue_text",
|
||||
(dialog, id) -> openGmsCoreDisableBatteryOptimizationsIntent(context));
|
||||
return;
|
||||
}
|
||||
|
||||
// Check if GmsCore is currently running in the background.
|
||||
try (var client = context.getContentResolver().acquireContentProviderClient(GMS_CORE_PROVIDER)) {
|
||||
if (client == null) {
|
||||
Logger.printInfo(() -> "GmsCore is not running in the background");
|
||||
@@ -108,18 +125,8 @@ public class GmsCoreSupport {
|
||||
"gms_core_dialog_not_whitelisted_not_allowed_in_background_message",
|
||||
"gms_core_dialog_open_website_text",
|
||||
(dialog, id) -> open(DONT_KILL_MY_APP_LINK));
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// Check if GmsCore is whitelisted from battery optimizations.
|
||||
if (batteryOptimizationsEnabled(context)) {
|
||||
Logger.printInfo(() -> "GmsCore is not whitelisted from battery optimizations");
|
||||
showBatteryOptimizationDialog(context,
|
||||
"gms_core_dialog_not_whitelisted_using_battery_optimizations_message",
|
||||
"gms_core_dialog_continue_text",
|
||||
(dialog, id) -> openGmsCoreDisableBatteryOptimizationsIntent(context));
|
||||
}
|
||||
} catch (Exception ex) {
|
||||
Logger.printException(() -> "checkGmsCore failure", ex);
|
||||
}
|
||||
@@ -143,12 +150,10 @@ public class GmsCoreSupport {
|
||||
private static String getGmsCoreDownload() {
|
||||
final var vendorGroupId = getGmsCoreVendorGroupId();
|
||||
//noinspection SwitchStatementWithTooFewBranches
|
||||
switch (vendorGroupId) {
|
||||
case "app.revanced":
|
||||
return "https://github.com/revanced/gmscore/releases/latest";
|
||||
default:
|
||||
return vendorGroupId + ".android.gms";
|
||||
}
|
||||
return switch (vendorGroupId) {
|
||||
case "app.revanced" -> "https://github.com/revanced/gmscore/releases/latest";
|
||||
default -> vendorGroupId + ".android.gms";
|
||||
};
|
||||
}
|
||||
|
||||
// Modified by a patch. Do not touch.
|
||||
|
||||
@@ -4,8 +4,10 @@ import android.annotation.SuppressLint;
|
||||
import android.app.*;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.pm.ApplicationInfo;
|
||||
import android.content.pm.PackageInfo;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.content.res.Configuration;
|
||||
import android.content.res.Resources;
|
||||
import android.net.ConnectivityManager;
|
||||
import android.os.Build;
|
||||
@@ -47,6 +49,7 @@ public class Utils {
|
||||
private static Context context;
|
||||
|
||||
private static String versionName;
|
||||
private static String applicationLabel;
|
||||
|
||||
private Utils() {
|
||||
} // utility class
|
||||
@@ -61,28 +64,30 @@ public class Utils {
|
||||
return ""; // Value is replaced during patching.
|
||||
}
|
||||
|
||||
private static PackageInfo getPackageInfo() throws PackageManager.NameNotFoundException {
|
||||
final var packageName = Objects.requireNonNull(getContext()).getPackageName();
|
||||
|
||||
PackageManager packageManager = context.getPackageManager();
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
|
||||
return packageManager.getPackageInfo(
|
||||
packageName,
|
||||
PackageManager.PackageInfoFlags.of(0)
|
||||
);
|
||||
}
|
||||
|
||||
return packageManager.getPackageInfo(
|
||||
packageName,
|
||||
0
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return The version name of the app, such as 19.11.43
|
||||
*/
|
||||
public static String getAppVersionName() {
|
||||
if (versionName == null) {
|
||||
try {
|
||||
final var packageName = Objects.requireNonNull(getContext()).getPackageName();
|
||||
|
||||
PackageManager packageManager = context.getPackageManager();
|
||||
PackageInfo packageInfo;
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
|
||||
packageInfo = packageManager.getPackageInfo(
|
||||
packageName,
|
||||
PackageManager.PackageInfoFlags.of(0)
|
||||
);
|
||||
} else {
|
||||
packageInfo = packageManager.getPackageInfo(
|
||||
packageName,
|
||||
0
|
||||
);
|
||||
}
|
||||
versionName = packageInfo.versionName;
|
||||
versionName = getPackageInfo().versionName;
|
||||
} catch (Exception ex) {
|
||||
Logger.printException(() -> "Failed to get package info", ex);
|
||||
versionName = "Unknown";
|
||||
@@ -92,6 +97,19 @@ public class Utils {
|
||||
return versionName;
|
||||
}
|
||||
|
||||
public static String getApplicationName() {
|
||||
if (applicationLabel == null) {
|
||||
try {
|
||||
ApplicationInfo applicationInfo = getPackageInfo().applicationInfo;
|
||||
applicationLabel = (String) applicationInfo.loadLabel(context.getPackageManager());
|
||||
} catch (Exception ex) {
|
||||
Logger.printException(() -> "Failed to get application name", ex);
|
||||
applicationLabel = "Unknown";
|
||||
}
|
||||
}
|
||||
|
||||
return applicationLabel;
|
||||
}
|
||||
|
||||
/**
|
||||
* Hide a view by setting its layout height and width to 1dp.
|
||||
@@ -325,7 +343,7 @@ public class Utils {
|
||||
|
||||
public static void restartApp(@NonNull Context context) {
|
||||
String packageName = context.getPackageName();
|
||||
Intent intent = context.getPackageManager().getLaunchIntentForPackage(packageName);
|
||||
Intent intent = Objects.requireNonNull(context.getPackageManager().getLaunchIntentForPackage(packageName));
|
||||
Intent mainIntent = Intent.makeRestartActivityTask(intent.getComponent());
|
||||
// Required for API 34 and later
|
||||
// Ref: https://developer.android.com/about/versions/14/behavior-changes-14#safer-intents
|
||||
@@ -499,6 +517,12 @@ public class Utils {
|
||||
);
|
||||
}
|
||||
|
||||
public static boolean isDarkModeEnabled(Context context) {
|
||||
Configuration config = context.getResources().getConfiguration();
|
||||
final int currentNightMode = config.uiMode & Configuration.UI_MODE_NIGHT_MASK;
|
||||
return currentNightMode == Configuration.UI_MODE_NIGHT_YES;
|
||||
}
|
||||
|
||||
/**
|
||||
* Automatically logs any exceptions the runnable throws.
|
||||
*
|
||||
|
||||
@@ -3,7 +3,7 @@ package app.revanced.extension.shared.settings;
|
||||
import static java.lang.Boolean.FALSE;
|
||||
import static java.lang.Boolean.TRUE;
|
||||
import static app.revanced.extension.shared.settings.Setting.parent;
|
||||
import static app.revanced.extension.shared.spoof.SpoofVideoStreamsPatch.ForceiOSAVCAvailability;
|
||||
import static app.revanced.extension.shared.spoof.SpoofVideoStreamsPatch.SpoofiOSAvailability;
|
||||
|
||||
import app.revanced.extension.shared.spoof.AudioStreamLanguage;
|
||||
import app.revanced.extension.shared.spoof.ClientType;
|
||||
@@ -22,9 +22,9 @@ public class BaseSettings {
|
||||
public static final IntegerSetting CHECK_ENVIRONMENT_WARNINGS_ISSUED = new IntegerSetting("revanced_check_environment_warnings_issued", 0, true, false);
|
||||
|
||||
public static final BooleanSetting SPOOF_VIDEO_STREAMS = new BooleanSetting("revanced_spoof_video_streams", TRUE, true, "revanced_spoof_video_streams_user_dialog_message");
|
||||
public static final EnumSetting<AudioStreamLanguage> SPOOF_VIDEO_STREAMS_LANGUAGE = new EnumSetting<>("revanced_spoof_video_streams_language", AudioStreamLanguage.DEFAULT, parent(SPOOF_VIDEO_STREAMS));
|
||||
public static final EnumSetting<AudioStreamLanguage> SPOOF_VIDEO_STREAMS_LANGUAGE = new EnumSetting<>("revanced_spoof_video_streams_language", AudioStreamLanguage.DEFAULT, new SpoofiOSAvailability());
|
||||
public static final BooleanSetting SPOOF_VIDEO_STREAMS_IOS_FORCE_AVC = new BooleanSetting("revanced_spoof_video_streams_ios_force_avc", FALSE, true,
|
||||
"revanced_spoof_video_streams_ios_force_avc_user_dialog_message", new ForceiOSAVCAvailability());
|
||||
"revanced_spoof_video_streams_ios_force_avc_user_dialog_message", new SpoofiOSAvailability());
|
||||
public static final EnumSetting<ClientType> SPOOF_VIDEO_STREAMS_CLIENT_TYPE = new EnumSetting<>("revanced_spoof_video_streams_client", ClientType.ANDROID_VR, true, parent(SPOOF_VIDEO_STREAMS));
|
||||
|
||||
}
|
||||
|
||||
@@ -7,7 +7,6 @@ import app.revanced.extension.shared.Logger;
|
||||
import app.revanced.extension.shared.StringRef;
|
||||
import app.revanced.extension.shared.Utils;
|
||||
import app.revanced.extension.shared.settings.preference.SharedPrefCategory;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.json.JSONException;
|
||||
import org.json.JSONObject;
|
||||
|
||||
@@ -330,7 +329,7 @@ public abstract class Setting<T> {
|
||||
return value.equals(defaultValue);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@NonNull
|
||||
@Override
|
||||
public String toString() {
|
||||
return key + "=" + get();
|
||||
|
||||
@@ -54,9 +54,7 @@ public class ReVancedAboutPreference extends Preference {
|
||||
}
|
||||
|
||||
protected boolean isDarkModeEnabled() {
|
||||
Configuration config = getContext().getResources().getConfiguration();
|
||||
final int currentNightMode = config.uiMode & Configuration.UI_MODE_NIGHT_MASK;
|
||||
return currentNightMode == Configuration.UI_MODE_NIGHT_YES;
|
||||
return Utils.isDarkModeEnabled(getContext());
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -3,6 +3,11 @@ package app.revanced.extension.shared.spoof;
|
||||
import java.util.Locale;
|
||||
|
||||
public enum AudioStreamLanguage {
|
||||
/**
|
||||
* YouTube default.
|
||||
* Can be the original language or can be app language,
|
||||
* depending on what YouTube decides to pick as the default.
|
||||
*/
|
||||
DEFAULT,
|
||||
|
||||
// Language codes found in locale_config.xml
|
||||
@@ -86,15 +91,21 @@ public enum AudioStreamLanguage {
|
||||
private final String iso639_1;
|
||||
|
||||
AudioStreamLanguage() {
|
||||
iso639_1 = name().replace('_', '-');
|
||||
String name = name();
|
||||
final int regionSeparatorIndex = name.indexOf('_');
|
||||
if (regionSeparatorIndex >= 0) {
|
||||
iso639_1 = name.substring(0, regionSeparatorIndex).toLowerCase(Locale.US)
|
||||
+ name.substring(regionSeparatorIndex);
|
||||
} else {
|
||||
iso639_1 = name().toLowerCase(Locale.US);
|
||||
}
|
||||
}
|
||||
|
||||
public String getIso639_1() {
|
||||
// Changing the app language does not force the app to completely restart,
|
||||
// so the default needs to be the current language and not a static field.
|
||||
if (this == DEFAULT) {
|
||||
// Android VR requires uppercase language code.
|
||||
return Locale.getDefault().toLanguageTag().toUpperCase(Locale.US);
|
||||
return Locale.getDefault().toLanguageTag();
|
||||
}
|
||||
|
||||
return iso639_1;
|
||||
|
||||
@@ -10,15 +10,17 @@ public enum ClientType {
|
||||
// Specific purpose for age restricted, or private videos, because the iOS client is not logged in.
|
||||
// https://dumps.tadiphone.dev/dumps/oculus/eureka
|
||||
ANDROID_VR(28,
|
||||
"ANDROID_VR",
|
||||
"Quest 3",
|
||||
"12",
|
||||
"com.google.android.apps.youtube.vr.oculus/1.56.21 (Linux; U; Android 12; GB) gzip",
|
||||
"32", // Android 12.1
|
||||
"1.56.21",
|
||||
true
|
||||
),
|
||||
true,
|
||||
false),
|
||||
// Specific for kids videos.
|
||||
IOS(5,
|
||||
"IOS",
|
||||
forceAVC()
|
||||
? "iPhone12,5" // 11 Pro Max (last device with iOS 13)
|
||||
: "iPhone16,2", // 15 Pro Max
|
||||
@@ -37,7 +39,8 @@ public enum ClientType {
|
||||
// but 17.40 is the last version that supports iOS 13.
|
||||
? "17.40.5"
|
||||
: "19.47.7",
|
||||
false
|
||||
false,
|
||||
true
|
||||
);
|
||||
|
||||
private static boolean forceAVC() {
|
||||
@@ -50,6 +53,8 @@ public enum ClientType {
|
||||
*/
|
||||
public final int id;
|
||||
|
||||
public final String clientName;
|
||||
|
||||
/**
|
||||
* Device model, equivalent to {@link Build#MODEL} (System property: ro.product.model)
|
||||
*/
|
||||
@@ -82,20 +87,28 @@ public enum ClientType {
|
||||
*/
|
||||
public final boolean canLogin;
|
||||
|
||||
/**
|
||||
* If a language code should be used.
|
||||
*/
|
||||
public final boolean useLanguageCode;
|
||||
|
||||
ClientType(int id,
|
||||
String clientName,
|
||||
String deviceModel,
|
||||
String osVersion,
|
||||
String userAgent,
|
||||
@Nullable String androidSdkVersion,
|
||||
String clientVersion,
|
||||
boolean canLogin
|
||||
) {
|
||||
boolean canLogin,
|
||||
boolean useLanguageCode) {
|
||||
this.id = id;
|
||||
this.clientName = clientName;
|
||||
this.deviceModel = deviceModel;
|
||||
this.osVersion = osVersion;
|
||||
this.userAgent = userAgent;
|
||||
this.androidSdkVersion = androidSdkVersion;
|
||||
this.clientVersion = clientVersion;
|
||||
this.canLogin = canLogin;
|
||||
this.useLanguageCode = useLanguageCode;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,7 +6,6 @@ import androidx.annotation.Nullable;
|
||||
|
||||
import java.nio.ByteBuffer;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
|
||||
import app.revanced.extension.shared.Logger;
|
||||
import app.revanced.extension.shared.Utils;
|
||||
@@ -17,6 +16,10 @@ import app.revanced.extension.shared.spoof.requests.StreamingDataRequest;
|
||||
@SuppressWarnings("unused")
|
||||
public class SpoofVideoStreamsPatch {
|
||||
private static final boolean SPOOF_STREAMING_DATA = BaseSettings.SPOOF_VIDEO_STREAMS.get();
|
||||
|
||||
private static final boolean FIX_HLS_CURRENT_TIME = SPOOF_STREAMING_DATA
|
||||
&& BaseSettings.SPOOF_VIDEO_STREAMS_CLIENT_TYPE.get() == ClientType.IOS;
|
||||
|
||||
/**
|
||||
* Any unreachable ip address. Used to intentionally fail requests.
|
||||
*/
|
||||
@@ -87,10 +90,19 @@ public class SpoofVideoStreamsPatch {
|
||||
try {
|
||||
Uri uri = Uri.parse(url);
|
||||
String path = uri.getPath();
|
||||
|
||||
// 'heartbeat' has no video id and appears to be only after playback has started.
|
||||
if (path != null && path.contains("player") && !path.contains("heartbeat")) {
|
||||
String videoId = Objects.requireNonNull(uri.getQueryParameter("id"));
|
||||
StreamingDataRequest.fetchRequest(videoId, requestHeaders);
|
||||
// 'refresh' has no video id and appears to happen when waiting for a livestream to start.
|
||||
if (path != null && path.contains("player") && !path.contains("heartbeat")
|
||||
&& !path.contains("refresh")) {
|
||||
String id = uri.getQueryParameter("id");
|
||||
if (id == null) {
|
||||
Logger.printException(() -> "Ignoring request that has no video id." +
|
||||
" Url: " + url + " headers: " + requestHeaders);
|
||||
return;
|
||||
}
|
||||
|
||||
StreamingDataRequest.fetchRequest(id, requestHeaders);
|
||||
}
|
||||
} catch (Exception ex) {
|
||||
Logger.printException(() -> "buildRequest failure", ex);
|
||||
@@ -157,10 +169,24 @@ public class SpoofVideoStreamsPatch {
|
||||
return postData;
|
||||
}
|
||||
|
||||
public static final class ForceiOSAVCAvailability implements Setting.Availability {
|
||||
/**
|
||||
* Injection point.
|
||||
*
|
||||
* Fixes iOS livestreams starting from the beginning.
|
||||
*/
|
||||
public static boolean fixHLSCurrentTime(boolean original) {
|
||||
if (FIX_HLS_CURRENT_TIME) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return original;
|
||||
}
|
||||
|
||||
public static final class SpoofiOSAvailability implements Setting.Availability {
|
||||
@Override
|
||||
public boolean isAvailable() {
|
||||
return BaseSettings.SPOOF_VIDEO_STREAMS.get() && BaseSettings.SPOOF_VIDEO_STREAMS_CLIENT_TYPE.get() == ClientType.IOS;
|
||||
return BaseSettings.SPOOF_VIDEO_STREAMS.get()
|
||||
&& BaseSettings.SPOOF_VIDEO_STREAMS_CLIENT_TYPE.get() == ClientType.IOS;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -19,7 +19,9 @@ final class PlayerRoutes {
|
||||
"?fields=streamingData" +
|
||||
"&alt=proto"
|
||||
).compile();
|
||||
|
||||
private static final String YT_API_URL = "https://youtubei.googleapis.com/youtubei/v1/";
|
||||
|
||||
/**
|
||||
* TCP connection and HTTP read timeout
|
||||
*/
|
||||
@@ -35,8 +37,10 @@ final class PlayerRoutes {
|
||||
JSONObject context = new JSONObject();
|
||||
|
||||
JSONObject client = new JSONObject();
|
||||
client.put("hl", BaseSettings.SPOOF_VIDEO_STREAMS_LANGUAGE.get().getIso639_1());
|
||||
client.put("clientName", clientType.name());
|
||||
if (clientType.useLanguageCode) {
|
||||
client.put("hl", BaseSettings.SPOOF_VIDEO_STREAMS_LANGUAGE.get().getIso639_1());
|
||||
}
|
||||
client.put("clientName", clientType.clientName);
|
||||
client.put("clientVersion", clientType.clientVersion);
|
||||
client.put("deviceModel", clientType.deviceModel);
|
||||
client.put("osVersion", clientType.osVersion);
|
||||
|
||||
@@ -115,8 +115,7 @@ public class StreamingDataRequest {
|
||||
Objects.requireNonNull(playerHeaders);
|
||||
|
||||
final long startTime = System.currentTimeMillis();
|
||||
String clientTypeName = clientType.name();
|
||||
Logger.printDebug(() -> "Fetching video streams for: " + videoId + " using client: " + clientType.name());
|
||||
Logger.printDebug(() -> "Fetching video streams for: " + videoId + " using client: " + clientType);
|
||||
|
||||
try {
|
||||
HttpURLConnection connection = PlayerRoutes.getPlayerResponseConnectionFromRoute(GET_STREAMING_DATA, clientType);
|
||||
@@ -124,12 +123,16 @@ public class StreamingDataRequest {
|
||||
connection.setReadTimeout(HTTP_TIMEOUT_MILLISECONDS);
|
||||
|
||||
for (String key : REQUEST_HEADER_KEYS) {
|
||||
if (!clientType.canLogin && key.equals(AUTHORIZATION_HEADER)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
String value = playerHeaders.get(key);
|
||||
if (value != null) {
|
||||
if (key.equals(AUTHORIZATION_HEADER)) {
|
||||
if (!clientType.canLogin) {
|
||||
Logger.printDebug(() -> "Not including request header: " + key);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
Logger.printDebug(() -> "Including request header: " + key);
|
||||
connection.setRequestProperty(key, value);
|
||||
}
|
||||
}
|
||||
@@ -142,8 +145,10 @@ public class StreamingDataRequest {
|
||||
final int responseCode = connection.getResponseCode();
|
||||
if (responseCode == 200) return connection;
|
||||
|
||||
handleConnectionError(clientTypeName + " not available with response code: "
|
||||
+ responseCode + " message: " + connection.getResponseMessage(),
|
||||
// This situation likely means the patches are outdated.
|
||||
// Use a toast message that suggests updating.
|
||||
handleConnectionError("Playback error (App is outdated?) " + clientType + ": "
|
||||
+ responseCode + " response: " + connection.getResponseMessage(),
|
||||
null, showErrorToasts);
|
||||
} catch (SocketTimeoutException ex) {
|
||||
handleConnectionError("Connection timeout", ex, showErrorToasts);
|
||||
@@ -172,17 +177,19 @@ public class StreamingDataRequest {
|
||||
try {
|
||||
// gzip encoding doesn't response with content length (-1),
|
||||
// but empty response body does.
|
||||
if (connection.getContentLength() != 0) {
|
||||
try (InputStream inputStream = new BufferedInputStream(connection.getInputStream())) {
|
||||
try (ByteArrayOutputStream baos = new ByteArrayOutputStream()) {
|
||||
byte[] buffer = new byte[2048];
|
||||
int bytesRead;
|
||||
while ((bytesRead = inputStream.read(buffer)) >= 0) {
|
||||
baos.write(buffer, 0, bytesRead);
|
||||
}
|
||||
if (connection.getContentLength() == 0) {
|
||||
Logger.printDebug(() -> "Received empty response for video: " + videoId);
|
||||
} else {
|
||||
try (InputStream inputStream = new BufferedInputStream(connection.getInputStream());
|
||||
ByteArrayOutputStream baos = new ByteArrayOutputStream()) {
|
||||
|
||||
return ByteBuffer.wrap(baos.toByteArray());
|
||||
byte[] buffer = new byte[2048];
|
||||
int bytesRead;
|
||||
while ((bytesRead = inputStream.read(buffer)) >= 0) {
|
||||
baos.write(buffer, 0, bytesRead);
|
||||
}
|
||||
|
||||
return ByteBuffer.wrap(baos.toByteArray());
|
||||
}
|
||||
}
|
||||
} catch (IOException ex) {
|
||||
|
||||
@@ -1,9 +1,20 @@
|
||||
package app.revanced.extension.tiktok;
|
||||
|
||||
import static app.revanced.extension.shared.Utils.isDarkModeEnabled;
|
||||
|
||||
import android.content.Context;
|
||||
import android.graphics.Color;
|
||||
import android.view.View;
|
||||
import android.widget.TextView;
|
||||
|
||||
import androidx.annotation.ColorInt;
|
||||
|
||||
import app.revanced.extension.shared.settings.StringSetting;
|
||||
|
||||
public class Utils {
|
||||
|
||||
private static final long[] DEFAULT_MIN_MAX_VALUES = {0L, Long.MAX_VALUE};
|
||||
|
||||
// Edit: This could be handled using a custom Setting<Long[]> class
|
||||
// that saves its value to preferences and JSON using the formatted String created here.
|
||||
public static long[] parseMinMax(StringSetting setting) {
|
||||
@@ -20,6 +31,29 @@ public class Utils {
|
||||
}
|
||||
|
||||
setting.save("0-" + Long.MAX_VALUE);
|
||||
return new long[]{0L, Long.MAX_VALUE};
|
||||
return DEFAULT_MIN_MAX_VALUES;
|
||||
}
|
||||
|
||||
// Colors picked by hand. These should be replaced with the styled resources TikTok uses.
|
||||
private static final @ColorInt int TEXT_DARK_MODE_TITLE = Color.WHITE;
|
||||
private static final @ColorInt int TEXT_DARK_MODE_SUMMARY
|
||||
= Color.argb(255, 170, 170, 170);
|
||||
|
||||
private static final @ColorInt int TEXT_LIGHT_MODE_TITLE = Color.BLACK;
|
||||
private static final @ColorInt int TEXT_LIGHT_MODE_SUMMARY
|
||||
= Color.argb(255, 80, 80, 80);
|
||||
|
||||
public static void setTitleAndSummaryColor(Context context, View view) {
|
||||
final boolean darkModeEnabled = isDarkModeEnabled(context);
|
||||
|
||||
TextView title = view.findViewById(android.R.id.title);
|
||||
title.setTextColor(darkModeEnabled
|
||||
? TEXT_DARK_MODE_TITLE
|
||||
: TEXT_LIGHT_MODE_TITLE);
|
||||
|
||||
TextView summary = view.findViewById(android.R.id.summary);
|
||||
summary.setTextColor(darkModeEnabled
|
||||
? TEXT_DARK_MODE_SUMMARY
|
||||
: TEXT_LIGHT_MODE_SUMMARY);
|
||||
}
|
||||
}
|
||||
@@ -1,17 +1,18 @@
|
||||
package app.revanced.extension.tiktok.feedfilter;
|
||||
|
||||
import app.revanced.extension.tiktok.settings.Settings;
|
||||
import com.ss.android.ugc.aweme.feed.model.Aweme;
|
||||
import com.ss.android.ugc.aweme.feed.model.AwemeStatistics;
|
||||
|
||||
import static app.revanced.extension.tiktok.Utils.parseMinMax;
|
||||
import app.revanced.extension.tiktok.Utils;
|
||||
import app.revanced.extension.tiktok.settings.Settings;
|
||||
|
||||
public final class LikeCountFilter implements IFilter {
|
||||
|
||||
final long minLike;
|
||||
final long maxLike;
|
||||
|
||||
LikeCountFilter() {
|
||||
long[] minMax = parseMinMax(Settings.MIN_MAX_LIKES);
|
||||
long[] minMax = Utils.parseMinMax(Settings.MIN_MAX_LIKES);
|
||||
minLike = minMax[0];
|
||||
maxLike = minMax[1];
|
||||
}
|
||||
|
||||
@@ -1,17 +1,17 @@
|
||||
package app.revanced.extension.tiktok.feedfilter;
|
||||
|
||||
import app.revanced.extension.tiktok.Utils;
|
||||
import app.revanced.extension.tiktok.settings.Settings;
|
||||
import com.ss.android.ugc.aweme.feed.model.Aweme;
|
||||
import com.ss.android.ugc.aweme.feed.model.AwemeStatistics;
|
||||
|
||||
import static app.revanced.extension.tiktok.Utils.parseMinMax;
|
||||
|
||||
public class ViewCountFilter implements IFilter {
|
||||
final long minView;
|
||||
final long maxView;
|
||||
|
||||
ViewCountFilter() {
|
||||
long[] minMax = parseMinMax(Settings.MIN_MAX_VIEWS);
|
||||
long[] minMax = Utils.parseMinMax(Settings.MIN_MAX_VIEWS);
|
||||
minView = minMax[0];
|
||||
maxView = minMax[1];
|
||||
}
|
||||
|
||||
@@ -16,10 +16,10 @@ import android.widget.RadioButton;
|
||||
import android.widget.RadioGroup;
|
||||
|
||||
import app.revanced.extension.shared.settings.StringSetting;
|
||||
import app.revanced.extension.tiktok.Utils;
|
||||
|
||||
@SuppressWarnings("deprecation")
|
||||
public class DownloadPathPreference extends DialogPreference {
|
||||
private final Context context;
|
||||
private final String[] entryValues = {"DCIM", "Movies", "Pictures"};
|
||||
private String mValue;
|
||||
|
||||
@@ -29,11 +29,10 @@ public class DownloadPathPreference extends DialogPreference {
|
||||
|
||||
public DownloadPathPreference(Context context, String title, StringSetting setting) {
|
||||
super(context);
|
||||
this.context = context;
|
||||
this.setTitle(title);
|
||||
this.setSummary(Environment.getExternalStorageDirectory().getPath() + "/" + setting.get());
|
||||
this.setKey(setting.key);
|
||||
this.setValue(setting.get());
|
||||
setTitle(title);
|
||||
setSummary(Environment.getExternalStorageDirectory().getPath() + "/" + setting.get());
|
||||
setKey(setting.key);
|
||||
setValue(setting.get());
|
||||
}
|
||||
|
||||
public String getValue() {
|
||||
@@ -59,6 +58,7 @@ public class DownloadPathPreference extends DialogPreference {
|
||||
childDownloadPath = getValue().substring(getValue().indexOf("/") + 1);
|
||||
mediaPathIndex = findIndexOf(currentMedia);
|
||||
|
||||
Context context = getContext();
|
||||
LinearLayout dialogView = new LinearLayout(context);
|
||||
RadioGroup mediaPath = new RadioGroup(context);
|
||||
mediaPath.setLayoutParams(new RadioGroup.LayoutParams(-1, -2));
|
||||
@@ -79,12 +79,10 @@ public class DownloadPathPreference extends DialogPreference {
|
||||
downloadPath.addTextChangedListener(new TextWatcher() {
|
||||
@Override
|
||||
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -99,6 +97,13 @@ public class DownloadPathPreference extends DialogPreference {
|
||||
return dialogView;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onBindView(View view) {
|
||||
super.onBindView(view);
|
||||
|
||||
Utils.setTitleAndSummaryColor(getContext(), view);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onPrepareDialogBuilder(AlertDialog.Builder builder) {
|
||||
builder.setTitle("Download Path");
|
||||
|
||||
@@ -2,16 +2,26 @@ package app.revanced.extension.tiktok.settings.preference;
|
||||
|
||||
import android.content.Context;
|
||||
import android.preference.EditTextPreference;
|
||||
import android.view.View;
|
||||
|
||||
import app.revanced.extension.shared.settings.StringSetting;
|
||||
import app.revanced.extension.tiktok.Utils;
|
||||
|
||||
@SuppressWarnings("deprecation")
|
||||
public class InputTextPreference extends EditTextPreference {
|
||||
|
||||
public InputTextPreference(Context context, String title, String summary, StringSetting setting) {
|
||||
super(context);
|
||||
this.setTitle(title);
|
||||
this.setSummary(summary);
|
||||
this.setKey(setting.key);
|
||||
this.setText(setting.get());
|
||||
setTitle(title);
|
||||
setSummary(summary);
|
||||
setKey(setting.key);
|
||||
setText(setting.get());
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onBindView(View view) {
|
||||
super.onBindView(view);
|
||||
|
||||
Utils.setTitleAndSummaryColor(getContext(), view);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package app.revanced.extension.tiktok.settings.preference;
|
||||
|
||||
import android.annotation.SuppressLint;
|
||||
import android.app.AlertDialog;
|
||||
import android.content.Context;
|
||||
import android.content.DialogInterface;
|
||||
@@ -14,11 +15,10 @@ import android.widget.LinearLayout;
|
||||
import android.widget.TextView;
|
||||
|
||||
import app.revanced.extension.shared.settings.StringSetting;
|
||||
import app.revanced.extension.tiktok.Utils;
|
||||
|
||||
@SuppressWarnings("deprecation")
|
||||
public class RangeValuePreference extends DialogPreference {
|
||||
private final Context context;
|
||||
|
||||
private String minValue;
|
||||
|
||||
private String maxValue;
|
||||
@@ -29,7 +29,6 @@ public class RangeValuePreference extends DialogPreference {
|
||||
|
||||
public RangeValuePreference(Context context, String title, String summary, StringSetting setting) {
|
||||
super(context);
|
||||
this.context = context;
|
||||
setTitle(title);
|
||||
setSummary(summary);
|
||||
setKey(setting.key);
|
||||
@@ -53,41 +52,52 @@ public class RangeValuePreference extends DialogPreference {
|
||||
return mValue;
|
||||
}
|
||||
|
||||
@SuppressLint("SetTextI18n")
|
||||
@Override
|
||||
protected View onCreateDialogView() {
|
||||
minValue = getValue().split("-")[0];
|
||||
maxValue = getValue().split("-")[1];
|
||||
|
||||
Context context = getContext();
|
||||
|
||||
LinearLayout dialogView = new LinearLayout(context);
|
||||
dialogView.setOrientation(LinearLayout.VERTICAL);
|
||||
|
||||
// Min view
|
||||
LinearLayout minView = new LinearLayout(context);
|
||||
minView.setOrientation(LinearLayout.HORIZONTAL);
|
||||
dialogView.addView(minView);
|
||||
|
||||
TextView min = new TextView(context);
|
||||
min.setText("Min: ");
|
||||
minView.addView(min);
|
||||
|
||||
EditText minEditText = new EditText(context);
|
||||
minEditText.setInputType(InputType.TYPE_CLASS_NUMBER);
|
||||
minEditText.setText(minValue);
|
||||
minView.addView(minEditText);
|
||||
dialogView.addView(minView);
|
||||
|
||||
// Max view
|
||||
LinearLayout maxView = new LinearLayout(context);
|
||||
maxView.setOrientation(LinearLayout.HORIZONTAL);
|
||||
dialogView.addView(maxView);
|
||||
|
||||
TextView max = new TextView(context);
|
||||
max.setText("Max: ");
|
||||
maxView.addView(max);
|
||||
|
||||
EditText maxEditText = new EditText(context);
|
||||
maxEditText.setInputType(InputType.TYPE_CLASS_NUMBER);
|
||||
maxEditText.setText(maxValue);
|
||||
maxView.addView(maxEditText);
|
||||
dialogView.addView(maxView);
|
||||
|
||||
minEditText.addTextChangedListener(new TextWatcher() {
|
||||
@Override
|
||||
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -98,12 +108,10 @@ public class RangeValuePreference extends DialogPreference {
|
||||
maxEditText.addTextChangedListener(new TextWatcher() {
|
||||
@Override
|
||||
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -111,12 +119,21 @@ public class RangeValuePreference extends DialogPreference {
|
||||
maxValue = editable.toString();
|
||||
}
|
||||
});
|
||||
|
||||
return dialogView;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onBindView(View view) {
|
||||
super.onBindView(view);
|
||||
|
||||
Utils.setTitleAndSummaryColor(getContext(), view);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onPrepareDialogBuilder(AlertDialog.Builder builder) {
|
||||
builder.setPositiveButton(android.R.string.ok, (dialog, which) -> this.onClick(dialog, DialogInterface.BUTTON_POSITIVE));
|
||||
builder.setPositiveButton(android.R.string.ok, (dialog, which)
|
||||
-> this.onClick(dialog, DialogInterface.BUTTON_POSITIVE));
|
||||
builder.setNegativeButton(android.R.string.cancel, null);
|
||||
}
|
||||
|
||||
|
||||
@@ -18,14 +18,12 @@ import org.jetbrains.annotations.NotNull;
|
||||
public class ReVancedPreferenceFragment extends AbstractPreferenceFragment {
|
||||
|
||||
@Override
|
||||
protected void syncSettingWithPreference(@NonNull @NotNull Preference pref,
|
||||
@NonNull @NotNull Setting<?> setting,
|
||||
protected void syncSettingWithPreference(@NonNull Preference pref,
|
||||
@NonNull Setting<?> setting,
|
||||
boolean applySettingToPreference) {
|
||||
if (pref instanceof RangeValuePreference) {
|
||||
RangeValuePreference rangeValuePref = (RangeValuePreference) pref;
|
||||
if (pref instanceof RangeValuePreference rangeValuePref) {
|
||||
Setting.privateSetValueFromString(setting, rangeValuePref.getValue());
|
||||
} else if (pref instanceof DownloadPathPreference) {
|
||||
DownloadPathPreference downloadPathPref = (DownloadPathPreference) pref;
|
||||
} else if (pref instanceof DownloadPathPreference downloadPathPref) {
|
||||
Setting.privateSetValueFromString(setting, downloadPathPref.getValue());
|
||||
} else {
|
||||
super.syncSettingWithPreference(pref, setting, applySettingToPreference);
|
||||
|
||||
@@ -1,13 +1,15 @@
|
||||
package app.revanced.extension.tiktok.settings.preference;
|
||||
|
||||
import android.content.Context;
|
||||
import android.util.AttributeSet;
|
||||
import android.view.View;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
import app.revanced.extension.shared.Logger;
|
||||
import app.revanced.extension.shared.settings.preference.ReVancedAboutPreference;
|
||||
import app.revanced.extension.tiktok.Utils;
|
||||
|
||||
@SuppressWarnings("deprecation")
|
||||
public class ReVancedTikTokAboutPreference extends ReVancedAboutPreference {
|
||||
|
||||
/**
|
||||
@@ -23,22 +25,11 @@ public class ReVancedTikTokAboutPreference extends ReVancedAboutPreference {
|
||||
"revanced_settings_about_links_header", "Official links"
|
||||
);
|
||||
|
||||
{
|
||||
//noinspection deprecation
|
||||
setTitle("About");
|
||||
}
|
||||
|
||||
public ReVancedTikTokAboutPreference(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
|
||||
super(context, attrs, defStyleAttr, defStyleRes);
|
||||
}
|
||||
public ReVancedTikTokAboutPreference(Context context, AttributeSet attrs, int defStyleAttr) {
|
||||
super(context, attrs, defStyleAttr);
|
||||
}
|
||||
public ReVancedTikTokAboutPreference(Context context, AttributeSet attrs) {
|
||||
super(context, attrs);
|
||||
}
|
||||
public ReVancedTikTokAboutPreference(Context context) {
|
||||
super(context);
|
||||
|
||||
setTitle("About");
|
||||
setSummary("About ReVanced");
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -52,4 +43,11 @@ public class ReVancedTikTokAboutPreference extends ReVancedAboutPreference {
|
||||
|
||||
return String.format(format, args);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onBindView(View view) {
|
||||
super.onBindView(view);
|
||||
|
||||
Utils.setTitleAndSummaryColor(getContext(), view);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,16 +2,26 @@ package app.revanced.extension.tiktok.settings.preference;
|
||||
|
||||
import android.content.Context;
|
||||
import android.preference.SwitchPreference;
|
||||
import android.view.View;
|
||||
|
||||
import app.revanced.extension.shared.settings.BooleanSetting;
|
||||
import app.revanced.extension.tiktok.Utils;
|
||||
|
||||
@SuppressWarnings("deprecation")
|
||||
public class TogglePreference extends SwitchPreference {
|
||||
|
||||
public TogglePreference(Context context, String title, String summary, BooleanSetting setting) {
|
||||
super(context);
|
||||
this.setTitle(title);
|
||||
this.setSummary(summary);
|
||||
this.setKey(setting.key);
|
||||
this.setChecked(setting.get());
|
||||
setTitle(title);
|
||||
setSummary(summary);
|
||||
setKey(setting.key);
|
||||
setChecked(setting.get());
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onBindView(View view) {
|
||||
super.onBindView(view);
|
||||
|
||||
Utils.setTitleAndSummaryColor(getContext(), view);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -18,7 +18,7 @@ public final class ChangeStartPagePatch {
|
||||
/**
|
||||
* Unmodified type, and same as un-patched.
|
||||
*/
|
||||
ORIGINAL("", null),
|
||||
DEFAULT("", null),
|
||||
|
||||
/**
|
||||
* Browse id.
|
||||
|
||||
@@ -0,0 +1,41 @@
|
||||
package app.revanced.extension.youtube.patches;
|
||||
|
||||
import app.revanced.extension.shared.Logger;
|
||||
import app.revanced.extension.youtube.settings.Settings;
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
public class ForceOriginalAudioPatch {
|
||||
|
||||
private static final String DEFAULT_AUDIO_TRACKS_SUFFIX = ".4";
|
||||
|
||||
/**
|
||||
* Injection point.
|
||||
*/
|
||||
public static boolean isDefaultAudioStream(boolean isDefault, String audioTrackId, String audioTrackDisplayName) {
|
||||
try {
|
||||
if (!Settings.FORCE_ORIGINAL_AUDIO.get()) {
|
||||
return isDefault;
|
||||
}
|
||||
|
||||
if (audioTrackId.isEmpty()) {
|
||||
// Older app targets can have empty audio tracks and these might be placeholders.
|
||||
// The real audio tracks are called after these.
|
||||
return isDefault;
|
||||
}
|
||||
|
||||
Logger.printDebug(() -> "default: " + String.format("%-5s", isDefault) + " id: "
|
||||
+ String.format("%-8s", audioTrackId) + " name:" + audioTrackDisplayName);
|
||||
|
||||
final boolean isOriginal = audioTrackId.endsWith(DEFAULT_AUDIO_TRACKS_SUFFIX);
|
||||
if (isOriginal) {
|
||||
Logger.printDebug(() -> "Using audio: " + audioTrackId);
|
||||
}
|
||||
|
||||
return isOriginal;
|
||||
} catch (Exception ex) {
|
||||
Logger.printException(() -> "isDefaultAudioStream failure", ex);
|
||||
}
|
||||
|
||||
return isDefault;
|
||||
}
|
||||
}
|
||||
@@ -30,7 +30,7 @@ public final class MiniplayerPatch {
|
||||
*/
|
||||
DISABLED(false, null),
|
||||
/** Unmodified type, and same as un-patched. */
|
||||
ORIGINAL(null, null),
|
||||
DEFAULT(null, null),
|
||||
/**
|
||||
* Exactly the same as MINIMAL and only here for migration of user settings.
|
||||
* Eventually this should be deleted.
|
||||
@@ -82,7 +82,13 @@ public final class MiniplayerPatch {
|
||||
final int WIDTH_DIP_MIN = 170; // Seems to be the smallest that works.
|
||||
final int HORIZONTAL_PADDING_DIP = 15; // Estimated padding.
|
||||
// Round down to the nearest 5 pixels, to keep any error toasts easier to read.
|
||||
final int WIDTH_DIP_MAX = 5 * ((deviceDipWidth - HORIZONTAL_PADDING_DIP) / 5);
|
||||
final int estimatedWidthDipMax = 5 * ((deviceDipWidth - HORIZONTAL_PADDING_DIP) / 5);
|
||||
// On some ultra low end devices the pixel width and density are the same number,
|
||||
// which causes the estimate to always give a value of 1.
|
||||
// Fix this by using a fixed size of double the min width.
|
||||
final int WIDTH_DIP_MAX = estimatedWidthDipMax <= WIDTH_DIP_MIN
|
||||
? 2 * WIDTH_DIP_MIN
|
||||
: estimatedWidthDipMax;
|
||||
Logger.printDebug(() -> "Screen dip width: " + deviceDipWidth + " maxWidth: " + WIDTH_DIP_MAX);
|
||||
|
||||
int dipWidth = Settings.MINIPLAYER_WIDTH_DIP.get();
|
||||
@@ -127,8 +133,10 @@ public final class MiniplayerPatch {
|
||||
private static final boolean HIDE_SUBTEXT_ENABLED =
|
||||
(CURRENT_TYPE == MODERN_1 || CURRENT_TYPE == MODERN_3) && Settings.MINIPLAYER_HIDE_SUBTEXT.get();
|
||||
|
||||
private static final boolean HIDE_REWIND_FORWARD_ENABLED =
|
||||
CURRENT_TYPE == MODERN_1 && Settings.MINIPLAYER_HIDE_REWIND_FORWARD.get();
|
||||
// 19.25 is last version that has forward/back buttons for phones,
|
||||
// but buttons still show for tablets/foldable devices and they don't work well so always hide.
|
||||
private static final boolean HIDE_REWIND_FORWARD_ENABLED = CURRENT_TYPE == MODERN_1
|
||||
&& (VersionCheckPatch.IS_19_34_OR_GREATER || Settings.MINIPLAYER_HIDE_REWIND_FORWARD.get());
|
||||
|
||||
private static final boolean MINIPLAYER_ROUNDED_CORNERS_ENABLED =
|
||||
Settings.MINIPLAYER_ROUNDED_CORNERS.get();
|
||||
@@ -145,6 +153,18 @@ public final class MiniplayerPatch {
|
||||
|
||||
private static final int OPACITY_LEVEL;
|
||||
|
||||
static {
|
||||
int opacity = Settings.MINIPLAYER_OPACITY.get();
|
||||
|
||||
if (opacity < 0 || opacity > 100) {
|
||||
Utils.showToastLong(str("revanced_miniplayer_opacity_invalid_toast"));
|
||||
Settings.MINIPLAYER_OPACITY.resetToDefault();
|
||||
opacity = Settings.MINIPLAYER_OPACITY.defaultValue;
|
||||
}
|
||||
|
||||
OPACITY_LEVEL = (opacity * 255) / 100;
|
||||
}
|
||||
|
||||
public static final class MiniplayerHorizontalDragAvailability implements Setting.Availability {
|
||||
@Override
|
||||
public boolean isAvailable() {
|
||||
@@ -163,18 +183,6 @@ public final class MiniplayerPatch {
|
||||
}
|
||||
}
|
||||
|
||||
static {
|
||||
int opacity = Settings.MINIPLAYER_OPACITY.get();
|
||||
|
||||
if (opacity < 0 || opacity > 100) {
|
||||
Utils.showToastLong(str("revanced_miniplayer_opacity_invalid_toast"));
|
||||
Settings.MINIPLAYER_OPACITY.resetToDefault();
|
||||
opacity = Settings.MINIPLAYER_OPACITY.defaultValue;
|
||||
}
|
||||
|
||||
OPACITY_LEVEL = (opacity * 255) / 100;
|
||||
}
|
||||
|
||||
/**
|
||||
* Injection point.
|
||||
*
|
||||
@@ -182,7 +190,7 @@ public final class MiniplayerPatch {
|
||||
* effectively disabling the miniplayer.
|
||||
*/
|
||||
public static boolean getMiniplayerOnCloseHandler(boolean original) {
|
||||
return CURRENT_TYPE == ORIGINAL
|
||||
return CURRENT_TYPE == DEFAULT
|
||||
? original
|
||||
: CURRENT_TYPE == DISABLED;
|
||||
}
|
||||
@@ -201,7 +209,7 @@ public final class MiniplayerPatch {
|
||||
* Injection point.
|
||||
*/
|
||||
public static boolean getModernMiniplayerOverride(boolean original) {
|
||||
return CURRENT_TYPE == ORIGINAL
|
||||
return CURRENT_TYPE == DEFAULT
|
||||
? original
|
||||
: CURRENT_TYPE.isModern();
|
||||
}
|
||||
@@ -229,7 +237,7 @@ public final class MiniplayerPatch {
|
||||
* Injection point.
|
||||
*/
|
||||
public static boolean getModernFeatureFlagsActiveOverride(boolean original) {
|
||||
if (CURRENT_TYPE == ORIGINAL) {
|
||||
if (CURRENT_TYPE == DEFAULT) {
|
||||
return original;
|
||||
}
|
||||
|
||||
@@ -240,7 +248,7 @@ public final class MiniplayerPatch {
|
||||
* Injection point.
|
||||
*/
|
||||
public static boolean enableMiniplayerDoubleTapAction(boolean original) {
|
||||
if (CURRENT_TYPE == ORIGINAL) {
|
||||
if (CURRENT_TYPE == DEFAULT) {
|
||||
return original;
|
||||
}
|
||||
|
||||
@@ -251,7 +259,7 @@ public final class MiniplayerPatch {
|
||||
* Injection point.
|
||||
*/
|
||||
public static boolean enableMiniplayerDragAndDrop(boolean original) {
|
||||
if (CURRENT_TYPE == ORIGINAL) {
|
||||
if (CURRENT_TYPE == DEFAULT) {
|
||||
return original;
|
||||
}
|
||||
|
||||
|
||||
@@ -3,12 +3,15 @@ package app.revanced.extension.youtube.patches;
|
||||
import static app.revanced.extension.shared.Utils.hideViewUnderCondition;
|
||||
import static app.revanced.extension.youtube.shared.NavigationBar.NavigationButton;
|
||||
|
||||
import android.os.Build;
|
||||
import android.view.View;
|
||||
|
||||
import java.util.EnumMap;
|
||||
import java.util.Map;
|
||||
|
||||
import android.widget.TextView;
|
||||
|
||||
import app.revanced.extension.shared.Utils;
|
||||
import app.revanced.extension.youtube.settings.Settings;
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
@@ -26,6 +29,15 @@ public final class NavigationButtonsPatch {
|
||||
private static final boolean SWITCH_CREATE_WITH_NOTIFICATIONS_BUTTON
|
||||
= Settings.SWITCH_CREATE_WITH_NOTIFICATIONS_BUTTON.get();
|
||||
|
||||
private static final Boolean DISABLE_TRANSLUCENT_STATUS_BAR
|
||||
= Settings.DISABLE_TRANSLUCENT_STATUS_BAR.get();
|
||||
|
||||
private static final Boolean DISABLE_TRANSLUCENT_NAVIGATION_BAR_LIGHT
|
||||
= Settings.DISABLE_TRANSLUCENT_NAVIGATION_BAR_LIGHT.get();
|
||||
|
||||
private static final Boolean DISABLE_TRANSLUCENT_NAVIGATION_BAR_DARK
|
||||
= Settings.DISABLE_TRANSLUCENT_NAVIGATION_BAR_DARK.get();
|
||||
|
||||
/**
|
||||
* Injection point.
|
||||
*/
|
||||
@@ -48,4 +60,42 @@ public final class NavigationButtonsPatch {
|
||||
public static void hideNavigationButtonLabels(TextView navigationLabelsView) {
|
||||
hideViewUnderCondition(Settings.HIDE_NAVIGATION_BUTTON_LABELS, navigationLabelsView);
|
||||
}
|
||||
|
||||
/**
|
||||
* Injection point.
|
||||
*/
|
||||
public static boolean useTranslucentNavigationStatusBar(boolean original) {
|
||||
// Must check Android version, as forcing this on Android 11 or lower causes app hang and crash.
|
||||
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.S) {
|
||||
return original;
|
||||
}
|
||||
|
||||
if (DISABLE_TRANSLUCENT_STATUS_BAR) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return original;
|
||||
}
|
||||
|
||||
/**
|
||||
* Injection point.
|
||||
*/
|
||||
public static boolean useTranslucentNavigationButtons(boolean original) {
|
||||
// Feature requires Android 13+
|
||||
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.TIRAMISU) {
|
||||
return original;
|
||||
}
|
||||
|
||||
if (!DISABLE_TRANSLUCENT_NAVIGATION_BAR_DARK && !DISABLE_TRANSLUCENT_NAVIGATION_BAR_LIGHT) {
|
||||
return original;
|
||||
}
|
||||
|
||||
if (DISABLE_TRANSLUCENT_NAVIGATION_BAR_DARK && DISABLE_TRANSLUCENT_NAVIGATION_BAR_LIGHT) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return Utils.isDarkModeEnabled(Utils.getContext())
|
||||
? !DISABLE_TRANSLUCENT_NAVIGATION_BAR_DARK
|
||||
: !DISABLE_TRANSLUCENT_NAVIGATION_BAR_LIGHT;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,95 @@
|
||||
package app.revanced.extension.youtube.patches;
|
||||
|
||||
import static app.revanced.extension.youtube.shared.NavigationBar.NavigationButton;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.Intent;
|
||||
import android.net.Uri;
|
||||
|
||||
import java.lang.ref.WeakReference;
|
||||
|
||||
import app.revanced.extension.shared.Logger;
|
||||
import app.revanced.extension.youtube.settings.Settings;
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
public class OpenShortsInRegularPlayerPatch {
|
||||
|
||||
public enum ShortsPlayerType {
|
||||
SHORTS_PLAYER,
|
||||
REGULAR_PLAYER,
|
||||
REGULAR_PLAYER_FULLSCREEN
|
||||
}
|
||||
|
||||
static {
|
||||
if (!VersionCheckPatch.IS_19_46_OR_GREATER
|
||||
&& Settings.SHORTS_PLAYER_TYPE.get() == ShortsPlayerType.REGULAR_PLAYER_FULLSCREEN) {
|
||||
// User imported newer settings to an older app target.
|
||||
Logger.printInfo(() -> "Resetting " + Settings.SHORTS_PLAYER_TYPE);
|
||||
Settings.SHORTS_PLAYER_TYPE.resetToDefault();
|
||||
}
|
||||
}
|
||||
|
||||
private static WeakReference<Activity> mainActivityRef = new WeakReference<>(null);
|
||||
|
||||
/**
|
||||
* Injection point.
|
||||
*/
|
||||
public static void setMainActivity(Activity activity) {
|
||||
mainActivityRef = new WeakReference<>(activity);
|
||||
}
|
||||
|
||||
/**
|
||||
* Injection point.
|
||||
*/
|
||||
public static boolean openShort(String videoID) {
|
||||
try {
|
||||
ShortsPlayerType type = Settings.SHORTS_PLAYER_TYPE.get();
|
||||
if (type == ShortsPlayerType.SHORTS_PLAYER) {
|
||||
return false; // Default unpatched behavior.
|
||||
}
|
||||
|
||||
if (videoID.isEmpty()) {
|
||||
// Shorts was opened using launcher app shortcut.
|
||||
//
|
||||
// This check will not detect if the Shorts app shortcut is used
|
||||
// while the app is running in the background (instead the regular player is opened).
|
||||
// To detect that the hooked method map parameter can be checked
|
||||
// if integer key 'com.google.android.apps.youtube.app.endpoint.flags'
|
||||
// has bitmask 16 set.
|
||||
//
|
||||
// This use case seems unlikely if the user has the Shorts
|
||||
// set to open in the regular player, so it's ignored as
|
||||
// checking the map makes the patch more complicated.
|
||||
Logger.printDebug(() -> "Ignoring Short with no videoId");
|
||||
return false;
|
||||
}
|
||||
|
||||
if (NavigationButton.getSelectedNavigationButton() == NavigationButton.SHORTS) {
|
||||
return false; // Always use Shorts player for the Shorts nav button.
|
||||
}
|
||||
|
||||
final boolean forceFullScreen = (type == ShortsPlayerType.REGULAR_PLAYER_FULLSCREEN);
|
||||
OpenVideosFullscreenHookPatch.setOpenNextVideoFullscreen(forceFullScreen);
|
||||
|
||||
// Can use the application context and add intent flags of
|
||||
// FLAG_ACTIVITY_NEW_TASK and FLAG_ACTIVITY_CLEAR_TOP
|
||||
// But the activity context seems to fix random app crashes
|
||||
// if Shorts urls are opened outside the app.
|
||||
var context = mainActivityRef.get();
|
||||
|
||||
Intent videoPlayerIntent = new Intent(
|
||||
Intent.ACTION_VIEW,
|
||||
Uri.parse("https://youtube.com/watch?v=" + videoID)
|
||||
);
|
||||
videoPlayerIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||
videoPlayerIntent.setPackage(context.getPackageName());
|
||||
|
||||
context.startActivity(videoPlayerIntent);
|
||||
return true;
|
||||
} catch (Exception ex) {
|
||||
OpenVideosFullscreenHookPatch.setOpenNextVideoFullscreen(null);
|
||||
Logger.printException(() -> "openShort failure", ex);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,14 +0,0 @@
|
||||
package app.revanced.extension.youtube.patches;
|
||||
|
||||
import app.revanced.extension.youtube.settings.Settings;
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
public class OpenVideosFullscreen {
|
||||
|
||||
/**
|
||||
* Injection point.
|
||||
*/
|
||||
public static boolean openVideoFullscreenPortrait(boolean original) {
|
||||
return Settings.OPEN_VIDEOS_FULLSCREEN_PORTRAIT.get();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,41 @@
|
||||
package app.revanced.extension.youtube.patches;
|
||||
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import app.revanced.extension.youtube.settings.Settings;
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
public class OpenVideosFullscreenHookPatch {
|
||||
|
||||
@Nullable
|
||||
private static volatile Boolean openNextVideoFullscreen;
|
||||
|
||||
public static void setOpenNextVideoFullscreen(@Nullable Boolean forceFullScreen) {
|
||||
openNextVideoFullscreen = forceFullScreen;
|
||||
}
|
||||
|
||||
/**
|
||||
* Changed during patching since this class is also
|
||||
* used by {@link OpenVideosFullscreenHookPatch}.
|
||||
*/
|
||||
private static boolean isFullScreenPatchIncluded() {
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Injection point.
|
||||
*/
|
||||
public static boolean openVideoFullscreenPortrait(boolean original) {
|
||||
Boolean openFullscreen = openNextVideoFullscreen;
|
||||
if (openFullscreen != null) {
|
||||
openNextVideoFullscreen = null;
|
||||
return openFullscreen;
|
||||
}
|
||||
|
||||
if (!isFullScreenPatchIncluded()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return Settings.OPEN_VIDEOS_FULLSCREEN_PORTRAIT.get();
|
||||
}
|
||||
}
|
||||
@@ -9,4 +9,5 @@ public class VersionCheckPatch {
|
||||
public static final boolean IS_19_26_OR_GREATER = Utils.getAppVersionName().compareTo("19.26.00") >= 0;
|
||||
public static final boolean IS_19_29_OR_GREATER = Utils.getAppVersionName().compareTo("19.29.00") >= 0;
|
||||
public static final boolean IS_19_34_OR_GREATER = Utils.getAppVersionName().compareTo("19.34.00") >= 0;
|
||||
public static final boolean IS_19_46_OR_GREATER = Utils.getAppVersionName().compareTo("19.46.00") >= 0;
|
||||
}
|
||||
|
||||
@@ -85,7 +85,8 @@ public final class AdsFilter extends Filter {
|
||||
"composite_concurrent_carousel_layout",
|
||||
"carousel_headered_layout",
|
||||
"full_width_portrait_image_layout",
|
||||
"brand_video_shelf"
|
||||
"brand_video_shelf",
|
||||
"brand_video_singleton"
|
||||
);
|
||||
|
||||
final var movieAds = new StringFilterGroup(
|
||||
|
||||
@@ -14,6 +14,11 @@ final class CommentsFilter extends Filter {
|
||||
private final ByteArrayFilterGroup emojiPickerBufferGroup;
|
||||
|
||||
public CommentsFilter() {
|
||||
var chatSummary = new StringFilterGroup(
|
||||
Settings.HIDE_COMMENTS_CHAT_SUMMARY,
|
||||
"live_chat_summary_banner.eml"
|
||||
);
|
||||
|
||||
var commentsByMembers = new StringFilterGroup(
|
||||
Settings.HIDE_COMMENTS_BY_MEMBERS_HEADER,
|
||||
"sponsorships_comments_header.eml",
|
||||
@@ -54,6 +59,7 @@ final class CommentsFilter extends Filter {
|
||||
);
|
||||
|
||||
addPathCallbacks(
|
||||
chatSummary,
|
||||
commentsByMembers,
|
||||
comments,
|
||||
createAShort,
|
||||
|
||||
@@ -36,7 +36,6 @@ public final class LayoutComponentsFilter extends Filter {
|
||||
);
|
||||
|
||||
private final StringTrieSearch exceptions = new StringTrieSearch();
|
||||
private final StringFilterGroup searchResultShelfHeader;
|
||||
private final StringFilterGroup inFeedSurvey;
|
||||
private final StringFilterGroup notifyMe;
|
||||
private final StringFilterGroup expandableMetadata;
|
||||
@@ -74,13 +73,14 @@ public final class LayoutComponentsFilter extends Filter {
|
||||
|
||||
final var communityPosts = new StringFilterGroup(
|
||||
Settings.HIDE_COMMUNITY_POSTS,
|
||||
"post_base_wrapper",
|
||||
"post_base_wrapper", // may be obsolete and no longer needed.
|
||||
"text_post_root.eml",
|
||||
"images_post_root.eml",
|
||||
"images_post_slim.eml",
|
||||
"images_post_slim.eml", // may be obsolete and no longer needed.
|
||||
"images_post_root_slim.eml",
|
||||
"text_post_root_slim.eml",
|
||||
"post_base_wrapper_slim.eml"
|
||||
"post_base_wrapper_slim.eml",
|
||||
"poll_post_root.eml"
|
||||
);
|
||||
|
||||
final var communityGuidelines = new StringFilterGroup(
|
||||
@@ -194,11 +194,6 @@ public final class LayoutComponentsFilter extends Filter {
|
||||
"timed_reaction"
|
||||
);
|
||||
|
||||
searchResultShelfHeader = new StringFilterGroup(
|
||||
Settings.HIDE_SEARCH_RESULT_SHELF_HEADER,
|
||||
"shelf_header.eml"
|
||||
);
|
||||
|
||||
notifyMe = new StringFilterGroup(
|
||||
Settings.HIDE_NOTIFY_ME_BUTTON,
|
||||
"set_reminder_button"
|
||||
@@ -324,9 +319,6 @@ public final class LayoutComponentsFilter extends Filter {
|
||||
return false;
|
||||
}
|
||||
|
||||
// TODO: This also hides the feed Shorts shelf header
|
||||
if (matchedGroup == searchResultShelfHeader && contentIndex != 0) return false;
|
||||
|
||||
if (matchedGroup == horizontalShelves) {
|
||||
if (contentIndex == 0 && hideShelves()) {
|
||||
return super.isFiltered(path, identifier, protobufBufferArray, matchedGroup, contentType, contentIndex);
|
||||
|
||||
@@ -16,7 +16,7 @@ import static app.revanced.extension.youtube.patches.MiniplayerPatch.MiniplayerT
|
||||
import static app.revanced.extension.youtube.patches.MiniplayerPatch.MiniplayerType.MODERN_2;
|
||||
import static app.revanced.extension.youtube.patches.MiniplayerPatch.MiniplayerType.MODERN_3;
|
||||
import static app.revanced.extension.youtube.patches.MiniplayerPatch.MiniplayerType.MODERN_4;
|
||||
import static app.revanced.extension.youtube.patches.MiniplayerPatch.MiniplayerType.PHONE;
|
||||
import static app.revanced.extension.youtube.patches.OpenShortsInRegularPlayerPatch.ShortsPlayerType;
|
||||
import static app.revanced.extension.youtube.patches.SeekbarThumbnailsPatch.SeekbarThumbnailsHighQualityAvailability;
|
||||
import static app.revanced.extension.youtube.patches.VersionCheckPatch.IS_19_17_OR_GREATER;
|
||||
import static app.revanced.extension.youtube.sponsorblock.objects.CategoryBehaviour.IGNORE;
|
||||
@@ -52,6 +52,8 @@ public class Settings extends BaseSettings {
|
||||
public static final FloatSetting PLAYBACK_SPEED_DEFAULT = new FloatSetting("revanced_playback_speed_default", -2.0f);
|
||||
public static final StringSetting CUSTOM_PLAYBACK_SPEEDS = new StringSetting("revanced_custom_playback_speeds",
|
||||
"0.25\n0.5\n0.75\n0.9\n0.95\n1.0\n1.05\n1.1\n1.25\n1.5\n1.75\n2.0\n3.0\n4.0\n5.0", true);
|
||||
// Audio
|
||||
public static final BooleanSetting FORCE_ORIGINAL_AUDIO = new BooleanSetting("revanced_force_original_audio", FALSE);
|
||||
|
||||
// Ads
|
||||
public static final BooleanSetting HIDE_BUTTONED_ADS = new BooleanSetting("revanced_hide_buttoned_ads", TRUE);
|
||||
@@ -91,7 +93,6 @@ public class Settings extends BaseSettings {
|
||||
public static final BooleanSetting HIDE_NOTIFY_ME_BUTTON = new BooleanSetting("revanced_hide_notify_me_button", TRUE);
|
||||
public static final BooleanSetting HIDE_PLAYABLES = new BooleanSetting("revanced_hide_playables", TRUE);
|
||||
public static final BooleanSetting HIDE_SEARCH_RESULT_RECOMMENDATIONS = new BooleanSetting("revanced_hide_search_result_recommendations", TRUE);
|
||||
public static final BooleanSetting HIDE_SEARCH_RESULT_SHELF_HEADER = new BooleanSetting("revanced_hide_search_result_shelf_header", FALSE);
|
||||
public static final BooleanSetting HIDE_SHOW_MORE_BUTTON = new BooleanSetting("revanced_hide_show_more_button", TRUE, true);
|
||||
// Alternative thumbnails
|
||||
public static final EnumSetting<ThumbnailOption> ALT_THUMBNAIL_HOME = new EnumSetting<>("revanced_alt_thumbnail_home", ThumbnailOption.ORIGINAL);
|
||||
@@ -142,14 +143,14 @@ public class Settings extends BaseSettings {
|
||||
public static final IntegerSetting PLAYER_OVERLAY_OPACITY = new IntegerSetting("revanced_player_overlay_opacity", 100, true);
|
||||
public static final BooleanSetting OPEN_VIDEOS_FULLSCREEN_PORTRAIT = new BooleanSetting("revanced_open_videos_fullscreen_portrait", FALSE);
|
||||
// Miniplayer
|
||||
public static final EnumSetting<MiniplayerType> MINIPLAYER_TYPE = new EnumSetting<>("revanced_miniplayer_type", MiniplayerType.ORIGINAL, true);
|
||||
public static final EnumSetting<MiniplayerType> MINIPLAYER_TYPE = new EnumSetting<>("revanced_miniplayer_type", MiniplayerType.DEFAULT, true);
|
||||
private static final Availability MINIPLAYER_ANY_MODERN = MINIPLAYER_TYPE.availability(MODERN_1, MODERN_2, MODERN_3, MODERN_4);
|
||||
public static final BooleanSetting MINIPLAYER_DOUBLE_TAP_ACTION = new BooleanSetting("revanced_miniplayer_double_tap_action", TRUE, true, MINIPLAYER_ANY_MODERN);
|
||||
public static final BooleanSetting MINIPLAYER_DRAG_AND_DROP = new BooleanSetting("revanced_miniplayer_drag_and_drop", TRUE, true, MINIPLAYER_ANY_MODERN);
|
||||
public static final BooleanSetting MINIPLAYER_HORIZONTAL_DRAG = new BooleanSetting("revanced_miniplayer_horizontal_drag", FALSE, true, new MiniplayerHorizontalDragAvailability());
|
||||
public static final BooleanSetting MINIPLAYER_HIDE_EXPAND_CLOSE = new BooleanSetting("revanced_miniplayer_hide_expand_close", FALSE, true, new MiniplayerHideExpandCloseAvailability());
|
||||
public static final BooleanSetting MINIPLAYER_HIDE_SUBTEXT = new BooleanSetting("revanced_miniplayer_hide_subtext", FALSE, true, MINIPLAYER_TYPE.availability(MODERN_1, MODERN_3));
|
||||
public static final BooleanSetting MINIPLAYER_HIDE_REWIND_FORWARD = new BooleanSetting("revanced_miniplayer_hide_rewind_forward", FALSE, true, MINIPLAYER_TYPE.availability(MODERN_1));
|
||||
public static final BooleanSetting MINIPLAYER_HIDE_REWIND_FORWARD = new BooleanSetting("revanced_miniplayer_hide_rewind_forward", TRUE, true, MINIPLAYER_TYPE.availability(MODERN_1));
|
||||
public static final BooleanSetting MINIPLAYER_ROUNDED_CORNERS = new BooleanSetting("revanced_miniplayer_rounded_corners", TRUE, true, MINIPLAYER_ANY_MODERN);
|
||||
public static final IntegerSetting MINIPLAYER_WIDTH_DIP = new IntegerSetting("revanced_miniplayer_width_dip", 192, true, MINIPLAYER_ANY_MODERN);
|
||||
public static final IntegerSetting MINIPLAYER_OPACITY = new IntegerSetting("revanced_miniplayer_opacity", 100, true, MINIPLAYER_TYPE.availability(MODERN_1));
|
||||
@@ -159,6 +160,7 @@ public class Settings extends BaseSettings {
|
||||
public static final StringSetting EXTERNAL_DOWNLOADER_PACKAGE_NAME = new StringSetting("revanced_external_downloader_name",
|
||||
"org.schabi.newpipe" /* NewPipe */, parentsAny(EXTERNAL_DOWNLOADER, EXTERNAL_DOWNLOADER_ACTION_BUTTON));
|
||||
// Comments
|
||||
public static final BooleanSetting HIDE_COMMENTS_CHAT_SUMMARY = new BooleanSetting("revanced_hide_comments_chat_summary", FALSE);
|
||||
public static final BooleanSetting HIDE_COMMENTS_BY_MEMBERS_HEADER = new BooleanSetting("revanced_hide_comments_by_members_header", FALSE);
|
||||
public static final BooleanSetting HIDE_COMMENTS_CREATE_A_SHORT_BUTTON = new BooleanSetting("revanced_hide_comments_create_a_short_button", TRUE);
|
||||
public static final BooleanSetting HIDE_COMMENTS_PREVIEW_COMMENT = new BooleanSetting("revanced_hide_comments_preview_comment", FALSE);
|
||||
@@ -204,7 +206,7 @@ public class Settings extends BaseSettings {
|
||||
public static final BooleanSetting SPOOF_APP_VERSION = new BooleanSetting("revanced_spoof_app_version", FALSE, true, "revanced_spoof_app_version_user_dialog_message");
|
||||
public static final BooleanSetting TABLET_LAYOUT = new BooleanSetting("revanced_tablet_layout", FALSE, true, "revanced_tablet_layout_user_dialog_message");
|
||||
public static final BooleanSetting WIDE_SEARCHBAR = new BooleanSetting("revanced_wide_searchbar", FALSE, true);
|
||||
public static final EnumSetting<StartPage> CHANGE_START_PAGE = new EnumSetting<>("revanced_change_start_page", StartPage.ORIGINAL, true);
|
||||
public static final EnumSetting<StartPage> CHANGE_START_PAGE = new EnumSetting<>("revanced_change_start_page", StartPage.DEFAULT, true);
|
||||
public static final StringSetting SPOOF_APP_VERSION_TARGET = new StringSetting("revanced_spoof_app_version_target", IS_19_17_OR_GREATER ? "19.35.36" : "17.33.42", true, parent(SPOOF_APP_VERSION));
|
||||
// Custom filter
|
||||
public static final BooleanSetting CUSTOM_FILTER = new BooleanSetting("revanced_custom_filter", FALSE);
|
||||
@@ -216,10 +218,14 @@ public class Settings extends BaseSettings {
|
||||
public static final BooleanSetting HIDE_SUBSCRIPTIONS_BUTTON = new BooleanSetting("revanced_hide_subscriptions_button", FALSE, true);
|
||||
public static final BooleanSetting HIDE_NAVIGATION_BUTTON_LABELS = new BooleanSetting("revanced_hide_navigation_button_labels", FALSE, true);
|
||||
public static final BooleanSetting SWITCH_CREATE_WITH_NOTIFICATIONS_BUTTON = new BooleanSetting("revanced_switch_create_with_notifications_button", TRUE, true);
|
||||
public static final BooleanSetting DISABLE_TRANSLUCENT_STATUS_BAR = new BooleanSetting("revanced_disable_translucent_status_bar", FALSE, true);
|
||||
public static final BooleanSetting DISABLE_TRANSLUCENT_NAVIGATION_BAR_LIGHT = new BooleanSetting("revanced_disable_translucent_navigation_bar_light", FALSE, true);
|
||||
public static final BooleanSetting DISABLE_TRANSLUCENT_NAVIGATION_BAR_DARK = new BooleanSetting("revanced_disable_translucent_navigation_bar_dark", FALSE, true);
|
||||
|
||||
// Shorts
|
||||
public static final BooleanSetting DISABLE_RESUMING_SHORTS_PLAYER = new BooleanSetting("revanced_disable_resuming_shorts_player", FALSE);
|
||||
public static final BooleanSetting DISABLE_SHORTS_BACKGROUND_PLAYBACK = new BooleanSetting("revanced_shorts_disable_background_playback", FALSE);
|
||||
public static final EnumSetting<ShortsPlayerType> SHORTS_PLAYER_TYPE = new EnumSetting<>("revanced_shorts_player_type", ShortsPlayerType.SHORTS_PLAYER);
|
||||
public static final BooleanSetting HIDE_SHORTS_CHANNEL_BAR = new BooleanSetting("revanced_hide_shorts_channel_bar", FALSE);
|
||||
public static final BooleanSetting HIDE_SHORTS_COMMENTS_BUTTON = new BooleanSetting("revanced_hide_shorts_comments_button", FALSE);
|
||||
public static final BooleanSetting HIDE_SHORTS_DISLIKE_BUTTON = new BooleanSetting("revanced_hide_shorts_dislike_button", FALSE);
|
||||
@@ -387,7 +393,8 @@ public class Settings extends BaseSettings {
|
||||
}
|
||||
|
||||
// Migrate renamed enum.
|
||||
if (MINIPLAYER_TYPE.get() == PHONE) {
|
||||
//noinspection deprecation
|
||||
if (MINIPLAYER_TYPE.get() == MiniplayerType.PHONE) {
|
||||
MINIPLAYER_TYPE.save(MINIMAL);
|
||||
}
|
||||
|
||||
|
||||
@@ -48,35 +48,44 @@ public class ReVancedPreferenceFragment extends AbstractPreferenceFragment {
|
||||
|
||||
/**
|
||||
* Sorts a preference list by menu entries, but preserves the first value as the first entry.
|
||||
*
|
||||
* @noinspection SameParameterValue
|
||||
*/
|
||||
private static void sortListPreferenceByValues(ListPreference listPreference) {
|
||||
private static void sortListPreferenceByValues(ListPreference listPreference, int firstEntriesToPreserve) {
|
||||
CharSequence[] entries = listPreference.getEntries();
|
||||
CharSequence[] entryValues = listPreference.getEntryValues();
|
||||
final int entrySize = entries.length;
|
||||
|
||||
if (entrySize != entryValues.length) {
|
||||
// Xml array declaration has a missing/extra entry.
|
||||
throw new IllegalStateException();
|
||||
}
|
||||
|
||||
// Ensure the first entry remains the first after sorting.
|
||||
CharSequence firstEntry = entries[0];
|
||||
CharSequence firstEntryValue = entryValues[0];
|
||||
List<Pair<String, String>> firstPairs = new ArrayList<>(firstEntriesToPreserve);
|
||||
List<Pair<String, String>> pairsToSort = new ArrayList<>(entrySize);
|
||||
|
||||
List<Pair<String, String>> entryPairs = new ArrayList<>(entrySize);
|
||||
for (int i = 1; i < entrySize; i++) {
|
||||
entryPairs.add(new Pair<>(entries[i].toString(), entryValues[i].toString()));
|
||||
for (int i = 0; i < entrySize; i++) {
|
||||
Pair<String, String> pair = new Pair<>(entries[i].toString(), entryValues[i].toString());
|
||||
if (i < firstEntriesToPreserve) {
|
||||
firstPairs.add(pair);
|
||||
} else {
|
||||
pairsToSort.add(pair);
|
||||
}
|
||||
}
|
||||
|
||||
Collections.sort(entryPairs, (pair1, pair2) -> pair1.first.compareToIgnoreCase(pair2.first));
|
||||
Collections.sort(pairsToSort, (pair1, pair2) -> pair1.first.compareToIgnoreCase(pair2.first));
|
||||
|
||||
CharSequence[] sortedEntries = new CharSequence[entrySize];
|
||||
CharSequence[] sortedEntryValues = new CharSequence[entrySize];
|
||||
|
||||
sortedEntries[0] = firstEntry;
|
||||
sortedEntryValues[0] = firstEntryValue;
|
||||
int i = 0;
|
||||
for (Pair<String, String> pair : firstPairs) {
|
||||
sortedEntries[i] = pair.first;
|
||||
sortedEntryValues[i] = pair.second;
|
||||
i++;
|
||||
}
|
||||
|
||||
int i = 1;
|
||||
for (Pair<String, String> pair : entryPairs) {
|
||||
for (Pair<String, String> pair : pairsToSort) {
|
||||
sortedEntries[i] = pair.first;
|
||||
sortedEntryValues[i] = pair.second;
|
||||
i++;
|
||||
@@ -102,7 +111,7 @@ public class ReVancedPreferenceFragment extends AbstractPreferenceFragment {
|
||||
|
||||
preference = findPreference(Settings.SPOOF_VIDEO_STREAMS_LANGUAGE.key);
|
||||
if (preference instanceof ListPreference languagePreference) {
|
||||
sortListPreferenceByValues(languagePreference);
|
||||
sortListPreferenceByValues(languagePreference, 1);
|
||||
}
|
||||
} catch (Exception ex) {
|
||||
Logger.printException(() -> "initialize failure", ex);
|
||||
|
||||
@@ -507,7 +507,7 @@ public class SponsorBlockPreferenceFragment extends PreferenceFragment {
|
||||
Utils.showToastLong(str("revanced_sb_stats_username_changed"));
|
||||
} else {
|
||||
preference.setText(userName); // revert to previous
|
||||
Utils.showToastLong(errorMessage);
|
||||
SponsorBlockUtils.showErrorDialog(errorMessage);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
@@ -0,0 +1,85 @@
|
||||
package app.revanced.extension.youtube.settings.preference;
|
||||
|
||||
import static app.revanced.extension.shared.StringRef.str;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.SharedPreferences;
|
||||
import android.preference.Preference;
|
||||
import android.preference.PreferenceManager;
|
||||
import android.util.AttributeSet;
|
||||
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import app.revanced.extension.shared.Logger;
|
||||
import app.revanced.extension.shared.Utils;
|
||||
import app.revanced.extension.shared.settings.BaseSettings;
|
||||
import app.revanced.extension.shared.settings.Setting;
|
||||
import app.revanced.extension.shared.spoof.ClientType;
|
||||
|
||||
@SuppressWarnings({"deprecation", "unused"})
|
||||
public class SpoofStreamingDataSideEffectsPreference extends Preference {
|
||||
|
||||
@Nullable
|
||||
private ClientType currentClientType;
|
||||
|
||||
private final SharedPreferences.OnSharedPreferenceChangeListener listener = (sharedPreferences, str) -> {
|
||||
// Because this listener may run before the ReVanced settings fragment updates Settings,
|
||||
// this could show the prior config and not the current.
|
||||
//
|
||||
// Push this call to the end of the main run queue,
|
||||
// so all other listeners are done and Settings is up to date.
|
||||
Utils.runOnMainThread(this::updateUI);
|
||||
};
|
||||
|
||||
public SpoofStreamingDataSideEffectsPreference(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
|
||||
super(context, attrs, defStyleAttr, defStyleRes);
|
||||
}
|
||||
|
||||
public SpoofStreamingDataSideEffectsPreference(Context context, AttributeSet attrs, int defStyleAttr) {
|
||||
super(context, attrs, defStyleAttr);
|
||||
}
|
||||
|
||||
public SpoofStreamingDataSideEffectsPreference(Context context, AttributeSet attrs) {
|
||||
super(context, attrs);
|
||||
}
|
||||
|
||||
public SpoofStreamingDataSideEffectsPreference(Context context) {
|
||||
super(context);
|
||||
}
|
||||
|
||||
private void addChangeListener() {
|
||||
Setting.preferences.preferences.registerOnSharedPreferenceChangeListener(listener);
|
||||
}
|
||||
|
||||
private void removeChangeListener() {
|
||||
Setting.preferences.preferences.unregisterOnSharedPreferenceChangeListener(listener);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onAttachedToHierarchy(PreferenceManager preferenceManager) {
|
||||
super.onAttachedToHierarchy(preferenceManager);
|
||||
updateUI();
|
||||
addChangeListener();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onPrepareForRemoval() {
|
||||
super.onPrepareForRemoval();
|
||||
removeChangeListener();
|
||||
}
|
||||
|
||||
private void updateUI() {
|
||||
ClientType clientType = BaseSettings.SPOOF_VIDEO_STREAMS_CLIENT_TYPE.get();
|
||||
if (currentClientType == clientType) {
|
||||
return;
|
||||
}
|
||||
|
||||
Logger.printDebug(() -> "Updating spoof stream side effects preference");
|
||||
setEnabled(BaseSettings.SPOOF_VIDEO_STREAMS.get());
|
||||
|
||||
String key = "revanced_spoof_video_streams_about_"
|
||||
+ clientType.name().toLowerCase();
|
||||
setTitle(str(key + "_title"));
|
||||
setSummary(str(key + "_summary"));
|
||||
}
|
||||
}
|
||||
@@ -363,6 +363,16 @@ public class SponsorBlockUtils {
|
||||
}
|
||||
}
|
||||
|
||||
public static void showErrorDialog(String dialogMessage) {
|
||||
Utils.runOnMainThreadNowOrLater(() ->
|
||||
new AlertDialog.Builder(SponsorBlockViewController.getOverLaysViewGroupContext())
|
||||
.setMessage(dialogMessage)
|
||||
.setPositiveButton(android.R.string.ok, null)
|
||||
.setCancelable(false)
|
||||
.show()
|
||||
);
|
||||
}
|
||||
|
||||
public static void onEditByHandClicked() {
|
||||
try {
|
||||
Utils.verifyOnMainThread();
|
||||
|
||||
@@ -19,6 +19,7 @@ import java.util.concurrent.TimeUnit;
|
||||
|
||||
import app.revanced.extension.youtube.settings.Settings;
|
||||
import app.revanced.extension.youtube.sponsorblock.SponsorBlockSettings;
|
||||
import app.revanced.extension.youtube.sponsorblock.SponsorBlockUtils;
|
||||
import app.revanced.extension.youtube.sponsorblock.objects.SegmentCategory;
|
||||
import app.revanced.extension.youtube.sponsorblock.objects.SponsorSegment;
|
||||
import app.revanced.extension.youtube.sponsorblock.objects.SponsorSegment.SegmentVote;
|
||||
@@ -142,6 +143,7 @@ public class SBRequester {
|
||||
public static void submitSegments(@NonNull String videoId, @NonNull String category,
|
||||
long startTime, long endTime, long videoLength) {
|
||||
Utils.verifyOffMainThread();
|
||||
|
||||
try {
|
||||
String privateUserId = SponsorBlockSettings.getSBPrivateUserID();
|
||||
String start = String.format(Locale.US, TIME_TEMPLATE, startTime / 1000f);
|
||||
@@ -151,35 +153,29 @@ public class SBRequester {
|
||||
HttpURLConnection connection = getConnectionFromRoute(SBRoutes.SUBMIT_SEGMENTS, privateUserId, videoId, category, start, end, duration);
|
||||
final int responseCode = connection.getResponseCode();
|
||||
|
||||
final String messageToToast;
|
||||
switch (responseCode) {
|
||||
case HTTP_STATUS_CODE_SUCCESS:
|
||||
messageToToast = str("revanced_sb_submit_succeeded");
|
||||
break;
|
||||
case 409:
|
||||
messageToToast = str("revanced_sb_submit_failed_duplicate");
|
||||
break;
|
||||
case 403:
|
||||
messageToToast = str("revanced_sb_submit_failed_forbidden", Requester.parseErrorStringAndDisconnect(connection));
|
||||
break;
|
||||
case 429:
|
||||
messageToToast = str("revanced_sb_submit_failed_rate_limit");
|
||||
break;
|
||||
case 400:
|
||||
messageToToast = str("revanced_sb_submit_failed_invalid", Requester.parseErrorStringAndDisconnect(connection));
|
||||
break;
|
||||
default:
|
||||
messageToToast = str("revanced_sb_submit_failed_unknown_error", responseCode, connection.getResponseMessage());
|
||||
break;
|
||||
}
|
||||
Utils.showToastLong(messageToToast);
|
||||
String userMessage = switch (responseCode) {
|
||||
case HTTP_STATUS_CODE_SUCCESS -> str("revanced_sb_submit_succeeded");
|
||||
case 409 -> str("revanced_sb_submit_failed_duplicate");
|
||||
case 403 -> str("revanced_sb_submit_failed_forbidden",
|
||||
Requester.parseErrorStringAndDisconnect(connection));
|
||||
case 429 -> str("revanced_sb_submit_failed_rate_limit");
|
||||
case 400 -> str("revanced_sb_submit_failed_invalid",
|
||||
Requester.parseErrorStringAndDisconnect(connection));
|
||||
default -> str("revanced_sb_submit_failed_unknown_error",
|
||||
responseCode, connection.getResponseMessage());
|
||||
};
|
||||
|
||||
// Message might be about the users account or an error too large to show in a toast.
|
||||
// Use a dialog instead.
|
||||
SponsorBlockUtils.showErrorDialog(userMessage);
|
||||
} catch (SocketTimeoutException ex) {
|
||||
// Always show, even if show connection toasts is turned off
|
||||
Logger.printDebug(() -> "Timeout", ex);
|
||||
Utils.showToastLong(str("revanced_sb_submit_failed_timeout"));
|
||||
} catch (IOException ex) {
|
||||
Logger.printDebug(() -> "IOException", ex);
|
||||
Utils.showToastLong(str("revanced_sb_submit_failed_unknown_error", 0, ex.getMessage()));
|
||||
} catch (Exception ex) {
|
||||
Logger.printException(() -> "failed to submit segments", ex);
|
||||
Logger.printException(() -> "failed to submit segments", ex); // Should never happen.
|
||||
}
|
||||
}
|
||||
|
||||
@@ -218,19 +214,22 @@ public class SBRequester {
|
||||
: getConnectionFromRoute(SBRoutes.VOTE_ON_SEGMENT_QUALITY, uuid, segmentUuid, String.valueOf(voteOption.apiVoteType));
|
||||
final int responseCode = connection.getResponseCode();
|
||||
|
||||
String userMessage;
|
||||
switch (responseCode) {
|
||||
case HTTP_STATUS_CODE_SUCCESS:
|
||||
Logger.printDebug(() -> "Vote success for segment: " + segment);
|
||||
break;
|
||||
return;
|
||||
case 403:
|
||||
Utils.showToastLong(
|
||||
str("revanced_sb_vote_failed_forbidden", Requester.parseErrorStringAndDisconnect(connection)));
|
||||
userMessage = str("revanced_sb_vote_failed_forbidden",
|
||||
Requester.parseErrorStringAndDisconnect(connection));
|
||||
break;
|
||||
default:
|
||||
Utils.showToastLong(
|
||||
str("revanced_sb_vote_failed_unknown_error", responseCode, connection.getResponseMessage()));
|
||||
userMessage = str("revanced_sb_vote_failed_unknown_error",
|
||||
responseCode, connection.getResponseMessage());
|
||||
break;
|
||||
}
|
||||
|
||||
SponsorBlockUtils.showErrorDialog(userMessage);
|
||||
} catch (SocketTimeoutException ex) {
|
||||
Utils.showToastShort(str("revanced_sb_vote_failed_timeout"));
|
||||
} catch (IOException ex) {
|
||||
|
||||
@@ -3,4 +3,4 @@ org.gradle.jvmargs = -Xms512M -Xmx2048M
|
||||
org.gradle.parallel = true
|
||||
android.useAndroidX = true
|
||||
kotlin.code.style = official
|
||||
version = 5.4.0-dev.2
|
||||
version = 5.6.0-dev.4
|
||||
|
||||
@@ -324,8 +324,12 @@ public final class app/revanced/patches/music/misc/gms/GmsCoreSupportPatchKt {
|
||||
public static final fun getGmsCoreSupportPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
||||
}
|
||||
|
||||
public final class app/revanced/patches/music/misc/spoof/SpoofVideoStreamsPatchKt {
|
||||
public static final fun getSpoofVideoStreamsPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
||||
public final class app/revanced/patches/music/misc/spoof/SpoofClientPatchKt {
|
||||
public static final fun getSpoofClientPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
||||
}
|
||||
|
||||
public final class app/revanced/patches/music/misc/spoof/UserAgentClientSpoofPatchKt {
|
||||
public static final fun getUserAgentClientSpoofPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
||||
}
|
||||
|
||||
public final class app/revanced/patches/myexpenses/misc/pro/UnlockProPatchKt {
|
||||
@@ -766,6 +770,10 @@ public final class app/revanced/patches/shared/misc/spoof/SpoofVideoStreamsPatch
|
||||
public static synthetic fun spoofVideoStreamsPatch$default (Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)Lapp/revanced/patcher/patch/BytecodePatch;
|
||||
}
|
||||
|
||||
public final class app/revanced/patches/shared/misc/spoof/UserAgentClientSpoofPatchKt {
|
||||
public static final fun userAgentClientSpoofPatch (Ljava/lang/String;)Lapp/revanced/patcher/patch/BytecodePatch;
|
||||
}
|
||||
|
||||
public final class app/revanced/patches/solidexplorer2/functionality/filesize/RemoveFileSizeLimitPatchKt {
|
||||
public static final fun getRemoveFileSizeLimitPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
||||
}
|
||||
@@ -1169,6 +1177,10 @@ public final class app/revanced/patches/youtube/layout/player/background/PlayerC
|
||||
}
|
||||
|
||||
public final class app/revanced/patches/youtube/layout/player/fullscreen/OpenVideosFullscreenKt {
|
||||
public static final fun getOpenVideosFullscreen ()Lapp/revanced/patcher/patch/BytecodePatch;
|
||||
}
|
||||
|
||||
public final class app/revanced/patches/youtube/layout/player/fullscreen/OpenVideosFullscreenPatchKt {
|
||||
public static final fun getOpenVideosFullscreenPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
||||
}
|
||||
|
||||
@@ -1202,6 +1214,10 @@ public final class app/revanced/patches/youtube/layout/shortsautoplay/ShortsAuto
|
||||
public static final fun getShortsAutoplayPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
||||
}
|
||||
|
||||
public final class app/revanced/patches/youtube/layout/shortsplayer/OpenShortsInRegularPlayerPatchKt {
|
||||
public static final fun getOpenShortsInRegularPlayerPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
||||
}
|
||||
|
||||
public final class app/revanced/patches/youtube/layout/sponsorblock/SponsorBlockPatchKt {
|
||||
public static final fun getSponsorBlockPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
||||
}
|
||||
@@ -1392,6 +1408,10 @@ public final class app/revanced/patches/youtube/shared/FingerprintsKt {
|
||||
public static final fun getRollingNumberTextViewAnimationUpdateFingerprint ()Lapp/revanced/patcher/Fingerprint;
|
||||
}
|
||||
|
||||
public final class app/revanced/patches/youtube/video/audio/ForceOriginalAudioPatchKt {
|
||||
public static final fun getForceOriginalAudioPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
||||
}
|
||||
|
||||
public final class app/revanced/patches/youtube/video/information/VideoInformationPatchKt {
|
||||
public static final fun getVideoInformationPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
||||
public static final fun userSelectedPlaybackSpeedHook (Ljava/lang/String;Ljava/lang/String;)V
|
||||
|
||||
@@ -1,22 +1,16 @@
|
||||
package app.revanced.patches.music.misc.androidauto
|
||||
|
||||
import app.revanced.patcher.extensions.InstructionExtensions.addInstructions
|
||||
import app.revanced.patcher.patch.bytecodePatch
|
||||
import app.revanced.util.returnEarly
|
||||
|
||||
@Suppress("unused")
|
||||
val bypassCertificateChecksPatch = bytecodePatch(
|
||||
name = "Bypass certificate checks",
|
||||
description = "Bypasses certificate checks which prevent YouTube Music from working on Android Auto.",
|
||||
) {
|
||||
compatibleWith("com.google.android.apps.youtube.music")
|
||||
compatibleWith("com.google.android.apps.youtube.music"("7.29.52"))
|
||||
|
||||
execute {
|
||||
checkCertificateFingerprint.method.addInstructions(
|
||||
0,
|
||||
"""
|
||||
const/4 v0, 0x1
|
||||
return v0
|
||||
""",
|
||||
)
|
||||
checkCertificateFingerprint.method.returnEarly(true)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,5 +4,6 @@ import app.revanced.patches.music.misc.extension.hooks.applicationInitHook
|
||||
import app.revanced.patches.shared.misc.extension.sharedExtensionPatch
|
||||
|
||||
val sharedExtensionPatch = sharedExtensionPatch(
|
||||
"music",
|
||||
applicationInitHook,
|
||||
)
|
||||
|
||||
@@ -4,7 +4,7 @@ import app.revanced.patcher.patch.Option
|
||||
import app.revanced.patches.music.misc.extension.sharedExtensionPatch
|
||||
import app.revanced.patches.music.misc.gms.Constants.MUSIC_PACKAGE_NAME
|
||||
import app.revanced.patches.music.misc.gms.Constants.REVANCED_MUSIC_PACKAGE_NAME
|
||||
import app.revanced.patches.music.misc.spoof.spoofVideoStreamsPatch
|
||||
import app.revanced.patches.music.misc.spoof.spoofClientPatch
|
||||
import app.revanced.patches.shared.castContextFetchFingerprint
|
||||
import app.revanced.patches.shared.misc.gms.gmsCoreSupportPatch
|
||||
import app.revanced.patches.shared.primeMethodFingerprint
|
||||
@@ -21,7 +21,7 @@ val gmsCoreSupportPatch = gmsCoreSupportPatch(
|
||||
extensionPatch = sharedExtensionPatch,
|
||||
gmsCoreSupportResourcePatchFactory = ::gmsCoreSupportResourcePatch,
|
||||
) {
|
||||
dependsOn(spoofVideoStreamsPatch)
|
||||
dependsOn(spoofClientPatch)
|
||||
|
||||
compatibleWith(MUSIC_PACKAGE_NAME)
|
||||
}
|
||||
|
||||
@@ -0,0 +1,39 @@
|
||||
package app.revanced.patches.music.misc.spoof
|
||||
|
||||
import app.revanced.patcher.fingerprint
|
||||
import com.android.tools.smali.dexlib2.AccessFlags
|
||||
import com.android.tools.smali.dexlib2.Opcode
|
||||
|
||||
internal val playerRequestConstructorFingerprint = fingerprint {
|
||||
accessFlags(AccessFlags.PUBLIC, AccessFlags.CONSTRUCTOR)
|
||||
strings("player")
|
||||
}
|
||||
|
||||
/**
|
||||
* Matches using the class found in [playerRequestConstructorFingerprint].
|
||||
*/
|
||||
internal val createPlayerRequestBodyFingerprint = fingerprint {
|
||||
parameters("L")
|
||||
returns("V")
|
||||
opcodes(
|
||||
Opcode.CHECK_CAST,
|
||||
Opcode.IGET,
|
||||
Opcode.AND_INT_LIT16,
|
||||
)
|
||||
strings("ms")
|
||||
}
|
||||
|
||||
/**
|
||||
* Used to get a reference to other clientInfo fields.
|
||||
*/
|
||||
internal val setClientInfoFieldsFingerprint = fingerprint {
|
||||
returns("L")
|
||||
strings("Google Inc.")
|
||||
}
|
||||
|
||||
/**
|
||||
* Used to get a reference to the clientInfo and clientInfo.clientVersion field.
|
||||
*/
|
||||
internal val setClientInfoClientVersionFingerprint = fingerprint {
|
||||
strings("10.29")
|
||||
}
|
||||
@@ -0,0 +1,105 @@
|
||||
package app.revanced.patches.music.misc.spoof
|
||||
|
||||
import app.revanced.patcher.extensions.InstructionExtensions.addInstruction
|
||||
import app.revanced.patcher.extensions.InstructionExtensions.addInstructions
|
||||
import app.revanced.patcher.extensions.InstructionExtensions.getInstruction
|
||||
import app.revanced.patcher.extensions.InstructionExtensions.instructions
|
||||
import app.revanced.patcher.patch.bytecodePatch
|
||||
import app.revanced.patcher.util.proxy.mutableTypes.MutableMethod.Companion.toMutable
|
||||
import app.revanced.patches.music.misc.extension.sharedExtensionPatch
|
||||
import app.revanced.util.getReference
|
||||
import com.android.tools.smali.dexlib2.AccessFlags
|
||||
import com.android.tools.smali.dexlib2.Opcode
|
||||
import com.android.tools.smali.dexlib2.builder.MutableMethodImplementation
|
||||
import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
|
||||
import com.android.tools.smali.dexlib2.iface.reference.FieldReference
|
||||
import com.android.tools.smali.dexlib2.iface.reference.TypeReference
|
||||
import com.android.tools.smali.dexlib2.immutable.ImmutableMethod
|
||||
import com.android.tools.smali.dexlib2.immutable.ImmutableMethodParameter
|
||||
|
||||
internal const val EXTENSION_CLASS_DESCRIPTOR =
|
||||
"Lapp/revanced/extension/music/spoof/SpoofClientPatch;"
|
||||
|
||||
// TODO: Replace this patch with spoofVideoStreamsPatch once possible.
|
||||
val spoofClientPatch = bytecodePatch(
|
||||
name = "Spoof client",
|
||||
description = "Spoofs the client to fix playback.",
|
||||
) {
|
||||
compatibleWith("com.google.android.apps.youtube.music")
|
||||
|
||||
dependsOn(
|
||||
sharedExtensionPatch,
|
||||
// TODO: Add settingsPatch
|
||||
userAgentClientSpoofPatch,
|
||||
)
|
||||
|
||||
execute {
|
||||
val playerRequestClass = playerRequestConstructorFingerprint.classDef
|
||||
|
||||
val createPlayerRequestBodyMatch = createPlayerRequestBodyFingerprint.match(playerRequestClass)
|
||||
|
||||
val clientInfoContainerClass = createPlayerRequestBodyMatch.method
|
||||
.getInstruction(createPlayerRequestBodyMatch.patternMatch!!.startIndex)
|
||||
.getReference<TypeReference>()!!.type
|
||||
|
||||
val clientInfoField = setClientInfoClientVersionFingerprint.method.instructions.first {
|
||||
it.opcode == Opcode.IPUT_OBJECT && it.getReference<FieldReference>()!!.definingClass == clientInfoContainerClass
|
||||
}.getReference<FieldReference>()!!
|
||||
|
||||
val setClientInfoFieldInstructions = setClientInfoFieldsFingerprint.method.instructions.filter {
|
||||
(it.opcode == Opcode.IPUT_OBJECT || it.opcode == Opcode.IPUT) &&
|
||||
it.getReference<FieldReference>()!!.definingClass == clientInfoField.type
|
||||
}.map { it.getReference<FieldReference>()!! }
|
||||
|
||||
// Offsets are known for the fields in the clientInfo object.
|
||||
val clientIdField = setClientInfoFieldInstructions[0]
|
||||
val clientModelField = setClientInfoFieldInstructions[5]
|
||||
val osVersionField = setClientInfoFieldInstructions[7]
|
||||
val clientVersionField = setClientInfoClientVersionFingerprint.method
|
||||
.getInstruction(setClientInfoClientVersionFingerprint.stringMatches!!.first().index + 1)
|
||||
.getReference<FieldReference>()
|
||||
|
||||
// Helper method to spoof the client info.
|
||||
val spoofClientInfoMethod = ImmutableMethod(
|
||||
playerRequestClass.type,
|
||||
"spoofClientInfo",
|
||||
listOf(ImmutableMethodParameter(clientInfoContainerClass, null, null)),
|
||||
"V",
|
||||
AccessFlags.PRIVATE.value or AccessFlags.STATIC.value,
|
||||
null,
|
||||
null,
|
||||
MutableMethodImplementation(3),
|
||||
).toMutable().also(playerRequestClass.methods::add).apply {
|
||||
addInstructions(
|
||||
"""
|
||||
iget-object v0, p0, $clientInfoField
|
||||
|
||||
invoke-static { }, $EXTENSION_CLASS_DESCRIPTOR->getClientId()I
|
||||
move-result v1
|
||||
iput v1, v0, $clientIdField
|
||||
|
||||
invoke-static { }, $EXTENSION_CLASS_DESCRIPTOR->getClientModel()Ljava/lang/String;
|
||||
move-result-object v1
|
||||
iput-object v1, v0, $clientModelField
|
||||
|
||||
invoke-static { }, $EXTENSION_CLASS_DESCRIPTOR->getClientVersion()Ljava/lang/String;
|
||||
move-result-object v1
|
||||
iput-object v1, v0, $clientVersionField
|
||||
|
||||
invoke-static { }, $EXTENSION_CLASS_DESCRIPTOR->getOsVersion()Ljava/lang/String;
|
||||
move-result-object v1
|
||||
iput-object v1, v0, $osVersionField
|
||||
|
||||
return-void
|
||||
""",
|
||||
)
|
||||
}
|
||||
|
||||
createPlayerRequestBodyMatch.method.apply {
|
||||
val checkCastIndex = createPlayerRequestBodyMatch.patternMatch!!.startIndex
|
||||
val clientInfoContainerRegister = getInstruction<OneRegisterInstruction>(checkCastIndex).registerA
|
||||
|
||||
addInstruction(checkCastIndex + 1, "invoke-static {v$clientInfoContainerRegister}, $spoofClientInfoMethod")
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,7 +0,0 @@
|
||||
package app.revanced.patches.music.misc.spoof
|
||||
|
||||
import app.revanced.patches.shared.misc.spoof.spoofVideoStreamsPatch
|
||||
|
||||
val spoofVideoStreamsPatch = spoofVideoStreamsPatch({
|
||||
compatibleWith("com.google.android.apps.youtube.music")
|
||||
})
|
||||
@@ -0,0 +1,5 @@
|
||||
package app.revanced.patches.music.misc.spoof
|
||||
|
||||
import app.revanced.patches.shared.misc.spoof.userAgentClientSpoofPatch
|
||||
|
||||
val userAgentClientSpoofPatch = userAgentClientSpoofPatch("com.google.android.apps.youtube.music")
|
||||
@@ -2,7 +2,7 @@ package app.revanced.patches.shared.misc.checks
|
||||
|
||||
import android.os.Build.*
|
||||
import app.revanced.patcher.Fingerprint
|
||||
import app.revanced.patcher.extensions.InstructionExtensions.addInstructions
|
||||
import app.revanced.patcher.extensions.InstructionExtensions.addInstruction
|
||||
import app.revanced.patcher.patch.Patch
|
||||
import app.revanced.patcher.patch.bytecodePatch
|
||||
import app.revanced.patcher.util.proxy.mutableTypes.encodedValue.MutableEncodedValue
|
||||
@@ -82,7 +82,7 @@ fun checkEnvironmentPatch(
|
||||
}
|
||||
}
|
||||
|
||||
fun invokeCheck() = mainActivityOnCreateFingerprint.method.addInstructions(
|
||||
fun invokeCheck() = mainActivityOnCreateFingerprint.method.addInstruction(
|
||||
0,
|
||||
"invoke-static/range { p0 .. p0 },$EXTENSION_CLASS_DESCRIPTOR->check(Landroid/app/Activity;)V",
|
||||
)
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package app.revanced.patches.shared.misc.spoof
|
||||
|
||||
import app.revanced.patcher.fingerprint
|
||||
import app.revanced.util.literal
|
||||
import com.android.tools.smali.dexlib2.AccessFlags
|
||||
import com.android.tools.smali.dexlib2.Opcode
|
||||
|
||||
@@ -110,3 +111,13 @@ internal val buildMediaDataSourceFingerprint = fingerprint {
|
||||
"Ljava/lang/Object;",
|
||||
)
|
||||
}
|
||||
|
||||
internal const val HLS_CURRENT_TIME_FEATURE_FLAG = 45355374L
|
||||
|
||||
internal val hlsCurrentTimeFingerprint = fingerprint {
|
||||
accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL)
|
||||
parameters("Z", "L")
|
||||
literal {
|
||||
HLS_CURRENT_TIME_FEATURE_FLAG
|
||||
}
|
||||
}
|
||||
|
||||
@@ -12,6 +12,7 @@ import app.revanced.patcher.util.proxy.mutableTypes.MutableMethod.Companion.toMu
|
||||
import app.revanced.patches.all.misc.resources.addResourcesPatch
|
||||
import app.revanced.util.getReference
|
||||
import app.revanced.util.indexOfFirstInstructionOrThrow
|
||||
import app.revanced.util.insertFeatureFlagBooleanOverride
|
||||
import com.android.tools.smali.dexlib2.AccessFlags
|
||||
import com.android.tools.smali.dexlib2.Opcode
|
||||
import com.android.tools.smali.dexlib2.builder.MutableMethodImplementation
|
||||
@@ -23,7 +24,7 @@ import com.android.tools.smali.dexlib2.iface.reference.MethodReference
|
||||
import com.android.tools.smali.dexlib2.immutable.ImmutableMethod
|
||||
import com.android.tools.smali.dexlib2.immutable.ImmutableMethodParameter
|
||||
|
||||
private const val EXTENSION_CLASS_DESCRIPTOR =
|
||||
internal const val EXTENSION_CLASS_DESCRIPTOR =
|
||||
"Lapp/revanced/extension/shared/spoof/SpoofVideoStreamsPatch;"
|
||||
|
||||
fun spoofVideoStreamsPatch(
|
||||
@@ -201,6 +202,15 @@ fun spoofVideoStreamsPatch(
|
||||
}
|
||||
// endregion
|
||||
|
||||
// region Fix iOS livestream current time.
|
||||
|
||||
hlsCurrentTimeFingerprint.method.insertFeatureFlagBooleanOverride(
|
||||
HLS_CURRENT_TIME_FEATURE_FLAG,
|
||||
"$EXTENSION_CLASS_DESCRIPTOR->fixHLSCurrentTime(Z)Z"
|
||||
)
|
||||
|
||||
// endregion
|
||||
|
||||
executeBlock()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,81 @@
|
||||
package app.revanced.patches.shared.misc.spoof
|
||||
|
||||
import app.revanced.patcher.extensions.InstructionExtensions.getInstruction
|
||||
import app.revanced.patcher.extensions.InstructionExtensions.replaceInstruction
|
||||
import app.revanced.patches.all.misc.transformation.IMethodCall
|
||||
import app.revanced.patches.all.misc.transformation.filterMapInstruction35c
|
||||
import app.revanced.patches.all.misc.transformation.transformInstructionsPatch
|
||||
import app.revanced.util.getReference
|
||||
import app.revanced.util.indexOfFirstInstruction
|
||||
import com.android.tools.smali.dexlib2.Opcode
|
||||
import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
|
||||
import com.android.tools.smali.dexlib2.iface.reference.MethodReference
|
||||
import com.android.tools.smali.dexlib2.iface.reference.StringReference
|
||||
|
||||
private const val USER_AGENT_STRING_BUILDER_APPEND_METHOD_REFERENCE =
|
||||
"Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;"
|
||||
|
||||
fun userAgentClientSpoofPatch(originalPackageName: String) = transformInstructionsPatch(
|
||||
filterMap = { classDef, _, instruction, instructionIndex ->
|
||||
filterMapInstruction35c<MethodCall>(
|
||||
"Lapp/revanced/extension",
|
||||
classDef,
|
||||
instruction,
|
||||
instructionIndex,
|
||||
)
|
||||
},
|
||||
transform = transform@{ mutableMethod, entry ->
|
||||
val (_, _, instructionIndex) = entry
|
||||
|
||||
// Replace the result of context.getPackageName(), if it is used in a user agent string.
|
||||
mutableMethod.apply {
|
||||
// After context.getPackageName() the result is moved to a register.
|
||||
val targetRegister = (
|
||||
getInstruction(instructionIndex + 1)
|
||||
as? OneRegisterInstruction ?: return@transform
|
||||
).registerA
|
||||
|
||||
// IndexOutOfBoundsException is technically possible here,
|
||||
// but no such occurrences are present in the app.
|
||||
val referee = getInstruction(instructionIndex + 2).getReference<MethodReference>()?.toString()
|
||||
|
||||
// Only replace string builder usage.
|
||||
if (referee != USER_AGENT_STRING_BUILDER_APPEND_METHOD_REFERENCE) {
|
||||
return@transform
|
||||
}
|
||||
|
||||
// Do not change the package name in methods that use resources, or for methods that use GmsCore.
|
||||
// Changing these package names will result in playback limitations,
|
||||
// particularly Android VR background audio only playback.
|
||||
val resourceOrGmsStringInstructionIndex = indexOfFirstInstruction {
|
||||
val reference = getReference<StringReference>()
|
||||
opcode == Opcode.CONST_STRING &&
|
||||
(reference?.string == "android.resource://" || reference?.string == "gcore_")
|
||||
}
|
||||
if (resourceOrGmsStringInstructionIndex >= 0) {
|
||||
return@transform
|
||||
}
|
||||
|
||||
// Overwrite the result of context.getPackageName() with the original package name.
|
||||
replaceInstruction(
|
||||
instructionIndex + 1,
|
||||
"const-string v$targetRegister, \"$originalPackageName\"",
|
||||
)
|
||||
}
|
||||
},
|
||||
)
|
||||
|
||||
@Suppress("unused")
|
||||
private enum class MethodCall(
|
||||
override val definedClassName: String,
|
||||
override val methodName: String,
|
||||
override val methodParams: Array<String>,
|
||||
override val returnType: String,
|
||||
) : IMethodCall {
|
||||
GetPackageName(
|
||||
"Landroid/content/Context;",
|
||||
"getPackageName",
|
||||
emptyArray(),
|
||||
"Ljava/lang/String;",
|
||||
),
|
||||
}
|
||||
@@ -21,7 +21,7 @@ val audioAdsPatch = bytecodePatch(
|
||||
addResourcesPatch,
|
||||
)
|
||||
|
||||
compatibleWith("tv.twitch.android.app"("15.4.1", "16.1.0", "16.9.1"))
|
||||
compatibleWith("tv.twitch.android.app")
|
||||
|
||||
execute {
|
||||
addResources("twitch", "ad.audio.audioAdsPatch")
|
||||
|
||||
@@ -19,7 +19,7 @@ val embeddedAdsPatch = bytecodePatch(
|
||||
settingsPatch,
|
||||
)
|
||||
|
||||
compatibleWith("tv.twitch.android.app"("15.4.1", "16.1.0", "16.9.1"))
|
||||
compatibleWith("tv.twitch.android.app")
|
||||
|
||||
execute {
|
||||
addResources("twitch", "ad.embedded.embeddedAdsPatch")
|
||||
|
||||
@@ -4,6 +4,6 @@ import app.revanced.patcher.fingerprint
|
||||
|
||||
internal val createsUsherClientFingerprint = fingerprint {
|
||||
custom { method, _ ->
|
||||
method.definingClass.endsWith("Ltv/twitch/android/network/OkHttpClientFactory;") && method.name == "buildOkHttpClient"
|
||||
method.name == "buildOkHttpClient" && method.definingClass.endsWith("Ltv/twitch/android/network/OkHttpClientFactory;")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -141,24 +141,21 @@ val videoAdsPatch = bytecodePatch(
|
||||
)
|
||||
|
||||
// Spoof showAds JSON field.
|
||||
contentConfigShowAdsFingerprint.method.addInstructions(
|
||||
// Late versions of the app don't have the method anymore.
|
||||
contentConfigShowAdsFingerprint.methodOrNull?.addInstructions(
|
||||
0,
|
||||
"""
|
||||
${createConditionInstructions("v0")}
|
||||
const/4 v0, 0
|
||||
:$skipLabelName
|
||||
return v0
|
||||
""",
|
||||
${createConditionInstructions("v0")}
|
||||
const/4 v0, 0
|
||||
:$skipLabelName
|
||||
return v0
|
||||
""",
|
||||
)
|
||||
}
|
||||
},
|
||||
)
|
||||
|
||||
compatibleWith(
|
||||
"tv.twitch.android.app"(
|
||||
"15.4.1",
|
||||
"16.1.0",
|
||||
"16.9.1",
|
||||
),
|
||||
"tv.twitch.android.app",
|
||||
)
|
||||
}
|
||||
|
||||
@@ -22,7 +22,7 @@ val showDeletedMessagesPatch = bytecodePatch(
|
||||
addResourcesPatch,
|
||||
)
|
||||
|
||||
compatibleWith("tv.twitch.android.app"("15.4.1", "16.1.0", "16.9.1"))
|
||||
compatibleWith("tv.twitch.android.app")
|
||||
|
||||
fun createSpoilerConditionInstructions(register: String = "v0") = """
|
||||
invoke-static {}, Lapp/revanced/extension/twitch/patches/ShowDeletedMessagesPatch;->shouldUseSpoiler()Z
|
||||
|
||||
@@ -20,7 +20,7 @@ val autoClaimChannelPointsPatch = bytecodePatch(
|
||||
addResourcesPatch,
|
||||
)
|
||||
|
||||
compatibleWith("tv.twitch.android.app"("15.4.1", "16.1.0", "16.9.1"))
|
||||
compatibleWith("tv.twitch.android.app")
|
||||
|
||||
execute {
|
||||
addResources("twitch", "chat.autoclaim.autoClaimChannelPointsPatch")
|
||||
|
||||
@@ -48,13 +48,7 @@ val settingsPatch = bytecodePatch(
|
||||
settingsPatch(preferences = preferences),
|
||||
)
|
||||
|
||||
compatibleWith(
|
||||
"tv.twitch.android.app"(
|
||||
"15.4.1",
|
||||
"16.1.0",
|
||||
"16.9.1",
|
||||
),
|
||||
)
|
||||
compatibleWith("tv.twitch.android.app")
|
||||
|
||||
execute {
|
||||
addResources("twitch", "misc.settings.settingsPatch")
|
||||
|
||||
@@ -11,8 +11,8 @@ import app.revanced.patches.shared.misc.mapping.resourceMappingPatch
|
||||
import app.revanced.patches.shared.misc.mapping.resourceMappings
|
||||
import app.revanced.patches.twitter.misc.extension.sharedExtensionPatch
|
||||
import app.revanced.util.indexOfFirstLiteralInstructionOrThrow
|
||||
import com.android.tools.smali.dexlib2.iface.instruction.FiveRegisterInstruction
|
||||
import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
|
||||
import com.android.tools.smali.dexlib2.iface.instruction.formats.Instruction35c
|
||||
|
||||
internal var tweetShareLinkTemplateId = -1L
|
||||
private set
|
||||
@@ -25,15 +25,7 @@ internal val changeLinkSharingDomainResourcePatch = resourcePatch {
|
||||
}
|
||||
}
|
||||
|
||||
// This method is used to build the link that is shared when the "Share via..." button is pressed.
|
||||
private const val FORMAT_METHOD_RESOURCE_REFERENCE =
|
||||
"Lapp/revanced/extension/twitter/patches/links/ChangeLinkSharingDomainPatch;->" +
|
||||
"formatResourceLink([Ljava/lang/Object;)Ljava/lang/String;"
|
||||
|
||||
// This method is used to build the link that is shared when the "Copy link" button is pressed.
|
||||
private const val FORMAT_METHOD_REFERENCE =
|
||||
"Lapp/revanced/extension/twitter/patches/links/ChangeLinkSharingDomainPatch;->" +
|
||||
"formatLink(JLjava/lang/String;)Ljava/lang/String;"
|
||||
private const val EXTENSION_CLASS_DESCRIPTOR = "Lapp/revanced/twitter/patches/links/ChangeLinkSharingDomainPatch;"
|
||||
|
||||
@Suppress("unused")
|
||||
val changeLinkSharingDomainPatch = bytecodePatch(
|
||||
@@ -71,7 +63,7 @@ val changeLinkSharingDomainPatch = bytecodePatch(
|
||||
addInstructions(
|
||||
0,
|
||||
"""
|
||||
invoke-static { p0, p1, p2 }, $FORMAT_METHOD_REFERENCE
|
||||
invoke-static { p0, p1, p2 }, $EXTENSION_CLASS_DESCRIPTOR->formatLink(JLjava/lang/String;)Ljava/lang/String;
|
||||
move-result-object p0
|
||||
return-object p0
|
||||
""",
|
||||
@@ -84,12 +76,12 @@ val changeLinkSharingDomainPatch = bytecodePatch(
|
||||
|
||||
// Format the link with the new domain name register (1 instruction below the const).
|
||||
val formatLinkCallIndex = templateIdConstIndex + 1
|
||||
val formatLinkCall = getInstruction<Instruction35c>(formatLinkCallIndex)
|
||||
val register = getInstruction<FiveRegisterInstruction>(formatLinkCallIndex).registerE
|
||||
|
||||
// Replace the original method call with the new method call.
|
||||
replaceInstruction(
|
||||
formatLinkCallIndex,
|
||||
"invoke-static { v${formatLinkCall.registerE} }, $FORMAT_METHOD_RESOURCE_REFERENCE",
|
||||
"invoke-static { v$register }, $EXTENSION_CLASS_DESCRIPTOR->formatResourceLink([Ljava/lang/Object;)Ljava/lang/String;",
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,6 +3,7 @@ package app.revanced.patches.youtube.layout.buttons.navigation
|
||||
import com.android.tools.smali.dexlib2.Opcode
|
||||
import com.android.tools.smali.dexlib2.AccessFlags
|
||||
import app.revanced.patcher.fingerprint
|
||||
import app.revanced.util.literal
|
||||
|
||||
internal const val ANDROID_AUTOMOTIVE_STRING = "Android Automotive"
|
||||
|
||||
@@ -22,4 +23,31 @@ internal val createPivotBarFingerprint = fingerprint {
|
||||
Opcode.INVOKE_VIRTUAL,
|
||||
Opcode.RETURN_VOID,
|
||||
)
|
||||
}
|
||||
|
||||
internal const val TRANSLUCENT_NAVIGATION_STATUS_BAR_FEATURE_FLAG = 45400535L
|
||||
|
||||
internal val translucentNavigationStatusBarFeatureFlagFingerprint = fingerprint {
|
||||
accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL)
|
||||
returns("Z")
|
||||
literal { TRANSLUCENT_NAVIGATION_STATUS_BAR_FEATURE_FLAG }
|
||||
}
|
||||
|
||||
internal const val TRANSLUCENT_NAVIGATION_BUTTONS_FEATURE_FLAG = 45630927L
|
||||
|
||||
internal val translucentNavigationButtonsFeatureFlagFingerprint = fingerprint {
|
||||
accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL)
|
||||
returns("V")
|
||||
literal { TRANSLUCENT_NAVIGATION_BUTTONS_FEATURE_FLAG }
|
||||
}
|
||||
|
||||
/**
|
||||
* The device on screen back/home/recent buttons.
|
||||
*/
|
||||
internal const val TRANSLUCENT_NAVIGATION_BUTTONS_SYSTEM_FEATURE_FLAG = 45632194L
|
||||
|
||||
internal val translucentNavigationButtonsSystemFeatureFlagFingerprint = fingerprint {
|
||||
accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL)
|
||||
returns("Z")
|
||||
literal { TRANSLUCENT_NAVIGATION_BUTTONS_SYSTEM_FEATURE_FLAG }
|
||||
}
|
||||
@@ -12,10 +12,13 @@ import app.revanced.patches.shared.misc.settings.preference.SwitchPreference
|
||||
import app.revanced.patches.youtube.misc.extension.sharedExtensionPatch
|
||||
import app.revanced.patches.youtube.misc.navigation.hookNavigationButtonCreated
|
||||
import app.revanced.patches.youtube.misc.navigation.navigationBarHookPatch
|
||||
import app.revanced.patches.youtube.misc.playservice.is_19_25_or_greater
|
||||
import app.revanced.patches.youtube.misc.playservice.versionCheckPatch
|
||||
import app.revanced.patches.youtube.misc.settings.PreferenceScreen
|
||||
import app.revanced.patches.youtube.misc.settings.settingsPatch
|
||||
import app.revanced.util.getReference
|
||||
import app.revanced.util.indexOfFirstInstructionOrThrow
|
||||
import app.revanced.util.insertFeatureFlagBooleanOverride
|
||||
import com.android.tools.smali.dexlib2.iface.instruction.FiveRegisterInstruction
|
||||
import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
|
||||
import com.android.tools.smali.dexlib2.iface.reference.MethodReference
|
||||
@@ -32,6 +35,7 @@ val navigationButtonsPatch = bytecodePatch(
|
||||
settingsPatch,
|
||||
addResourcesPatch,
|
||||
navigationBarHookPatch,
|
||||
versionCheckPatch
|
||||
)
|
||||
|
||||
compatibleWith(
|
||||
@@ -50,19 +54,27 @@ val navigationButtonsPatch = bytecodePatch(
|
||||
execute {
|
||||
addResources("youtube", "layout.buttons.navigation.navigationButtonsPatch")
|
||||
|
||||
val preferences = mutableSetOf(
|
||||
SwitchPreference("revanced_hide_home_button"),
|
||||
SwitchPreference("revanced_hide_shorts_button"),
|
||||
SwitchPreference("revanced_hide_create_button"),
|
||||
SwitchPreference("revanced_hide_subscriptions_button"),
|
||||
SwitchPreference("revanced_switch_create_with_notifications_button"),
|
||||
SwitchPreference("revanced_hide_navigation_button_labels"),
|
||||
)
|
||||
|
||||
if (is_19_25_or_greater) {
|
||||
preferences += SwitchPreference("revanced_disable_translucent_status_bar")
|
||||
preferences += SwitchPreference("revanced_disable_translucent_navigation_bar_light")
|
||||
preferences += SwitchPreference("revanced_disable_translucent_navigation_bar_dark")
|
||||
}
|
||||
|
||||
PreferenceScreen.GENERAL_LAYOUT.addPreferences(
|
||||
PreferenceScreenPreference(
|
||||
key = "revanced_navigation_buttons_screen",
|
||||
sorting = Sorting.UNSORTED,
|
||||
preferences = setOf(
|
||||
SwitchPreference("revanced_hide_home_button"),
|
||||
SwitchPreference("revanced_hide_shorts_button"),
|
||||
SwitchPreference("revanced_hide_create_button"),
|
||||
SwitchPreference("revanced_hide_subscriptions_button"),
|
||||
SwitchPreference("revanced_switch_create_with_notifications_button"),
|
||||
SwitchPreference("revanced_hide_navigation_button_labels"),
|
||||
),
|
||||
),
|
||||
preferences = preferences
|
||||
)
|
||||
)
|
||||
|
||||
// Switch create with notifications button.
|
||||
@@ -101,5 +113,24 @@ val navigationButtonsPatch = bytecodePatch(
|
||||
|
||||
// Hook navigation button created, in order to hide them.
|
||||
hookNavigationButtonCreated(EXTENSION_CLASS_DESCRIPTOR)
|
||||
|
||||
|
||||
// Force on/off translucent effect on status bar and navigation buttons.
|
||||
if (is_19_25_or_greater) {
|
||||
translucentNavigationStatusBarFeatureFlagFingerprint.method.insertFeatureFlagBooleanOverride(
|
||||
TRANSLUCENT_NAVIGATION_STATUS_BAR_FEATURE_FLAG,
|
||||
"$EXTENSION_CLASS_DESCRIPTOR->useTranslucentNavigationStatusBar(Z)Z",
|
||||
)
|
||||
|
||||
translucentNavigationButtonsFeatureFlagFingerprint.method.insertFeatureFlagBooleanOverride(
|
||||
TRANSLUCENT_NAVIGATION_BUTTONS_FEATURE_FLAG,
|
||||
"$EXTENSION_CLASS_DESCRIPTOR->useTranslucentNavigationButtons(Z)Z",
|
||||
)
|
||||
|
||||
translucentNavigationButtonsSystemFeatureFlagFingerprint.method.insertFeatureFlagBooleanOverride(
|
||||
TRANSLUCENT_NAVIGATION_BUTTONS_SYSTEM_FEATURE_FLAG,
|
||||
"$EXTENSION_CLASS_DESCRIPTOR->useTranslucentNavigationButtons(Z)Z",
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -154,6 +154,7 @@ val hideLayoutComponentsPatch = bytecodePatch(
|
||||
PreferenceScreenPreference(
|
||||
"revanced_comments_screen",
|
||||
preferences = setOf(
|
||||
SwitchPreference("revanced_hide_comments_chat_summary"),
|
||||
SwitchPreference("revanced_hide_comments_by_members_header"),
|
||||
SwitchPreference("revanced_hide_comments_section"),
|
||||
SwitchPreference("revanced_hide_comments_create_a_short_button"),
|
||||
@@ -221,7 +222,6 @@ val hideLayoutComponentsPatch = bytecodePatch(
|
||||
SwitchPreference("revanced_hide_notify_me_button"),
|
||||
SwitchPreference("revanced_hide_playables"),
|
||||
SwitchPreference("revanced_hide_search_result_recommendations"),
|
||||
SwitchPreference("revanced_hide_search_result_shelf_header"),
|
||||
SwitchPreference("revanced_hide_show_more_button"),
|
||||
SwitchPreference("revanced_hide_doodles"),
|
||||
)
|
||||
|
||||
@@ -14,3 +14,15 @@ internal val openVideosFullscreenPortraitFingerprint = fingerprint {
|
||||
OPEN_VIDEOS_FULLSCREEN_PORTRAIT_FEATURE_FLAG
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Used to enable opening regular videos fullscreen.
|
||||
*/
|
||||
internal val openVideosFullscreenHookPatchExtensionFingerprint = fingerprint {
|
||||
accessFlags(AccessFlags.PRIVATE, AccessFlags.STATIC)
|
||||
returns("Z")
|
||||
parameters()
|
||||
custom { methodDef, classDef ->
|
||||
methodDef.name == "isFullScreenPatchIncluded" && classDef.type == EXTENSION_CLASS_DESCRIPTOR
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,46 +1,9 @@
|
||||
package app.revanced.patches.youtube.layout.player.fullscreen
|
||||
|
||||
import app.revanced.patcher.patch.bytecodePatch
|
||||
import app.revanced.patches.all.misc.resources.addResources
|
||||
import app.revanced.patches.all.misc.resources.addResourcesPatch
|
||||
import app.revanced.patches.shared.misc.settings.preference.SwitchPreference
|
||||
import app.revanced.patches.youtube.misc.extension.sharedExtensionPatch
|
||||
import app.revanced.patches.youtube.misc.settings.PreferenceScreen
|
||||
import app.revanced.patches.youtube.misc.settings.settingsPatch
|
||||
import app.revanced.util.insertFeatureFlagBooleanOverride
|
||||
|
||||
private const val EXTENSION_CLASS_DESCRIPTOR =
|
||||
"Lapp/revanced/extension/youtube/patches/OpenVideosFullscreen;"
|
||||
|
||||
@Suppress("unused")
|
||||
val openVideosFullscreenPatch = bytecodePatch(
|
||||
name = "Open videos fullscreen",
|
||||
description = "Adds an option to open videos in full screen portrait mode.",
|
||||
) {
|
||||
dependsOn(
|
||||
sharedExtensionPatch,
|
||||
settingsPatch,
|
||||
addResourcesPatch,
|
||||
)
|
||||
|
||||
compatibleWith(
|
||||
"com.google.android.youtube"(
|
||||
"19.46.42",
|
||||
)
|
||||
)
|
||||
|
||||
execute {
|
||||
openVideosFullscreenPortraitFingerprint.method.insertFeatureFlagBooleanOverride(
|
||||
OPEN_VIDEOS_FULLSCREEN_PORTRAIT_FEATURE_FLAG,
|
||||
"$EXTENSION_CLASS_DESCRIPTOR->openVideoFullscreenPortrait(Z)Z"
|
||||
)
|
||||
|
||||
// Add resources and setting last, in case the user force patches an old incompatible version.
|
||||
|
||||
addResources("youtube", "layout.player.fullscreen.openVideosFullscreen")
|
||||
|
||||
PreferenceScreen.PLAYER.addPreferences(
|
||||
SwitchPreference("revanced_open_videos_fullscreen_portrait")
|
||||
)
|
||||
}
|
||||
}
|
||||
@Deprecated("Renamed to openVideosFullscreenPatch", ReplaceWith("openVideosFullscreenPatch"))
|
||||
val openVideosFullscreen = bytecodePatch{
|
||||
dependsOn(openVideosFullscreenPatch)
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
package app.revanced.patches.youtube.layout.player.fullscreen
|
||||
|
||||
import app.revanced.patcher.patch.bytecodePatch
|
||||
import app.revanced.patches.youtube.layout.shortsplayer.openShortsInRegularPlayerPatch
|
||||
import app.revanced.patches.youtube.misc.extension.sharedExtensionPatch
|
||||
import app.revanced.patches.youtube.misc.playservice.is_19_46_or_greater
|
||||
import app.revanced.patches.youtube.misc.playservice.versionCheckPatch
|
||||
import app.revanced.util.insertFeatureFlagBooleanOverride
|
||||
|
||||
internal const val EXTENSION_CLASS_DESCRIPTOR =
|
||||
"Lapp/revanced/extension/youtube/patches/OpenVideosFullscreenHookPatch;"
|
||||
|
||||
/**
|
||||
* Used by both [openVideosFullscreenPatch] and [openShortsInRegularPlayerPatch].
|
||||
*/
|
||||
internal val openVideosFullscreenHookPatch = bytecodePatch {
|
||||
dependsOn(
|
||||
sharedExtensionPatch,
|
||||
versionCheckPatch
|
||||
)
|
||||
|
||||
execute {
|
||||
if (!is_19_46_or_greater) {
|
||||
return@execute
|
||||
}
|
||||
|
||||
openVideosFullscreenPortraitFingerprint.method.insertFeatureFlagBooleanOverride(
|
||||
OPEN_VIDEOS_FULLSCREEN_PORTRAIT_FEATURE_FLAG,
|
||||
"$EXTENSION_CLASS_DESCRIPTOR->openVideoFullscreenPortrait(Z)Z"
|
||||
)
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,46 @@
|
||||
package app.revanced.patches.youtube.layout.player.fullscreen
|
||||
|
||||
import app.revanced.patcher.patch.PatchException
|
||||
import app.revanced.patcher.patch.bytecodePatch
|
||||
import app.revanced.patches.all.misc.resources.addResources
|
||||
import app.revanced.patches.all.misc.resources.addResourcesPatch
|
||||
import app.revanced.patches.shared.misc.settings.preference.SwitchPreference
|
||||
import app.revanced.patches.youtube.misc.playservice.is_19_46_or_greater
|
||||
import app.revanced.patches.youtube.misc.playservice.versionCheckPatch
|
||||
import app.revanced.patches.youtube.misc.settings.PreferenceScreen
|
||||
import app.revanced.patches.youtube.misc.settings.settingsPatch
|
||||
import app.revanced.util.returnEarly
|
||||
|
||||
@Suppress("unused")
|
||||
val openVideosFullscreenPatch = bytecodePatch(
|
||||
name = "Open videos fullscreen",
|
||||
description = "Adds an option to open videos in full screen portrait mode.",
|
||||
) {
|
||||
dependsOn(
|
||||
openVideosFullscreenHookPatch,
|
||||
settingsPatch,
|
||||
addResourcesPatch,
|
||||
versionCheckPatch
|
||||
)
|
||||
|
||||
compatibleWith(
|
||||
"com.google.android.youtube"(
|
||||
"19.46.42",
|
||||
)
|
||||
)
|
||||
|
||||
execute {
|
||||
if (!is_19_46_or_greater) {
|
||||
throw PatchException("'Open videos fullscreen' requires 19.46.42 or greater")
|
||||
}
|
||||
|
||||
addResources("youtube", "layout.player.fullscreen.openVideosFullscreen")
|
||||
|
||||
PreferenceScreen.PLAYER.addPreferences(
|
||||
SwitchPreference("revanced_open_videos_fullscreen_portrait")
|
||||
)
|
||||
|
||||
// Enable the logic for the user Setting to open regular videos fullscreen.
|
||||
openVideosFullscreenHookPatchExtensionFingerprint.method.returnEarly(true)
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,6 @@
|
||||
package app.revanced.patches.youtube.layout.shortsautoplay
|
||||
|
||||
import app.revanced.patcher.extensions.InstructionExtensions.addInstruction
|
||||
import app.revanced.patcher.extensions.InstructionExtensions.addInstructions
|
||||
import app.revanced.patcher.extensions.InstructionExtensions.getInstruction
|
||||
import app.revanced.patcher.patch.bytecodePatch
|
||||
@@ -56,7 +57,7 @@ val shortsAutoplayPatch = bytecodePatch(
|
||||
}
|
||||
|
||||
// Main activity is used to check if app is in pip mode.
|
||||
mainActivityOnCreateFingerprint.method.addInstructions(
|
||||
mainActivityOnCreateFingerprint.method.addInstruction(
|
||||
1,
|
||||
"invoke-static/range { p0 .. p0 }, $EXTENSION_CLASS_DESCRIPTOR->" +
|
||||
"setMainActivity(Landroid/app/Activity;)V",
|
||||
|
||||
@@ -0,0 +1,56 @@
|
||||
package app.revanced.patches.youtube.layout.shortsplayer
|
||||
|
||||
import app.revanced.patcher.fingerprint
|
||||
import app.revanced.util.literal
|
||||
import com.android.tools.smali.dexlib2.AccessFlags
|
||||
|
||||
/**
|
||||
* Purpose of this method is not clear, and it's only used to identify
|
||||
* the obfuscated name of the videoId() method in PlaybackStartDescriptor.
|
||||
*/
|
||||
internal val playbackStartFeatureFlagFingerprint = fingerprint {
|
||||
returns("Z")
|
||||
parameters(
|
||||
"Lcom/google/android/libraries/youtube/player/model/PlaybackStartDescriptor;",
|
||||
)
|
||||
literal {
|
||||
45380134L
|
||||
}
|
||||
}
|
||||
|
||||
// Pre 19.25
|
||||
internal val shortsPlaybackIntentLegacyFingerprint = fingerprint {
|
||||
accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL)
|
||||
returns("V")
|
||||
parameters(
|
||||
"L",
|
||||
"Ljava/util/Map;",
|
||||
"J",
|
||||
"Ljava/lang/String;",
|
||||
"Z",
|
||||
"Ljava/util/Map;"
|
||||
)
|
||||
strings(
|
||||
// None of these strings are unique.
|
||||
"com.google.android.apps.youtube.app.endpoint.flags",
|
||||
"ReelWatchFragmentArgs",
|
||||
"reels_fragment_descriptor"
|
||||
)
|
||||
}
|
||||
|
||||
internal val shortsPlaybackIntentFingerprint = fingerprint {
|
||||
accessFlags(AccessFlags.PROTECTED, AccessFlags.FINAL)
|
||||
returns("V")
|
||||
parameters(
|
||||
"Lcom/google/android/libraries/youtube/player/model/PlaybackStartDescriptor;",
|
||||
"Ljava/util/Map;",
|
||||
"J",
|
||||
"Ljava/lang/String;"
|
||||
)
|
||||
strings(
|
||||
// None of these strings are unique.
|
||||
"com.google.android.apps.youtube.app.endpoint.flags",
|
||||
"ReelWatchFragmentArgs",
|
||||
"reels_fragment_descriptor"
|
||||
)
|
||||
}
|
||||
@@ -0,0 +1,131 @@
|
||||
package app.revanced.patches.youtube.layout.shortsplayer
|
||||
|
||||
import app.revanced.patcher.extensions.InstructionExtensions.addInstruction
|
||||
import app.revanced.patcher.extensions.InstructionExtensions.addInstructionsWithLabels
|
||||
import app.revanced.patcher.extensions.InstructionExtensions.getInstruction
|
||||
import app.revanced.patcher.patch.bytecodePatch
|
||||
import app.revanced.patches.all.misc.resources.addResources
|
||||
import app.revanced.patches.all.misc.resources.addResourcesPatch
|
||||
import app.revanced.patches.shared.misc.settings.preference.ListPreference
|
||||
import app.revanced.patches.youtube.layout.player.fullscreen.openVideosFullscreenHookPatch
|
||||
import app.revanced.patches.youtube.misc.extension.sharedExtensionPatch
|
||||
import app.revanced.patches.youtube.misc.navigation.navigationBarHookPatch
|
||||
import app.revanced.patches.youtube.misc.playservice.is_19_25_or_greater
|
||||
import app.revanced.patches.youtube.misc.playservice.is_19_46_or_greater
|
||||
import app.revanced.patches.youtube.misc.playservice.versionCheckPatch
|
||||
import app.revanced.patches.youtube.misc.settings.PreferenceScreen
|
||||
import app.revanced.patches.youtube.misc.settings.settingsPatch
|
||||
import app.revanced.patches.youtube.shared.mainActivityOnCreateFingerprint
|
||||
import app.revanced.util.getReference
|
||||
import app.revanced.util.indexOfFirstInstructionOrThrow
|
||||
import com.android.tools.smali.dexlib2.iface.instruction.FiveRegisterInstruction
|
||||
import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
|
||||
import com.android.tools.smali.dexlib2.iface.reference.MethodReference
|
||||
|
||||
private const val EXTENSION_CLASS_DESCRIPTOR =
|
||||
"Lapp/revanced/extension/youtube/patches/OpenShortsInRegularPlayerPatch;"
|
||||
|
||||
@Suppress("unused")
|
||||
val openShortsInRegularPlayerPatch = bytecodePatch(
|
||||
name = "Open Shorts in regular player",
|
||||
description = "Adds options to open Shorts in the regular video player.",
|
||||
) {
|
||||
dependsOn(
|
||||
sharedExtensionPatch,
|
||||
settingsPatch,
|
||||
addResourcesPatch,
|
||||
openVideosFullscreenHookPatch,
|
||||
navigationBarHookPatch,
|
||||
versionCheckPatch
|
||||
)
|
||||
|
||||
compatibleWith(
|
||||
"com.google.android.youtube"(
|
||||
"18.38.44",
|
||||
"18.49.37",
|
||||
"19.16.39",
|
||||
"19.25.37",
|
||||
"19.34.42",
|
||||
"19.43.41",
|
||||
"19.45.38",
|
||||
"19.46.42",
|
||||
),
|
||||
)
|
||||
|
||||
execute {
|
||||
addResources("youtube", "layout.shortsplayer.shortsPlayerTypePatch")
|
||||
|
||||
PreferenceScreen.SHORTS.addPreferences(
|
||||
if (is_19_46_or_greater) {
|
||||
ListPreference(
|
||||
key = "revanced_shorts_player_type",
|
||||
summaryKey = null,
|
||||
)
|
||||
} else {
|
||||
ListPreference(
|
||||
key = "revanced_shorts_player_type",
|
||||
summaryKey = null,
|
||||
entriesKey = "revanced_shorts_player_type_legacy_entries",
|
||||
entryValuesKey = "revanced_shorts_player_type_legacy_entry_values"
|
||||
)
|
||||
}
|
||||
)
|
||||
|
||||
// Activity is used as the context to launch an Intent.
|
||||
mainActivityOnCreateFingerprint.method.addInstruction(
|
||||
1,
|
||||
"invoke-static/range { p0 .. p0 }, ${EXTENSION_CLASS_DESCRIPTOR}->" +
|
||||
"setMainActivity(Landroid/app/Activity;)V",
|
||||
)
|
||||
|
||||
// Find the obfuscated method name for PlaybackStartDescriptor.videoId()
|
||||
val playbackStartVideoIdMethodName = playbackStartFeatureFlagFingerprint.method.let {
|
||||
val stringMethodIndex = it.indexOfFirstInstructionOrThrow {
|
||||
val reference = getReference<MethodReference>()
|
||||
reference?.definingClass == "Lcom/google/android/libraries/youtube/player/model/PlaybackStartDescriptor;"
|
||||
&& reference.returnType == "Ljava/lang/String;"
|
||||
}
|
||||
|
||||
navigate(it).to(stringMethodIndex).stop().name
|
||||
}
|
||||
|
||||
fun extensionInstructions(playbackStartRegister: Int, freeRegister: Int) =
|
||||
"""
|
||||
invoke-virtual { v$playbackStartRegister }, Lcom/google/android/libraries/youtube/player/model/PlaybackStartDescriptor;->$playbackStartVideoIdMethodName()Ljava/lang/String;
|
||||
move-result-object v$freeRegister
|
||||
invoke-static { v$freeRegister }, $EXTENSION_CLASS_DESCRIPTOR->openShort(Ljava/lang/String;)Z
|
||||
move-result v$freeRegister
|
||||
if-eqz v$freeRegister, :disabled
|
||||
return-void
|
||||
|
||||
:disabled
|
||||
nop
|
||||
"""
|
||||
|
||||
if (!is_19_25_or_greater) {
|
||||
shortsPlaybackIntentLegacyFingerprint.method.apply {
|
||||
val index = indexOfFirstInstructionOrThrow {
|
||||
getReference<MethodReference>()?.returnType ==
|
||||
"Lcom/google/android/libraries/youtube/player/model/PlaybackStartDescriptor;"
|
||||
}
|
||||
val freeRegister = getInstruction<FiveRegisterInstruction>(index).registerC
|
||||
val playbackStartRegister = getInstruction<OneRegisterInstruction>(index + 1).registerA
|
||||
|
||||
addInstructionsWithLabels(
|
||||
index + 2,
|
||||
extensionInstructions(playbackStartRegister, freeRegister)
|
||||
)
|
||||
}
|
||||
|
||||
return@execute
|
||||
}
|
||||
|
||||
shortsPlaybackIntentFingerprint.method.addInstructionsWithLabels(
|
||||
0,
|
||||
"""
|
||||
move-object/from16 v0, p1
|
||||
${extensionInstructions(0, 1)}
|
||||
"""
|
||||
)
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
package app.revanced.patches.youtube.misc.announcements
|
||||
|
||||
import app.revanced.patcher.extensions.InstructionExtensions.addInstructions
|
||||
import app.revanced.patcher.extensions.InstructionExtensions.addInstruction
|
||||
import app.revanced.patcher.patch.bytecodePatch
|
||||
import app.revanced.patches.all.misc.resources.addResources
|
||||
import app.revanced.patches.all.misc.resources.addResourcesPatch
|
||||
@@ -41,7 +41,7 @@ val announcementsPatch = bytecodePatch(
|
||||
SwitchPreference("revanced_announcements"),
|
||||
)
|
||||
|
||||
mainActivityOnCreateFingerprint.method.addInstructions(
|
||||
mainActivityOnCreateFingerprint.method.addInstruction(
|
||||
// Insert index must be greater than the insert index used by GmsCoreSupport,
|
||||
// as both patch the same method and GmsCore check should be first.
|
||||
1,
|
||||
|
||||
@@ -110,22 +110,22 @@ val enableDebuggingPatch = bytecodePatch(
|
||||
"""
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
experimentalStringFeatureFlagFingerprint.match(
|
||||
experimentalFeatureFlagParentFingerprint.originalClassDef
|
||||
).method.apply {
|
||||
val insertIndex = indexOfFirstInstructionReversedOrThrow(Opcode.MOVE_RESULT_OBJECT)
|
||||
experimentalStringFeatureFlagFingerprint.match(
|
||||
experimentalFeatureFlagParentFingerprint.originalClassDef
|
||||
).method.apply {
|
||||
val insertIndex = indexOfFirstInstructionReversedOrThrow(Opcode.MOVE_RESULT_OBJECT)
|
||||
|
||||
addInstructions(
|
||||
insertIndex,
|
||||
"""
|
||||
move-result-object v0
|
||||
invoke-static { v0, p1, p2, p3 }, $EXTENSION_CLASS_DESCRIPTOR->isStringFeatureFlagEnabled(Ljava/lang/String;JLjava/lang/String;)Ljava/lang/String;
|
||||
move-result-object v0
|
||||
return-object v0
|
||||
"""
|
||||
)
|
||||
addInstructions(
|
||||
insertIndex,
|
||||
"""
|
||||
move-result-object v0
|
||||
invoke-static { v0, p1, p2, p3 }, $EXTENSION_CLASS_DESCRIPTOR->isStringFeatureFlagEnabled(Ljava/lang/String;JLjava/lang/String;)Ljava/lang/String;
|
||||
move-result-object v0
|
||||
return-object v0
|
||||
"""
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
// There exists other experimental accessor methods for byte[]
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package app.revanced.patches.youtube.misc.dns
|
||||
|
||||
import app.revanced.patcher.extensions.InstructionExtensions.addInstructions
|
||||
import app.revanced.patcher.extensions.InstructionExtensions.addInstruction
|
||||
import app.revanced.patcher.patch.bytecodePatch
|
||||
import app.revanced.patches.all.misc.resources.addResources
|
||||
import app.revanced.patches.all.misc.resources.addResourcesPatch
|
||||
@@ -31,7 +31,7 @@ val checkWatchHistoryDomainNameResolutionPatch = bytecodePatch(
|
||||
execute {
|
||||
addResources("youtube", "misc.dns.checkWatchHistoryDomainNameResolutionPatch")
|
||||
|
||||
mainActivityOnCreateFingerprint.method.addInstructions(
|
||||
mainActivityOnCreateFingerprint.method.addInstruction(
|
||||
// FIXME: Insert index must be greater than the insert index used by GmsCoreSupport,
|
||||
// as both patch the same method and GmsCoreSupport check should be first,
|
||||
// but the patch does not depend on GmsCoreSupport, so it should not be possible to enforce this
|
||||
|
||||
@@ -45,8 +45,11 @@ val spoofVideoStreamsPatch = spoofVideoStreamsPatch({
|
||||
summaryKey = null
|
||||
),
|
||||
SwitchPreference("revanced_spoof_video_streams_ios_force_avc"),
|
||||
NonInteractivePreference("revanced_spoof_video_streams_about_android_vr"),
|
||||
NonInteractivePreference("revanced_spoof_video_streams_about_ios"),
|
||||
// Preference requires a title but the actual text is chosen at runtime.
|
||||
NonInteractivePreference(
|
||||
key = "revanced_spoof_video_streams_about_android_vr",
|
||||
tag = "app.revanced.extension.youtube.settings.preference.SpoofStreamingDataSideEffectsPreference"
|
||||
),
|
||||
),
|
||||
),
|
||||
)
|
||||
|
||||
@@ -1,82 +1,5 @@
|
||||
package app.revanced.patches.youtube.misc.spoof
|
||||
|
||||
import app.revanced.patcher.extensions.InstructionExtensions.getInstruction
|
||||
import app.revanced.patcher.extensions.InstructionExtensions.replaceInstruction
|
||||
import app.revanced.patches.all.misc.transformation.IMethodCall
|
||||
import app.revanced.patches.all.misc.transformation.filterMapInstruction35c
|
||||
import app.revanced.patches.all.misc.transformation.transformInstructionsPatch
|
||||
import app.revanced.util.getReference
|
||||
import app.revanced.util.indexOfFirstInstruction
|
||||
import com.android.tools.smali.dexlib2.Opcode
|
||||
import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
|
||||
import com.android.tools.smali.dexlib2.iface.reference.MethodReference
|
||||
import com.android.tools.smali.dexlib2.iface.reference.StringReference
|
||||
import app.revanced.patches.shared.misc.spoof.userAgentClientSpoofPatch
|
||||
|
||||
private const val ORIGINAL_PACKAGE_NAME = "com.google.android.youtube"
|
||||
private const val USER_AGENT_STRING_BUILDER_APPEND_METHOD_REFERENCE =
|
||||
"Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;"
|
||||
|
||||
val userAgentClientSpoofPatch = transformInstructionsPatch(
|
||||
filterMap = { classDef, _, instruction, instructionIndex ->
|
||||
filterMapInstruction35c<MethodCall>(
|
||||
"Lapp/revanced/extension",
|
||||
classDef,
|
||||
instruction,
|
||||
instructionIndex,
|
||||
)
|
||||
},
|
||||
transform = transform@{ mutableMethod, entry ->
|
||||
val (_, _, instructionIndex) = entry
|
||||
|
||||
// Replace the result of context.getPackageName(), if it is used in a user agent string.
|
||||
mutableMethod.apply {
|
||||
// After context.getPackageName() the result is moved to a register.
|
||||
val targetRegister = (
|
||||
getInstruction(instructionIndex + 1)
|
||||
as? OneRegisterInstruction ?: return@transform
|
||||
).registerA
|
||||
|
||||
// IndexOutOfBoundsException is technically possible here,
|
||||
// but no such occurrences are present in the app.
|
||||
val referee = getInstruction(instructionIndex + 2).getReference<MethodReference>()?.toString()
|
||||
|
||||
// Only replace string builder usage.
|
||||
if (referee != USER_AGENT_STRING_BUILDER_APPEND_METHOD_REFERENCE) {
|
||||
return@transform
|
||||
}
|
||||
|
||||
// Do not change the package name in methods that use resources, or for methods that use GmsCore.
|
||||
// Changing these package names will result in playback limitations,
|
||||
// particularly Android VR background audio only playback.
|
||||
val resourceOrGmsStringInstructionIndex = indexOfFirstInstruction {
|
||||
val reference = getReference<StringReference>()
|
||||
opcode == Opcode.CONST_STRING &&
|
||||
(reference?.string == "android.resource://" || reference?.string == "gcore_")
|
||||
}
|
||||
if (resourceOrGmsStringInstructionIndex >= 0) {
|
||||
return@transform
|
||||
}
|
||||
|
||||
// Overwrite the result of context.getPackageName() with the original package name.
|
||||
replaceInstruction(
|
||||
instructionIndex + 1,
|
||||
"const-string v$targetRegister, \"$ORIGINAL_PACKAGE_NAME\"",
|
||||
)
|
||||
}
|
||||
},
|
||||
)
|
||||
|
||||
@Suppress("unused")
|
||||
private enum class MethodCall(
|
||||
override val definedClassName: String,
|
||||
override val methodName: String,
|
||||
override val methodParams: Array<String>,
|
||||
override val returnType: String,
|
||||
) : IMethodCall {
|
||||
GetPackageName(
|
||||
"Landroid/content/Context;",
|
||||
"getPackageName",
|
||||
emptyArray(),
|
||||
"Ljava/lang/String;",
|
||||
),
|
||||
}
|
||||
val userAgentClientSpoofPatch = userAgentClientSpoofPatch("com.google.android.youtube")
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
package app.revanced.patches.youtube.video.audio
|
||||
|
||||
import app.revanced.patcher.fingerprint
|
||||
import com.android.tools.smali.dexlib2.AccessFlags
|
||||
|
||||
internal val streamingModelBuilderFingerprint = fingerprint {
|
||||
accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL)
|
||||
returns("L")
|
||||
strings("vprng")
|
||||
}
|
||||
|
||||
internal val menuItemAudioTrackFingerprint = fingerprint {
|
||||
accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL)
|
||||
parameters("L")
|
||||
returns("V")
|
||||
strings("menu_item_audio_track")
|
||||
}
|
||||
|
||||
internal val audioStreamingTypeSelector = fingerprint {
|
||||
accessFlags(AccessFlags.PRIVATE, AccessFlags.FINAL)
|
||||
returns("L")
|
||||
strings("raw") // String is not unique
|
||||
}
|
||||
@@ -0,0 +1,159 @@
|
||||
package app.revanced.patches.youtube.video.audio
|
||||
|
||||
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.proxy.mutableTypes.MutableField.Companion.toMutable
|
||||
import app.revanced.patcher.util.proxy.mutableTypes.MutableMethod
|
||||
import app.revanced.patcher.util.proxy.mutableTypes.MutableMethod.Companion.toMutable
|
||||
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
|
||||
import app.revanced.util.getReference
|
||||
import app.revanced.util.indexOfFirstInstructionOrThrow
|
||||
import com.android.tools.smali.dexlib2.AccessFlags
|
||||
import com.android.tools.smali.dexlib2.Opcode
|
||||
import com.android.tools.smali.dexlib2.builder.MutableMethodImplementation
|
||||
import com.android.tools.smali.dexlib2.iface.Method
|
||||
import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
|
||||
import com.android.tools.smali.dexlib2.iface.reference.MethodReference
|
||||
import com.android.tools.smali.dexlib2.immutable.ImmutableField
|
||||
import com.android.tools.smali.dexlib2.immutable.ImmutableMethod
|
||||
import com.android.tools.smali.dexlib2.immutable.ImmutableMethodParameter
|
||||
|
||||
private const val EXTENSION_CLASS_DESCRIPTOR =
|
||||
"Lapp/revanced/extension/youtube/patches/ForceOriginalAudioPatch;"
|
||||
|
||||
@Suppress("unused")
|
||||
val forceOriginalAudioPatch = bytecodePatch(
|
||||
name = "Force original audio",
|
||||
description = "Adds an option to always use the original audio track.",
|
||||
) {
|
||||
dependsOn(
|
||||
sharedExtensionPatch,
|
||||
settingsPatch,
|
||||
addResourcesPatch,
|
||||
)
|
||||
|
||||
compatibleWith(
|
||||
"com.google.android.youtube"(
|
||||
"18.38.44",
|
||||
"18.49.37",
|
||||
"19.16.39",
|
||||
"19.25.37",
|
||||
"19.34.42",
|
||||
"19.43.41",
|
||||
"19.45.38",
|
||||
"19.46.42",
|
||||
),
|
||||
)
|
||||
|
||||
execute {
|
||||
addResources("youtube", "video.audio.forceOriginalAudioPatch")
|
||||
|
||||
PreferenceScreen.VIDEO.addPreferences(
|
||||
SwitchPreference("revanced_force_original_audio")
|
||||
)
|
||||
|
||||
fun Method.firstFormatStreamingModelCall(
|
||||
returnType: String = "Ljava/lang/String;"
|
||||
): MutableMethod {
|
||||
val audioTrackIdIndex = indexOfFirstInstructionOrThrow {
|
||||
val reference = getReference<MethodReference>()
|
||||
reference?.definingClass == "Lcom/google/android/libraries/youtube/innertube/model/media/FormatStreamModel;"
|
||||
&& reference.returnType == returnType
|
||||
}
|
||||
|
||||
return navigate(this).to(audioTrackIdIndex).stop()
|
||||
}
|
||||
|
||||
// Accessor methods of FormatStreamModel have no string constants and
|
||||
// opcodes are identical to other methods in the same class,
|
||||
// so must walk from another class that use the methods.
|
||||
val isDefaultMethod = streamingModelBuilderFingerprint.originalMethod.firstFormatStreamingModelCall("Z")
|
||||
val audioTrackIdMethod = menuItemAudioTrackFingerprint.originalMethod.firstFormatStreamingModelCall()
|
||||
val audioTrackDisplayNameMethod = audioStreamingTypeSelector.originalMethod.firstFormatStreamingModelCall()
|
||||
val formatStreamModelClass = proxy(classes.first {
|
||||
it.type == audioTrackIdMethod.definingClass
|
||||
}).mutableClass
|
||||
|
||||
formatStreamModelClass.apply {
|
||||
// Add a new field to store the override.
|
||||
val helperFieldName = "isDefaultAudioTrackOverride"
|
||||
fields.add(
|
||||
ImmutableField(
|
||||
type,
|
||||
helperFieldName,
|
||||
"Ljava/lang/Boolean;",
|
||||
// Boolean is a 100% immutable class (all fields are final)
|
||||
// and safe to write to a shared field without volatile/synchronization,
|
||||
// but without volatile the field can show stale data
|
||||
// and the same field is calculated more than once by different threads.
|
||||
AccessFlags.PRIVATE.value or AccessFlags.VOLATILE.value,
|
||||
null,
|
||||
null,
|
||||
null
|
||||
).toMutable()
|
||||
)
|
||||
|
||||
// Add a helper method because the isDefaultAudioTrack() has only 2 registers and 3 are needed.
|
||||
val helperMethodClass = type
|
||||
val helperMethodName = "extension_isDefaultAudioTrack"
|
||||
val helperMethod = ImmutableMethod(
|
||||
helperMethodClass,
|
||||
helperMethodName,
|
||||
listOf(ImmutableMethodParameter("Z", null, null)),
|
||||
"Z",
|
||||
AccessFlags.PRIVATE.value,
|
||||
null,
|
||||
null,
|
||||
MutableMethodImplementation(6),
|
||||
).toMutable().apply {
|
||||
addInstructionsWithLabels(
|
||||
0,
|
||||
"""
|
||||
iget-object v0, p0, $helperMethodClass->$helperFieldName:Ljava/lang/Boolean;
|
||||
if-eqz v0, :call_extension
|
||||
invoke-virtual { v0 }, Ljava/lang/Boolean;->booleanValue()Z
|
||||
move-result v3
|
||||
return v3
|
||||
|
||||
:call_extension
|
||||
invoke-virtual { p0 }, $audioTrackIdMethod
|
||||
move-result-object v1
|
||||
|
||||
invoke-virtual { p0 }, $audioTrackDisplayNameMethod
|
||||
move-result-object v2
|
||||
|
||||
invoke-static { p1, v1, v2 }, $EXTENSION_CLASS_DESCRIPTOR->isDefaultAudioStream(ZLjava/lang/String;Ljava/lang/String;)Z
|
||||
move-result v3
|
||||
|
||||
invoke-static { v3 }, Ljava/lang/Boolean;->valueOf(Z)Ljava/lang/Boolean;
|
||||
move-result-object v0
|
||||
iput-object v0, p0, $helperMethodClass->$helperFieldName:Ljava/lang/Boolean;
|
||||
return v3
|
||||
"""
|
||||
)
|
||||
}
|
||||
methods.add(helperMethod)
|
||||
|
||||
// Modify isDefaultAudioTrack() to call extension helper method.
|
||||
isDefaultMethod.apply {
|
||||
val index = indexOfFirstInstructionOrThrow(Opcode.RETURN)
|
||||
val register = getInstruction<OneRegisterInstruction>(index).registerA
|
||||
|
||||
addInstructions(
|
||||
index,
|
||||
"""
|
||||
invoke-direct { p0, v$register }, $helperMethodClass->$helperMethodName(Z)Z
|
||||
move-result v$register
|
||||
"""
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,8 +1,8 @@
|
||||
package app.revanced.util.resource
|
||||
|
||||
import app.revanced.patcher.patch.PatchException
|
||||
import org.w3c.dom.Document
|
||||
import org.w3c.dom.Node
|
||||
import java.util.logging.Logger
|
||||
|
||||
/**
|
||||
* A string value.
|
||||
@@ -19,13 +19,36 @@ class StringResource(
|
||||
) : BaseResource(name, "string") {
|
||||
override fun serialize(ownerDocument: Document, resourceCallback: (BaseResource) -> Unit) =
|
||||
super.serialize(ownerDocument, resourceCallback).apply {
|
||||
|
||||
fun String.validateAndroidStringEscaping() : String {
|
||||
if (value.startsWith('"') && value.endsWith('"')) {
|
||||
// Raw strings allow unescaped single quote but not double quote.
|
||||
if (!value.substring(1, value.length - 1).contains(Regex("(?<!\\\\)[\"]"))) {
|
||||
return this;
|
||||
}
|
||||
} else {
|
||||
if (value.contains('\n')) {
|
||||
// Don't throw an exception, otherwise unnoticed mistakes
|
||||
// in Crowdin can cause patching failures.
|
||||
// Incorrectly escaped strings still work but do not display as intended.
|
||||
Logger.getLogger(StringResource.javaClass.name).severe(
|
||||
"String $name is not raw but contains encoded new line characters: $value")
|
||||
}
|
||||
if (!value.contains(Regex("(?<!\\\\)['\"]"))) {
|
||||
return this;
|
||||
}
|
||||
}
|
||||
|
||||
Logger.getLogger(StringResource.javaClass.name).severe(
|
||||
"String $name cannot contain unescaped quotes in value: $value")
|
||||
|
||||
return this;
|
||||
}
|
||||
|
||||
// if the string is un-formatted, explicitly add the formatted attribute
|
||||
if (!formatted) setAttribute("formatted", "false")
|
||||
|
||||
if (value.contains(Regex("(?<!\\\\)['\"]")))
|
||||
throw PatchException("String $name cannot contain unescaped quotes in value \"$value\".")
|
||||
|
||||
textContent = value
|
||||
textContent = value.validateAndroidStringEscaping();
|
||||
}
|
||||
|
||||
companion object {
|
||||
|
||||
@@ -1,34 +1,23 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
|
||||
Note: All strings must have a unique path, even if the same string is declared in two different apps.
|
||||
This is because Crowdin requires temporarily flattening this file and removing the <app> and <patch> elements.
|
||||
All strings must have a unique path, even if the same string is declared in two different apps.
|
||||
This is because Crowdin requires temporarily flattening this file and removing the <app> and <patch> elements.
|
||||
|
||||
# General guidelines and information for translating
|
||||
|
||||
## Strings parameters can be reordered to allow more flexible translations if the grammar should be changed.
|
||||
Strings with new lines must be raw strings where they're wrapped in quotes and new lines are not encoded.
|
||||
Raw strings still requires escaping embedded double quotes but escaping embedded single quotes is optional.
|
||||
|
||||
For example, the patches string:
|
||||
<string name="revanced_patches_string">You will arrive at %1$s in %2$s hours from now</string>
|
||||
Could be translated to another language using a rearranged grammar:
|
||||
<string name="revanced_patches_string">You will arrive %2$s hours from now at %1$s</string>
|
||||
Raw strings are required because Crowdin AI translations regularly gets confused and
|
||||
replace \n with an encoded new line character.
|
||||
|
||||
For Manager strings:
|
||||
You will arrive at ${destination} in ${count} hours from now
|
||||
Could be rearranged by changing the order of the ${} parameters:
|
||||
You will arrive ${count} hours from now at ${destination}
|
||||
Bad:
|
||||
<string name="summary_key">First \'item\' text\nSecond \"item\" text</string>
|
||||
|
||||
Reordering is particularly relevant when translating into right to left languages, or for any language with grammar that is noticeably different from English.
|
||||
Good:
|
||||
<string name="summary_key">"First 'item' text
|
||||
Second \"item\" text"</string>
|
||||
|
||||
## Single and double quotation marks must be escaped for patch strings (Manager does not require escaping any quotes).
|
||||
|
||||
All _patches_ single and double quotation marks must be escaped as \" or \'
|
||||
Forgetting to do this will cause that string to appear in app with no quotation characters.
|
||||
|
||||
Correct:
|
||||
<string name="revanced_string">You\'re correct. This is the \"correct\" way and this text will appear as expected in the app</string>
|
||||
Not correct:
|
||||
<string name="revanced_string">You're not correct. This is not the "correct" way and this text will not appear as expected the in app</string>
|
||||
-->
|
||||
<resources>
|
||||
<app id="shared">
|
||||
@@ -175,6 +164,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
</patch>
|
||||
<patch id="layout.startupshortsreset.disableResumingShortsOnStartupPatch">
|
||||
</patch>
|
||||
<patch id="layout.shortsplayer.shortsPlayerTypePatch">
|
||||
</patch>
|
||||
<patch id="layout.shortsautoplay.shortsAutoplayPatch">
|
||||
</patch>
|
||||
<patch id="layout.tablet.enableTabletLayoutPatch">
|
||||
@@ -211,6 +202,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
</patch>
|
||||
<patch id="misc.zoomhaptics.zoomHapticsPatch">
|
||||
</patch>
|
||||
<patch id="video.audio.forceOriginalAudioPatch">
|
||||
</patch>
|
||||
<patch id="video.quality.rememberVideoQualityPatch">
|
||||
<!-- Translations should use the same text as revanced_custom_playback_speeds_auto -->
|
||||
</patch>
|
||||
|
||||
@@ -1,34 +1,23 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
|
||||
Note: All strings must have a unique path, even if the same string is declared in two different apps.
|
||||
This is because Crowdin requires temporarily flattening this file and removing the <app> and <patch> elements.
|
||||
All strings must have a unique path, even if the same string is declared in two different apps.
|
||||
This is because Crowdin requires temporarily flattening this file and removing the <app> and <patch> elements.
|
||||
|
||||
# General guidelines and information for translating
|
||||
|
||||
## Strings parameters can be reordered to allow more flexible translations if the grammar should be changed.
|
||||
Strings with new lines must be raw strings where they're wrapped in quotes and new lines are not encoded.
|
||||
Raw strings still requires escaping embedded double quotes but escaping embedded single quotes is optional.
|
||||
|
||||
For example, the patches string:
|
||||
<string name="revanced_patches_string">You will arrive at %1$s in %2$s hours from now</string>
|
||||
Could be translated to another language using a rearranged grammar:
|
||||
<string name="revanced_patches_string">You will arrive %2$s hours from now at %1$s</string>
|
||||
Raw strings are required because Crowdin AI translations regularly gets confused and
|
||||
replace \n with an encoded new line character.
|
||||
|
||||
For Manager strings:
|
||||
You will arrive at ${destination} in ${count} hours from now
|
||||
Could be rearranged by changing the order of the ${} parameters:
|
||||
You will arrive ${count} hours from now at ${destination}
|
||||
Bad:
|
||||
<string name="summary_key">First \'item\' text\nSecond \"item\" text</string>
|
||||
|
||||
Reordering is particularly relevant when translating into right to left languages, or for any language with grammar that is noticeably different from English.
|
||||
Good:
|
||||
<string name="summary_key">"First 'item' text
|
||||
Second \"item\" text"</string>
|
||||
|
||||
## Single and double quotation marks must be escaped for patch strings (Manager does not require escaping any quotes).
|
||||
|
||||
All _patches_ single and double quotation marks must be escaped as \" or \'
|
||||
Forgetting to do this will cause that string to appear in app with no quotation characters.
|
||||
|
||||
Correct:
|
||||
<string name="revanced_string">You\'re correct. This is the \"correct\" way and this text will appear as expected in the app</string>
|
||||
Not correct:
|
||||
<string name="revanced_string">You're not correct. This is not the "correct" way and this text will not appear as expected the in app</string>
|
||||
-->
|
||||
<resources>
|
||||
<app id="shared">
|
||||
@@ -175,6 +164,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
</patch>
|
||||
<patch id="layout.startupshortsreset.disableResumingShortsOnStartupPatch">
|
||||
</patch>
|
||||
<patch id="layout.shortsplayer.shortsPlayerTypePatch">
|
||||
</patch>
|
||||
<patch id="layout.shortsautoplay.shortsAutoplayPatch">
|
||||
</patch>
|
||||
<patch id="layout.tablet.enableTabletLayoutPatch">
|
||||
@@ -211,6 +202,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
</patch>
|
||||
<patch id="misc.zoomhaptics.zoomHapticsPatch">
|
||||
</patch>
|
||||
<patch id="video.audio.forceOriginalAudioPatch">
|
||||
</patch>
|
||||
<patch id="video.quality.rememberVideoQualityPatch">
|
||||
<!-- Translations should use the same text as revanced_custom_playback_speeds_auto -->
|
||||
</patch>
|
||||
|
||||
@@ -1,34 +1,23 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
|
||||
Note: All strings must have a unique path, even if the same string is declared in two different apps.
|
||||
This is because Crowdin requires temporarily flattening this file and removing the <app> and <patch> elements.
|
||||
All strings must have a unique path, even if the same string is declared in two different apps.
|
||||
This is because Crowdin requires temporarily flattening this file and removing the <app> and <patch> elements.
|
||||
|
||||
# General guidelines and information for translating
|
||||
|
||||
## Strings parameters can be reordered to allow more flexible translations if the grammar should be changed.
|
||||
Strings with new lines must be raw strings where they're wrapped in quotes and new lines are not encoded.
|
||||
Raw strings still requires escaping embedded double quotes but escaping embedded single quotes is optional.
|
||||
|
||||
For example, the patches string:
|
||||
<string name="revanced_patches_string">You will arrive at %1$s in %2$s hours from now</string>
|
||||
Could be translated to another language using a rearranged grammar:
|
||||
<string name="revanced_patches_string">You will arrive %2$s hours from now at %1$s</string>
|
||||
Raw strings are required because Crowdin AI translations regularly gets confused and
|
||||
replace \n with an encoded new line character.
|
||||
|
||||
For Manager strings:
|
||||
You will arrive at ${destination} in ${count} hours from now
|
||||
Could be rearranged by changing the order of the ${} parameters:
|
||||
You will arrive ${count} hours from now at ${destination}
|
||||
Bad:
|
||||
<string name="summary_key">First \'item\' text\nSecond \"item\" text</string>
|
||||
|
||||
Reordering is particularly relevant when translating into right to left languages, or for any language with grammar that is noticeably different from English.
|
||||
Good:
|
||||
<string name="summary_key">"First 'item' text
|
||||
Second \"item\" text"</string>
|
||||
|
||||
## Single and double quotation marks must be escaped for patch strings (Manager does not require escaping any quotes).
|
||||
|
||||
All _patches_ single and double quotation marks must be escaped as \" or \'
|
||||
Forgetting to do this will cause that string to appear in app with no quotation characters.
|
||||
|
||||
Correct:
|
||||
<string name="revanced_string">You\'re correct. This is the \"correct\" way and this text will appear as expected in the app</string>
|
||||
Not correct:
|
||||
<string name="revanced_string">You're not correct. This is not the "correct" way and this text will not appear as expected the in app</string>
|
||||
-->
|
||||
<resources>
|
||||
<app id="shared">
|
||||
@@ -44,6 +33,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_check_environment_not_near_patch_time_invalid">تاريخ إنشاء APK تالف</string>
|
||||
</patch>
|
||||
<patch id="misc.settings.settingsResourcePatch">
|
||||
<string name="revanced_settings_title">ReVanced</string>
|
||||
<string name="revanced_settings_confirm_user_dialog_title">هل ترغب في المتابعة؟</string>
|
||||
<string name="revanced_settings_reset">إعادة التعيين</string>
|
||||
<string name="revanced_settings_restart_title">تحديث وإعادة تشغيل</string>
|
||||
@@ -58,18 +48,26 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<!-- Settings about dialog. -->
|
||||
<string name="revanced_settings_about_links_body">أنت تستخدم إصدار ReVanced Patches <i>%s</i></string>
|
||||
<string name="revanced_settings_about_links_dev_header">ملاحظة</string>
|
||||
<string name="revanced_settings_about_links_dev_body">هذا الإصدار هو إصدار مسبق، وقد تواجه مشاكل غير متوقعة</string>
|
||||
<string name="revanced_settings_about_links_dev_body">هذه النسخة هي إصدار مسبق وقد تواجه مشكلات غير متوقعة</string>
|
||||
<string name="revanced_settings_about_links_header">الروابط الرسمية</string>
|
||||
<!-- NOTE: the about strings above are duplicated in the TikTok about screen code,
|
||||
and changes made here must also be made there. -->
|
||||
</patch>
|
||||
<patch id="misc.gms.gmsCoreSupportResourcePatch">
|
||||
<!-- Translations of this should not be longer than the original English text, otherwise the text can be clipped and not entirely shown. -->
|
||||
<string name="gms_core_toast_not_installed_message">لم يتم تثبيت MicroG GmsCore . قم بتثبيته.</string>
|
||||
<string name="gms_core_toast_not_installed_message">لم يتم تثبيت MicroG GmsCore. قم بتثبيته.</string>
|
||||
<string name="gms_core_dialog_title">الإجراء مطلوب</string>
|
||||
<string name="gms_core_dialog_not_whitelisted_not_allowed_in_background_message">لا يملك MicroG GmsCore الصلاحية للتشغيل في الخلفية.\n\nاتبع دليل \"لا تقتل تطبيقي\" للهاتف الخاص بك، وقم بتطبيق الإرشادات على تثبيت المايكروج.\n\nهذا مطلوب لكي يعمل التطبيق.</string>
|
||||
<string name="gms_core_dialog_not_whitelisted_not_allowed_in_background_message">"لا يملك MicroG GmsCore صلاحية التشغيل في الخلفية.
|
||||
|
||||
اتبع دليل \"لا تقتل تطبيقي\" لهاتفك، وطبّق التعليمات لتثبيت MicroG.
|
||||
|
||||
هذا مطلوب لعمل التطبيق."</string>
|
||||
<string name="gms_core_dialog_open_website_text">فتح الموقع</string>
|
||||
<string name="gms_core_dialog_not_whitelisted_using_battery_optimizations_message">يجب تعطيل تحسينات بطارية MicroG GmsCore لمنع حدوث مشكلات.\n\nاضغط على زر المتابعة وقم بتعطيل تحسينات البطارية.</string>
|
||||
<string name="gms_core_dialog_not_whitelisted_using_battery_optimizations_message">"يجب تعطيل تحسينات بطارية MicroG GmsCore لمنع حدوث مشكلات.
|
||||
|
||||
لن يؤثر تعطيل تحسينات البطارية لـ MicroG سلبًا على استخدام البطارية.
|
||||
|
||||
انقر فوق زر الاستمرار واسمح بتغييرات التحسين."</string>
|
||||
<string name="gms_core_dialog_continue_text">متابعة</string>
|
||||
</patch>
|
||||
</app>
|
||||
@@ -106,7 +104,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_debug_toast_on_error_title">عرض ملاحظة عند وجود خطأ في ReVanced</string>
|
||||
<string name="revanced_debug_toast_on_error_summary_on">يتم عرض ملاحظة في حالة حدوث خطأ</string>
|
||||
<string name="revanced_debug_toast_on_error_summary_off">لا يتم عرض ملاحظة في حالة حدوث خطأ</string>
|
||||
<string name="revanced_debug_toast_on_error_user_dialog_message">يؤدي إيقاف تشغيل ملاحظات الأخطاء إلى إخفاء كافة إشعارات خطأ ReVanced.\n\nلن يتم إعلامك بأي أخطاء غير متوقعة.</string>
|
||||
<string name="revanced_debug_toast_on_error_user_dialog_message">"يؤدي إيقاف تشغيل ملاحظات الأخطاء إلى إخفاء كافة إشعارات أخطاء ReVanced.
|
||||
|
||||
لن يتم إعلامك بأي أخطاء غير متوقعة."</string>
|
||||
</patch>
|
||||
<patch id="layout.hide.general.hideLayoutComponentsPatch">
|
||||
<string name="revanced_disable_like_subscribe_glow_title">تعطيل توهج زر أعجبني / اشتراك</string>
|
||||
@@ -125,7 +125,12 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_hide_channel_watermark_summary_on">تم إخفاء علامة الفيديو المائية</string>
|
||||
<string name="revanced_hide_channel_watermark_summary_off">يتم عرض علامة الفيديو المائية</string>
|
||||
<string name="revanced_hide_horizontal_shelves_title">إخفاء الرفوف الأفقية</string>
|
||||
<string name="revanced_hide_horizontal_shelves_summary_on">تكون الرفوف مخفية مثل:\n• الأخبار العاجلة\n• متابعة المشاهدة\n• استكشاف المزيد من القنوات\n• التسوق\n• مشاهدة مرة أخرى</string>
|
||||
<string name="revanced_hide_horizontal_shelves_summary_on">"تكون الرفوف مخفية مثل:
|
||||
• الأخبار العاجلة
|
||||
• متابعة المشاهدة
|
||||
• استكشاف المزيد من القنوات
|
||||
• التسوق
|
||||
• مشاهدة مرة أخرى"</string>
|
||||
<string name="revanced_hide_horizontal_shelves_summary_off">يتم عرض الرفوف</string>
|
||||
<!-- 'Join' should be translated using the same localized wording YouTube displays.
|
||||
This appears in the video player for certain videos. -->
|
||||
@@ -153,9 +158,6 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_hide_timed_reactions_title">إخفاء ردود الفعل المؤقتة</string>
|
||||
<string name="revanced_hide_timed_reactions_summary_on">تم إخفاء ردود الفعل المؤقتة</string>
|
||||
<string name="revanced_hide_timed_reactions_summary_off">يتم عرض ردود الفعل المؤقتة</string>
|
||||
<string name="revanced_hide_search_result_shelf_header_title">إخفاء رأس رف نتائج البحث</string>
|
||||
<string name="revanced_hide_search_result_shelf_header_summary_on">تم إخفاء رأس الرف</string>
|
||||
<string name="revanced_hide_search_result_shelf_header_summary_off">يتم عرض رأس الرف</string>
|
||||
<string name="revanced_hide_channel_guidelines_title">إخفاء إرشادات القناة</string>
|
||||
<string name="revanced_hide_channel_guidelines_summary_on">تم إخفاء إرشادات القناة</string>
|
||||
<string name="revanced_hide_channel_guidelines_summary_off">يتم عرض إرشادات القناة</string>
|
||||
@@ -226,8 +228,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_hide_chapters_section_summary_on">تم إخفاء قسم الفصول</string>
|
||||
<string name="revanced_hide_chapters_section_summary_off">يتم عرض قسم الفصول</string>
|
||||
<string name="revanced_hide_podcast_section_title">إخفاء قسم \'استكشاف البودكاست\'</string>
|
||||
<string name="revanced_hide_podcast_section_summary_on">يتم عرض قسم \'استكشاف البودكاست\'</string>
|
||||
<string name="revanced_hide_podcast_section_summary_off">يتم عرض قسم \'استكشاف البودكاست\'</string>
|
||||
<string name="revanced_hide_podcast_section_summary_on">تم إخفاء قسم \"استكشاف البودكاست\"</string>
|
||||
<string name="revanced_hide_podcast_section_summary_off">يتم عرض قسم \"استكشاف البودكاست\"</string>
|
||||
<string name="revanced_hide_info_cards_section_title">إخفاء قسم بطاقات المعلومات</string>
|
||||
<string name="revanced_hide_info_cards_section_summary_on">تم إخفاء قسم بطاقات المعلومات</string>
|
||||
<string name="revanced_hide_info_cards_section_summary_off">يتم عرض قسم بطاقات المعلومات</string>
|
||||
@@ -252,6 +254,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_hide_filter_bar_feed_in_related_videos_summary_off">يعرض في الفيديوهات ذات الصلة</string>
|
||||
<string name="revanced_comments_screen_title">التعليقات</string>
|
||||
<string name="revanced_comments_screen_summary">إخفاء أو عرض مكونات قسم التعليقات</string>
|
||||
<string name="revanced_hide_comments_chat_summary_title">إخفاء \"ملخص الدردشة\" </string>
|
||||
<string name="revanced_hide_comments_chat_summary_summary_on">تم إخفاء “ملخص الدردشة”</string>
|
||||
<string name="revanced_hide_comments_chat_summary_summary_off">يتم عرض “ملخص الدردشة”</string>
|
||||
<string name="revanced_hide_comments_by_members_header_title">إخفاء رأس \'تعليقات الأعضاء\'</string>
|
||||
<string name="revanced_hide_comments_by_members_header_summary_on">تم إخفاء رأس \'تعليقات الأعضاء\'</string>
|
||||
<string name="revanced_hide_comments_by_members_header_summary_off">يتم عرض رأس \'تعليقات الأعضاء\'</string>
|
||||
@@ -274,7 +279,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_hide_doodles_title">إخفاء رسومات YouTube</string>
|
||||
<string name="revanced_hide_doodles_summary_on">تم إخفاء رسومات شريط البحث</string>
|
||||
<string name="revanced_hide_doodles_summary_off">يتم عرض رسومات شريط البحث</string>
|
||||
<string name="revanced_hide_doodles_user_dialog_message">تظهر رسومات YouTube Doodles لعدة أيام كل عام.\n\nإذا كانت الرسومات تظهر حاليًا في منطقتك وإعداد الإخفاء هذا قيد التشغيل، سيتم أيضًا إخفاء شريط الفلتر أسفل شريط البحث.</string>
|
||||
<string name="revanced_hide_doodles_user_dialog_message">"تظهر \"\"Doodles\"\" على YouTube بضعة أيام كل عام.
|
||||
|
||||
إذا كان يتم عرض \"Doodle\" حاليًا في منطقتك وإذا كان إعداد الإخفاء هذا قيد التشغيل، فسيتم أيضًا إخفاء شريط التصفية أسفل شريط البحث."</string>
|
||||
<string name="revanced_custom_filter_screen_title">فلتر مخصص</string>
|
||||
<string name="revanced_custom_filter_screen_summary">إخفاء المكونات باستخدام فلاتر مخصصة</string>
|
||||
<string name="revanced_custom_filter_title">تمكين الفلتر المخصص</string>
|
||||
@@ -298,9 +305,18 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_hide_keyword_content_phrases_title">الكلمات المفتاحية المراد إخفاؤها</string>
|
||||
<!-- For localization it is preferred, but not required, if 'LeBlanc' is replaced with a localized name or a familiar word that has upper case letters in the middle of the word.
|
||||
This is because keywords can be in any language, and showing an example in the localized script helps convey this. -->
|
||||
<string name="revanced_hide_keyword_content_phrases_summary">الكلمات والعبارات الرئيسية التي يجب إخفاؤها، مفصولة بسطر جديد\n\nالكلمات الرئيسية يمكن أن تكون أسماء قنوات أو أي نص يظهر في عناوين الفيديو\n\nيجب إدخال الكلمات التي تحتوي على أحرف كبيرة في الوسط بإستخدام الأحرف الكبيرة (مثال: iPhone، TikTok، LeBlanc)</string>
|
||||
<string name="revanced_hide_keyword_content_phrases_summary">"الكلمات والعبارات التي تريد إخفاءها، مفصولة بسطور جديدة
|
||||
|
||||
يمكن أن تكون الكلمات عبارة عن أسماء قنوات أو أي نص يظهر في عناوين الفيديوهات
|
||||
|
||||
يجب إدخال الكلمات التي تحتوي على أحرف كبيرة في المنتصف بنفس الحالة (على سبيل المثال: iPhone, TikTok, LeBlanc)"</string>
|
||||
<string name="revanced_hide_keyword_content_about_title">حول تصفية الكلمات المفتاحية</string>
|
||||
<string name="revanced_hide_keyword_content_about_summary">الصفحة الرئيسية/الاشتراكات/نتائج الإشتراك/يتم تصفية نتائج البحث لإخفاء المحتوى الذي يتطابق مع عبارات الكلمات الرئيسية\n\nالقيود\n• لا يمكن إخفاء فيديوهات Shorts بواسطة اسم القناة\n• قد لا تكون بعض مكونات واجهة المستخدم مخفية\n• قد لا تظهر نتائج بحث عن كلمة رئيسية</string>
|
||||
<string name="revanced_hide_keyword_content_about_summary">"الصفحة الرئيسية/الاشتراكات/نتائج البحث يتم تصفيتها لإخفاء المحتوى الذي يتطابق مع كلمات البحث
|
||||
|
||||
القيود
|
||||
• فيديوهات Shorts لا يمكن إخفاؤها بواسطة اسم القناة
|
||||
• قد لا يتم إخفاء بعض مكونات واجهة المستخدم
|
||||
• البحث عن كلمة ما قد لا يعطي نتائج"</string>
|
||||
<string name="revanced_hide_keyword_content_about_whole_words_title">مطابقة الكلمات بأكملها</string>
|
||||
<!-- Translations _must_ use a localized example. For languages that do not use spaces between words (Chinese, Japanese, etc) the English AI example should be used since no localized examples exist. Or if using machine translations, or if nobody wants to think of a localized example, then the English 'ai' example should be left as-is. -->
|
||||
<string name="revanced_hide_keyword_content_about_whole_words_summary">سيؤدي وضع علامة اقتباس مزدوجة حول كلمة رئيسية/عبارة إلى منع التطابقات الجزئية لعناوين الفيديو وأسماء القنوات.<br><br>على سبيل المثال،<br><b>\"ai\"</b> سيخفي الفيديو: <b>How does AI work?</b><br>ولكن لن يخفي: <b>What does fair use mean?</b></string>
|
||||
@@ -316,7 +332,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_hide_general_ads_summary_on">تم إخفاء الإعلانات بشكل عام</string>
|
||||
<string name="revanced_hide_general_ads_summary_off">يتم عرض الإعلانات العامة</string>
|
||||
<string name="revanced_hide_fullscreen_ads_title">إخفاء إعلانات ملء الشاشة</string>
|
||||
<string name="revanced_hide_fullscreen_ads_summary_on">يتم إخفاء إعلانات ملء الشاشة\n\nهذه الميزة متوفرة فقط للأجهزة القديمة</string>
|
||||
<string name="revanced_hide_fullscreen_ads_summary_on">"يتم إخفاء إعلانات ملء الشاشة
|
||||
|
||||
هذه الميزة متاحة فقط للأجهزة القديمة"</string>
|
||||
<string name="revanced_hide_fullscreen_ads_summary_off">يتم عرض إعلانات ملء الشاشة</string>
|
||||
<string name="revanced_hide_buttoned_ads_title">إخفاء الإعلانات الزرية</string>
|
||||
<string name="revanced_hide_buttoned_ads_summary_on">تم إخفاء الإعلانات الزرية</string>
|
||||
@@ -416,7 +434,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_swipe_save_and_restore_brightness_summary_on">حفظ واستعادة السطوع عند الخروج أو الدخول إلى وضع ملء الشاشة</string>
|
||||
<string name="revanced_swipe_save_and_restore_brightness_summary_off">لا تقم بحفظ السطوع واستعادته عند الخروج أو الدخول إلى وضع ملء الشاشة</string>
|
||||
<string name="revanced_swipe_lowest_value_enable_auto_brightness_title">تمكين إيماءة السطوع التلقائي</string>
|
||||
<string name="revanced_swipe_lowest_value_enable_auto_brightness_summary_on">يؤدي التمرير لأسفل إلى أدنى قيمة لإيماءة السطوع إلى تمكين السطوع التلقائي</string>
|
||||
<string name="revanced_swipe_lowest_value_enable_auto_brightness_summary_on">التمرير لأسفل إلى أدنى قيمة للسطوع يمكّن السطوع التلقائي</string>
|
||||
<string name="revanced_swipe_lowest_value_enable_auto_brightness_summary_off">لا يؤدي التمرير لأسفل إلى أدنى قيمة إلى تمكين السطوع التلقائي</string>
|
||||
<string name="revanced_swipe_lowest_value_enable_auto_brightness_overlay_text">تلقائي</string>
|
||||
<string name="revanced_swipe_overlay_timeout_title">مهلة واجهة التمرير</string>
|
||||
@@ -435,7 +453,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
</patch>
|
||||
<patch id="layout.buttons.action.hideButtonsPatch">
|
||||
<string name="revanced_hide_buttons_screen_title">أزرار الإجراء</string>
|
||||
<string name="revanced_hide_buttons_screen_summary">إخفاء أو عرض الأزرار تحت مقاطع الفيديو</string>
|
||||
<string name="revanced_hide_buttons_screen_summary">إخفاء أو عرض الأزرار تحت الفيديوهات</string>
|
||||
<string name="revanced_hide_like_dislike_button_title">إخفاء أعجبني ولم يعجبني</string>
|
||||
<string name="revanced_hide_like_dislike_button_summary_on">تم إخفاء أزرار أعجبني ولم يعجبني</string>
|
||||
<string name="revanced_hide_like_dislike_button_summary_off">يتم عرض أزرار أعجبني ولم يعجبني</string>
|
||||
@@ -490,11 +508,22 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_hide_subscriptions_button_summary_off">يتم عرض زر الاشتراكات</string>
|
||||
<!-- 'Notifications' should be translated using the same localized wording YouTube displays the tab. -->
|
||||
<string name="revanced_switch_create_with_notifications_button_title">تبديل الإنشاء مع الإشعارات</string>
|
||||
<string name="revanced_switch_create_with_notifications_button_summary_on">تم تبديل زر الإنشاء بـزر الإشعارات\n\nملاحظة: يؤدي تمكين هذا أيضًا إلى إخفاء إعلانات الفيديو بالقوة</string>
|
||||
<string name="revanced_switch_create_with_notifications_button_summary_on">"تم تبديل زر الإنشاء بـزر الإشعارات
|
||||
|
||||
ملاحظة: يؤدي تمكين هذا أيضًا إلى إخفاء إعلانات الفيديو بالقوة"</string>
|
||||
<string name="revanced_switch_create_with_notifications_button_summary_off">لا يتم تبديل زر الإنشاء بزر الإشعارات</string>
|
||||
<string name="revanced_hide_navigation_button_labels_title">إخفاء تسميات زر التنقل</string>
|
||||
<string name="revanced_hide_navigation_button_labels_summary_on">تم إخفاء التسميات</string>
|
||||
<string name="revanced_hide_navigation_button_labels_summary_off">يتم عرض التسميات</string>
|
||||
<string name="revanced_disable_translucent_status_bar_title">تعطيل شريط الحالة الشفاف</string>
|
||||
<string name="revanced_disable_translucent_status_bar_summary_on">شريط الحالة غير معتمة</string>
|
||||
<string name="revanced_disable_translucent_status_bar_summary_off">شريط الحالة غير شفافة أو عميقة</string>
|
||||
<string name="revanced_disable_translucent_navigation_bar_light_title">تعطيل شريط التنقل الشفاف الفاتح</string>
|
||||
<string name="revanced_disable_translucent_navigation_bar_light_summary_on">شريط التنقل في الوضع الفاتح معتم</string>
|
||||
<string name="revanced_disable_translucent_navigation_bar_light_summary_off">يكون شريط التنقل في الوضع الفاتح معتمًا أو نصف شفاف</string>
|
||||
<string name="revanced_disable_translucent_navigation_bar_dark_title">تعطيل الشريط الداكنة</string>
|
||||
<string name="revanced_disable_translucent_navigation_bar_dark_summary_on">شريط التنقل في الوضع الداكن معتم</string>
|
||||
<string name="revanced_disable_translucent_navigation_bar_dark_summary_off">شريط التطبيق المصوري الشفاف غير عميقة أو عميقة</string>
|
||||
</patch>
|
||||
<patch id="layout.hide.player.flyoutmenupanel.hidePlayerFlyoutMenuPatch">
|
||||
<string name="revanced_hide_player_flyout_title">القائمة المنبثقة</string>
|
||||
@@ -617,8 +646,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_hide_shorts_subscribe_button_summary_on">تم إخفاء زر الاشتراك</string>
|
||||
<string name="revanced_hide_shorts_subscribe_button_summary_off">يتم عرض زر الاشتراك</string>
|
||||
<string name="revanced_hide_shorts_paused_overlay_buttons_title">إخفاء أزرار واجهة التوقف</string>
|
||||
<string name="revanced_hide_shorts_paused_overlay_buttons_summary_on">تم إخفاء أزرار تراكب التوقف</string>
|
||||
<string name="revanced_hide_shorts_paused_overlay_buttons_summary_off">يتم عرض أزرار تراكب التوقف</string>
|
||||
<string name="revanced_hide_shorts_paused_overlay_buttons_summary_on">تم إخفاء أزرار واجهة التوقف</string>
|
||||
<string name="revanced_hide_shorts_paused_overlay_buttons_summary_off">يتم عرض أزرار واجهة التوقف</string>
|
||||
<string name="revanced_hide_shorts_shop_button_title">إخفاء زر المتجر</string>
|
||||
<string name="revanced_hide_shorts_shop_button_summary_on">تم إخفاء زر المتجر</string>
|
||||
<string name="revanced_hide_shorts_shop_button_summary_off">يتم عرض زر المتجر</string>
|
||||
@@ -652,9 +681,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_hide_shorts_stickers_title">إخفاء الملصقات</string>
|
||||
<string name="revanced_hide_shorts_stickers_summary_on">تم إخفاء الملصقات</string>
|
||||
<string name="revanced_hide_shorts_stickers_summary_off">يتم عرض الملصقات</string>
|
||||
<string name="revanced_hide_shorts_like_fountain_title">إخفاء نافورة أعجبني</string>
|
||||
<string name="revanced_hide_shorts_like_fountain_summary_on">تم إخفاء تأثير النافورة لـزر أعجبني</string>
|
||||
<string name="revanced_hide_shorts_like_fountain_summary_off">يتم عرض تأثير النافورة لـزر أعجبني</string>
|
||||
<string name="revanced_hide_shorts_like_fountain_title">إخفاء فوران أعجبني</string>
|
||||
<string name="revanced_hide_shorts_like_fountain_summary_on">تم إخفاء التأثير الفوّار لـزر أعجبني</string>
|
||||
<string name="revanced_hide_shorts_like_fountain_summary_off">يتم عرض التأثير الفوّار لـزر أعجبني</string>
|
||||
<string name="revanced_hide_shorts_like_button_title">إخفاء زر أعجبني</string>
|
||||
<string name="revanced_hide_shorts_like_button_summary_on">تم إخفاء زر أعجبني</string>
|
||||
<string name="revanced_hide_shorts_like_button_summary_off">يتم عرض زر أعجبني</string>
|
||||
@@ -683,7 +712,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_hide_shorts_video_title_summary_off">يتم عرض العنوان</string>
|
||||
<string name="revanced_hide_shorts_sound_metadata_label_title">إخفاء تسمية بيانات التعريف الصوتية</string>
|
||||
<string name="revanced_hide_shorts_sound_metadata_label_summary_on">تم إخفاء تسمية بيانات التعريف</string>
|
||||
<string name="revanced_hide_shorts_sound_metadata_label_summary_off">يتم عرض تسمية البيانات الوصفية</string>
|
||||
<string name="revanced_hide_shorts_sound_metadata_label_summary_off">يتم عرض تسمية بيانات التعريف</string>
|
||||
<string name="revanced_hide_shorts_full_video_link_label_title">إخفاء تسمية رابط الفيديو الكامل</string>
|
||||
<string name="revanced_hide_shorts_full_video_link_label_summary_on">تم إخفاء تسمية رابط الفيديو</string>
|
||||
<string name="revanced_hide_shorts_full_video_link_label_summary_off">يتم عرض تسمية رابط الفيديو</string>
|
||||
@@ -711,11 +740,11 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
</patch>
|
||||
<patch id="layout.player.fullscreen.openVideosFullscreen">
|
||||
<string name="revanced_open_videos_fullscreen_portrait_title">فتح مقاطع الفيديو في ملء الشاشة</string>
|
||||
<string name="revanced_open_videos_fullscreen_portrait_summary_on">الفيديو فتح ملء الشاشة</string>
|
||||
<string name="revanced_open_videos_fullscreen_portrait_summary_off">الفيديو لا تفتح ملء الشاشة</string>
|
||||
<string name="revanced_open_videos_fullscreen_portrait_summary_on">يتم فتح الفيديوهات في وضع ملء الشاشة</string>
|
||||
<string name="revanced_open_videos_fullscreen_portrait_summary_off">لا يتم فتح الفيديوهات في وضع ملء الشاشة</string>
|
||||
</patch>
|
||||
<patch id="layout.player.overlay.customPlayerOverlayOpacityResourcePatch">
|
||||
<string name="revanced_player_overlay_opacity_title">شفافية تراكب المشغل</string>
|
||||
<string name="revanced_player_overlay_opacity_title">شفافية واجهة المشغل</string>
|
||||
<string name="revanced_player_overlay_opacity_summary">قيمة الشفافية بين 0-100، حيث يكون 0 شفاف</string>
|
||||
<string name="revanced_player_overlay_opacity_invalid_toast">شفافية واجهة المشغل يجب أن تكون بين 0-100</string>
|
||||
</patch>
|
||||
@@ -731,7 +760,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_ryd_enable_summary_off">لا يتم عرض لم يعجبني</string>
|
||||
<string name="revanced_ryd_shorts_title">عرض لم يعجني في مقاطع Shorts</string>
|
||||
<string name="revanced_ryd_shorts_summary_on">يتم عرض لم يعجني في مقاطع Shorts</string>
|
||||
<string name="revanced_ryd_shorts_summary_on_disclaimer">إبداءات لم يعجبني التي تظهر على فيديوهات Shorts\n\nالتقييد: قد لا تظهر إبداءات لم يعجبني في وضع التصفح المتخفي</string>
|
||||
<string name="revanced_ryd_shorts_summary_on_disclaimer">"إبداءات لم يعجبني التي تظهر على فيديوهات Shorts
|
||||
|
||||
التقييد: قد لا تظهر إبداءات لم يعجبني في وضع التصفح المتخفي"</string>
|
||||
<string name="revanced_ryd_shorts_summary_off">تم إخفاء لم يعجني في مقاطع Shorts</string>
|
||||
<string name="revanced_ryd_dislike_percentage_title">لم يعجبني كــ نسبة مئوية</string>
|
||||
<string name="revanced_ryd_dislike_percentage_summary_on">يعرض عدد لم يعجبني كـ نسبة مئوية</string>
|
||||
@@ -756,7 +787,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_ryd_statistics_getFetchCallCount_zero_summary">لم يتم إجراء اتصالات الشبكة</string>
|
||||
<string name="revanced_ryd_statistics_getFetchCallCount_non_zero_summary">%d اتصالات شبكية أجريت</string>
|
||||
<string name="revanced_ryd_statistics_getFetchCallNumberOfFailures_title">API جلب الأصوات، عدد المهلات</string>
|
||||
<string name="revanced_ryd_statistics_getFetchCallNumberOfFailures_zero_summary">لم تنتهي مهلة المكالمات الشبكية</string>
|
||||
<string name="revanced_ryd_statistics_getFetchCallNumberOfFailures_zero_summary">لم تنتهي مهلة الاتصالات الشبكية</string>
|
||||
<string name="revanced_ryd_statistics_getFetchCallNumberOfFailures_non_zero_summary">اتصالات شبكية انتهت مهلتها %d</string>
|
||||
<string name="revanced_ryd_statistics_getNumberOfRateLimitRequestsEncountered_title">حدود معدل عميل API</string>
|
||||
<string name="revanced_ryd_statistics_getNumberOfRateLimitRequestsEncountered_zero_summary">لا توجد حدود لمعدل العميل</string>
|
||||
@@ -774,13 +805,17 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_seekbar_thumbnails_high_quality_summary_off">مصغرات شريط التقدم متوسطة الجودة</string>
|
||||
<string name="revanced_seekbar_thumbnails_high_quality_legacy_summary_on">مصغرات شريط التقدم بملء الشاشة عالية الجودة</string>
|
||||
<string name="revanced_seekbar_thumbnails_high_quality_legacy_summary_off">مصغرات شريط التقدم بملء الشاشة متوسطة الجودة</string>
|
||||
<string name="revanced_seekbar_thumbnails_high_quality_dialog_message">سيؤدي هذا أيضا إلى استعادة المصغرات على البث المباشر الذي لا يحتوي على مصغرات شريط التقدم.\n\nمصغرات شريط التقدم سوف تستخدم نفس جودة الفيديو الحالي.\n\nتعمل هذه الميزة بشكل أفضل مع جودة فيديو 720p أو أقل وعند استخدام اتصال إنترنت سريع جداً.</string>
|
||||
<string name="revanced_restore_old_seekbar_thumbnails_title">استعادة مصغرات شريط التقدم القديم</string>
|
||||
<string name="revanced_seekbar_thumbnails_high_quality_dialog_message">"سيؤدي هذا أيضا إلى استعادة المصغرات على البث المباشر الذي لا يحتوي على مصغرات شريط التقدم.
|
||||
|
||||
مصغرات شريط التقدم سوف تستخدم نفس جودة الفيديو الحالي.
|
||||
|
||||
تعمل هذه الميزة بشكل أفضل مع جودة فيديو 720p أو أقل وعند استخدام اتصال إنترنت سريع جداً."</string>
|
||||
<string name="revanced_restore_old_seekbar_thumbnails_title">استعادة مصغرات شريط التقدم القديمة</string>
|
||||
<string name="revanced_restore_old_seekbar_thumbnails_summary_on">مصغرات شريط التقدم ستظهر فوق شريط تقدم الفيديو</string>
|
||||
<string name="revanced_restore_old_seekbar_thumbnails_summary_off">مصغرات شريط التقدم ستظهر في ملء الشاشة</string>
|
||||
</patch>
|
||||
<patch id="layout.sponsorblock.sponsorBlockResourcePatch">
|
||||
<string name="revanced_sb_enable_sb">تمكين مانِع الرُعَاة SponsorBlock</string>
|
||||
<string name="revanced_sb_enable_sb">تمكين SponsorBlock</string>
|
||||
<string name="revanced_sb_enable_sb_sum">مانِع الرُعَاة هو نظام جماعي لتخطي الأجزاء المُمِلَّة في مقاطع YouTube</string>
|
||||
<string name="revanced_sb_appearance_category">المظهر</string>
|
||||
<string name="revanced_sb_enable_voting">عرض زر التصويت</string>
|
||||
@@ -837,12 +872,15 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_sb_settings_import_successful">تم استيراد الإعدادات بنجاح</string>
|
||||
<string name="revanced_sb_settings_import_failed">فشل استيراد: %s</string>
|
||||
<string name="revanced_sb_settings_export_failed">فشل تصدير: %s</string>
|
||||
<string name="revanced_sb_settings_revanced_export_user_id_warning">تحتوي إعداداتك على معرف مستخدم خاص لـ SponsorBlock.\n\n معرف المستخدم الخاص بك يشبه كلمة المرور ويجب عدم مشاركته أبدًا.\n</string>
|
||||
<string name="revanced_sb_settings_revanced_export_user_id_warning">"تحتوي إعداداتك على معرف مستخدم خاص لـ SponsorBlock.
|
||||
|
||||
معرف المستخدم الخاص بك يشبه كلمة المرور ويجب عدم مشاركته أبدًا.
|
||||
"</string>
|
||||
<string name="revanced_sb_settings_revanced_export_user_id_warning_dismiss">لا تعرض مرة أخرى</string>
|
||||
<string name="revanced_sb_diff_segments">تغيير سلوك المقطع</string>
|
||||
<string name="revanced_sb_segments_sponsor">الراعي</string>
|
||||
<string name="revanced_sb_segments_sponsor_sum">الترويج المدفوع الأجر، والإحالات المدفوعة الأجر والإعلانات المباشرة. ليس للترويج الذاتي أو لصراعات مجانية للقضايا/المبدعين/المواقع الإلكترونية/المنتجات التي يحبون الحصول عليها</string>
|
||||
<string name="revanced_sb_segments_selfpromo">ترويج شخصي / غير مدفوع الأجر</string>
|
||||
<string name="revanced_sb_segments_selfpromo">ترويج شخصي/غير مدفوع الأجر</string>
|
||||
<string name="revanced_sb_segments_selfpromo_sum">شبيهة بـ \"الراعي\" باستثناء ما يتعلق بالإعلانات غير المدفوعة الأجر أو الذاتية. ويشمل ذلك أقسام عن السلع أو التبرعات أو المعلومات المتعلقة بمن تعاونوا مع ناشر المحتوى</string>
|
||||
<string name="revanced_sb_segments_interaction">تذكير بالتفاعل (اشتراك)</string>
|
||||
<string name="revanced_sb_segments_interaction_sum">تذكير قصير للإعجاب أو الاشتراك أو المتابعة في منتصف المحتوى. إذا كانت طويلة أو تتعلق بشيء محدد، فيجب أن تكون خاضعة للترويج الشخصي بدلاً من ذلك</string>
|
||||
@@ -897,9 +935,10 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_sb_submit_failed_invalid">غير قادر على إرسال المقطع: الحالة: %s</string>
|
||||
<string name="revanced_sb_submit_failed_timeout">SponsorBlock متوقف مؤقتًا</string>
|
||||
<string name="revanced_sb_submit_failed_unknown_error">غير قادر على إرسال المقطع (الحالة: %1$d %2$s)</string>
|
||||
<string name="revanced_sb_submit_failed_rate_limit">لا يمكن إرسال المقطع.\n جارٍ الحد من معدل إرسالك (عدد كبير جدا من نفس المستخدم أو IP)</string>
|
||||
<string name="revanced_sb_submit_failed_rate_limit">لا يمكن إرسال المقطع. جارٍ الحد من معدل إرسالك (عدد كبير جدًا من نفس المستخدم أو IP)</string>
|
||||
<string name="revanced_sb_submit_failed_forbidden">لا يمكن إرسال المقطع: %s</string>
|
||||
<string name="revanced_sb_submit_failed_duplicate">لا يمكن إرسال هذا المقطع.\nموجود بالفعل</string>
|
||||
<string name="revanced_sb_submit_failed_duplicate">"لا يمكن إرسال هذا المقطع.
|
||||
موجود بالفعل"</string>
|
||||
<string name="revanced_sb_submit_succeeded">تم إرسال المقطع بنجاح</string>
|
||||
<!-- Toast shown if network connection times out. Translations of this should not be longer than the original English or the text can be clipped and not entirely shown. -->
|
||||
<string name="revanced_sb_sponsorblock_connection_failure_timeout">SponsorBlock غير متاح مؤقتًا (انتهت مهلة API)</string>
|
||||
@@ -914,7 +953,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_sb_vote_no_segments">لا توجد مقاطع للتصويت عليها</string>
|
||||
<string name="revanced_sb_new_segment_choose_category">اختيار فئة المقطع</string>
|
||||
<string name="revanced_sb_new_segment_disabled_category">الفئة معطلة في الإعدادات. تمكين الفئة للإرسال.</string>
|
||||
<string name="revanced_sb_new_segment_title">مقطع مانِع رُعَاة جديد</string>
|
||||
<string name="revanced_sb_new_segment_title">مقطع SponsorBlock جديد</string>
|
||||
<string name="revanced_sb_new_segment_mark_time_as_question">تعيين %s كبداية أو نهاية لمقطع جديد؟</string>
|
||||
<string name="revanced_sb_new_segment_mark_start">البداية</string>
|
||||
<string name="revanced_sb_new_segment_mark_end">النهاية</string>
|
||||
@@ -922,7 +961,15 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_sb_new_segment_time_start">الوقت الذي يبدأ عنده المقطع</string>
|
||||
<string name="revanced_sb_new_segment_time_end">الوقت الذي ينتهي عنده المقطع</string>
|
||||
<string name="revanced_sb_new_segment_confirm_title">هل الأوقات صحيحة؟</string>
|
||||
<string name="revanced_sb_new_segment_confirm_content">المقطع من\n\n%1$s\nto\n%2$s\n\n(%3$s)\n\nReady to جاهز للإرسال؟</string>
|
||||
<string name="revanced_sb_new_segment_confirm_content">"المقطع من
|
||||
|
||||
%1$s
|
||||
إلى
|
||||
%2$s
|
||||
|
||||
(%3$s)
|
||||
|
||||
هل أنت مستعد للإرسال؟"</string>
|
||||
<string name="revanced_sb_new_segment_start_is_before_end">يجب أن تكون البداية قبل النهاية</string>
|
||||
<string name="revanced_sb_new_segment_mark_locations_first">ضع علامة على موقعين في شريط الوقت أولًا</string>
|
||||
<string name="revanced_sb_new_segment_preview_segment_first">معاينة المقطع، والتأكد من تخطيه بسلاسة</string>
|
||||
@@ -964,7 +1011,11 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_spoof_app_version_title">خِداع إصدار التطبيق</string>
|
||||
<string name="revanced_spoof_app_version_summary_on">تم تغيير اصدار التطبيق</string>
|
||||
<string name="revanced_spoof_app_version_summary_off">لم يتم تغيير اصدار التطبيق</string>
|
||||
<string name="revanced_spoof_app_version_user_dialog_message">سيتم تغيير إصدار التطبيق إلى إصدار قديم من YouTube.\n\nسيؤدي هذا إلى تغيير مظهر ومميزات التطبيق، ولكن قد تحدث تأثيرات جانبية غير معروفة.\n\nإذا تم إيقاف تشغيله لاحقا، من المستحسن مسح بيانات التطبيق لمنع حدوث أخطاء في واجهة المستخدم.</string>
|
||||
<string name="revanced_spoof_app_version_user_dialog_message">"سيتم تغيير إصدار التطبيق إلى إصدار قديم من YouTube.
|
||||
|
||||
سيؤدي هذا إلى تغيير مظهر ومميزات التطبيق، ولكن قد تحدث تأثيرات جانبية غير معروفة.
|
||||
|
||||
إذا تم إيقاف تشغيله لاحقًا، من المستحسن مسح بيانات التطبيق لمنع حدوث أخطاء في واجهة المستخدم."</string>
|
||||
<!-- It is ideal, but not required, if the text here appears is alphabetically after the text used for 'revanced_spoof_app_version_title'.
|
||||
This is because the 'General layout' menu uses alphabetic sorting, and it functionally works better if the spoof target selector appears below the 'Spoof app version' UI switch -->
|
||||
<string name="revanced_spoof_app_version_target_title">الهدف من تغيير إصدار التطبيق</string>
|
||||
@@ -998,6 +1049,12 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_disable_resuming_shorts_player_summary_on">لن يتم استئناف تشغيل مشغل Shorts عند بدء تشغيل التطبيق</string>
|
||||
<string name="revanced_disable_resuming_shorts_player_summary_off">سيتم استئناف تشغيل مشغل Shorts عند بدء تشغيل التطبيق</string>
|
||||
</patch>
|
||||
<patch id="layout.shortsplayer.shortsPlayerTypePatch">
|
||||
<string name="revanced_shorts_player_type_title">فتح مقاطع الـShorts باستخدام</string>
|
||||
<string name="revanced_shorts_player_type_shorts">مشغل Shorts</string>
|
||||
<string name="revanced_shorts_player_type_regular_player">مشغل عادي</string>
|
||||
<string name="revanced_shorts_player_type_regular_player_fullscreen">شاشة كاملة - مشغل عادي</string>
|
||||
</patch>
|
||||
<patch id="layout.shortsautoplay.shortsAutoplayPatch">
|
||||
<string name="revanced_shorts_autoplay_title">التشغيل التلقائي لفيديوهات Shorts</string>
|
||||
<string name="revanced_shorts_autoplay_summary_on">سيتم تشغيل فيديوهات Shorts تلقائيًا</string>
|
||||
@@ -1017,7 +1074,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_miniplayer_screen_summary">تغيير نمط المشغل المصغر داخل التطبيق</string>
|
||||
<string name="revanced_miniplayer_type_title">نوع المشغل المصغر</string>
|
||||
<string name="revanced_miniplayer_type_entry_0">معطّل</string>
|
||||
<string name="revanced_miniplayer_type_entry_1">الأصلي</string>
|
||||
<string name="revanced_miniplayer_type_entry_1">إفتراضي</string>
|
||||
<string name="revanced_miniplayer_type_entry_2">الحد الأدنى</string>
|
||||
<string name="revanced_miniplayer_type_entry_3">الجهاز اللوحي</string>
|
||||
<string name="revanced_miniplayer_type_entry_4">حديث 1</string>
|
||||
@@ -1027,19 +1084,28 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_miniplayer_rounded_corners_summary_on">الزوايا مستديرة</string>
|
||||
<string name="revanced_miniplayer_rounded_corners_summary_off">الزوايا مربعة</string>
|
||||
<string name="revanced_miniplayer_double_tap_action_title">تمكين النقر المزدوج والضغط لتغيير الحجم</string>
|
||||
<string name="revanced_miniplayer_double_tap_action_summary_on">تم تمكين إجراء الضغط المزدوج والضغط لتغيير الحجم\n\n• النقر المزدوج لزيادة حجم المشغل المصغر\n• النقر المزدوج مرة أخرى لاستعادة الحجم الأصلي</string>
|
||||
<string name="revanced_miniplayer_double_tap_action_summary_on">"تم تمكين إجراء الضغط المزدوج والضغط لتغيير الحجم
|
||||
|
||||
• النقر المزدوج لزيادة حجم المشغل المصغر
|
||||
• النقر المزدوج مرة أخرى لاستعادة الحجم الأصلي"</string>
|
||||
<string name="revanced_miniplayer_double_tap_action_summary_off">إجراء النقر المزدوج والضغط لتغيير الحجم معطل</string>
|
||||
<string name="revanced_miniplayer_drag_and_drop_title">تمكين السحب والإفلات</string>
|
||||
<string name="revanced_miniplayer_drag_and_drop_summary_on">السحب والإفلات مفعلان\n\nيمكن سحب المشغل المصغر إلى أي زاوية من الشاشة</string>
|
||||
<string name="revanced_miniplayer_drag_and_drop_summary_on">"السحب والإفلات مفعلان
|
||||
|
||||
يمكن سحب المشغل المصغر إلى أي زاوية من الشاشة"</string>
|
||||
<string name="revanced_miniplayer_drag_and_drop_summary_off">تم تعطيل السحب والإفلات</string>
|
||||
<string name="revanced_miniplayer_horizontal_drag_title">تمكين إيماءة السحب الأفقية</string>
|
||||
<string name="revanced_miniplayer_horizontal_drag_summary_on">تم تمكين إيماءة السحب الأفقية\n\nيمكن سحب المشغل المصغر خارج الشاشة إلى اليسار أو اليمين</string>
|
||||
<string name="revanced_miniplayer_horizontal_drag_summary_on">"تم تمكين إيماءة السحب الأفقية
|
||||
|
||||
يمكن سحب المشغل المصغر خارج الشاشة إلى اليسار أو اليمين"</string>
|
||||
<string name="revanced_miniplayer_horizontal_drag_summary_off">تم تعطيل إيماءة السحب الأفقية</string>
|
||||
<string name="revanced_miniplayer_hide_expand_close_title">إخفاء زر الإغلاق</string>
|
||||
<string name="revanced_miniplayer_hide_expand_close_summary_on">تم إخفاء زر الإغلاق</string>
|
||||
<string name="revanced_miniplayer_hide_expand_close_summary_off">يتم عرض زر الإغلاق</string>
|
||||
<string name="revanced_miniplayer_hide_expand_close_legacy_title">إخفاء أزرار التوسيع والإغلاق</string>
|
||||
<string name="revanced_miniplayer_hide_expand_close_legacy_summary_on">تم إخفاء الأزرار\n\nمرر للتوسيع أو الإغلاق</string>
|
||||
<string name="revanced_miniplayer_hide_expand_close_legacy_summary_on">"تم إخفاء الأزرار
|
||||
|
||||
مرر للتوسيع أو الإغلاق"</string>
|
||||
<string name="revanced_miniplayer_hide_expand_close_legacy_summary_off">يتم عرض أزرار التوسيع والإغلاق</string>
|
||||
<string name="revanced_miniplayer_hide_subtext_title">إخفاء النصوص الفرعية</string>
|
||||
<string name="revanced_miniplayer_hide_subtext_summary_on">تم إخفاء النصوص الفرعية</string>
|
||||
@@ -1070,7 +1136,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<patch id="layout.thumbnails.bypassImageRegionRestrictionsPatch">
|
||||
<string name="revanced_bypass_image_region_restrictions_title">تجاوز قيود منطقة الصورة</string>
|
||||
<string name="revanced_bypass_image_region_restrictions_summary_on">استخدام مضيف الصورة yt4.ggpht.com</string>
|
||||
<string name="revanced_bypass_image_region_restrictions_summary_off">استخدام مضيف الصور الأصلي\n\nتمكين هذا يمكن إصلاح الصور المفقودة التي يتم حظرها في بعض المناطق</string>
|
||||
<string name="revanced_bypass_image_region_restrictions_summary_off">"استخدام مضيف الصور الأصلي
|
||||
|
||||
تمكين هذا يمكن إصلاح الصور المفقودة التي يتم حظرها في بعض المناطق"</string>
|
||||
</patch>
|
||||
<patch id="layout.thumbnails.alternativeThumbnailsPatch">
|
||||
<!-- 'Home' should be translated using the same localized wording YouTube displays for the home tab. -->
|
||||
@@ -1085,12 +1153,16 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_alt_thumbnail_options_entry_2">DeArrow & المصّغرات الأصلية</string>
|
||||
<string name="revanced_alt_thumbnail_options_entry_3">DeArrow & اللقطات الثابتة</string>
|
||||
<string name="revanced_alt_thumbnail_options_entry_4">اللقطات الثابتة</string>
|
||||
<string name="revanced_alt_thumbnail_dearrow_about_summary">يوف DeArrow مصغرات فيديو من مصادر جماعية لفيديوهات YouTube. هذه المصغرات غالبا ما تكون أكثر صلة من تلك المقدمة من YouTube\n\nإذا تم تفعيلها، سيتم إرسال روابط الفيديو إلى خادم API ولن يتم إرسال أي بيانات أخرى. إذا كان الفيديو لا يحتوي على مصغرات DArrow ، سيتم عرض المقاطع الأصلية أو اللقطات الثابتة\n\nاضغط هنا لمعرفة المزيد عن DArrow</string>
|
||||
<string name="revanced_alt_thumbnail_dearrow_about_summary">"يوفر DeArrow مصغرات فيديو من مصادر جماعية لفيديوهات YouTube. هذه المصغرات غالبا ما تكون أكثر صلة من تلك المقدمة من YouTube
|
||||
|
||||
إذا تم تفعيلها، سيتم إرسال روابط الفيديو إلى خادم API ولن يتم إرسال أي بيانات أخرى. إذا كان الفيديو لا يحتوي على مصغرات DArrow، سيتم عرض المقاطع الأصلية أو اللقطات الثابتة
|
||||
|
||||
اضغط هنا لمعرفة المزيد عن DArrow"</string>
|
||||
<string name="revanced_alt_thumbnail_dearrow_connection_toast_title">عرض ملاحظة إذا كان API غير متاح</string>
|
||||
<string name="revanced_alt_thumbnail_dearrow_connection_toast_summary_on">يتم عرض ملاحظة إذا كان DeArrow غير متوفر</string>
|
||||
<string name="revanced_alt_thumbnail_dearrow_connection_toast_summary_off">لا يتم عرض ملاحظة إذا كان DeArrow غير متوفر</string>
|
||||
<string name="revanced_alt_thumbnail_dearrow_api_url_title">DeArrow API endpoint</string>
|
||||
<string name="revanced_alt_thumbnail_dearrow_api_url_summary">The URL of the DeArrow thumbnail cache endpointThe URL of the DeArrow thumbnail cache endpoint</string>
|
||||
<string name="revanced_alt_thumbnail_dearrow_api_url_summary">The URL of the DeArrow thumbnail cache endpoint</string>
|
||||
<string name="revanced_alt_thumbnail_stills_about_title">لقطات الفيديو الثابتة</string>
|
||||
<string name="revanced_alt_thumbnail_stills_about_summary">يتم التقاط اللقطات الثابتة من بداية/وسط/نهاية كل فيديو. هذه الصور مدمجة في YouTube ولا يتم استخدام أي واجهة برمجة تطبيقات خارجية</string>
|
||||
<string name="revanced_alt_thumbnail_stills_fast_title">استخدم اللقطات الثابتة السريعة</string>
|
||||
@@ -1124,8 +1196,12 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
</patch>
|
||||
<patch id="misc.dimensions.spoof.spoofDeviceDimensionsPatch">
|
||||
<string name="revanced_spoof_device_dimensions_title">محاكاة أبعاد الجهاز</string>
|
||||
<string name="revanced_spoof_device_dimensions_summary_on">تم محاكاة أبعاد الجهاز\n\nقد يتم فتح قفل جودة الفيديو العالية ولكن قد تواجه تقطعًا في تشغيل الفيديو وعمر بطارية أسوأ وتأثيرات جانبية غير معروفة</string>
|
||||
<string name="revanced_spoof_device_dimensions_summary_off">أبعاد الجهاز غير محاكاة\n\nيمكن أن يؤدي تفعيل هذا إلى فتح جودة أعلى للفيديو</string>
|
||||
<string name="revanced_spoof_device_dimensions_summary_on">"تم محاكاة أبعاد الجهاز
|
||||
|
||||
قد يتم فتح قفل جودة الفيديو العالية ولكن قد تواجه تقطعًا في تشغيل الفيديو وعمر بطارية أسوأ وتأثيرات جانبية غير معروفة"</string>
|
||||
<string name="revanced_spoof_device_dimensions_summary_off">"أبعاد الجهاز غير محاكاة
|
||||
|
||||
يمكن أن يؤدي تفعيل هذا إلى فتح جودة أعلى للفيديو"</string>
|
||||
<string name="revanced_spoof_device_dimensions_user_dialog_message">قد يؤدي تمكين هذا إلى تباطؤ تشغيل الفيديو وتدهور عمر البطارية وآثار جانبية غير معروفة.</string>
|
||||
</patch>
|
||||
<patch id="misc.gms.gmsCoreSupportResourcePatch">
|
||||
@@ -1152,6 +1228,11 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_disable_zoom_haptics_summary_on">تم تعطيل الاهتزاز</string>
|
||||
<string name="revanced_disable_zoom_haptics_summary_off">تم تمكين الاهتزاز</string>
|
||||
</patch>
|
||||
<patch id="video.audio.forceOriginalAudioPatch">
|
||||
<string name="revanced_force_original_audio_title">فرض الصوت الأصلي</string>
|
||||
<string name="revanced_force_original_audio_summary_on">استخدام الصوت الأصلي</string>
|
||||
<string name="revanced_force_original_audio_summary_off">استخدام الصوت الافتراضي</string>
|
||||
</patch>
|
||||
<patch id="video.quality.rememberVideoQualityPatch">
|
||||
<!-- Translations should use the same text as revanced_custom_playback_speeds_auto -->
|
||||
<string name="revanced_video_quality_default_entry_1">تلقائي</string>
|
||||
@@ -1175,13 +1256,13 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_custom_speed_menu_summary_off">لا يتم عرض قائمة سرعة التشغيل المخصصة</string>
|
||||
<string name="revanced_custom_playback_speeds_title">سرعة التشغيل المخصصة</string>
|
||||
<string name="revanced_custom_playback_speeds_summary">إضافة أو تغيير سرعة التشغيل المخصصة</string>
|
||||
<string name="revanced_custom_playback_speeds_invalid">يجب أن تكون السرعة المخصصة أقل من %s. باستخدام القيم الافتراضية.</string>
|
||||
<string name="revanced_custom_playback_speeds_parse_exception">سرعة تشغيل مخصصة غير صالحة. استخدام القيم الافتراضية.</string>
|
||||
<string name="revanced_custom_playback_speeds_invalid">يجب أن تكون سرعات التشغيل المخصصة أقل من %s</string>
|
||||
<string name="revanced_custom_playback_speeds_parse_exception">سرعة التشغيل المخصصة غير صالحة</string>
|
||||
<string name="revanced_custom_playback_speeds_auto">تلقائي</string>
|
||||
</patch>
|
||||
<patch id="video.speed.remember.rememberPlaybackSpeedPatch">
|
||||
<string name="revanced_remember_playback_speed_last_selected_title">تذكر التغيرات في سرعة التشغيل</string>
|
||||
<string name="revanced_remember_playback_speed_last_selected_summary_on">تطبيق تغييرات سرعة التشغيل على جميع مقاطع الفيديو</string>
|
||||
<string name="revanced_remember_playback_speed_last_selected_summary_on">تطبيق تغييرات سرعة التشغيل على جميع الفيديوهات</string>
|
||||
<string name="revanced_remember_playback_speed_last_selected_summary_off">تطبيق تغييرات سرعة التشغيل فقط على الفيديو الحالي</string>
|
||||
<string name="revanced_playback_speed_default_title">سرعة التشغيل الافتراضية</string>
|
||||
<string name="revanced_remember_playback_speed_toast">تغيير السرعة الافتراضية إلى: %s</string>
|
||||
@@ -1192,81 +1273,87 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_restore_old_video_quality_menu_summary_off">لا يتم عرض قائمة جودة الفيديو القديمة</string>
|
||||
</patch>
|
||||
<patch id="interaction.seekbar.enableSlideToSeekPatch">
|
||||
<string name="revanced_slide_to_seek_title">تمكين Slide to Seek</string>
|
||||
<string name="revanced_slide_to_seek_summary_on">تم تمكين Slide to Seek</string>
|
||||
<string name="revanced_slide_to_seek_summary_off">تم تعطيل Slide to Seek</string>
|
||||
<string name="revanced_slide_to_seek_title">تمكين التمرير للتقديم أو الترجيع</string>
|
||||
<string name="revanced_slide_to_seek_summary_on">تم تمكين التمرير للتقديم أو الترجيع</string>
|
||||
<string name="revanced_slide_to_seek_summary_off">تم تعطيل التمرير للتقديم أو الترجيع</string>
|
||||
</patch>
|
||||
<patch id="misc.fix.playback.spoofVideoStreamsPatch">
|
||||
<string name="revanced_spoof_video_streams_screen_title">Spoof Video Streams</string>
|
||||
<string name="revanced_spoof_video_streams_screen_summary">تزييف تدفقات الفيديو الخاصة بالعميل لمنع حدوث مشكلات أثناء التشغيل</string>
|
||||
<string name="revanced_spoof_video_streams_title">Spoof Video Streams</string>
|
||||
<string name="revanced_spoof_video_streams_summary_on">يتم تزييف تدفقات الفيديو</string>
|
||||
<string name="revanced_spoof_video_streams_summary_off">لا يتم تزييف تدفقات الفيديو\n\nقد لا يعمل تشغيل الفيديو</string>
|
||||
<string name="revanced_spoof_video_streams_summary_off">"لا يتم تزييف تدفقات الفيديو
|
||||
|
||||
قد لا يعمل تشغيل الفيديو"</string>
|
||||
<string name="revanced_spoof_video_streams_user_dialog_message">إيقاف تشغيل هذا الإعداد قد يسبب مشاكل في تشغيل الفيديو.</string>
|
||||
<string name="revanced_spoof_video_streams_client_title">العميل الافتراضي</string>
|
||||
<string name="revanced_spoof_video_streams_ios_force_avc_title">فرض AVC (H.264)</string>
|
||||
<string name="revanced_spoof_video_streams_ios_force_avc_summary_on">كود الفيديو مرغم على AVC (H.264)</string>
|
||||
<string name="revanced_spoof_video_streams_ios_force_avc_summary_off">يتم تحديد رمز الفيديو تلقائياً</string>
|
||||
<string name="revanced_spoof_video_streams_ios_force_avc_user_dialog_message">تمكين هذا قد يحسّن عمر البطارية وإصلاح تشغيل التشغيل.\n\nAVC لها حد أقصى قدره 1080p، رمز الصوت Opus غير متوفر. وسيستخدم تشغيل الفيديو بيانات إنترنت أكثر من VP9 أو AV1.</string>
|
||||
<string name="revanced_spoof_video_streams_ios_force_avc_summary_on">تم فرض ترميز الفيديو على AVC (H.264)</string>
|
||||
<string name="revanced_spoof_video_streams_ios_force_avc_summary_off">يتم تحديد ترميز الفيديو تلقائيًا</string>
|
||||
<string name="revanced_spoof_video_streams_ios_force_avc_user_dialog_message">"قد يؤدي تمكين هذا إلى تحسين عمر البطارية وإصلاح مشكلة تقطيع التشغيل.
|
||||
|
||||
يتمتع تنسيق AVC بدقة قصوى تبلغ 1080P، برنامج ترميز الصوت Opus غير متوفر، وسيستخدم تشغيل الفيديو المزيد من بيانات الإنترنت مقارنةً بتنسيق VP9 أو AV1."</string>
|
||||
<string name="revanced_spoof_video_streams_about_ios_title">التأثيرات الجانبية لمحاكاة iOS</string>
|
||||
<string name="revanced_spoof_video_streams_about_ios_summary">• قد لا يتم تشغيل فيديوهات الأطفال الخاصة\n• تبدأ البثوث المباشرة من البداية\n• قد تنتهي الفيديوهات قبل النهاية بثانية واحدة</string>
|
||||
<string name="revanced_spoof_video_streams_about_ios_summary">"• لا يمكن تشغيل مقاطع فيديو الأطفال الخاصة.
|
||||
• تنتهي مقاطع الفيديو مبكرًا بمقدار 1 ثانية."</string>
|
||||
<string name="revanced_spoof_video_streams_about_android_vr_title">التأثيرات الجانبية لمحاكاة Android VR</string>
|
||||
<string name="revanced_spoof_video_streams_about_android_vr_summary">• قد لا يتم تشغيل فيديوهات الأطفال\n• قائمة المقطع الصوتي مفقودة\n• مستوى الصوت الثابت غير متوفر</string>
|
||||
<string name="revanced_spoof_video_streams_language_">يتم تزييف تدفقات الفيديو</string>
|
||||
<string name="revanced_spoof_video_streams_language_title">لغة البث الصوتي المفضلة</string>
|
||||
<string name="revanced_spoof_video_streams_about_android_vr_summary">"• قد لا يتم تشغيل فيديوهات الأطفال
|
||||
• تبدأ البثوث المباشرة من البداية
|
||||
• قد تنتهي الفيديوهات قبل النهاية بثانية واحدة"</string>
|
||||
<string name="revanced_spoof_video_streams_language_title">لغة البث الصوتي الافتراضية</string>
|
||||
<string name="revanced_spoof_video_streams_language_DEFAULT">لغة التطبيق</string>
|
||||
<string name="revanced_spoof_video_streams_language_AR">العربية</string>
|
||||
<string name="revanced_spoof_video_streams_language_AZ">الأذربيجانية</string>
|
||||
<string name="revanced_spoof_video_streams_language_BG">البلغاري</string>
|
||||
<string name="revanced_spoof_video_streams_language_BN">البنغالي</string>
|
||||
<string name="revanced_spoof_video_streams_language_CA">الكاتالونية</string>
|
||||
<string name="revanced_spoof_video_streams_language_CS">التشيكية</string>
|
||||
<string name="revanced_spoof_video_streams_language_DA">الدانماركية</string>
|
||||
<string name="revanced_spoof_video_streams_language_DE">الألمانية</string>
|
||||
<string name="revanced_spoof_video_streams_language_EL">اليونانية</string>
|
||||
<string name="revanced_spoof_video_streams_language_EN">الإنجليزية</string>
|
||||
<string name="revanced_spoof_video_streams_language_ES">الإسبانية</string>
|
||||
<string name="revanced_spoof_video_streams_language_ET">الإستونية</string>
|
||||
<string name="revanced_spoof_video_streams_language_FA">الفارسية</string>
|
||||
<string name="revanced_spoof_video_streams_language_FI">الفنلندية</string>
|
||||
<string name="revanced_spoof_video_streams_language_FR">الفرنسية</string>
|
||||
<string name="revanced_spoof_video_streams_language_AZ">Azerbaijani</string>
|
||||
<string name="revanced_spoof_video_streams_language_BG">Bulgarian</string>
|
||||
<string name="revanced_spoof_video_streams_language_BN">Bengali</string>
|
||||
<string name="revanced_spoof_video_streams_language_CA">Catalan</string>
|
||||
<string name="revanced_spoof_video_streams_language_CS">Czech</string>
|
||||
<string name="revanced_spoof_video_streams_language_DA">Danish</string>
|
||||
<string name="revanced_spoof_video_streams_language_DE">German</string>
|
||||
<string name="revanced_spoof_video_streams_language_EL">Greek</string>
|
||||
<string name="revanced_spoof_video_streams_language_EN">English</string>
|
||||
<string name="revanced_spoof_video_streams_language_ES">Spanish</string>
|
||||
<string name="revanced_spoof_video_streams_language_ET">Estonian</string>
|
||||
<string name="revanced_spoof_video_streams_language_FA">فارسى</string>
|
||||
<string name="revanced_spoof_video_streams_language_FI">Finnish</string>
|
||||
<string name="revanced_spoof_video_streams_language_FR">French</string>
|
||||
<string name="revanced_spoof_video_streams_language_GU">Gujarati</string>
|
||||
<string name="revanced_spoof_video_streams_language_HI">الهندية</string>
|
||||
<string name="revanced_spoof_video_streams_language_HR">الكرواتية</string>
|
||||
<string name="revanced_spoof_video_streams_language_HU">الهنغارية</string>
|
||||
<string name="revanced_spoof_video_streams_language_ID">الإندونيسية</string>
|
||||
<string name="revanced_spoof_video_streams_language_IT">الإيطالية</string>
|
||||
<string name="revanced_spoof_video_streams_language_JA">يابانية</string>
|
||||
<string name="revanced_spoof_video_streams_language_HI">Hindi</string>
|
||||
<string name="revanced_spoof_video_streams_language_HR">Croatian</string>
|
||||
<string name="revanced_spoof_video_streams_language_HU">Hungarian</string>
|
||||
<string name="revanced_spoof_video_streams_language_ID"> Indonesian</string>
|
||||
<string name="revanced_spoof_video_streams_language_IT">Italian</string>
|
||||
<string name="revanced_spoof_video_streams_language_JA">Japanese</string>
|
||||
<string name="revanced_spoof_video_streams_language_KK">Kazakh</string>
|
||||
<string name="revanced_spoof_video_streams_language_KO">الكورية</string>
|
||||
<string name="revanced_spoof_video_streams_language_LT">ليتوانية</string>
|
||||
<string name="revanced_spoof_video_streams_language_LV">لاتفيا</string>
|
||||
<string name="revanced_spoof_video_streams_language_MK">مقدونية</string>
|
||||
<string name="revanced_spoof_video_streams_language_MN">منغولي</string>
|
||||
<string name="revanced_spoof_video_streams_language_MR">الماراثي</string>
|
||||
<string name="revanced_spoof_video_streams_language_MS">الملايو</string>
|
||||
<string name="revanced_spoof_video_streams_language_KO">Korean</string>
|
||||
<string name="revanced_spoof_video_streams_language_LT">Lithuanian</string>
|
||||
<string name="revanced_spoof_video_streams_language_LV">Latvian</string>
|
||||
<string name="revanced_spoof_video_streams_language_MK">Macedonian</string>
|
||||
<string name="revanced_spoof_video_streams_language_MN">Mongolian</string>
|
||||
<string name="revanced_spoof_video_streams_language_MR">Marathi</string>
|
||||
<string name="revanced_spoof_video_streams_language_MS">Malay</string>
|
||||
<string name="revanced_spoof_video_streams_language_MY">Burmese</string>
|
||||
<string name="revanced_spoof_video_streams_language_NL">الهولندية</string>
|
||||
<string name="revanced_spoof_video_streams_language_NL">Dutch</string>
|
||||
<string name="revanced_spoof_video_streams_language_OR">Odia</string>
|
||||
<string name="revanced_spoof_video_streams_language_PA">Punjabi</string>
|
||||
<string name="revanced_spoof_video_streams_language_PL">البولندية</string>
|
||||
<string name="revanced_spoof_video_streams_language_PT_BR">البرتغالية (البرازيل)</string>
|
||||
<string name="revanced_spoof_video_streams_language_PT_PT">البرتغالية (البرتغال)</string>
|
||||
<string name="revanced_spoof_video_streams_language_RO">الرومانية</string>
|
||||
<string name="revanced_spoof_video_streams_language_RU">الروسية</string>
|
||||
<string name="revanced_spoof_video_streams_language_SK">السلوفاكية</string>
|
||||
<string name="revanced_spoof_video_streams_language_PL">Polish</string>
|
||||
<string name="revanced_spoof_video_streams_language_PT_BR">Portuguese (Brazil)</string>
|
||||
<string name="revanced_spoof_video_streams_language_PT_PT">Portuguese (Portugal)</string>
|
||||
<string name="revanced_spoof_video_streams_language_RO">Romanian</string>
|
||||
<string name="revanced_spoof_video_streams_language_RU">Russian</string>
|
||||
<string name="revanced_spoof_video_streams_language_SK">Slovak</string>
|
||||
<string name="revanced_spoof_video_streams_language_SL">Slovene</string>
|
||||
<string name="revanced_spoof_video_streams_language_SR">الصربية</string>
|
||||
<string name="revanced_spoof_video_streams_language_SV">السويدية</string>
|
||||
<string name="revanced_spoof_video_streams_language_SW">سواحيلية</string>
|
||||
<string name="revanced_spoof_video_streams_language_SR">Serbian</string>
|
||||
<string name="revanced_spoof_video_streams_language_SV">Swedish</string>
|
||||
<string name="revanced_spoof_video_streams_language_SW">Swahili</string>
|
||||
<string name="revanced_spoof_video_streams_language_TA">Tamil</string>
|
||||
<string name="revanced_spoof_video_streams_language_TE">Telugu</string>
|
||||
<string name="revanced_spoof_video_streams_language_TH">التايلندية</string>
|
||||
<string name="revanced_spoof_video_streams_language_TR">تركية</string>
|
||||
<string name="revanced_spoof_video_streams_language_UK">أوكراني</string>
|
||||
<string name="revanced_spoof_video_streams_language_UR">الأردو</string>
|
||||
<string name="revanced_spoof_video_streams_language_TH">Thai</string>
|
||||
<string name="revanced_spoof_video_streams_language_TR">Turkish</string>
|
||||
<string name="revanced_spoof_video_streams_language_UK">Ukrainian</string>
|
||||
<string name="revanced_spoof_video_streams_language_UR">Urdu</string>
|
||||
<string name="revanced_spoof_video_streams_language_VI">Vietnamese</string>
|
||||
<string name="revanced_spoof_video_streams_language_ZH">الصينية</string>
|
||||
<string name="revanced_spoof_video_streams_language_ZH">Chinese</string>
|
||||
</patch>
|
||||
</app>
|
||||
<app id="twitch">
|
||||
|
||||
@@ -1,34 +1,23 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
|
||||
Note: All strings must have a unique path, even if the same string is declared in two different apps.
|
||||
This is because Crowdin requires temporarily flattening this file and removing the <app> and <patch> elements.
|
||||
All strings must have a unique path, even if the same string is declared in two different apps.
|
||||
This is because Crowdin requires temporarily flattening this file and removing the <app> and <patch> elements.
|
||||
|
||||
# General guidelines and information for translating
|
||||
|
||||
## Strings parameters can be reordered to allow more flexible translations if the grammar should be changed.
|
||||
Strings with new lines must be raw strings where they're wrapped in quotes and new lines are not encoded.
|
||||
Raw strings still requires escaping embedded double quotes but escaping embedded single quotes is optional.
|
||||
|
||||
For example, the patches string:
|
||||
<string name="revanced_patches_string">You will arrive at %1$s in %2$s hours from now</string>
|
||||
Could be translated to another language using a rearranged grammar:
|
||||
<string name="revanced_patches_string">You will arrive %2$s hours from now at %1$s</string>
|
||||
Raw strings are required because Crowdin AI translations regularly gets confused and
|
||||
replace \n with an encoded new line character.
|
||||
|
||||
For Manager strings:
|
||||
You will arrive at ${destination} in ${count} hours from now
|
||||
Could be rearranged by changing the order of the ${} parameters:
|
||||
You will arrive ${count} hours from now at ${destination}
|
||||
Bad:
|
||||
<string name="summary_key">First \'item\' text\nSecond \"item\" text</string>
|
||||
|
||||
Reordering is particularly relevant when translating into right to left languages, or for any language with grammar that is noticeably different from English.
|
||||
Good:
|
||||
<string name="summary_key">"First 'item' text
|
||||
Second \"item\" text"</string>
|
||||
|
||||
## Single and double quotation marks must be escaped for patch strings (Manager does not require escaping any quotes).
|
||||
|
||||
All _patches_ single and double quotation marks must be escaped as \" or \'
|
||||
Forgetting to do this will cause that string to appear in app with no quotation characters.
|
||||
|
||||
Correct:
|
||||
<string name="revanced_string">You\'re correct. This is the \"correct\" way and this text will appear as expected in the app</string>
|
||||
Not correct:
|
||||
<string name="revanced_string">You're not correct. This is not the "correct" way and this text will not appear as expected the in app</string>
|
||||
-->
|
||||
<resources>
|
||||
<app id="shared">
|
||||
@@ -175,6 +164,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
</patch>
|
||||
<patch id="layout.startupshortsreset.disableResumingShortsOnStartupPatch">
|
||||
</patch>
|
||||
<patch id="layout.shortsplayer.shortsPlayerTypePatch">
|
||||
</patch>
|
||||
<patch id="layout.shortsautoplay.shortsAutoplayPatch">
|
||||
</patch>
|
||||
<patch id="layout.tablet.enableTabletLayoutPatch">
|
||||
@@ -194,8 +185,10 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<!-- Translations of this should not be longer than the original English text, otherwise the text can be clipped and not entirely shown. -->
|
||||
</patch>
|
||||
<patch id="misc.announcements.announcementsPatch">
|
||||
<string name="revanced_announcements_dialog_dismiss">খাৰিজ কৰক</string>
|
||||
</patch>
|
||||
<patch id="misc.dns.checkWatchHistoryDomainNameResolutionPatch">
|
||||
<string name="revanced_check_watch_history_domain_name_dialog_title">সকীয়নি</string>
|
||||
</patch>
|
||||
<patch id="misc.autorepeat.autoRepeatPatch">
|
||||
</patch>
|
||||
@@ -211,6 +204,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
</patch>
|
||||
<patch id="misc.zoomhaptics.zoomHapticsPatch">
|
||||
</patch>
|
||||
<patch id="video.audio.forceOriginalAudioPatch">
|
||||
</patch>
|
||||
<patch id="video.quality.rememberVideoQualityPatch">
|
||||
<!-- Translations should use the same text as revanced_custom_playback_speeds_auto -->
|
||||
</patch>
|
||||
|
||||
@@ -1,34 +1,23 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
|
||||
Note: All strings must have a unique path, even if the same string is declared in two different apps.
|
||||
This is because Crowdin requires temporarily flattening this file and removing the <app> and <patch> elements.
|
||||
All strings must have a unique path, even if the same string is declared in two different apps.
|
||||
This is because Crowdin requires temporarily flattening this file and removing the <app> and <patch> elements.
|
||||
|
||||
# General guidelines and information for translating
|
||||
|
||||
## Strings parameters can be reordered to allow more flexible translations if the grammar should be changed.
|
||||
Strings with new lines must be raw strings where they're wrapped in quotes and new lines are not encoded.
|
||||
Raw strings still requires escaping embedded double quotes but escaping embedded single quotes is optional.
|
||||
|
||||
For example, the patches string:
|
||||
<string name="revanced_patches_string">You will arrive at %1$s in %2$s hours from now</string>
|
||||
Could be translated to another language using a rearranged grammar:
|
||||
<string name="revanced_patches_string">You will arrive %2$s hours from now at %1$s</string>
|
||||
Raw strings are required because Crowdin AI translations regularly gets confused and
|
||||
replace \n with an encoded new line character.
|
||||
|
||||
For Manager strings:
|
||||
You will arrive at ${destination} in ${count} hours from now
|
||||
Could be rearranged by changing the order of the ${} parameters:
|
||||
You will arrive ${count} hours from now at ${destination}
|
||||
Bad:
|
||||
<string name="summary_key">First \'item\' text\nSecond \"item\" text</string>
|
||||
|
||||
Reordering is particularly relevant when translating into right to left languages, or for any language with grammar that is noticeably different from English.
|
||||
Good:
|
||||
<string name="summary_key">"First 'item' text
|
||||
Second \"item\" text"</string>
|
||||
|
||||
## Single and double quotation marks must be escaped for patch strings (Manager does not require escaping any quotes).
|
||||
|
||||
All _patches_ single and double quotation marks must be escaped as \" or \'
|
||||
Forgetting to do this will cause that string to appear in app with no quotation characters.
|
||||
|
||||
Correct:
|
||||
<string name="revanced_string">You\'re correct. This is the \"correct\" way and this text will appear as expected in the app</string>
|
||||
Not correct:
|
||||
<string name="revanced_string">You're not correct. This is not the "correct" way and this text will not appear as expected the in app</string>
|
||||
-->
|
||||
<resources>
|
||||
<app id="shared">
|
||||
@@ -44,6 +33,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_check_environment_not_near_patch_time_invalid">APK quruluş tarixi pozulub</string>
|
||||
</patch>
|
||||
<patch id="misc.settings.settingsResourcePatch">
|
||||
<string name="revanced_settings_title">\"ReVanced\"</string>
|
||||
<string name="revanced_settings_confirm_user_dialog_title">Davam etmək istəyirsiniz?</string>
|
||||
<string name="revanced_settings_reset">Sıfırla</string>
|
||||
<string name="revanced_settings_restart_title">Yenilə və yenidən başlat</string>
|
||||
@@ -67,9 +57,17 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<!-- Translations of this should not be longer than the original English text, otherwise the text can be clipped and not entirely shown. -->
|
||||
<string name="gms_core_toast_not_installed_message">MicroG GmsCore quraşdırılmayıb. Bunu quraşdır.</string>
|
||||
<string name="gms_core_dialog_title">Fəaliyyət lazımdır</string>
|
||||
<string name="gms_core_dialog_not_whitelisted_not_allowed_in_background_message">MicroG GmsCore arxa planda işləməyə icazə almayıb.\n\nTelefonunuz üçün \"Tətbiqim bağlanılmasın\" bələdçisin izləyin və təlimatları MicroG quraşdırmasına tətbiq edin.\n\nBu tətbiq işləyən müddətdə tələb olunur.</string>
|
||||
<string name="gms_core_dialog_not_whitelisted_not_allowed_in_background_message">"MicroG GmsCore-un arxaplanda işləməsi üçün icazəsi yoxdur.
|
||||
|
||||
Telefonunuz üçün \"Tətbiqimi öldürmə\" bələdçisinə əməl edin və təlimatları MicroG quraşdırmanıza tətbiq edin.
|
||||
|
||||
Bu, tətbiqin işləməsi üçün tələb olunur."</string>
|
||||
<string name="gms_core_dialog_open_website_text">Veb saytı aç</string>
|
||||
<string name="gms_core_dialog_not_whitelisted_using_battery_optimizations_message">Problemlərin olmaması üçün MicroG GmsCore batareya optimallaşdırması qeyri-aktiv edilməlidir.\n\nDavam düyməsinə toxun və batareya optimallaşdırmasını qeyri-aktiv et.</string>
|
||||
<string name="gms_core_dialog_not_whitelisted_using_battery_optimizations_message">"Problemsiz işləməsi üçün MicroG GmsCore batareya optimallaşdırmaları sıradan çıxarılmalıdır.
|
||||
|
||||
MicroG üçün batareya optimallaşdırmasını sıradan çıxartmaq, batareya istifadəsinə mənfi təsir etməyəcək.
|
||||
|
||||
Davam düyməsinə toxunun və optimallaşdırma dəyişikliklərinə icazə verin."</string>
|
||||
<string name="gms_core_dialog_continue_text">Davam et</string>
|
||||
</patch>
|
||||
</app>
|
||||
@@ -84,7 +82,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_settings_screen_07_seekbar_title">Axtarış çubuğu</string>
|
||||
<string name="revanced_settings_screen_08_swipe_controls_title">Sürüşdürmə nəzarətçiləri</string>
|
||||
<string name="revanced_settings_screen_11_misc_title">Müxtəlif</string>
|
||||
<string name="revanced_settings_screen_12_video_title">Video</string>
|
||||
<string name="revanced_settings_screen_12_video_title">\"Video\"</string>
|
||||
</patch>
|
||||
<patch id="misc.backgroundplayback.backgroundPlaybackPatch">
|
||||
<string name="revanced_shorts_disable_background_playback_title">Shorts arxa plan oynatmasın bağla</string>
|
||||
@@ -106,7 +104,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_debug_toast_on_error_title">ReVanced xətasında ani bildiriş göstər</string>
|
||||
<string name="revanced_debug_toast_on_error_summary_on">Xəta baş verərsə bildiriş göstər</string>
|
||||
<string name="revanced_debug_toast_on_error_summary_off">Xəta baş verərsə bildiriş göstərmə</string>
|
||||
<string name="revanced_debug_toast_on_error_user_dialog_message">Ani bildirişləri söndürəndə, bütün ReVanced xəta bildirişləri gizlənir.\n\nGözlənilməz hallardan xəbərdar olmayacaqsınız.</string>
|
||||
<string name="revanced_debug_toast_on_error_user_dialog_message">"Xəta bildirişlərini söndürmək, bütün ReVanced xəta bildirişlərini gizlədir.
|
||||
|
||||
Gözlənilməz tədbirlər barədə bildiriş almayacaqsınız."</string>
|
||||
</patch>
|
||||
<patch id="layout.hide.general.hideLayoutComponentsPatch">
|
||||
<string name="revanced_disable_like_subscribe_glow_title">Bəyən/abunə ol düymə parıltısın söndür</string>
|
||||
@@ -125,7 +125,12 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_hide_channel_watermark_summary_on">Su nişanı gizlidir</string>
|
||||
<string name="revanced_hide_channel_watermark_summary_off">Su nişanı göstərilir</string>
|
||||
<string name="revanced_hide_horizontal_shelves_title">Üfüqi hissələri gizlət</string>
|
||||
<string name="revanced_hide_horizontal_shelves_summary_on">Belə hissələr gizlidir:\n• Son xəbərlər\n• Baxmağa davam et\n• Daha çox kanal kəşf et\n• Bazarlıq\n• Təkrar izlə</string>
|
||||
<string name="revanced_hide_horizontal_shelves_summary_on">"Rəflər gizlidir, məsələn:
|
||||
• Son xəbərlər
|
||||
• İzləməyə davam et
|
||||
• Daha çox kanallar kəşf edin
|
||||
• Alış-veriş
|
||||
• Yenidən izlə"</string>
|
||||
<string name="revanced_hide_horizontal_shelves_summary_off">Hissələr göstərilir</string>
|
||||
<!-- 'Join' should be translated using the same localized wording YouTube displays.
|
||||
This appears in the video player for certain videos. -->
|
||||
@@ -153,9 +158,6 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_hide_timed_reactions_title">Vaxtlı reaksiyaları gizlət</string>
|
||||
<string name="revanced_hide_timed_reactions_summary_on">Zamanlanmış reaksiyalar gizlədilir</string>
|
||||
<string name="revanced_hide_timed_reactions_summary_off">Zamanlanmış reaksiyalar göstərilir</string>
|
||||
<string name="revanced_hide_search_result_shelf_header_title">Axtarış nəticəsi bölmə başlığını gizlət</string>
|
||||
<string name="revanced_hide_search_result_shelf_header_summary_on">Bölmə başlığı gizlidir</string>
|
||||
<string name="revanced_hide_search_result_shelf_header_summary_off">Bölmə başlığı göstərilir</string>
|
||||
<string name="revanced_hide_channel_guidelines_title">Kanal təlimatlarını gizlət</string>
|
||||
<string name="revanced_hide_channel_guidelines_summary_on">Kanal təlimatları gizlidir</string>
|
||||
<string name="revanced_hide_channel_guidelines_summary_off">Kanal təlimatları göstərilir</string>
|
||||
@@ -252,6 +254,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_hide_filter_bar_feed_in_related_videos_summary_off">Əlaqəli videolarda görünür</string>
|
||||
<string name="revanced_comments_screen_title">Şərhlər</string>
|
||||
<string name="revanced_comments_screen_summary">Şərhlər bölməsi elementlərin gizlət və ya göstər</string>
|
||||
<string name="revanced_hide_comments_chat_summary_title">\'Söhbət yekunun\' gizlət </string>
|
||||
<string name="revanced_hide_comments_chat_summary_summary_on">\"Söhbət yekunu\" gizlədilir</string>
|
||||
<string name="revanced_hide_comments_chat_summary_summary_off">\'Söhbət yekunu\' göstərilir</string>
|
||||
<string name="revanced_hide_comments_by_members_header_title">\'Üzvlərin şərhləri\' başlığını gizlət</string>
|
||||
<string name="revanced_hide_comments_by_members_header_summary_on">\"Üzvlərin şərhləri\" başlığı gizlədilib</string>
|
||||
<string name="revanced_hide_comments_by_members_header_summary_off">\"Üzvlərin şərhləri\" başlığı göstərilir</string>
|
||||
@@ -274,7 +279,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_hide_doodles_title">YouTube Doodle-ları gizlət</string>
|
||||
<string name="revanced_hide_doodles_summary_on">Axtarış çubuğu Doodle-ları gizlidir</string>
|
||||
<string name="revanced_hide_doodles_summary_off">Axtarış çubuğu Doodle-ları göstərilir</string>
|
||||
<string name="revanced_hide_doodles_user_dialog_message">YouTube Doodle-lar hər il bir neçə gün göstərilir.\n\nDoodle hazırda bölgənizdə görünür və bu gizlətmə seçimi aktivdirsə, axtarış çubuğu altındakı filtr paneli də gizlədiləcək.</string>
|
||||
<string name="revanced_hide_doodles_user_dialog_message">"YouTube Doodles ilinin bir neçə günü göstərilir.
|
||||
|
||||
Əgər Doodle hazırda sizin bölgənizdə göstərilirsə və bu gizlətmə parametr açıqdırsa, axtarış çubuğunun altındakı filtr çubuğu da gizlənəcək."</string>
|
||||
<string name="revanced_custom_filter_screen_title">Şəxsi filtr</string>
|
||||
<string name="revanced_custom_filter_screen_summary">Fərdi filtrlər ilə elementləri gizlət</string>
|
||||
<string name="revanced_custom_filter_title">Fərdi filtri aktivləşdir</string>
|
||||
@@ -298,9 +305,18 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_hide_keyword_content_phrases_title">Gizlədiləcək açar sözlər</string>
|
||||
<!-- For localization it is preferred, but not required, if 'LeBlanc' is replaced with a localized name or a familiar word that has upper case letters in the middle of the word.
|
||||
This is because keywords can be in any language, and showing an example in the localized script helps convey this. -->
|
||||
<string name="revanced_hide_keyword_content_phrases_summary">Yeni sətirlərlə ayrılmış gizlədiləcək açar sözlər və frazalar\n\nAçar sözlər kanal adları və ya video adlarında göstərilən istənilən mətn ola bilər\n\nOrtada böyük hərf olan sözlər korpusla birlikdə qeyd edilməlidir (yəni: iPhone, TikTok, LeBlanc)</string>
|
||||
<string name="revanced_hide_keyword_content_phrases_summary">"Kənarda qoyulacaq açar sözlər və cümlələr, yeni sətirlərlə ayrılmışdır
|
||||
|
||||
Açar sözlər kanal adları və ya video başlıqlarında göstərilən hər hansı mətn ola bilər.
|
||||
|
||||
Orta hərfləri böyük hərflərlə olan sözlər böyük hərflərlə yazılmalıdır (məsələn: iPhone, TikTok, LeBlanc)"</string>
|
||||
<string name="revanced_hide_keyword_content_about_title">Açar söz filtrləməsi haqqında</string>
|
||||
<string name="revanced_hide_keyword_content_about_summary">Əsas səhifə/Abunəlik/Axtarış nəticələri açar söz ifadələrinə uyğunlaşan məzmunu gizlətmək üçün filtrlənir\n\nMəhdudiyyətlər\n• Shorts-lar kanal adına görə gizlənə bilməz\n• Bəzi UI hissəcikləri gizlədilə bilməz\n• Açar söz axtarışında nəticə olmaya bilər</string>
|
||||
<string name="revanced_hide_keyword_content_about_summary">"Ana səhifə/Abunəlik/Axtarış nəticələri açar söz ifadələrinə uyğun olan məzmunu gizlətmək üçün süzülür
|
||||
|
||||
Məhdudiyyətlər
|
||||
• Şortlar kanal adı ilə gizlənə bilməz
|
||||
• Bəzi UI komponentləri gizlənə bilməz
|
||||
• Açar söz axtarmaq heç bir nəticə verməyə bilər"</string>
|
||||
<string name="revanced_hide_keyword_content_about_whole_words_title">Bütün sözləri uyğunlaşdır</string>
|
||||
<!-- Translations _must_ use a localized example. For languages that do not use spaces between words (Chinese, Japanese, etc) the English AI example should be used since no localized examples exist. Or if using machine translations, or if nobody wants to think of a localized example, then the English 'ai' example should be left as-is. -->
|
||||
<string name="revanced_hide_keyword_content_about_whole_words_summary">Açar söz/frazanın qoşa dırnaqlarla əhatə olunması video adları və kanal adlarının qismən uyğunlaşmasına mane olacaq <br><br>Məsələn,<br><b>\"ai\"</b> videonu gizlədəcək:<b>How does AI work?</b><br> lakin gizlətməyəcək: Düzgün;<b>What does fair use mean?</b></string>
|
||||
@@ -316,7 +332,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_hide_general_ads_summary_on">Ümumi reklamlar gizlidir</string>
|
||||
<string name="revanced_hide_general_ads_summary_off">Ümumi reklamlar göstərilir</string>
|
||||
<string name="revanced_hide_fullscreen_ads_title">Tam ekran reklamlarını gizlət</string>
|
||||
<string name="revanced_hide_fullscreen_ads_summary_on">Tam ekran reklamları gizlidir\n\nBu funksiya yalnız köhnə cihazlar üçün əlçatandır</string>
|
||||
<string name="revanced_hide_fullscreen_ads_summary_on">"Tam ekran reklam gizlidir
|
||||
|
||||
Bu xüsusiyyət yalnız köhnə cihazlar üçün mövcuddur"</string>
|
||||
<string name="revanced_hide_fullscreen_ads_summary_off">Tam ekran reklamları göstərilir</string>
|
||||
<string name="revanced_hide_buttoned_ads_title">Düyməli reklamları gizlət</string>
|
||||
<string name="revanced_hide_buttoned_ads_summary_on">Düyməli reklamlar gizlədilir</string>
|
||||
@@ -490,11 +508,22 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_hide_subscriptions_button_summary_off">Abunəliklər düyməsi göstərilir</string>
|
||||
<!-- 'Notifications' should be translated using the same localized wording YouTube displays the tab. -->
|
||||
<string name="revanced_switch_create_with_notifications_button_title">\"Yarat\"ı \"Bildirişlər\" ilə dəyişdir</string>
|
||||
<string name="revanced_switch_create_with_notifications_button_summary_on">Yarat düyməsi Bildirişlər düyməsi ilə dəyişdirilir\n\nQeyd: Bunu aktivləşdirmə video reklamları da məcburən gizlədir</string>
|
||||
<string name="revanced_switch_create_with_notifications_button_summary_on">"Yarat düyməsi Bildirişlər düyməsi ilə dəyişdirilir
|
||||
|
||||
Qeyd: Bunu aktivləşdirmək video reklamları da məcburi olaraq gizlədir"</string>
|
||||
<string name="revanced_switch_create_with_notifications_button_summary_off">\"Yarat\" düyməsi, \"Bildirişlər\" düyməsi ilə dəyişdirilmir</string>
|
||||
<string name="revanced_hide_navigation_button_labels_title">Fəaliyyət düymə etiketlərini gizlət</string>
|
||||
<string name="revanced_hide_navigation_button_labels_summary_on">Etiketlər gizlidir</string>
|
||||
<string name="revanced_hide_navigation_button_labels_summary_off">Etiketlər göstərilir</string>
|
||||
<string name="revanced_disable_translucent_status_bar_title">Yarımşəffaf status barı deaktiv et</string>
|
||||
<string name="revanced_disable_translucent_status_bar_summary_on">Status çubuğu şəffaf deyil</string>
|
||||
<string name="revanced_disable_translucent_status_bar_summary_off">Status çubuğu şəffaf və ya yarı şəffaf</string>
|
||||
<string name="revanced_disable_translucent_navigation_bar_light_title">Açıq yarımşəffaf barı deaktiv et</string>
|
||||
<string name="revanced_disable_translucent_navigation_bar_light_summary_on">Açıq rejim navigasiya barı qeyri-şəffafdır</string>
|
||||
<string name="revanced_disable_translucent_navigation_bar_light_summary_off">Açıq rəngli naviqasiya çubuğu şəffaf və ya yarı şəffaf</string>
|
||||
<string name="revanced_disable_translucent_navigation_bar_dark_title">Tünd şəffaf çubuğu deaktiv edin</string>
|
||||
<string name="revanced_disable_translucent_navigation_bar_dark_summary_on">Tünd rejim navigasiya barı qeyri-şəffafdır</string>
|
||||
<string name="revanced_disable_translucent_navigation_bar_dark_summary_off">Tünd rəngli naviqasiya çubuğu şəffaf və ya yarı şəffaf</string>
|
||||
</patch>
|
||||
<patch id="layout.hide.player.flyoutmenupanel.hidePlayerFlyoutMenuPatch">
|
||||
<string name="revanced_hide_player_flyout_title">Açılan menyu</string>
|
||||
@@ -731,7 +760,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_ryd_enable_summary_off">Bəyənməmələr göstərilmir</string>
|
||||
<string name="revanced_ryd_shorts_title">\"Shorts\"da bəyənməmə sayını göstər</string>
|
||||
<string name="revanced_ryd_shorts_summary_on">Bəyənməmə sayı \"Shorts\"da göstərilir</string>
|
||||
<string name="revanced_ryd_shorts_summary_on_disclaimer">\"Bəyənməmə\"lər \"Shorts\"da göstərilir\n\nMəhdudiyyət: \"Bəyənməmə\"lər gizli rejimdə görünməyə bilər</string>
|
||||
<string name="revanced_ryd_shorts_summary_on_disclaimer">"Şortlarda görünən bəyənməmələr
|
||||
|
||||
Məhdudiyyət: Bəyənməmələr gizli rejimdə görünə bilməz"</string>
|
||||
<string name="revanced_ryd_shorts_summary_off">\"Bəyənməmə\"lər \"Shorts\"da gizlidir</string>
|
||||
<string name="revanced_ryd_dislike_percentage_title">\"Bəyənməmə\"lər faiz olaraq</string>
|
||||
<string name="revanced_ryd_dislike_percentage_summary_on">\"Bəyənməmə\"lər faiz olaraq göstərilir</string>
|
||||
@@ -774,7 +805,11 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_seekbar_thumbnails_high_quality_summary_off">Axtarış çubuğu miniatürləri orta keyfiyyətlidir</string>
|
||||
<string name="revanced_seekbar_thumbnails_high_quality_legacy_summary_on">Tam ekran axtarış çubuğu miniatürləri yüksək keyfiyyətlidir</string>
|
||||
<string name="revanced_seekbar_thumbnails_high_quality_legacy_summary_off">Tam ekran axtarış çubuğu miniatürləri orta keyfiyyətlidir</string>
|
||||
<string name="revanced_seekbar_thumbnails_high_quality_dialog_message">Bu, həm də axtarış cizgisi üzrə miniatürləri olmayan canlı yayımlarda miniatürləri qaytaracaq.\n\nAxtarış cizgisi miniatürləri, cari video kimi eyni keyfiyyəti işlədəcək.\n\nBu xüsusiyyət, 720p və ya daha aşağı video keyfiyyəti və çox sürətli internet bağlantısı istifadə edərkən daha yaxşı işləyir.</string>
|
||||
<string name="revanced_seekbar_thumbnails_high_quality_dialog_message">"Bu, həmçinin axtarış çubuğu kiçik görüntüləri olmayan canlı yayımlarda kiçik şəkilləri bərpa edəcək.
|
||||
|
||||
Axtarış çubuğu kiçik şəkilləri cari videonun keyfiyyəti ilə eyni keyfiyyətdən istifadə edəcək.
|
||||
|
||||
Bu xüsusiyyət ən yaxşı 720p və ya daha aşağı video keyfiyyəti və çox sürətli internet bağlantısından istifadə edərkən işləyir."</string>
|
||||
<string name="revanced_restore_old_seekbar_thumbnails_title">Köhnə axtarış çubuğu miniatürlərin al</string>
|
||||
<string name="revanced_restore_old_seekbar_thumbnails_summary_on">Axtarış çubuğu miniatürləri axtarış çubuğu üstündə görünəcək</string>
|
||||
<string name="revanced_restore_old_seekbar_thumbnails_summary_off">Axtarış çubuğu miniatürləri tam ekranda görünəcək</string>
|
||||
@@ -837,7 +872,10 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_sb_settings_import_successful">Tənzimləmələr uğurla idxal edildi</string>
|
||||
<string name="revanced_sb_settings_import_failed">%s idxal uğursuz</string>
|
||||
<string name="revanced_sb_settings_export_failed">%s ixrac uğursuz</string>
|
||||
<string name="revanced_sb_settings_revanced_export_user_id_warning">Tənzimləmələr şəxsi SponsorBlock istifadəçi kimliyi ehtiva edir.\n\nİstifadəçi kimliyiniz parol kimidir və bu paylaşılmamalıdır.\n</string>
|
||||
<string name="revanced_sb_settings_revanced_export_user_id_warning">"Parametrlərdə özəl SponsorBlock istifadəçi IDniz var.
|
||||
|
||||
Sizə istifadəçi IDniz parol kimidir və heç vaxt başqasına verilməməlidir.
|
||||
"</string>
|
||||
<string name="revanced_sb_settings_revanced_export_user_id_warning_dismiss">Təkrar göstərmə</string>
|
||||
<string name="revanced_sb_diff_segments">Bölüm davranışını dəyişdir</string>
|
||||
<string name="revanced_sb_segments_sponsor">Sponsor</string>
|
||||
@@ -897,9 +935,10 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_sb_submit_failed_invalid">Bölüm göndərilmir: %s</string>
|
||||
<string name="revanced_sb_submit_failed_timeout">SponsorBlock müvəqqəti olaraq cavab vermir</string>
|
||||
<string name="revanced_sb_submit_failed_unknown_error">Bölüm göndərilmir (status: %1$d %2$s)</string>
|
||||
<string name="revanced_sb_submit_failed_rate_limit">Bölüm göndərilmir.\nSürət məhdudlaşıb (eyni istifadəçi və ya IP-dən pik sayda)</string>
|
||||
<string name="revanced_sb_submit_failed_rate_limit">Segment təqdim edə bilmədiniz. Həddən artıq istifadə (eyni istifadəçi və ya IP ünvanından çox)</string>
|
||||
<string name="revanced_sb_submit_failed_forbidden">Bölüm göndərilmir: %s</string>
|
||||
<string name="revanced_sb_submit_failed_duplicate">Bölüm göndərilmir.\nArtıq var</string>
|
||||
<string name="revanced_sb_submit_failed_duplicate">"Segment təqdim edə bilmirsiniz.
|
||||
Artıq mövcuddur"</string>
|
||||
<string name="revanced_sb_submit_succeeded">Bölüm uğurla göndərildi</string>
|
||||
<!-- Toast shown if network connection times out. Translations of this should not be longer than the original English or the text can be clipped and not entirely shown. -->
|
||||
<string name="revanced_sb_sponsorblock_connection_failure_timeout">SponsorBlock müvəqqəti əlçatmazdır (API vaxtı bitdi)</string>
|
||||
@@ -922,7 +961,15 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_sb_new_segment_time_start">Bölüm başladığı vaxt</string>
|
||||
<string name="revanced_sb_new_segment_time_end">Bölümün bitmə vaxtı</string>
|
||||
<string name="revanced_sb_new_segment_confirm_title">Vaxtlar düzgündür?</string>
|
||||
<string name="revanced_sb_new_segment_confirm_content">Bölüm \n\n%1$s\n\n%2$s\n\n(%3$s)\n\nTəqdim etməyə hazırsınız?</string>
|
||||
<string name="revanced_sb_new_segment_confirm_content">"Bölüm
|
||||
|
||||
%1$s
|
||||
ilə
|
||||
%2$s arasıdır
|
||||
|
||||
(%3$s)
|
||||
|
||||
Təqdim etməyə hazırdır?"</string>
|
||||
<string name="revanced_sb_new_segment_start_is_before_end">Başlanğıc sondan əvvəl olmalıdır</string>
|
||||
<string name="revanced_sb_new_segment_mark_locations_first">Əvvəlcə vaxt çubuğunda iki yeri doldur</string>
|
||||
<string name="revanced_sb_new_segment_preview_segment_first">Bölümü izləyin, rahatlıqla ötürdüyünə əmin olun</string>
|
||||
@@ -964,7 +1011,11 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_spoof_app_version_title">Tətbiq versiyasını saxtalaşdır</string>
|
||||
<string name="revanced_spoof_app_version_summary_on">Versiya saxtalaşdırıldı</string>
|
||||
<string name="revanced_spoof_app_version_summary_off">Versiya saxtalaşdırılmadı</string>
|
||||
<string name="revanced_spoof_app_version_user_dialog_message">Tətbiq versiyası, YouTube-un daha köhnə versiyası şəklində saxtalaşdırılacaq.\n\nBu, tətbiqin görünüşünü və funksiyalarını dəyişdirəcək, ancaq bilinməyən yan təsirlər ola bilər.\n\nDaha sonra söndürsəniz, UI səhvlərini önləmək üçün tətbiq məlumatını təmizləmək tövsiyə olunur.</string>
|
||||
<string name="revanced_spoof_app_version_user_dialog_message">"Tətbiq versiyası köhnə bir YouTube versiyasına oxşayacaq.
|
||||
|
||||
Bu tətbiqin görünüşünü və xüsusiyyətlərini dəyişdirəcək, lakin bilinməyən yan təsirlər yarana bilər.
|
||||
|
||||
Sonradan söndürülərsə, UI səhvlərini qarşısını almaq üçün tətbiqin məlumatlarını silmək tövsiyə olunur."</string>
|
||||
<!-- It is ideal, but not required, if the text here appears is alphabetically after the text used for 'revanced_spoof_app_version_title'.
|
||||
This is because the 'General layout' menu uses alphabetic sorting, and it functionally works better if the spoof target selector appears below the 'Spoof app version' UI switch -->
|
||||
<string name="revanced_spoof_app_version_target_title">Saxta tətbiq versiyası hədəfi</string>
|
||||
@@ -998,6 +1049,12 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_disable_resuming_shorts_player_summary_on">Tətbiq açılanda Shorts oynadıcı davam etməyəcək</string>
|
||||
<string name="revanced_disable_resuming_shorts_player_summary_off">Tətbiq açılanda Shorts oynadıcı davam edəcək</string>
|
||||
</patch>
|
||||
<patch id="layout.shortsplayer.shortsPlayerTypePatch">
|
||||
<string name="revanced_shorts_player_type_title">Shorts ilə</string>
|
||||
<string name="revanced_shorts_player_type_shorts">Shorts oynadıcı</string>
|
||||
<string name="revanced_shorts_player_type_regular_player">Adi oynatıcı</string>
|
||||
<string name="revanced_shorts_player_type_regular_player_fullscreen">Adi oynatıcı tam ekran</string>
|
||||
</patch>
|
||||
<patch id="layout.shortsautoplay.shortsAutoplayPatch">
|
||||
<string name="revanced_shorts_autoplay_title">Shorts-ları avto-oynatma</string>
|
||||
<string name="revanced_shorts_autoplay_summary_on">Shorts-lar avto-oynadılacaq</string>
|
||||
@@ -1017,7 +1074,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_miniplayer_screen_summary">Tətbiqdə kiçildilən oynadıcı üslubunu dəyişdir</string>
|
||||
<string name="revanced_miniplayer_type_title">Kiçik oynadıcı növü</string>
|
||||
<string name="revanced_miniplayer_type_entry_0">Qeyri-aktivdir</string>
|
||||
<string name="revanced_miniplayer_type_entry_1">Orijinal</string>
|
||||
<string name="revanced_miniplayer_type_entry_1">İlkin</string>
|
||||
<string name="revanced_miniplayer_type_entry_2">Ən kiçik</string>
|
||||
<string name="revanced_miniplayer_type_entry_3">Planşet</string>
|
||||
<string name="revanced_miniplayer_type_entry_4">Müasir 1</string>
|
||||
@@ -1027,19 +1084,28 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_miniplayer_rounded_corners_summary_on">Künclər dairəvidir</string>
|
||||
<string name="revanced_miniplayer_rounded_corners_summary_off">Künclər kvadratdır</string>
|
||||
<string name="revanced_miniplayer_double_tap_action_title">Ölçüsünü dəyişmək üçün cüt toxunmanı və çimdikləməni aktivləşdir</string>
|
||||
<string name="revanced_miniplayer_double_tap_action_summary_on">Ölçüsünü dəyişdirmək üçün cüt toxunma fəaliyyəti və çimdikləmə aktivləşdirildi\n\n• Mini oynadıcı ölçüsün artırmaq üçün cüt toxunun\n• Orijinal ölçünü bərpa etmək üçün təkrar cüt toxun</string>
|
||||
<string name="revanced_miniplayer_double_tap_action_summary_on">"İkiqat vuruş hərəkəti və çimdikleyərək yenidən ölçmək aktivdir
|
||||
|
||||
• Miniplayer ölçüsünü artırmaq üçün iki dəfə vurun
|
||||
• Orijinal ölçüsünə qayıtmaq üçün yenidən iki dəfə vurun"</string>
|
||||
<string name="revanced_miniplayer_double_tap_action_summary_off">Ölçüsünü dəyişdirmək üçün cüt toxunma fəaliyyəti və çimdikləmə yoxdur</string>
|
||||
<string name="revanced_miniplayer_drag_and_drop_title">\"Sürüklə və burax\"ı aktivləşdir</string>
|
||||
<string name="revanced_miniplayer_drag_and_drop_summary_on">\"Sürüklə və burax\" aktivdir\n\nMini oynadıcı, ekranın istənilən küncünə sürüklənə bilər</string>
|
||||
<string name="revanced_miniplayer_drag_and_drop_summary_on">"Sürüklə və burax aktivdir
|
||||
|
||||
Miniplayer ekranın istənilən küncünə sürüklənə bilər"</string>
|
||||
<string name="revanced_miniplayer_drag_and_drop_summary_off">\"Sürüklə və burax\" aktiv deyil</string>
|
||||
<string name="revanced_miniplayer_horizontal_drag_title">Üfüqi sürükləmə jestini aktivləşdir</string>
|
||||
<string name="revanced_miniplayer_horizontal_drag_summary_on">Üfüqi sürükləmə jesti aktivdir\n\nKiçik Oynadıcı ekranın soluna və ya sağına sürüklənə bilər</string>
|
||||
<string name="revanced_miniplayer_horizontal_drag_summary_on">"Üfüqi sürükləmə jesti aktivdir
|
||||
|
||||
Miniplayer ekrandan sola və ya sağa sürüklənə bilər"</string>
|
||||
<string name="revanced_miniplayer_horizontal_drag_summary_off">Üfüqi sürükləmə jesti qapatıldı</string>
|
||||
<string name="revanced_miniplayer_hide_expand_close_title">\"Bağla\" düyməsini gizlət</string>
|
||||
<string name="revanced_miniplayer_hide_expand_close_summary_on">\"Bağla\" düyməsi gizlidir</string>
|
||||
<string name="revanced_miniplayer_hide_expand_close_summary_off">\"Bağla\" düyməsi göstərilir</string>
|
||||
<string name="revanced_miniplayer_hide_expand_close_legacy_title">Genişləndir və bağla düymələrini gizlət</string>
|
||||
<string name="revanced_miniplayer_hide_expand_close_legacy_summary_on">Düymələr gizlədilib\n\nGenişləndirmək və ya bağlamaq üçün sürüşdür</string>
|
||||
<string name="revanced_miniplayer_hide_expand_close_legacy_summary_on">"Düymələr gizlidir
|
||||
|
||||
Açmaq və ya bağlamaq barmaqla sürüşdürün"</string>
|
||||
<string name="revanced_miniplayer_hide_expand_close_legacy_summary_off">Genişləndir və bağla düymələri göstərilir</string>
|
||||
<string name="revanced_miniplayer_hide_subtext_title">Alt mətnləri gizlət</string>
|
||||
<string name="revanced_miniplayer_hide_subtext_summary_on">Alt mətnlər gizlədilir</string>
|
||||
@@ -1070,7 +1136,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<patch id="layout.thumbnails.bypassImageRegionRestrictionsPatch">
|
||||
<string name="revanced_bypass_image_region_restrictions_title">Təsvir bölgə məhdudiyyətlərini ötür</string>
|
||||
<string name="revanced_bypass_image_region_restrictions_summary_on">yt4.ggpht.com təsvir host-u istifadə edilir</string>
|
||||
<string name="revanced_bypass_image_region_restrictions_summary_off">Orijinal təsvir host-u istifadə edilir\n\nBunu aktivləşdirmə, bəzi bölgələrdə əngəllənən, ağ təsvirləri düzəldə bilər</string>
|
||||
<string name="revanced_bypass_image_region_restrictions_summary_off">"Orijinal şəkil hostundan istifadə
|
||||
|
||||
Bunu aktivləşdirmək, bəzi regionlarda bloklanmışdırılmış itkin şəkilləri düzəldə bilər"</string>
|
||||
</patch>
|
||||
<patch id="layout.thumbnails.alternativeThumbnailsPatch">
|
||||
<!-- 'Home' should be translated using the same localized wording YouTube displays for the home tab. -->
|
||||
@@ -1085,7 +1153,12 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_alt_thumbnail_options_entry_2">DeArrow & Orijinal miniatürlər</string>
|
||||
<string name="revanced_alt_thumbnail_options_entry_3">DeArrow & Kadr çəkilişlər</string>
|
||||
<string name="revanced_alt_thumbnail_options_entry_4">Kadr çəkilişləri</string>
|
||||
<string name="revanced_alt_thumbnail_dearrow_about_summary">DeArrow YouTube videoları üçün bölük mənbəli miniatürlər təchiz edir. Bu miniatürlər hər zaman YouTube tərəfindən təmin edilənlərdən daha uyğun olur\n\nƏgər aktivləşdirilərsə, video URL-lər API serverinə göndəriləcək və başqa heç bir məlumat göndərilməyəcək. Videoda DeArrow miniatürləri yoxdursa, orijinal və ya hələ də kadr çəkilişləri göstərilir\n\nDeArrow haqqında ətraflı öyrənmək üçün bura toxun</string>
|
||||
<string name="revanced_alt_thumbnail_dearrow_about_title">DeArrow</string>
|
||||
<string name="revanced_alt_thumbnail_dearrow_about_summary">"DeArrow, YouTube videoları üçün kütlədən alınan kiçik görüntülər təqdim edir. Bu kiçik görüntülər YouTube tərəfindən təqdim edilənlərdən daha uyğun ola bilər
|
||||
|
||||
Aktivləşdirilərsə, video URLləri API serverinə göndəriləcək və başqa heç bir məlumat göndərilməyəcək. Bir videoda DeArrow kiçik şəkilləri yoxdursa, onda orijinal və ya hərəkətsiz çəkilişlər göstərilir
|
||||
|
||||
DeArrow haqqında ətraflı məlumat üçün buraya vurun"</string>
|
||||
<string name="revanced_alt_thumbnail_dearrow_connection_toast_title">API əlçatan deyilsə ani bildiriş göstər</string>
|
||||
<string name="revanced_alt_thumbnail_dearrow_connection_toast_summary_on">DeArrow əlçatan deyilsə bildiriş göstərilir</string>
|
||||
<string name="revanced_alt_thumbnail_dearrow_connection_toast_summary_off">DeArrow əlçatan deyilsə bildiriş göstərilmir</string>
|
||||
@@ -1124,8 +1197,12 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
</patch>
|
||||
<patch id="misc.dimensions.spoof.spoofDeviceDimensionsPatch">
|
||||
<string name="revanced_spoof_device_dimensions_title">Cihaz ölçülərini saxtalaşdır</string>
|
||||
<string name="revanced_spoof_device_dimensions_summary_on">Cihaz ölçüləri saxtalaşdı\n\nDaha yüksək video keyfiyyətləri göstərilə bilər, ancaq video oynatma donmaları, daha pis batareya istismarı və bilinməyən yan təsirləri görə bilərsiniz</string>
|
||||
<string name="revanced_spoof_device_dimensions_summary_off">Cihaz ölçüləri saxtalaşmır\n\nBunu aktivləşdirmə, daha yüksək video keyfiyyətlərinin olmasın təmin edə bilir</string>
|
||||
<string name="revanced_spoof_device_dimensions_summary_on">"Cihaz ölçüləri saxtalaşdırıldı
|
||||
|
||||
Yüksək video keyfiyyətlər görünə bilər, ancaq videonun oynadılmasında qırılma, daha pis batareya ömrü və bilinməyən yan təsirləri sezə bilərsiniz"</string>
|
||||
<string name="revanced_spoof_device_dimensions_summary_off">"Cihaz ölçüləri saxtalaşdırılmayıb
|
||||
|
||||
Bunu aktivləşdirmə daha yüksək video keyfiyyətləri əngəlin silə bilər"</string>
|
||||
<string name="revanced_spoof_device_dimensions_user_dialog_message">Bunu aktivləşdirmə, video oynatma donmalarına, daha pis batareya istismarına və bilinməyən yan təsirlərə səbəb ola bilər.</string>
|
||||
</patch>
|
||||
<patch id="misc.gms.gmsCoreSupportResourcePatch">
|
||||
@@ -1152,6 +1229,11 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_disable_zoom_haptics_summary_on">Toxunuş əks-əlaqəsi bağlandı</string>
|
||||
<string name="revanced_disable_zoom_haptics_summary_off">Toxunuş əks-əlaqəsi aktivdir</string>
|
||||
</patch>
|
||||
<patch id="video.audio.forceOriginalAudioPatch">
|
||||
<string name="revanced_force_original_audio_title">Orijinal səsi tələb et</string>
|
||||
<string name="revanced_force_original_audio_summary_on">Orijinal səs istifadəsi</string>
|
||||
<string name="revanced_force_original_audio_summary_off">İlkin səs istifadəsi</string>
|
||||
</patch>
|
||||
<patch id="video.quality.rememberVideoQualityPatch">
|
||||
<!-- Translations should use the same text as revanced_custom_playback_speeds_auto -->
|
||||
<string name="revanced_video_quality_default_entry_1">Avtomatik</string>
|
||||
@@ -1175,8 +1257,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_custom_speed_menu_summary_off">Fərdi sürət menyusu göstərilmir</string>
|
||||
<string name="revanced_custom_playback_speeds_title">Fərdi oynatma sürəti</string>
|
||||
<string name="revanced_custom_playback_speeds_summary">Fərdi oynatma sürətlərini əlavə et və ya dəyiş</string>
|
||||
<string name="revanced_custom_playback_speeds_invalid">Fərdi sürətlər %s-dən az olmalıdır. Standart dəyərlər istifadəsi.</string>
|
||||
<string name="revanced_custom_playback_speeds_parse_exception">Etibarsız oynatma sürətləri. Standartlar istifadədədir.</string>
|
||||
<string name="revanced_custom_playback_speeds_invalid">Fərdi sürətlər %s dəyərindən az olmalıdır</string>
|
||||
<string name="revanced_custom_playback_speeds_parse_exception">Fərdi oynatma sürətləri etibarsızdır</string>
|
||||
<string name="revanced_custom_playback_speeds_auto">Avtomatik</string>
|
||||
</patch>
|
||||
<patch id="video.speed.remember.rememberPlaybackSpeedPatch">
|
||||
@@ -1201,19 +1283,25 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_spoof_video_streams_screen_summary">Oynatma problemlərin önləmək üçün qəbuledici video yayımların saxtalaşdır</string>
|
||||
<string name="revanced_spoof_video_streams_title">Video yayımları saxtalaşdır</string>
|
||||
<string name="revanced_spoof_video_streams_summary_on">Video yayımları saxtalaşdırılır</string>
|
||||
<string name="revanced_spoof_video_streams_summary_off">Video yayımları saxtalaşmır\n\nVideo oynatma işləməyə bilər</string>
|
||||
<string name="revanced_spoof_video_streams_summary_off">"Video yayımlar saxtalaşdırılmır
|
||||
|
||||
Video oynatma işləməyə bilər"</string>
|
||||
<string name="revanced_spoof_video_streams_user_dialog_message">Bu seçimi bağlamaq, video oynatma problemlərinə səbəb olar.</string>
|
||||
<string name="revanced_spoof_video_streams_client_title">İlkin qəbuledici</string>
|
||||
<string name="revanced_spoof_video_streams_ios_force_avc_title">Məcburi AVC (H.264)</string>
|
||||
<string name="revanced_spoof_video_streams_ios_force_avc_summary_on">Video kodlama AVC (H.264) -yə məcbur edilir</string>
|
||||
<string name="revanced_spoof_video_streams_ios_force_avc_summary_off">Video kodlama birbaşa yoxlanılır</string>
|
||||
<string name="revanced_spoof_video_streams_ios_force_avc_user_dialog_message">Bunu aktivləşdirmə batareya ömrün yaxşılaşdıra və oynatma donmasını düzəldə bilər.\n\nAVC maksimum 1080p görüntü imkanına malikdir, Opus səs kodlama əlçatan deyil və video oynatma VP9 və ya AV1-dən daha çox internet resursu işlədəcək.</string>
|
||||
<string name="revanced_spoof_video_streams_ios_force_avc_user_dialog_message">"Bunu fəallaşdırma, batareya ömrünü yaxşılaşdıra və oxutma ilişmələrini düzəldə bilər.
|
||||
|
||||
AVC-nin maksimum dəqiqliyi 1080p-dir, Opus səs kodek əlçatan deyil və video oxutma, VP9 və ya AV1-dən daha çox internet datası istifadə edəcək."</string>
|
||||
<string name="revanced_spoof_video_streams_about_ios_title">iOS saxtakarlığı yan təsirləri</string>
|
||||
<string name="revanced_spoof_video_streams_about_ios_summary">• Uşaq videoları oynadılmaya bilər\n• Canlı yayımlar başdan başlayır\n• Videolar 1 saniyə tez bitə bilər</string>
|
||||
<string name="revanced_spoof_video_streams_about_ios_summary">"◦ Xüsusi uşaq videoları bəlkə də oynanılmaya bilər
|
||||
◦ Videolar 1 saniyə tez bitir"</string>
|
||||
<string name="revanced_spoof_video_streams_about_android_vr_title">Android VR saxtakarlığı yan təsirləri</string>
|
||||
<string name="revanced_spoof_video_streams_about_android_vr_summary">• Uşaq videoları oynadılmaya bilər\n• Səs treki menyusu əskikdir\n• Sabit səs həcmi əlçatan deyil</string>
|
||||
<string name="revanced_spoof_video_streams_language_">Video yayımları saxtalaşdırılır</string>
|
||||
<string name="revanced_spoof_video_streams_language_title">Üstünlük verilən səs yayımı dili</string>
|
||||
<string name="revanced_spoof_video_streams_about_android_vr_summary">"• Uşaq videoları oxudulmaya bilər
|
||||
• Canlı yayımlar başdan başlayır
|
||||
• Videolar 1 saniyə tez bitir"</string>
|
||||
<string name="revanced_spoof_video_streams_language_title">İlkin səs yayımı dili</string>
|
||||
<string name="revanced_spoof_video_streams_language_DEFAULT">Tətbiq dili</string>
|
||||
<string name="revanced_spoof_video_streams_language_AR">Ərəbcə</string>
|
||||
<string name="revanced_spoof_video_streams_language_AZ">Azərbaycanca</string>
|
||||
@@ -1276,8 +1364,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_block_audio_ads_summary_off">Səsli reklamlar bloklanmayıb</string>
|
||||
</patch>
|
||||
<patch id="ad.embedded.embeddedAdsPatch">
|
||||
<string name="revanced_embedded_ads_service_unavailable">%s əlçatmazdır. Reklamlar görünə bilər. Seçimlərdə başqa reklam bloku xidmətinə keçirməyə cəhd et.</string>
|
||||
<string name="revanced_embedded_ads_service_failed">%s serveri xəta sorğusu verdi. Reklam görünə bilər. Seçimlərdə başqa reklam bloku xidmətinə keçir.</string>
|
||||
<string name="revanced_embedded_ads_service_unavailable">%s əlçatmazdır, reklamlar göstərilə bilər. Ayarlarda reklam əngəlləmə xidmətini dəyişdirməyə çalışın.</string>
|
||||
<string name="revanced_embedded_ads_service_failed">%s bir xəta qaytardı, reklamlar göstərilə bilər. Ayarlarda reklam əngəlləmə xidmətini dəyişdirməyə çalışın.</string>
|
||||
<string name="revanced_block_embedded_ads_title">Yerləşdirilən video reklamlarını əngəllə</string>
|
||||
<string name="revanced_block_embedded_ads_entry_1">Qeyri-aktiv edildi</string>
|
||||
<string name="revanced_block_embedded_ads_entry_2">Dəqiq proksi</string>
|
||||
|
||||
@@ -1,40 +1,39 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
|
||||
Note: All strings must have a unique path, even if the same string is declared in two different apps.
|
||||
This is because Crowdin requires temporarily flattening this file and removing the <app> and <patch> elements.
|
||||
All strings must have a unique path, even if the same string is declared in two different apps.
|
||||
This is because Crowdin requires temporarily flattening this file and removing the <app> and <patch> elements.
|
||||
|
||||
# General guidelines and information for translating
|
||||
|
||||
## Strings parameters can be reordered to allow more flexible translations if the grammar should be changed.
|
||||
Strings with new lines must be raw strings where they're wrapped in quotes and new lines are not encoded.
|
||||
Raw strings still requires escaping embedded double quotes but escaping embedded single quotes is optional.
|
||||
|
||||
For example, the patches string:
|
||||
<string name="revanced_patches_string">You will arrive at %1$s in %2$s hours from now</string>
|
||||
Could be translated to another language using a rearranged grammar:
|
||||
<string name="revanced_patches_string">You will arrive %2$s hours from now at %1$s</string>
|
||||
Raw strings are required because Crowdin AI translations regularly gets confused and
|
||||
replace \n with an encoded new line character.
|
||||
|
||||
For Manager strings:
|
||||
You will arrive at ${destination} in ${count} hours from now
|
||||
Could be rearranged by changing the order of the ${} parameters:
|
||||
You will arrive ${count} hours from now at ${destination}
|
||||
Bad:
|
||||
<string name="summary_key">First \'item\' text\nSecond \"item\" text</string>
|
||||
|
||||
Reordering is particularly relevant when translating into right to left languages, or for any language with grammar that is noticeably different from English.
|
||||
Good:
|
||||
<string name="summary_key">"First 'item' text
|
||||
Second \"item\" text"</string>
|
||||
|
||||
## Single and double quotation marks must be escaped for patch strings (Manager does not require escaping any quotes).
|
||||
|
||||
All _patches_ single and double quotation marks must be escaped as \" or \'
|
||||
Forgetting to do this will cause that string to appear in app with no quotation characters.
|
||||
|
||||
Correct:
|
||||
<string name="revanced_string">You\'re correct. This is the \"correct\" way and this text will appear as expected in the app</string>
|
||||
Not correct:
|
||||
<string name="revanced_string">You're not correct. This is not the "correct" way and this text will not appear as expected the in app</string>
|
||||
-->
|
||||
<resources>
|
||||
<app id="shared">
|
||||
<patch id="misc.checks.checkEnvironmentPatch">
|
||||
<string name="revanced_check_environment_failed_title">\"Правядзенне праверкі асяроддзя не ўдалося\"</string>
|
||||
<string name="revanced_check_environment_dialog_open_official_source_button">\"Адкрыць афіцыйны вэб-сайт\"</string>
|
||||
<string name="revanced_check_environment_dialog_ignore_button">Ігнараваць</string>
|
||||
<string name="revanced_check_environment_failed_message"><h5>Гэта дадатак відавочна не з\'яўляецца патчам.</h5><br>Гэта дадатак можа працаваць няправільна, а таксама можа быць <b>небяспечным або нават небяспечным у выкарыстанні</b>.<br><br>Гэтыя праверкі азначаюць, што гэта дадатак было загаддзя перароблена або атрымана ад кагосьці іншага:<br><br><small>%1$s</small><br>Настойліва рэкамендуецца <b>выдаліць гэты дадатак і перарабіць яго самастойна</b>, каб пераканацца, што вы выкарыстоўваеце правераны і бяспечны дадатак.<p><br>Калі ігнараваць, гэта папярэджанне будзе паказана толькі два разы.</string>
|
||||
<string name="revanced_check_environment_not_same_patching_device">Адкарэктавана на іншай прыладзе</string>
|
||||
<string name="revanced_check_environment_manager_not_expected_installer">Не ўстаноўлена ReVanced Manager</string>
|
||||
<string name="revanced_check_environment_not_near_patch_time">Адкарэктавана больш чым 10 хвілін таму</string>
|
||||
<string name="revanced_check_environment_not_near_patch_time_days">Адкарэктавана %s дзён таму</string>
|
||||
<string name="revanced_check_environment_not_near_patch_time_invalid">Дата стварэння APK пашкоджана</string>
|
||||
</patch>
|
||||
<patch id="misc.settings.settingsResourcePatch">
|
||||
<string name="revanced_settings_title">ReVanced</string>
|
||||
<string name="revanced_settings_confirm_user_dialog_title">Вы хочаце працягнуць?</string>
|
||||
<string name="revanced_settings_reset">Скінуць</string>
|
||||
<string name="revanced_settings_restart_title">Абнавіце і перазагрузіце</string>
|
||||
@@ -58,9 +57,17 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<!-- Translations of this should not be longer than the original English text, otherwise the text can be clipped and not entirely shown. -->
|
||||
<string name="gms_core_toast_not_installed_message">MicroG GmsCore не ўсталяваны. Усталюйце яго.</string>
|
||||
<string name="gms_core_dialog_title">Патрабуецца дзеянне</string>
|
||||
<string name="gms_core_dialog_not_whitelisted_not_allowed_in_background_message">MicroG GmsCore не мае дазволу на працу ў фонавым рэжыме.\n\nВыконвайце інструкцыі \"Не забівайце маю праграму\" для вашага тэлефона і прымяніце інструкцыі да ўстаноўкі MicroG.\n\nГэта патрабуецца для прыкладанне для працы.</string>
|
||||
<string name="gms_core_dialog_not_whitelisted_not_allowed_in_background_message">"MicroG GmsCore не мае дазволу на працу ў фонавым рэжыме.
|
||||
|
||||
Выконвайце інструкцыі \"Не забівай маё прыкладанне\" для вашага тэлефона і прымяніце іх да вашай ўстаноўкі MicroG.
|
||||
|
||||
Гэта неабходна для працы прыкладання."</string>
|
||||
<string name="gms_core_dialog_open_website_text">Адкрыць сайт</string>
|
||||
<string name="gms_core_dialog_not_whitelisted_using_battery_optimizations_message">Аптымізацыя батарэі MicroG GmsCore павінна быць адключана, каб прадухіліць праблемы.\n\nНацісніце кнопку \"Працягнуць\" і адключыце аптымізацыю батарэі.</string>
|
||||
<string name="gms_core_dialog_not_whitelisted_using_battery_optimizations_message">"Неабходна адключыць аптымізацыю батарэі для MicroG GmsCore, каб пазбегнуць праблем.
|
||||
|
||||
Адключэнне аптымізацыі батарэі для MicroG не паўплывае на выкарыстанне батарэі.
|
||||
|
||||
Націсніце кнопку \"Працягнуць\" і дазвольце змяніць аптымізацыю."</string>
|
||||
<string name="gms_core_dialog_continue_text">Працягнуць</string>
|
||||
</patch>
|
||||
</app>
|
||||
@@ -72,12 +79,16 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_settings_screen_03_feed_title">Карміць</string>
|
||||
<string name="revanced_settings_screen_04_player_title">Гулец</string>
|
||||
<string name="revanced_settings_screen_05_general_title">Генеральная планіроўка</string>
|
||||
<string name="revanced_settings_screen_06_shorts_title">Shorts</string>
|
||||
<string name="revanced_settings_screen_07_seekbar_title">Панэль пошуку</string>
|
||||
<string name="revanced_settings_screen_08_swipe_controls_title">Элементы кіравання пальцам</string>
|
||||
<string name="revanced_settings_screen_11_misc_title">Рознае</string>
|
||||
<string name="revanced_settings_screen_12_video_title">Відэа</string>
|
||||
</patch>
|
||||
<patch id="misc.backgroundplayback.backgroundPlaybackPatch">
|
||||
<string name="revanced_shorts_disable_background_playback_title">Адключыць прайграванне Shorts у фонавым</string>
|
||||
<string name="revanced_shorts_disable_background_playback_summary_on">Прайграванне Shorts у фонавым адключана</string>
|
||||
<string name="revanced_shorts_disable_background_playback_summary_off">Фоновый плейлист Shorts включен</string>
|
||||
</patch>
|
||||
<patch id="misc.debugging.enableDebuggingPatch">
|
||||
<string name="revanced_debug_screen_title">Адладка</string>
|
||||
@@ -94,10 +105,12 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_debug_toast_on_error_title">Паказаць тост пры памылцы ReVanced</string>
|
||||
<string name="revanced_debug_toast_on_error_summary_on">Тост паказваецца, калі ўзнікае памылка</string>
|
||||
<string name="revanced_debug_toast_on_error_summary_off">Тост не паказваецца, калі ўзнікае памылка</string>
|
||||
<string name="revanced_debug_toast_on_error_user_dialog_message">Адключэнне апавяшчэнняў пра памылкі схавае ўсе апавяшчэнні аб памылках ReVanced.\n\nВы не будзеце атрымліваць апавяшчэнні аб непрадбачаных падзеях.</string>
|
||||
<string name="revanced_debug_toast_on_error_user_dialog_message">"Адключэнне паведамленняў пра памылкі схавае ўсе апавяшчэнні ReVanced пра памылкі.
|
||||
|
||||
Вы не будзеце атрымліваць апавяшчэнні пра нечаканыя падзеі."</string>
|
||||
</patch>
|
||||
<patch id="layout.hide.general.hideLayoutComponentsPatch">
|
||||
<string name="revanced_disable_like_subscribe_glow_title">Адключыць свячэнне кнопкі \"Падабаецца\" / \"Падпісацца\".</string>
|
||||
<string name="revanced_disable_like_subscribe_glow_title">Адключыць свячэнне кнопкі \"Падабаецца\" / \"Падпісацца\"</string>
|
||||
<string name="revanced_disable_like_subscribe_glow_summary_on">Кнопка \"Падабаецца\" і \"Падпісацца\" не будуць свяціцца пры згадванні</string>
|
||||
<string name="revanced_disable_like_subscribe_glow_summary_off">Кнопка \"Падабаецца\" і \"Падпісацца\" будуць свяціцца пры згадванні</string>
|
||||
<string name="revanced_hide_album_cards_title">Схаваць карты альбома</string>
|
||||
@@ -113,7 +126,12 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_hide_channel_watermark_summary_on">Вадзяны знак схаваны</string>
|
||||
<string name="revanced_hide_channel_watermark_summary_off">Паказаны вадзяны знак</string>
|
||||
<string name="revanced_hide_horizontal_shelves_title">Схавайце гарызантальныя паліцы</string>
|
||||
<string name="revanced_hide_horizontal_shelves_summary_on">Паліцы схаваны, напрыклад:\n• Апошнія навіны\n• Працягвайце прагляд\n• Даследуйце іншыя каналы\n• Пакупкі\n• Глядзіце яшчэ раз</string>
|
||||
<string name="revanced_hide_horizontal_shelves_summary_on">"Схаваны паліцы, такія як:
|
||||
• Навіны
|
||||
• Працяг прагляду
|
||||
• Даведайцеся больш пра каналы
|
||||
• Пакупкі
|
||||
• Паглядзець яшчэ раз"</string>
|
||||
<string name="revanced_hide_horizontal_shelves_summary_off">Паказаны паліцы</string>
|
||||
<!-- 'Join' should be translated using the same localized wording YouTube displays.
|
||||
This appears in the video player for certain videos. -->
|
||||
@@ -141,9 +159,6 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_hide_timed_reactions_title">Схаваць рэакцыі па часе</string>
|
||||
<string name="revanced_hide_timed_reactions_summary_on">Часовыя рэакцыі схаваныя</string>
|
||||
<string name="revanced_hide_timed_reactions_summary_off">Паказваюцца рэакцыі па часе</string>
|
||||
<string name="revanced_hide_search_result_shelf_header_title">Схаваць загаловак паліцы з вынікамі пошуку</string>
|
||||
<string name="revanced_hide_search_result_shelf_header_summary_on">Загаловак паліцы схаваны</string>
|
||||
<string name="revanced_hide_search_result_shelf_header_summary_off">Паказаны загаловак паліцы</string>
|
||||
<string name="revanced_hide_channel_guidelines_title">Схаваць рэкамендацыі канала</string>
|
||||
<string name="revanced_hide_channel_guidelines_summary_on">Правілы канала схаваны</string>
|
||||
<string name="revanced_hide_channel_guidelines_summary_off">Паказваюцца інструкцыі па каналах</string>
|
||||
@@ -210,7 +225,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_hide_attributes_section_title">Схаваць раздзел атрыбутаў</string>
|
||||
<string name="revanced_hide_attributes_section_summary_on">Раздзелы \"Выбраныя месцы\", гульні і музыка схаваны</string>
|
||||
<string name="revanced_hide_attributes_section_summary_off">Паказваюцца раздзелы \"Выбраныя месцы\", Гульні і Музыка</string>
|
||||
<string name="revanced_hide_chapters_section_title">Схаваць раздзел \"Раздзелы\".</string>
|
||||
<string name="revanced_hide_chapters_section_title">Схаваць раздзел \"Раздзелы\"</string>
|
||||
<string name="revanced_hide_chapters_section_summary_on">Раздзел раздзелаў схаваны</string>
|
||||
<string name="revanced_hide_chapters_section_summary_off">Паказваецца раздзел раздзелаў</string>
|
||||
<string name="revanced_hide_podcast_section_title">Схаваць раздзел \"Даследаваць падкаст\"</string>
|
||||
@@ -240,12 +255,18 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_hide_filter_bar_feed_in_related_videos_summary_off">Паказана ў звязаных відэа</string>
|
||||
<string name="revanced_comments_screen_title">Каментарыі</string>
|
||||
<string name="revanced_comments_screen_summary">Схаваць або паказаць кампаненты раздзела каментарыяў</string>
|
||||
<string name="revanced_hide_comments_chat_summary_title">Схаваць \"Зводка чата\" </string>
|
||||
<string name="revanced_hide_comments_chat_summary_summary_on">«Агляд чата» схаваны</string>
|
||||
<string name="revanced_hide_comments_chat_summary_summary_off">«Агляд чата» паказаны</string>
|
||||
<string name="revanced_hide_comments_by_members_header_title">Схаваць загаловак \"Каментарыі ўдзельнікаў\"</string>
|
||||
<string name="revanced_hide_comments_by_members_header_summary_on">Загаловак \"Каментарыі ўдзельнікаў\" схаваны</string>
|
||||
<string name="revanced_hide_comments_by_members_header_summary_off">Паказаны загаловак \"Каментарыі ўдзельнікаў\"</string>
|
||||
<string name="revanced_hide_comments_section_title">Схаваць раздзел каментарыяў</string>
|
||||
<string name="revanced_hide_comments_section_summary_on">Раздзел каментарыяў схаваны</string>
|
||||
<string name="revanced_hide_comments_section_summary_off">Паказваецца раздзел каментарыяў</string>
|
||||
<string name="revanced_hide_comments_create_a_short_button_title">Схаваць кнопку \"Створиць Short\"</string>
|
||||
<string name="revanced_hide_comments_create_a_short_button_summary_on">Кнопка \"Створиць Short\" схавана</string>
|
||||
<string name="revanced_hide_comments_create_a_short_button_summary_off">Кнопка \"Створиць Short\" паказана</string>
|
||||
<string name="revanced_hide_comments_preview_comment_title">Схаваць каментарый для папярэдняга прагляду</string>
|
||||
<string name="revanced_hide_comments_preview_comment_summary_on">Каментарый перад праглядам схаваны</string>
|
||||
<string name="revanced_hide_comments_preview_comment_summary_off">Паказваецца папярэдні прагляд каментарыя</string>
|
||||
@@ -256,6 +277,12 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_summary_on">Кнопкі меткі часу і эмодзі схаваны</string>
|
||||
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_summary_off">Паказваюцца кнопкі меткі часу і эмодзі</string>
|
||||
<!-- https://logos.fandom.com/wiki/YouTube/Yoodles -->
|
||||
<string name="revanced_hide_doodles_title">Схаваць YouTube Doodles</string>
|
||||
<string name="revanced_hide_doodles_summary_on">Doodles у панэлі пошуку схаваны</string>
|
||||
<string name="revanced_hide_doodles_summary_off">Doodles у панэлі пошуку паказаны</string>
|
||||
<string name="revanced_hide_doodles_user_dialog_message">"Doodles па YouTube паказваюцца некалькі дзён у год.
|
||||
|
||||
Калі Doodle зараз паказваецца ў вашым рэгіёне і гэты параметр схаваны, панэль фільтраў ніжэй радка пошуку таксама будзе схавана."</string>
|
||||
<string name="revanced_custom_filter_screen_title">Карыстальніцкі фільтр</string>
|
||||
<string name="revanced_custom_filter_screen_summary">Схавайце кампаненты з дапамогай карыстацкіх фільтраў</string>
|
||||
<string name="revanced_custom_filter_title">Уключыць карыстальніцкі фільтр</string>
|
||||
@@ -279,16 +306,36 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_hide_keyword_content_phrases_title">Ключавыя словы, якія трэба схаваць</string>
|
||||
<!-- For localization it is preferred, but not required, if 'LeBlanc' is replaced with a localized name or a familiar word that has upper case letters in the middle of the word.
|
||||
This is because keywords can be in any language, and showing an example in the localized script helps convey this. -->
|
||||
<string name="revanced_hide_keyword_content_phrases_summary">"Ключавыя словы і фразы для схавання, падзеленыя пераходамі на новую радок
|
||||
|
||||
Ключавыя словы могуць быць назвамі каналаў або любым тэкстам, які паказаны ў назвах відэа
|
||||
|
||||
Словы з вялікімі літарамі пасярэдзіне павінны ўводзіцца з вялікай літары (напрыклад: iPhone, TikTok, LeBlanc)"</string>
|
||||
<string name="revanced_hide_keyword_content_about_title">Аб фільтрацыі ключавых слоў</string>
|
||||
<string name="revanced_hide_keyword_content_about_summary">"Вынікі дома/падпіскі/пошуку фільтруюцца, каб схаваць змест, які адпавядае ключавым словам і фразам
|
||||
|
||||
Абмежаванні
|
||||
• Shorts нельга схаваць па назве канала
|
||||
• Некаторыя элементы інтэрфейсу могуць не быць схаваны
|
||||
• Пошук па ключавым слове можа не паказаць вынікі"</string>
|
||||
<string name="revanced_hide_keyword_content_about_whole_words_title">Супадзенне цэлых слоў</string>
|
||||
<!-- Translations _must_ use a localized example. For languages that do not use spaces between words (Chinese, Japanese, etc) the English AI example should be used since no localized examples exist. Or if using machine translations, or if nobody wants to think of a localized example, then the English 'ai' example should be left as-is. -->
|
||||
<string name="revanced_hide_keyword_content_about_whole_words_summary">Калі вы ахінеце ключавое слова або фразу ў двухразовыя лапкі, гэта перашкодзіць частковаму супадзенню назваў відэа і каналаў<br><br>Напрыклад,<br><b>\"ai\"</b> схавае відэа: <b>How does AI work?</b><br>але не схавае: <b>What does fair use mean?</b></string>
|
||||
<!-- Translations of this should not be longer than the original English text, otherwise the text can be clipped and not entirely shown. -->
|
||||
<string name="revanced_hide_keyword_toast_invalid_common">Нельга выкарыстоўваць ключавое слова: %s</string>
|
||||
<string name="revanced_hide_keyword_toast_invalid_common_whole_word_required">Дадайце цытаты да ключавога слова: %s</string>
|
||||
<string name="revanced_hide_keyword_toast_invalid_conflicting">Ключавое слова мае супярэчлівыя дэкларацыі: %s</string>
|
||||
<string name="revanced_hide_keyword_toast_invalid_length">Ключавое слова занадта кароткае і патрабуе цытат: %s</string>
|
||||
<string name="revanced_hide_keyword_toast_invalid_broad">Ключавое слова схавае ўсе відэа: %s</string>
|
||||
</patch>
|
||||
<patch id="ad.general.hideAdsResourcePatch">
|
||||
<string name="revanced_hide_general_ads_title">Схаваць агульную рэкламу</string>
|
||||
<string name="revanced_hide_general_ads_summary_on">Агульныя аб\"явы схаваныя</string>
|
||||
<string name="revanced_hide_general_ads_summary_off">Паказваюцца агульныя аб\"явы</string>
|
||||
<string name="revanced_hide_fullscreen_ads_title">Схаваць поўнаэкранную рэкламу</string>
|
||||
<string name="revanced_hide_fullscreen_ads_summary_on">Поўнаэкранная рэклама схавана\n\nГэта функцыя даступная толькі для старых прылад</string>
|
||||
<string name="revanced_hide_fullscreen_ads_summary_on">"Схаваны поўнаэкранныя рэкламныя ролікі
|
||||
|
||||
Гэтая функцыя даступная толькі для старых прылад"</string>
|
||||
<string name="revanced_hide_fullscreen_ads_summary_off">Адлюстроўваецца поўнаэкранная рэклама</string>
|
||||
<string name="revanced_hide_buttoned_ads_title">Схаваць рэкламу на кнопках</string>
|
||||
<string name="revanced_hide_buttoned_ads_summary_on">Аб\"явы на кнопках схаваныя</string>
|
||||
@@ -302,6 +349,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_hide_products_banner_title">Схаваць банер для прагляду прадуктаў</string>
|
||||
<string name="revanced_hide_products_banner_summary_on">Банэр схаваны</string>
|
||||
<string name="revanced_hide_products_banner_summary_off">Паказваецца банэр</string>
|
||||
<string name="revanced_hide_player_store_shelf_title">Схаваць полку крамы прайгравальніка</string>
|
||||
<string name="revanced_hide_player_store_shelf_summary_on">Паліца крамы схавана</string>
|
||||
<string name="revanced_hide_player_store_shelf_summary_off">Паліца крамы паказана</string>
|
||||
<string name="revanced_hide_shopping_links_title">Схаваць спасылкі на пакупкі ў апісанні відэа</string>
|
||||
<string name="revanced_hide_shopping_links_summary_on">Спасылкі на пакупкі схаваныя</string>
|
||||
<string name="revanced_hide_shopping_links_summary_off">Паказваюцца спасылкі на пакупкі</string>
|
||||
@@ -375,7 +425,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_swipe_volume_title">Уключыць жэст гучнасці</string>
|
||||
<string name="revanced_swipe_volume_summary_on">Правядзенне пальцам па гучнасці ўключана</string>
|
||||
<string name="revanced_swipe_volume_summary_off">Правядзенне пальцам па гучнасці адключана</string>
|
||||
<string name="revanced_swipe_press_to_engage_title">Уключыць жэст \"націсканне для правядзення пальцам\".</string>
|
||||
<string name="revanced_swipe_press_to_engage_title">Уключыць жэст \"націсканне для правядзення пальцам\"</string>
|
||||
<string name="revanced_swipe_press_to_engage_summary_on">Правядзенне пальцам уключана</string>
|
||||
<string name="revanced_swipe_press_to_engage_summary_off">Правядзенне пальцам адключана</string>
|
||||
<string name="revanced_swipe_haptic_feedback_title">Уключыць тактыльную зваротную сувязь</string>
|
||||
@@ -405,22 +455,22 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<patch id="layout.buttons.action.hideButtonsPatch">
|
||||
<string name="revanced_hide_buttons_screen_title">Кнопкі дзеянняў</string>
|
||||
<string name="revanced_hide_buttons_screen_summary">Схаваць або паказаць кнопкі пад відэа</string>
|
||||
<string name="revanced_hide_like_dislike_button_title">Схаваць \"Падабаецца\" і \"Не падабаецца\".</string>
|
||||
<string name="revanced_hide_like_dislike_button_title">Схаваць \"Падабаецца\" і \"Не падабаецца\"</string>
|
||||
<string name="revanced_hide_like_dislike_button_summary_on">Кнопкі \"Падабаецца\" і \"Не падабаецца\" схаваны</string>
|
||||
<string name="revanced_hide_like_dislike_button_summary_off">Паказваюцца кнопкі \"Падабаецца\" і \"Не падабаецца\".</string>
|
||||
<string name="revanced_hide_like_dislike_button_summary_off">Паказваюцца кнопкі \"Падабаецца\" і \"Не падабаецца\"</string>
|
||||
<!-- 'Share' should be translated with the same localized wording that YouTube displays. -->
|
||||
<string name="revanced_hide_share_button_title">Схаваць Share</string>
|
||||
<string name="revanced_hide_share_button_summary_on">Кнопка \"Падзяліцца\" схавана</string>
|
||||
<string name="revanced_hide_share_button_summary_off">Паказана кнопка \"Падзяліцца\".</string>
|
||||
<string name="revanced_hide_share_button_summary_off">Паказана кнопка \"Падзяліцца\"</string>
|
||||
<!-- 'Report' should be translated with the same localized wording that YouTube displays.
|
||||
This button usually appears only on live streams. -->
|
||||
<string name="revanced_hide_report_button_title">Схаваць справаздачу</string>
|
||||
<string name="revanced_hide_report_button_summary_on">Кнопка \"Паведаміць\" схавана</string>
|
||||
<string name="revanced_hide_report_button_summary_off">Паказана кнопка \"Паведаміць\".</string>
|
||||
<string name="revanced_hide_report_button_summary_off">Паказана кнопка \"Паведаміць\"</string>
|
||||
<!-- 'Remix' should be translated with the same localized wording that YouTube displays. -->
|
||||
<string name="revanced_hide_remix_button_title">Схаваць рэмікс</string>
|
||||
<string name="revanced_hide_remix_button_summary_on">Кнопка \"Рэмікс\" схавана</string>
|
||||
<string name="revanced_hide_remix_button_summary_off">Паказана кнопка \"Рэмікс\".</string>
|
||||
<string name="revanced_hide_remix_button_summary_off">Паказана кнопка \"Рэмікс\"</string>
|
||||
<!-- 'Download' should be translated with the same localized wording that YouTube displays. -->
|
||||
<string name="revanced_hide_download_button_title">Схаваць загрузку</string>
|
||||
<string name="revanced_hide_download_button_summary_on">Кнопка загрузкі схавана</string>
|
||||
@@ -436,7 +486,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<!-- 'Save' should be translated with the same localized wording that YouTube displays. -->
|
||||
<string name="revanced_hide_playlist_button_title">Схаваць Захаваць у плэйліст</string>
|
||||
<string name="revanced_hide_playlist_button_summary_on">Кнопка \"Захаваць у спіс прайгравання\" схавана</string>
|
||||
<string name="revanced_hide_playlist_button_summary_off">Паказана кнопка \"Захаваць у спіс прайгравання\".</string>
|
||||
<string name="revanced_hide_playlist_button_summary_off">Паказана кнопка \"Захаваць у спіс прайгравання\"</string>
|
||||
</patch>
|
||||
<patch id="layout.buttons.navigation.navigationButtonsPatch">
|
||||
<string name="revanced_navigation_buttons_screen_title">Кнопкі навігацыі</string>
|
||||
@@ -444,23 +494,37 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<!-- 'Home' should be translated using the same localized wording YouTube displays for the tab. -->
|
||||
<string name="revanced_hide_home_button_title">Схаваць галоўную</string>
|
||||
<string name="revanced_hide_home_button_summary_on">Кнопка \"Дадому\" схавана</string>
|
||||
<string name="revanced_hide_home_button_summary_off">Паказана кнопка \"Дадому\".</string>
|
||||
<string name="revanced_hide_home_button_summary_off">Паказана кнопка \"Дадому\"</string>
|
||||
<!-- 'Shorts' should be translated using the same localized wording YouTube displays the tab. -->
|
||||
<string name="revanced_hide_shorts_button_title">Схаваць Shorts</string>
|
||||
<string name="revanced_hide_shorts_button_summary_on">Кнопка Shorts схавана</string>
|
||||
<string name="revanced_hide_shorts_button_summary_off">Кнопка shorts паказваецца</string>
|
||||
<!-- The Create button has no display name. Translate normally. -->
|
||||
<string name="revanced_hide_create_button_title">Схаваць Стварыць</string>
|
||||
<string name="revanced_hide_create_button_summary_on">Кнопка \"Стварыць\" схавана</string>
|
||||
<string name="revanced_hide_create_button_summary_off">Паказана кнопка \"Стварыць\".</string>
|
||||
<string name="revanced_hide_create_button_summary_off">Паказана кнопка \"Стварыць\"</string>
|
||||
<!-- 'Subscriptions' should be translated using the same localized wording YouTube displays the tab. -->
|
||||
<string name="revanced_hide_subscriptions_button_title">Схаваць падпіскі</string>
|
||||
<string name="revanced_hide_subscriptions_button_summary_on">Кнопка \"Падпіскі\" схавана</string>
|
||||
<string name="revanced_hide_subscriptions_button_summary_off">Паказана кнопка \"Падпіскі\".</string>
|
||||
<string name="revanced_hide_subscriptions_button_summary_off">Паказана кнопка \"Падпіскі\"</string>
|
||||
<!-- 'Notifications' should be translated using the same localized wording YouTube displays the tab. -->
|
||||
<string name="revanced_switch_create_with_notifications_button_title">Пераключальнік \"Стварыць з апавяшчэннямі\".</string>
|
||||
<string name="revanced_switch_create_with_notifications_button_summary_on">Кнопка \"Стварыць\" замяняецца кнопкай \"Апавяшчэнні\"\n\nЗаўвага: пры ўключэнні гэтага таксама прымусова хаваецца відэарэклама</string>
|
||||
<string name="revanced_switch_create_with_notifications_button_summary_off">Кнопка \"Стварыць\" не ўзаемадзейнічае з кнопкай \"Апавяшчэнні\".</string>
|
||||
<string name="revanced_switch_create_with_notifications_button_title">Пераключальнік \"Стварыць з апавяшчэннямі\"</string>
|
||||
<string name="revanced_switch_create_with_notifications_button_summary_on">"Кнопка «Стварыць» заменена кнопкай «Апавяшчэнні»
|
||||
|
||||
Заўвага: Уключэнне гэтага таксама прымусова схавае відэарэкламу"</string>
|
||||
<string name="revanced_switch_create_with_notifications_button_summary_off">Кнопка \"Стварыць\" не ўзаемадзейнічае з кнопкай \"Апавяшчэнні\"</string>
|
||||
<string name="revanced_hide_navigation_button_labels_title">Схаваць меткі кнопак навігацыі</string>
|
||||
<string name="revanced_hide_navigation_button_labels_summary_on">Цэтлікі схаваныя</string>
|
||||
<string name="revanced_hide_navigation_button_labels_summary_off">Этыкеткі паказаны</string>
|
||||
<string name="revanced_disable_translucent_status_bar_title">Адключыць празрыстую панэль стану</string>
|
||||
<string name="revanced_disable_translucent_status_bar_summary_on">Панэль стану непразрыстая.</string>
|
||||
<string name="revanced_disable_translucent_status_bar_summary_off">Панэль стану няпразрыстая ці празрыстая.</string>
|
||||
<string name="revanced_disable_translucent_navigation_bar_light_title">Адключыць светлую празрыстую панэль</string>
|
||||
<string name="revanced_disable_translucent_navigation_bar_light_summary_on">Панэль навігацыі ў светлым рэжыме непразрыстая</string>
|
||||
<string name="revanced_disable_translucent_navigation_bar_light_summary_off">Панэль навігацыі ў светлай тэме няпразрыстая ці празрыстая.</string>
|
||||
<string name="revanced_disable_translucent_navigation_bar_dark_title">Адключыць цёмную непразрыстую панэль.</string>
|
||||
<string name="revanced_disable_translucent_navigation_bar_dark_summary_on">Панэль навігацыі ў цёмным рэжыме непразрыстая</string>
|
||||
<string name="revanced_disable_translucent_navigation_bar_dark_summary_off">Панэль навігацыі ў цёмнай тэме няпразрыстая.</string>
|
||||
</patch>
|
||||
<patch id="layout.hide.player.flyoutmenupanel.hidePlayerFlyoutMenuPatch">
|
||||
<string name="revanced_hide_player_flyout_title">Выпадаючае меню</string>
|
||||
@@ -474,6 +538,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_hide_player_flyout_additional_settings_summary_on">Меню дадатковых налад схавана</string>
|
||||
<string name="revanced_hide_player_flyout_additional_settings_summary_off">Адлюструецца меню дадатковых налад</string>
|
||||
<!-- 'Sleep timer' should be translated using the same localized wording YouTube displays for the menu item. -->
|
||||
<string name="revanced_hide_player_flyout_sleep_timer_title">Схаваць таймер сну</string>
|
||||
<string name="revanced_hide_player_flyout_sleep_timer_summary_on">Меню таймера сну схавана</string>
|
||||
<string name="revanced_hide_player_flyout_sleep_timer_summary_off">Меню таймера сну паказана</string>
|
||||
<!-- 'Loop video' should be translated using the same localized wording YouTube displays for the menu item. -->
|
||||
<string name="revanced_hide_player_flyout_loop_video_title">Схаваць цыкл відэа</string>
|
||||
<string name="revanced_hide_player_flyout_loop_video_summary_on">Меню цыклічнага відэа схавана</string>
|
||||
@@ -482,6 +549,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_hide_player_flyout_ambient_mode_title">Схаваць неактыўны рэжым</string>
|
||||
<string name="revanced_hide_player_flyout_ambient_mode_summary_on">Меню неактыўнага рэжыму схавана</string>
|
||||
<string name="revanced_hide_player_flyout_ambient_mode_summary_off">Адлюстроўваецца меню рэжыму навакольнага асяроддзя</string>
|
||||
<string name="revanced_hide_player_flyout_stable_volume_title">Схаваць стабільны гук</string>
|
||||
<string name="revanced_hide_player_flyout_stable_volume_summary_off">Меню стабільнага гуку паказана</string>
|
||||
<string name="revanced_hide_player_flyout_stable_volume_summary_on">Меню стабільнага гуку схавана</string>
|
||||
<!-- 'Help & feedback' should be translated using the same localized wording YouTube displays for the menu item. -->
|
||||
<string name="revanced_hide_player_flyout_help_title">Схаваць Даведку & зваротная сувязь</string>
|
||||
<string name="revanced_hide_player_flyout_help_summary_on">Дапамога & меню зваротнай сувязі схавана</string>
|
||||
@@ -506,7 +576,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<!-- '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_summary_on">Меню прагляду ў VR схавана</string>
|
||||
<string name="revanced_hide_player_flyout_watch_in_vr_summary_off">Паказана меню \"Глядзець у VR\".</string>
|
||||
<string name="revanced_hide_player_flyout_watch_in_vr_summary_off">Паказана меню \"Глядзець у VR\"</string>
|
||||
<string name="revanced_hide_player_flyout_video_quality_footer_title">Схаваць калонтытул меню якасці відэа</string>
|
||||
<string name="revanced_hide_player_flyout_video_quality_footer_summary_on">Ніжні калонтытул меню якасці відэа схаваны</string>
|
||||
<string name="revanced_hide_player_flyout_video_quality_footer_summary_off">Паказваецца ніжні калонтытул меню якасці відэа</string>
|
||||
@@ -519,7 +589,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_hide_cast_button_summary_on">Кнопка Cast схавана</string>
|
||||
<string name="revanced_hide_cast_button_summary_off">Паказана кнопка Cast</string>
|
||||
<!-- This button does not display any text, but 'captions' should be translated using the same wording used as the translation of 'revanced_hide_player_flyout_captions_title' -->
|
||||
<string name="revanced_hide_captions_button_title">Кнопка «Схаваць цітры».</string>
|
||||
<string name="revanced_hide_captions_button_title">Кнопка «Схаваць цітры»</string>
|
||||
<string name="revanced_hide_captions_button_summary_on">Кнопка субцітраў схавана</string>
|
||||
<string name="revanced_hide_captions_button_summary_off">Паказана кнопка субцітраў</string>
|
||||
<string name="revanced_hide_autoplay_button_title">Схаваць кнопку аўтазапуску</string>
|
||||
@@ -555,16 +625,27 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_hide_seekbar_thumbnail_summary_off">Адлюстроўваецца панэль пошуку эскізаў</string>
|
||||
</patch>
|
||||
<patch id="layout.hide.shorts.hideShortsComponentsResourcePatch">
|
||||
<string name="revanced_shorts_player_screen_title">Прайгравальнік Shorts</string>
|
||||
<string name="revanced_shorts_player_screen_summary">Схаваць або паказаць кампаненты ў прайгравальніку Shorts</string>
|
||||
<!-- 'home' should be translated using the same localized wording YouTube displays for the home tab. -->
|
||||
<string name="revanced_hide_shorts_home_title">Схаваць шорты ў хатняй стужцы</string>
|
||||
<string name="revanced_hide_shorts_home_summary_on">Shorts у стужцы хатняй старонкі схаваны</string>
|
||||
<string name="revanced_hide_shorts_home_summary_off">Shorts у стужцы хатняй старонкі паказаны</string>
|
||||
<!-- 'subscription' should be translated using the same localized wording YouTube displays for the subscription tab. -->
|
||||
<string name="revanced_hide_shorts_subscriptions_title">Схаваць Shorts у стужцы падпіскі</string>
|
||||
<string name="revanced_hide_shorts_subscriptions_summary_on">Shorts у стужцы падпіскі схаваны</string>
|
||||
<string name="revanced_hide_shorts_subscriptions_summary_off">Shorts у стужцы падпіскі паказаны</string>
|
||||
<string name="revanced_hide_shorts_search_title">Схаваць Shorts у выніках пошуку</string>
|
||||
<string name="revanced_hide_shorts_search_summary_on">Shorts у выніках пошуку схаваны</string>
|
||||
<string name="revanced_hide_shorts_search_summary_off">Shorts у выніках пошуку паказаны</string>
|
||||
<!-- 'join' should be translated using the same localized wording YouTube displays for the button. -->
|
||||
<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_off">Паказана кнопка «Далучыцца».</string>
|
||||
<string name="revanced_hide_shorts_join_button_summary_off">Паказана кнопка «Далучыцца»</string>
|
||||
<!-- 'subscribe' should be translated using the same localized wording YouTube displays for the button. -->
|
||||
<string name="revanced_hide_shorts_subscribe_button_title">Схаваць кнопку падпісацца</string>
|
||||
<string name="revanced_hide_shorts_subscribe_button_summary_on">Кнопка \"Падпісацца\" схавана</string>
|
||||
<string name="revanced_hide_shorts_subscribe_button_summary_off">Паказана кнопка «Падпісацца».</string>
|
||||
<string name="revanced_hide_shorts_subscribe_button_summary_off">Паказана кнопка «Падпісацца»</string>
|
||||
<string name="revanced_hide_shorts_paused_overlay_buttons_title">Схаваць прыпыненыя кнопкі накладання</string>
|
||||
<string name="revanced_hide_shorts_paused_overlay_buttons_summary_on">Прыпыненыя кнопкі накладання схаваны</string>
|
||||
<string name="revanced_hide_shorts_paused_overlay_buttons_summary_off">Паказваюцца прыпыненыя кнопкі накладання</string>
|
||||
@@ -573,33 +654,54 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_hide_shorts_shop_button_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_off">Паказана кнопка \"Супер дзякуй\".</string>
|
||||
<string name="revanced_hide_shorts_super_thanks_button_summary_off">Паказана кнопка \"Супер дзякуй\"</string>
|
||||
<string name="revanced_hide_shorts_tagged_products_title">Схаваць пазначаныя прадукты</string>
|
||||
<string name="revanced_hide_shorts_tagged_products_summary_on">Пазначаныя прадукты схаваны</string>
|
||||
<string name="revanced_hide_shorts_tagged_products_summary_off">Прадукты з тэгамі паказаны</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_off">Паказана метка месцазнаходжання</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_off">Кнопка захавання музыкі паказана</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_off">Кнопка выкарыстання шаблону паказана</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_off">Кнопка ⬆️Будущие ролики⬆️ отображается</string>
|
||||
<string name="revanced_hide_shorts_green_screen_button_title">Скрыть кнопку с зелёным экраном 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_hashtag_button_title">Скрыть хештег-кнопку Shorts</string>
|
||||
<string name="revanced_hide_shorts_hashtag_button_summary_on">Хештег-кнопка Shorts скрыта</string>
|
||||
<string name="revanced_hide_shorts_hashtag_button_summary_off">Хештег-кнопка Shorts отображается</string>
|
||||
<string name="revanced_hide_shorts_search_suggestions_title">Схаваць прапановы пошуку</string>
|
||||
<string name="revanced_hide_shorts_search_suggestions_summary_on">Пошукавыя прапановы схаваны</string>
|
||||
<string name="revanced_hide_shorts_search_suggestions_summary_off">Паказваюцца прапановы пошуку</string>
|
||||
<string name="revanced_hide_shorts_like_button_title">Схаваць кнопку \"Падабаецца\".</string>
|
||||
<string name="revanced_hide_shorts_stickers_title">Скрыть стикеры</string>
|
||||
<string name="revanced_hide_shorts_stickers_summary_on">Стикеры Shorts скрыты</string>
|
||||
<string name="revanced_hide_shorts_stickers_summary_off">Стикеры Shorts отображаются</string>
|
||||
<string name="revanced_hide_shorts_like_fountain_title">Скрыть всплывающее окно с лайками Shorts</string>
|
||||
<string name="revanced_hide_shorts_like_fountain_summary_on">Анимация всплывающего окна с лайками Shorts скрыта</string>
|
||||
<string name="revanced_hide_shorts_like_fountain_summary_off">Анимация всплывающего окна с лайками Shorts отображается</string>
|
||||
<string name="revanced_hide_shorts_like_button_title">Схаваць кнопку \"Падабаецца\"</string>
|
||||
<string name="revanced_hide_shorts_like_button_summary_on">Кнопка \"Падабаецца\" схавана</string>
|
||||
<string name="revanced_hide_shorts_like_button_summary_off">Паказана кнопка \"Падабаецца\".</string>
|
||||
<string name="revanced_hide_shorts_dislike_button_title">Схаваць кнопку \"не падабаецца\".</string>
|
||||
<string name="revanced_hide_shorts_like_button_summary_off">Паказана кнопка \"Падабаецца\"</string>
|
||||
<string name="revanced_hide_shorts_dislike_button_title">Схаваць кнопку \"не падабаецца\"</string>
|
||||
<string name="revanced_hide_shorts_dislike_button_summary_on">Кнопка \"Не падабаецца\" схавана</string>
|
||||
<string name="revanced_hide_shorts_dislike_button_summary_off">Паказана кнопка \"Не падабаецца\".</string>
|
||||
<string name="revanced_hide_shorts_comments_button_title">Кнопка \"Схаваць каментарыі\".</string>
|
||||
<string name="revanced_hide_shorts_dislike_button_summary_off">Паказана кнопка \"Не падабаецца\"</string>
|
||||
<string name="revanced_hide_shorts_comments_button_title">Кнопка \"Схаваць каментарыі\"</string>
|
||||
<string name="revanced_hide_shorts_comments_button_summary_on">Кнопка каментарыяў схавана</string>
|
||||
<string name="revanced_hide_shorts_comments_button_summary_off">Паказана кнопка каментарыяў</string>
|
||||
<!-- 'remix' should be translated using the same localized wording YouTube displays for the button. -->
|
||||
<string name="revanced_hide_shorts_remix_button_title">Схаваць кнопку рэмікса</string>
|
||||
<string name="revanced_hide_shorts_remix_button_summary_on">Кнопка \"Рэмікс\" схавана</string>
|
||||
<string name="revanced_hide_shorts_remix_button_summary_off">Паказана кнопка \"Рэмікс\".</string>
|
||||
<string name="revanced_hide_shorts_remix_button_summary_off">Паказана кнопка \"Рэмікс\"</string>
|
||||
<!-- 'share' should be translated using the same localized wording YouTube displays for the button. -->
|
||||
<string name="revanced_hide_shorts_share_button_title">Схаваць кнопку абагульвання</string>
|
||||
<string name="revanced_hide_shorts_share_button_summary_on">Кнопка \"Падзяліцца\" схавана</string>
|
||||
<string name="revanced_hide_shorts_share_button_summary_off">Паказана кнопка \"Падзяліцца\".</string>
|
||||
<string name="revanced_hide_shorts_share_button_summary_off">Паказана кнопка \"Падзяліцца\"</string>
|
||||
<string name="revanced_hide_shorts_info_panel_title">Схаваць інфармацыйную панэль</string>
|
||||
<string name="revanced_hide_shorts_info_panel_summary_on">Інфармацыйная панэль схавана</string>
|
||||
<string name="revanced_hide_shorts_info_panel_summary_off">Паказана інфармацыйная панэль</string>
|
||||
@@ -615,7 +717,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_hide_shorts_full_video_link_label_title">Схаваць поўную метку спасылкі на відэа</string>
|
||||
<string name="revanced_hide_shorts_full_video_link_label_summary_on">Метка спасылкі на відэа схавана</string>
|
||||
<string name="revanced_hide_shorts_full_video_link_label_summary_off">Адлюструецца метка спасылкі на відэа</string>
|
||||
<string name="revanced_hide_shorts_sound_button_title">Кнопка \"Схаваць гук\".</string>
|
||||
<string name="revanced_hide_shorts_sound_button_title">Кнопка \"Схаваць гук\"</string>
|
||||
<string name="revanced_hide_shorts_sound_button_summary_on">Кнопка гуку схавана</string>
|
||||
<string name="revanced_hide_shorts_sound_button_summary_off">Паказана кнопка гуку</string>
|
||||
<string name="revanced_hide_shorts_navigation_bar_title">Схаваць панэль навігацыі</string>
|
||||
@@ -638,6 +740,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_hide_player_popup_panels_summary_off">Паказваюцца ўсплывальныя панэлі прайгравальніка</string>
|
||||
</patch>
|
||||
<patch id="layout.player.fullscreen.openVideosFullscreen">
|
||||
<string name="revanced_open_videos_fullscreen_portrait_title">Открывать видео на весь экран в портретном режиме</string>
|
||||
<string name="revanced_open_videos_fullscreen_portrait_summary_on">Видео открываются на весь экран</string>
|
||||
<string name="revanced_open_videos_fullscreen_portrait_summary_off">Видео не открываются на весь экран</string>
|
||||
</patch>
|
||||
<patch id="layout.player.overlay.customPlayerOverlayOpacityResourcePatch">
|
||||
<string name="revanced_player_overlay_opacity_title">Непразрыстасць накладання прайгравальніка</string>
|
||||
@@ -651,12 +756,14 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_ryd_failure_client_rate_limit_requested">Дызлайкі недаступныя (дасягнуты ліміт кліенцкага API)</string>
|
||||
<string name="revanced_ryd_failure_generic">Не падабаецца (%s)</string>
|
||||
<!-- Toast shown if the user enables RYD while a video is opened, and then tries to vote for the video. -->
|
||||
<string name="revanced_ryd_failure_ryd_enabled_while_playing_video_then_user_voted">Перазагрузіце відэа, каб прагаласаваць з дапамогай функцыі \"Вярнуць не падабаецца YouTube\".</string>
|
||||
<string name="revanced_ryd_failure_ryd_enabled_while_playing_video_then_user_voted">Перазагрузіце відэа, каб прагаласаваць з дапамогай функцыі \"Вярнуць не падабаецца YouTube\"</string>
|
||||
<string name="revanced_ryd_enable_summary_on">Дызлайкі паказаны</string>
|
||||
<string name="revanced_ryd_enable_summary_off">Дызлайкі не паказваюцца</string>
|
||||
<string name="revanced_ryd_shorts_title">Паказвайце \"не падабаецца\" на Shorts</string>
|
||||
<string name="revanced_ryd_shorts_summary_on">Адзнакі \"не падабаецца\" ў Shorts</string>
|
||||
<string name="revanced_ryd_shorts_summary_on_disclaimer">Адзнакі \"Не падабаецца\" ў Shorts\n\nАбмежаванне: адзнакі \"Не падабаецца\" могуць не з\"яўляцца ў рэжыме інкогніта</string>
|
||||
<string name="revanced_ryd_shorts_summary_on_disclaimer">"Непападання паказаны на Shorts
|
||||
|
||||
Абмежаванне: Непападання могуць не з'яўляцца ў рэжыме інкогніта"</string>
|
||||
<string name="revanced_ryd_shorts_summary_off">Дызлакі схаваныя ў Shorts</string>
|
||||
<string name="revanced_ryd_dislike_percentage_title">Дызлайкі ў працэнтах</string>
|
||||
<string name="revanced_ryd_dislike_percentage_summary_on">Неўпадабанні паказаны ў працэнтах</string>
|
||||
@@ -694,6 +801,16 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_wide_searchbar_summary_off">Шырокая панэль пошуку адключана</string>
|
||||
</patch>
|
||||
<patch id="layout.seekbar.seekbarThumbnailsPatch">
|
||||
<string name="revanced_seekbar_thumbnails_high_quality_title">Включить миниатюры высокого качества</string>
|
||||
<string name="revanced_seekbar_thumbnails_high_quality_summary_on">Миниатюры ползунка прогресса — высокого качества</string>
|
||||
<string name="revanced_seekbar_thumbnails_high_quality_summary_off">Миниатюры ползунка прогресса — среднего качества</string>
|
||||
<string name="revanced_seekbar_thumbnails_high_quality_legacy_summary_on">Миниатюры ползунка прогресса в полноэкранном режиме — высокого качества</string>
|
||||
<string name="revanced_seekbar_thumbnails_high_quality_legacy_summary_off">Миниатюры ползунка прогресса в полноэкранном режиме — среднего качества</string>
|
||||
<string name="revanced_seekbar_thumbnails_high_quality_dialog_message">"Гэта таксама аднавіць мініатюры на трансляцыях у прамым эфіры, якія не маюць мініатюр з магчымасцю перамоткі.
|
||||
|
||||
Мініатюры з магчымасцю перамоткі будуць выкарыстоўваць тую ж якасць, што і бягучае відэа.
|
||||
|
||||
Гэтая функцыя лепш за ўсё працуе з якасцю відэа 720p або ніжэй і пры выкарыстанні вельмі хуткага Інтэрнэт-злучэння."</string>
|
||||
<string name="revanced_restore_old_seekbar_thumbnails_title">Аднавіць старыя мініяцюры панэлі пошуку</string>
|
||||
<string name="revanced_restore_old_seekbar_thumbnails_summary_on">Эскізы панэлі пошуку з\"явяцца над панэллю пошуку</string>
|
||||
<string name="revanced_restore_old_seekbar_thumbnails_summary_off">Мініяцюры панэлі пошуку з\"явяцца ў поўнаэкранным рэжыме</string>
|
||||
@@ -720,7 +837,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_sb_general_time_without_sum_off">Паказана поўная даўжыня відэа</string>
|
||||
<string name="revanced_sb_create_segment_category">Стварэнне новых сегментаў</string>
|
||||
<string name="revanced_sb_enable_create_segment">Паказаць кнопку стварэння новага сегмента</string>
|
||||
<string name="revanced_sb_enable_create_segment_sum_on">Паказана кнопка \"Стварыць новы сегмент\".</string>
|
||||
<string name="revanced_sb_enable_create_segment_sum_on">Паказана кнопка \"Стварыць новы сегмент\"</string>
|
||||
<string name="revanced_sb_enable_create_segment_sum_off">Кнопка \"Стварыць новы сегмент\" не паказваецца</string>
|
||||
<string name="revanced_sb_general_adjusting">Адрэгулюйце новы крок сегмента</string>
|
||||
<string name="revanced_sb_general_adjusting_sum">Колькасць мілісекунд, на якую перамяшчаюцца кнопкі рэгулявання часу пры стварэнні новых сегментаў</string>
|
||||
@@ -740,6 +857,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_sb_general_skipcount_sum_off">Адсочванне колькасці пропускаў не ўключана</string>
|
||||
<string name="revanced_sb_general_min_duration">Мінімальная працягласць сегмента</string>
|
||||
<string name="revanced_sb_general_min_duration_sum">Сегменты, карацейшыя за гэта значэнне (у секундах), не будуць паказвацца або прапускацца</string>
|
||||
<string name="revanced_sb_general_min_duration_invalid">Неверная продолжительность</string>
|
||||
<string name="revanced_sb_general_uuid">Ваш асабісты ідэнтыфікатар карыстальніка</string>
|
||||
<string name="revanced_sb_general_uuid_sum">Гэта павінна быць прыватным. Гэта як пароль, і яго нельга нікому паведамляць. Калі ў кагосьці гэта ёсць, ён можа выдаваць сябе за вас</string>
|
||||
<string name="revanced_sb_general_uuid_invalid">Прыватны ідэнтыфікатар карыстальніка павінен быць не менш за 30 сімвалаў</string>
|
||||
@@ -755,7 +873,11 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_sb_settings_import_successful">Налады паспяхова імпартаваны</string>
|
||||
<string name="revanced_sb_settings_import_failed">Не ўдалося імпартаваць: %s</string>
|
||||
<string name="revanced_sb_settings_export_failed">Не ўдалося экспартаваць: %s</string>
|
||||
<string name="revanced_sb_settings_revanced_export_user_id_warning">Вашы налады ўтрымліваюць прыватны ідэнтыфікатар карыстальніка SponsorBlock.\n\nВаш ідэнтыфікатар карыстальніка падобны на пароль, і яго ніколі не трэба раскрываць.\n</string>
|
||||
<string name="revanced_sb_settings_revanced_export_user_id_warning">"Вашы налады ўтрымліваюць асабісты ідэнтыфікатар SponsorBlock.
|
||||
|
||||
Ваш ідэнтыфікатар карыстальніка падобны да пароля, і яго ніколі не варта дзяліцца.
|
||||
|
||||
"</string>
|
||||
<string name="revanced_sb_settings_revanced_export_user_id_warning_dismiss">Больш не паказваць</string>
|
||||
<string name="revanced_sb_diff_segments">Змяніць паводзіны сегмента</string>
|
||||
<string name="revanced_sb_segments_sponsor">Спонсар</string>
|
||||
@@ -815,9 +937,10 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_sb_submit_failed_invalid">Немагчыма адправіць сегмент: %s</string>
|
||||
<string name="revanced_sb_submit_failed_timeout">SponsorBlock часова не працуе</string>
|
||||
<string name="revanced_sb_submit_failed_unknown_error">Немагчыма адправіць сегмент (статус: %1$d %2$s)</string>
|
||||
<string name="revanced_sb_submit_failed_rate_limit">Немагчыма адправіць сегмент.\nАцэнка абмежаваная (занадта шмат ад аднаго карыстальніка або IP)</string>
|
||||
<string name="revanced_sb_submit_failed_rate_limit">Немагчыма адправіць сегмент. Абмежаванне па хуткасці (занадта шмат ад аднаго і таго ж карыстальніка або IP-адраса)</string>
|
||||
<string name="revanced_sb_submit_failed_forbidden">Немагчыма адправіць сегмент: %s</string>
|
||||
<string name="revanced_sb_submit_failed_duplicate">Немагчыма адправіць сегмент.\nУжо існуе</string>
|
||||
<string name="revanced_sb_submit_failed_duplicate">"Немагчыма адправіць сегмент.
|
||||
Ужо існуе"</string>
|
||||
<string name="revanced_sb_submit_succeeded">Сегмент паспяхова адпраўлены</string>
|
||||
<!-- Toast shown if network connection times out. Translations of this should not be longer than the original English or the text can be clipped and not entirely shown. -->
|
||||
<string name="revanced_sb_sponsorblock_connection_failure_timeout">SponsorBlock часова недаступны (час чакання API скончыўся)</string>
|
||||
@@ -840,7 +963,15 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_sb_new_segment_time_start">Час пачатку сегмента</string>
|
||||
<string name="revanced_sb_new_segment_time_end">Час заканчэння сегмента</string>
|
||||
<string name="revanced_sb_new_segment_confirm_title">Ці правільны час?</string>
|
||||
<string name="revanced_sb_new_segment_confirm_content">Сегмент ад\n\n%1$s\nда\n%2$s\n\n(%3$s)\n\nГатовы адправіць?</string>
|
||||
<string name="revanced_sb_new_segment_confirm_content">"Сэгмэнт знаходзіцца паміж
|
||||
|
||||
%1$s
|
||||
да
|
||||
%2$s
|
||||
|
||||
(%3$s)
|
||||
|
||||
Гатовыя адправіць?"</string>
|
||||
<string name="revanced_sb_new_segment_start_is_before_end">Пачынаць трэба раней за канец</string>
|
||||
<string name="revanced_sb_new_segment_mark_locations_first">Спачатку адзначце два месцы на панэлі часу</string>
|
||||
<string name="revanced_sb_new_segment_preview_segment_first">Папярэдні прагляд сегмента і пераканайцеся, што ён праходзіць плаўна</string>
|
||||
@@ -858,6 +989,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_sb_stats_username_changed">Імя карыстальніка паспяхова зменена</string>
|
||||
<string name="revanced_sb_stats_reputation">Ваша рэпутацыя <b>%.2f</b></string>
|
||||
<string name="revanced_sb_stats_submissions">Вы стварылі <b>%s</b> сегменты</string>
|
||||
<string name="revanced_sb_stats_submissions_sum">Коснитесь, чтобы просмотреть ваши сегменты</string>
|
||||
<string name="revanced_sb_stats_saved_zero">Табліца лідэраў SponsorBlock</string>
|
||||
<string name="revanced_sb_stats_saved">Вы выратавалі людзей з <b>%s</b> сегменты</string>
|
||||
<string name="revanced_sb_stats_saved_sum_zero">Націсніце тут, каб убачыць глабальную статыстыку і вядучых удзельнікаў</string>
|
||||
@@ -881,10 +1013,15 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_spoof_app_version_title">Версія праграмы Spoof</string>
|
||||
<string name="revanced_spoof_app_version_summary_on">Версія падробленая</string>
|
||||
<string name="revanced_spoof_app_version_summary_off">Версія не падробленая</string>
|
||||
<string name="revanced_spoof_app_version_user_dialog_message">Версія праграмы будзе падменена на старую версію YouTube.\n\nГэта зменіць знешні выгляд і функцыі праграмы, але могуць узнікнуць невядомыя пабочныя эфекты.\n\nКалі пазней выключыць, рэкамендуецца ачысціць даныя праграмы, каб прадухіліць памылкі карыстацкага інтэрфейсу.</string>
|
||||
<string name="revanced_spoof_app_version_user_dialog_message">"Версія прыкладання будзе падроблены да старэйшай версіі YouTube.
|
||||
|
||||
Гэта зменіць знешні выгляд і функцыі прыкладання, але могуць узнікнуць невядомыя пабочныя эфекты.
|
||||
|
||||
Калі пазней будзе адключана, рэкамендуецца ачысціць даныя прыкладання, каб пазбегнуць памылак у інтэрфейсе."</string>
|
||||
<!-- It is ideal, but not required, if the text here appears is alphabetically after the text used for 'revanced_spoof_app_version_title'.
|
||||
This is because the 'General layout' menu uses alphabetic sorting, and it functionally works better if the spoof target selector appears below the 'Spoof app version' UI switch -->
|
||||
<string name="revanced_spoof_app_version_target_title">Падробка мэтавай версіі праграмы</string>
|
||||
<string name="revanced_spoof_app_version_target_entry_1">19.35.36 — Восстановить старые значки плеера Shorts</string>
|
||||
<!-- 'RYD' is 'Return YouTube Dislike' -->
|
||||
<string name="revanced_spoof_app_version_target_legacy_entry_1">18.33.40 - Аднаўленне RYD на Shorts у рэжыме інкогніта</string>
|
||||
<string name="revanced_spoof_app_version_target_legacy_entry_2">18.20.39 - Аднавіць хуткасць шырокага відэа & якаснае меню</string>
|
||||
@@ -894,19 +1031,39 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<patch id="layout.startpage.changeStartPagePatch">
|
||||
<string name="revanced_change_start_page_title">Усталяваць стартавую старонку</string>
|
||||
<string name="revanced_change_start_page_entry_default">Па змаўчанні</string>
|
||||
<string name="revanced_change_start_page_entry_browse">Обзор каналов</string>
|
||||
<string name="revanced_change_start_page_entry_explore">Дасьледуйце</string>
|
||||
<string name="revanced_change_start_page_entry_gaming">Игры</string>
|
||||
<string name="revanced_change_start_page_entry_history">Гісторыя</string>
|
||||
<string name="revanced_change_start_page_entry_library">Библиотека</string>
|
||||
<string name="revanced_change_start_page_entry_liked_videos">Спадабаліся відэа</string>
|
||||
<string name="revanced_change_start_page_entry_live">В прямом эфире</string>
|
||||
<string name="revanced_change_start_page_entry_movies">Фильмы</string>
|
||||
<string name="revanced_change_start_page_entry_music">Музыка</string>
|
||||
<string name="revanced_change_start_page_entry_search">Пошук</string>
|
||||
<string name="revanced_change_start_page_entry_sports">Спорт</string>
|
||||
<string name="revanced_change_start_page_entry_subscriptions">Падпіскі</string>
|
||||
<string name="revanced_change_start_page_entry_trending">У трэндзе</string>
|
||||
<string name="revanced_change_start_page_entry_watch_later">Посмотреть позже</string>
|
||||
</patch>
|
||||
<patch id="layout.startupshortsreset.disableResumingShortsOnStartupPatch">
|
||||
<string name="revanced_disable_resuming_shorts_player_title">Адключыць аднаўленне прайгравання Shorts</string>
|
||||
<string name="revanced_disable_resuming_shorts_player_summary_on">Прайгравальнік Shorts не аднаўляецца пры запуску праграмы</string>
|
||||
<string name="revanced_disable_resuming_shorts_player_summary_off">Прайгравальнік Shorts адновіцца пры запуску праграмы</string>
|
||||
</patch>
|
||||
<patch id="layout.shortsplayer.shortsPlayerTypePatch">
|
||||
<string name="revanced_shorts_player_type_title">Адкрыць Shorts з</string>
|
||||
<string name="revanced_shorts_player_type_shorts">Прайгравальнік Shorts</string>
|
||||
<string name="revanced_shorts_player_type_regular_player">Звычайны прайгравальнік</string>
|
||||
<string name="revanced_shorts_player_type_regular_player_fullscreen">Звычайны прайгравальнік на ўвесь экран</string>
|
||||
</patch>
|
||||
<patch id="layout.shortsautoplay.shortsAutoplayPatch">
|
||||
<string name="revanced_shorts_autoplay_title">Автовоспроизведение Shorts</string>
|
||||
<string name="revanced_shorts_autoplay_summary_on">Shorts будут воспроизводиться автоматически</string>
|
||||
<string name="revanced_shorts_autoplay_summary_off">Shorts будут повторяться</string>
|
||||
<string name="revanced_shorts_autoplay_background_title">Автовоспроизведение Shorts в фоновом режиме</string>
|
||||
<string name="revanced_shorts_autoplay_background_summary_on">Shorts в фоновом режиме будут воспроизводиться автоматически</string>
|
||||
<string name="revanced_shorts_autoplay_background_summary_off">Shorts в фоновом режиме будут повторяться</string>
|
||||
</patch>
|
||||
<patch id="layout.tablet.enableTabletLayoutPatch">
|
||||
<string name="revanced_tablet_layout_title">Уключыць макет планшэта</string>
|
||||
@@ -919,12 +1076,38 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_miniplayer_screen_summary">Змяніце стыль мінімізаванага плэера ў праграме</string>
|
||||
<string name="revanced_miniplayer_type_title">Тып мініплэера</string>
|
||||
<string name="revanced_miniplayer_type_entry_0">Інваліды</string>
|
||||
<string name="revanced_miniplayer_type_entry_1">Арыгінал</string>
|
||||
<string name="revanced_miniplayer_type_entry_1">Па змаўчанні</string>
|
||||
<string name="revanced_miniplayer_type_entry_2">Минимальный</string>
|
||||
<string name="revanced_miniplayer_type_entry_3">Планшэт</string>
|
||||
<string name="revanced_miniplayer_type_entry_4">Сучасны 1</string>
|
||||
<string name="revanced_miniplayer_type_entry_5">Сучасны 2</string>
|
||||
<string name="revanced_miniplayer_type_entry_6">Сучасны 3</string>
|
||||
<string name="revanced_miniplayer_rounded_corners_title">Включить закругленные углы</string>
|
||||
<string name="revanced_miniplayer_rounded_corners_summary_on">Углы закруглены</string>
|
||||
<string name="revanced_miniplayer_rounded_corners_summary_off">Углы квадратные</string>
|
||||
<string name="revanced_miniplayer_double_tap_action_title">Включить двойное нажатие и масштабирование с помощьющипка</string>
|
||||
<string name="revanced_miniplayer_double_tap_action_summary_on">"Уключана дзеянне «подвойнае націсканне» і «шчыпкі для змены памеру»
|
||||
|
||||
• Подвойнае націсканне, каб павялічыць памер міні-прайгравальніка
|
||||
• Подвойнае націсканне яшчэ раз, каб аднавіць першапачатковы памер"</string>
|
||||
<string name="revanced_miniplayer_double_tap_action_summary_off">Двойное нажатие и scalewithpinch отключены</string>
|
||||
<string name="revanced_miniplayer_drag_and_drop_title">Включить перетаскивание</string>
|
||||
<string name="revanced_miniplayer_drag_and_drop_summary_on">"Уключана перацягванне і кіданне
|
||||
|
||||
Міні-прайгравальнік можна перацягнуць у любы куток экрана"</string>
|
||||
<string name="revanced_miniplayer_drag_and_drop_summary_off">Перетаскивание отключено</string>
|
||||
<string name="revanced_miniplayer_horizontal_drag_title">Включить горизонтальный жест перетаскивания</string>
|
||||
<string name="revanced_miniplayer_horizontal_drag_summary_on">"Уключаны жэст гарызантальнага перацягвання
|
||||
|
||||
Міні-прайгравальнік можна перацягнуць за межы экрана ўлева ці ўправа"</string>
|
||||
<string name="revanced_miniplayer_horizontal_drag_summary_off">Горизонтальный жест перетаскивания отключен</string>
|
||||
<string name="revanced_miniplayer_hide_expand_close_title">Скрыть кнопку закрытия</string>
|
||||
<string name="revanced_miniplayer_hide_expand_close_summary_on">Кнопка закрытия скрыта</string>
|
||||
<string name="revanced_miniplayer_hide_expand_close_summary_off">Кнопка закрытия отображается</string>
|
||||
<string name="revanced_miniplayer_hide_expand_close_legacy_title">Схаваць кнопкі разгортвання і закрыцця</string>
|
||||
<string name="revanced_miniplayer_hide_expand_close_legacy_summary_on">"Кнопкі схаваны
|
||||
|
||||
Працягвайце пальцам, каб разгарнуць або закрыць"</string>
|
||||
<string name="revanced_miniplayer_hide_expand_close_legacy_summary_off">Паказваюцца кнопкі разгарнуць і закрыць</string>
|
||||
<string name="revanced_miniplayer_hide_subtext_title">Схаваць падтэксты</string>
|
||||
<string name="revanced_miniplayer_hide_subtext_summary_on">Падтэксты схаваныя</string>
|
||||
@@ -932,6 +1115,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_miniplayer_hide_rewind_forward_title">Схаваць кнопкі пераходу наперад і назад</string>
|
||||
<string name="revanced_miniplayer_hide_rewind_forward_summary_on">Пераход наперад і назад схаваны</string>
|
||||
<string name="revanced_miniplayer_hide_rewind_forward_summary_off">Паказваецца пераход наперад і назад</string>
|
||||
<string name="revanced_miniplayer_width_dip_title">Размер по умолчанию</string>
|
||||
<string name="revanced_miniplayer_width_dip_summary">Начальная размер на экране в пикселях</string>
|
||||
<string name="revanced_miniplayer_width_dip_invalid_toast">Размер пикселя должен быть в пределах %1$s и %2$s</string>
|
||||
<string name="revanced_miniplayer_opacity_title">Непразрыстасць накладання</string>
|
||||
<string name="revanced_miniplayer_opacity_summary">Значэнне непразрыстасці паміж 0-100, дзе 0 - празрысты</string>
|
||||
<string name="revanced_miniplayer_opacity_invalid_toast">Непразрыстасць накладання міні-плэера павінна быць ад 0 да 100</string>
|
||||
@@ -947,11 +1133,14 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_seekbar_custom_color_summary_off">Паказаны зыходны колер панэлі пошуку</string>
|
||||
<string name="revanced_seekbar_custom_color_value_title">Карыстальніцкі колер панэлі пошуку</string>
|
||||
<string name="revanced_seekbar_custom_color_value_summary">Колер панэлі пошуку</string>
|
||||
<string name="revanced_seekbar_custom_color_invalid">Неверное значение цвета ползунка прогресса</string>
|
||||
</patch>
|
||||
<patch id="layout.thumbnails.bypassImageRegionRestrictionsPatch">
|
||||
<string name="revanced_bypass_image_region_restrictions_title">Абыход абмежаванняў рэгіёну</string>
|
||||
<string name="revanced_bypass_image_region_restrictions_summary_on">Выкарыстанне хаста відарысаў yt4.ggpht.com</string>
|
||||
<string name="revanced_bypass_image_region_restrictions_summary_off">Выкарыстанне арыгінальнага хаста відарысаў\n\nУключэнне гэтай опцыі можа выправіць адсутнічаючыя відарысы, якія заблакіраваныя ў некаторых рэгіёнах</string>
|
||||
<string name="revanced_bypass_image_region_restrictions_summary_off">"Выкарыстоўваецца арыгінальны хост малюнкаў
|
||||
|
||||
Уключэнне гэтага можа выправіць праблему з адсутнасцю малюнкаў, якія заблакаваны ў некаторых рэгіёнах"</string>
|
||||
</patch>
|
||||
<patch id="layout.thumbnails.alternativeThumbnailsPatch">
|
||||
<!-- 'Home' should be translated using the same localized wording YouTube displays for the home tab. -->
|
||||
@@ -966,7 +1155,11 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_alt_thumbnail_options_entry_2">DeArrow & Арыгінальныя мініяцюры</string>
|
||||
<string name="revanced_alt_thumbnail_options_entry_3">DeArrow & Усё ж захоплівае</string>
|
||||
<string name="revanced_alt_thumbnail_options_entry_4">Усё ж захоплівае</string>
|
||||
<string name="revanced_alt_thumbnail_dearrow_about_summary">DeArrow прадастаўляе краўдсорсінгавыя мініяцюры для відэа YouTube. Гэтыя мініяцюры часта больш рэлевантныя, чым тыя, якія прадастаўляе YouTube\n\nКалі яны ўключаны, URL-адрасы відэа будуць адпраўляцца на сервер API, а іншыя даныя не адпраўляюцца. Калі відэа не мае мініяцюр DeArrow, то паказваюцца арыгінальныя або фотаздымкі\n\nНацісніце тут, каб даведацца больш пра DeArrow</string>
|
||||
<string name="revanced_alt_thumbnail_dearrow_about_summary">"DeArrow забяспечвае мініатюры для відэа YouTube, якія збіраюцца ад карыстальнікаў. Гэтыя мініатюры часта больш актуальныя, чым тыя, якія прадастаўляецца YouTube.
|
||||
|
||||
Калі ўключана, URL відэа будуць адпраўлены на сервер API, і ніякія іншыя даныя не адпраўляюцца. Калі відэа не мае мініатюр DeArrow, то паказваюцца арыгінальныя або здымкі.
|
||||
|
||||
Націсніце тут, каб даведацца больш пра DeArrow"</string>
|
||||
<string name="revanced_alt_thumbnail_dearrow_connection_toast_title">Паказаць тост, калі API недаступны</string>
|
||||
<string name="revanced_alt_thumbnail_dearrow_connection_toast_summary_on">Тост паказваецца, калі DeArrow недаступны</string>
|
||||
<string name="revanced_alt_thumbnail_dearrow_connection_toast_summary_off">Тост не паказваецца, калі DeArrow недаступны</string>
|
||||
@@ -995,6 +1188,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
</patch>
|
||||
<patch id="misc.dns.checkWatchHistoryDomainNameResolutionPatch">
|
||||
<string name="revanced_check_watch_history_domain_name_dialog_title">Увага</string>
|
||||
<string name="revanced_check_watch_history_domain_name_dialog_message">Ваша гісторыя прагляду не захоўваецца.<br><br>Гэта, хутчэй за ўсё, выклікана DNS-блакіроўшчыкам рэкламы або сеткавым праксі.<br><br>Каб выправіць гэта, дадайце <b>s.youtube.com</b> у белы спіс або адключыце ўсе DNS-блакіроўшчыкі і праксі.</string>
|
||||
<string name="revanced_check_watch_history_domain_name_dialog_ignore">Больш не паказваць</string>
|
||||
</patch>
|
||||
<patch id="misc.autorepeat.autoRepeatPatch">
|
||||
@@ -1004,8 +1198,12 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
</patch>
|
||||
<patch id="misc.dimensions.spoof.spoofDeviceDimensionsPatch">
|
||||
<string name="revanced_spoof_device_dimensions_title">Памеры падманнага прылады</string>
|
||||
<string name="revanced_spoof_device_dimensions_summary_on">Памеры прылады падробленыя\n\nМожа быць разблакіравана больш высокая якасць відэа, але вы можаце сутыкнуцца з затрымкамі пры прайграванні, пагаршэннем часу аўтаномнай працы і невядомымі пабочнымі эфектамі</string>
|
||||
<string name="revanced_spoof_device_dimensions_summary_off">Памеры прылады не падробленыя\n\nУключэнне гэтага можа разблакіраваць больш высокую якасць відэа</string>
|
||||
<string name="revanced_spoof_device_dimensions_summary_on">"Памеры прылады падроблены
|
||||
|
||||
Магчыма, будуць разблакаваны больш высокія якасці відэа, але вы можаце сутыкнуцца з заіканнем відэа, горшым тэрмінам службы батарэі і невядомымі пабочнымі эфектамі"</string>
|
||||
<string name="revanced_spoof_device_dimensions_summary_off">"Памеры прылады не падроблены
|
||||
|
||||
Уключэнне гэтага можа разблакаваць больш высокія якасці відэа"</string>
|
||||
<string name="revanced_spoof_device_dimensions_user_dialog_message">Уключэнне гэтага можа прывесці да прыпынкаў прайгравання відэа, пагаршэння тэрміну службы батарэі і невядомых пабочных эфектаў.</string>
|
||||
</patch>
|
||||
<patch id="misc.gms.gmsCoreSupportResourcePatch">
|
||||
@@ -1032,6 +1230,11 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_disable_zoom_haptics_summary_on">Тактыльныя функцыі адключаны</string>
|
||||
<string name="revanced_disable_zoom_haptics_summary_off">Тактыльныя сігналы ўключаны</string>
|
||||
</patch>
|
||||
<patch id="video.audio.forceOriginalAudioPatch">
|
||||
<string name="revanced_force_original_audio_title">Вымушанае арыгінальнае аўдыё</string>
|
||||
<string name="revanced_force_original_audio_summary_on">Выкарыстанне арыгінальнага аўдыё</string>
|
||||
<string name="revanced_force_original_audio_summary_off">Выкарыстанне аўдыё па змаўчанні</string>
|
||||
</patch>
|
||||
<patch id="video.quality.rememberVideoQualityPatch">
|
||||
<!-- Translations should use the same text as revanced_custom_playback_speeds_auto -->
|
||||
<string name="revanced_video_quality_default_entry_1">Аўто</string>
|
||||
@@ -1041,7 +1244,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_video_quality_default_wifi_title">Стандартная якасць відэа ў сетцы Wi-Fi</string>
|
||||
<string name="revanced_video_quality_default_mobile_title">Стандартная якасць відэа ў мабільнай сетцы</string>
|
||||
<string name="revanced_remember_video_quality_mobile">мабільны</string>
|
||||
<string name="revanced_remember_video_quality_wifi">Wi-Fi</string>
|
||||
<string name="revanced_remember_video_quality_wifi">wi-fi</string>
|
||||
<string name="revanced_remember_video_quality_toast">Стандартная якасць %1$s зменена на: %2$s</string>
|
||||
</patch>
|
||||
<patch id="video.speed.button.playbackSpeedButtonPatch">
|
||||
@@ -1050,9 +1253,13 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_playback_speed_dialog_button_summary_off">Кнопка не паказваецца</string>
|
||||
</patch>
|
||||
<patch id="video.speed.custom.customPlaybackSpeedPatch">
|
||||
<string name="revanced_custom_speed_menu_title">Меню пользовательской скорости воспроизведения</string>
|
||||
<string name="revanced_custom_speed_menu_summary_on">Меню пользовательской скорости отображается</string>
|
||||
<string name="revanced_custom_speed_menu_summary_off">Меню пользовательской скорости не отображается</string>
|
||||
<string name="revanced_custom_playback_speeds_title">Карыстальніцкія хуткасці прайгравання</string>
|
||||
<string name="revanced_custom_playback_speeds_invalid">Карыстальніцкія хуткасці павінны быць менш за %s. Выкарыстанне значэнняў па змаўчанні.</string>
|
||||
<string name="revanced_custom_playback_speeds_parse_exception">Няправільныя карыстальніцкія хуткасці прайгравання. Выкарыстанне значэнняў па змаўчанні.</string>
|
||||
<string name="revanced_custom_playback_speeds_summary">Добавьте или измените пользовательскую скорость воспроизведения</string>
|
||||
<string name="revanced_custom_playback_speeds_invalid">Нестандартныя хуткасці павінны быць менш за %s</string>
|
||||
<string name="revanced_custom_playback_speeds_parse_exception">Несапраўдныя нестандартныя хуткасці прайгравання</string>
|
||||
<string name="revanced_custom_playback_speeds_auto">Аўто</string>
|
||||
</patch>
|
||||
<patch id="video.speed.remember.rememberPlaybackSpeedPatch">
|
||||
@@ -1073,7 +1280,82 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_slide_to_seek_summary_off">Слайд для пошуку не ўключаны</string>
|
||||
</patch>
|
||||
<patch id="misc.fix.playback.spoofVideoStreamsPatch">
|
||||
<string name="revanced_spoof_video_streams_screen_title">Подделывать потоки видео</string>
|
||||
<string name="revanced_spoof_video_streams_screen_summary">Имитируйте потоки видео клиентов, чтобы предотвратить проблемы с воспроизведением</string>
|
||||
<string name="revanced_spoof_video_streams_title">Подделывать потоки видео</string>
|
||||
<string name="revanced_spoof_video_streams_summary_on">Потоки видео подделаны</string>
|
||||
<string name="revanced_spoof_video_streams_summary_off">"Відэаструм не падроблены
|
||||
|
||||
Прайграванне відэа можа не працаваць"</string>
|
||||
<string name="revanced_spoof_video_streams_user_dialog_message">Адключэнне гэтай налады можа выклікаць праблемы з прайграваннем відэа.</string>
|
||||
<string name="revanced_spoof_video_streams_client_title">Клиент по умолчанию</string>
|
||||
<string name="revanced_spoof_video_streams_ios_force_avc_title">Принудительно AVC (H.264)</string>
|
||||
<string name="revanced_spoof_video_streams_ios_force_avc_summary_on">Видеокодек принудительно установлен в AVC (H.264)</string>
|
||||
<string name="revanced_spoof_video_streams_ios_force_avc_summary_off">Видеокодек определяется автоматически</string>
|
||||
<string name="revanced_spoof_video_streams_ios_force_avc_user_dialog_message">"Уключэнне гэтага можа палепшыць тэрмін службы батарэі і выправіць заіканне відэа.
|
||||
|
||||
AVC мае максімальную раздзяляльнасць 1080p, аўдыякадэкар Opus недаступны, і відэа будзе выкарыстоўваць больш Інтэрнэт-даных, чым VP9 або AV1."</string>
|
||||
<string name="revanced_spoof_video_streams_about_ios_title">Пабочныя эфекты падмены iOS</string>
|
||||
<string name="revanced_spoof_video_streams_about_ios_summary">"• Прыватныя дзіцячыя відэа могуць не прайгравацца
|
||||
• Відэа заканчваюцца на 1 секунду раней"</string>
|
||||
<string name="revanced_spoof_video_streams_about_android_vr_title">Побочные эффекты подмены Android VR</string>
|
||||
<string name="revanced_spoof_video_streams_about_android_vr_summary">"• Дзіцячыя відэа могуць не прайгравацца
|
||||
• Трансляцыі ў прамым эфіры пачынаюцца з пачатку
|
||||
• Відэа заканчваюцца на 1 секунду раней"</string>
|
||||
<string name="revanced_spoof_video_streams_language_title">Язык потока аудио по умолчанию</string>
|
||||
<string name="revanced_spoof_video_streams_language_DEFAULT">Язык приложения</string>
|
||||
<string name="revanced_spoof_video_streams_language_AR">Арабский</string>
|
||||
<string name="revanced_spoof_video_streams_language_AZ">Азербайджанский</string>
|
||||
<string name="revanced_spoof_video_streams_language_BG">Болгарский</string>
|
||||
<string name="revanced_spoof_video_streams_language_BN">Бенгальский</string>
|
||||
<string name="revanced_spoof_video_streams_language_CA">Каталонский</string>
|
||||
<string name="revanced_spoof_video_streams_language_CS">Чешский</string>
|
||||
<string name="revanced_spoof_video_streams_language_DA">Датский</string>
|
||||
<string name="revanced_spoof_video_streams_language_DE">Немецкий</string>
|
||||
<string name="revanced_spoof_video_streams_language_EL">Греческий</string>
|
||||
<string name="revanced_spoof_video_streams_language_EN">Англійская</string>
|
||||
<string name="revanced_spoof_video_streams_language_ES">Іспанская</string>
|
||||
<string name="revanced_spoof_video_streams_language_ET">Эстонская</string>
|
||||
<string name="revanced_spoof_video_streams_language_FA">Фарсі</string>
|
||||
<string name="revanced_spoof_video_streams_language_FI">Фінская</string>
|
||||
<string name="revanced_spoof_video_streams_language_FR">Французская</string>
|
||||
<string name="revanced_spoof_video_streams_language_GU">Гуяраті</string>
|
||||
<string name="revanced_spoof_video_streams_language_HI">Хянді</string>
|
||||
<string name="revanced_spoof_video_streams_language_HR">Хорватская</string>
|
||||
<string name="revanced_spoof_video_streams_language_HU">Венгерская</string>
|
||||
<string name="revanced_spoof_video_streams_language_ID">Инданезійская</string>
|
||||
<string name="revanced_spoof_video_streams_language_IT">Итальянская</string>
|
||||
<string name="revanced_spoof_video_streams_language_JA">Японская</string>
|
||||
<string name="revanced_spoof_video_streams_language_KK">Казахская</string>
|
||||
<string name="revanced_spoof_video_streams_language_KO">Корэйская</string>
|
||||
<string name="revanced_spoof_video_streams_language_LT">Літоуская</string>
|
||||
<string name="revanced_spoof_video_streams_language_LV">Латышская</string>
|
||||
<string name="revanced_spoof_video_streams_language_MK">Македонская</string>
|
||||
<string name="revanced_spoof_video_streams_language_MN">Монгольская</string>
|
||||
<string name="revanced_spoof_video_streams_language_MR">Маратхі</string>
|
||||
<string name="revanced_spoof_video_streams_language_MS">Малайская</string>
|
||||
<string name="revanced_spoof_video_streams_language_MY">Брыманская</string>
|
||||
<string name="revanced_spoof_video_streams_language_NL">Нідрландский</string>
|
||||
<string name="revanced_spoof_video_streams_language_OR">Орія</string>
|
||||
<string name="revanced_spoof_video_streams_language_PA">Панджабский</string>
|
||||
<string name="revanced_spoof_video_streams_language_PL">Польская</string>
|
||||
<string name="revanced_spoof_video_streams_language_PT_BR">Партугальская (Бразілія)</string>
|
||||
<string name="revanced_spoof_video_streams_language_PT_PT">Партугальская (Партугалія)</string>
|
||||
<string name="revanced_spoof_video_streams_language_RO">Румынская</string>
|
||||
<string name="revanced_spoof_video_streams_language_RU">Русская</string>
|
||||
<string name="revanced_spoof_video_streams_language_SK">Словацкия</string>
|
||||
<string name="revanced_spoof_video_streams_language_SL">Словенская</string>
|
||||
<string name="revanced_spoof_video_streams_language_SR">Сербская</string>
|
||||
<string name="revanced_spoof_video_streams_language_SV">Швецкая</string>
|
||||
<string name="revanced_spoof_video_streams_language_SW">Суахілі</string>
|
||||
<string name="revanced_spoof_video_streams_language_TA">Тамільская</string>
|
||||
<string name="revanced_spoof_video_streams_language_TE">Тэлугу</string>
|
||||
<string name="revanced_spoof_video_streams_language_TH">Тайская</string>
|
||||
<string name="revanced_spoof_video_streams_language_TR">Турэцкая</string>
|
||||
<string name="revanced_spoof_video_streams_language_UK">Украёнская</string>
|
||||
<string name="revanced_spoof_video_streams_language_UR">Урду</string>
|
||||
<string name="revanced_spoof_video_streams_language_VI">Віетнамская</string>
|
||||
<string name="revanced_spoof_video_streams_language_ZH">Кітайская</string>
|
||||
</patch>
|
||||
</app>
|
||||
<app id="twitch">
|
||||
@@ -1083,8 +1365,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_block_audio_ads_summary_off">Аўдыёрэклама разблакіравана</string>
|
||||
</patch>
|
||||
<patch id="ad.embedded.embeddedAdsPatch">
|
||||
<string name="revanced_embedded_ads_service_unavailable">%s недаступны. Рэклама можа паказвацца. Паспрабуйце пераключыцца на іншую службу блакіроўкі рэкламы ў наладах.</string>
|
||||
<string name="revanced_embedded_ads_service_failed">Сервер %s вярнуў памылку. Рэклама можа паказвацца. Паспрабуйце пераключыцца на іншую службу блакіроўкі рэкламы ў наладах.</string>
|
||||
<string name="revanced_embedded_ads_service_unavailable">%s недаступны, рэклама можа паказвацца. Паспрабуйце змяніць службу блакавання рэкламы ў наладах.</string>
|
||||
<string name="revanced_embedded_ads_service_failed">%s выдаў памылку, рэклама можа паказвацца. Паспрабуйце змяніць службу блакавання рэкламы ў наладах.</string>
|
||||
<string name="revanced_block_embedded_ads_title">Блакіраваць убудаваную відэарэкламу</string>
|
||||
<string name="revanced_block_embedded_ads_entry_1">Інваліды</string>
|
||||
<string name="revanced_block_embedded_ads_entry_2">Светлавы проксі</string>
|
||||
@@ -1116,6 +1398,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<patch id="misc.settings.settingsPatch">
|
||||
<string name="revanced_settings">Налады ReVanced</string>
|
||||
<string name="revanced_about_title">Пра нас</string>
|
||||
<string name="revanced_about_summary">Раскажыць “ReVanced”</string>
|
||||
<string name="revanced_ads_screen_title">Аб\"явы</string>
|
||||
<string name="revanced_ads_screen_summary">Налады блакіроўкі рэкламы</string>
|
||||
<string name="revanced_chat_screen_title">Чат</string>
|
||||
|
||||
@@ -1,34 +1,23 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
|
||||
Note: All strings must have a unique path, even if the same string is declared in two different apps.
|
||||
This is because Crowdin requires temporarily flattening this file and removing the <app> and <patch> elements.
|
||||
All strings must have a unique path, even if the same string is declared in two different apps.
|
||||
This is because Crowdin requires temporarily flattening this file and removing the <app> and <patch> elements.
|
||||
|
||||
# General guidelines and information for translating
|
||||
|
||||
## Strings parameters can be reordered to allow more flexible translations if the grammar should be changed.
|
||||
Strings with new lines must be raw strings where they're wrapped in quotes and new lines are not encoded.
|
||||
Raw strings still requires escaping embedded double quotes but escaping embedded single quotes is optional.
|
||||
|
||||
For example, the patches string:
|
||||
<string name="revanced_patches_string">You will arrive at %1$s in %2$s hours from now</string>
|
||||
Could be translated to another language using a rearranged grammar:
|
||||
<string name="revanced_patches_string">You will arrive %2$s hours from now at %1$s</string>
|
||||
Raw strings are required because Crowdin AI translations regularly gets confused and
|
||||
replace \n with an encoded new line character.
|
||||
|
||||
For Manager strings:
|
||||
You will arrive at ${destination} in ${count} hours from now
|
||||
Could be rearranged by changing the order of the ${} parameters:
|
||||
You will arrive ${count} hours from now at ${destination}
|
||||
Bad:
|
||||
<string name="summary_key">First \'item\' text\nSecond \"item\" text</string>
|
||||
|
||||
Reordering is particularly relevant when translating into right to left languages, or for any language with grammar that is noticeably different from English.
|
||||
Good:
|
||||
<string name="summary_key">"First 'item' text
|
||||
Second \"item\" text"</string>
|
||||
|
||||
## Single and double quotation marks must be escaped for patch strings (Manager does not require escaping any quotes).
|
||||
|
||||
All _patches_ single and double quotation marks must be escaped as \" or \'
|
||||
Forgetting to do this will cause that string to appear in app with no quotation characters.
|
||||
|
||||
Correct:
|
||||
<string name="revanced_string">You\'re correct. This is the \"correct\" way and this text will appear as expected in the app</string>
|
||||
Not correct:
|
||||
<string name="revanced_string">You're not correct. This is not the "correct" way and this text will not appear as expected the in app</string>
|
||||
-->
|
||||
<resources>
|
||||
<app id="shared">
|
||||
@@ -44,12 +33,13 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_check_environment_not_near_patch_time_invalid">Датата на компилация на APK е повредена</string>
|
||||
</patch>
|
||||
<patch id="misc.settings.settingsResourcePatch">
|
||||
<string name="revanced_settings_title">ReVanced</string>
|
||||
<string name="revanced_settings_confirm_user_dialog_title">Искате ли да продължите?</string>
|
||||
<string name="revanced_settings_reset">Нулиране</string>
|
||||
<string name="revanced_settings_reset">Възстанови</string>
|
||||
<string name="revanced_settings_restart_title">Рестартирай и опресни</string>
|
||||
<string name="revanced_settings_restart">Рестартиране</string>
|
||||
<string name="revanced_settings_import">Импортиране</string>
|
||||
<string name="revanced_settings_import_copy">Копиране</string>
|
||||
<string name="revanced_settings_import_copy">Копирай</string>
|
||||
<string name="revanced_settings_import_reset">Настройките на ReVanced бяха нулирани</string>
|
||||
<string name="revanced_settings_import_success">Следните настройки бяха импортирани успешно: %d</string>
|
||||
<string name="revanced_settings_import_failure_parse">Импортирането беше неуспешно: %s</string>
|
||||
@@ -67,15 +57,23 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<!-- Translations of this should not be longer than the original English text, otherwise the text can be clipped and not entirely shown. -->
|
||||
<string name="gms_core_toast_not_installed_message">GmsCore не е инсталиран. Инсталирайте го.</string>
|
||||
<string name="gms_core_dialog_title">Нужно е действие</string>
|
||||
<string name="gms_core_dialog_not_whitelisted_not_allowed_in_background_message">MicroG GmsCore не може да работи във фонов режим.\n\nМоля, следвайте ръководството \"Don\'t kill my app“ за вашия телефон и приложете инструкциите на MicroG.\n\nТова е необходимо, за да работи приложението.</string>
|
||||
<string name="gms_core_dialog_not_whitelisted_not_allowed_in_background_message">"MicroG GmsCore няма разрешение да работи във фонов режим.
|
||||
|
||||
Следвайте ръководството \"Не убивай моето приложение\" за вашия телефон и приложете инструкциите към вашата инсталация на MicroG.
|
||||
|
||||
Това е необходимо, за да работи приложението."</string>
|
||||
<string name="gms_core_dialog_open_website_text">Отвори сайта</string>
|
||||
<string name="gms_core_dialog_not_whitelisted_using_battery_optimizations_message">За да избегнете проблеми е необходимо да изключите оптимизацията на батерията за GmsCore.\n\nНатиснете \"Продолжи\" и изкючере оптимизацията на батерията.</string>
|
||||
<string name="gms_core_dialog_not_whitelisted_using_battery_optimizations_message">"Оптимизациите на батерията за MicroG GmsCore трябва да бъдат деактивирани, за да се избегнат проблеми.
|
||||
|
||||
Деактивирането на оптимизациите на батерията за MicroG няма да повлияе отрицателно на използването на батерията.
|
||||
|
||||
Докоснете бутона за продължаване и разрешете промени в оптимизацията."</string>
|
||||
<string name="gms_core_dialog_continue_text">Продължи</string>
|
||||
</patch>
|
||||
</app>
|
||||
<app id="youtube">
|
||||
<patch id="misc.settings.settingsPatch">
|
||||
<string name="revanced_settings_screen_00_about_title">Относно</string>
|
||||
<string name="revanced_settings_screen_00_about_title">За програмата</string>
|
||||
<string name="revanced_settings_screen_01_ads_title">Реклами</string>
|
||||
<string name="revanced_settings_screen_02_alt_thumbnails_title">Алтернативни миниатюри</string>
|
||||
<string name="revanced_settings_screen_03_feed_title">Поток</string>
|
||||
@@ -106,7 +104,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_debug_toast_on_error_title">Покажи системно съобщение при ReVanced грешка</string>
|
||||
<string name="revanced_debug_toast_on_error_summary_on">Системно съобщение ще бъде показано, ако се появи грешка</string>
|
||||
<string name="revanced_debug_toast_on_error_summary_off">Системно съобщение няма да бъде показано, ако се появи грешка</string>
|
||||
<string name="revanced_debug_toast_on_error_user_dialog_message">Ако изключите системните съобщения, ще скриете всички уведомления за ReVanced грешки. \n\nНяма да бъдете уведомени, ако настъпят неочаквани събития.</string>
|
||||
<string name="revanced_debug_toast_on_error_user_dialog_message">"Изключването на изскачащи съобщения за грешки крие всички известия за грешки на ReVanced.
|
||||
|
||||
Няма да бъдете уведомени за неочаквани събития."</string>
|
||||
</patch>
|
||||
<patch id="layout.hide.general.hideLayoutComponentsPatch">
|
||||
<string name="revanced_disable_like_subscribe_glow_title">Деактивирайте подсветката на бутона Харесвам /Абонамент</string>
|
||||
@@ -121,74 +121,76 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_hide_floating_microphone_button_title">Плаващ бутон за микрофона</string>
|
||||
<string name="revanced_hide_floating_microphone_button_summary_on">Бутонът на микрофона е скрит</string>
|
||||
<string name="revanced_hide_floating_microphone_button_summary_off">Показан е бутон на микрофона</string>
|
||||
<string name="revanced_hide_channel_watermark_title">Скриване на водния знак на канала</string>
|
||||
<string name="revanced_hide_channel_watermark_summary_on">Водният знак е скрит</string>
|
||||
<string name="revanced_hide_channel_watermark_summary_off">Водният знак е показан</string>
|
||||
<string name="revanced_hide_channel_watermark_title">Воден знак на канала</string>
|
||||
<string name="revanced_hide_channel_watermark_summary_on">Водният знак на канала е скрит</string>
|
||||
<string name="revanced_hide_channel_watermark_summary_off">Водният знак на канала се показва</string>
|
||||
<string name="revanced_hide_horizontal_shelves_title">Хоризонтални секции</string>
|
||||
<string name="revanced_hide_horizontal_shelves_summary_on">Хоризонталните секции са скрити:\n• Извънредни новини\n• Продължете да гледате\n• Разгледайте още канали\n• Пазаруване\n• Гледайте отново</string>
|
||||
<string name="revanced_hide_horizontal_shelves_summary_on">"Рафтовете са скрити, такива като:
|
||||
• Актуални новини
|
||||
• Продължавай да гледаш
|
||||
• Разгледай още канали
|
||||
• Пазаруване
|
||||
• Гледай отново"</string>
|
||||
<string name="revanced_hide_horizontal_shelves_summary_off">Хоризонтални секции се показват</string>
|
||||
<!-- 'Join' should be translated using the same localized wording YouTube displays.
|
||||
This appears in the video player for certain videos. -->
|
||||
<string name="revanced_hide_join_membership_button_title">Скриване на бутона \'Присъедини се\'</string>
|
||||
<string name="revanced_hide_join_membership_button_summary_on">Бутонът е скрит</string>
|
||||
<string name="revanced_hide_join_membership_button_summary_off">Бутонът е показан</string>
|
||||
<string name="revanced_hide_join_membership_button_summary_on">Бутона Покажи още е скрит</string>
|
||||
<string name="revanced_hide_join_membership_button_summary_off">Бутона \"Уведоми ме\" се показва</string>
|
||||
<!-- 'For you' should be translated using the same localized wording YouTube displays. -->
|
||||
<string name="revanced_hide_for_you_shelf_title">Скриване на секцията \'За вас\' в страницата на канала</string>
|
||||
<string name="revanced_hide_for_you_shelf_summary_on">Рафтът е скрит</string>
|
||||
<string name="revanced_hide_for_you_shelf_summary_off">Рафтът е показан</string>
|
||||
<string name="revanced_hide_for_you_shelf_summary_on">Секцията \'За Вас\' е скрита</string>
|
||||
<string name="revanced_hide_for_you_shelf_summary_off">Секцията \'За Вас\' се показва</string>
|
||||
<!-- 'Notify me' should be translated using the same localized wording YouTube displays.
|
||||
This item appear in the subscription feed for future livestreams or unreleased videos. -->
|
||||
<string name="revanced_hide_notify_me_button_title">Скриване на бутона \"Уведоми ме\"</string>
|
||||
<string name="revanced_hide_notify_me_button_summary_on">Бутонът е скрит</string>
|
||||
<string name="revanced_hide_notify_me_button_summary_off">Бутонът е показан</string>
|
||||
<string name="revanced_hide_notify_me_button_summary_on">Бутона \"Уведоми ме\" е скрит</string>
|
||||
<string name="revanced_hide_notify_me_button_summary_off">Бутона \"Уведоми ме\" се показва</string>
|
||||
<!-- 'People also watch' should be translated using the same localized wording YouTube displays. -->
|
||||
<string name="revanced_hide_search_result_recommendations_title">Скриване на препоръките \'Други харесват също\'</string>
|
||||
<string name="revanced_hide_search_result_recommendations_summary_on">Препоръките са скрити</string>
|
||||
<string name="revanced_hide_search_result_recommendations_summary_off">Препоръките са показани</string>
|
||||
<string name="revanced_hide_search_result_recommendations_summary_off">Препоръките се показват</string>
|
||||
<!-- 'Show more' should be translated with the same localized wording that YouTube displays.
|
||||
This button usually appears when searching for a YT creator. -->
|
||||
<string name="revanced_hide_show_more_button_title">Скриване на бутона \"Покажи още\"</string>
|
||||
<string name="revanced_hide_show_more_button_summary_on">Бутонът е скрит</string>
|
||||
<string name="revanced_hide_show_more_button_summary_off">Бутонът е показан</string>
|
||||
<string name="revanced_hide_show_more_button_summary_on">Бутона Покажи още е скрит</string>
|
||||
<string name="revanced_hide_show_more_button_summary_off">Бутона Покажи още се показва</string>
|
||||
<string name="revanced_hide_timed_reactions_title">Скриване на времевите реакции</string>
|
||||
<string name="revanced_hide_timed_reactions_summary_on">Времевите реакции са скрити</string>
|
||||
<string name="revanced_hide_timed_reactions_summary_off">Времевите реакции са показани</string>
|
||||
<string name="revanced_hide_search_result_shelf_header_title">Скриване на заглавието на рафта с резултатите от търсенето</string>
|
||||
<string name="revanced_hide_search_result_shelf_header_summary_on">Заглавието на рафта е скрито</string>
|
||||
<string name="revanced_hide_search_result_shelf_header_summary_off">Заглавието е показано</string>
|
||||
<string name="revanced_hide_timed_reactions_summary_off">Времевите реакции се показват</string>
|
||||
<string name="revanced_hide_channel_guidelines_title">Скриване на насоките на канала</string>
|
||||
<string name="revanced_hide_channel_guidelines_summary_on">Насоките на канала са скрити</string>
|
||||
<string name="revanced_hide_channel_guidelines_summary_off">Насоките на канала са показани</string>
|
||||
<string name="revanced_hide_chips_shelf_title">Скриване на рафта за чипове</string>
|
||||
<string name="revanced_hide_chips_shelf_summary_on">Рафтът за чипове е скрит</string>
|
||||
<string name="revanced_hide_chips_shelf_summary_off">Рафтът за чипове е показан</string>
|
||||
<string name="revanced_hide_expandable_chip_title">Скриване на разширяемия чип под видеоклиповете</string>
|
||||
<string name="revanced_hide_expandable_chip_summary_on">Разширяващите се чипове са скрити</string>
|
||||
<string name="revanced_hide_expandable_chip_summary_off">Разширяващите се чипове са показани</string>
|
||||
<string name="revanced_hide_channel_guidelines_summary_off">Насоките на канала се показват</string>
|
||||
<string name="revanced_hide_chips_shelf_title">Скриване на филмовите рафтове</string>
|
||||
<string name="revanced_hide_chips_shelf_summary_on">Рафтът \"Chip\" е скрит</string>
|
||||
<string name="revanced_hide_chips_shelf_summary_off">Рафтовете със снимки се показват</string>
|
||||
<string name="revanced_hide_expandable_chip_title">Скриване на показващи се раздели под видеоклипове</string>
|
||||
<string name="revanced_hide_expandable_chip_summary_on">Падащите менюта са скрити</string>
|
||||
<string name="revanced_hide_expandable_chip_summary_off">Показват се</string>
|
||||
<string name="revanced_hide_community_posts_title">Скриване на публикациите от общността</string>
|
||||
<string name="revanced_hide_community_posts_summary_on">Публикациите от общността са скрити</string>
|
||||
<string name="revanced_hide_community_posts_summary_off">Публикациите от общността са показани</string>
|
||||
<string name="revanced_hide_community_posts_summary_on">Насоките на общността са скрити</string>
|
||||
<string name="revanced_hide_community_posts_summary_off">Последните публикации са показани</string>
|
||||
<string name="revanced_hide_compact_banner_title">Скриване на компактните банери</string>
|
||||
<string name="revanced_hide_compact_banner_summary_on">Компактните банери са скрити</string>
|
||||
<string name="revanced_hide_compact_banner_summary_off">Компактните банери са показани</string>
|
||||
<string name="revanced_hide_compact_banner_summary_on">Информационните панели са скрити</string>
|
||||
<string name="revanced_hide_compact_banner_summary_off">Информационните панели се показват</string>
|
||||
<string name="revanced_hide_movies_section_title">Скриване на раздела за филми</string>
|
||||
<string name="revanced_hide_movies_section_summary_on">Разделът за филми е скрит</string>
|
||||
<string name="revanced_hide_movies_section_summary_on">Секцията с коментари е скрита</string>
|
||||
<string name="revanced_hide_movies_section_summary_off">Разделът за филми е показан</string>
|
||||
<string name="revanced_hide_feed_survey_title">Скриване на анкетите в новинарския поток</string>
|
||||
<string name="revanced_hide_feed_survey_summary_on">Aнкетите в новинарския поток са скрити</string>
|
||||
<string name="revanced_hide_feed_survey_summary_off">Aнкетите в новинарския поток са показани</string>
|
||||
<string name="revanced_hide_feed_survey_title">Скриване на анкети в емисиите</string>
|
||||
<string name="revanced_hide_feed_survey_summary_on">Анкетите за емисии са скрити</string>
|
||||
<string name="revanced_hide_feed_survey_summary_off">Анкетите за емисии се показват</string>
|
||||
<string name="revanced_hide_community_guidelines_title">Скриване на насоките на общността</string>
|
||||
<string name="revanced_hide_community_guidelines_summary_on">Насоките на общността са скрити</string>
|
||||
<string name="revanced_hide_community_guidelines_summary_off">Насоките на общността са показани</string>
|
||||
<string name="revanced_hide_community_guidelines_summary_off">Скриване на насоките за общността на абонатите</string>
|
||||
<string name="revanced_hide_subscribers_community_guidelines_title">Скриване на насоките за общността на абонатите</string>
|
||||
<string name="revanced_hide_subscribers_community_guidelines_summary_on">Насоките за общността на абонатите са скрити</string>
|
||||
<string name="revanced_hide_subscribers_community_guidelines_summary_off">Насоките за общността на абонатите са показани</string>
|
||||
<string name="revanced_hide_channel_member_shelf_title">Скриване на рафта на канала</string>
|
||||
<string name="revanced_hide_channel_member_shelf_summary_on">Рафтът на канала е скрит</string>
|
||||
<string name="revanced_hide_channel_member_shelf_summary_off">Рафтът на канала е показан</string>
|
||||
<string name="revanced_hide_subscribers_community_guidelines_summary_on">Насоките за общността са скрити</string>
|
||||
<string name="revanced_hide_subscribers_community_guidelines_summary_off">Насоките за общността са показани</string>
|
||||
<string name="revanced_hide_channel_member_shelf_title">Скриване на секцията с членуващи</string>
|
||||
<string name="revanced_hide_channel_member_shelf_summary_on">Рафта с членуващи е скрит</string>
|
||||
<string name="revanced_hide_channel_member_shelf_summary_off">Рафта с членуващи се показва</string>
|
||||
<string name="revanced_hide_emergency_box_title">Скриване аварийните кутии</string>
|
||||
<string name="revanced_hide_emergency_box_summary_on">Аварийните кутии са скрити</string>
|
||||
<string name="revanced_hide_emergency_box_summary_off">Аварийните кутии са показани</string>
|
||||
<string name="revanced_hide_emergency_box_summary_on">Спешни кутии са скрити</string>
|
||||
<string name="revanced_hide_emergency_box_summary_off">Спешни кутии са показани</string>
|
||||
<string name="revanced_hide_info_panels_title">Скриване на информационните панели</string>
|
||||
<string name="revanced_hide_info_panels_summary_on">Информационните панели са скрити</string>
|
||||
<string name="revanced_hide_info_panels_summary_off">Информационните панели са показани</string>
|
||||
@@ -201,24 +203,24 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_hide_playables_title">Игри в YouTube</string>
|
||||
<string name="revanced_hide_playables_summary_on">Игри в YouTube са скрити</string>
|
||||
<string name="revanced_hide_playables_summary_off">Игрите в YouTube се показват</string>
|
||||
<string name="revanced_hide_quick_actions_title">Скриване на бързите действия в режим на цял екран</string>
|
||||
<string name="revanced_hide_quick_actions_summary_on">Бързите действия в режим на цял екран са скрити</string>
|
||||
<string name="revanced_hide_quick_actions_summary_off">Бързите действия в режим на цял екран са показани</string>
|
||||
<string name="revanced_hide_quick_actions_title">Скриване на меню с Бързи действия</string>
|
||||
<string name="revanced_hide_quick_actions_summary_on">Бързи действия са скрити</string>
|
||||
<string name="revanced_hide_quick_actions_summary_off">Бързи действия се показват</string>
|
||||
<string name="revanced_hide_related_videos_title">Скриване на свързаните видеоклипове в бързите действия</string>
|
||||
<string name="revanced_hide_related_videos_summary_on">Свързаните видеоклипове в бързите действия са скирти</string>
|
||||
<string name="revanced_hide_related_videos_summary_off">Свързаните видеоклипове в бързите действия са показани</string>
|
||||
<string name="revanced_hide_image_shelf_title">Скриване на рафта с изображения в резултатите от търсенето</string>
|
||||
<string name="revanced_hide_image_shelf_summary_on">Рафтът с изображения в резултатите от търсенето е скрит</string>
|
||||
<string name="revanced_hide_image_shelf_summary_off">Рафтът с изображения в резултатите от търсенето е показан</string>
|
||||
<string name="revanced_hide_related_videos_summary_on">Сродни видео са скрити</string>
|
||||
<string name="revanced_hide_related_videos_summary_off">Сродни видео са показани</string>
|
||||
<string name="revanced_hide_image_shelf_title">Скриване на рафтовете със снимки</string>
|
||||
<string name="revanced_hide_image_shelf_summary_on">Рафтовете със снимки са скрити</string>
|
||||
<string name="revanced_hide_image_shelf_summary_off">Рафтовете със снимки се показват</string>
|
||||
<string name="revanced_hide_latest_posts_ads_title">Скриване на последните публикации</string>
|
||||
<string name="revanced_hide_latest_posts_ads_summary_on">Последните публикации са скрити</string>
|
||||
<string name="revanced_hide_latest_posts_ads_summary_on">Най-новите публикации са скрити</string>
|
||||
<string name="revanced_hide_latest_posts_ads_summary_off">Последните публикации са показани</string>
|
||||
<string name="revanced_hide_mix_playlists_title">Скриване на разбърканите плейлисти</string>
|
||||
<string name="revanced_hide_mix_playlists_summary_on">Разбърканите плейлисти са скрити</string>
|
||||
<string name="revanced_hide_mix_playlists_summary_off">Разбърканите плейлисти са показани</string>
|
||||
<string name="revanced_hide_mix_playlists_title">Скриване на микс плейлист</string>
|
||||
<string name="revanced_hide_mix_playlists_summary_on">Плейлист микса е скрит</string>
|
||||
<string name="revanced_hide_mix_playlists_summary_off">Плейлист микса се показва</string>
|
||||
<string name="revanced_hide_artist_cards_title">Скриване на картите на артистите</string>
|
||||
<string name="revanced_hide_artist_cards_summary_on">Картите на артистите са скрити</string>
|
||||
<string name="revanced_hide_artist_cards_summary_off">Картите на артистите са показани</string>
|
||||
<string name="revanced_hide_artist_cards_summary_on">Картите на изпълнителите са скрити</string>
|
||||
<string name="revanced_hide_artist_cards_summary_off">Показват се карти на артисти</string>
|
||||
<string name="revanced_hide_attributes_section_title">Скриване на секцията с атрибути</string>
|
||||
<string name="revanced_hide_attributes_section_summary_on">„Популярни места“, „Игри“ и „Музика“ под описанието са скрити</string>
|
||||
<string name="revanced_hide_attributes_section_summary_off">„Популярни места“, „Игри“ и „Музика“ под описанието се показват</string>
|
||||
@@ -252,6 +254,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_hide_filter_bar_feed_in_related_videos_summary_off">Показано в сродни видеоклипове</string>
|
||||
<string name="revanced_comments_screen_title">Коментари</string>
|
||||
<string name="revanced_comments_screen_summary">Скриване или показване на секцията за коментари</string>
|
||||
<string name="revanced_hide_comments_chat_summary_title">Скрий „Резюме на чата“</string>
|
||||
<string name="revanced_hide_comments_chat_summary_summary_on">\'Резюме на чата\' е скрито</string>
|
||||
<string name="revanced_hide_comments_chat_summary_summary_off">\'Резюме на чата\' е показано</string>
|
||||
<string name="revanced_hide_comments_by_members_header_title">Скриване на „Коментари, направени от членове“</string>
|
||||
<string name="revanced_hide_comments_by_members_header_summary_on">„Коментари от членове“ са скрити</string>
|
||||
<string name="revanced_hide_comments_by_members_header_summary_off">„Коментари от членове“ се показват</string>
|
||||
@@ -274,7 +279,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_hide_doodles_title">YouTube Doodles</string>
|
||||
<string name="revanced_hide_doodles_summary_on">Doodles в лентата за търсене са скрити</string>
|
||||
<string name="revanced_hide_doodles_summary_off">Doodles в лентата за търсене се показват</string>
|
||||
<string name="revanced_hide_doodles_user_dialog_message">YouTube Doodles се появяват няколко дни в годината.\n\nАко Doodle в момента се показва във вашия регион и тази опция за скриване е активирана, филтърната лента под лентата за търсене също ще бъде скрита.</string>
|
||||
<string name="revanced_hide_doodles_user_dialog_message">"Doodles в YouTube се показват няколко дни в годината.
|
||||
|
||||
Ако в момента се показва Doodle във вашия регион и тази настройка за скриване е включена, тогава лентата за филтриране под лентата за търсене също ще бъде скрита."</string>
|
||||
<string name="revanced_custom_filter_screen_title">Потребителски филтър</string>
|
||||
<string name="revanced_custom_filter_screen_summary">Скриване на компоненти с помощта на потребителски филтри</string>
|
||||
<string name="revanced_custom_filter_title">Активиране на потребителските филтри</string>
|
||||
@@ -286,21 +293,30 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_custom_filter_toast_invalid_syntax">Невалиден потребителски филтър: %s</string>
|
||||
<string name="revanced_hide_keyword_content_screen_title">Скриване на съдържанието с ключови думи</string>
|
||||
<string name="revanced_hide_keyword_content_screen_summary">Скриване на видеоклипове в резултатите от търсенуя и в новинарския поток с помощта на филтри с ключови думи</string>
|
||||
<string name="revanced_hide_keyword_content_home_title">Скриване на видеоклипове на началната страница с ключови думи</string>
|
||||
<string name="revanced_hide_keyword_content_home_summary_on">Видеоклиповете на началния екран са филтрирани с ключови думи</string>
|
||||
<string name="revanced_hide_keyword_content_home_summary_off">Видеоклиповете на началния екран не са филтрирани с ключови думи</string>
|
||||
<string name="revanced_hide_keyword_content_home_title">Скриване на видеоклипове в началната страница с ключови думи</string>
|
||||
<string name="revanced_hide_keyword_content_home_summary_on">Видеоклиповете в раздела Начало се филтрират с помощта на ключови думи</string>
|
||||
<string name="revanced_hide_keyword_content_home_summary_off">Видеоклиповете в раздела Начало не се филтрират по ключови думи</string>
|
||||
<string name="revanced_hide_keyword_content_subscriptions_title">Скриване на видеоклипове от абонаменти с ключови думи</string>
|
||||
<string name="revanced_hide_keyword_content_subscriptions_summary_on">Видеоклиповете в раздела за абонаменти са са филтрирани с ключови думи</string>
|
||||
<string name="revanced_hide_keyword_content_subscriptions_summary_off">Видеоклиповете в раздела за абонаменти са са филтрирани с ключови думи</string>
|
||||
<string name="revanced_hide_keyword_content_subscriptions_summary_off">Видеоклиповете в емисията за абонаменти не се филтрират</string>
|
||||
<string name="revanced_hide_keyword_content_search_title">Скриване на резултати от търсения с ключови думи</string>
|
||||
<string name="revanced_hide_keyword_content_search_summary_on">Резултатите от търсения са филтрирани с ключови думи</string>
|
||||
<string name="revanced_hide_keyword_content_search_summary_off">Резултатите от търсения не са филтрирани с ключови думи</string>
|
||||
<string name="revanced_hide_keyword_content_search_summary_on">Резултатите от търсенето се филтрират с помощта на ключови думи</string>
|
||||
<string name="revanced_hide_keyword_content_search_summary_off">Резултатите от търсенето не се филтрират по ключови думи</string>
|
||||
<string name="revanced_hide_keyword_content_phrases_title">Ключови думи, които да бъдат скрити</string>
|
||||
<!-- For localization it is preferred, but not required, if 'LeBlanc' is replaced with a localized name or a familiar word that has upper case letters in the middle of the word.
|
||||
This is because keywords can be in any language, and showing an example in the localized script helps convey this. -->
|
||||
<string name="revanced_hide_keyword_content_phrases_summary">Ключови думи и фрази за скриване, разделени с нови редове\n\nКлючовите думи могат да бъдат имена на канали или всеки текст, показан в заглавията на видеоклиповете\n\nДумите с главни букви в средата трябва да бъдат въведени с малки букви (напр.: iPhone, TikTok, LeBlanc)</string>
|
||||
<string name="revanced_hide_keyword_content_phrases_summary">"Ключови думи и фрази за скриване, разделени от нов ред
|
||||
|
||||
Ключовите думи могат да бъдат имена на канали или всякакъв текст, показан в заглавията на видеоклиповете
|
||||
|
||||
Думите с главни букви в средата трябва да бъдат въведени с главни букви (напр.: iPhone, TikTok, LeBlanc)"</string>
|
||||
<string name="revanced_hide_keyword_content_about_title">За филтриране с ключови думи</string>
|
||||
<string name="revanced_hide_keyword_content_about_summary">Начало/Абонамент/Резултатите от търсенето се филтрират, за да се скрие съдържание, което съответства на ключови фрази\n\nОграничения\n• Shorts не могат да бъдат скрити от името на канала\n• Някои компоненти на потребителския интерфейс може да не са скрити\n• Търсенето по ключова дума може да не покаже резултати</string>
|
||||
<string name="revanced_hide_keyword_content_about_summary">"Резултатите от търсенето в Начало/Абонамент/Търсене се филтрират, за да се скрие съдържанието, което съвпада с фрази с ключови думи
|
||||
|
||||
Ограничения
|
||||
• Шорти не могат да бъдат скрити по име на канала
|
||||
• Някои UI компоненти може да не са скрити
|
||||
• Търсенето на ключова дума може да не покаже резултати"</string>
|
||||
<string name="revanced_hide_keyword_content_about_whole_words_title">Съвпадение на всички думи</string>
|
||||
<!-- Translations _must_ use a localized example. For languages that do not use spaces between words (Chinese, Japanese, etc) the English AI example should be used since no localized examples exist. Or if using machine translations, or if nobody wants to think of a localized example, then the English 'ai' example should be left as-is. -->
|
||||
<string name="revanced_hide_keyword_content_about_whole_words_summary">Ограждането на ключова дума/фраза с двойни кавички ще предотврати частични съвпадения на заглавия на видеоклипове и имена на канали<br><br>Например,<br><b>\"ai\"</b> ще скрие видеоклипа: <b>How does AI work?</b><br>но няма да скрие: <b>What does fair use mean?</b></string>
|
||||
@@ -314,13 +330,15 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<patch id="ad.general.hideAdsResourcePatch">
|
||||
<string name="revanced_hide_general_ads_title">Скриване на общите реклами</string>
|
||||
<string name="revanced_hide_general_ads_summary_on">Общите реклами са скрити</string>
|
||||
<string name="revanced_hide_general_ads_summary_off">Общите реклами са показани</string>
|
||||
<string name="revanced_hide_general_ads_summary_off">Общите реклами се показват</string>
|
||||
<string name="revanced_hide_fullscreen_ads_title">Скриване на рекламите в режим на цял екран</string>
|
||||
<string name="revanced_hide_fullscreen_ads_summary_on">Рекламите на цял екран са скрити\n\in Тази функция е достъпна само за по-стари устройства</string>
|
||||
<string name="revanced_hide_fullscreen_ads_summary_on">"Всички реклами на цял екран са скрити
|
||||
|
||||
Тази функция е налична само за по-стари устройства"</string>
|
||||
<string name="revanced_hide_fullscreen_ads_summary_off">Рекламите в режим на цял екран са показани</string>
|
||||
<string name="revanced_hide_buttoned_ads_title">Скриване на рекламни бутони</string>
|
||||
<string name="revanced_hide_buttoned_ads_summary_on">Рекламите като бутон са скрити</string>
|
||||
<string name="revanced_hide_buttoned_ads_summary_off">Рекламите като бутон са показани</string>
|
||||
<string name="revanced_hide_buttoned_ads_summary_on">Бутонираните реклами са скрити</string>
|
||||
<string name="revanced_hide_buttoned_ads_summary_off">Бутонираните реклами са показани</string>
|
||||
<string name="revanced_hide_paid_promotion_label_title">Скриване на платените промоции</string>
|
||||
<string name="revanced_hide_paid_promotion_label_summary_on">Промоционалните етикети са скрити</string>
|
||||
<string name="revanced_hide_paid_promotion_label_summary_off">Промоционалните етикети се показват</string>
|
||||
@@ -333,35 +351,35 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_hide_player_store_shelf_title">Скриване на рафта за пазаруване</string>
|
||||
<string name="revanced_hide_player_store_shelf_summary_on">Рафта за пазаруване е скрит</string>
|
||||
<string name="revanced_hide_player_store_shelf_summary_off">Рафта за пазаруване се показва</string>
|
||||
<string name="revanced_hide_shopping_links_title">Скриване на връзките за пазаруване в описанието на видеоклипа</string>
|
||||
<string name="revanced_hide_shopping_links_title">Скриване на връзки за пазаруване</string>
|
||||
<string name="revanced_hide_shopping_links_summary_on">Връзките за пазаруване са скрити</string>
|
||||
<string name="revanced_hide_shopping_links_summary_off">Връзките за пазаруване са показани</string>
|
||||
<string name="revanced_hide_shopping_links_summary_off">Връзките за пазаруване се показват</string>
|
||||
<!-- 'Visit store' should be translated with the same localized wording that YouTube displays. -->
|
||||
<string name="revanced_hide_visit_store_button_title">Скрийте бутона „Посетете магазина“ на страниците на каналите</string>
|
||||
<string name="revanced_hide_visit_store_button_summary_on">Бутонът е скрит</string>
|
||||
<string name="revanced_hide_visit_store_button_summary_off">Бутонът е показан</string>
|
||||
<string name="revanced_hide_visit_store_button_summary_on">Бутона Покажи още е скрит</string>
|
||||
<string name="revanced_hide_visit_store_button_summary_off">Бутона \"Уведоми ме\" се показва</string>
|
||||
<string name="revanced_hide_web_search_results_title">Скриване на резултатите от уеб търсенето</string>
|
||||
<string name="revanced_hide_web_search_results_summary_on">Резултатите от уеб търсенето са скрити</string>
|
||||
<string name="revanced_hide_web_search_results_summary_off">Резултатите от уеб търсенето са показани</string>
|
||||
<string name="revanced_hide_web_search_results_summary_off">Резултатите от уеб търсенето са показани.</string>
|
||||
<string name="revanced_hide_merchandise_banners_title">Скриване на банерите за стоки</string>
|
||||
<string name="revanced_hide_merchandise_banners_summary_on">Банерите за стоки са скрити</string>
|
||||
<string name="revanced_hide_merchandise_banners_summary_off">Банерите за стоки са показани</string>
|
||||
<string name="revanced_hide_merchandise_banners_summary_on">Рекламните банери за стоки са скрити</string>
|
||||
<string name="revanced_hide_merchandise_banners_summary_off">Банерите за стоки се показват</string>
|
||||
<!-- Translations of this should not be longer than the original English text, otherwise the text can be clipped and not entirely shown. -->
|
||||
<string name="revanced_hide_fullscreen_ads_feature_not_available_toast">Скр. на реклами на цял екран, за по-стари устройства</string>
|
||||
</patch>
|
||||
<patch id="ad.getpremium.hideGetPremiumPatch">
|
||||
<string name="revanced_hide_get_premium_title">Скриване на YouTube Premium промоции</string>
|
||||
<string name="revanced_hide_get_premium_summary_on">YouTube Premium промоциите под видео плейъра са скрити</string>
|
||||
<string name="revanced_hide_get_premium_summary_off">YouTube Premium промоциите под видео плейъра са показани</string>
|
||||
<string name="revanced_hide_get_premium_title">Скриване на YouTube Premium промоциите</string>
|
||||
<string name="revanced_hide_get_premium_summary_on">YouTube Premium промоциите са скрити.</string>
|
||||
<string name="revanced_hide_get_premium_summary_off">YouTube Premium промоциите се показват.</string>
|
||||
</patch>
|
||||
<patch id="ad.video.videoAdsPatch">
|
||||
<string name="revanced_hide_video_ads_title">Скриване на видео рекламите</string>
|
||||
<string name="revanced_hide_video_ads_summary_on">Видео рекламите са скрити</string>
|
||||
<string name="revanced_hide_video_ads_summary_off">Видео рекламите са показани</string>
|
||||
<string name="revanced_hide_video_ads_summary_on">Видео рекламите са скрити.</string>
|
||||
<string name="revanced_hide_video_ads_summary_off">Видео рекламите се показват.</string>
|
||||
</patch>
|
||||
<patch id="interaction.copyvideourl.copyVideoUrlResourcePatch">
|
||||
<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_success">Връзката е копирана в клипборда.</string>
|
||||
<string name="revanced_share_copy_url_timestamp_success">URL адрес с отметка за време, копиран в клипборда.</string>
|
||||
<string name="revanced_copy_video_url_title">Показване на бутона за копиране на URL адреса на видеоклипа</string>
|
||||
<string name="revanced_copy_video_url_summary_on">Показан е бутон. Докоснете, за да копирате URL на видеото. Докоснете и задръжте, за да копирате URL адреса на видеоклипа с клеймо за време</string>
|
||||
<string name="revanced_copy_video_url_summary_off">Бутонът не е показан</string>
|
||||
@@ -370,7 +388,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_copy_video_url_timestamp_summary_off">Бутонът не е показан</string>
|
||||
</patch>
|
||||
<patch id="interaction.dialog.removeViewerDiscretionDialogPatch">
|
||||
<string name="revanced_remove_viewer_discretion_dialog_title">Скриване на прозореца за възрастово ограничение</string>
|
||||
<string name="revanced_remove_viewer_discretion_dialog_title">Прозорец за възрастово ограничение</string>
|
||||
<string name="revanced_remove_viewer_discretion_dialog_summary_on">Диалоговият прозорец ще бъде премахнат</string>
|
||||
<string name="revanced_remove_viewer_discretion_dialog_summary_off">Диалоговият прозорец ще бъде показан</string>
|
||||
<string name="revanced_remove_viewer_discretion_dialog_user_dialog_message">Тази функция не заобикаля възрастовото ограничение. Тя просто приема възрастовата граница автоматично.</string>
|
||||
@@ -391,27 +409,27 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
</patch>
|
||||
<patch id="interaction.seekbar.disablePreciseSeekingGesturePatch">
|
||||
<string name="revanced_disable_precise_seeking_gesture_title">Деактивиране на жеста за точно търсене</string>
|
||||
<string name="revanced_disable_precise_seeking_gesture_summary_on">Жестът е деактивиран</string>
|
||||
<string name="revanced_disable_precise_seeking_gesture_summary_off">Жестът е активиран</string>
|
||||
<string name="revanced_disable_precise_seeking_gesture_summary_on">Жест отключен</string>
|
||||
<string name="revanced_disable_precise_seeking_gesture_summary_off">Жест включен</string>
|
||||
</patch>
|
||||
<patch id="interaction.seekbar.enableSeekbarTappingPatch">
|
||||
<string name="revanced_seekbar_tapping_title">Активиране на докосването на лентата за време</string>
|
||||
<string name="revanced_seekbar_tapping_summary_on">Докосването на лентата за време е включено</string>
|
||||
<string name="revanced_seekbar_tapping_summary_off">Докосването на лентата за време е изключено</string>
|
||||
<string name="revanced_seekbar_tapping_summary_on">Функцията „Докосване до лентата за търсене“ е активирана</string>
|
||||
<string name="revanced_seekbar_tapping_summary_off">Функцията „Докосване до лентата за търсене“ е деактивирана</string>
|
||||
</patch>
|
||||
<patch id="interaction.swipecontrols.swipeControlsResourcePatch">
|
||||
<string name="revanced_swipe_brightness_title">Задаване на яркост чрез плъзгане</string>
|
||||
<string name="revanced_swipe_brightness_summary_on">Задаването на яркост чрез плъзгане е включено</string>
|
||||
<string name="revanced_swipe_brightness_summary_off">Задаването на яркост чрез плъзгане е изключено</string>
|
||||
<string name="revanced_swipe_brightness_summary_on">Опцията за превъртане с плъзгане за промяна на яркостта е активирана</string>
|
||||
<string name="revanced_swipe_brightness_summary_off">Опцията за превъртане с плъзгане за промяна на яркостта е деактивирана</string>
|
||||
<string name="revanced_swipe_volume_title">Настройване на звука чрез плъзгане</string>
|
||||
<string name="revanced_swipe_volume_summary_on">Настройването на звука чрез плъзгане е включено</string>
|
||||
<string name="revanced_swipe_volume_summary_off">Настройването на звука чрез плъзгане е изключено</string>
|
||||
<string name="revanced_swipe_volume_summary_on">Обемът чрез плъзване е активен</string>
|
||||
<string name="revanced_swipe_volume_summary_off">Обемът чрез плъзване е деактивиран</string>
|
||||
<string name="revanced_swipe_press_to_engage_title">Активиране на жеста натискане за преместване</string>
|
||||
<string name="revanced_swipe_press_to_engage_summary_on">Натискането при плъзгане е включено</string>
|
||||
<string name="revanced_swipe_press_to_engage_summary_off">Натискането при плъзгане е изключено</string>
|
||||
<string name="revanced_swipe_press_to_engage_summary_on">Плъзгането чрез натискане е активирано</string>
|
||||
<string name="revanced_swipe_press_to_engage_summary_off">Плъзгането чрез натискане е деактивирано</string>
|
||||
<string name="revanced_swipe_haptic_feedback_title">Активиране на хептичната обратна връзка</string>
|
||||
<string name="revanced_swipe_haptic_feedback_summary_on">Хептичната обратна връзка е активирана</string>
|
||||
<string name="revanced_swipe_haptic_feedback_summary_off">Хептичната обратна връзка е деактивирана</string>
|
||||
<string name="revanced_swipe_haptic_feedback_summary_on">Тактилната обратна връзка е активирана</string>
|
||||
<string name="revanced_swipe_haptic_feedback_summary_off">Тактилната обратна връзка е деактивирана</string>
|
||||
<string name="revanced_swipe_save_and_restore_brightness_title">Запазване и възстановяване на яркостта</string>
|
||||
<string name="revanced_swipe_save_and_restore_brightness_summary_on">Запазване и възстаовяване яркостта при включване или изключване на цял екран</string>
|
||||
<string name="revanced_swipe_save_and_restore_brightness_summary_off">Не се запазва или възстаовява яркостта при включване или изключване на цял екран</string>
|
||||
@@ -419,12 +437,12 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_swipe_lowest_value_enable_auto_brightness_summary_on">Плъзгането надолу до най-ниската стойност на жеста за яркост, за да се активира автоматичната яркост</string>
|
||||
<string name="revanced_swipe_lowest_value_enable_auto_brightness_summary_off">Плъзгането надолу до най-ниската стойност на жеста за яркост, без дасе активира автоматичната яркост</string>
|
||||
<string name="revanced_swipe_lowest_value_enable_auto_brightness_overlay_text">Авто</string>
|
||||
<string name="revanced_swipe_overlay_timeout_title">Задръжка на плъзгащата контрола</string>
|
||||
<string name="revanced_swipe_overlay_timeout_summary">Време за което плъзгащата контрола е видима</string>
|
||||
<string name="revanced_swipe_overlay_timeout_title">Задръжка на плъзгащата контрола за показване</string>
|
||||
<string name="revanced_swipe_overlay_timeout_summary">Време за което плъзгащата контрола е видима.</string>
|
||||
<string name="revanced_swipe_text_overlay_size_title">Размер на текста при плъзгане</string>
|
||||
<string name="revanced_swipe_text_overlay_size_summary">Размера на текста на плъзгащите контроли</string>
|
||||
<string name="revanced_swipe_overlay_background_alpha_title">Видимост на фона на плъзгащите контроли</string>
|
||||
<string name="revanced_swipe_overlay_background_alpha_summary">Видимостта на фона на плъзгащите контроли</string>
|
||||
<string name="revanced_swipe_overlay_background_alpha_summary">Видимостта на фона на плъзгащите контроли.</string>
|
||||
<string name="revanced_swipe_threshold_title">Праг на величината на плъзгане</string>
|
||||
<string name="revanced_swipe_threshold_summary">Праг преди да се осъществи плъзгането</string>
|
||||
</patch>
|
||||
@@ -490,11 +508,22 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_hide_subscriptions_button_summary_off">Бутона за абонаменти се показва</string>
|
||||
<!-- 'Notifications' should be translated using the same localized wording YouTube displays the tab. -->
|
||||
<string name="revanced_switch_create_with_notifications_button_title">Заменете бутона „Създаване“ с бутона „Известия“</string>
|
||||
<string name="revanced_switch_create_with_notifications_button_summary_on">Бутонът за създаване се заменя с бутона за известия\n\nЗабележка: Активирането на тази опция също скрива видеореклами</string>
|
||||
<string name="revanced_switch_create_with_notifications_button_summary_on">"Бутонът за създаване е сменен с бутона Известия
|
||||
|
||||
Забележка: Активирането на това също принудително скрива видео рекламите"</string>
|
||||
<string name="revanced_switch_create_with_notifications_button_summary_off">Бутоните \"Създаване\" и \"Известия\" не са разменени</string>
|
||||
<string name="revanced_hide_navigation_button_labels_title">Имена на бутоните на лентата за навигация</string>
|
||||
<string name="revanced_hide_navigation_button_labels_summary_on">Етикетите са скрити</string>
|
||||
<string name="revanced_hide_navigation_button_labels_summary_off">Етикетите се показват</string>
|
||||
<string name="revanced_disable_translucent_status_bar_title">Деактивирай полупрозрачната лента на състоянието</string>
|
||||
<string name="revanced_disable_translucent_status_bar_summary_on">Статусная лента е непрозрачна</string>
|
||||
<string name="revanced_disable_translucent_status_bar_summary_off">Статусная лента е непрозрачна или прозрачна</string>
|
||||
<string name="revanced_disable_translucent_navigation_bar_light_title">Деактивирай полупрозрачната светла лента за навигация</string>
|
||||
<string name="revanced_disable_translucent_navigation_bar_light_summary_on">Светлата лента за навигация е непрозрачна</string>
|
||||
<string name="revanced_disable_translucent_navigation_bar_light_summary_off">Светлата лента за навигация е непрозрачна или прозрачна</string>
|
||||
<string name="revanced_disable_translucent_navigation_bar_dark_title">Деактивиране на тъмната полупрозрачна лента</string>
|
||||
<string name="revanced_disable_translucent_navigation_bar_dark_summary_on">Тъмната лента за навигация е непрозрачна</string>
|
||||
<string name="revanced_disable_translucent_navigation_bar_dark_summary_off">Тъмната лента за навигация е непрозрачна или прозрачна</string>
|
||||
</patch>
|
||||
<patch id="layout.hide.player.flyoutmenupanel.hidePlayerFlyoutMenuPatch">
|
||||
<string name="revanced_hide_player_flyout_title">Падащо меню</string>
|
||||
@@ -676,8 +705,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_hide_shorts_info_panel_summary_on">Информационните панели са скрити</string>
|
||||
<string name="revanced_hide_shorts_info_panel_summary_off">Информационните панели се показват</string>
|
||||
<string name="revanced_hide_shorts_channel_bar_title">Скриване на лентата на канала</string>
|
||||
<string name="revanced_hide_shorts_channel_bar_summary_on">Лентата на канала е скрита</string>
|
||||
<string name="revanced_hide_shorts_channel_bar_summary_off">Лентата на канала е показана</string>
|
||||
<string name="revanced_hide_shorts_channel_bar_summary_on">Лентата на канала е скрита.</string>
|
||||
<string name="revanced_hide_shorts_channel_bar_summary_off">Лентата на канала е показана.</string>
|
||||
<string name="revanced_hide_shorts_video_title_title">Заглавие на видеото</string>
|
||||
<string name="revanced_hide_shorts_video_title_summary_on">Заглавието е скрито</string>
|
||||
<string name="revanced_hide_shorts_video_title_summary_off">Заглавието се показва</string>
|
||||
@@ -731,7 +760,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_ryd_enable_summary_off">Нехаресванията не се показват</string>
|
||||
<string name="revanced_ryd_shorts_title">Пок. нехаресвания в кратките клипове</string>
|
||||
<string name="revanced_ryd_shorts_summary_on">Нехаресванията се показват в кратките клипове</string>
|
||||
<string name="revanced_ryd_shorts_summary_on_disclaimer">Нехаресвания, показани в Shorts\n\nОграничение: Нехаресванията може да не се показват в режим „инкогнито“</string>
|
||||
<string name="revanced_ryd_shorts_summary_on_disclaimer">"Нехаресванията се показват на шорти
|
||||
|
||||
Ограничение: Нехаресванията може да не се появят в режим инкогнито"</string>
|
||||
<string name="revanced_ryd_shorts_summary_off">Нехаресванията са скрити в кратките клипове</string>
|
||||
<string name="revanced_ryd_dislike_percentage_title">Нехаресвания като процент</string>
|
||||
<string name="revanced_ryd_dislike_percentage_summary_on">Нехаресванията се показват като процент</string>
|
||||
@@ -743,7 +774,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_ryd_toast_on_connection_error_title">Показване на известие, ако API не е наличен</string>
|
||||
<string name="revanced_ryd_toast_on_connection_error_summary_on">Показва известие, ако Return YouTube Dislike не е наличен</string>
|
||||
<string name="revanced_ryd_toast_on_connection_error_summary_off">Не се показва известие, ако ReturnYouTube Dislike не е наличен</string>
|
||||
<string name="revanced_ryd_about">Относно</string>
|
||||
<string name="revanced_ryd_about">За програмата</string>
|
||||
<string name="revanced_ryd_attribution_summary">Данните за нехаресване са от Return YouTube Dislike API. Докоснете за да научите повече</string>
|
||||
<!-- Statistic strings are shown in the settings only when ReVanced debug mode is enabled. Typical users will never see these. -->
|
||||
<string name="revanced_ryd_statistics_category_title">Статистика Return YouTube Dislike API на това устройство</string>
|
||||
@@ -774,7 +805,11 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_seekbar_thumbnails_high_quality_summary_off">Миниатюри с средно качество в лентата на възпроизвеждане</string>
|
||||
<string name="revanced_seekbar_thumbnails_high_quality_legacy_summary_on">Миниатюри с високо качество в лентата на прогреса на цял екран</string>
|
||||
<string name="revanced_seekbar_thumbnails_high_quality_legacy_summary_off">Миниатюри със средно качество в лентата на прогреса на цял екран</string>
|
||||
<string name="revanced_seekbar_thumbnails_high_quality_dialog_message">Това също така ще възстанови миниатюри на потоци на живо, които нямат миниатюри на лентата на прогреса.\n\nМиниизображенията на лентата на прогреса ще използват същото качество като текущия видеоклип.\n\nТази функция работи най-добре с качество на видеото 720p или по-ниско и когато използвате много бързо интернет връзка.</string>
|
||||
<string name="revanced_seekbar_thumbnails_high_quality_dialog_message">"Това също ще възстанови миниатюрите на предавания на живо, които нямат миниатюри на плъзгача.
|
||||
|
||||
Миниатюрите на плъзгача ще използват същото качество като текущото видео.
|
||||
|
||||
Тази функция работи най-добре с видео качество от 720p или по-ниско и при използване на много бърза интернет връзка."</string>
|
||||
<string name="revanced_restore_old_seekbar_thumbnails_title">Стари миниатюри на времевата линия</string>
|
||||
<string name="revanced_restore_old_seekbar_thumbnails_summary_on">Над лентата за възпроизвеждане се появяват миниатюри</string>
|
||||
<string name="revanced_restore_old_seekbar_thumbnails_summary_off">Миниатюрите се показват в режим на цял екран</string>
|
||||
@@ -782,7 +817,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<patch id="layout.sponsorblock.sponsorBlockResourcePatch">
|
||||
<string name="revanced_sb_enable_sb">Включване на SponsorBlock</string>
|
||||
<string name="revanced_sb_enable_sb_sum">SponsorBlock е система за прескачане на досадни части и реклами от видеоклиповете в YouTube</string>
|
||||
<string name="revanced_sb_appearance_category">Облик</string>
|
||||
<string name="revanced_sb_appearance_category">Външен вид</string>
|
||||
<string name="revanced_sb_enable_voting">Бутона за гласуване</string>
|
||||
<string name="revanced_sb_enable_voting_sum_on">Бутона за гласуване на част се показва</string>
|
||||
<string name="revanced_sb_enable_voting_sum_off">Бутона за гласуване на част е скрит</string>
|
||||
@@ -806,13 +841,13 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_sb_general_adjusting">Настройване стъпка на новата част</string>
|
||||
<string name="revanced_sb_general_adjusting_sum">Милисекундите с който се преместват бутоните за настройка при създаване на част</string>
|
||||
<string name="revanced_sb_general_adjusting_invalid">Стойността трябва да е положително число</string>
|
||||
<string name="revanced_sb_guidelines_preference_title">Преглед на ръководните линии</string>
|
||||
<string name="revanced_sb_guidelines_preference_title">Вижте указанията</string>
|
||||
<string name="revanced_sb_guidelines_preference_sum">Указанията съдържат правила и съвети за създаване на нови части</string>
|
||||
<string name="revanced_sb_guidelines_popup_title">Следвайте указанията</string>
|
||||
<string name="revanced_sb_guidelines_popup_content">Прочетете указанията на SponsorBlock преди да създадете нови части</string>
|
||||
<string name="revanced_sb_guidelines_popup_already_read">Вече прочетох</string>
|
||||
<string name="revanced_sb_guidelines_popup_already_read">Вече ги прочетох</string>
|
||||
<string name="revanced_sb_guidelines_popup_open">Покажи ми</string>
|
||||
<string name="revanced_sb_general">Общи</string>
|
||||
<string name="revanced_sb_general">Основен</string>
|
||||
<string name="revanced_sb_toast_on_connection_error_title">Показване на известие, ако API не е наличен</string>
|
||||
<string name="revanced_sb_toast_on_connection_error_summary_on">Показва се известие, ако SponsorBlock не е наличен</string>
|
||||
<string name="revanced_sb_toast_on_connection_error_summary_off">Показва се известие, ако SponsorBlock не е наличен</string>
|
||||
@@ -823,24 +858,27 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_sb_general_min_duration_sum">Части, по-кратки от тази стойност (в секунди) няма да бъдат пропускани или показвани</string>
|
||||
<string name="revanced_sb_general_min_duration_invalid">Невалидна времетраене</string>
|
||||
<string name="revanced_sb_general_uuid">Вашият уникален потребителски id</string>
|
||||
<string name="revanced_sb_general_uuid_sum">Това трябва да се държи тайно. То е като парола и не трябва да се споделя с никого. Ако някой го има, то той може да се представи вместо вас</string>
|
||||
<string name="revanced_sb_general_uuid_sum">Това трябва да се пази тайно. То е като парола и не трябва да се споделя с никого. Ако някой го притежава, той може да се представи вместо вас.</string>
|
||||
<string name="revanced_sb_general_uuid_invalid">Личният Id трябва да е с дължина поне 30 знака</string>
|
||||
<string name="revanced_sb_general_api_url">Промяна URL на API</string>
|
||||
<string name="revanced_sb_general_api_url_sum">Адресът, който SponsorBlock използва за свързване към сървъра</string>
|
||||
<string name="revanced_sb_api_url_reset">Нулиране URL адреса на API</string>
|
||||
<string name="revanced_sb_api_url_reset">Нулиране URL адреса, на API.</string>
|
||||
<string name="revanced_sb_api_url_invalid">URL адресът е невалиден</string>
|
||||
<string name="revanced_sb_api_url_changed">URL адресът на API е променен</string>
|
||||
<string name="revanced_sb_settings_ie">Настройки за внасяне и изнасяне</string>
|
||||
<string name="revanced_sb_settings_copy">Копиране</string>
|
||||
<string name="revanced_sb_api_url_changed">URL API е променен.</string>
|
||||
<string name="revanced_sb_settings_ie">Импортиране / Експортиране на настройките</string>
|
||||
<string name="revanced_sb_settings_copy">Копирай</string>
|
||||
<string name="revanced_sb_settings_ie_sum">Вашата JSON конфигурация на SponsorBlock може да бъде импортирана/експортирана в ReVanced и други платформи на SponsorBlock</string>
|
||||
<string name="revanced_sb_settings_ie_sum_warning">Вашата SponsorBlock JSON конфигурация която може да се импортира/експортира до ReVanced или други платформи ползващи SponsorBlock. Това включва вашия потребителски id. Споделяйте това разумно</string>
|
||||
<string name="revanced_sb_settings_import_successful">Настройките са успешно въстановени</string>
|
||||
<string name="revanced_sb_settings_import_failed">Неуспешно импортиране: %s</string>
|
||||
<string name="revanced_sb_settings_export_failed">Неуспешно експортиране на %s</string>
|
||||
<string name="revanced_sb_settings_revanced_export_user_id_warning">Вашите настройки на SponsorBlock съдържат лично Id.\n\nВашето Id е като парола и не трябва да се споделя с никого\n</string>
|
||||
<string name="revanced_sb_settings_revanced_export_user_id_warning">"Вашите настройки съдържат поверителен идентификатор на потребител на SponsorBlock.
|
||||
|
||||
Идентификаторът на потребителя е като парола и никога не трябва да се споделя.
|
||||
"</string>
|
||||
<string name="revanced_sb_settings_revanced_export_user_id_warning_dismiss">Не показвай отново</string>
|
||||
<string name="revanced_sb_diff_segments">Промени поведението на сигмента</string>
|
||||
<string name="revanced_sb_segments_sponsor">Спонсор</string>
|
||||
<string name="revanced_sb_segments_sponsor">Спонсори</string>
|
||||
<string name="revanced_sb_segments_sponsor_sum">Платена промоция, платени препоръки и директни реклами. Не за самореклама или безплатни препоръки за каузи/създатели/уебсайтове/продукти, които се харесват на автора</string>
|
||||
<string name="revanced_sb_segments_selfpromo">Неплатена/Самореклама</string>
|
||||
<string name="revanced_sb_segments_selfpromo_sum">Подобно на „Спонсор“, с изключение на неплатено или самореклама. Включва раздели за стоки, дарения или информация за това с кого са си сътрудничили</string>
|
||||
@@ -889,17 +927,18 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_sb_skipped_nomusic">Пропусната част без музика</string>
|
||||
<string name="revanced_sb_skipped_unsubmitted">Пропуснат неизпратен сегмент</string>
|
||||
<string name="revanced_sb_skipped_multiple_segments">Пропуснати множество части</string>
|
||||
<string name="revanced_sb_skip_automatically">Да се прескача от само себе си</string>
|
||||
<string name="revanced_sb_skip_automatically">Автоматично пропускане</string>
|
||||
<string name="revanced_sb_skip_automatically_once">Авт. пропускане веднъж</string>
|
||||
<string name="revanced_sb_skip_showbutton">Показвай бутон за пропускане</string>
|
||||
<string name="revanced_sb_skip_seekbaronly">Показв. в лентата за време</string>
|
||||
<string name="revanced_sb_skip_ignore">Изключване</string>
|
||||
<string name="revanced_sb_skip_ignore">Деактивиране</string>
|
||||
<string name="revanced_sb_submit_failed_invalid">Не може да се изпрати сегмент: %s</string>
|
||||
<string name="revanced_sb_submit_failed_timeout">SponsorBlock временно не работи</string>
|
||||
<string name="revanced_sb_submit_failed_unknown_error">Не могат да се изпратят сигменти: (статус:%1$d %2$s)</string>
|
||||
<string name="revanced_sb_submit_failed_rate_limit">Не може да се изпрати частта.\nБроят е ограничен (Твърде много от един и същ потребител, IP)</string>
|
||||
<string name="revanced_sb_submit_failed_rate_limit">Неуспешно изпращане на сегмент. Ограничена скорост (твърде много от един и същ потребител или IP)</string>
|
||||
<string name="revanced_sb_submit_failed_forbidden">Не може да се изпрати частта: %s</string>
|
||||
<string name="revanced_sb_submit_failed_duplicate">Не може да се изпрати частта.\nВече съществува</string>
|
||||
<string name="revanced_sb_submit_failed_duplicate">"Не може да се изпрати сегментът.
|
||||
Вече съществува"</string>
|
||||
<string name="revanced_sb_submit_succeeded">Частта е изпратена успешно</string>
|
||||
<!-- Toast shown if network connection times out. Translations of this should not be longer than the original English or the text can be clipped and not entirely shown. -->
|
||||
<string name="revanced_sb_sponsorblock_connection_failure_timeout">SponsorBlock временно не е наличен (API timed out)</string>
|
||||
@@ -922,7 +961,15 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_sb_new_segment_time_start">Частта започва от</string>
|
||||
<string name="revanced_sb_new_segment_time_end">Частта свършва до</string>
|
||||
<string name="revanced_sb_new_segment_confirm_title">Времената точни ли са?</string>
|
||||
<string name="revanced_sb_new_segment_confirm_content">Сегментът продължава от\n\n%1$s\nдо\n%2$s\n\n(%3$s)\n\nГотов ли е за изпращане?</string>
|
||||
<string name="revanced_sb_new_segment_confirm_content">"Сегментът е от
|
||||
|
||||
\"%1$s\"
|
||||
до
|
||||
\"%2$s\"
|
||||
|
||||
(\"%3$s\")
|
||||
|
||||
Готови ли сте да го изпратите?"</string>
|
||||
<string name="revanced_sb_new_segment_start_is_before_end">Началото трябва да бъде преди края</string>
|
||||
<string name="revanced_sb_new_segment_mark_locations_first">Първо маркирайте две места в лентата за времето</string>
|
||||
<string name="revanced_sb_new_segment_preview_segment_first">Преглед и проверка на частта за нормално пропускане</string>
|
||||
@@ -933,11 +980,11 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<!-- Shown in the settings preferences, and translations can be any text length. -->
|
||||
<string name="revanced_sb_stats_connection_failure">Статистиката е враменно недостъпна (API не работи)</string>
|
||||
<string name="revanced_sb_stats_loading">Зареждане...</string>
|
||||
<string name="revanced_sb_stats_sb_disabled">SponsorBlock е изключено</string>
|
||||
<string name="revanced_sb_stats_sb_disabled">SponsorBlock е деактивиран.</string>
|
||||
<string name="revanced_sb_stats_username">Вашето потреб. име: <b>%s</b></string>
|
||||
<string name="revanced_sb_stats_username_change">Докоснете за промяна потребителското име</string>
|
||||
<string name="revanced_sb_stats_username_change_unknown_error">Не може да се промени потреб. име: Състояние: %1$d%2$s</string>
|
||||
<string name="revanced_sb_stats_username_changed">Потребителското име е успешно променено</string>
|
||||
<string name="revanced_sb_stats_username_changed">Потребителското име е успешно променено.</string>
|
||||
<string name="revanced_sb_stats_reputation">Репутацията ви е <b>%.2f</b></string>
|
||||
<string name="revanced_sb_stats_submissions">Създадохте <b>%s</b> части</string>
|
||||
<string name="revanced_sb_stats_submissions_sum">Докоснете тук, за да видите вашите сегменти</string>
|
||||
@@ -956,15 +1003,19 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_sb_color_reset">Възстанови цвета</string>
|
||||
<string name="revanced_sb_color_invalid">Невалидна стойност за цвета</string>
|
||||
<string name="revanced_sb_reset_color">Възстановяване на цвят</string>
|
||||
<string name="revanced_sb_reset">Нулиране</string>
|
||||
<string name="revanced_sb_about">Относно</string>
|
||||
<string name="revanced_sb_reset">Възстанови</string>
|
||||
<string name="revanced_sb_about">За програмата</string>
|
||||
<string name="revanced_sb_about_api_sum">Данните са предоставени от SponsorBlock API. Докоснете тук за повече информация и изтеглияния</string>
|
||||
</patch>
|
||||
<patch id="layout.spoofappversion.spoofAppVersionPatch">
|
||||
<string name="revanced_spoof_app_version_title">Подлъгване за версията на приложението</string>
|
||||
<string name="revanced_spoof_app_version_summary_on">Подправена версия</string>
|
||||
<string name="revanced_spoof_app_version_summary_off">Не подправена версия</string>
|
||||
<string name="revanced_spoof_app_version_user_dialog_message">Версията на приложението YouTube ще бъде променена на по-стара.\n\nТова ще промени външния вид и функциите на приложението.\n\nно ако по-късно се деактивира, се препоръчва да изчистите данните на приложението, за да избегнете грешки в потребителския интерфейс.</string>
|
||||
<string name="revanced_spoof_app_version_user_dialog_message">"Версията на приложението ще бъде фалшифицирана по-стара версия на YouTube.
|
||||
|
||||
Това ще промени външния вид и функциите на приложението, но може да възникнат неизвестни странични ефекти.
|
||||
|
||||
Ако по-късно бъде изключено, препоръчително е да изчистите данните на приложението, за да предотвратите грешки в потребителския интерфейс."</string>
|
||||
<!-- It is ideal, but not required, if the text here appears is alphabetically after the text used for 'revanced_spoof_app_version_title'.
|
||||
This is because the 'General layout' menu uses alphabetic sorting, and it functionally works better if the spoof target selector appears below the 'Spoof app version' UI switch -->
|
||||
<string name="revanced_spoof_app_version_target_title">Подлъгване за версията на</string>
|
||||
@@ -998,6 +1049,12 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_disable_resuming_shorts_player_summary_on">Shorts плейъра при стартиране на приложението е скрит</string>
|
||||
<string name="revanced_disable_resuming_shorts_player_summary_off">Shorts плейъра при стартиране на приложението се показва</string>
|
||||
</patch>
|
||||
<patch id="layout.shortsplayer.shortsPlayerTypePatch">
|
||||
<string name="revanced_shorts_player_type_title">Отворете Shorts с</string>
|
||||
<string name="revanced_shorts_player_type_shorts">Играч на Shorts</string>
|
||||
<string name="revanced_shorts_player_type_regular_player">Обикновен плейър</string>
|
||||
<string name="revanced_shorts_player_type_regular_player_fullscreen">Обикновен плейър на цял екран</string>
|
||||
</patch>
|
||||
<patch id="layout.shortsautoplay.shortsAutoplayPatch">
|
||||
<string name="revanced_shorts_autoplay_title">Автоматично пускане Shorts</string>
|
||||
<string name="revanced_shorts_autoplay_summary_on">Shorts ще се пускат автоматично</string>
|
||||
@@ -1017,7 +1074,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_miniplayer_screen_summary">Променете стила на минимизирания екран за възпроизвеждане</string>
|
||||
<string name="revanced_miniplayer_type_title">Минимизиран тип екран за гледане</string>
|
||||
<string name="revanced_miniplayer_type_entry_0">Деактивирано</string>
|
||||
<string name="revanced_miniplayer_type_entry_1">Оригинал</string>
|
||||
<string name="revanced_miniplayer_type_entry_1">По подразбиране</string>
|
||||
<string name="revanced_miniplayer_type_entry_2">Минимално</string>
|
||||
<string name="revanced_miniplayer_type_entry_3">Таблет</string>
|
||||
<string name="revanced_miniplayer_type_entry_4">Модерен 1</string>
|
||||
@@ -1027,19 +1084,28 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_miniplayer_rounded_corners_summary_on">Ъглите са заоблени</string>
|
||||
<string name="revanced_miniplayer_rounded_corners_summary_off">Ъглите са нормални</string>
|
||||
<string name="revanced_miniplayer_double_tap_action_title">Активирайте двойното докосване и щипване за преоразмеряване</string>
|
||||
<string name="revanced_miniplayer_double_tap_action_summary_on">Действието с двойно докосване и щипване за преоразмеряване е активирано\n\n• Докоснете двукратно, за да увеличите размера на миниплейъра\n• Докоснете два пъти отново, за да възстановите оригиналния размер</string>
|
||||
<string name="revanced_miniplayer_double_tap_action_summary_on">"Активирано е двойно докосване и щипка за преоразмеряване
|
||||
|
||||
• Двойно докосване за увеличаване на размера на мини плейъра
|
||||
• Двойно докосване отново, за да възстановите оригиналния размер"</string>
|
||||
<string name="revanced_miniplayer_double_tap_action_summary_off">Двойно докосване и щипване за преоразмеряване е деактивирано</string>
|
||||
<string name="revanced_miniplayer_drag_and_drop_title">Разрешете плъзгане и местене</string>
|
||||
<string name="revanced_miniplayer_drag_and_drop_summary_on">Плъзгане и местенето е активирано\n\nМиниплейърът може да се плъзга до всеки ъгъл на екрана</string>
|
||||
<string name="revanced_miniplayer_drag_and_drop_summary_on">"Включено е плъзгане и пускане
|
||||
|
||||
Мини плейърът може да бъде плъзган до всеки ъгъл на екрана"</string>
|
||||
<string name="revanced_miniplayer_drag_and_drop_summary_off">Плъзгането и преместването е деактивирано</string>
|
||||
<string name="revanced_miniplayer_horizontal_drag_title">Активиране на хоризонтално плъзгане</string>
|
||||
<string name="revanced_miniplayer_horizontal_drag_summary_on">Жестът за хоризонтално плъзгане е активиран\n\nМиниплейърът може да се плъзга извън екрана наляво или надясно</string>
|
||||
<string name="revanced_miniplayer_horizontal_drag_summary_on">"Активиран е хоризонтален жест за плъзгане
|
||||
|
||||
Мини плейърът може да бъде плъзган извън екрана наляво или надясно"</string>
|
||||
<string name="revanced_miniplayer_horizontal_drag_summary_off">Жестът за хоризонтално плъзгане е деактивиран</string>
|
||||
<string name="revanced_miniplayer_hide_expand_close_title">Скриване на бутона за затваряне</string>
|
||||
<string name="revanced_miniplayer_hide_expand_close_summary_on">Бутонът за затваряне е скрит</string>
|
||||
<string name="revanced_miniplayer_hide_expand_close_summary_off">Показан е бутон за затваряне</string>
|
||||
<string name="revanced_miniplayer_hide_expand_close_legacy_title">Бутони за разширяване и свиване на екрана</string>
|
||||
<string name="revanced_miniplayer_hide_expand_close_legacy_summary_on">Бутоните са скрити\n\nПлъзнете за разгъване или затваряне</string>
|
||||
<string name="revanced_miniplayer_hide_expand_close_legacy_summary_on">"Бутоните са скрити
|
||||
|
||||
Плъзнете, за да разгънете или затворите"</string>
|
||||
<string name="revanced_miniplayer_hide_expand_close_legacy_summary_off">Бутони за разширяване и свиване на екрана са видими</string>
|
||||
<string name="revanced_miniplayer_hide_subtext_title">Екранни текстове, етикети</string>
|
||||
<string name="revanced_miniplayer_hide_subtext_summary_on">Скрити</string>
|
||||
@@ -1070,7 +1136,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<patch id="layout.thumbnails.bypassImageRegionRestrictionsPatch">
|
||||
<string name="revanced_bypass_image_region_restrictions_title">Прескочете забраната за зареждане на изображение</string>
|
||||
<string name="revanced_bypass_image_region_restrictions_summary_on">Домейнът yt4.ggpht.com се използва за зареждане на изображения</string>
|
||||
<string name="revanced_bypass_image_region_restrictions_summary_off">Оригиналният домейн се използва за зареждане на изображения\n\nАктивирането на тази настройка може да коригира зареждането на изображения, които са блокирани в някои региони</string>
|
||||
<string name="revanced_bypass_image_region_restrictions_summary_off">"Използва се оригинален хост на изображения
|
||||
|
||||
Активирането на това може да поправи липсващите изображения, които са блокирани в някои региони"</string>
|
||||
</patch>
|
||||
<patch id="layout.thumbnails.alternativeThumbnailsPatch">
|
||||
<!-- 'Home' should be translated using the same localized wording YouTube displays for the home tab. -->
|
||||
@@ -1085,7 +1153,11 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_alt_thumbnail_options_entry_2">DeArrow & оригинални миниатюри</string>
|
||||
<string name="revanced_alt_thumbnail_options_entry_3">DeArrow & Неподвижни кадри</string>
|
||||
<string name="revanced_alt_thumbnail_options_entry_4">Неподвижни кадри</string>
|
||||
<string name="revanced_alt_thumbnail_dearrow_about_summary">DeArrow предоставя миниатюри на публиката за видеоклипове. Тези миниатюри често са по-подходящи от тези, предоставени от самия YouTube. Ако е активирано, URL адресите на видео ще бъдат изпратени до API сървъра, без да се изпращат други данни. Ако видеоклипът няма миниатюри на DeArrow, ще се покажат или неговите оригинални миниатюри, или заснети кадри. Щракнете, за да научите повече за DeArrow</string>
|
||||
<string name="revanced_alt_thumbnail_dearrow_about_summary">"DeArrow предоставя миниатюри от краудсорсинг за видеоклипове в YouTube. Тези миниатюри често са по-подходящи от тези, предоставени от YouTube
|
||||
|
||||
Ако е разрешено, URL адресите на видеоклиповете ще бъдат изпратени до API сървъра и няма да бъдат изпращани други данни. Ако един видеоклип няма миниатюри на DeArrow, тогава се показват оригиналните или заснемащите кадри
|
||||
|
||||
Докоснете тук, за да научите повече за DeArrow"</string>
|
||||
<string name="revanced_alt_thumbnail_dearrow_connection_toast_title">Показване на известие, ако API не е наличен</string>
|
||||
<string name="revanced_alt_thumbnail_dearrow_connection_toast_summary_on">Показва се известие, ако DeArrow не е наличен</string>
|
||||
<string name="revanced_alt_thumbnail_dearrow_connection_toast_summary_off">Показва се известие, ако DeArrow не е наличен</string>
|
||||
@@ -1124,8 +1196,12 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
</patch>
|
||||
<patch id="misc.dimensions.spoof.spoofDeviceDimensionsPatch">
|
||||
<string name="revanced_spoof_device_dimensions_title">Лъжливи параметри на устройството</string>
|
||||
<string name="revanced_spoof_device_dimensions_summary_on">Подправената резолюция на устройството\n\nМоже да се отключи по-високо качество на видеото, но може да изпитате засичане при възпроизвеждане на видео, по-лош живот на батерията и неизвестни странични ефекти</string>
|
||||
<string name="revanced_spoof_device_dimensions_summary_off">Резолюцията на устройството не е подправена\n\nАктивирането на това не може да отключи по-високо качество на видеото</string>
|
||||
<string name="revanced_spoof_device_dimensions_summary_on">"Размерите на устройството са фалшифицирани
|
||||
|
||||
По-високите видео качества може да бъдат отключени, но може да изпитате заекване на видеовъзпроизвеждане, по-лоша издръжливост на батерията и неизвестни странични ефекти"</string>
|
||||
<string name="revanced_spoof_device_dimensions_summary_off">"Размерите на устройството не са фалшифицирани
|
||||
|
||||
Активирането на това може да отключи по-високи видео качества"</string>
|
||||
<string name="revanced_spoof_device_dimensions_user_dialog_message">Разрешаването на това може да причини прекъсване на възпроизвеждането на видео, влошен живот на батерията и неизвестни странични ефекти.</string>
|
||||
</patch>
|
||||
<patch id="misc.gms.gmsCoreSupportResourcePatch">
|
||||
@@ -1152,6 +1228,11 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_disable_zoom_haptics_summary_on">Вибрациите са деактивирани</string>
|
||||
<string name="revanced_disable_zoom_haptics_summary_off">Вибрациите са активирани</string>
|
||||
</patch>
|
||||
<patch id="video.audio.forceOriginalAudioPatch">
|
||||
<string name="revanced_force_original_audio_title">Принудително оригинално аудио</string>
|
||||
<string name="revanced_force_original_audio_summary_on">Използване на оригинално аудио</string>
|
||||
<string name="revanced_force_original_audio_summary_off">Използване на аудио по подразбиране</string>
|
||||
</patch>
|
||||
<patch id="video.quality.rememberVideoQualityPatch">
|
||||
<!-- Translations should use the same text as revanced_custom_playback_speeds_auto -->
|
||||
<string name="revanced_video_quality_default_entry_1">Авто</string>
|
||||
@@ -1166,7 +1247,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
</patch>
|
||||
<patch id="video.speed.button.playbackSpeedButtonPatch">
|
||||
<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>
|
||||
</patch>
|
||||
<patch id="video.speed.custom.customPlaybackSpeedPatch">
|
||||
@@ -1175,8 +1256,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_custom_speed_menu_summary_off">Менюто за потребителска скорост не се показва</string>
|
||||
<string name="revanced_custom_playback_speeds_title">Персонализирани скорости на възпроизвеждане</string>
|
||||
<string name="revanced_custom_playback_speeds_summary">Добавете или променете скоростa на възпроизвеждане</string>
|
||||
<string name="revanced_custom_playback_speeds_invalid">Персоналната скорост трябва да е по-малка от %s. Използване на стойности по подразбиране.</string>
|
||||
<string name="revanced_custom_playback_speeds_parse_exception">Невалидни персонализирани скорости на възпроизвеждане. Използване на стойности по подразбиране.</string>
|
||||
<string name="revanced_custom_playback_speeds_invalid">Персонализираните скорости трябва да са по-малки от %s</string>
|
||||
<string name="revanced_custom_playback_speeds_parse_exception">Невалидни персонализирани скорости на възпроизвеждане</string>
|
||||
<string name="revanced_custom_playback_speeds_auto">Авто</string>
|
||||
</patch>
|
||||
<patch id="video.speed.remember.rememberPlaybackSpeedPatch">
|
||||
@@ -1201,21 +1282,78 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_spoof_video_streams_screen_summary">Подправете клиентските видео потоци, за да предотвратите проблеми с възпроизвеждането</string>
|
||||
<string name="revanced_spoof_video_streams_title">Подправяне на видео потоци</string>
|
||||
<string name="revanced_spoof_video_streams_summary_on">Видео потоците са подправени</string>
|
||||
<string name="revanced_spoof_video_streams_summary_off">Видео потоците не са подправени\n\nВъзпроизвеждането на видео може да не работи</string>
|
||||
<string name="revanced_spoof_video_streams_summary_off">"Потоците на видеоклипове не са фалшифицирани
|
||||
|
||||
Възпроизвеждането на видеоклипове може да не работи"</string>
|
||||
<string name="revanced_spoof_video_streams_user_dialog_message">Деактивирането на тази настройка ще доведе до проблеми с възпроизвеждането на видео.</string>
|
||||
<string name="revanced_spoof_video_streams_client_title">Клиент по подразбиране</string>
|
||||
<string name="revanced_spoof_video_streams_ios_force_avc_title">Принудително AVC (H.264)</string>
|
||||
<string name="revanced_spoof_video_streams_ios_force_avc_summary_on">Видео кодек по подразбиране AVC (H.264)</string>
|
||||
<string name="revanced_spoof_video_streams_ios_force_avc_summary_off">Видео кодекът се определя автоматично</string>
|
||||
<string name="revanced_spoof_video_streams_ios_force_avc_user_dialog_message">Активирането на това може да подобри живота на батерията и да коригира прекъсванията при възпроизвеждане.\n\nAVC има максимална разделителна способност от 1080p, аудиокодек Opus не е наличен и възпроизвеждането на видео ще използва повече интернет данни от VP9 или AV1.</string>
|
||||
<string name="revanced_spoof_video_streams_ios_force_avc_user_dialog_message">"Активирането на това може да подобри живота на батерията и да поправи заекването на възпроизвеждането.
|
||||
|
||||
AVC има максимална разделителна способност от 1080p, аудио кодекът Opus не е наличен, а видеовъзпроизвеждането ще използва повече интернет данни от VP9 или AV1."</string>
|
||||
<string name="revanced_spoof_video_streams_about_ios_title">Cтранични ефекти от подмяната на iOS</string>
|
||||
<string name="revanced_spoof_video_streams_about_ios_summary">• Частните видеоклипове за деца може да не се възпроизвеждат\n• Потоците на живо започват отначало\n• Видеоклиповете може да свършват 1 секунда по-рано</string>
|
||||
<string name="revanced_spoof_video_streams_about_ios_summary">"• Възможно е частните детски видеоклипове да не се възпроизвеждат
|
||||
• Видеоклиповете завършват 1 секунда по-рано"</string>
|
||||
<string name="revanced_spoof_video_streams_about_android_vr_title">Странични ефекти от подправяне на Android VR</string>
|
||||
<string name="revanced_spoof_video_streams_about_android_vr_summary">• Детските видеоклипове може да не се възпроизвеждат\n• Липсва менюто за аудио запис\n• Не е налична стабилна сила на звука</string>
|
||||
<string name="revanced_spoof_video_streams_language_">Видео потоците са подправени</string>
|
||||
<string name="revanced_spoof_video_streams_language_title">Предпочитан език за аудио поток</string>
|
||||
<string name="revanced_spoof_video_streams_about_android_vr_summary">"• Детските видеоклипове може да не се възпроизвеждат
|
||||
• Предаванията на живо започват от началото
|
||||
• Видеоклиповете завършват 1 секунда по-рано"</string>
|
||||
<string name="revanced_spoof_video_streams_language_title">Език по подразбиране на аудио потока</string>
|
||||
<string name="revanced_spoof_video_streams_language_DEFAULT">Език на приложението</string>
|
||||
<string name="revanced_spoof_video_streams_language_AR">Арабски</string>
|
||||
<string name="revanced_spoof_video_streams_language_AZ">Азербайджански</string>
|
||||
<string name="revanced_spoof_video_streams_language_BG">Български</string>
|
||||
<string name="revanced_spoof_video_streams_language_BN">Бенгалски</string>
|
||||
<string name="revanced_spoof_video_streams_language_CA">Каталонски</string>
|
||||
<string name="revanced_spoof_video_streams_language_CS">Чешки</string>
|
||||
<string name="revanced_spoof_video_streams_language_DA">Датски</string>
|
||||
<string name="revanced_spoof_video_streams_language_DE">Немски</string>
|
||||
<string name="revanced_spoof_video_streams_language_EL">Гръцки</string>
|
||||
<string name="revanced_spoof_video_streams_language_EN">Английски</string>
|
||||
<string name="revanced_spoof_video_streams_language_ES">Испански</string>
|
||||
<string name="revanced_spoof_video_streams_language_ET">Естонски</string>
|
||||
<string name="revanced_spoof_video_streams_language_FA">Персийски</string>
|
||||
<string name="revanced_spoof_video_streams_language_FI">Финландски</string>
|
||||
<string name="revanced_spoof_video_streams_language_FR">Френски</string>
|
||||
<string name="revanced_spoof_video_streams_language_GU">Гуджарати</string>
|
||||
<string name="revanced_spoof_video_streams_language_HI">Хинди</string>
|
||||
<string name="revanced_spoof_video_streams_language_HR">Хърватски</string>
|
||||
<string name="revanced_spoof_video_streams_language_HU">Унгарски</string>
|
||||
<string name="revanced_spoof_video_streams_language_ID">Индонезийски</string>
|
||||
<string name="revanced_spoof_video_streams_language_IT">Италиански</string>
|
||||
<string name="revanced_spoof_video_streams_language_JA">Японски</string>
|
||||
<string name="revanced_spoof_video_streams_language_KK">Казахски</string>
|
||||
<string name="revanced_spoof_video_streams_language_KO">Корейски</string>
|
||||
<string name="revanced_spoof_video_streams_language_LT">Литовски</string>
|
||||
<string name="revanced_spoof_video_streams_language_LV">Латвийски</string>
|
||||
<string name="revanced_spoof_video_streams_language_MK">Македонски</string>
|
||||
<string name="revanced_spoof_video_streams_language_MN">Монголски</string>
|
||||
<string name="revanced_spoof_video_streams_language_MR">Маратхи</string>
|
||||
<string name="revanced_spoof_video_streams_language_MS">Малайски</string>
|
||||
<string name="revanced_spoof_video_streams_language_MY">Бирмански</string>
|
||||
<string name="revanced_spoof_video_streams_language_NL">Холандски</string>
|
||||
<string name="revanced_spoof_video_streams_language_OR">Ория</string>
|
||||
<string name="revanced_spoof_video_streams_language_PA">Пенджабски</string>
|
||||
<string name="revanced_spoof_video_streams_language_PL">Полски</string>
|
||||
<string name="revanced_spoof_video_streams_language_PT_BR">Португалски (Бразилия)</string>
|
||||
<string name="revanced_spoof_video_streams_language_PT_PT">Португалски (Португалия)</string>
|
||||
<string name="revanced_spoof_video_streams_language_RO">Румънски</string>
|
||||
<string name="revanced_spoof_video_streams_language_RU">Руски</string>
|
||||
<string name="revanced_spoof_video_streams_language_SK">Словашки</string>
|
||||
<string name="revanced_spoof_video_streams_language_SL">Словенски</string>
|
||||
<string name="revanced_spoof_video_streams_language_SR">Сръбски</string>
|
||||
<string name="revanced_spoof_video_streams_language_SV">Шведски</string>
|
||||
<string name="revanced_spoof_video_streams_language_SW">Суахили</string>
|
||||
<string name="revanced_spoof_video_streams_language_TA">Тамилски</string>
|
||||
<string name="revanced_spoof_video_streams_language_TE">Телугу</string>
|
||||
<string name="revanced_spoof_video_streams_language_TH">Тайландски</string>
|
||||
<string name="revanced_spoof_video_streams_language_TR">Турски</string>
|
||||
<string name="revanced_spoof_video_streams_language_UK">Украински</string>
|
||||
<string name="revanced_spoof_video_streams_language_UR">Урду</string>
|
||||
<string name="revanced_spoof_video_streams_language_VI">Виетнамски</string>
|
||||
<string name="revanced_spoof_video_streams_language_ZH">Китайски</string>
|
||||
</patch>
|
||||
</app>
|
||||
<app id="twitch">
|
||||
@@ -1225,8 +1363,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_block_audio_ads_summary_off">Аудио рекламата е разблокирана</string>
|
||||
</patch>
|
||||
<patch id="ad.embedded.embeddedAdsPatch">
|
||||
<string name="revanced_embedded_ads_service_unavailable">%s е недостъпен. Може да се показват реклами. Опитайте друга услуга за блокиране на реклами.</string>
|
||||
<string name="revanced_embedded_ads_service_failed">%s сървърът върна грешка. Може да се показват реклами. Опитайте да превключите друга услуга за блокиране на реклами.</string>
|
||||
<string name="revanced_embedded_ads_service_unavailable">%s не е наличен, може да се появят реклами. Опитайте да промените услугата за блокиране на реклами в настройките.</string>
|
||||
<string name="revanced_embedded_ads_service_failed">%s върна грешка, може да се появят реклами. Опитайте да промените услугата за блокиране на реклами в настройките.</string>
|
||||
<string name="revanced_block_embedded_ads_title">Блокиране на вградени видеореклами</string>
|
||||
<string name="revanced_block_embedded_ads_entry_1">Деактивирано</string>
|
||||
<string name="revanced_block_embedded_ads_entry_2">Luminous прокси</string>
|
||||
|
||||
@@ -1,34 +1,23 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
|
||||
Note: All strings must have a unique path, even if the same string is declared in two different apps.
|
||||
This is because Crowdin requires temporarily flattening this file and removing the <app> and <patch> elements.
|
||||
All strings must have a unique path, even if the same string is declared in two different apps.
|
||||
This is because Crowdin requires temporarily flattening this file and removing the <app> and <patch> elements.
|
||||
|
||||
# General guidelines and information for translating
|
||||
|
||||
## Strings parameters can be reordered to allow more flexible translations if the grammar should be changed.
|
||||
Strings with new lines must be raw strings where they're wrapped in quotes and new lines are not encoded.
|
||||
Raw strings still requires escaping embedded double quotes but escaping embedded single quotes is optional.
|
||||
|
||||
For example, the patches string:
|
||||
<string name="revanced_patches_string">You will arrive at %1$s in %2$s hours from now</string>
|
||||
Could be translated to another language using a rearranged grammar:
|
||||
<string name="revanced_patches_string">You will arrive %2$s hours from now at %1$s</string>
|
||||
Raw strings are required because Crowdin AI translations regularly gets confused and
|
||||
replace \n with an encoded new line character.
|
||||
|
||||
For Manager strings:
|
||||
You will arrive at ${destination} in ${count} hours from now
|
||||
Could be rearranged by changing the order of the ${} parameters:
|
||||
You will arrive ${count} hours from now at ${destination}
|
||||
Bad:
|
||||
<string name="summary_key">First \'item\' text\nSecond \"item\" text</string>
|
||||
|
||||
Reordering is particularly relevant when translating into right to left languages, or for any language with grammar that is noticeably different from English.
|
||||
Good:
|
||||
<string name="summary_key">"First 'item' text
|
||||
Second \"item\" text"</string>
|
||||
|
||||
## Single and double quotation marks must be escaped for patch strings (Manager does not require escaping any quotes).
|
||||
|
||||
All _patches_ single and double quotation marks must be escaped as \" or \'
|
||||
Forgetting to do this will cause that string to appear in app with no quotation characters.
|
||||
|
||||
Correct:
|
||||
<string name="revanced_string">You\'re correct. This is the \"correct\" way and this text will appear as expected in the app</string>
|
||||
Not correct:
|
||||
<string name="revanced_string">You're not correct. This is not the "correct" way and this text will not appear as expected the in app</string>
|
||||
-->
|
||||
<resources>
|
||||
<app id="shared">
|
||||
@@ -36,6 +25,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_check_environment_failed_title">চেক ফেইল করেছে</string>
|
||||
<string name="revanced_check_environment_dialog_open_official_source_button">অফিশ্যাল ওয়েবসাইট খুলুন</string>
|
||||
<string name="revanced_check_environment_dialog_ignore_button">অবজ্ঞা করুন</string>
|
||||
<string name="revanced_check_environment_failed_message"><h5>এই অ্যাপটি আপনার দ্বারা প্যাচ করা হয়েছে বলে মনে হচ্ছে না।</h5><br>এই অ্যাপটি সঠিকভাবে কাজ নাও করতে পারে, <b>ক্ষতিকারক বা এমনকি ব্যবহারের জন্য বিপজ্জনক হতে পারে</b>।<br><br>এই চেকগুলি ইঙ্গিত দেয় যে এই অ্যাপটি পূর্ববর্তীভাবে প্যাচ করা হয়েছে বা অন্য কাউকে থেকে পাওয়া গেছে:<br><br><small>%1$s</small><br>এটি দৃঢ়ভাবে সুপারিশ করা হয় যে <b>এই অ্যাপটি আনইনস্টল করা হোক এবং নিজেই প্যাচ করা হোক</b> যাতে নিশ্চিত করা হয় যে আপনি একটি যাচাইকৃত এবং সুরক্ষিত অ্যাপ ব্যবহার করছেন।<p><br>যদি উপেক্ষা করা হয়, তাহলে এই সতর্কতাটি শুধুমাত্র দু\'বার দেখানো হবে।</string>
|
||||
<string name="revanced_check_environment_not_same_patching_device">অন্য ডিভাইসে প্যাচ করা হয়েছে</string>
|
||||
<string name="revanced_check_environment_manager_not_expected_installer">ReVanced Manager দ্বারা প্যাচ করা হয়নি</string>
|
||||
<string name="revanced_check_environment_not_near_patch_time">১০ মিনিটেরও বেশি আগে প্যাচ করা হয়েছে</string>
|
||||
@@ -43,6 +33,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_check_environment_not_near_patch_time_invalid">APK তৈরির তারিখ ত্রুটিপূর্ণ</string>
|
||||
</patch>
|
||||
<patch id="misc.settings.settingsResourcePatch">
|
||||
<string name="revanced_settings_title">ReVanced</string>
|
||||
<string name="revanced_settings_confirm_user_dialog_title">আপনি কি এগিয়ে যেতে ইচ্ছুক?</string>
|
||||
<string name="revanced_settings_reset">আবার সেট করুন</string>
|
||||
<string name="revanced_settings_restart_title">রিফ্রেশ করুন এবং আবার চালু করুন</string>
|
||||
@@ -66,9 +57,17 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<!-- Translations of this should not be longer than the original English text, otherwise the text can be clipped and not entirely shown. -->
|
||||
<string name="gms_core_toast_not_installed_message">MicroG GmsCore ইনস্টল করা হয়নি। ইনস্টল করুন।</string>
|
||||
<string name="gms_core_dialog_title">পদক্ষেপ প্রয়োজন</string>
|
||||
<string name="gms_core_dialog_not_whitelisted_not_allowed_in_background_message">MicroG GmsCore এর ব্যাকগ্রাউন্ডে চলমান থাকার অনুমতি নেই।\n\nআপনার ডিভাইসের জন্য \"Don\'t kill my app\" এ থাকা নির্দেশাবলী অনুসরণ করুন, এবং আপনার ইনস্টলকৃত MicroG তে তা প্রয়োগ করুন।\n\nঅ্যাপ সঠিকভাবে চলতে এটি অবশ্যই প্রয়োজন।</string>
|
||||
<string name="gms_core_dialog_not_whitelisted_not_allowed_in_background_message">"MicroG GmsCore-এর পটভূমিতে চালানোর অনুমতি নেই।
|
||||
|
||||
আপনার ফোনের জন্য \"Don't kill my app\" গাইড অনুসরণ করুন এবং MicroG ইনস্টলেশনের জন্য নির্দেশাবলী প্রয়োগ করুন।
|
||||
|
||||
এটি অ্যাপ্লিকেশনটি কাজ করার জন্য প্রয়োজন।"</string>
|
||||
<string name="gms_core_dialog_open_website_text">ওয়েবসাইট খুলুন</string>
|
||||
<string name="gms_core_dialog_not_whitelisted_using_battery_optimizations_message">ত্রুটি এড়াতে MicroG GmsCore এর ব্যাটারি অপটিমাইজেশন অবশ্যই নিষ্ক্রিয় করতে হবে।\n\nএগিয়ে যান বোতামে ট্যাপ করুন এবং ব্যাটারি অপটিমাইজেশন নিস্ক্রিয় করুন।</string>
|
||||
<string name="gms_core_dialog_not_whitelisted_using_battery_optimizations_message">"সমস্যা এড়াতে MicroG GmsCore-এর ব্যাটারি অপ্টিমাইজেশন অক্ষম করতে হবে।
|
||||
|
||||
MicroG-এর জন্য ব্যাটারি অপ্টিমাইজেশন অক্ষম করা ব্যাটারি ব্যবহারকে নেতিবাচকভাবে প্রভাবিত করবে না।
|
||||
|
||||
চালিয়ে যান বোতামটি ট্যাপ করুন এবং অপ্টিমাইজেশন পরিবর্তনগুলি অনুমোদন করুন।"</string>
|
||||
<string name="gms_core_dialog_continue_text">এগিয়ে যান</string>
|
||||
</patch>
|
||||
</app>
|
||||
@@ -80,12 +79,16 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_settings_screen_03_feed_title">ফিড</string>
|
||||
<string name="revanced_settings_screen_04_player_title">প্লেয়ার</string>
|
||||
<string name="revanced_settings_screen_05_general_title">সাধারণ লে-আউট</string>
|
||||
<string name="revanced_settings_screen_06_shorts_title">Shorts</string>
|
||||
<string name="revanced_settings_screen_07_seekbar_title">সিকবার</string>
|
||||
<string name="revanced_settings_screen_08_swipe_controls_title">সোয়াইপ কন্ট্রোল</string>
|
||||
<string name="revanced_settings_screen_11_misc_title">বিবিধ</string>
|
||||
<string name="revanced_settings_screen_12_video_title">ভিডিও</string>
|
||||
</patch>
|
||||
<patch id="misc.backgroundplayback.backgroundPlaybackPatch">
|
||||
<string name="revanced_shorts_disable_background_playback_title">Shorts ব্যাকগ্রাউন্ড প্লে অক্ষম করুন</string>
|
||||
<string name="revanced_shorts_disable_background_playback_summary_on">Shorts ব্যাকগ্রাউন্ড প্লে অক্ষম করা হয়েছে</string>
|
||||
<string name="revanced_shorts_disable_background_playback_summary_off">Shorts ব্যাকগ্রাউন্ড প্লে সক্ষম করা হয়েছে</string>
|
||||
</patch>
|
||||
<patch id="misc.debugging.enableDebuggingPatch">
|
||||
<string name="revanced_debug_screen_title">ডিবাগিং</string>
|
||||
@@ -102,7 +105,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_debug_toast_on_error_title">ReVanced এর ত্রুটির ক্ষেত্রে টোস্ট দেখান</string>
|
||||
<string name="revanced_debug_toast_on_error_summary_on">কোন ত্রুটি দেখা গেলে টোস্ট দেখায়</string>
|
||||
<string name="revanced_debug_toast_on_error_summary_off">কোন ত্রুটি দেখা গেলে টোস্ট দেখায় না</string>
|
||||
<string name="revanced_debug_toast_on_error_user_dialog_message">ত্রুটির টোস্ট দেখানো বন্ধ করলে তা ReVanced এর সকল ত্রুটির বিজ্ঞপ্তি লুকিয়ে রাখবে।\n\nআপনি কোন অনাকাঙ্ক্ষিত ঘটনার বিজ্ঞপ্তি পাবেন না।</string>
|
||||
<string name="revanced_debug_toast_on_error_user_dialog_message">"ত্রুটি \"toast\" বন্ধ করে ReVanced ত্রুটি বিজ্ঞপ্তিগুলি লুকানো হয়।
|
||||
|
||||
আপনি কোনও অপ্রত্যাশিত ঘটনার বিষয়ে অবহিত হবেন না।"</string>
|
||||
</patch>
|
||||
<patch id="layout.hide.general.hideLayoutComponentsPatch">
|
||||
<string name="revanced_disable_like_subscribe_glow_title">পছন্দ / সদস্যতা বোতামের উজ্জ্বলতা নিষ্ক্রিয় করুন</string>
|
||||
@@ -121,7 +126,12 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_hide_channel_watermark_summary_on">জলছাপ লুকানো আছে</string>
|
||||
<string name="revanced_hide_channel_watermark_summary_off">জলছাপ দেখানো আছে</string>
|
||||
<string name="revanced_hide_horizontal_shelves_title">আনুভূমিক শেলফ লুকান</string>
|
||||
<string name="revanced_hide_horizontal_shelves_summary_on">যে সকল শেলফ লুকানো হবে:\n• সর্বমেষ খবর\n• দেখা অবিরত রাখুন\n• আরও চ্যানেল দেখুন\n• কেনাকাটা\n• এটি আবার দেখুন</string>
|
||||
<string name="revanced_hide_horizontal_shelves_summary_on">"শেল্ফগুলি লুকানো হয় যেমন:
|
||||
• তাজা সংবাদ
|
||||
• দেখা চালিয়ে যান
|
||||
• আরও চ্যানেল অন্বেষণ করুন
|
||||
• কেনাকাটা
|
||||
• আবার দেখুন"</string>
|
||||
<string name="revanced_hide_horizontal_shelves_summary_off">শেলফ প্রদর্শিত হয়েছে</string>
|
||||
<!-- 'Join' should be translated using the same localized wording YouTube displays.
|
||||
This appears in the video player for certain videos. -->
|
||||
@@ -149,9 +159,6 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_hide_timed_reactions_title">সময় অনুযায়ী প্রতিক্রিয়া লুকান</string>
|
||||
<string name="revanced_hide_timed_reactions_summary_on">সময় অনুযায়ী প্রতিক্রিয়া লুকিয়ে রয়েছে</string>
|
||||
<string name="revanced_hide_timed_reactions_summary_off">সময় অনুযায়ী প্রতিক্রিয়া প্রদর্শিত হয়েছে</string>
|
||||
<string name="revanced_hide_search_result_shelf_header_title">অনুসন্ধান ফলাফল শেলফের হেডার লুকান</string>
|
||||
<string name="revanced_hide_search_result_shelf_header_summary_on">শেলফ হেডার লুকিয়ে রয়েছে</string>
|
||||
<string name="revanced_hide_search_result_shelf_header_summary_off">শেলফ হেডার প্রদর্শিত হয়েছে</string>
|
||||
<string name="revanced_hide_channel_guidelines_title">চ্যানেল নির্দেশিকা লুকান</string>
|
||||
<string name="revanced_hide_channel_guidelines_summary_on">চ্যানেল নির্দেশিকা লুকিয়ে রয়েছে</string>
|
||||
<string name="revanced_hide_channel_guidelines_summary_off">চ্যানেল নির্দেশিকা প্রদর্শিত হয়েছে</string>
|
||||
@@ -221,9 +228,16 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_hide_chapters_section_title">চ্যাপ্টার বিভাগ লুকান</string>
|
||||
<string name="revanced_hide_chapters_section_summary_on">চ্যাপ্টার বিভাগ লুকিয়ে রয়েছে</string>
|
||||
<string name="revanced_hide_chapters_section_summary_off">চ্যাপ্টার বিভাগ প্রদর্শিত হয়েছে</string>
|
||||
<string name="revanced_hide_podcast_section_title">‘পডকাস্ট বিভাগ লুকান’</string>
|
||||
<string name="revanced_hide_podcast_section_summary_on">‘পডকাস্ট বিভাগ’ লুকানো আছে</string>
|
||||
<string name="revanced_hide_podcast_section_summary_off">‘পডকাস্ট বিভাগ’ প্রদর্শিত হয়েছে</string>
|
||||
<string name="revanced_hide_info_cards_section_title">তথ্য কার্ড সেকশন লুকান</string>
|
||||
<string name="revanced_hide_info_cards_section_summary_on">তথ্য কার্ড সেকশন লুকিয়ে রয়েছে</string>
|
||||
<string name="revanced_hide_info_cards_section_summary_off">তথ্য কার্ড সেকশন প্রদর্শিত হয়েছে</string>
|
||||
<string name="revanced_hide_key_concepts_section_title">‘মূল বিষয়বস্তু’ বিভাগ লুকানো আছে</string>
|
||||
<string name="revanced_hide_key_concepts_section_summary_on">‘মূল বিষয়বস্তু’ বিভাগ লুকিয়ে রয়েছে</string>
|
||||
<string name="revanced_hide_key_concepts_section_summary_off">‘मुख्य संकल्पना’ अनुभाग प्रदर्शित होता है</string>
|
||||
<string name="revanced_hide_transcript_section_title">ट्रांसक्रिप्ट अनुभाग छिपाएँ</string>
|
||||
<string name="revanced_hide_transcript_section_summary_on">ট্রান্সস্ক্রিপ্ট বিভাগ লুকিয়ে রয়েছে</string>
|
||||
<string name="revanced_hide_transcript_section_summary_off">ট্রান্সস্ক্রিপ্ট বিভাগ প্রদর্শিত হয়েছে</string>
|
||||
<string name="revanced_hide_description_components_screen_title">ভিডিওর বিবরণ</string>
|
||||
@@ -241,6 +255,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_hide_filter_bar_feed_in_related_videos_summary_off">সম্পর্কিত ভিডিওতে প্রদর্শিত হয়েছে</string>
|
||||
<string name="revanced_comments_screen_title">মন্তব্য</string>
|
||||
<string name="revanced_comments_screen_summary">মন্তব্য বিভাগের উপাদানগুলি লুকান বা দেখান৷</string>
|
||||
<string name="revanced_hide_comments_chat_summary_title"> \'চ্যাটের সারাংশ\' লুকান</string>
|
||||
<string name="revanced_hide_comments_chat_summary_summary_on">“চ্যাট সারাংশ” লুকানো আছে</string>
|
||||
<string name="revanced_hide_comments_chat_summary_summary_off">“চ্যাট সারাংশ” দেখানো হচ্ছে</string>
|
||||
<string name="revanced_hide_comments_by_members_header_title">\'মেম্বারদের মন্তব্য\' হেডার লুকান</string>
|
||||
<string name="revanced_hide_comments_by_members_header_summary_on">\'মেম্বারদের মন্তব্য\' হেডার লুকিয়ে রয়েছে</string>
|
||||
<string name="revanced_hide_comments_by_members_header_summary_off">\'মেম্বারদের মন্তব্য\' হেডার প্রদর্শিত হয়েছে</string>
|
||||
@@ -260,6 +277,12 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_summary_on">টাইমস্ট্যাম্প ও ইমোজি বোতাম লুকিয়ে রয়েছে</string>
|
||||
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_summary_off">টাইমস্ট্যাম্প ও ইমোজি বোতাম প্রদর্শিত হয়েছে</string>
|
||||
<!-- https://logos.fandom.com/wiki/YouTube/Yoodles -->
|
||||
<string name="revanced_hide_doodles_title">YouTube Doodles छिपाएँ</string>
|
||||
<string name="revanced_hide_doodles_summary_on">सर्च बार Doodles छिपे हुए हैं</string>
|
||||
<string name="revanced_hide_doodles_summary_off">সার্চ বারে Doodles প্রদর্শিত হয়</string>
|
||||
<string name="revanced_hide_doodles_user_dialog_message">"YouTube Doodles প্রতি বছর কয়েক দিনের জন্য দেখানো হয়।
|
||||
|
||||
আপনার অঞ্চলে যদি কোনও Doodle বর্তমানে দেখানো হচ্ছে এবং এই লুকানো সেটিং চালু থাকে, তাহলে সার্চ বারের নীচে ফিল্টার বারটিও লুকানো থাকবে।"</string>
|
||||
<string name="revanced_custom_filter_screen_title">কাস্টম ফিল্টার</string>
|
||||
<string name="revanced_custom_filter_screen_summary">কাস্টম ফিল্টার ব্যবহার করে বিভিন্ন উপাদান লুকান</string>
|
||||
<string name="revanced_custom_filter_title">কাস্টম ফিল্টার সক্রিয় করুন</string>
|
||||
@@ -283,16 +306,36 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_hide_keyword_content_phrases_title">লুকানোর জন্য কীওয়ার্ড</string>
|
||||
<!-- For localization it is preferred, but not required, if 'LeBlanc' is replaced with a localized name or a familiar word that has upper case letters in the middle of the word.
|
||||
This is because keywords can be in any language, and showing an example in the localized script helps convey this. -->
|
||||
<string name="revanced_hide_keyword_content_phrases_summary">"নতুন লাইন দ্বারা পৃথক করা লুকানোর জন্য কিওয়ার্ড এবং বাক্যাংশ
|
||||
|
||||
কিওয়ার্ড চ্যানেলের নাম বা ভিডিও শিরোনামে দেখানো কোনও পাঠ্য হতে পারে
|
||||
|
||||
মাঝখানে বড় হাতের অক্ষর সম্বলিত শব্দগুলি কেসিং দিয়ে প্রবেশ করতে হবে (যেমন: iPhone, TikTok, LeBlanc)"</string>
|
||||
<string name="revanced_hide_keyword_content_about_title">কীওয়ার্ড ফিল্টারিং সম্পর্কে</string>
|
||||
<string name="revanced_hide_keyword_content_about_summary">"হোম / সাবস্ক্রিপশন / অনুসন্ধানের ফলাফলগুলি কিওয়ার্ড বাক্যাংশের সাথে মিলে যাওয়া সামগ্রী লুকানোর জন্য ফিল্টার করা হয়
|
||||
|
||||
সীমাবদ্ধতা
|
||||
• চ্যানেলের নাম দ্বারা Shorts লুকানো যাবে না
|
||||
• কিছু UI উপাদান লুকানো নাও হতে পারে
|
||||
• কোনও কিওয়ার্ড অনুসন্ধান করলে কোনও ফলাফল নাও দেখাতে পারে"</string>
|
||||
<string name="revanced_hide_keyword_content_about_whole_words_title">সম্পূর্ণ শব্দ মেলাও</string>
|
||||
<!-- Translations _must_ use a localized example. For languages that do not use spaces between words (Chinese, Japanese, etc) the English AI example should be used since no localized examples exist. Or if using machine translations, or if nobody wants to think of a localized example, then the English 'ai' example should be left as-is. -->
|
||||
<string name="revanced_hide_keyword_content_about_whole_words_summary">ডাবল কোটের মধ্যে একটি কীওয়ার্ড/ফ্রেজ রাখলে ভিডিও শিরোনাম এবং চ্যানেলের নামের আংশিক মিল সনাক্ত করা বন্ধ হয়ে যাবে<br><br>উদাহরণস্বরূপ,<br><b>\"ai\"</b> ভিডিওটি লুকিয়ে দেবে: <b>How does AI work?</b><br>কিন্তু লুকিয়ে দেবে না: <b>What does fair use mean?</b></string>
|
||||
<!-- Translations of this should not be longer than the original English text, otherwise the text can be clipped and not entirely shown. -->
|
||||
<string name="revanced_hide_keyword_toast_invalid_common">কিওয়ার্ড ব্যবহার করা যাবে না: %s</string>
|
||||
<string name="revanced_hide_keyword_toast_invalid_common_whole_word_required">কিওয়ার্ড ব্যবহার করার জন্য উদ্ধৃতি যোগ করুন: %s</string>
|
||||
<string name="revanced_hide_keyword_toast_invalid_conflicting">কিওয়ার্ডের দ্বন্দ্বপূর্ণ ঘোষণা আছে: %s</string>
|
||||
<string name="revanced_hide_keyword_toast_invalid_length">কিওয়ার্ড খুব ছোট এবং উদ্ধৃতি প্রয়োজন: %s</string>
|
||||
<string name="revanced_hide_keyword_toast_invalid_broad">কিওয়ার্ড সমস্ত ভিডিও লুকিয়ে রাখবে: %s</string>
|
||||
</patch>
|
||||
<patch id="ad.general.hideAdsResourcePatch">
|
||||
<string name="revanced_hide_general_ads_title">সাধারণ বিজ্ঞাপন লুকান</string>
|
||||
<string name="revanced_hide_general_ads_summary_on">সাধারণ বিজ্ঞাপন লুকিয়ে রয়েছে</string>
|
||||
<string name="revanced_hide_general_ads_summary_off">সাধারণ বিজ্ঞাপন প্রদর্শিত হয়েছে</string>
|
||||
<string name="revanced_hide_fullscreen_ads_title">পূর্ণ স্ক্রীন প্যানেল লুকান</string>
|
||||
<string name="revanced_hide_fullscreen_ads_summary_on">পূর্ণ স্ক্রীণ বিজ্ঞাপন লুকিয়ে রয়েছে\n\nএই ফিচারটি শুধুমাত্র পুরোনো ডিভাইসের জন্য উপলভ্য</string>
|
||||
<string name="revanced_hide_fullscreen_ads_summary_on">"পূর্ণ পর্দার বিজ্ঞাপন লুকানো হয়
|
||||
|
||||
এই বৈশিষ্ট্যটি কেবল পুরনো ডিভাইসের জন্য উপলব্ধ"</string>
|
||||
<string name="revanced_hide_fullscreen_ads_summary_off">পূর্ণ স্ক্রীন বিজ্ঞাপন প্রদর্শিত হয়েছে</string>
|
||||
<string name="revanced_hide_buttoned_ads_title">বোতামযুক্ত বিজ্ঞাপন লুকান</string>
|
||||
<string name="revanced_hide_buttoned_ads_summary_on">বোতামযুক্ত বিজ্ঞাপন লুকিয়ে রয়েছে</string>
|
||||
@@ -306,6 +349,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_hide_products_banner_title">প্রোডাক্ট দেখার ব্যানার লুকান</string>
|
||||
<string name="revanced_hide_products_banner_summary_on">ব্যানার লুকিয়ে রয়েছে</string>
|
||||
<string name="revanced_hide_products_banner_summary_off">ব্যানার প্রদর্শিত হয়েছে</string>
|
||||
<string name="revanced_hide_player_store_shelf_title">প্লেয়ার শপিং শেলফ লুকান</string>
|
||||
<string name="revanced_hide_player_store_shelf_summary_on">শপিং শেলফ লুকানো আছে</string>
|
||||
<string name="revanced_hide_player_store_shelf_summary_off">শপিং শেলফ দেখানো হচ্ছে</string>
|
||||
<string name="revanced_hide_shopping_links_title">ভিডিওর বিবরণে কেনাকাটার লিঙ্ক লুকান</string>
|
||||
<string name="revanced_hide_shopping_links_summary_on">কেনাকাটার লিঙ্ক লুকিয়ে রয়েছে</string>
|
||||
<string name="revanced_hide_shopping_links_summary_off">কেনাকাটার লিঙ্ক প্রদর্শিত হয়েছে</string>
|
||||
@@ -389,6 +435,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_swipe_save_and_restore_brightness_summary_on">পূর্ণস্ক্রিনে প্রবেশ বা পূর্ণস্ক্রিন থেকে বাহির হওয়ার সময়, উজ্জ্বলতা সংরক্ষণ এবং পুনরুদ্ধার করবে</string>
|
||||
<string name="revanced_swipe_save_and_restore_brightness_summary_off">পূর্ণস্ক্রিনে প্রবেশ বা পূর্ণস্ক্রিন থেকে বাহির হওয়ার সময়, উজ্জ্বলতা সংরক্ষণ এবং পুনরুদ্ধার করবে না</string>
|
||||
<string name="revanced_swipe_lowest_value_enable_auto_brightness_title">স্বয়ংক্রিয়-উজ্জ্বলতার অঙ্গভঙ্গি সক্রিয় করুন</string>
|
||||
<string name="revanced_swipe_lowest_value_enable_auto_brightness_summary_on">উজ্জ্বলতার অঙ্গভঙ্গির সর্বনিম্ন মানে সোয়াইপ ডাউন করলে অটো-উজ্জ্বলতা সক্ষম হয়</string>
|
||||
<string name="revanced_swipe_lowest_value_enable_auto_brightness_summary_off">সর্বনিম্ন মানে সোয়াইপ ডাউন করলে অটো-উজ্জ্বলতা সক্ষম হয় না</string>
|
||||
<string name="revanced_swipe_lowest_value_enable_auto_brightness_overlay_text">স্বতস্ফূর্তভাবে</string>
|
||||
<string name="revanced_swipe_overlay_timeout_title">ওভার-লে টাইম আউট</string>
|
||||
<string name="revanced_swipe_overlay_timeout_summary">কত মিলিসেকেন্ডের জন্য ওভারলে দৃশ্যমান হবে</string>
|
||||
@@ -397,16 +445,34 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_swipe_overlay_background_alpha_title">সোয়াইপ ব্যাকগ্রাউন্ডের দৃশ্যমানতা</string>
|
||||
<string name="revanced_swipe_overlay_background_alpha_summary">সোয়াইপ ওভারলে ব্যাকগ্রাউন্ডের দৃশ্যমানতা</string>
|
||||
<string name="revanced_swipe_threshold_title">সোয়াইপ থ্রেশহোল্ড এর মাত্রা</string>
|
||||
<string name="revanced_swipe_threshold_summary">সোয়াইপ করার থ্রেশহোল্ডের পরিমাণ</string>
|
||||
</patch>
|
||||
<patch id="layout.autocaptions.autoCaptionsPatch">
|
||||
<string name="revanced_auto_captions_title">স্বয়ংক্রিয় ক্যাপশন বন্ধ করুন</string>
|
||||
<string name="revanced_auto_captions_summary_on">অটো ক্যাপশন বন্ধ করা হয়েছে</string>
|
||||
<string name="revanced_auto_captions_summary_off">অটো ক্যাপশন চালু করা হয়েছে</string>
|
||||
</patch>
|
||||
<patch id="layout.buttons.action.hideButtonsPatch">
|
||||
<string name="revanced_hide_buttons_screen_title">অ্যাকশন বোতাম</string>
|
||||
<string name="revanced_hide_buttons_screen_summary">ভিডিওর নীচে বোতাম লুকানো বা দেখানো</string>
|
||||
<string name="revanced_hide_like_dislike_button_title">Like এবং Dislike লুকান</string>
|
||||
<string name="revanced_hide_like_dislike_button_summary_on">Like এবং Dislike বোতাম লুকানো আছে</string>
|
||||
<string name="revanced_hide_like_dislike_button_summary_off">Like এবং Dislike বোতাম দেখানো হচ্ছে</string>
|
||||
<!-- 'Share' should be translated with the same localized wording that YouTube displays. -->
|
||||
<string name="revanced_hide_share_button_title">Share লুকান</string>
|
||||
<string name="revanced_hide_share_button_summary_on">শেয়ার করুন বোতাম লুকিয়ে রয়েছে</string>
|
||||
<string name="revanced_hide_share_button_summary_off">শেয়ার বাটন প্রদর্শিত হয়েছে</string>
|
||||
<!-- 'Report' should be translated with the same localized wording that YouTube displays.
|
||||
This button usually appears only on live streams. -->
|
||||
<string name="revanced_hide_report_button_title">Report লুকান</string>
|
||||
<string name="revanced_hide_report_button_summary_on">রিপোর্ট বাটন লুকিয়ে রয়েছে</string>
|
||||
<string name="revanced_hide_report_button_summary_off">রিপোর্ট বাটন প্রদর্শিত</string>
|
||||
<!-- 'Remix' should be translated with the same localized wording that YouTube displays. -->
|
||||
<string name="revanced_hide_remix_button_title">Remix লুকান</string>
|
||||
<string name="revanced_hide_remix_button_summary_on">রিমিক্স বাটন লুকিয়ে রয়েছে</string>
|
||||
<string name="revanced_hide_remix_button_summary_off">রিমিক্স বাটন প্রদর্শিত হয়েছে</string>
|
||||
<!-- 'Download' should be translated with the same localized wording that YouTube displays. -->
|
||||
<string name="revanced_hide_download_button_title">ডাউনলোডগুলো হাইড করাও</string>
|
||||
<string name="revanced_hide_download_button_summary_on">ডাউনলোড বোতাম লুকানো আছে</string>
|
||||
<string name="revanced_hide_download_button_summary_off">ডাউনলোড বোতাম দেখানো হয়েছে</string>
|
||||
<!-- 'Thanks' should be translated with the same localized wording that YouTube displays. -->
|
||||
@@ -418,6 +484,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_hide_clip_button_summary_on">ক্লিপ বোতাম লুকিয়ে রয়েছে</string>
|
||||
<string name="revanced_hide_clip_button_summary_off">ক্লিপ বোতাম প্রদর্শিত হয়েছে</string>
|
||||
<!-- 'Save' should be translated with the same localized wording that YouTube displays. -->
|
||||
<string name="revanced_hide_playlist_button_title">প্লেলিস্টে Save লুকান</string>
|
||||
<string name="revanced_hide_playlist_button_summary_on">প্লেলিস্টে Save বোতাম লুকানো আছে</string>
|
||||
<string name="revanced_hide_playlist_button_summary_off">প্লেলিস্টে Save বোতাম দেখানো হচ্ছে</string>
|
||||
</patch>
|
||||
<patch id="layout.buttons.navigation.navigationButtonsPatch">
|
||||
<string name="revanced_navigation_buttons_screen_title">নেভিগেশন বোতাম</string>
|
||||
@@ -440,11 +509,22 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_hide_subscriptions_button_summary_off">সদস্যতা নিন বোতাম প্রদর্শিত হয়েছে</string>
|
||||
<!-- 'Notifications' should be translated using the same localized wording YouTube displays the tab. -->
|
||||
<string name="revanced_switch_create_with_notifications_button_title">তৈরি বোতামকে বিজ্ঞপ্তি বোতাম দ্বারা সুইচ করুন</string>
|
||||
<string name="revanced_switch_create_with_notifications_button_summary_on">তৈরি করুন বোতাম বিজ্ঞপ্তিগুলো বোতাম দ্বারা স্থান পরিবর্তিত হয়েছে\n\nবিঃদ্রঃ এটি সক্রিয় করার ফলে ভিডিও বিজ্ঞাপন জোরপূর্বক বন্ধ থাকবে</string>
|
||||
<string name="revanced_switch_create_with_notifications_button_summary_on">"তৈরি বোতামটি বিজ্ঞপ্তি বোতামের সাথে পরিবর্তন করা হয়
|
||||
|
||||
মনে রাখবেন: এটি সক্রিয় করা ভিডিও বিজ্ঞাপনগুলিও জোর করে লুকিয়ে দেয়"</string>
|
||||
<string name="revanced_switch_create_with_notifications_button_summary_off">তৈরি বোতামকে বিজ্ঞপ্তি বোতাম দ্বারা সুইচ করা হয়নি</string>
|
||||
<string name="revanced_hide_navigation_button_labels_title">নেভিগেশন বোতাম লেবেল লুকান</string>
|
||||
<string name="revanced_hide_navigation_button_labels_summary_on">লেবেল লুকিয়ে রয়েছে</string>
|
||||
<string name="revanced_hide_navigation_button_labels_summary_off">লেবেল প্রদর্শিত হয়েছে</string>
|
||||
<string name="revanced_disable_translucent_status_bar_title">অর্ধস্বচ্ছ স্থিতি বার নিষ্ক্রিয় করুন</string>
|
||||
<string name="revanced_disable_translucent_status_bar_summary_on">স্ট্যাটাস বারটি অস্বচ্ছ</string>
|
||||
<string name="revanced_disable_translucent_status_bar_summary_off">স্ট্যাটাস বারটি অস্বচ্ছ বা স্বচ্ছ</string>
|
||||
<string name="revanced_disable_translucent_navigation_bar_light_title">অর্ধস্বচ্ছ হালকা বার নিষ্ক্রিয় করুন</string>
|
||||
<string name="revanced_disable_translucent_navigation_bar_light_summary_on">হালকা মোড নেভিগেশন বার অস্বচ্ছ</string>
|
||||
<string name="revanced_disable_translucent_navigation_bar_light_summary_off">লাইট মোড ন্যাভিগেশন বারটি অস্বচ্ছ বা স্বচ্ছ</string>
|
||||
<string name="revanced_disable_translucent_navigation_bar_dark_title">গাঢ় স্বচ্ছ বার অক্ষম করুন</string>
|
||||
<string name="revanced_disable_translucent_navigation_bar_dark_summary_on">গাঢ় মোড নেভিগেশন বার অস্বচ্ছ</string>
|
||||
<string name="revanced_disable_translucent_navigation_bar_dark_summary_off">গাঢ় মোড ন্যাভিগেশন বারটি অস্বচ্ছ বা স্বচ্ছ</string>
|
||||
</patch>
|
||||
<patch id="layout.hide.player.flyoutmenupanel.hidePlayerFlyoutMenuPatch">
|
||||
<string name="revanced_hide_player_flyout_title">ফ্লাইআউট মেনু</string>
|
||||
@@ -458,6 +538,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_hide_player_flyout_additional_settings_summary_on">আরও সেটিংস দেখুন মেনু লুকিয়ে রয়েছে</string>
|
||||
<string name="revanced_hide_player_flyout_additional_settings_summary_off">আরও সেটিংস দেখুন মেনু প্রদর্শিত হয়েছে</string>
|
||||
<!-- 'Sleep timer' should be translated using the same localized wording YouTube displays for the menu item. -->
|
||||
<string name="revanced_hide_player_flyout_sleep_timer_title">Sleep timer লুকান</string>
|
||||
<string name="revanced_hide_player_flyout_sleep_timer_summary_on">Sleep timer মেনু লুকানো আছে</string>
|
||||
<string name="revanced_hide_player_flyout_sleep_timer_summary_off">Sleep timer মেনু দেখানো হচ্ছে</string>
|
||||
<!-- 'Loop video' should be translated using the same localized wording YouTube displays for the menu item. -->
|
||||
<string name="revanced_hide_player_flyout_loop_video_title">ভিডিও লুপ করুন লুকান</string>
|
||||
<string name="revanced_hide_player_flyout_loop_video_summary_on">ভিডিও লুপ করুন মেনু লুকিয়ে রয়েছে</string>
|
||||
@@ -466,6 +549,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_hide_player_flyout_ambient_mode_title">অ্যাম্বিয়েন্ট মোড লুকান</string>
|
||||
<string name="revanced_hide_player_flyout_ambient_mode_summary_on">অ্যাম্বিয়েন্ট মোড মেনু লুকিয়ে রয়েছে</string>
|
||||
<string name="revanced_hide_player_flyout_ambient_mode_summary_off">অ্যাম্বিয়েন্ট মোড মেনু প্রদর্শিত হয়েছে</string>
|
||||
<string name="revanced_hide_player_flyout_stable_volume_title">Stable volume লুকান</string>
|
||||
<string name="revanced_hide_player_flyout_stable_volume_summary_off">Stable volume মেনু দেখানো হচ্ছে</string>
|
||||
<string name="revanced_hide_player_flyout_stable_volume_summary_on">Stable volume মেনু লুকানো আছে</string>
|
||||
<!-- 'Help & feedback' should be translated using the same localized wording YouTube displays for the menu item. -->
|
||||
<string name="revanced_hide_player_flyout_help_title">সাহায্য এবং ফিডব্যাক মেনু লুকান</string>
|
||||
<string name="revanced_hide_player_flyout_help_summary_on">সহায়তা ও প্রতিক্রিয়া মেনু লুকিয়ে রয়েছে</string>
|
||||
@@ -492,6 +578,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_hide_player_flyout_watch_in_vr_summary_on">ভিআর মেনুতে দেখুন লুকানো আছে</string>
|
||||
<string name="revanced_hide_player_flyout_watch_in_vr_summary_off">ভিআর মেনুতে দেখুন দেখানো হয়েছে</string>
|
||||
<string name="revanced_hide_player_flyout_video_quality_footer_title">ভিডিও গুণমান মেনুর ফুটার লুকান</string>
|
||||
<string name="revanced_hide_player_flyout_video_quality_footer_summary_on">ভিডিও গুণমান মেনু ফুটার লুকানো আছে</string>
|
||||
<string name="revanced_hide_player_flyout_video_quality_footer_summary_off">ভিডিও গুণমান মেনু ফুটার দেখানো হচ্ছে</string>
|
||||
</patch>
|
||||
<patch id="layout.buttons.overlay.hidePlayerOverlayButtonsPatch">
|
||||
<string name="revanced_hide_player_previous_next_buttons_title">পূর্ববর্তী লুকান & পরবর্তী ভিডিও বোতাম</string>
|
||||
@@ -501,6 +589,12 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_hide_cast_button_summary_on">কাস্ট বাটন লুকিয়ে রয়েছে</string>
|
||||
<string name="revanced_hide_cast_button_summary_off">কাস্ট বাটন প্রদর্শিত হয়েছে</string>
|
||||
<!-- This button does not display any text, but 'captions' should be translated using the same wording used as the translation of 'revanced_hide_player_flyout_captions_title' -->
|
||||
<string name="revanced_hide_captions_button_title">ক্যাপশন বোতাম লুকান</string>
|
||||
<string name="revanced_hide_captions_button_summary_on">ক্যাপশন বোতাম লুকানো আছে</string>
|
||||
<string name="revanced_hide_captions_button_summary_off">ক্যাপশন বোতাম দেখানো হচ্ছে</string>
|
||||
<string name="revanced_hide_autoplay_button_title">autoplay বোতাম লুকান</string>
|
||||
<string name="revanced_hide_autoplay_button_summary_on">autoplay বোতাম লুকানো আছে</string>
|
||||
<string name="revanced_hide_autoplay_button_summary_off">autoplay বোতাম দেখানো হচ্ছে</string>
|
||||
</patch>
|
||||
<patch id="layout.hide.endscreencards.hideEndscreenCardsResourcePatch">
|
||||
<string name="revanced_hide_endscreen_cards_title">শেষ স্ক্রীন কার্ড লুকান</string>
|
||||
@@ -531,6 +625,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_hide_seekbar_thumbnail_summary_off">থাম্বনেইলে সিকবার প্রদর্শিত হয়েছে</string>
|
||||
</patch>
|
||||
<patch id="layout.hide.shorts.hideShortsComponentsResourcePatch">
|
||||
<string name="revanced_shorts_player_screen_title">Shorts প্লেয়ার</string>
|
||||
<string name="revanced_shorts_player_screen_summary">Shorts প্লেয়ারে উপাদান লুকানো বা দেখানো</string>
|
||||
<!-- 'home' should be translated using the same localized wording YouTube displays for the home tab. -->
|
||||
<string name="revanced_hide_shorts_home_title">প্রধান ফিডে Shorts লুকান</string>
|
||||
<string name="revanced_hide_shorts_home_summary_on">প্রধান ফিডে Shorts লুকিয়ে রয়েছে</string>
|
||||
@@ -566,6 +662,20 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<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_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_off">Save music বোতাম দেখানো হচ্ছে</string>
|
||||
<string name="revanced_hide_shorts_use_template_button_title">Use template বোতাম লুকান</string>
|
||||
<string name="revanced_hide_shorts_use_template_button_summary_on">Use template বোতাম লুকানো আছে</string>
|
||||
<string name="revanced_hide_shorts_use_template_button_summary_off">Use template বোতাম দেখানো হচ্ছে</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_off">আগামী বোতাম দেখানো হচ্ছে</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_off">সবুজ পর্দা বোতাম দেখানো হচ্ছে</string>
|
||||
<string name="revanced_hide_shorts_hashtag_button_title">হ্যাশট্যাগ বোতাম লুকান</string>
|
||||
<string name="revanced_hide_shorts_hashtag_button_summary_on">হ্যাশট্যাগ বোতাম লুকানো আছে</string>
|
||||
<string name="revanced_hide_shorts_hashtag_button_summary_off">হ্যাশট্যাগ বোতাম দেখানো হচ্ছে</string>
|
||||
<string name="revanced_hide_shorts_search_suggestions_title">অনুসন্ধান পরামর্শগুলি লুকান</string>
|
||||
<string name="revanced_hide_shorts_search_suggestions_summary_on">অনুসন্ধান পরামর্শগুলি লুকিয়ে রয়েছে</string>
|
||||
<string name="revanced_hide_shorts_search_suggestions_summary_off">অনুসন্ধান পরামর্শগুলি প্রদর্শিত হয়েছে</string>
|
||||
@@ -630,6 +740,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_hide_player_popup_panels_summary_off">প্লেয়ার পপআপ প্যানেলগুলো প্রদর্শিত হয়েছে</string>
|
||||
</patch>
|
||||
<patch id="layout.player.fullscreen.openVideosFullscreen">
|
||||
<string name="revanced_open_videos_fullscreen_portrait_title">পূর্ণ পর্দায় ভিডিও খুলুন</string>
|
||||
<string name="revanced_open_videos_fullscreen_portrait_summary_on">ভিডিও পূর্ণ পর্দায় খুলবে</string>
|
||||
<string name="revanced_open_videos_fullscreen_portrait_summary_off">ভিডিও পূর্ণ পর্দায় খুলবে না</string>
|
||||
</patch>
|
||||
<patch id="layout.player.overlay.customPlayerOverlayOpacityResourcePatch">
|
||||
<string name="revanced_player_overlay_opacity_title">প্লেয়ার ওভারলে অস্বচ্ছতা</string>
|
||||
@@ -648,7 +761,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_ryd_enable_summary_off">অপছন্দগুলো প্রদর্শিত হয়নি</string>
|
||||
<string name="revanced_ryd_shorts_title">Shorts এ অপছন্দ দেখান</string>
|
||||
<string name="revanced_ryd_shorts_summary_on">Shorts এ অপছন্দ পদর্শিত হয়েছে</string>
|
||||
<string name="revanced_ryd_shorts_summary_on_disclaimer">Shorts এ অপছন্দ পদর্শিত হয়েছে\n\nসীমাবদ্ধতা: ছদ্মবেশী মোডে অপছন্দ নাও দেখাতে পারে</string>
|
||||
<string name="revanced_ryd_shorts_summary_on_disclaimer">"Shorts-এ ডিসলাইক দেখানো হচ্ছে
|
||||
|
||||
সীমাবদ্ধতা: গোপন মোডে ডিসলাইক প্রদর্শিত নাও হতে পারে"</string>
|
||||
<string name="revanced_ryd_shorts_summary_off">Shorts এ অপছন্দ লুকিয়ে রয়েছে</string>
|
||||
<string name="revanced_ryd_dislike_percentage_title">অপছন্দগুলো শতাংশ অনুযায়ী</string>
|
||||
<string name="revanced_ryd_dislike_percentage_summary_on">অপছন্দগুলো শতাংশ অনুযায়ী প্রদর্শিত হয়েছে</string>
|
||||
@@ -686,6 +801,16 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_wide_searchbar_summary_off">প্রশস্ত অনুসন্ধান বার নিষ্ক্রিয় হয়েছে</string>
|
||||
</patch>
|
||||
<patch id="layout.seekbar.seekbarThumbnailsPatch">
|
||||
<string name="revanced_seekbar_thumbnails_high_quality_title">উচ্চমানের থাম্বনেইল সক্ষম করুন</string>
|
||||
<string name="revanced_seekbar_thumbnails_high_quality_summary_on">সিকবার থাম্বনেইল উচ্চমানের</string>
|
||||
<string name="revanced_seekbar_thumbnails_high_quality_summary_off">সিকবার থাম্বনেইল মাঝারিমানের</string>
|
||||
<string name="revanced_seekbar_thumbnails_high_quality_legacy_summary_on">পূর্ণ পর্দায় সিকবার থাম্বনেইল উচ্চমানের</string>
|
||||
<string name="revanced_seekbar_thumbnails_high_quality_legacy_summary_off">পূর্ণ পর্দায় সিকবার থাম্বনেইল মাঝারিমানের</string>
|
||||
<string name="revanced_seekbar_thumbnails_high_quality_dialog_message">"এটি সেই লাইভস্ট্রিমগুলিতে থাম্বনেইল পুনরুদ্ধার করবে যেখানে সিকবার থাম্বনেইল নেই।
|
||||
|
||||
সিকবার থাম্বনেইল বর্তমান ভিডিওর একই মান ব্যবহার করবে।
|
||||
|
||||
এই বৈশিষ্ট্যটি 720p অথবা তার চেয়ে কম ভিডিও মান এবং খুব দ্রুত ইন্টারনেট সংযোগ ব্যবহার করার সময় সবচেয়ে ভালো কাজ করে।"</string>
|
||||
<string name="revanced_restore_old_seekbar_thumbnails_title">পুরোনো সিকবার থাম্বনেইল পুনরুদ্ধার করুন</string>
|
||||
<string name="revanced_restore_old_seekbar_thumbnails_summary_on">সিকবার এর উপরে সিকবার থাম্বনেইল দেখানো হবে</string>
|
||||
<string name="revanced_restore_old_seekbar_thumbnails_summary_off">পূর্ণস্ক্রীণে সিকবার থাম্বনেইল দেখানো হবে</string>
|
||||
@@ -732,6 +857,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_sb_general_skipcount_sum_off">স্কিপ কাউন্ট ট্র্যাকিং সক্রিয় হয়নি</string>
|
||||
<string name="revanced_sb_general_min_duration">ন্যূনতম সেগমেন্ট সময়কাল</string>
|
||||
<string name="revanced_sb_general_min_duration_sum">এই মান (সেকেন্ড) হতে কম দৈর্ঘ্যের সেগমেন্ট প্রদর্শিত বা স্কিপ করা হবে না</string>
|
||||
<string name="revanced_sb_general_min_duration_invalid">অবৈধ সময়কাল</string>
|
||||
<string name="revanced_sb_general_uuid">আপনার ব্যক্তিগত ব্যবহারকারী আইডি</string>
|
||||
<string name="revanced_sb_general_uuid_sum">এটি গোপন রাখা উচিত। এটি একটি পাসওয়ার্ডের মতো এবং কারও সাথে শেয়ার করা উচিত নয়। যদি কারও কাছে এটি থাকে, তবে তারা আপনার ছদ্মবেশ ধারণ করতে পারে</string>
|
||||
<string name="revanced_sb_general_uuid_invalid">ব্যক্তিগত ব্যবহাকারী আইডি অবশ্যই ৩০ অক্ষর লম্বা হতে হবে</string>
|
||||
@@ -747,7 +873,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_sb_settings_import_successful">সেটিং সফলভাবে আমদানি করা হয়েছে</string>
|
||||
<string name="revanced_sb_settings_import_failed">%s আমদানি করতে ব্যর্থ হয়েছে</string>
|
||||
<string name="revanced_sb_settings_export_failed">%s রপ্তানি করতে ব্যর্থ হয়েছে</string>
|
||||
<string name="revanced_sb_settings_revanced_export_user_id_warning">আপনার সেটিংএ একটি প্রাইভেট SponsorBlock ব্যবহারকারী আইডি রয়েছে।\n\nআপনার ব্যবহারকারী আইডি অনেকটা পাসওয়ার্ডের মতো তাই এটি কখনোই শেয়ার করা উচিত নয়।\n</string>
|
||||
<string name="revanced_sb_settings_revanced_export_user_id_warning">"আপনার সেটিংসে একটি ব্যক্তিগত SponsorBlock ব্যবহারকারী ID রয়েছে।
|
||||
|
||||
আপনার ব্যবহারকারী ID একটি পাসওয়ার্ডের মতো এবং এটি কখনও ভাগ করা উচিত নয়।"</string>
|
||||
<string name="revanced_sb_settings_revanced_export_user_id_warning_dismiss">আবার দেখাবেন না</string>
|
||||
<string name="revanced_sb_diff_segments">সেগমেন্ট আচরণ পরিবর্তন করুন</string>
|
||||
<string name="revanced_sb_segments_sponsor">স্পন্সর</string>
|
||||
@@ -807,9 +935,10 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_sb_submit_failed_invalid">%s সেগমেন্ট জমা দিতে সক্ষম হয়নি</string>
|
||||
<string name="revanced_sb_submit_failed_timeout">SponsorBlock সাময়িকভাবে বন্ধ আছে</string>
|
||||
<string name="revanced_sb_submit_failed_unknown_error">সেগমেন্ট জমা দিতে সক্ষম হয়নি (অবস্থা: %1$d %2$s)</string>
|
||||
<string name="revanced_sb_submit_failed_rate_limit">সেগমেন্ট জমা করা সম্ভব হয়নি।\nরেট লিমিট (একই ব্যবহারকারী বা IP থেকে অনেক বেশি)</string>
|
||||
<string name="revanced_sb_submit_failed_rate_limit">সেগমেন্ট জমা দিতে পারছি না। হার সীমাবদ্ধ (একই ব্যবহারকারী বা IP থেকে খুব বেশি)।</string>
|
||||
<string name="revanced_sb_submit_failed_forbidden">সেগমেন্ট জমা করা যাবে না: %s</string>
|
||||
<string name="revanced_sb_submit_failed_duplicate">সেগমেন্ট জমা করা সম্ভব নয়।\nইতোমধ্যে রয়েছে</string>
|
||||
<string name="revanced_sb_submit_failed_duplicate">"সেগমেন্ট জমা দিতে পারছি না।
|
||||
পূর্বেই বিদ্যমান"</string>
|
||||
<string name="revanced_sb_submit_succeeded">সেগমেন্ট সফলভাবে জমা হয়েছে</string>
|
||||
<!-- Toast shown if network connection times out. Translations of this should not be longer than the original English or the text can be clipped and not entirely shown. -->
|
||||
<string name="revanced_sb_sponsorblock_connection_failure_timeout">SponsorBlock সাময়িকভাবে উপলভ্য নয় (API সময় শেষ হয়েছে)</string>
|
||||
@@ -825,13 +954,23 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_sb_new_segment_choose_category">সেগমেন্টের বিভাগ নির্বাচন করুন</string>
|
||||
<string name="revanced_sb_new_segment_disabled_category">সেটিং থেকে বিভাগ নিস্ক্রিয় করা হয়েছে। জমা দিতে বিভাগ সক্রিয় করুন।</string>
|
||||
<string name="revanced_sb_new_segment_title">নতুন স্পন্সরব্লক সেগমেন্ট</string>
|
||||
<string name="revanced_sb_new_segment_mark_time_as_question">%s কে নতুন সেগমেন্টের শুরু অথবা শেষ হিসেবে সেট করুন?</string>
|
||||
<string name="revanced_sb_new_segment_mark_start">শুরু</string>
|
||||
<string name="revanced_sb_new_segment_mark_end">শেষ</string>
|
||||
<string name="revanced_sb_new_segment_now">এখন</string>
|
||||
<string name="revanced_sb_new_segment_time_start">সেগমেন্টটি শুরু হওয়ার সময়</string>
|
||||
<string name="revanced_sb_new_segment_time_end">সেগমেন্টটি শেষ হওয়ার সময়</string>
|
||||
<string name="revanced_sb_new_segment_confirm_title">সময়কাল কি সঠিক?</string>
|
||||
<string name="revanced_sb_new_segment_confirm_content">সেগমেন্ট সময়কাল\n\n%1$s\nথেকে\n%2$s\n\n(%3$s)\n\nজমা করার জন্য প্রস্তুত?</string>
|
||||
<string name="revanced_sb_new_segment_confirm_content">"সেগমেন্টটি
|
||||
|
||||
%1$s
|
||||
থেকে
|
||||
|
||||
%2$s
|
||||
এবং
|
||||
|
||||
(%3$s)
|
||||
জমা দিতে প্রস্তুত।"</string>
|
||||
<string name="revanced_sb_new_segment_start_is_before_end">শুরু অবশ্যই শেষের আগে হতে হবে</string>
|
||||
<string name="revanced_sb_new_segment_mark_locations_first">আগে সময় বারে দুটি অবস্থান চিহ্নিত করুন</string>
|
||||
<string name="revanced_sb_new_segment_preview_segment_first">সেগমেন্টটি পূর্বরূপ দেখুন এবং নিশ্চিত হোন যে এটি মসৃণভাবে এড়িয়ে যাচ্ছে</string>
|
||||
@@ -849,6 +988,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_sb_stats_username_changed">ব্যবহারকারীর নাম সফলভাবে পরিবর্তন হয়েছে</string>
|
||||
<string name="revanced_sb_stats_reputation">আপনার রিপুটেশন হল <b>%.2f</b></string>
|
||||
<string name="revanced_sb_stats_submissions">আপনি <b>%s</b> সেগমেন্ট তৈরি করেছেন</string>
|
||||
<string name="revanced_sb_stats_submissions_sum">আপনার সেগমেন্ট দেখতে এখানে ট্যাপ করুন</string>
|
||||
<string name="revanced_sb_stats_saved_zero">SponsorBlock লিডারবোর্ড</string>
|
||||
<string name="revanced_sb_stats_saved">আপনি মানুষকে <b>%s</b> সেগমেন্ট থেকে বাঁচিয়েছেন</string>
|
||||
<string name="revanced_sb_stats_saved_sum_zero">বৈশ্বিক পরিসংখ্যান এবং শীর্ষ অবদানকারীদের দেখতে এখানে ট্যাপ করুন</string>
|
||||
@@ -872,10 +1012,15 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_spoof_app_version_title">অ্যাপ সংস্করণ স্পুফ করুন</string>
|
||||
<string name="revanced_spoof_app_version_summary_on">সংস্করণ স্পুফ করা হয়েছে</string>
|
||||
<string name="revanced_spoof_app_version_summary_off">সংস্করণ স্পুফ করা হয়নি</string>
|
||||
<string name="revanced_spoof_app_version_user_dialog_message">অ্যাপ সংস্করণ পুরোনো একটি সংস্করণে স্পুফ করা হবে।\n\nএটি অ্যাপের চেহারা এবং ফিচার পরিবর্তন করে, কিন্তু এতে অনাকাঙ্খিত পার্শ্বপ্রতিক্রিয়া দেখা দিতে পারে।\n\nপরবর্তীতে বন্ধ করা হলে, UI বাগ থেকে বাঁচতি অ্যাপের ডাটা ক্লিয়ার করার প্রস্তাবনা রইলো।</string>
|
||||
<string name="revanced_spoof_app_version_user_dialog_message">"অ্যাপ্লিকেশন সংস্করণটি YouTube-এর পুরনো সংস্করণে ভুয়া হবে।
|
||||
|
||||
এটি অ্যাপ্লিকেশনটির চেহারা এবং বৈশিষ্ট্য পরিবর্তন করবে, তবে অজানা পার্শ্ব প্রতিক্রিয়া হতে পারে।
|
||||
|
||||
পরে যদি বন্ধ করা হয়, UI বাগ এড়াতে অ্যাপ্লিকেশন ডেটা পরিষ্কার করার পরামর্শ দেওয়া হয়।"</string>
|
||||
<!-- It is ideal, but not required, if the text here appears is alphabetically after the text used for 'revanced_spoof_app_version_title'.
|
||||
This is because the 'General layout' menu uses alphabetic sorting, and it functionally works better if the spoof target selector appears below the 'Spoof app version' UI switch -->
|
||||
<string name="revanced_spoof_app_version_target_title">স্পুফ অ্যাপ সংস্করণ লক্ষ্য</string>
|
||||
<string name="revanced_spoof_app_version_target_entry_1">19.35.36 - পুরনো Shorts প্লেয়ার আইকন পুনরুদ্ধার করুন</string>
|
||||
<!-- 'RYD' is 'Return YouTube Dislike' -->
|
||||
<string name="revanced_spoof_app_version_target_legacy_entry_1">18.33.40 - ছদ্মবেশি মোডে RYD পুনরুদ্ধার করে</string>
|
||||
<string name="revanced_spoof_app_version_target_legacy_entry_2">18.20.39 - প্রশ্বস্ত ভিডিও স্পিড এবং গুণমান মেনু পুনরুদ্ধার করে</string>
|
||||
@@ -885,19 +1030,39 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<patch id="layout.startpage.changeStartPagePatch">
|
||||
<string name="revanced_change_start_page_title">শুরুর পৃষ্ঠা সেট করুন</string>
|
||||
<string name="revanced_change_start_page_entry_default">পূর্ব-নির্ধারিত</string>
|
||||
<string name="revanced_change_start_page_entry_browse">চ্যানেল ব্রাউজ করুন</string>
|
||||
<string name="revanced_change_start_page_entry_explore">ঘুরে দেখুন</string>
|
||||
<string name="revanced_change_start_page_entry_gaming">গেমিং</string>
|
||||
<string name="revanced_change_start_page_entry_history">ইতিহাস</string>
|
||||
<string name="revanced_change_start_page_entry_library">লাইব্রেরি</string>
|
||||
<string name="revanced_change_start_page_entry_liked_videos">পছন্দ করা ভিডিওগুলি</string>
|
||||
<string name="revanced_change_start_page_entry_live">লাইভ</string>
|
||||
<string name="revanced_change_start_page_entry_movies">মুভি</string>
|
||||
<string name="revanced_change_start_page_entry_music">সঙ্গীত</string>
|
||||
<string name="revanced_change_start_page_entry_search">অনুসন্ধান</string>
|
||||
<string name="revanced_change_start_page_entry_sports">খেলাধুলা</string>
|
||||
<string name="revanced_change_start_page_entry_subscriptions">সদস্যতা</string>
|
||||
<string name="revanced_change_start_page_entry_trending">এখন জনপ্রিয়</string>
|
||||
<string name="revanced_change_start_page_entry_watch_later">পরে দেখুন</string>
|
||||
</patch>
|
||||
<patch id="layout.startupshortsreset.disableResumingShortsOnStartupPatch">
|
||||
<string name="revanced_disable_resuming_shorts_player_title">Shorts প্লেয়ার আবার চালানো নিষ্ক্রিয় করুন</string>
|
||||
<string name="revanced_disable_resuming_shorts_player_summary_on">অ্যাপের শুরুতে Shorts প্লেয়ার আবার চলবে না</string>
|
||||
<string name="revanced_disable_resuming_shorts_player_summary_off">অ্যাপের শুরুতে Shorts প্লেয়ার আবার চলবে</string>
|
||||
</patch>
|
||||
<patch id="layout.shortsplayer.shortsPlayerTypePatch">
|
||||
<string name="revanced_shorts_player_type_title">Shorts সঙ্গে খুলুন</string>
|
||||
<string name="revanced_shorts_player_type_shorts">Shorts প্লেয়ার</string>
|
||||
<string name="revanced_shorts_player_type_regular_player">নিয়মিত প্লেয়ার</string>
|
||||
<string name="revanced_shorts_player_type_regular_player_fullscreen">নিয়মিত প্লেয়ার পূর্ণ পর্দা</string>
|
||||
</patch>
|
||||
<patch id="layout.shortsautoplay.shortsAutoplayPatch">
|
||||
<string name="revanced_shorts_autoplay_title">অটোপ্লে Shorts</string>
|
||||
<string name="revanced_shorts_autoplay_summary_on">Shorts অটোপ্লে হবে</string>
|
||||
<string name="revanced_shorts_autoplay_summary_off">Shorts পুনরাবৃত্তি হবে</string>
|
||||
<string name="revanced_shorts_autoplay_background_title">পটভূমিতে Shorts অটোপ্লে</string>
|
||||
<string name="revanced_shorts_autoplay_background_summary_on">পটভূমিতে Shorts অটোপ্লে হবে</string>
|
||||
<string name="revanced_shorts_autoplay_background_summary_off">পটভূমিতে Shorts পুনরাবৃত্তি হবে</string>
|
||||
</patch>
|
||||
<patch id="layout.tablet.enableTabletLayoutPatch">
|
||||
<string name="revanced_tablet_layout_title">ট্যাবলেট লেআউট সক্রিয় করুন</string>
|
||||
@@ -910,18 +1075,48 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_miniplayer_screen_summary">অ্যাপের মধ্যকার মিনিমাইজড প্লেয়ার এর ধরণ পরিবর্তন করুন</string>
|
||||
<string name="revanced_miniplayer_type_title">মিনিপ্লেয়ার ধরণ</string>
|
||||
<string name="revanced_miniplayer_type_entry_0">নিষ্ক্রিয় হয়েছে</string>
|
||||
<string name="revanced_miniplayer_type_entry_1">আসল</string>
|
||||
<string name="revanced_miniplayer_type_entry_1">পূর্ব-নির্ধারিত</string>
|
||||
<string name="revanced_miniplayer_type_entry_2">ন্যূনতম</string>
|
||||
<string name="revanced_miniplayer_type_entry_3">ট্যাবলেট</string>
|
||||
<string name="revanced_miniplayer_type_entry_4">মর্ডান ১</string>
|
||||
<string name="revanced_miniplayer_type_entry_5">মর্ডান ২</string>
|
||||
<string name="revanced_miniplayer_type_entry_6">মর্ডান ৩</string>
|
||||
<string name="revanced_miniplayer_rounded_corners_title">গোলাকার কোণ সক্ষম করুন</string>
|
||||
<string name="revanced_miniplayer_rounded_corners_summary_on">কোণগুলি গোলাকার</string>
|
||||
<string name="revanced_miniplayer_rounded_corners_summary_off">কোণগুলি বর্গাকার</string>
|
||||
<string name="revanced_miniplayer_double_tap_action_title">ডাবল-ট্যাপ এবং পিঞ্চ টু রিসাইজ সক্ষম করুন</string>
|
||||
<string name="revanced_miniplayer_double_tap_action_summary_on">"ডাবল-ট্যাপ করার ক্রিয়া এবং আকার পরিবর্তন করার জন্য চিমটি দেওয়া সক্রিয়
|
||||
|
||||
• miniplayer আকার বৃদ্ধি করতে ডাবল ট্যাপ করুন
|
||||
• মূল আকার পুনরুদ্ধার করতে আবার ডাবল ট্যাপ করুন"</string>
|
||||
<string name="revanced_miniplayer_double_tap_action_summary_off">ডাবল-ট্যাপ অ্যাকশন এবং পিঞ্চ টু রিসাইজ অক্ষম</string>
|
||||
<string name="revanced_miniplayer_drag_and_drop_title">ড্র্যাগ এবং ড্রপ সক্ষম করুন</string>
|
||||
<string name="revanced_miniplayer_drag_and_drop_summary_on">"ড্র্যাগ এবং ড্রপ সক্রিয়
|
||||
|
||||
Miniplayer স্ক্রিনের যেকোনো কোণে টানা যাবে"</string>
|
||||
<string name="revanced_miniplayer_drag_and_drop_summary_off">ড্র্যাগ এবং ড্রপ অক্ষম</string>
|
||||
<string name="revanced_miniplayer_horizontal_drag_title">অনুভূমিক ড্র্যাগ অঙ্গভঙ্গি সক্ষম করুন</string>
|
||||
<string name="revanced_miniplayer_horizontal_drag_summary_on">"ক্ষैতিকভাবে টানার ভঙ্গি সক্রিয়
|
||||
|
||||
Miniplayer স্ক্রিন থেকে বামে বা ডানে টানা যাবে"</string>
|
||||
<string name="revanced_miniplayer_horizontal_drag_summary_off">অনুভূমিক ড্র্যাগ অঙ্গভঙ্গি অক্ষম</string>
|
||||
<string name="revanced_miniplayer_hide_expand_close_title">বন্ধ বোতাম লুকান</string>
|
||||
<string name="revanced_miniplayer_hide_expand_close_summary_on">বন্ধ বোতাম লুকানো আছে</string>
|
||||
<string name="revanced_miniplayer_hide_expand_close_summary_off">বন্ধ বোতাম দেখানো হচ্ছে</string>
|
||||
<string name="revanced_miniplayer_hide_expand_close_legacy_title">বিস্তৃত ও বন্ধ করার বোতাম লুকান</string>
|
||||
<string name="revanced_miniplayer_hide_expand_close_legacy_summary_on">"বোতামগুলি লুকানো হয়
|
||||
|
||||
বিস্তৃত করতে বা বন্ধ করতে সোয়াইপ করুন"</string>
|
||||
<string name="revanced_miniplayer_hide_expand_close_legacy_summary_off">বিস্তৃত এবং বন্ধ বোতাম দেখানো হচ্ছে</string>
|
||||
<string name="revanced_miniplayer_hide_subtext_title">উপপাঠ লুকান</string>
|
||||
<string name="revanced_miniplayer_hide_subtext_summary_on">উপপাঠ লুকিয়ে রয়েছে</string>
|
||||
<string name="revanced_miniplayer_hide_subtext_summary_off">উপপাঠ প্রদর্শিত হয়েছে</string>
|
||||
<string name="revanced_miniplayer_hide_rewind_forward_title">সামনে বা পেছনে এড়িয়ে যাওয়ার বোতাম লুকান</string>
|
||||
<string name="revanced_miniplayer_hide_rewind_forward_summary_on">সামনে বা পেছনে এড়িয়ে যাওয়ার বোতাম লুকিয়ে রয়েছে</string>
|
||||
<string name="revanced_miniplayer_hide_rewind_forward_summary_off">সামনে বা পেছনে এড়িয়ে যাওয়ার বোতাম প্রদর্শিত হয়েছে</string>
|
||||
<string name="revanced_miniplayer_width_dip_title">প্রাথমিক আকার</string>
|
||||
<string name="revanced_miniplayer_width_dip_summary">প্রাথমিক পর্দার আকার, পিক্সেলে</string>
|
||||
<string name="revanced_miniplayer_width_dip_invalid_toast">পিক্সেল আকার %1$s এবং %2$s এর মধ্যে হতে হবে</string>
|
||||
<string name="revanced_miniplayer_opacity_title">ওভারলে অস্বচ্ছতা</string>
|
||||
<string name="revanced_miniplayer_opacity_summary">অসচ্ছতা মান ০-১০০ এর মধ্যে, যেখানে ০ হল সম্পূর্ণ স্বচ্ছ</string>
|
||||
<string name="revanced_miniplayer_opacity_invalid_toast">মিনিপ্লেয়ার ওভারলে অস্বচ্ছতা অবশ্যই ০-১০০ এর মধ্যে হতে হবে</string>
|
||||
@@ -937,8 +1132,14 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_seekbar_custom_color_summary_off">সিকবারে মূল রং প্রদর্শিত হয়েছে</string>
|
||||
<string name="revanced_seekbar_custom_color_value_title">নিজস্ব সিকবার রং</string>
|
||||
<string name="revanced_seekbar_custom_color_value_summary">সিকবারের রং</string>
|
||||
<string name="revanced_seekbar_custom_color_invalid">অবৈধ সিকবার রঙ মান</string>
|
||||
</patch>
|
||||
<patch id="layout.thumbnails.bypassImageRegionRestrictionsPatch">
|
||||
<string name="revanced_bypass_image_region_restrictions_title">ছবি অঞ্চল সীমাবদ্ধতা বাইপাস করুন</string>
|
||||
<string name="revanced_bypass_image_region_restrictions_summary_on">yt4.ggpht.com ছবি হোস্ট ব্যবহার করে</string>
|
||||
<string name="revanced_bypass_image_region_restrictions_summary_off">"মূল ছবি হোস্ট ব্যবহার করে
|
||||
|
||||
এটি সক্ষম করলে কিছু অঞ্চলে ব্লক করা থাকা অনুপস্থিত ছবিগুলি সংশোধন করতে পারে"</string>
|
||||
</patch>
|
||||
<patch id="layout.thumbnails.alternativeThumbnailsPatch">
|
||||
<!-- 'Home' should be translated using the same localized wording YouTube displays for the home tab. -->
|
||||
@@ -953,7 +1154,12 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_alt_thumbnail_options_entry_2">DeArrow এবং মূল থাম্বনেইল</string>
|
||||
<string name="revanced_alt_thumbnail_options_entry_3">DeArrow এবং স্থির ছবি</string>
|
||||
<string name="revanced_alt_thumbnail_options_entry_4">স্থির ছবি</string>
|
||||
<string name="revanced_alt_thumbnail_dearrow_about_summary">DeArrow YouTube ভিডিওগুলির জন্য ক্রাউড-সোর্সড থাম্বনেল সরবরাহ করে। এই থাম্বনেলগুলি প্রায়ই YouTube দ্বারা প্রদত্ত থাম্বনেলগুলির চেয়ে বেশি প্রাসঙ্গিক\n\nঅন করলে, ভিডিও URLগুলি API সার্ভারে পাঠানো হবে এবং অন্য কোনও ডেটা পাঠানো হবে না৷ যদি একটি ভিডিওতে DeArrow থাম্বনেইল না থাকে, তাহলে আসল বা স্থির চিত্র দেখানো হয়\n\nDeArrow সম্পর্কে আরও জানতে এখানে চাপুন</string>
|
||||
<string name="revanced_alt_thumbnail_dearrow_about_title">DeArrow</string>
|
||||
<string name="revanced_alt_thumbnail_dearrow_about_summary">"DeArrow YouTube ভিডিওগুলির জন্য জনগণের উৎস থেকে তৈরি থাম্বনেইল সরবরাহ করে। এই থাম্বনেইলগুলি প্রায়শই YouTube দ্বারা সরবরাহ করা থাম্বনেইলগুলির চেয়ে আরও প্রাসঙ্গিক।
|
||||
|
||||
যদি সক্রিয় করা হয়, তাহলে ভিডিও URLগুলি API সার্ভারে পাঠানো হবে এবং অন্য কোনও ডেটা পাঠানো হবে না। যদি কোনও ভিডিওতে DeArrow থাম্বনেইল না থাকে, তাহলে মূল বা স্থির ক্যাপচার দেখানো হবে
|
||||
|
||||
DeArrow সম্পর্কে আরও জানতে এখানে ট্যাপ করুন"</string>
|
||||
<string name="revanced_alt_thumbnail_dearrow_connection_toast_title">API উপলভ্য না থাকলে একটি টোস্ট দেখান</string>
|
||||
<string name="revanced_alt_thumbnail_dearrow_connection_toast_summary_on">যদি DeArrow অনুপস্থিত থাকে তবে টোস্ট বার্তা প্রদর্শিত হয়</string>
|
||||
<string name="revanced_alt_thumbnail_dearrow_connection_toast_summary_off">যদি DeArrow অনুপস্থিত থাকে তবে টোস্ট বার্তা প্রদর্শিত হয় না</string>
|
||||
@@ -982,6 +1188,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
</patch>
|
||||
<patch id="misc.dns.checkWatchHistoryDomainNameResolutionPatch">
|
||||
<string name="revanced_check_watch_history_domain_name_dialog_title">সতর্কীকরণ</string>
|
||||
<string name="revanced_check_watch_history_domain_name_dialog_message">আপনার দেখার ইতিহাস সংরক্ষিত হচ্ছে না।<br><br>এটি সম্ভবত DNS অ্যাড ব্লকার অথবা নেটওয়ার্ক প্রক্সির কারণে।<br><br>এটি ঠিক করার জন্য, <b>s.youtube.com</b> সাদা তালিকাভুক্ত করুন অথবা সকল DNS ব্লকার এবং প্রক্সি বন্ধ করুন।</string>
|
||||
<string name="revanced_check_watch_history_domain_name_dialog_ignore">আবার দেখাবেন না</string>
|
||||
</patch>
|
||||
<patch id="misc.autorepeat.autoRepeatPatch">
|
||||
@@ -991,8 +1198,12 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
</patch>
|
||||
<patch id="misc.dimensions.spoof.spoofDeviceDimensionsPatch">
|
||||
<string name="revanced_spoof_device_dimensions_title">ডিভাইস ডাইমেনশন স্পুফ করুন</string>
|
||||
<string name="revanced_spoof_device_dimensions_summary_on">ডিভাইস ডাইমেনশন স্পুফ হয়েছে\n\nভিডিওর উন্নত গুণমান আনলক হয়েছে কিন্তু আপনি ভিডিও চলার ক্ষেত্রে আটকে চলা, খারাপ ব্যাটারি লাইফ এবং অজানা পার্শ্ব-প্রতিক্রিয়ার সম্মুখিন হতে পারেন</string>
|
||||
<string name="revanced_spoof_device_dimensions_summary_off">ডিভাইস ডাইমেনশন স্পুফ হয়নি\n\nএটি সক্রিয় করার ফলে উন্নত ভিডিও গুণমান আনলক হবে</string>
|
||||
<string name="revanced_spoof_device_dimensions_summary_on">"ডিভাইসের মাত্রা ভুয়া
|
||||
|
||||
উচ্চ ভিডিও গুণমানগুলি আনলক করা যেতে পারে তবে আপনি ভিডিও প্লেব্যাক হোঁচট খাওয়া, খারাপ ব্যাটারি লাইফ এবং অজানা পার্শ্ব প্রতিক্রিয়া অনুভব করতে পারেন"</string>
|
||||
<string name="revanced_spoof_device_dimensions_summary_off">"ডিভাইসের মাত্রা ভুয়া নয়
|
||||
|
||||
এটি সক্রিয় করা উচ্চ ভিডিও গুণমানগুলি আনলক করতে পারে"</string>
|
||||
<string name="revanced_spoof_device_dimensions_user_dialog_message">এটি সক্রিয় করার ফলে আপনি ভিডিও চলার ক্ষেত্রে আটকে চলা, খারাপ ব্যাটারি লাইফ এবং অজানা পার্শ্ব-প্রতিক্রিয়ার সম্মুখিন হতে পারেন।</string>
|
||||
</patch>
|
||||
<patch id="misc.gms.gmsCoreSupportResourcePatch">
|
||||
@@ -1019,6 +1230,11 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_disable_zoom_haptics_summary_on">কম্পন নিষ্ক্রিয় করা হয়েছে</string>
|
||||
<string name="revanced_disable_zoom_haptics_summary_off">কম্পন সক্রিয় করা হয়েছে</string>
|
||||
</patch>
|
||||
<patch id="video.audio.forceOriginalAudioPatch">
|
||||
<string name="revanced_force_original_audio_title">মূল অডিও বলপূর্বক চালু করুন</string>
|
||||
<string name="revanced_force_original_audio_summary_on">মূল অডিও ব্যবহার করছে</string>
|
||||
<string name="revanced_force_original_audio_summary_off">ডিফল্ট অডিও ব্যবহার করছে</string>
|
||||
</patch>
|
||||
<patch id="video.quality.rememberVideoQualityPatch">
|
||||
<!-- Translations should use the same text as revanced_custom_playback_speeds_auto -->
|
||||
<string name="revanced_video_quality_default_entry_1">স্বতস্ফূর্তভাবে</string>
|
||||
@@ -1037,9 +1253,13 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_playback_speed_dialog_button_summary_off">বোতাম প্রদর্শিত হয়নি</string>
|
||||
</patch>
|
||||
<patch id="video.speed.custom.customPlaybackSpeedPatch">
|
||||
<string name="revanced_custom_speed_menu_title">কাস্টম প্লেব্যাক গতি মেনু</string>
|
||||
<string name="revanced_custom_speed_menu_summary_on">কাস্টম স্পিড মেনু দেখানো হচ্ছে</string>
|
||||
<string name="revanced_custom_speed_menu_summary_off">কাস্টম স্পিড মেনু দেখানো হচ্ছে না</string>
|
||||
<string name="revanced_custom_playback_speeds_title">নিজস্ব প্লেব্যাক স্পিড</string>
|
||||
<string name="revanced_custom_playback_speeds_invalid">নিজস্ব স্পিড অবশ্যই %sগুণ থেকে কম হতে হবে। মূল ভ্যালু ব্যবহৃত হচ্ছে।</string>
|
||||
<string name="revanced_custom_playback_speeds_parse_exception">ভুল নিজস্ব প্লেব্যাক স্পিড। মূল ভ্যালু ব্যবহৃত হচ্ছে।</string>
|
||||
<string name="revanced_custom_playback_speeds_summary">কাস্টম প্লেব্যাক গতি যোগ করুন অথবা পরিবর্তন করুন</string>
|
||||
<string name="revanced_custom_playback_speeds_invalid">কাস্টম গতি %s এর চেয়ে কম হতে হবে</string>
|
||||
<string name="revanced_custom_playback_speeds_parse_exception">অবৈধ কাস্টম প্লেব্যাক গতি</string>
|
||||
<string name="revanced_custom_playback_speeds_auto">স্বতস্ফূর্তভাবে</string>
|
||||
</patch>
|
||||
<patch id="video.speed.remember.rememberPlaybackSpeedPatch">
|
||||
@@ -1064,11 +1284,77 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_spoof_video_streams_screen_summary">প্লেব্যাক সমস্যা প্রতিরোধ করতে ক্লায়েন্ট ভিডিও স্ট্রিম স্পুফ করুন</string>
|
||||
<string name="revanced_spoof_video_streams_title">ভিডিও স্ট্রিমিং স্পুফ করুন</string>
|
||||
<string name="revanced_spoof_video_streams_summary_on">ভিডিও স্ট্রিম স্পুফ করা হয়েছে</string>
|
||||
<string name="revanced_spoof_video_streams_summary_off">ভিডিও স্ট্রিম স্পুফ করা হয়নি\n\nভিডিও প্লেব্যাক ঠিকমতো কাজ নাও করতে পারে</string>
|
||||
<string name="revanced_spoof_video_streams_summary_off">"ভিডিও স্ট্রিম ভুয়া নয়
|
||||
|
||||
ভিডিও প্লেব্যাক কাজ নাও করতে পারে"</string>
|
||||
<string name="revanced_spoof_video_streams_user_dialog_message">এই সেটিংটি বন্ধ করার ফলে ভিডিও প্লেব্যাক ত্রুটি হতে পারে।</string>
|
||||
<string name="revanced_spoof_video_streams_client_title">ডিফল্ট ক্লায়েন্ট</string>
|
||||
<string name="revanced_spoof_video_streams_ios_force_avc_title">AVC (H.264) ফোর্স করুন</string>
|
||||
<string name="revanced_spoof_video_streams_language_">ভিডিও স্ট্রিম স্পুফ করা হয়েছে</string>
|
||||
<string name="revanced_spoof_video_streams_ios_force_avc_summary_on">ভিডিও কোডেক AVC (H.264) তে বাধ্য করা হয়েছে</string>
|
||||
<string name="revanced_spoof_video_streams_ios_force_avc_summary_off">ভিডিও কোডেক স্বয়ংক্রিয়ভাবে নির্ধারিত হচ্ছে</string>
|
||||
<string name="revanced_spoof_video_streams_ios_force_avc_user_dialog_message">"এটি সক্রিয় করা ব্যাটারি লাইফ উন্নত করতে পারে এবং প্লেব্যাক হোঁচট খাওয়া ঠিক করতে পারে।
|
||||
|
||||
AVC-এর সর্বোচ্চ রেজোলিউশন 1080p, Opus অডিও কোডেক উপলব্ধ নয় এবং ভিডিও প্লেব্যাক VP9 বা AV1 এর তুলনায় আরও ইন্টারনেট ডেটা ব্যবহার করবে।"</string>
|
||||
<string name="revanced_spoof_video_streams_about_ios_title">iOS স্পুফিং এর পার্শ্ব প্রতিক্রিয়া</string>
|
||||
<string name="revanced_spoof_video_streams_about_ios_summary">"• বেসরকারি শিশু ভিডিও চলতে নাও পারে<br>• ভিডিওগুলি 1 সেকেন্ড আগে শেষ হয়"</string>
|
||||
<string name="revanced_spoof_video_streams_about_android_vr_title">Android VR স্পুফিং এর পার্শ্ব প্রতিক্রিয়া</string>
|
||||
<string name="revanced_spoof_video_streams_about_android_vr_summary">"• শিশু ভিডিওগুলি প্লে নাও হতে পারে
|
||||
• লাইভস্ট্রিম শুরু থেকে শুরু হয়
|
||||
• ভিডিও 1 সেকেন্ড আগে শেষ হয়"</string>
|
||||
<string name="revanced_spoof_video_streams_language_title">ডিফল্ট অডিও স্ট্রিম ভাষা</string>
|
||||
<string name="revanced_spoof_video_streams_language_DEFAULT">অ্যাপ ভাষা</string>
|
||||
<string name="revanced_spoof_video_streams_language_AR">আরবি</string>
|
||||
<string name="revanced_spoof_video_streams_language_AZ">আজারবাইজানি</string>
|
||||
<string name="revanced_spoof_video_streams_language_BG">বুলগেরিয়ান</string>
|
||||
<string name="revanced_spoof_video_streams_language_BN">বাংলা</string>
|
||||
<string name="revanced_spoof_video_streams_language_CA">কাতালান</string>
|
||||
<string name="revanced_spoof_video_streams_language_CS">চেক</string>
|
||||
<string name="revanced_spoof_video_streams_language_DA">ডেনিশ</string>
|
||||
<string name="revanced_spoof_video_streams_language_DE">জার্মান</string>
|
||||
<string name="revanced_spoof_video_streams_language_EL">গ্রীক</string>
|
||||
<string name="revanced_spoof_video_streams_language_EN">ইংরেজি</string>
|
||||
<string name="revanced_spoof_video_streams_language_ES">স্প্যানিশ</string>
|
||||
<string name="revanced_spoof_video_streams_language_ET">এস্তোনিয়ান</string>
|
||||
<string name="revanced_spoof_video_streams_language_FA">ফার্সি</string>
|
||||
<string name="revanced_spoof_video_streams_language_FI">ফিনল্যান্ড</string>
|
||||
<string name="revanced_spoof_video_streams_language_FR">ফরাসি</string>
|
||||
<string name="revanced_spoof_video_streams_language_GU">গুজরাটি</string>
|
||||
<string name="revanced_spoof_video_streams_language_HI">হিন্দি</string>
|
||||
<string name="revanced_spoof_video_streams_language_HR">ক্রোয়েশিয়ান</string>
|
||||
<string name="revanced_spoof_video_streams_language_HU">হাঙ্গেরিয়ান</string>
|
||||
<string name="revanced_spoof_video_streams_language_ID">ইন্দোনেশিয়ান</string>
|
||||
<string name="revanced_spoof_video_streams_language_IT">ইতালীয়</string>
|
||||
<string name="revanced_spoof_video_streams_language_JA">জাপানি</string>
|
||||
<string name="revanced_spoof_video_streams_language_KK">কাজাখ</string>
|
||||
<string name="revanced_spoof_video_streams_language_KO">কোরিয়ান</string>
|
||||
<string name="revanced_spoof_video_streams_language_LT">লিথুয়ানিয়ান</string>
|
||||
<string name="revanced_spoof_video_streams_language_LV">লাতভিয়ান</string>
|
||||
<string name="revanced_spoof_video_streams_language_MK">ম্যাসেডোনিয়ান</string>
|
||||
<string name="revanced_spoof_video_streams_language_MN">মঙ্গোলিয়ান</string>
|
||||
<string name="revanced_spoof_video_streams_language_MR">মারাঠি</string>
|
||||
<string name="revanced_spoof_video_streams_language_MS">মালয়</string>
|
||||
<string name="revanced_spoof_video_streams_language_MY">বার্মিজ</string>
|
||||
<string name="revanced_spoof_video_streams_language_NL">ডাচ</string>
|
||||
<string name="revanced_spoof_video_streams_language_OR">ওড়িয়া</string>
|
||||
<string name="revanced_spoof_video_streams_language_PA">পঞ্জাবি</string>
|
||||
<string name="revanced_spoof_video_streams_language_PL">পোলিশ</string>
|
||||
<string name="revanced_spoof_video_streams_language_PT_BR">পর্তুগিজ (ব্রাজিল)</string>
|
||||
<string name="revanced_spoof_video_streams_language_PT_PT">পর্তুগিজ (পর্তুগাল)</string>
|
||||
<string name="revanced_spoof_video_streams_language_RO">রোমানীয়</string>
|
||||
<string name="revanced_spoof_video_streams_language_RU">রাশিয়ান</string>
|
||||
<string name="revanced_spoof_video_streams_language_SK">স্লোভাক</string>
|
||||
<string name="revanced_spoof_video_streams_language_SL">স্লোভেনিয়ান</string>
|
||||
<string name="revanced_spoof_video_streams_language_SR">সার্বিয়ান</string>
|
||||
<string name="revanced_spoof_video_streams_language_SV">সুইডিশ</string>
|
||||
<string name="revanced_spoof_video_streams_language_SW">সোয়াহিলি</string>
|
||||
<string name="revanced_spoof_video_streams_language_TA">তামিল</string>
|
||||
<string name="revanced_spoof_video_streams_language_TE">তেলুগু</string>
|
||||
<string name="revanced_spoof_video_streams_language_TH">থাই</string>
|
||||
<string name="revanced_spoof_video_streams_language_TR">তুর্কি</string>
|
||||
<string name="revanced_spoof_video_streams_language_UK">ইউক্রেনীয়</string>
|
||||
<string name="revanced_spoof_video_streams_language_UR">উর্দু</string>
|
||||
<string name="revanced_spoof_video_streams_language_VI">ভিয়েতনামি</string>
|
||||
<string name="revanced_spoof_video_streams_language_ZH">চীনা</string>
|
||||
</patch>
|
||||
</app>
|
||||
<app id="twitch">
|
||||
@@ -1078,8 +1364,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_block_audio_ads_summary_off">অডিও বিজ্ঞাপন আনবব্লক করা হয়েছে</string>
|
||||
</patch>
|
||||
<patch id="ad.embedded.embeddedAdsPatch">
|
||||
<string name="revanced_embedded_ads_service_unavailable">%s উপলভ্য নয়। বিজ্ঞাপন দেখাতে পারে। সেটিং থেকে অন্য কোন বিজ্ঞাপন আটকানো সেবায় সুইচ করুন।</string>
|
||||
<string name="revanced_embedded_ads_service_failed">%s সার্ভার একটি ত্রুটি দেখাচ্ছে। বিজ্ঞাপন দেখাতে পারে। সেটিং থেকে অন্য কোন বিজ্ঞাপন আটকানো সেবায় সুইচ করুন।</string>
|
||||
<string name="revanced_embedded_ads_service_unavailable">%s উপলব্ধ নয়, বিজ্ঞাপন দেখানো হতে পারে। সেটিংসে বিজ্ঞাপন ব্লক পরিষেবা পরিবর্তন করার চেষ্টা করুন।</string>
|
||||
<string name="revanced_embedded_ads_service_failed">%s একটি ত্রুটি ফিরিয়েছে, বিজ্ঞাপন দেখানো হতে পারে। সেটিংসে বিজ্ঞাপন ব্লক পরিষেবা পরিবর্তন করার চেষ্টা করুন।</string>
|
||||
<string name="revanced_block_embedded_ads_title">এমবেড করা ভিডিও বিজ্ঞাপন আটকান</string>
|
||||
<string name="revanced_block_embedded_ads_entry_1">নিষ্ক্রিয় হয়েছে</string>
|
||||
<string name="revanced_block_embedded_ads_entry_2">Luminous প্রক্সি</string>
|
||||
@@ -1111,6 +1397,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<patch id="misc.settings.settingsPatch">
|
||||
<string name="revanced_settings">ReVanced সেটিং</string>
|
||||
<string name="revanced_about_title">সম্পর্কিত</string>
|
||||
<string name="revanced_about_summary">ReVanced সম্পর্কে</string>
|
||||
<string name="revanced_ads_screen_title">বিজ্ঞাপন</string>
|
||||
<string name="revanced_ads_screen_summary">বিজ্ঞাপন বন্ধ করার সেটিং</string>
|
||||
<string name="revanced_chat_screen_title">আলাপচারি</string>
|
||||
|
||||
@@ -1,34 +1,23 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
|
||||
Note: All strings must have a unique path, even if the same string is declared in two different apps.
|
||||
This is because Crowdin requires temporarily flattening this file and removing the <app> and <patch> elements.
|
||||
All strings must have a unique path, even if the same string is declared in two different apps.
|
||||
This is because Crowdin requires temporarily flattening this file and removing the <app> and <patch> elements.
|
||||
|
||||
# General guidelines and information for translating
|
||||
|
||||
## Strings parameters can be reordered to allow more flexible translations if the grammar should be changed.
|
||||
Strings with new lines must be raw strings where they're wrapped in quotes and new lines are not encoded.
|
||||
Raw strings still requires escaping embedded double quotes but escaping embedded single quotes is optional.
|
||||
|
||||
For example, the patches string:
|
||||
<string name="revanced_patches_string">You will arrive at %1$s in %2$s hours from now</string>
|
||||
Could be translated to another language using a rearranged grammar:
|
||||
<string name="revanced_patches_string">You will arrive %2$s hours from now at %1$s</string>
|
||||
Raw strings are required because Crowdin AI translations regularly gets confused and
|
||||
replace \n with an encoded new line character.
|
||||
|
||||
For Manager strings:
|
||||
You will arrive at ${destination} in ${count} hours from now
|
||||
Could be rearranged by changing the order of the ${} parameters:
|
||||
You will arrive ${count} hours from now at ${destination}
|
||||
Bad:
|
||||
<string name="summary_key">First \'item\' text\nSecond \"item\" text</string>
|
||||
|
||||
Reordering is particularly relevant when translating into right to left languages, or for any language with grammar that is noticeably different from English.
|
||||
Good:
|
||||
<string name="summary_key">"First 'item' text
|
||||
Second \"item\" text"</string>
|
||||
|
||||
## Single and double quotation marks must be escaped for patch strings (Manager does not require escaping any quotes).
|
||||
|
||||
All _patches_ single and double quotation marks must be escaped as \" or \'
|
||||
Forgetting to do this will cause that string to appear in app with no quotation characters.
|
||||
|
||||
Correct:
|
||||
<string name="revanced_string">You\'re correct. This is the \"correct\" way and this text will appear as expected in the app</string>
|
||||
Not correct:
|
||||
<string name="revanced_string">You're not correct. This is not the "correct" way and this text will not appear as expected the in app</string>
|
||||
-->
|
||||
<resources>
|
||||
<app id="shared">
|
||||
@@ -175,6 +164,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
</patch>
|
||||
<patch id="layout.startupshortsreset.disableResumingShortsOnStartupPatch">
|
||||
</patch>
|
||||
<patch id="layout.shortsplayer.shortsPlayerTypePatch">
|
||||
</patch>
|
||||
<patch id="layout.shortsautoplay.shortsAutoplayPatch">
|
||||
</patch>
|
||||
<patch id="layout.tablet.enableTabletLayoutPatch">
|
||||
@@ -211,6 +202,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
</patch>
|
||||
<patch id="misc.zoomhaptics.zoomHapticsPatch">
|
||||
</patch>
|
||||
<patch id="video.audio.forceOriginalAudioPatch">
|
||||
</patch>
|
||||
<patch id="video.quality.rememberVideoQualityPatch">
|
||||
<!-- Translations should use the same text as revanced_custom_playback_speeds_auto -->
|
||||
</patch>
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -1,34 +1,23 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
|
||||
Note: All strings must have a unique path, even if the same string is declared in two different apps.
|
||||
This is because Crowdin requires temporarily flattening this file and removing the <app> and <patch> elements.
|
||||
All strings must have a unique path, even if the same string is declared in two different apps.
|
||||
This is because Crowdin requires temporarily flattening this file and removing the <app> and <patch> elements.
|
||||
|
||||
# General guidelines and information for translating
|
||||
|
||||
## Strings parameters can be reordered to allow more flexible translations if the grammar should be changed.
|
||||
Strings with new lines must be raw strings where they're wrapped in quotes and new lines are not encoded.
|
||||
Raw strings still requires escaping embedded double quotes but escaping embedded single quotes is optional.
|
||||
|
||||
For example, the patches string:
|
||||
<string name="revanced_patches_string">You will arrive at %1$s in %2$s hours from now</string>
|
||||
Could be translated to another language using a rearranged grammar:
|
||||
<string name="revanced_patches_string">You will arrive %2$s hours from now at %1$s</string>
|
||||
Raw strings are required because Crowdin AI translations regularly gets confused and
|
||||
replace \n with an encoded new line character.
|
||||
|
||||
For Manager strings:
|
||||
You will arrive at ${destination} in ${count} hours from now
|
||||
Could be rearranged by changing the order of the ${} parameters:
|
||||
You will arrive ${count} hours from now at ${destination}
|
||||
Bad:
|
||||
<string name="summary_key">First \'item\' text\nSecond \"item\" text</string>
|
||||
|
||||
Reordering is particularly relevant when translating into right to left languages, or for any language with grammar that is noticeably different from English.
|
||||
Good:
|
||||
<string name="summary_key">"First 'item' text
|
||||
Second \"item\" text"</string>
|
||||
|
||||
## Single and double quotation marks must be escaped for patch strings (Manager does not require escaping any quotes).
|
||||
|
||||
All _patches_ single and double quotation marks must be escaped as \" or \'
|
||||
Forgetting to do this will cause that string to appear in app with no quotation characters.
|
||||
|
||||
Correct:
|
||||
<string name="revanced_string">You\'re correct. This is the \"correct\" way and this text will appear as expected in the app</string>
|
||||
Not correct:
|
||||
<string name="revanced_string">You're not correct. This is not the "correct" way and this text will not appear as expected the in app</string>
|
||||
-->
|
||||
<resources>
|
||||
<app id="shared">
|
||||
@@ -68,9 +57,17 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<!-- Translations of this should not be longer than the original English text, otherwise the text can be clipped and not entirely shown. -->
|
||||
<string name="gms_core_toast_not_installed_message">MicroG GmsCore er ikke installeret. Installér den.</string>
|
||||
<string name="gms_core_dialog_title">Behov for handling</string>
|
||||
<string name="gms_core_dialog_not_whitelisted_not_allowed_in_background_message">MicroG GmsCore har ikke tilladelse til at køre i baggrunden.\n\nFølg vejledningen \"Må ikke dræbe min app\" til din telefon, og anvend vejledningen til din MicroG-installation.\n\nDette er nødvendigt for at appen kan fungere.</string>
|
||||
<string name="gms_core_dialog_not_whitelisted_not_allowed_in_background_message">"MicroG GmsCore har ikke tilladelse til at køre i baggrunden.
|
||||
|
||||
Følg guiden \"Dræb ikke min app\" for din telefon, og følg vejledningen for din MicroG-installation.
|
||||
|
||||
Dette er påkrævet, for at appen kan fungere."</string>
|
||||
<string name="gms_core_dialog_open_website_text">Åbn hjemmeside</string>
|
||||
<string name="gms_core_dialog_not_whitelisted_using_battery_optimizations_message">MicroG GmsCore batterioptimeringer skal være deaktiveret for at forhindre problemer.\n\nTryk på knappen fortsæt og deaktiver batterioptimeringer.</string>
|
||||
<string name="gms_core_dialog_not_whitelisted_using_battery_optimizations_message">"MicroG GmsCores batterioptimering skal deaktiveres for at forhindre problemer.
|
||||
|
||||
Deaktivering af batterioptimering for MicroG vil ikke påvirke batteriforbruget negativt.
|
||||
|
||||
Tryk på fortsætknappen, og tillad ændringer af optimering."</string>
|
||||
<string name="gms_core_dialog_continue_text">Fortsæt</string>
|
||||
</patch>
|
||||
</app>
|
||||
@@ -79,15 +76,19 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_settings_screen_00_about_title">Om</string>
|
||||
<string name="revanced_settings_screen_01_ads_title">Annoncer</string>
|
||||
<string name="revanced_settings_screen_02_alt_thumbnails_title">Alternative miniaturer</string>
|
||||
<string name="revanced_settings_screen_03_feed_title">Feed</string>
|
||||
<string name="revanced_settings_screen_03_feed_title">Fodring</string>
|
||||
<string name="revanced_settings_screen_04_player_title">Spiller</string>
|
||||
<string name="revanced_settings_screen_05_general_title">Generelt layout</string>
|
||||
<string name="revanced_settings_screen_06_shorts_title">Shorts</string>
|
||||
<string name="revanced_settings_screen_07_seekbar_title">Søgebjælke</string>
|
||||
<string name="revanced_settings_screen_08_swipe_controls_title">Stryg kontrolelementer</string>
|
||||
<string name="revanced_settings_screen_11_misc_title">Diverse</string>
|
||||
<string name="revanced_settings_screen_12_video_title">Video</string>
|
||||
<string name="revanced_settings_screen_12_video_title">Videoer</string>
|
||||
</patch>
|
||||
<patch id="misc.backgroundplayback.backgroundPlaybackPatch">
|
||||
<string name="revanced_shorts_disable_background_playback_title">Deaktiver afspilning af Shorts i baggrunden</string>
|
||||
<string name="revanced_shorts_disable_background_playback_summary_on">Afspilning af Shorts i baggrunden er deaktiveret</string>
|
||||
<string name="revanced_shorts_disable_background_playback_summary_off">Afspilning af Shorts i baggrunden er aktiveret</string>
|
||||
</patch>
|
||||
<patch id="misc.debugging.enableDebuggingPatch">
|
||||
<string name="revanced_debug_screen_title">Fejlfinding</string>
|
||||
@@ -104,7 +105,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_debug_toast_on_error_title">Vis toast på ReVanced fejl</string>
|
||||
<string name="revanced_debug_toast_on_error_summary_on">Toast vist, hvis der opstår fejl</string>
|
||||
<string name="revanced_debug_toast_on_error_summary_off">Toast ikke vist, hvis der opstår fejl</string>
|
||||
<string name="revanced_debug_toast_on_error_user_dialog_message">Slår fejl-toasts fra skjuler alle ReVanced fejlmeddelelser.\n\nDu vil ikke blive underrettet om nogen uventede begivenheder.</string>
|
||||
<string name="revanced_debug_toast_on_error_user_dialog_message">"Deaktivering af fejl-toasts skjuler alle ReVanced-fejlmeddelelser.
|
||||
|
||||
Du vil ikke blive underrettet om uventede hændelser."</string>
|
||||
</patch>
|
||||
<patch id="layout.hide.general.hideLayoutComponentsPatch">
|
||||
<string name="revanced_disable_like_subscribe_glow_title">Deaktivér som / abonnér knap glow</string>
|
||||
@@ -123,7 +126,12 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_hide_channel_watermark_summary_on">Vandmærke er skjult</string>
|
||||
<string name="revanced_hide_channel_watermark_summary_off">Vandmærke er vist</string>
|
||||
<string name="revanced_hide_horizontal_shelves_title">Skjul vandrette hylder</string>
|
||||
<string name="revanced_hide_horizontal_shelves_summary_on">Hylder er skjult såsom:\n• Breaking news\n• Fortsæt med at se\n• Udforsk flere kanaler\n• Shopping\n• Se det igen</string>
|
||||
<string name="revanced_hide_horizontal_shelves_summary_on">"Hylder er skjult, f.eks.:
|
||||
• Nye nyheder
|
||||
• Se videre
|
||||
• Udforsk flere kanaler
|
||||
• Indkøb
|
||||
• Se det igen"</string>
|
||||
<string name="revanced_hide_horizontal_shelves_summary_off">Hylder er vist</string>
|
||||
<!-- 'Join' should be translated using the same localized wording YouTube displays.
|
||||
This appears in the video player for certain videos. -->
|
||||
@@ -151,9 +159,6 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_hide_timed_reactions_title">Skjul tidsrelaterede reaktioner</string>
|
||||
<string name="revanced_hide_timed_reactions_summary_on">Tidsbegrænsede reaktioner er skjult</string>
|
||||
<string name="revanced_hide_timed_reactions_summary_off">Tidsbegrænsede reaktioner er vist</string>
|
||||
<string name="revanced_hide_search_result_shelf_header_title">Skjul søgeresultat hylde header</string>
|
||||
<string name="revanced_hide_search_result_shelf_header_summary_on">Hylde header er skjult</string>
|
||||
<string name="revanced_hide_search_result_shelf_header_summary_off">Hylde header er vist</string>
|
||||
<string name="revanced_hide_channel_guidelines_title">Skjul kanalretningslinjer</string>
|
||||
<string name="revanced_hide_channel_guidelines_summary_on">Kanalretningslinjer er skjult</string>
|
||||
<string name="revanced_hide_channel_guidelines_summary_off">Kanalretningslinjer er vist</string>
|
||||
@@ -250,12 +255,18 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_hide_filter_bar_feed_in_related_videos_summary_off">Vist i relaterede videoer</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_hide_comments_chat_summary_title">Skjul \'Chat-oversigt\' </string>
|
||||
<string name="revanced_hide_comments_chat_summary_summary_on">\'Chatsammenfatning\' er skjult</string>
|
||||
<string name="revanced_hide_comments_chat_summary_summary_off">\'Chatsammenfatning\' er vist</string>
|
||||
<string name="revanced_hide_comments_by_members_header_title">Skjul \'Kommentarer fra medlemmer\' header</string>
|
||||
<string name="revanced_hide_comments_by_members_header_summary_on">\'Kommentarer fra medlemmer\' overskrift er skjult</string>
|
||||
<string name="revanced_hide_comments_by_members_header_summary_off">\'Kommentarer fra medlemmer\' overskrift vises</string>
|
||||
<string name="revanced_hide_comments_section_title">Skjul kommentarsektion</string>
|
||||
<string name="revanced_hide_comments_section_summary_on">Kommentarer sektion er skjult</string>
|
||||
<string name="revanced_hide_comments_section_summary_off">Kommentarer sektion er vist</string>
|
||||
<string name="revanced_hide_comments_create_a_short_button_title">Skjul knappen \"Opret en Short\"</string>
|
||||
<string name="revanced_hide_comments_create_a_short_button_summary_on">Knappen \"Opret en Short\" er skjult</string>
|
||||
<string name="revanced_hide_comments_create_a_short_button_summary_off">Knappen \"Opret en Short\" vises</string>
|
||||
<string name="revanced_hide_comments_preview_comment_title">Skjul forhåndsvisning kommentar</string>
|
||||
<string name="revanced_hide_comments_preview_comment_summary_on">Forhåndsvisning kommentar er skjult</string>
|
||||
<string name="revanced_hide_comments_preview_comment_summary_off">Forhåndsvis kommentar er vist</string>
|
||||
@@ -269,7 +280,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_hide_doodles_title">Skjul YouTube-Doudler</string>
|
||||
<string name="revanced_hide_doodles_summary_on">Søgebjælke Doudler er skjult</string>
|
||||
<string name="revanced_hide_doodles_summary_off">Søgebjælke Doudler vises</string>
|
||||
<string name="revanced_hide_doodles_user_dialog_message">YouTube Doodles dukker op et par dage hvert år.\n\nHvis en Doodle i øjeblikket vises i din region og denne skjul-indstilling er slået til, så vil filterbjælken under søgelinjen også være skjult.</string>
|
||||
<string name="revanced_hide_doodles_user_dialog_message">"YouTube-doodles vises et par dage om året.
|
||||
|
||||
Hvis et Doodle vises i øjeblikket i din region, og denne skjuleindstilling er aktiveret, skjules filterfeltet under søgefeltet også."</string>
|
||||
<string name="revanced_custom_filter_screen_title">Tilpasset filter</string>
|
||||
<string name="revanced_custom_filter_screen_summary">Skjul komponenter ved hjælp af brugerdefinerede filtre</string>
|
||||
<string name="revanced_custom_filter_title">Aktiver brugerdefineret filter</string>
|
||||
@@ -293,8 +306,18 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_hide_keyword_content_phrases_title">Nøgleord at skjule</string>
|
||||
<!-- For localization it is preferred, but not required, if 'LeBlanc' is replaced with a localized name or a familiar word that has upper case letters in the middle of the word.
|
||||
This is because keywords can be in any language, and showing an example in the localized script helps convey this. -->
|
||||
<string name="revanced_hide_keyword_content_phrases_summary">Nøgleord og sætninger at skjule, adskilt af nye linjer\n\nSøgeord kan være kanalnavne eller enhver tekst vist i video titler\n\nOrd med store bogstaver i midten skal indtastes med casing (dvs. iPhone, TikTok, LeBlanc)</string>
|
||||
<string name="revanced_hide_keyword_content_phrases_summary">"Søgeord og sætninger, der skal skjules, adskilt af nye linjer
|
||||
|
||||
Søgeord kan være kanalnavne eller tekst, der vises i videotitler
|
||||
|
||||
Ord med store bogstaver i midten skal indtastes med store og små bogstaver (f.eks.: iPhone, TikTok, LeBlanc)"</string>
|
||||
<string name="revanced_hide_keyword_content_about_title">Om søgeord filtrering</string>
|
||||
<string name="revanced_hide_keyword_content_about_summary">"Hjem-/abonnement-/søgeresultater filtreres for at skjule indhold, der svarer til søgeordssætninger
|
||||
|
||||
Begrænsninger
|
||||
● Shorts kan ikke skjules efter kanalnavn
|
||||
● Nogle UI-komponenter skjules muligvis ikke
|
||||
● Søgning efter et søgeord viser muligvis ingen resultater"</string>
|
||||
<string name="revanced_hide_keyword_content_about_whole_words_title">Match hele ord</string>
|
||||
<!-- Translations _must_ use a localized example. For languages that do not use spaces between words (Chinese, Japanese, etc) the English AI example should be used since no localized examples exist. Or if using machine translations, or if nobody wants to think of a localized example, then the English 'ai' example should be left as-is. -->
|
||||
<string name="revanced_hide_keyword_content_about_whole_words_summary">Omkring et nøgleord/sætning med dobbelt-citater vil forhindre partielle kampe af videotitler og kanalnavne<br><br>For eksempel<br><b>\"ai\"</b> vil skjule videoen: <b>How does AI work?</b><br>, men skjuler ikke: <b>What does fair use mean?</b></string>
|
||||
@@ -302,6 +325,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_hide_keyword_toast_invalid_common">Kan ikke bruge søgeord: %s</string>
|
||||
<string name="revanced_hide_keyword_toast_invalid_common_whole_word_required">Tilføj tilbud for at bruge søgeord: %s</string>
|
||||
<string name="revanced_hide_keyword_toast_invalid_conflicting">Nøgleord har modstridende erklæringer: %s</string>
|
||||
<string name="revanced_hide_keyword_toast_invalid_length">Søgeordet er for kort og kræver anførselstegn: %s</string>
|
||||
<string name="revanced_hide_keyword_toast_invalid_broad">Nøgleord vil skjule alle videoer: %s</string>
|
||||
</patch>
|
||||
<patch id="ad.general.hideAdsResourcePatch">
|
||||
@@ -309,7 +333,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_hide_general_ads_summary_on">Generelle annoncer er skjult</string>
|
||||
<string name="revanced_hide_general_ads_summary_off">Generelle annoncer vises</string>
|
||||
<string name="revanced_hide_fullscreen_ads_title">Skjul fuldskærmsannoncer</string>
|
||||
<string name="revanced_hide_fullscreen_ads_summary_on">Fuldskærmsannoncer er skjult\n\nDenne funktion er kun tilgængelig for ældre enheder</string>
|
||||
<string name="revanced_hide_fullscreen_ads_summary_on">"Fuldsskærmsannoncer er skjult
|
||||
|
||||
Denne funktion er kun tilgængelig for ældre enheder"</string>
|
||||
<string name="revanced_hide_fullscreen_ads_summary_off">Fuldskærms annoncer vises</string>
|
||||
<string name="revanced_hide_buttoned_ads_title">Skjul knapfyldte annoncer</string>
|
||||
<string name="revanced_hide_buttoned_ads_summary_on">Knappede annoncer er skjult</string>
|
||||
@@ -454,6 +480,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_hide_thanks_button_summary_on">Tak knappen er skjult</string>
|
||||
<string name="revanced_hide_thanks_button_summary_off">Tak knappen er vist</string>
|
||||
<!-- 'Clip' should be translated with the same localized wording that YouTube displays. -->
|
||||
<string name="revanced_hide_clip_button_title">Skjul klip</string>
|
||||
<string name="revanced_hide_clip_button_summary_on">Klip knappen er skjult</string>
|
||||
<string name="revanced_hide_clip_button_summary_off">Klip knappen er vist</string>
|
||||
<!-- 'Save' should be translated with the same localized wording that YouTube displays. -->
|
||||
@@ -462,7 +489,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_hide_playlist_button_summary_off">Gem i afspilningslisteknappen vises</string>
|
||||
</patch>
|
||||
<patch id="layout.buttons.navigation.navigationButtonsPatch">
|
||||
<string name="revanced_navigation_buttons_screen_title">Navigation buttons</string>
|
||||
<string name="revanced_navigation_buttons_screen_title">Navigationsknapper</string>
|
||||
<string name="revanced_navigation_buttons_screen_summary">Skjul eller skift knapper i navigationsbjælken</string>
|
||||
<!-- 'Home' should be translated using the same localized wording YouTube displays for the tab. -->
|
||||
<string name="revanced_hide_home_button_title">Skjul Hjem</string>
|
||||
@@ -482,14 +509,25 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_hide_subscriptions_button_summary_off">Abonnementer knappen vises</string>
|
||||
<!-- 'Notifications' should be translated using the same localized wording YouTube displays the tab. -->
|
||||
<string name="revanced_switch_create_with_notifications_button_title">Skift Opret med notifikationer</string>
|
||||
<string name="revanced_switch_create_with_notifications_button_summary_on">Opret knap er skiftet med Notifikationsknappen\n\nBemærk: Aktivering af dette skjuler også med magt videoannoncer</string>
|
||||
<string name="revanced_switch_create_with_notifications_button_summary_on">"Opret-knappen er skiftet med knappen Meddelelser
|
||||
|
||||
Bemærk: Aktivering af dette skjuler også videoannoncer"</string>
|
||||
<string name="revanced_switch_create_with_notifications_button_summary_off">Opret knappen er ikke skiftet med Notifikationer knappen</string>
|
||||
<string name="revanced_hide_navigation_button_labels_title">Skjul navigationsknappens etiketter</string>
|
||||
<string name="revanced_hide_navigation_button_labels_summary_on">Etiketter er skjult</string>
|
||||
<string name="revanced_hide_navigation_button_labels_summary_off">Etiketter er vist</string>
|
||||
<string name="revanced_disable_translucent_status_bar_title">Deaktiver gennemsigtig statuslinje</string>
|
||||
<string name="revanced_disable_translucent_status_bar_summary_on">Statuslinjen er opak</string>
|
||||
<string name="revanced_disable_translucent_status_bar_summary_off">Statuslinjen er opak eller gennemsigtig</string>
|
||||
<string name="revanced_disable_translucent_navigation_bar_light_title">Deaktiver lys gennemsigtig linje</string>
|
||||
<string name="revanced_disable_translucent_navigation_bar_light_summary_on">Navigationslinjen i lys tilstand er ikke gennemsigtig</string>
|
||||
<string name="revanced_disable_translucent_navigation_bar_light_summary_off">Lys tilstand navigationslinjen er opak eller gennemsigtig</string>
|
||||
<string name="revanced_disable_translucent_navigation_bar_dark_title">Deaktiver mørk gennemsigtig linje</string>
|
||||
<string name="revanced_disable_translucent_navigation_bar_dark_summary_on">Navigationslinjen i mørk tilstand er ikke gennemsigtig</string>
|
||||
<string name="revanced_disable_translucent_navigation_bar_dark_summary_off">Mørk tilstand navigationslinjen er opak eller gennemsigtig</string>
|
||||
</patch>
|
||||
<patch id="layout.hide.player.flyoutmenupanel.hidePlayerFlyoutMenuPatch">
|
||||
<string name="revanced_hide_player_flyout_title">Flyout menu</string>
|
||||
<string name="revanced_hide_player_flyout_title">Udfyldningsmenu</string>
|
||||
<string name="revanced_hide_player_flyout_summary">Skjul eller vis spiller flyout menupunkter</string>
|
||||
<!-- 'Captions' should be translated using the same localized wording YouTube displays for the menu item. -->
|
||||
<string name="revanced_hide_player_flyout_captions_title">Skjul Billedtekster</string>
|
||||
@@ -560,7 +598,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
</patch>
|
||||
<patch id="layout.hide.endscreencards.hideEndscreenCardsResourcePatch">
|
||||
<string name="revanced_hide_endscreen_cards_title">Skjul slutskærmkort</string>
|
||||
<string name="revanced_hide_endscreen_cards_summary_on">End screen cards are hidden</string>
|
||||
<string name="revanced_hide_endscreen_cards_summary_on">Slutskærmskortene er skjult</string>
|
||||
<string name="revanced_hide_endscreen_cards_summary_off">Kort til slutskærm vises</string>
|
||||
</patch>
|
||||
<patch id="layout.hide.fullscreenambientmode.disableFullscreenAmbientModePatch">
|
||||
@@ -587,6 +625,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_hide_seekbar_thumbnail_summary_off">Miniaturesøgelinjen vises</string>
|
||||
</patch>
|
||||
<patch id="layout.hide.shorts.hideShortsComponentsResourcePatch">
|
||||
<string name="revanced_shorts_player_screen_title">Shorts-afspiller</string>
|
||||
<string name="revanced_shorts_player_screen_summary">Skjul eller vis komponenter i Shorts-afspilleren</string>
|
||||
<!-- 'home' should be translated using the same localized wording YouTube displays for the home tab. -->
|
||||
<string name="revanced_hide_shorts_home_title">Skjul Shorts i hjemmefeed</string>
|
||||
<string name="revanced_hide_shorts_home_summary_on">Shorts i hjemmet feed er skjult</string>
|
||||
@@ -721,7 +761,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_ryd_enable_summary_off">Dislikationer vises ikke</string>
|
||||
<string name="revanced_ryd_shorts_title">Vis ikke på Shorts</string>
|
||||
<string name="revanced_ryd_shorts_summary_on">Dislikationer vist på Shorts</string>
|
||||
<string name="revanced_ryd_shorts_summary_on_disclaimer">Dislikationer vist på Shorts\n\nBegrænsning: Dislikes vises muligvis ikke i inkognito-tilstand</string>
|
||||
<string name="revanced_ryd_shorts_summary_on_disclaimer">"Dislikes vises på Shorts
|
||||
|
||||
Begrænsning: Dislikes vises muligvis ikke i inkognitotilstand"</string>
|
||||
<string name="revanced_ryd_shorts_summary_off">Synes ikke skjult på Shorts</string>
|
||||
<string name="revanced_ryd_dislike_percentage_title">Synes ikke som procent</string>
|
||||
<string name="revanced_ryd_dislike_percentage_summary_on">Dislikationer vist som procent</string>
|
||||
@@ -764,7 +806,11 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_seekbar_thumbnails_high_quality_summary_off">Seekbar miniaturer er af middel kvalitet</string>
|
||||
<string name="revanced_seekbar_thumbnails_high_quality_legacy_summary_on">Fuldskærmssøgerbar miniaturer er af høj kvalitet</string>
|
||||
<string name="revanced_seekbar_thumbnails_high_quality_legacy_summary_off">Fuldskærmssøgerbar miniaturer er af middel kvalitet</string>
|
||||
<string name="revanced_seekbar_thumbnails_high_quality_dialog_message">Dette vil også gendanne miniaturer på livestreams, der ikke har søgbar miniaturebilleder.\n\nSeekbar miniaturer vil bruge samme kvalitet som den aktuelle video.\n\nDenne funktion fungerer bedst med en videokvalitet på 720p eller lavere og ved brug af en meget hurtig internetforbindelse.</string>
|
||||
<string name="revanced_seekbar_thumbnails_high_quality_dialog_message">"Dette vil også gendanne miniaturebilleder på livestreams, der ikke har miniaturebilleder i søgefeltet.
|
||||
|
||||
Miniaturebilleder i søgefeltet bruger den samme kvalitet som den aktuelle video.
|
||||
|
||||
Denne funktion fungerer bedst med en videokvalitet på 720p eller lavere og ved brug af en meget hurtig internetforbindelse."</string>
|
||||
<string name="revanced_restore_old_seekbar_thumbnails_title">Gendan gamle miniaturer på søgelinjen</string>
|
||||
<string name="revanced_restore_old_seekbar_thumbnails_summary_on">Seekbar miniaturer vises over søgelinjen</string>
|
||||
<string name="revanced_restore_old_seekbar_thumbnails_summary_off">Seekbar miniaturer vises i fuld skærm</string>
|
||||
@@ -817,7 +863,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_sb_general_uuid_invalid">Privat bruger-id skal være mindst 30 tegn langt</string>
|
||||
<string name="revanced_sb_general_api_url">Skift API-URL</string>
|
||||
<string name="revanced_sb_general_api_url_sum">Adressen SponsorBlock bruger til at foretage opkald til serveren</string>
|
||||
<string name="revanced_sb_api_url_reset">API URL reset</string>
|
||||
<string name="revanced_sb_api_url_reset">API-URL nulstillet</string>
|
||||
<string name="revanced_sb_api_url_invalid">API URL er ugyldig</string>
|
||||
<string name="revanced_sb_api_url_changed">API URL ændret</string>
|
||||
<string name="revanced_sb_settings_ie">Importér/eksport indstillinger</string>
|
||||
@@ -827,7 +873,10 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_sb_settings_import_successful">Indstillinger importeret med succes</string>
|
||||
<string name="revanced_sb_settings_import_failed">Mislykkedes at importere: %s</string>
|
||||
<string name="revanced_sb_settings_export_failed">Mislykkedes at eksportere: %s</string>
|
||||
<string name="revanced_sb_settings_revanced_export_user_id_warning">Dine indstillinger indeholder et privat SponsorBloker bruger-id.\n\nDit bruger-id er som en adgangskode, og det bør aldrig deles.\n</string>
|
||||
<string name="revanced_sb_settings_revanced_export_user_id_warning">"Dine indstillinger indeholder et privat SponsorBlock-bruger-id.
|
||||
|
||||
Dit bruger-id er som en adgangskode, og det må aldrig deles.
|
||||
"</string>
|
||||
<string name="revanced_sb_settings_revanced_export_user_id_warning_dismiss">Vis ikke igen</string>
|
||||
<string name="revanced_sb_diff_segments">Ændr segmentadfærd</string>
|
||||
<string name="revanced_sb_segments_sponsor">Sponsor</string>
|
||||
@@ -838,13 +887,13 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_sb_segments_interaction_sum">En kort påmindelse om at lide, abonnere eller følge dem midt i indholdet. Hvis den er lang eller om noget specifik, bør den i stedet være under selvforfremmelse</string>
|
||||
<string name="revanced_sb_segments_highlight">Fremhæv</string>
|
||||
<string name="revanced_sb_segments_highlight_sum">Den del af videoen, som de fleste mennesker er på udkig efter</string>
|
||||
<string name="revanced_sb_segments_intro">Intermission/Intro Animation</string>
|
||||
<string name="revanced_sb_segments_intro">Pause/Intro-animation</string>
|
||||
<string name="revanced_sb_segments_intro_sum">Et interval uden reelt indhold. Kunne være en pause, statisk ramme eller gentagelse af animation. Omfatter ikke overgange indeholdende information</string>
|
||||
<string name="revanced_sb_segments_outro">Slutkort/Kredit</string>
|
||||
<string name="revanced_sb_segments_outro_sum">Medvirkende eller når YouTube-endcards vises. Ikke for konklusioner med information</string>
|
||||
<string name="revanced_sb_segments_preview">Forhåndsvisning/Genoptag/Krog</string>
|
||||
<string name="revanced_sb_segments_preview_sum">Indsamling af klip, der viser, hvad der kommer op, eller hvad der skete i videoen eller i andre videoer af en serie, hvor alle oplysninger gentages andetsteds</string>
|
||||
<string name="revanced_sb_segments_filler">Filler Tangent/Jokes</string>
|
||||
<string name="revanced_sb_segments_filler">Fyldstof-tangent/jokes</string>
|
||||
<string name="revanced_sb_segments_filler_sum">Tangential scener tilføjet kun for fyldstof eller humor, der ikke er forpligtet til at forstå hovedindholdet af videoen. Omfatter ikke segmenter, der giver kontekst- eller baggrundsoplysninger</string>
|
||||
<string name="revanced_sb_segments_nomusic">Musik: Ikke-Musik Sektion</string>
|
||||
<string name="revanced_sb_segments_nomusic_sum">Kun til brug i musikvideoer. Sektioner af musikvideoer uden musik, der ikke allerede er dækket af en anden kategori</string>
|
||||
@@ -857,14 +906,14 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_sb_skip_button_intro_beginning">Spring intro over</string>
|
||||
<string name="revanced_sb_skip_button_intro_middle">Spring intermission over</string>
|
||||
<string name="revanced_sb_skip_button_intro_end">Spring intermission over</string>
|
||||
<string name="revanced_sb_skip_button_outro">Skip outro</string>
|
||||
<string name="revanced_sb_skip_button_outro">Spring outro over</string>
|
||||
<string name="revanced_sb_skip_button_preview_beginning">Spring forhåndsvisning over</string>
|
||||
<string name="revanced_sb_skip_button_preview_middle">Spring forhåndsvisning over</string>
|
||||
<string name="revanced_sb_skip_button_preview_end">Spring resumé over</string>
|
||||
<string name="revanced_sb_skip_button_filler">Spring filler over</string>
|
||||
<string name="revanced_sb_skip_button_nomusic">Spring over ikke-musik</string>
|
||||
<string name="revanced_sb_skip_button_unsubmitted">Overspring segment</string>
|
||||
<string name="revanced_sb_skipped_sponsor">sponsor sprunget over</string>
|
||||
<string name="revanced_sb_skipped_sponsor">Sponsor sprunget over</string>
|
||||
<string name="revanced_sb_skipped_selfpromo">Selv-forfremmelse sprunget over</string>
|
||||
<string name="revanced_sb_skipped_interaction">Sprunget over irriterende påmindelse</string>
|
||||
<string name="revanced_sb_skipped_highlight">Sprunget over for at fremhæve</string>
|
||||
@@ -887,9 +936,10 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_sb_submit_failed_invalid">Kan ikke indsende segment: %s</string>
|
||||
<string name="revanced_sb_submit_failed_timeout">SponsorBlock er midlertidigt nede</string>
|
||||
<string name="revanced_sb_submit_failed_unknown_error">Kan ikke indsende segment (status: %1$d %2$s)</string>
|
||||
<string name="revanced_sb_submit_failed_rate_limit">Kan ikke indsende segment.\nRate Limited (for mange fra samme bruger eller IP)</string>
|
||||
<string name="revanced_sb_submit_failed_rate_limit">Kan ikke indsende segment. Hastighedsbegrænset (for mange fra den samme bruger eller IP-adresse)</string>
|
||||
<string name="revanced_sb_submit_failed_forbidden">Kan ikke indsende segmentet: %s</string>
|
||||
<string name="revanced_sb_submit_failed_duplicate">Kan ikke indsende segmentet.\nfindes allerede</string>
|
||||
<string name="revanced_sb_submit_failed_duplicate">"Kan ikke indsende segmentet.
|
||||
Eksisterer allerede"</string>
|
||||
<string name="revanced_sb_submit_succeeded">Segment indsendt med succes</string>
|
||||
<!-- Toast shown if network connection times out. Translations of this should not be longer than the original English or the text can be clipped and not entirely shown. -->
|
||||
<string name="revanced_sb_sponsorblock_connection_failure_timeout">SponsorBloker midlertidigt ikke tilgængelig (API-tid ud)</string>
|
||||
@@ -898,21 +948,29 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_sb_vote_failed_timeout">Kan ikke stemme på segment (API-timede ud)</string>
|
||||
<string name="revanced_sb_vote_failed_unknown_error">Kan ikke stemme på segment (status: %1$d %2$s)</string>
|
||||
<string name="revanced_sb_vote_failed_forbidden">Ikke i stand til at stemme på segmentet: %s</string>
|
||||
<string name="revanced_sb_vote_upvote">Upvote</string>
|
||||
<string name="revanced_sb_vote_downvote">Downvote</string>
|
||||
<string name="revanced_sb_vote_upvote">Op</string>
|
||||
<string name="revanced_sb_vote_downvote">Ned</string>
|
||||
<string name="revanced_sb_vote_category">Skift kategori</string>
|
||||
<string name="revanced_sb_vote_no_segments">Der er ingen segmenter at stemme for</string>
|
||||
<string name="revanced_sb_new_segment_choose_category">Vælg segmentkategori</string>
|
||||
<string name="revanced_sb_new_segment_disabled_category">Kategori er deaktiveret i indstillinger. Aktivér kategori for at indsende.</string>
|
||||
<string name="revanced_sb_new_segment_title">Nyt SponsorBlock segment</string>
|
||||
<string name="revanced_sb_new_segment_mark_time_as_question">Sæt %s som start eller afslutning af et nyt segment?</string>
|
||||
<string name="revanced_sb_new_segment_mark_start">start</string>
|
||||
<string name="revanced_sb_new_segment_mark_start">begynd</string>
|
||||
<string name="revanced_sb_new_segment_mark_end">slut</string>
|
||||
<string name="revanced_sb_new_segment_now">nu</string>
|
||||
<string name="revanced_sb_new_segment_time_start">Tidspunkt for segmentet begynder på</string>
|
||||
<string name="revanced_sb_new_segment_time_end">Tidspunkt for segmentet slutter på</string>
|
||||
<string name="revanced_sb_new_segment_confirm_title">Er tiderne korrekte?</string>
|
||||
<string name="revanced_sb_new_segment_confirm_content">Segmentet er fra\n\n%1$s\ntil\n%2$s\n\n(%3$s)\n\nKlar til at indsende?</string>
|
||||
<string name="revanced_sb_new_segment_confirm_content">"Segmentet er fra
|
||||
|
||||
%1$s
|
||||
til
|
||||
%2$s
|
||||
|
||||
(%3$s)
|
||||
|
||||
Er du klar til at indsende?"</string>
|
||||
<string name="revanced_sb_new_segment_start_is_before_end">Start skal være før slutningen</string>
|
||||
<string name="revanced_sb_new_segment_mark_locations_first">Markér to steder på tidsbjælken først</string>
|
||||
<string name="revanced_sb_new_segment_preview_segment_first">Forhåndsvisning af segmentet, og sikre, at det springer glat</string>
|
||||
@@ -951,10 +1009,14 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_sb_about_api_sum">Data leveres af SponsorBlock API. Tryk her for at få flere oplysninger og se downloads til andre platforme</string>
|
||||
</patch>
|
||||
<patch id="layout.spoofappversion.spoofAppVersionPatch">
|
||||
<string name="revanced_spoof_app_version_title">Spoof app version</string>
|
||||
<string name="revanced_spoof_app_version_summary_on">Version spoofed</string>
|
||||
<string name="revanced_spoof_app_version_title">Spoof app-version</string>
|
||||
<string name="revanced_spoof_app_version_summary_on">Version-manipulering</string>
|
||||
<string name="revanced_spoof_app_version_summary_off">Version ikke spoofed</string>
|
||||
<string name="revanced_spoof_app_version_user_dialog_message">App version vil blive spoofed til en ældre version af YouTube.\n\nDette vil ændre udseendet og funktionerne i appen, men der kan forekomme ukendte bivirkninger.\n\nHvis senere slået fra, anbefales det at rydde app-data for at forhindre UI-fejl.</string>
|
||||
<string name="revanced_spoof_app_version_user_dialog_message">"App-versionen forfalskes til en ældre version af YouTube.
|
||||
|
||||
Dette ændrer appens udseende og funktioner, men ukendte bivirkninger kan forekomme.
|
||||
|
||||
Hvis det senere slås fra, anbefales det at rydde app-dataene for at forhindre UI-fejl."</string>
|
||||
<!-- It is ideal, but not required, if the text here appears is alphabetically after the text used for 'revanced_spoof_app_version_title'.
|
||||
This is because the 'General layout' menu uses alphabetic sorting, and it functionally works better if the spoof target selector appears below the 'Spoof app version' UI switch -->
|
||||
<string name="revanced_spoof_app_version_target_title">Spoof app version mål</string>
|
||||
@@ -985,9 +1047,22 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
</patch>
|
||||
<patch id="layout.startupshortsreset.disableResumingShortsOnStartupPatch">
|
||||
<string name="revanced_disable_resuming_shorts_player_title">Deaktivér genoptagelse af Shorts spiller</string>
|
||||
<string name="revanced_disable_resuming_shorts_player_summary_on">Shorts-afspilleren genoptages ikke ved app-start</string>
|
||||
<string name="revanced_disable_resuming_shorts_player_summary_off">Kortspilleren vil genoptage ved app-opstart</string>
|
||||
</patch>
|
||||
<patch id="layout.shortsplayer.shortsPlayerTypePatch">
|
||||
<string name="revanced_shorts_player_type_title">Åbne Shorts med</string>
|
||||
<string name="revanced_shorts_player_type_shorts">Shorts-afspiller</string>
|
||||
<string name="revanced_shorts_player_type_regular_player">Standardafspiller</string>
|
||||
<string name="revanced_shorts_player_type_regular_player_fullscreen">Standardafspiller i fuld skærm</string>
|
||||
</patch>
|
||||
<patch id="layout.shortsautoplay.shortsAutoplayPatch">
|
||||
<string name="revanced_shorts_autoplay_title">Automatisk afspilning af Shorts</string>
|
||||
<string name="revanced_shorts_autoplay_summary_on">Shorts afspilles automatisk</string>
|
||||
<string name="revanced_shorts_autoplay_summary_off">Shorts gentages</string>
|
||||
<string name="revanced_shorts_autoplay_background_title">Automatisk afspilning af Shorts i baggrunden</string>
|
||||
<string name="revanced_shorts_autoplay_background_summary_on">Shorts i baggrunden afspilles automatisk</string>
|
||||
<string name="revanced_shorts_autoplay_background_summary_off">Shorts i baggrunden gentages</string>
|
||||
</patch>
|
||||
<patch id="layout.tablet.enableTabletLayoutPatch">
|
||||
<string name="revanced_tablet_layout_title">Aktivér tabletlayout</string>
|
||||
@@ -996,11 +1071,11 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_tablet_layout_user_dialog_message">Fællesskabsindlæg vises ikke på tabletlayouts</string>
|
||||
</patch>
|
||||
<patch id="layout.miniplayer.miniplayerPatch">
|
||||
<string name="revanced_miniplayer_screen_title">Miniplayer</string>
|
||||
<string name="revanced_miniplayer_screen_title">Mini-afspiller</string>
|
||||
<string name="revanced_miniplayer_screen_summary">Ændre stilen for den i app minimeret afspiller</string>
|
||||
<string name="revanced_miniplayer_type_title">Type af miniplayer</string>
|
||||
<string name="revanced_miniplayer_type_entry_0">Deaktiveret</string>
|
||||
<string name="revanced_miniplayer_type_entry_1">Oprindelig</string>
|
||||
<string name="revanced_miniplayer_type_entry_1">Standard</string>
|
||||
<string name="revanced_miniplayer_type_entry_2">Minimal</string>
|
||||
<string name="revanced_miniplayer_type_entry_3">Tablet</string>
|
||||
<string name="revanced_miniplayer_type_entry_4">Moderne 1</string>
|
||||
@@ -1010,19 +1085,28 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_miniplayer_rounded_corners_summary_on">Hjørner er afrundede</string>
|
||||
<string name="revanced_miniplayer_rounded_corners_summary_off">Hjørner er firkantede</string>
|
||||
<string name="revanced_miniplayer_double_tap_action_title">Aktiver dobbelttryk og klemme for at ændre størrelse</string>
|
||||
<string name="revanced_miniplayer_double_tap_action_summary_on">Dobbelttryk handling og klemme for at ændre størrelse er aktiveret\n\n• Dobbelttryk for at øge miniplayer størrelse\n• Dobbelttryk igen for at gendanne original størrelse</string>
|
||||
<string name="revanced_miniplayer_double_tap_action_summary_on">"Dobbelttrykshandling og knib for at ændre størrelse er aktiveret
|
||||
|
||||
● Dobbelttryk for at øge miniafspillerstørrelsen
|
||||
● Dobbelttryk igen for at gendanne den oprindelige størrelse"</string>
|
||||
<string name="revanced_miniplayer_double_tap_action_summary_off">Dobbelttryk handling og klemme for at ændre størrelse er deaktiveret</string>
|
||||
<string name="revanced_miniplayer_drag_and_drop_title">Aktiver træk og slip</string>
|
||||
<string name="revanced_miniplayer_drag_and_drop_summary_on">Træk og slip er aktiveret\n\nMiniplayer kan trækkes til ethvert hjørne af skærmen</string>
|
||||
<string name="revanced_miniplayer_drag_and_drop_summary_on">"Træk og slip er aktiveret
|
||||
|
||||
Miniafspiller kan trækkes til et hvilket som helst hjørne af skærmen"</string>
|
||||
<string name="revanced_miniplayer_drag_and_drop_summary_off">Træk og slip er deaktiveret</string>
|
||||
<string name="revanced_miniplayer_horizontal_drag_title">Aktiver vandret træk-bevægelse</string>
|
||||
<string name="revanced_miniplayer_horizontal_drag_summary_on">Vandret træk gestus aktiveret\n\nMiniplayer kan trækkes fra skærmen til venstre eller højre</string>
|
||||
<string name="revanced_miniplayer_horizontal_drag_summary_on">"Vandret træk-bevægelse aktiveret
|
||||
|
||||
Miniafspiller kan trækkes ud over skærmen til venstre eller højre"</string>
|
||||
<string name="revanced_miniplayer_horizontal_drag_summary_off">Vandret trækbevægelse deaktiveret</string>
|
||||
<string name="revanced_miniplayer_hide_expand_close_title">Skjul lukkeknap</string>
|
||||
<string name="revanced_miniplayer_hide_expand_close_summary_on">Luk knappen er skjult</string>
|
||||
<string name="revanced_miniplayer_hide_expand_close_summary_off">Luk knappen vises</string>
|
||||
<string name="revanced_miniplayer_hide_expand_close_legacy_title">Skjul udvid og luk knapper</string>
|
||||
<string name="revanced_miniplayer_hide_expand_close_legacy_summary_on">Knapper er skjult\n\nStryg for at udvide eller lukke</string>
|
||||
<string name="revanced_miniplayer_hide_expand_close_legacy_summary_on">"Knapper er skjult
|
||||
|
||||
Stryg for at udvide eller lukke"</string>
|
||||
<string name="revanced_miniplayer_hide_expand_close_legacy_summary_off">Udvid og luk knapper vises</string>
|
||||
<string name="revanced_miniplayer_hide_subtext_title">Skjul undertekster</string>
|
||||
<string name="revanced_miniplayer_hide_subtext_summary_on">Undertekster er skjult</string>
|
||||
@@ -1053,7 +1137,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<patch id="layout.thumbnails.bypassImageRegionRestrictionsPatch">
|
||||
<string name="revanced_bypass_image_region_restrictions_title">Bypass billede region restriktioner</string>
|
||||
<string name="revanced_bypass_image_region_restrictions_summary_on">Bruger billedvært yt4.ggpht.com</string>
|
||||
<string name="revanced_bypass_image_region_restrictions_summary_off">Brug af original billedvært\n\nAktivering af dette kan rette manglende billeder, der er blokeret i nogle regioner</string>
|
||||
<string name="revanced_bypass_image_region_restrictions_summary_off">"Bruger original billedevært
|
||||
|
||||
Aktivering af dette kan løse manglende billeder, der er blokeret i nogle regioner"</string>
|
||||
</patch>
|
||||
<patch id="layout.thumbnails.alternativeThumbnailsPatch">
|
||||
<!-- 'Home' should be translated using the same localized wording YouTube displays for the home tab. -->
|
||||
@@ -1064,15 +1150,19 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_alt_thumbnail_library_title">Dig fane</string>
|
||||
<string name="revanced_alt_thumbnail_player_title">Afspiller afspilningslister, anbefalinger</string>
|
||||
<string name="revanced_alt_thumbnail_search_title">Søgeresultater</string>
|
||||
<string name="revanced_alt_thumbnail_options_entry_1">Original thumbnails</string>
|
||||
<string name="revanced_alt_thumbnail_options_entry_1">Originale miniaturebilleder</string>
|
||||
<string name="revanced_alt_thumbnail_options_entry_2">DeArrow & Originale miniaturer</string>
|
||||
<string name="revanced_alt_thumbnail_options_entry_3">DeArrow & stadig fanger</string>
|
||||
<string name="revanced_alt_thumbnail_options_entry_4">Fangster stadig</string>
|
||||
<string name="revanced_alt_thumbnail_dearrow_about_summary">DeArrow giver crowd-sourcede miniaturer til YouTube-videoer. Disse miniaturer er ofte mere relevante end dem, YouTube\n\nHvis aktiveret, video URL\'er vil blive sendt til API-serveren og ingen andre data bliver sendt. Hvis en video ikke har miniaturer til DeArrow, så er de originale eller stadig optagelser vist\n\nTryk her for at få mere at vide om DeArrow</string>
|
||||
<string name="revanced_alt_thumbnail_dearrow_about_summary">"DeArrow leverer crowdsourcede miniaturebilleder til YouTube-videoer. Disse miniaturebilleder er ofte mere relevante end dem, der er tilgængelige fra YouTube
|
||||
|
||||
Hvis aktiveret, sendes videolinks til API-serveren, og ingen andre data sendes. Hvis en video ikke har DeArrow-miniaturebilleder, vises de originale eller stillbilleder
|
||||
|
||||
Tryk her for at lære mere om DeArrow"</string>
|
||||
<string name="revanced_alt_thumbnail_dearrow_connection_toast_title">Vis en toast hvis API ikke er tilgængelig</string>
|
||||
<string name="revanced_alt_thumbnail_dearrow_connection_toast_summary_on">Toast vises hvis DeArrow ikke er tilgængelig</string>
|
||||
<string name="revanced_alt_thumbnail_dearrow_connection_toast_summary_off">Toast er ikke vist hvis DeArrow ikke er tilgængelig</string>
|
||||
<string name="revanced_alt_thumbnail_dearrow_api_url_title">DeArrow API endpoint</string>
|
||||
<string name="revanced_alt_thumbnail_dearrow_api_url_title">DeArrow API-slutpunkt</string>
|
||||
<string name="revanced_alt_thumbnail_dearrow_api_url_summary">Webadressen på DeArrow thumbnail cache endpoint</string>
|
||||
<string name="revanced_alt_thumbnail_stills_about_title">Stadig video indfanger</string>
|
||||
<string name="revanced_alt_thumbnail_stills_about_summary">Stadig optagelser er taget fra begyndelsen / midten / slutningen af hver video. Disse billeder er indbygget i YouTube og ingen ekstern API bruges</string>
|
||||
@@ -1107,8 +1197,12 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
</patch>
|
||||
<patch id="misc.dimensions.spoof.spoofDeviceDimensionsPatch">
|
||||
<string name="revanced_spoof_device_dimensions_title">Spoof enhedens dimensioner</string>
|
||||
<string name="revanced_spoof_device_dimensions_summary_on">Enhedsmål spoofed\n\nHøjere video kvaliteter kan låses op, men du kan opleve videoafspilning stuttering, værre batterilevetid og ukendte bivirkninger</string>
|
||||
<string name="revanced_spoof_device_dimensions_summary_off">Enheds dimensioner ikke forfalsket\n\nAktivering af dette kan låse op for højere videokvaliteter</string>
|
||||
<string name="revanced_spoof_device_dimensions_summary_on">"Enhedens dimensioner er forfalsket
|
||||
|
||||
Højere videokvalitet kan låses op, men du kan opleve videoafspilningshakkethed, dårligere batterilevetid og ukendte bivirkninger"</string>
|
||||
<string name="revanced_spoof_device_dimensions_summary_off">"Enhedens dimensioner forfalskes ikke
|
||||
|
||||
Aktivering af dette kan låse op for højere videokvalitet"</string>
|
||||
<string name="revanced_spoof_device_dimensions_user_dialog_message">Aktivering af dette kan forårsage videoafspilning stuttering, værre batterilevetid og ukendte bivirkninger.</string>
|
||||
</patch>
|
||||
<patch id="misc.gms.gmsCoreSupportResourcePatch">
|
||||
@@ -1135,6 +1229,11 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_disable_zoom_haptics_summary_on">Haptics er deaktiveret</string>
|
||||
<string name="revanced_disable_zoom_haptics_summary_off">Haptics er aktiveret</string>
|
||||
</patch>
|
||||
<patch id="video.audio.forceOriginalAudioPatch">
|
||||
<string name="revanced_force_original_audio_title">Tving original lyd</string>
|
||||
<string name="revanced_force_original_audio_summary_on">Brug original lyd</string>
|
||||
<string name="revanced_force_original_audio_summary_off">Brug standard lyd</string>
|
||||
</patch>
|
||||
<patch id="video.quality.rememberVideoQualityPatch">
|
||||
<!-- Translations should use the same text as revanced_custom_playback_speeds_auto -->
|
||||
<string name="revanced_video_quality_default_entry_1">Automatisk</string>
|
||||
@@ -1144,7 +1243,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_video_quality_default_wifi_title">Standard videokvalitet på Wi-Fi-netværk</string>
|
||||
<string name="revanced_video_quality_default_mobile_title">Standard videokvalitet på mobilnetværk</string>
|
||||
<string name="revanced_remember_video_quality_mobile">mobil</string>
|
||||
<string name="revanced_remember_video_quality_wifi">wifi</string>
|
||||
<string name="revanced_remember_video_quality_wifi">Wi-Fi</string>
|
||||
<string name="revanced_remember_video_quality_toast">Ændrede standard %1$s kvalitet til: %2$s</string>
|
||||
</patch>
|
||||
<patch id="video.speed.button.playbackSpeedButtonPatch">
|
||||
@@ -1158,8 +1257,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_custom_speed_menu_summary_off">Brugerdefineret hastighedsmenu vises ikke</string>
|
||||
<string name="revanced_custom_playback_speeds_title">Tilpasset afspilningshastighed</string>
|
||||
<string name="revanced_custom_playback_speeds_summary">Tilføj eller ændr den brugerdefinerede afspilningshastighed</string>
|
||||
<string name="revanced_custom_playback_speeds_invalid">Brugerdefinerede hastigheder skal være mindre end %s. Bruger standardværdier.</string>
|
||||
<string name="revanced_custom_playback_speeds_parse_exception">Ugyldig brugerdefineret afspilningshastighed. Brug af standardværdier.</string>
|
||||
<string name="revanced_custom_playback_speeds_invalid">Brugerdefinerede hastigheder skal være mindre end %s</string>
|
||||
<string name="revanced_custom_playback_speeds_parse_exception">Ugyldige brugerdefinerede afspilningshastigheder</string>
|
||||
<string name="revanced_custom_playback_speeds_auto">Automatisk</string>
|
||||
</patch>
|
||||
<patch id="video.speed.remember.rememberPlaybackSpeedPatch">
|
||||
@@ -1180,23 +1279,29 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_slide_to_seek_summary_off">Dias til søgning er ikke aktiveret</string>
|
||||
</patch>
|
||||
<patch id="misc.fix.playback.spoofVideoStreamsPatch">
|
||||
<string name="revanced_spoof_video_streams_screen_title">Spoof video streams</string>
|
||||
<string name="revanced_spoof_video_streams_screen_title">Spoof videostreams</string>
|
||||
<string name="revanced_spoof_video_streams_screen_summary">Spoof klienten video streams for at forhindre afspilning problemer</string>
|
||||
<string name="revanced_spoof_video_streams_title">Spoof video streams</string>
|
||||
<string name="revanced_spoof_video_streams_title">Spoof videostreams</string>
|
||||
<string name="revanced_spoof_video_streams_summary_on">Video streams er spoofed</string>
|
||||
<string name="revanced_spoof_video_streams_summary_off">Videostreams er ikke forfalskede\n\nVideoafspilning fungerer muligvis ikke</string>
|
||||
<string name="revanced_spoof_video_streams_summary_off">"Videostreams forfalskes ikke
|
||||
|
||||
Videoafspilning virker muligvis ikke"</string>
|
||||
<string name="revanced_spoof_video_streams_user_dialog_message">At slå denne indstilling fra kan forårsage problemer med videoafspilning.</string>
|
||||
<string name="revanced_spoof_video_streams_client_title">Standard klient</string>
|
||||
<string name="revanced_spoof_video_streams_ios_force_avc_title">Gennemtving AVC (H.264)</string>
|
||||
<string name="revanced_spoof_video_streams_ios_force_avc_summary_on">Video-codec er tvunget til AVC (H.264)</string>
|
||||
<string name="revanced_spoof_video_streams_ios_force_avc_summary_off">Video-codec bestemmes automatisk</string>
|
||||
<string name="revanced_spoof_video_streams_ios_force_avc_user_dialog_message">Aktivering af dette kan forbedre batteriets levetid og rette afspilningsstuttering.\n\nAVC har en maksimal opløsning på 1080p, Opus audio codec er ikke tilgængelig, og videoafspilning vil bruge flere internetdata end VP9 eller AV1.</string>
|
||||
<string name="revanced_spoof_video_streams_ios_force_avc_user_dialog_message">"Aktivering af dette kan forbedre batterilevetiden og løse afspilningshakkethed.
|
||||
|
||||
AVC har en maksimal opløsning på 1080p, Opus lydcodec er ikke tilgængelig, og videoafspilning bruger mere internetdata end VP9 eller AV1."</string>
|
||||
<string name="revanced_spoof_video_streams_about_ios_title">iOS forfalskning bivirkninger</string>
|
||||
<string name="revanced_spoof_video_streams_about_ios_summary">• Private børn videoer kan ikke afspille\n• Livestreams starter fra begyndelsen\n• Videoer kan ende 1 sekund tidlig</string>
|
||||
<string name="revanced_spoof_video_streams_about_ios_summary">"• Private børnevideoer kan muligvis ikke afspilles
|
||||
• Videoer slutter 1 sekund før"</string>
|
||||
<string name="revanced_spoof_video_streams_about_android_vr_title">Android VR spoofing bivirkninger</string>
|
||||
<string name="revanced_spoof_video_streams_about_android_vr_summary">• Kids videoer afspiller muligvis ikke\n• Menuen for lydspor mangler\n• Stabil lydstyrke er ikke tilgængelig</string>
|
||||
<string name="revanced_spoof_video_streams_language_">Video streams er spoofed</string>
|
||||
<string name="revanced_spoof_video_streams_language_title">Foretrukket lyd-stream sprog</string>
|
||||
<string name="revanced_spoof_video_streams_about_android_vr_summary">"• Børnevideoer kan ikke afspilles
|
||||
• Livestreams starter fra begyndelsen
|
||||
• Videoer slutter 1 sekund tidligere"</string>
|
||||
<string name="revanced_spoof_video_streams_language_title">Standard lyd-stream sprog</string>
|
||||
<string name="revanced_spoof_video_streams_language_DEFAULT">App sprog</string>
|
||||
<string name="revanced_spoof_video_streams_language_AR">Arabisk</string>
|
||||
<string name="revanced_spoof_video_streams_language_AZ">Aserbajdsjansk</string>
|
||||
@@ -1220,15 +1325,15 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_spoof_video_streams_language_ID">Indonesisk</string>
|
||||
<string name="revanced_spoof_video_streams_language_IT">Italiensk</string>
|
||||
<string name="revanced_spoof_video_streams_language_JA">Japansk</string>
|
||||
<string name="revanced_spoof_video_streams_language_KK">Kazakh</string>
|
||||
<string name="revanced_spoof_video_streams_language_KK">Kasakhisk</string>
|
||||
<string name="revanced_spoof_video_streams_language_KO">Koreansk</string>
|
||||
<string name="revanced_spoof_video_streams_language_LT">Litauisk</string>
|
||||
<string name="revanced_spoof_video_streams_language_LV">Lettisk</string>
|
||||
<string name="revanced_spoof_video_streams_language_MK">Makedonsk</string>
|
||||
<string name="revanced_spoof_video_streams_language_MN">Mongolsk</string>
|
||||
<string name="revanced_spoof_video_streams_language_MR">Marathi</string>
|
||||
<string name="revanced_spoof_video_streams_language_MR">Marathisk</string>
|
||||
<string name="revanced_spoof_video_streams_language_MS">Malaysisk</string>
|
||||
<string name="revanced_spoof_video_streams_language_MY">Burmese</string>
|
||||
<string name="revanced_spoof_video_streams_language_MY">Burmesisk</string>
|
||||
<string name="revanced_spoof_video_streams_language_NL">Hollandsk</string>
|
||||
<string name="revanced_spoof_video_streams_language_OR">Odia</string>
|
||||
<string name="revanced_spoof_video_streams_language_PA">Punjabi</string>
|
||||
@@ -1238,7 +1343,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_spoof_video_streams_language_RO">Rumænsk</string>
|
||||
<string name="revanced_spoof_video_streams_language_RU">Russisk</string>
|
||||
<string name="revanced_spoof_video_streams_language_SK">Slovakisk</string>
|
||||
<string name="revanced_spoof_video_streams_language_SL">Slovene</string>
|
||||
<string name="revanced_spoof_video_streams_language_SL">Slovensk</string>
|
||||
<string name="revanced_spoof_video_streams_language_SR">Serbisk</string>
|
||||
<string name="revanced_spoof_video_streams_language_SV">Svensk</string>
|
||||
<string name="revanced_spoof_video_streams_language_SW">Swahili</string>
|
||||
@@ -1248,7 +1353,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_spoof_video_streams_language_TR">Tyrkisk</string>
|
||||
<string name="revanced_spoof_video_streams_language_UK">Ukrainsk</string>
|
||||
<string name="revanced_spoof_video_streams_language_UR">Urdu</string>
|
||||
<string name="revanced_spoof_video_streams_language_VI">Vietnamese</string>
|
||||
<string name="revanced_spoof_video_streams_language_VI">Vietnamesisk</string>
|
||||
<string name="revanced_spoof_video_streams_language_ZH">Kinesisk</string>
|
||||
</patch>
|
||||
</app>
|
||||
@@ -1259,12 +1364,12 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_block_audio_ads_summary_off">Lydannoncer er ublokeret</string>
|
||||
</patch>
|
||||
<patch id="ad.embedded.embeddedAdsPatch">
|
||||
<string name="revanced_embedded_ads_service_unavailable">%s er ikke tilgængelig. Annoncer kan vises. Prøv at skifte til en anden annonceblok tjeneste i indstillinger.</string>
|
||||
<string name="revanced_embedded_ads_service_failed">%s server returnerede en fejl. Annoncer kan vises. Prøv at skifte til en anden annonceblok tjeneste i indstillinger.</string>
|
||||
<string name="revanced_embedded_ads_service_unavailable">%s er ikke tilgængelig, annoncer vises muligvis. Prøv at skifte annonceblokeringstjeneste i indstillinger.</string>
|
||||
<string name="revanced_embedded_ads_service_failed">%s returnerede en fejl, annoncer vises muligvis. Prøv at skifte annonceblokeringstjeneste i indstillinger.</string>
|
||||
<string name="revanced_block_embedded_ads_title">Bloker indlejrede videoannoncer</string>
|
||||
<string name="revanced_block_embedded_ads_entry_1">Deaktiveret</string>
|
||||
<string name="revanced_block_embedded_ads_entry_2">Lysende proxy</string>
|
||||
<string name="revanced_block_embedded_ads_entry_3">PurpleAdBlock proxy</string>
|
||||
<string name="revanced_block_embedded_ads_entry_3">PurpleAdBlock-proxy</string>
|
||||
</patch>
|
||||
<patch id="ad.video.videoAdsPatch">
|
||||
<string name="revanced_block_video_ads_title">Blokér videoannoncer</string>
|
||||
|
||||
@@ -1,34 +1,23 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
|
||||
Note: All strings must have a unique path, even if the same string is declared in two different apps.
|
||||
This is because Crowdin requires temporarily flattening this file and removing the <app> and <patch> elements.
|
||||
All strings must have a unique path, even if the same string is declared in two different apps.
|
||||
This is because Crowdin requires temporarily flattening this file and removing the <app> and <patch> elements.
|
||||
|
||||
# General guidelines and information for translating
|
||||
|
||||
## Strings parameters can be reordered to allow more flexible translations if the grammar should be changed.
|
||||
Strings with new lines must be raw strings where they're wrapped in quotes and new lines are not encoded.
|
||||
Raw strings still requires escaping embedded double quotes but escaping embedded single quotes is optional.
|
||||
|
||||
For example, the patches string:
|
||||
<string name="revanced_patches_string">You will arrive at %1$s in %2$s hours from now</string>
|
||||
Could be translated to another language using a rearranged grammar:
|
||||
<string name="revanced_patches_string">You will arrive %2$s hours from now at %1$s</string>
|
||||
Raw strings are required because Crowdin AI translations regularly gets confused and
|
||||
replace \n with an encoded new line character.
|
||||
|
||||
For Manager strings:
|
||||
You will arrive at ${destination} in ${count} hours from now
|
||||
Could be rearranged by changing the order of the ${} parameters:
|
||||
You will arrive ${count} hours from now at ${destination}
|
||||
Bad:
|
||||
<string name="summary_key">First \'item\' text\nSecond \"item\" text</string>
|
||||
|
||||
Reordering is particularly relevant when translating into right to left languages, or for any language with grammar that is noticeably different from English.
|
||||
Good:
|
||||
<string name="summary_key">"First 'item' text
|
||||
Second \"item\" text"</string>
|
||||
|
||||
## Single and double quotation marks must be escaped for patch strings (Manager does not require escaping any quotes).
|
||||
|
||||
All _patches_ single and double quotation marks must be escaped as \" or \'
|
||||
Forgetting to do this will cause that string to appear in app with no quotation characters.
|
||||
|
||||
Correct:
|
||||
<string name="revanced_string">You\'re correct. This is the \"correct\" way and this text will appear as expected in the app</string>
|
||||
Not correct:
|
||||
<string name="revanced_string">You're not correct. This is not the "correct" way and this text will not appear as expected the in app</string>
|
||||
-->
|
||||
<resources>
|
||||
<app id="shared">
|
||||
@@ -68,9 +57,13 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<!-- Translations of this should not be longer than the original English text, otherwise the text can be clipped and not entirely shown. -->
|
||||
<string name="gms_core_toast_not_installed_message">MicroG GmsCore ist nicht installiert. Installiers.</string>
|
||||
<string name="gms_core_dialog_title">Aktion notwendig</string>
|
||||
<string name="gms_core_dialog_not_whitelisted_not_allowed_in_background_message">MicroG GmsCore hat keine Berechtigung im Hintergrund zu laufen.\n\nFolge dem Leitfaden \"Don\'t kill my app\" für dein Telefon und wende die Anweisungen auf deine MicroG-Installation an.\n\nDies ist erforderlich, damit die App funktioniert.</string>
|
||||
<string name="gms_core_dialog_not_whitelisted_not_allowed_in_background_message">"MicroG GmsCore hat keine Berechtigung, im Hintergrund zu laufen.
|
||||
Folgen Sie der Anleitung \"Meine App nicht beenden\" für Ihr Telefon und wenden Sie die Anweisungen auf Ihre MicroG-Installation an.
|
||||
Dies ist erforderlich, damit die App funktioniert."</string>
|
||||
<string name="gms_core_dialog_open_website_text">Webseite öffnen</string>
|
||||
<string name="gms_core_dialog_not_whitelisted_using_battery_optimizations_message">MicroG GmsCore Batterieoptimierungen müssen deaktiviert werden, um Probleme zu vermeiden.\n\nTippe auf den Weiter-Button und deaktiviere die Batterieoptimierung.</string>
|
||||
<string name="gms_core_dialog_not_whitelisted_using_battery_optimizations_message">"Die Batterieoptimierung von MicroG GmsCore muss deaktiviert werden, um Probleme zu vermeiden.
|
||||
Die Deaktivierung der Batterieoptimierung für MicroG hat keinen negativen Einfluss auf den Batterieverbrauch.
|
||||
Tippen Sie auf die Schaltfläche \"Fortfahren\" und erlauben Sie die Optimierungsänderungen."</string>
|
||||
<string name="gms_core_dialog_continue_text">Weiter</string>
|
||||
</patch>
|
||||
</app>
|
||||
@@ -82,6 +75,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_settings_screen_03_feed_title">Feed</string>
|
||||
<string name="revanced_settings_screen_04_player_title">Player</string>
|
||||
<string name="revanced_settings_screen_05_general_title">Generelles Layout</string>
|
||||
<string name="revanced_settings_screen_06_shorts_title">Shorts</string>
|
||||
<string name="revanced_settings_screen_07_seekbar_title">Suchleiste</string>
|
||||
<string name="revanced_settings_screen_08_swipe_controls_title">Wischgesten</string>
|
||||
<string name="revanced_settings_screen_11_misc_title">Sonstiges</string>
|
||||
@@ -107,7 +101,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_debug_toast_on_error_title">Toast bei ReVanced Fehler anzeigen</string>
|
||||
<string name="revanced_debug_toast_on_error_summary_on">Toast wird angezeigt, wenn ein Fehler auftritt</string>
|
||||
<string name="revanced_debug_toast_on_error_summary_off">Toast wird nicht angezeigt, wenn ein Fehler auftritt</string>
|
||||
<string name="revanced_debug_toast_on_error_user_dialog_message">Das Deaktivieren von Fehlertoasts verbirgt alle ReVanced Fehlerbenachrichtigungen.\n\nDu wirst nicht über unerwartete Ereignisse benachrichtigt.</string>
|
||||
<string name="revanced_debug_toast_on_error_user_dialog_message">"Das Ausschalten von Fehler-Toasts blendet alle Benachrichtigungen über Fehler in ReVanced aus.
|
||||
Sie werden nicht über unerwartete Ereignisse informiert."</string>
|
||||
</patch>
|
||||
<patch id="layout.hide.general.hideLayoutComponentsPatch">
|
||||
<string name="revanced_disable_like_subscribe_glow_title">Deaktiviere das Like / Abonnieren Button aufleuchten</string>
|
||||
@@ -126,7 +121,12 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_hide_channel_watermark_summary_on">Wasserzeichen ist ausgeblendet</string>
|
||||
<string name="revanced_hide_channel_watermark_summary_off">Wasserzeichen wird angezeigt</string>
|
||||
<string name="revanced_hide_horizontal_shelves_title">Horizontale Reihe ausblenden</string>
|
||||
<string name="revanced_hide_horizontal_shelves_summary_on">Videoreihen sind ausgeblendet, zum Beispiel:\n•Eilmeldungen\n• Fortsetzen\n• weitere Kanäle erkunden\n• Einkaufen\n• gesehenes wiederholen</string>
|
||||
<string name="revanced_hide_horizontal_shelves_summary_on">"Regale sind ausgeblendet, wie z. B.:
|
||||
• Eilmeldungen
|
||||
• Weiterschauen
|
||||
• Weitere Kanäle erkunden
|
||||
• Shopping
|
||||
• Nochmal ansehen"</string>
|
||||
<string name="revanced_hide_horizontal_shelves_summary_off">Reihen werden angezeigt</string>
|
||||
<!-- 'Join' should be translated using the same localized wording YouTube displays.
|
||||
This appears in the video player for certain videos. -->
|
||||
@@ -154,9 +154,6 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_hide_timed_reactions_title">Zeitliche Reaktionen ausblenden</string>
|
||||
<string name="revanced_hide_timed_reactions_summary_on">Zeitgesteuerte Reaktionen sind ausgeblendet</string>
|
||||
<string name="revanced_hide_timed_reactions_summary_off">Zeitgesteuerte Reaktionen werden angezeigt</string>
|
||||
<string name="revanced_hide_search_result_shelf_header_title">Suchergebnis Reihen-Kopfzeile ausblenden</string>
|
||||
<string name="revanced_hide_search_result_shelf_header_summary_on">Reihen-Kopfzeile ist ausgeblendet</string>
|
||||
<string name="revanced_hide_search_result_shelf_header_summary_off">Reihen-Kopfzeile wird angezeigt</string>
|
||||
<string name="revanced_hide_channel_guidelines_title">Kanalrichtlinien ausblenden</string>
|
||||
<string name="revanced_hide_channel_guidelines_summary_on">Kanal-Richtlinien sind ausgeblendet</string>
|
||||
<string name="revanced_hide_channel_guidelines_summary_off">Kanalrichtlinien werden angezeigt</string>
|
||||
@@ -253,6 +250,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_hide_filter_bar_feed_in_related_videos_summary_off">In verwandten Videos angezeigt</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_hide_comments_chat_summary_title">\'Chat-Zusammenfassung\' ausblenden </string>
|
||||
<string name="revanced_hide_comments_chat_summary_summary_on">\'Chat-Übersichtsanzeige\' ist ausgeblendet</string>
|
||||
<string name="revanced_hide_comments_chat_summary_summary_off">\'Chat-Übersichtsanzeige\' wird angezeigt</string>
|
||||
<string name="revanced_hide_comments_by_members_header_title">\'Kommentare von Mitglieder\' im Kopfbereich ausblenden</string>
|
||||
<string name="revanced_hide_comments_by_members_header_summary_on">\'Kommentare von Mitglieder\' Header ist ausgeblendet</string>
|
||||
<string name="revanced_hide_comments_by_members_header_summary_off">\'Kommentare von Mitgliedern\' wird angezeigt</string>
|
||||
@@ -275,7 +275,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_hide_doodles_title">YouTube Doodles ausblenden</string>
|
||||
<string name="revanced_hide_doodles_summary_on">Suchleiste Doodles sind versteckt</string>
|
||||
<string name="revanced_hide_doodles_summary_off">Suchleiste Doodles werden angezeigt</string>
|
||||
<string name="revanced_hide_doodles_user_dialog_message">YouTube Doodles erscheinen jedes Jahr ein paar Tage.\n\nWenn ein Doodle in deiner Region angezeigt wird und diese Versteckeinstellung aktiviert ist dann wird auch die Filterleiste unterhalb der Suchleiste ausgeblendet.</string>
|
||||
<string name="revanced_hide_doodles_user_dialog_message">"YouTube-Doodles werden ein paar Tage im Jahr angezeigt.
|
||||
Wenn ein Doodle zurzeit in Ihrer Region angezeigt wird und diese Einstellung zum Ausblenden aktiviert ist, wird auch die Filterleiste unterhalb der Suchleiste ausgeblendet."</string>
|
||||
<string name="revanced_custom_filter_screen_title">Eigener Filter</string>
|
||||
<string name="revanced_custom_filter_screen_summary">Komponenten mit benutzerdefinierten Filtern ausblenden</string>
|
||||
<string name="revanced_custom_filter_title">Eigenen Filter aktivieren</string>
|
||||
@@ -299,9 +300,18 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_hide_keyword_content_phrases_title">Zu versteckende Stichwörter</string>
|
||||
<!-- For localization it is preferred, but not required, if 'LeBlanc' is replaced with a localized name or a familiar word that has upper case letters in the middle of the word.
|
||||
This is because keywords can be in any language, and showing an example in the localized script helps convey this. -->
|
||||
<string name="revanced_hide_keyword_content_phrases_summary">Stichwörter und zu versteckende Phrasen durch neue Zeilen\n\ngetrennte Schlüsselwörter können Kanalnamen oder beliebiger Text sein, der in den Videotiteln\n\nWörter mit Großbuchstaben in der Mitte angezeigt werden muss mit dem Gehäuse eingegeben werden (z.B. iPhone, TikTok, LeBlanc)</string>
|
||||
<string name="revanced_hide_keyword_content_phrases_summary">"Stichwörter und Ausdrücke, die ausgeblendet werden sollen, durch neue Zeilen getrennt
|
||||
|
||||
Stichwörter können Kanalnamen oder alle Texte sein, die in Videobeschreibungen angezeigt werden
|
||||
|
||||
Wörter mit Großbuchstaben in der Mitte müssen mit der Groß- und Kleinschreibung eingegeben werden (z. B.: iPhone, TikTok, LeBlanc)"</string>
|
||||
<string name="revanced_hide_keyword_content_about_title">Über Keyword-Filterung</string>
|
||||
<string name="revanced_hide_keyword_content_about_summary">Home/Abonnement/Suchergebnisse werden gefiltert, um Inhalte zu verstecken, die den Schlüsselwörtern\n\nBeschränkungen\nentsprechen • Shorts können nicht mit dem Kanalnamen\nversteckt werden • Einige UI-Komponenten können nicht versteckt werden\n• Suche nach einem Stichwort kann keine Ergebnisse zeigen</string>
|
||||
<string name="revanced_hide_keyword_content_about_summary">"Startseite/Abonnements/Suchergebnisse werden gefiltert, um Inhalte auszublenden, die mit Stichwortphrasen übereinstimmen
|
||||
|
||||
Einschränkungen
|
||||
• Shorts können nicht nach Kanalnamen ausgeblendet werden
|
||||
• Einige UI-Komponenten können nicht ausgeblendet werden
|
||||
• Die Suche nach einem Stichwort kann zu keinen Ergebnissen führen"</string>
|
||||
<string name="revanced_hide_keyword_content_about_whole_words_title">Ganze Wörter abgleichen</string>
|
||||
<!-- Translations _must_ use a localized example. For languages that do not use spaces between words (Chinese, Japanese, etc) the English AI example should be used since no localized examples exist. Or if using machine translations, or if nobody wants to think of a localized example, then the English 'ai' example should be left as-is. -->
|
||||
<string name="revanced_hide_keyword_content_about_whole_words_summary">Durch das Umschließen mit doppelten Anführungszeichen wird verhindert, dass teilweise Videotitel und Kanalnamen<br><br><br><b>\"ai\"</b> wird das Video ausblenden: <b>How does AI work?</b><br>aber nicht versteckt: <b>What does fair use mean?</b></string>
|
||||
@@ -317,7 +327,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_hide_general_ads_summary_on">Allgemeine Anzeigen sind ausgeblendet</string>
|
||||
<string name="revanced_hide_general_ads_summary_off">Allgemeine Anzeigen werden angezeigt</string>
|
||||
<string name="revanced_hide_fullscreen_ads_title">Vollbild-Werbung ausblenden</string>
|
||||
<string name="revanced_hide_fullscreen_ads_summary_on">Vollbild-Anzeigen sind ausgeblendet\n\nDiese Funktion ist nur für ältere Geräte verfügbar</string>
|
||||
<string name="revanced_hide_fullscreen_ads_summary_on">"Vollbildwerbung wird ausgeblendet
|
||||
|
||||
Diese Funktion ist nur für ältere Geräte verfügbar"</string>
|
||||
<string name="revanced_hide_fullscreen_ads_summary_off">Vollbild-Anzeigen werden angezeigt</string>
|
||||
<string name="revanced_hide_buttoned_ads_title">Verknüpfte Werbung ausblenden</string>
|
||||
<string name="revanced_hide_buttoned_ads_summary_on">Verknüpfte Anzeigen sind ausgeblendet</string>
|
||||
@@ -419,7 +431,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_swipe_lowest_value_enable_auto_brightness_title">Auto-Helligkeit Geste aktivieren</string>
|
||||
<string name="revanced_swipe_lowest_value_enable_auto_brightness_summary_on">Wische runter auf den niedrigsten Wert der Helligkeitsgeste, um die automatische Helligkeit zu aktivieren</string>
|
||||
<string name="revanced_swipe_lowest_value_enable_auto_brightness_summary_off">Wenn man zum niedrigsten Wert wischt, aktiviert man die automatische Helligkeit nicht</string>
|
||||
<string name="revanced_swipe_lowest_value_enable_auto_brightness_overlay_text">Auto</string>
|
||||
<string name="revanced_swipe_lowest_value_enable_auto_brightness_overlay_text">Automatik</string>
|
||||
<string name="revanced_swipe_overlay_timeout_title">Wischüberlagerungs-Timeout</string>
|
||||
<string name="revanced_swipe_overlay_timeout_summary">Die Anzahl der Millisekunden, die das Overlay sichtbar ist</string>
|
||||
<string name="revanced_swipe_text_overlay_size_title">Wischüberlagerung Textgröße</string>
|
||||
@@ -462,7 +474,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_hide_thanks_button_summary_on">Dankeschön-Taste ist ausgeblendet</string>
|
||||
<string name="revanced_hide_thanks_button_summary_off">Dankeschön Button wird angezeigt</string>
|
||||
<!-- 'Clip' should be translated with the same localized wording that YouTube displays. -->
|
||||
<string name="revanced_hide_clip_button_title">Hide Clip</string>
|
||||
<string name="revanced_hide_clip_button_title">Clip ausblenden</string>
|
||||
<string name="revanced_hide_clip_button_summary_on">Clip-Button ist ausgeblendet</string>
|
||||
<string name="revanced_hide_clip_button_summary_off">Clip-Taste wird angezeigt</string>
|
||||
<!-- 'Save' should be translated with the same localized wording that YouTube displays. -->
|
||||
@@ -471,7 +483,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_hide_playlist_button_summary_off">In Wiedergabeliste speichern wird angezeigt</string>
|
||||
</patch>
|
||||
<patch id="layout.buttons.navigation.navigationButtonsPatch">
|
||||
<string name="revanced_navigation_buttons_screen_title">Navigation buttons</string>
|
||||
<string name="revanced_navigation_buttons_screen_title">Navigationstasten</string>
|
||||
<string name="revanced_navigation_buttons_screen_summary">Verstecke oder ändere Schaltflächen in der Navigationsleiste</string>
|
||||
<!-- 'Home' should be translated using the same localized wording YouTube displays for the tab. -->
|
||||
<string name="revanced_hide_home_button_title">Haus ausblenden</string>
|
||||
@@ -491,14 +503,25 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_hide_subscriptions_button_summary_off">Abonnement-Button wird angezeigt</string>
|
||||
<!-- 'Notifications' should be translated using the same localized wording YouTube displays the tab. -->
|
||||
<string name="revanced_switch_create_with_notifications_button_title">Tauscht Erstellen mit Benachrichtigungen</string>
|
||||
<string name="revanced_switch_create_with_notifications_button_summary_on">Erstellen-Button wird mit Benachrichtigungs-Button getauscht\n\nHinweis: Aktivieren versteckt Video-Anzeigen</string>
|
||||
<string name="revanced_switch_create_with_notifications_button_summary_on">"Die Schaltfläche \"Erstellen\" wird mit der Schaltfläche \"Benachrichtigungen\" vertauscht
|
||||
|
||||
Hinweis: Durch Aktivieren dieser Option wird auch die Videowerbung zwangsweise ausgeblendet"</string>
|
||||
<string name="revanced_switch_create_with_notifications_button_summary_off">Erstellen-Button ist nicht mit Benachrichtigungs-Button getauscht</string>
|
||||
<string name="revanced_hide_navigation_button_labels_title">Navigationstastenbezeichnungen ausblenden</string>
|
||||
<string name="revanced_hide_navigation_button_labels_summary_on">Labels sind ausgeblendet</string>
|
||||
<string name="revanced_hide_navigation_button_labels_summary_off">Labels werden angezeigt</string>
|
||||
<string name="revanced_disable_translucent_status_bar_title">Transluzente Statusleiste deaktivieren</string>
|
||||
<string name="revanced_disable_translucent_status_bar_summary_on">Statusleiste ist undurchsichtig</string>
|
||||
<string name="revanced_disable_translucent_status_bar_summary_off">Die Statusleiste ist undurchsichtig oder durchscheinend</string>
|
||||
<string name="revanced_disable_translucent_navigation_bar_light_title">Hellen, lichtdurchlässigen Balken deaktivieren</string>
|
||||
<string name="revanced_disable_translucent_navigation_bar_light_summary_on">Heller Navigationsbalken ist opak</string>
|
||||
<string name="revanced_disable_translucent_navigation_bar_light_summary_off">Die Navigationsleiste im hellen Modus ist undurchsichtig oder durchscheinend</string>
|
||||
<string name="revanced_disable_translucent_navigation_bar_dark_title">Deaktiviere die dunkle, durchscheinende Leiste</string>
|
||||
<string name="revanced_disable_translucent_navigation_bar_dark_summary_on">Dunkler Navigationsbalken ist opak</string>
|
||||
<string name="revanced_disable_translucent_navigation_bar_dark_summary_off">Die Navigationsleiste im dunklen Modus ist undurchsichtig oder durchscheinend</string>
|
||||
</patch>
|
||||
<patch id="layout.hide.player.flyoutmenupanel.hidePlayerFlyoutMenuPatch">
|
||||
<string name="revanced_hide_player_flyout_title">Flyout menu</string>
|
||||
<string name="revanced_hide_player_flyout_title">Einblendmenü</string>
|
||||
<string name="revanced_hide_player_flyout_summary">Verstecke oder zeige Player-Flyout-Menüeinträge</string>
|
||||
<!-- 'Captions' should be translated using the same localized wording YouTube displays for the menu item. -->
|
||||
<string name="revanced_hide_player_flyout_captions_title">Bildunterschriften ausblenden</string>
|
||||
@@ -732,7 +755,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_ryd_enable_summary_off">Dislikes werden nicht angezeigt</string>
|
||||
<string name="revanced_ryd_shorts_title">Dislikes auf Shorts anzeigen</string>
|
||||
<string name="revanced_ryd_shorts_summary_on">Dislikes auf Shorts angezeigt</string>
|
||||
<string name="revanced_ryd_shorts_summary_on_disclaimer">Dislikes in Shorts\n\nLimitation: Dislikes können nicht im Inkognito-Modus angezeigt werden</string>
|
||||
<string name="revanced_ryd_shorts_summary_on_disclaimer">"Dislikes werden in Shorts angezeigt
|
||||
|
||||
Einschränkung: Dislikes werden möglicherweise nicht im Inkognito-Modus angezeigt"</string>
|
||||
<string name="revanced_ryd_shorts_summary_off">Dislikes auf Shorts ausgeblendet</string>
|
||||
<string name="revanced_ryd_dislike_percentage_title">Ablehnt als Prozentsatz</string>
|
||||
<string name="revanced_ryd_dislike_percentage_summary_on">Dislikes als Prozentsatz angezeigt</string>
|
||||
@@ -775,7 +800,11 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_seekbar_thumbnails_high_quality_summary_off">Thumbnails in der Suchleiste sind mittlere Qualität</string>
|
||||
<string name="revanced_seekbar_thumbnails_high_quality_legacy_summary_on">Thumbnails in der Suchleiste sind qualitativ hochwertig</string>
|
||||
<string name="revanced_seekbar_thumbnails_high_quality_legacy_summary_off">Thumbnails in der Suchleiste sind mittlere Qualität</string>
|
||||
<string name="revanced_seekbar_thumbnails_high_quality_dialog_message">Dadurch werden auch Thumbnails auf Livestreams wiederhergestellt, die keine Suchleisten-Thumbnails haben.\n\nSuchleisten-Thumbnails verwenden die gleiche Qualität wie das aktuelle Video.\n\nDiese Funktion funktioniert am besten mit einer Videoqualität von 720p oder niedriger und bei einer sehr schnellen Internetverbindung.</string>
|
||||
<string name="revanced_seekbar_thumbnails_high_quality_dialog_message">"Dadurch werden auch Miniaturansichten in Livestreams wiederhergestellt, die keine Miniaturansichten mit Suchleiste haben.
|
||||
|
||||
Miniaturansichten mit Suchleiste verwenden die gleiche Qualität wie das aktuelle Video.
|
||||
|
||||
Diese Funktion funktioniert am besten mit einer Videoqualität von 720p oder niedriger und bei Verwendung einer sehr schnellen Internetverbindung."</string>
|
||||
<string name="revanced_restore_old_seekbar_thumbnails_title">Alte Suchleisten-Thumbnails wiederherstellen</string>
|
||||
<string name="revanced_restore_old_seekbar_thumbnails_summary_on">Suchleisten-Thumbnails werden über der Suchleiste angezeigt</string>
|
||||
<string name="revanced_restore_old_seekbar_thumbnails_summary_off">Miniaturansichten werden im Vollbild angezeigt</string>
|
||||
@@ -838,7 +867,10 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_sb_settings_import_successful">Einstellungen erfolgreich importiert</string>
|
||||
<string name="revanced_sb_settings_import_failed">Import fehlgeschlagen: %s</string>
|
||||
<string name="revanced_sb_settings_export_failed">Export fehlgeschlagen: %s</string>
|
||||
<string name="revanced_sb_settings_revanced_export_user_id_warning">Ihre Einstellungen enthalten einen privaten SponsorBlock Benutzer.\n\nIhre Benutzer-ID ist wie ein Passwort und sollte nie geteilt werden.\n</string>
|
||||
<string name="revanced_sb_settings_revanced_export_user_id_warning">"Ihre Einstellungen enthalten eine private SponsorBlock-Benutzer-ID.
|
||||
|
||||
Ihre Benutzer-ID ist wie ein Passwort und sollte niemals weitergegeben werden.
|
||||
"</string>
|
||||
<string name="revanced_sb_settings_revanced_export_user_id_warning_dismiss">Nicht wieder anzeigen</string>
|
||||
<string name="revanced_sb_diff_segments">Segmentverhalten ändern</string>
|
||||
<string name="revanced_sb_segments_sponsor">Sponsor</string>
|
||||
@@ -868,7 +900,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_sb_skip_button_intro_beginning">Einleitung überspringen</string>
|
||||
<string name="revanced_sb_skip_button_intro_middle">Unterbrechung überspringen</string>
|
||||
<string name="revanced_sb_skip_button_intro_end">Unterbrechung überspringen</string>
|
||||
<string name="revanced_sb_skip_button_outro">Skip outro</string>
|
||||
<string name="revanced_sb_skip_button_outro">Überspringen</string>
|
||||
<string name="revanced_sb_skip_button_preview_beginning">Vorschau überspringen</string>
|
||||
<string name="revanced_sb_skip_button_preview_middle">Vorschau überspringen</string>
|
||||
<string name="revanced_sb_skip_button_preview_end">Rückfall überspringen</string>
|
||||
@@ -898,9 +930,10 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_sb_submit_failed_invalid">Segment kann nicht gesendet werden: %s</string>
|
||||
<string name="revanced_sb_submit_failed_timeout">SponsorBlock ist vorübergehend nicht verfügbar</string>
|
||||
<string name="revanced_sb_submit_failed_unknown_error">Segment kann nicht gesendet werden (Status: %1$d %2$s)</string>
|
||||
<string name="revanced_sb_submit_failed_rate_limit">Segment kann nicht gesendet werden.\nRate limitiert (zu viele von demselben Benutzer oder IP)</string>
|
||||
<string name="revanced_sb_submit_failed_rate_limit">Segment kann nicht übermittelt werden. Rate Limited (zu viele vom selben Benutzer oder der gleichen IP)</string>
|
||||
<string name="revanced_sb_submit_failed_forbidden">Das Segment kann nicht gesendet werden: %s</string>
|
||||
<string name="revanced_sb_submit_failed_duplicate">Segment kann nicht abgesendet werden. \nBereits vorhanden</string>
|
||||
<string name="revanced_sb_submit_failed_duplicate">"Segment kann nicht übermittelt werden.
|
||||
Existiert bereits"</string>
|
||||
<string name="revanced_sb_submit_succeeded">Segment erfolgreich übertragen</string>
|
||||
<!-- Toast shown if network connection times out. Translations of this should not be longer than the original English or the text can be clipped and not entirely shown. -->
|
||||
<string name="revanced_sb_sponsorblock_connection_failure_timeout">SponsorBlock vorübergehend nicht verfügbar (API Timeout)</string>
|
||||
@@ -923,7 +956,15 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_sb_new_segment_time_start">Das Segiment beginnt ab</string>
|
||||
<string name="revanced_sb_new_segment_time_end">Das Segiment endet bei</string>
|
||||
<string name="revanced_sb_new_segment_confirm_title">Sind diese Zeiten richtig?</string>
|
||||
<string name="revanced_sb_new_segment_confirm_content">Das Segment ist von\n\n\n%1$s\nbis\n%2$s\n\n(%3$s)\n\nBereit zum Absenden?</string>
|
||||
<string name="revanced_sb_new_segment_confirm_content">"Das Segment ist von
|
||||
|
||||
%1$s
|
||||
nach
|
||||
%2$s
|
||||
|
||||
(%3$s)
|
||||
|
||||
Bereit zum Einreichen?"</string>
|
||||
<string name="revanced_sb_new_segment_start_is_before_end">Start muss vor dem Ende sein</string>
|
||||
<string name="revanced_sb_new_segment_mark_locations_first">Markieren sie zuerst zwei Punkte auf der Zeitleiste</string>
|
||||
<string name="revanced_sb_new_segment_preview_segment_first">Vorschau des Segments und sorgt dafür, dass es reibungslos überspringt</string>
|
||||
@@ -965,7 +1006,11 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_spoof_app_version_title">Spoof-App-Version</string>
|
||||
<string name="revanced_spoof_app_version_summary_on">Version gefälscht</string>
|
||||
<string name="revanced_spoof_app_version_summary_off">Version nicht gefälscht</string>
|
||||
<string name="revanced_spoof_app_version_user_dialog_message">Die App-Version wird auf eine ältere Version von YouTube gefälscht.\n\nDies ändert das Aussehen und die Funktionen der App, aber es können unbekannte Nebeneffekte auftreten.\n\nWenn später ausgeschaltet ist, wird empfohlen, die App-Daten zu löschen, um UI-Fehler zu vermeiden.</string>
|
||||
<string name="revanced_spoof_app_version_user_dialog_message">"Die App-Version wird zu einer älteren Version von YouTube gefälscht.
|
||||
|
||||
Dadurch ändert sich das Erscheinungsbild und die Funktionen der App, es können jedoch unbekannte Nebeneffekte auftreten.
|
||||
|
||||
Wenn Sie die Funktion später deaktivieren, wird empfohlen, die App-Daten zu löschen, um UI-Fehler zu vermeiden."</string>
|
||||
<!-- It is ideal, but not required, if the text here appears is alphabetically after the text used for 'revanced_spoof_app_version_title'.
|
||||
This is because the 'General layout' menu uses alphabetic sorting, and it functionally works better if the spoof target selector appears below the 'Spoof app version' UI switch -->
|
||||
<string name="revanced_spoof_app_version_target_title">Spoof-App-Versionsziel</string>
|
||||
@@ -999,8 +1044,14 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_disable_resuming_shorts_player_summary_on">Der Shorts Player wird beim Start der App nicht fortgesetzt</string>
|
||||
<string name="revanced_disable_resuming_shorts_player_summary_off">Shorts-Player wird beim Start der App fortgesetzt</string>
|
||||
</patch>
|
||||
<patch id="layout.shortsplayer.shortsPlayerTypePatch">
|
||||
<string name="revanced_shorts_player_type_title">Shorts mit</string>
|
||||
<string name="revanced_shorts_player_type_shorts">Shorts Spieler</string>
|
||||
<string name="revanced_shorts_player_type_regular_player">Normaler Spieler</string>
|
||||
<string name="revanced_shorts_player_type_regular_player_fullscreen">Normaler Spieler im Vollbildmodus</string>
|
||||
</patch>
|
||||
<patch id="layout.shortsautoplay.shortsAutoplayPatch">
|
||||
<string name="revanced_shorts_autoplay_title">Autoplay Shorts</string>
|
||||
<string name="revanced_shorts_autoplay_title">Shorts automatisch abspielen</string>
|
||||
<string name="revanced_shorts_autoplay_summary_on">Shorts werden autoplay</string>
|
||||
<string name="revanced_shorts_autoplay_summary_off">Shorts wiederholen</string>
|
||||
<string name="revanced_shorts_autoplay_background_title">Autoplay Shorts Hintergrund spielen</string>
|
||||
@@ -1018,7 +1069,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_miniplayer_screen_summary">Ändere den Stil des in App minimierten Players</string>
|
||||
<string name="revanced_miniplayer_type_title">Minispielertyp</string>
|
||||
<string name="revanced_miniplayer_type_entry_0">Deaktiviert</string>
|
||||
<string name="revanced_miniplayer_type_entry_1">Original</string>
|
||||
<string name="revanced_miniplayer_type_entry_1">Standard</string>
|
||||
<string name="revanced_miniplayer_type_entry_2">Minimal</string>
|
||||
<string name="revanced_miniplayer_type_entry_3">Tablets</string>
|
||||
<string name="revanced_miniplayer_type_entry_4">Modern 1</string>
|
||||
@@ -1028,19 +1079,28 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_miniplayer_rounded_corners_summary_on">Ecken sind abgerundet</string>
|
||||
<string name="revanced_miniplayer_rounded_corners_summary_off">Ecken sind Quadrat</string>
|
||||
<string name="revanced_miniplayer_double_tap_action_title">Aktiviere doppeltes Tippen und Pratzen um die Größe zu ändern</string>
|
||||
<string name="revanced_miniplayer_double_tap_action_summary_on">Doppeltipp-Aktion und Pinsel, um die Größe zu verändern, ist aktiviert\n\n• Doppeltippen, um die Größe des Miniplayers\nzu erhöhenformat@@2 • Doppeltippen erneut, um die Originalgröße wiederherzustellen</string>
|
||||
<string name="revanced_miniplayer_double_tap_action_summary_on">"Doppeltippen und mit zwei Fingern vergrößern/verkleinern ist aktiviert
|
||||
|
||||
• Doppeltippen, um die Größe des Mini-Players zu vergrößern
|
||||
• Nochmals doppeltippen, um die ursprüngliche Größe wiederherzustellen"</string>
|
||||
<string name="revanced_miniplayer_double_tap_action_summary_off">Doppel-Tipp-Aktion und Pinch um die Größe zu verändern, ist deaktiviert</string>
|
||||
<string name="revanced_miniplayer_drag_and_drop_title">Drag and Drop aktivieren</string>
|
||||
<string name="revanced_miniplayer_drag_and_drop_summary_on">Drag and Drop ist aktiviert\n\nMiniplayer kann in jede Ecke des Bildschirms gezogen werden</string>
|
||||
<string name="revanced_miniplayer_drag_and_drop_summary_on">"Drag-and-Drop ist aktiviert
|
||||
|
||||
Der Mini-Player kann in jede Ecke des Bildschirms gezogen werden"</string>
|
||||
<string name="revanced_miniplayer_drag_and_drop_summary_off">Drag and Drop ist deaktiviert</string>
|
||||
<string name="revanced_miniplayer_horizontal_drag_title">Horizontales Ziehen aktivieren</string>
|
||||
<string name="revanced_miniplayer_horizontal_drag_summary_on">Horizontale Drag Geste aktiviert\n\nMiniplayer kann vom Bildschirm nach links oder rechts gezogen werden</string>
|
||||
<string name="revanced_miniplayer_horizontal_drag_summary_on">"Horizontale Ziehgeste aktiviert
|
||||
|
||||
Der Mini-Player kann mit einer Wischgeste vom Bildschirm nach links oder rechts gezogen werden"</string>
|
||||
<string name="revanced_miniplayer_horizontal_drag_summary_off">Horizontale Drag Geste deaktiviert</string>
|
||||
<string name="revanced_miniplayer_hide_expand_close_title">Schließen-Button ausblenden</string>
|
||||
<string name="revanced_miniplayer_hide_expand_close_summary_on">Schließen-Button ist ausgeblendet</string>
|
||||
<string name="revanced_miniplayer_hide_expand_close_summary_off">Schließen-Schaltfläche wird angezeigt</string>
|
||||
<string name="revanced_miniplayer_hide_expand_close_legacy_title">Ausklappen und Schließen der Tasten ausblenden</string>
|
||||
<string name="revanced_miniplayer_hide_expand_close_legacy_summary_on">Tasten sind ausgeblendet\n\nWischen um zu erweitern oder zu schließen</string>
|
||||
<string name="revanced_miniplayer_hide_expand_close_legacy_summary_on">"Schaltflächen sind ausgeblendet
|
||||
|
||||
Wischen Sie, um zu erweitern oder zu schließen"</string>
|
||||
<string name="revanced_miniplayer_hide_expand_close_legacy_summary_off">Erweitern und Schließen Tasten werden angezeigt</string>
|
||||
<string name="revanced_miniplayer_hide_subtext_title">Untertexte ausblenden</string>
|
||||
<string name="revanced_miniplayer_hide_subtext_summary_on">Subtexte sind ausgeblendet</string>
|
||||
@@ -1071,7 +1131,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<patch id="layout.thumbnails.bypassImageRegionRestrictionsPatch">
|
||||
<string name="revanced_bypass_image_region_restrictions_title">Bildgebietsbeschränkungen umgehen</string>
|
||||
<string name="revanced_bypass_image_region_restrictions_summary_on">Bild-Host yt4.ggpht.com verwenden</string>
|
||||
<string name="revanced_bypass_image_region_restrictions_summary_off">Verwendung des ursprünglichen Bild-Hosts\n\nAktivieren kann fehlende Bilder beheben, die in einigen Regionen blockiert werden</string>
|
||||
<string name="revanced_bypass_image_region_restrictions_summary_off">"Ursprünglicher Bildhost wird verwendet
|
||||
|
||||
Durch Aktivieren dieser Option können fehlende Bilder behoben werden, die in einigen Regionen blockiert sind"</string>
|
||||
</patch>
|
||||
<patch id="layout.thumbnails.alternativeThumbnailsPatch">
|
||||
<!-- 'Home' should be translated using the same localized wording YouTube displays for the home tab. -->
|
||||
@@ -1082,15 +1144,19 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_alt_thumbnail_library_title">Tab</string>
|
||||
<string name="revanced_alt_thumbnail_player_title">Playlisten, Empfehlungen</string>
|
||||
<string name="revanced_alt_thumbnail_search_title">Suchergebnisse</string>
|
||||
<string name="revanced_alt_thumbnail_options_entry_1">Original thumbnails</string>
|
||||
<string name="revanced_alt_thumbnail_options_entry_1">Original-Miniaturansichten</string>
|
||||
<string name="revanced_alt_thumbnail_options_entry_2">Pfeil & Original-Miniaturansichten</string>
|
||||
<string name="revanced_alt_thumbnail_options_entry_3">Pfeil & immer noch erfasst</string>
|
||||
<string name="revanced_alt_thumbnail_options_entry_4">Noch Aufnahmen</string>
|
||||
<string name="revanced_alt_thumbnail_dearrow_about_summary">DeArrow bietet Crowd-sourced Thumbnails für YouTube-Videos an. Diese Vorschaubilder sind oft relevanter als die von YouTube.\n\nWenn aktiviert, werden Video-URLs an den API-Server gesendet und keine anderen Daten. Wenn ein Video keine DeArrow Thumbnails hat, dann wird das Original benutzt\n\nTippe hier, um mehr über DeArrow zu erfahren</string>
|
||||
<string name="revanced_alt_thumbnail_dearrow_about_summary">"DeArrow bietet von der Community bereitgestellte Miniaturansichten für YouTube-Videos. Diese Miniaturansichten sind oft relevanter als die von YouTube bereitgestellten.
|
||||
|
||||
Wenn diese Option aktiviert ist, werden Video-URLs an den API-Server gesendet und keine anderen Daten werden gesendet. Wenn ein Video keine DeArrow-Miniaturansichten hat, werden die Original- oder Still-Captures angezeigt.
|
||||
|
||||
Tippen Sie hier, um mehr über DeArrow zu erfahren"</string>
|
||||
<string name="revanced_alt_thumbnail_dearrow_connection_toast_title">Einen Toast anzeigen, wenn die API nicht verfügbar ist</string>
|
||||
<string name="revanced_alt_thumbnail_dearrow_connection_toast_summary_on">Toast wird angezeigt, wenn der Pfeil nicht verfügbar ist</string>
|
||||
<string name="revanced_alt_thumbnail_dearrow_connection_toast_summary_off">Toast wird nicht angezeigt, wenn der Pfeil nicht verfügbar ist</string>
|
||||
<string name="revanced_alt_thumbnail_dearrow_api_url_title">DeArrow API endpoint</string>
|
||||
<string name="revanced_alt_thumbnail_dearrow_api_url_title">DeArrow API-Endpunkt</string>
|
||||
<string name="revanced_alt_thumbnail_dearrow_api_url_summary">Die URL des Cache Endpunkts der DeArrow Thumbnails</string>
|
||||
<string name="revanced_alt_thumbnail_stills_about_title">Noch Videoaufnahmen</string>
|
||||
<string name="revanced_alt_thumbnail_stills_about_summary">Die Aufnahmen werden immer noch von Anfang an / Mitte / Ende jedes Videos übernommen. Diese Bilder sind in YouTube eingebaut und es wird keine externe API verwendet</string>
|
||||
@@ -1125,8 +1191,12 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
</patch>
|
||||
<patch id="misc.dimensions.spoof.spoofDeviceDimensionsPatch">
|
||||
<string name="revanced_spoof_device_dimensions_title">Spoof-Gerätegröße</string>
|
||||
<string name="revanced_spoof_device_dimensions_summary_on">Die Dimensionen des Geräts wurden mit\n\nverschönert. Höhere Video-Qualitäten können freigeschaltet werden, aber es kann sein, dass Videowiedergabe stuttert, die Batterielebensdauer verschlechtert und unbekannte Nebeneffekte auftreten</string>
|
||||
<string name="revanced_spoof_device_dimensions_summary_off">Gerätedimensionen nicht gefälscht\n\nAktivieren kann höhere Video-Qualitäten freischalten</string>
|
||||
<string name="revanced_spoof_device_dimensions_summary_on">"Gerätemessungen gefälscht
|
||||
|
||||
Höhere Videoqualitäten können freigeschaltet werden, aber es kann zu Stottern bei der Videowiedergabe, kürzerer Akkulaufzeit und unbekannten Nebeneffekten kommen"</string>
|
||||
<string name="revanced_spoof_device_dimensions_summary_off">"Gerätemessungen nicht gefälscht
|
||||
|
||||
Durch Aktivieren dieser Option können höhere Videoqualitäten freigeschaltet werden"</string>
|
||||
<string name="revanced_spoof_device_dimensions_user_dialog_message">Aktivieren kann dazu führen, dass Videowiedergabe blockiert, die Batterielebensdauer verschlechtert und unbekannte Nebeneffekte entstehen.</string>
|
||||
</patch>
|
||||
<patch id="misc.gms.gmsCoreSupportResourcePatch">
|
||||
@@ -1153,16 +1223,21 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_disable_zoom_haptics_summary_on">Haptik ist deaktiviert</string>
|
||||
<string name="revanced_disable_zoom_haptics_summary_off">Haptik ist aktiviert</string>
|
||||
</patch>
|
||||
<patch id="video.audio.forceOriginalAudioPatch">
|
||||
<string name="revanced_force_original_audio_title">Original Audio erzwingen</string>
|
||||
<string name="revanced_force_original_audio_summary_on">Originales Audio verwenden</string>
|
||||
<string name="revanced_force_original_audio_summary_off">Standardaudio verwenden</string>
|
||||
</patch>
|
||||
<patch id="video.quality.rememberVideoQualityPatch">
|
||||
<!-- Translations should use the same text as revanced_custom_playback_speeds_auto -->
|
||||
<string name="revanced_video_quality_default_entry_1">Auto</string>
|
||||
<string name="revanced_video_quality_default_entry_1">Autom</string>
|
||||
<string name="revanced_remember_video_quality_last_selected_title">Änderungen der Videoqualität merken</string>
|
||||
<string name="revanced_remember_video_quality_last_selected_summary_on">Qualitätsänderungen gelten für alle Videos</string>
|
||||
<string name="revanced_remember_video_quality_last_selected_summary_off">Qualitätsänderungen gelten nur für das aktuelle Video</string>
|
||||
<string name="revanced_video_quality_default_wifi_title">Standard-Videoqualität im Wi-Fi-Netzwerk</string>
|
||||
<string name="revanced_video_quality_default_mobile_title">Standard-Videoqualität im Mobilfunknetz</string>
|
||||
<string name="revanced_remember_video_quality_mobile">mobile</string>
|
||||
<string name="revanced_remember_video_quality_wifi">wifi</string>
|
||||
<string name="revanced_remember_video_quality_mobile">Mobile</string>
|
||||
<string name="revanced_remember_video_quality_wifi">WLAN</string>
|
||||
<string name="revanced_remember_video_quality_toast">Standard %1$s Qualität geändert zu: %2$s</string>
|
||||
</patch>
|
||||
<patch id="video.speed.button.playbackSpeedButtonPatch">
|
||||
@@ -1176,9 +1251,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_custom_speed_menu_summary_off">Benutzerdefiniertes Geschwindigkeitsmenü wird nicht angezeigt</string>
|
||||
<string name="revanced_custom_playback_speeds_title">Benutzerdefinierte Wiedergabegeschwindigkeiten</string>
|
||||
<string name="revanced_custom_playback_speeds_summary">Hinzufügen oder Ändern der benutzerdefinierten Wiedergabegeschwindigkeit</string>
|
||||
<string name="revanced_custom_playback_speeds_invalid">Benutzerdefinierte Geschwindigkeiten müssen kleiner als %ssein. Standardwerte werden verwendet.</string>
|
||||
<string name="revanced_custom_playback_speeds_parse_exception">Ungültige benutzerdefinierte Wiedergabegeschwindigkeiten. Standardwerte verwenden.</string>
|
||||
<string name="revanced_custom_playback_speeds_auto">Auto</string>
|
||||
<string name="revanced_custom_playback_speeds_invalid">Benutzerdefinierte Geschwindigkeiten müssen kleiner als %s sein</string>
|
||||
<string name="revanced_custom_playback_speeds_parse_exception">Ungültige benutzerdefinierte Wiedergabegeschwindigkeiten</string>
|
||||
<string name="revanced_custom_playback_speeds_auto">Autom</string>
|
||||
</patch>
|
||||
<patch id="video.speed.remember.rememberPlaybackSpeedPatch">
|
||||
<string name="revanced_remember_playback_speed_last_selected_title">Änderungen der Wiedergabegeschwindigkeit merken</string>
|
||||
@@ -1202,19 +1277,25 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_spoof_video_streams_screen_summary">Spoof der Client-Videostreams um Wiedergabeprobleme zu verhindern</string>
|
||||
<string name="revanced_spoof_video_streams_title">Spoof-Video-Streams</string>
|
||||
<string name="revanced_spoof_video_streams_summary_on">Video-Streams sind gefälscht</string>
|
||||
<string name="revanced_spoof_video_streams_summary_off">Video-Streams sind nicht gefälscht\n\nVideo-Wiedergabe funktioniert möglicherweise nicht</string>
|
||||
<string name="revanced_spoof_video_streams_summary_off">"Videoströme werden nicht gefälscht
|
||||
|
||||
Die Videowiedergabe funktioniert möglicherweise nicht"</string>
|
||||
<string name="revanced_spoof_video_streams_user_dialog_message">Das Deaktivieren dieser Einstellung kann zu Videowiedergabeproblemen führen.</string>
|
||||
<string name="revanced_spoof_video_streams_client_title">Standard-Client</string>
|
||||
<string name="revanced_spoof_video_streams_ios_force_avc_title">AVC erzwingen (H.264)</string>
|
||||
<string name="revanced_spoof_video_streams_ios_force_avc_summary_on">Video-Codec ist zu AVC gezwungen (H.264)</string>
|
||||
<string name="revanced_spoof_video_streams_ios_force_avc_summary_off">Video-Codec wird automatisch bestimmt</string>
|
||||
<string name="revanced_spoof_video_streams_ios_force_avc_user_dialog_message">Das Aktivieren kann die Akkulaufzeit verbessern und die Wiedergabe-Stutting beheben.\n\nAVC hat eine maximale Auflösung von 1080p, Opus Audio Codec ist nicht verfügbar und Video-Wiedergabe wird mehr Internet-Daten als VP9 oder AV1 verwenden.</string>
|
||||
<string name="revanced_spoof_video_streams_ios_force_avc_user_dialog_message">"Dadurch kann die Akkulaufzeit verbessert und Stottern bei der Wiedergabe behoben werden.
|
||||
|
||||
AVC hat eine maximale Auflösung von 1080p, der Opus-Audiocodec ist nicht verfügbar und die Videowiedergabe verbraucht mehr Internetdaten als VP9 oder AV1."</string>
|
||||
<string name="revanced_spoof_video_streams_about_ios_title">iOS Spoofing Nebeneffekte</string>
|
||||
<string name="revanced_spoof_video_streams_about_ios_summary">• Videos für private Kinder dürfen nicht\nabspielen • Livestreams beginnen von Anfang an\n• Videos können 1 Sekunde früher enden</string>
|
||||
<string name="revanced_spoof_video_streams_about_ios_summary">"• Private Kindervideos werden möglicherweise nicht abgespielt
|
||||
• Videos enden 1 Sekunde früher"</string>
|
||||
<string name="revanced_spoof_video_streams_about_android_vr_title">Android VR Spoofing Nebeneffekte</string>
|
||||
<string name="revanced_spoof_video_streams_about_android_vr_summary">• Kindervideos dürfen nicht\nabspielen • Audiospurmenü fehlt\n• Stabile Lautstärke ist nicht verfügbar</string>
|
||||
<string name="revanced_spoof_video_streams_language_">Video-Streams sind gefälscht</string>
|
||||
<string name="revanced_spoof_video_streams_language_title">Bevorzugte Audio-Stream-Sprache</string>
|
||||
<string name="revanced_spoof_video_streams_about_android_vr_summary">"• Kindervideos werden möglicherweise nicht abgespielt
|
||||
• Livestreams starten von Anfang an
|
||||
• Videos enden 1 Sekunde früher"</string>
|
||||
<string name="revanced_spoof_video_streams_language_title">Standard Audio Streamsprache</string>
|
||||
<string name="revanced_spoof_video_streams_language_DEFAULT">App-Sprache</string>
|
||||
<string name="revanced_spoof_video_streams_language_AR">Arabisch</string>
|
||||
<string name="revanced_spoof_video_streams_language_AZ">Aserbaidschan</string>
|
||||
@@ -1238,7 +1319,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_spoof_video_streams_language_ID">Indonesisch</string>
|
||||
<string name="revanced_spoof_video_streams_language_IT">Italienisch</string>
|
||||
<string name="revanced_spoof_video_streams_language_JA">Japanisch</string>
|
||||
<string name="revanced_spoof_video_streams_language_KK">Kazakh</string>
|
||||
<string name="revanced_spoof_video_streams_language_KK">Kasachisch</string>
|
||||
<string name="revanced_spoof_video_streams_language_KO">Koreanisch</string>
|
||||
<string name="revanced_spoof_video_streams_language_LT">Litauisch</string>
|
||||
<string name="revanced_spoof_video_streams_language_LV">Lettisch</string>
|
||||
@@ -1246,27 +1327,27 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_spoof_video_streams_language_MN">Mongolisch</string>
|
||||
<string name="revanced_spoof_video_streams_language_MR">Marathi</string>
|
||||
<string name="revanced_spoof_video_streams_language_MS">Malaiisch</string>
|
||||
<string name="revanced_spoof_video_streams_language_MY">Burmese</string>
|
||||
<string name="revanced_spoof_video_streams_language_MY">Burmesisch</string>
|
||||
<string name="revanced_spoof_video_streams_language_NL">Niederländisch</string>
|
||||
<string name="revanced_spoof_video_streams_language_OR">Odia</string>
|
||||
<string name="revanced_spoof_video_streams_language_PA">Punjabi</string>
|
||||
<string name="revanced_spoof_video_streams_language_PA">Pandschabi</string>
|
||||
<string name="revanced_spoof_video_streams_language_PL">Polnisch</string>
|
||||
<string name="revanced_spoof_video_streams_language_PT_BR">Portugiesisch (Brasilien)</string>
|
||||
<string name="revanced_spoof_video_streams_language_PT_PT">Portugiesisch (Portugal)</string>
|
||||
<string name="revanced_spoof_video_streams_language_RO">Rumänisch</string>
|
||||
<string name="revanced_spoof_video_streams_language_RU">Russisch</string>
|
||||
<string name="revanced_spoof_video_streams_language_SK">Slowakisch</string>
|
||||
<string name="revanced_spoof_video_streams_language_SL">Slovene</string>
|
||||
<string name="revanced_spoof_video_streams_language_SL">Slowenisch</string>
|
||||
<string name="revanced_spoof_video_streams_language_SR">Serbisch</string>
|
||||
<string name="revanced_spoof_video_streams_language_SV">Schwedisch</string>
|
||||
<string name="revanced_spoof_video_streams_language_SW">Swahili</string>
|
||||
<string name="revanced_spoof_video_streams_language_TA">Tamil</string>
|
||||
<string name="revanced_spoof_video_streams_language_SW">Suaheli</string>
|
||||
<string name="revanced_spoof_video_streams_language_TA">Tamilisch</string>
|
||||
<string name="revanced_spoof_video_streams_language_TE">Telugu</string>
|
||||
<string name="revanced_spoof_video_streams_language_TH">Thailändisch</string>
|
||||
<string name="revanced_spoof_video_streams_language_TR">Türkisch</string>
|
||||
<string name="revanced_spoof_video_streams_language_UK">Ukrainische</string>
|
||||
<string name="revanced_spoof_video_streams_language_UR">Urdu</string>
|
||||
<string name="revanced_spoof_video_streams_language_VI">Vietnamese</string>
|
||||
<string name="revanced_spoof_video_streams_language_VI">Vietnamesisch</string>
|
||||
<string name="revanced_spoof_video_streams_language_ZH">Chinesisch</string>
|
||||
</patch>
|
||||
</app>
|
||||
@@ -1277,8 +1358,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_block_audio_ads_summary_off">Audiowerbung ist entsperrt</string>
|
||||
</patch>
|
||||
<patch id="ad.embedded.embeddedAdsPatch">
|
||||
<string name="revanced_embedded_ads_service_unavailable">%s ist nicht verfügbar. Ads könnten angezeigt werden. Versuche einem anderen Adblock-Dienst.</string>
|
||||
<string name="revanced_embedded_ads_service_failed">Der %s Server hat einen Fehler zurückgegeben. Ads könnten angezeigt werden. Versuche einen anderen Adblock-Dienst.</string>
|
||||
<string name="revanced_embedded_ads_service_unavailable">%s nicht verfügbar, Werbung wird möglicherweise angezeigt. Versuchen Sie, den Werbesperrdienst in den Einstellungen zu ändern.</string>
|
||||
<string name="revanced_embedded_ads_service_failed">%s hat einen Fehler zurückgegeben, Werbung wird möglicherweise angezeigt. Versuchen Sie, den Werbesperrdienst in den Einstellungen zu ändern.</string>
|
||||
<string name="revanced_block_embedded_ads_title">Blockiere eingebettete Video-Anzeigen</string>
|
||||
<string name="revanced_block_embedded_ads_entry_1">Deaktiviert</string>
|
||||
<string name="revanced_block_embedded_ads_entry_2">Leuchtender Proxy</string>
|
||||
|
||||
@@ -1,34 +1,23 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
|
||||
Note: All strings must have a unique path, even if the same string is declared in two different apps.
|
||||
This is because Crowdin requires temporarily flattening this file and removing the <app> and <patch> elements.
|
||||
All strings must have a unique path, even if the same string is declared in two different apps.
|
||||
This is because Crowdin requires temporarily flattening this file and removing the <app> and <patch> elements.
|
||||
|
||||
# General guidelines and information for translating
|
||||
|
||||
## Strings parameters can be reordered to allow more flexible translations if the grammar should be changed.
|
||||
Strings with new lines must be raw strings where they're wrapped in quotes and new lines are not encoded.
|
||||
Raw strings still requires escaping embedded double quotes but escaping embedded single quotes is optional.
|
||||
|
||||
For example, the patches string:
|
||||
<string name="revanced_patches_string">You will arrive at %1$s in %2$s hours from now</string>
|
||||
Could be translated to another language using a rearranged grammar:
|
||||
<string name="revanced_patches_string">You will arrive %2$s hours from now at %1$s</string>
|
||||
Raw strings are required because Crowdin AI translations regularly gets confused and
|
||||
replace \n with an encoded new line character.
|
||||
|
||||
For Manager strings:
|
||||
You will arrive at ${destination} in ${count} hours from now
|
||||
Could be rearranged by changing the order of the ${} parameters:
|
||||
You will arrive ${count} hours from now at ${destination}
|
||||
Bad:
|
||||
<string name="summary_key">First \'item\' text\nSecond \"item\" text</string>
|
||||
|
||||
Reordering is particularly relevant when translating into right to left languages, or for any language with grammar that is noticeably different from English.
|
||||
Good:
|
||||
<string name="summary_key">"First 'item' text
|
||||
Second \"item\" text"</string>
|
||||
|
||||
## Single and double quotation marks must be escaped for patch strings (Manager does not require escaping any quotes).
|
||||
|
||||
All _patches_ single and double quotation marks must be escaped as \" or \'
|
||||
Forgetting to do this will cause that string to appear in app with no quotation characters.
|
||||
|
||||
Correct:
|
||||
<string name="revanced_string">You\'re correct. This is the \"correct\" way and this text will appear as expected in the app</string>
|
||||
Not correct:
|
||||
<string name="revanced_string">You're not correct. This is not the "correct" way and this text will not appear as expected the in app</string>
|
||||
-->
|
||||
<resources>
|
||||
<app id="shared">
|
||||
@@ -36,14 +25,15 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_check_environment_failed_title">Αποτυχία ελέγχων</string>
|
||||
<string name="revanced_check_environment_dialog_open_official_source_button">Άνοιγμα επίσημης ιστοσελίδας</string>
|
||||
<string name="revanced_check_environment_dialog_ignore_button">Παράλειψη</string>
|
||||
<string name="revanced_check_environment_failed_message"><h5>Αυτή η εφαρμογή δεν φαίνεται να έχει τροποποιηθεί από εσάς.</h5><br>Αυτή η εφαρμογή μπορεί να μην λειτουργεί σωστά, <b>θα μπορούσε να είναι επιβλαβής ή ακόμα και επικίνδυνη για χρήση</b>.<br><br>Αυτοί οι έλεγχοι υποδηλώνουν ότι αυτή η εφαρμογή έχει τροποποιηθεί στο παρελθόν ή λήφθηκε από κάποιον άλλο:<br><br><small>%1$s</small><br>Συνιστάται έντονα να απεγκαταστήσετε την εφαρμογή <br>και να την τροποποιήσετε μόνοι σας<br> για να διασφαλίσετε ότι χρησιμοποιείτε μια επικυρωμένη και ασφαλή εφαρμογή.<p><br>Εάν αγνοηθεί, αυτή η προειδοποίηση θα εμφανιστεί μόνο δύο φορές.</string>
|
||||
<string name="revanced_check_environment_failed_message"><h5>Αυτή η εφαρμογή δεν φαίνεται να έχει τροποποιηθεί από εσάς.</h5><br>Η εφαρμογή μπορεί να μη λειτουργεί σωστά, <b>θα μπορούσε να είναι επιβλαβής ή ακόμα και επικίνδυνη για χρήση</b>.<br><br>Αυτοί οι έλεγχοι υποδηλώνουν ότι αυτή η εφαρμογή έχει τροποποιηθεί στο παρελθόν ή λήφθηκε από κάποιον άλλο:<br><br><small>%1$s</small><br>Συνιστάται έντονα να απεγκαταστήσετε την εφαρμογή <br>και να την τροποποιήσετε μόνοι σας<br> για να διασφαλίσετε ότι χρησιμοποιείτε μια επικυρωμένη και ασφαλή εφαρμογή.<p><br>Εάν αγνοηθεί, αυτή η προειδοποίηση θα εμφανιστεί μόνο δύο φορές.</string>
|
||||
<string name="revanced_check_environment_not_same_patching_device">Τροποποιήθηκε σε διαφορετική συσκευή</string>
|
||||
<string name="revanced_check_environment_manager_not_expected_installer">Δεν έχει εγκατασταθεί μέσω του ReVanced Manager</string>
|
||||
<string name="revanced_check_environment_not_near_patch_time">Τροποποιήθηκε πάνω από 10 λεπτά πριν</string>
|
||||
<string name="revanced_check_environment_not_near_patch_time_days">Τροποποιήθηκε πριν %s μέρες</string>
|
||||
<string name="revanced_check_environment_not_near_patch_time_invalid">Ημερομηνία κατασκευής του APK είναι κατεστραμμένη</string>
|
||||
<string name="revanced_check_environment_not_near_patch_time_invalid">Η ημερομηνία κατασκευής του APK είναι κατεστραμμένη</string>
|
||||
</patch>
|
||||
<patch id="misc.settings.settingsResourcePatch">
|
||||
<string name="revanced_settings_title">ReVanced</string>
|
||||
<string name="revanced_settings_confirm_user_dialog_title">Θέλετε να συνεχίσετε;</string>
|
||||
<string name="revanced_settings_reset">Επαναφορά</string>
|
||||
<string name="revanced_settings_restart_title">Ανανέωση και επανεκκίνηση</string>
|
||||
@@ -67,9 +57,17 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<!-- Translations of this should not be longer than the original English text, otherwise the text can be clipped and not entirely shown. -->
|
||||
<string name="gms_core_toast_not_installed_message">Το MicroG GmsCore δεν έχει εγκατασταθεί. Εγκαταστήστε το.</string>
|
||||
<string name="gms_core_dialog_title">Απαιτείται ενέργεια</string>
|
||||
<string name="gms_core_dialog_not_whitelisted_not_allowed_in_background_message">Το MicroG GmsCore δεν έχει άδεια να τρέξει στο παρασκήνιο.\n\nΑκολουθήστε τον οδηγό \"Don\'t kill my app\" για το τηλέφωνό σας και εφαρμόστε τις οδηγίες στο MicroG.\n\nΑυτό απαιτείται για να λειτουργήσει η εφαρμογή.</string>
|
||||
<string name="gms_core_dialog_not_whitelisted_not_allowed_in_background_message">"Το MicroG GmsCore δεν έχει άδεια να εκτελείται στο παρασκήνιο.
|
||||
|
||||
Ακολουθήστε τον οδηγό \"Don't kill my app\" για το τηλέφωνό σας και εφαρμόστε τις οδηγίες στο MicroG.
|
||||
|
||||
Αυτό είναι απαραίτητο για τη λειτουργία της εφαρμογής."</string>
|
||||
<string name="gms_core_dialog_open_website_text">Άνοιγμα ιστοσελίδας</string>
|
||||
<string name="gms_core_dialog_not_whitelisted_using_battery_optimizations_message">Οι βελτιστοποιήσεις μπαταρίας στο MicroG GmsCore πρέπει να απενεργοποιηθούν για την αποφυγή προβλημάτων.\n\nΠατήστε το κουμπί «Συνέχεια» και απενεργοποιήστε τις βελτιστοποιήσεις μπαταρίας για το MicroG.</string>
|
||||
<string name="gms_core_dialog_not_whitelisted_using_battery_optimizations_message">"Οι βελτιστοποιήσεις μπαταρίας πρέπει να απενεργοποιηθούν για το MicroG GmsCore ώστε να αποφευχθούν προβλήματα.
|
||||
|
||||
Η απενεργοποίηση των βελτιστοποιήσεων μπαταρίας για το MicroG δεν θα επηρεάσει αρνητικά την κατανάλωση ενέργειας.
|
||||
|
||||
Πατήστε το κουμπί «Συνέχεια» και επιτρέψτε τις αλλαγές βελτιστοποίησης."</string>
|
||||
<string name="gms_core_dialog_continue_text">Συνέχεια</string>
|
||||
</patch>
|
||||
</app>
|
||||
@@ -81,8 +79,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_settings_screen_03_feed_title">Ροή</string>
|
||||
<string name="revanced_settings_screen_04_player_title">Οθόνη αναπαραγωγής</string>
|
||||
<string name="revanced_settings_screen_05_general_title">Γενική διάταξη</string>
|
||||
<string name="revanced_settings_screen_06_shorts_title">Shorts</string>
|
||||
<string name="revanced_settings_screen_07_seekbar_title">Γραμμή προόδου βίντεο</string>
|
||||
<string name="revanced_settings_screen_08_swipe_controls_title">Έλεγχος με κατακόρυφη σάρωση οθόνης</string>
|
||||
<string name="revanced_settings_screen_08_swipe_controls_title">Έλεγχος με σάρωση οθόνης</string>
|
||||
<string name="revanced_settings_screen_11_misc_title">Διάφορα</string>
|
||||
<string name="revanced_settings_screen_12_video_title">Βίντεο</string>
|
||||
</patch>
|
||||
@@ -106,7 +105,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_debug_toast_on_error_title">Εμφάνιση μηνυμάτων σφαλμάτων ReVanced</string>
|
||||
<string name="revanced_debug_toast_on_error_summary_on">Να εμφανίζεται μήνυμα στο κάτω μέρος της οθόνης σε περιπτώσεις σφαλμάτων</string>
|
||||
<string name="revanced_debug_toast_on_error_summary_off">Να μην εμφανίζεται μήνυμα στο κάτω μέρος της οθόνης σε περιπτώσεις σφαλμάτων</string>
|
||||
<string name="revanced_debug_toast_on_error_user_dialog_message">Η απενεργοποίηση των μηνυμάτων σφαλμάτων κρύβει όλες τις ειδοποιήσεις σφαλμάτων που αφορούν το ReVanced.\n\nΔεν θα ειδοποιήστε για τυχόν απρόβλεπτα γεγονότα.</string>
|
||||
<string name="revanced_debug_toast_on_error_user_dialog_message">"Η απενεργοποίηση των μηνυμάτων σφαλμάτων κρύβει όλες τις ειδοποιήσεις σφαλμάτων που αφορούν το ReVanced.
|
||||
|
||||
Δεν θα ειδοποιηθείτε για τυχόν απρόβλεπτα γεγονότα."</string>
|
||||
</patch>
|
||||
<patch id="layout.hide.general.hideLayoutComponentsPatch">
|
||||
<string name="revanced_disable_like_subscribe_glow_title">Απενεργοποίηση λάμψης των κουμπιών «Μου αρέσει» και «Εγγραφή»</string>
|
||||
@@ -125,7 +126,14 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_hide_channel_watermark_summary_on">Κρυμμένο</string>
|
||||
<string name="revanced_hide_channel_watermark_summary_off">Εμφανίζεται</string>
|
||||
<string name="revanced_hide_horizontal_shelves_title">Οριζόντιες ενότητες προτάσεων</string>
|
||||
<string name="revanced_hide_horizontal_shelves_summary_on">Οι ενότητες προτάσεων όπως:\n• Έκτακτη είδηση\n• Συνέχεια παρακολούθησης\n• Εξερευνήστε περισσότερα κανάλια\n• Αγορές\n•Παρακολουθήστε ξανά\nείναι κρυμμένες</string>
|
||||
<string name="revanced_hide_horizontal_shelves_summary_on">"Κρυμμένες
|
||||
|
||||
Αφορά τις ενότητες προτάσεων όπως:
|
||||
• Έκτακτη είδηση
|
||||
• Συνέχεια παρακολούθησης
|
||||
• Εξερευνήστε περισσότερα κανάλια
|
||||
• Αγορές
|
||||
• Παρακολουθήστε ξανά"</string>
|
||||
<string name="revanced_hide_horizontal_shelves_summary_off">Εμφανίζονται</string>
|
||||
<!-- 'Join' should be translated using the same localized wording YouTube displays.
|
||||
This appears in the video player for certain videos. -->
|
||||
@@ -153,9 +161,6 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_hide_timed_reactions_title">Συγχρονισμένες αντιδράσεις</string>
|
||||
<string name="revanced_hide_timed_reactions_summary_on">Κρυμμένες</string>
|
||||
<string name="revanced_hide_timed_reactions_summary_off">Εμφανίζονται</string>
|
||||
<string name="revanced_hide_search_result_shelf_header_title">Ενότητα αποτελεσμάτων αναζήτησης</string>
|
||||
<string name="revanced_hide_search_result_shelf_header_summary_on">Κρυμμένη</string>
|
||||
<string name="revanced_hide_search_result_shelf_header_summary_off">Εμφανίζεται</string>
|
||||
<string name="revanced_hide_channel_guidelines_title">Οδηγίες καναλιού</string>
|
||||
<string name="revanced_hide_channel_guidelines_summary_on">Κρυμμένες</string>
|
||||
<string name="revanced_hide_channel_guidelines_summary_off">Εμφανίζονται</string>
|
||||
@@ -202,7 +207,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_hide_playables_summary_on">Κρυμμένα</string>
|
||||
<string name="revanced_hide_playables_summary_off">Εμφανίζονται</string>
|
||||
<string name="revanced_hide_quick_actions_title">Γρήγορες ενέργειες σε πλήρη οθόνη</string>
|
||||
<string name="revanced_hide_quick_actions_summary_on">Κρυμμένες</string>
|
||||
<string name="revanced_hide_quick_actions_summary_on">Εμφανίζονται</string>
|
||||
<string name="revanced_hide_quick_actions_summary_off">Εμφανίζονται</string>
|
||||
<string name="revanced_hide_related_videos_title">Σχετικά βίντεο στις γρήγορες ενέργειες</string>
|
||||
<string name="revanced_hide_related_videos_summary_on">Κρυμμένα</string>
|
||||
@@ -252,6 +257,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_hide_filter_bar_feed_in_related_videos_summary_off">Εμφανίζεται</string>
|
||||
<string name="revanced_comments_screen_title">Σχόλια</string>
|
||||
<string name="revanced_comments_screen_summary">Απόκρυψη ή εμφάνιση στοιχείων στα σχόλια</string>
|
||||
<string name="revanced_hide_comments_chat_summary_title">Σύνοψη συνομιλίας</string>
|
||||
<string name="revanced_hide_comments_chat_summary_summary_on">Κρυμμένη</string>
|
||||
<string name="revanced_hide_comments_chat_summary_summary_off">Εμφανίζεται</string>
|
||||
<string name="revanced_hide_comments_by_members_header_title">Ετικέτα «Σχόλια από μέλη»</string>
|
||||
<string name="revanced_hide_comments_by_members_header_summary_on">Κρυμμένη</string>
|
||||
<string name="revanced_hide_comments_by_members_header_summary_off">Εμφανίζεται</string>
|
||||
@@ -274,7 +282,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_hide_doodles_title">YouTube Doodles</string>
|
||||
<string name="revanced_hide_doodles_summary_on">Κρυμμένα</string>
|
||||
<string name="revanced_hide_doodles_summary_off">Εμφανίζονται</string>
|
||||
<string name="revanced_hide_doodles_user_dialog_message">Τα YouTube Doodles εμφανίζονται για μερικές μέρες κάθε χρόνο.\n\nΑν ένα Doodle εμφανίζεται αυτόν τον καιρό στην περιοχή σας και η ρύθμιση απόκρυψης τους είναι ενεργοποιημένη, τότε η γραμμή φίλτρου κάτω από τη γραμμή αναζήτησης θα είναι επίσης κρυμμένη.</string>
|
||||
<string name="revanced_hide_doodles_user_dialog_message">"Τα YouTube Doodles εμφανίζονται για μερικές μέρες κάθε χρόνο.
|
||||
|
||||
Αν ένα YouTube Doodle εμφανίζεται αυτή τη στιγμή στην περιοχή σας και αυτή η ρύθμιση είναι ενεργοποιημένη, τότε η γραμμή φίλτρων κάτω από τη γραμμή αναζήτησης θα είναι κρυμμένη επίσης."</string>
|
||||
<string name="revanced_custom_filter_screen_title">Προσαρμοσμένο φίλτρο</string>
|
||||
<string name="revanced_custom_filter_screen_summary">Απόκρυψη στοιχείων χρησιμοποιώντας προσαρμοσμένα φίλτρα</string>
|
||||
<string name="revanced_custom_filter_title">Χρήση προσαρμοσμένου φίλτρου</string>
|
||||
@@ -282,7 +292,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_custom_filter_summary_off">Το προσαρμοσμένο φίλτρο είναι απενεργοποιημένο</string>
|
||||
<string name="revanced_custom_filter_strings_title">Προσαρμοσμένο φίλτρο</string>
|
||||
<!-- '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. -->
|
||||
<string name="revanced_custom_filter_strings_summary">Λίστα από συμβολοσειρές στοιχείων για φιλτράρισμα, διαχωρισμένες η μία κάτω από την άλλη</string>
|
||||
<string name="revanced_custom_filter_strings_summary">Λίστα από συμβολοσειρές στοιχείων για φιλτράρισμα, διαχωρισμένες σε νέες γραμμές</string>
|
||||
<string name="revanced_custom_filter_toast_invalid_syntax">Μη έγκυρο προσαρμοσμένο φίλτρο: %s</string>
|
||||
<string name="revanced_hide_keyword_content_screen_title">Απόκρυψη περιεχομένου λέξεων-κλειδιών</string>
|
||||
<string name="revanced_hide_keyword_content_screen_summary">Απόκρυψη βίντεο ροής και αναζήτησης χρησιμοποιώντας φίλτρα λέξεων-κλειδιών</string>
|
||||
@@ -298,9 +308,18 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_hide_keyword_content_phrases_title">Λέξεις-κλειδιά για απόκρυψη</string>
|
||||
<!-- For localization it is preferred, but not required, if 'LeBlanc' is replaced with a localized name or a familiar word that has upper case letters in the middle of the word.
|
||||
This is because keywords can be in any language, and showing an example in the localized script helps convey this. -->
|
||||
<string name="revanced_hide_keyword_content_phrases_summary">Λέξεις-κλειδιά και φράσεις προς απόκρυψη, διαχωρισμένες η μία κάτω από την άλλη\n\nΛέξεις-κλειδιά μπορεί να είναι ονόματα καναλιών ή οποιοδήποτε κείμενο εμφανίζεται σε τίτλους βίντεο\n\nΔώστε προσοχή στα πεζά και κεφάλαια γράμματα διότι ισχύει ευαισθησία πεζότητας (π.χ.: iPhone, TikTok, LeBlanc)</string>
|
||||
<string name="revanced_hide_keyword_content_phrases_summary">"Λέξεις-κλειδιά και φράσεις προς απόκρυψη, διαχωρισμένες σε νέες γραμμές
|
||||
|
||||
Οι λέξεις-κλειδιά μπορεί να είναι ονόματα καναλιών ή κείμενο που εμφανίζεται σε τίτλους των βίντεο
|
||||
|
||||
Οι λέξεις με κεφαλαία γράμματα στη μέση πρέπει να είναι ευαίσθητες στην πεζότητα (π.χ: iPhone, TikTok, LeBlanc)"</string>
|
||||
<string name="revanced_hide_keyword_content_about_title">Σχετικά με το φιλτράρισμα λέξεων-κλειδιών</string>
|
||||
<string name="revanced_hide_keyword_content_about_summary">Οι καρτέλες «Αρχική», «Εγγραφές» και τα αποτελέσματα αναζήτησης φιλτράρονται για απόκρυψη περιεχομένου που ταιριάζει με τις λέξεις-κλειδιά\n\nΠεριορισμοί\n• Τα Shorts δε γίνεται να κρυφτούν με βάση το όνομα καναλιού\n• Κάποια στοιχεία UI ενδέχεται να μην κρύβονται\n• Η αναζήτηση για μια λέξη-κλειδί ενδέχεται να μην εμφανίζει κανένα αποτέλεσμα</string>
|
||||
<string name="revanced_hide_keyword_content_about_summary">"Οι καρτέλες «Αρχική», «Εγγραφές» και τα αποτελέσματα αναζήτησης φιλτράρονται για απόκρυψη περιεχομένου που ταιριάζει με τις λέξεις-κλειδιά
|
||||
|
||||
Περιορισμοί:
|
||||
• Τα Shorts δεν γίνεται να κρύβονται με βάση το όνομα καναλιού
|
||||
• Κάποια στοιχεία UI ενδέχεται να μην κρύβονται
|
||||
• Η αναζήτηση για μια λέξη-κλειδί ενδέχεται να μην εμφανίζει κανένα αποτέλεσμα"</string>
|
||||
<string name="revanced_hide_keyword_content_about_whole_words_title">Ταίριασμα ολόκληρων λέξεων</string>
|
||||
<!-- Translations _must_ use a localized example. For languages that do not use spaces between words (Chinese, Japanese, etc) the English AI example should be used since no localized examples exist. Or if using machine translations, or if nobody wants to think of a localized example, then the English 'ai' example should be left as-is. -->
|
||||
<string name="revanced_hide_keyword_content_about_whole_words_summary">Περιβάλλοντας μια λέξη-κλειδί / φράση με διπλά εισαγωγικά θα αποτρέψει μερικές αντιστοιχίες των τίτλων βίντεο και των ονομάτων καναλιών<br><br>Για παράδειγμα,<br><b>\"ai\"</b> θα κρύψει το βίντεο: <b>How does AI work?</b><br>αλλά δεν θα κρύψει: <b>What does fair use mean?</b></string>
|
||||
@@ -316,7 +335,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_hide_general_ads_summary_on">Κρυμμένες</string>
|
||||
<string name="revanced_hide_general_ads_summary_off">Εμφανίζονται</string>
|
||||
<string name="revanced_hide_fullscreen_ads_title">Διαφημίσεις πλήρους οθόνης</string>
|
||||
<string name="revanced_hide_fullscreen_ads_summary_on">Οι διαφημίσεις πλήρους οθόνης είναι κρυμμένες\n\nΑυτή η δυνατότητα είναι διαθέσιμη μόνο για παλαιότερες συσκευές</string>
|
||||
<string name="revanced_hide_fullscreen_ads_summary_on">"Κρυμμένες
|
||||
|
||||
Αυτή η λειτουργία είναι διαθέσιμη μόνο για παλιότερες συσκευές"</string>
|
||||
<string name="revanced_hide_fullscreen_ads_summary_off">Οι διαφημίσεις πλήρους οθόνης εμφανίζονται</string>
|
||||
<string name="revanced_hide_buttoned_ads_title">Διαφημίσεις κουμπιών</string>
|
||||
<string name="revanced_hide_buttoned_ads_summary_on">Κρυμμένες</string>
|
||||
@@ -362,7 +383,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<patch id="interaction.copyvideourl.copyVideoUrlResourcePatch">
|
||||
<string name="revanced_share_copy_url_success">Η διεύθυνση URL αντιγράφηκε στο πρόχειρο</string>
|
||||
<string name="revanced_share_copy_url_timestamp_success">Η διεύθυνση URL αντιγράφηκε με χρονική σήμανση</string>
|
||||
<string name="revanced_copy_video_url_title">Εμφάνιση κουμπιού αντιγραφής URL βίντεο</string>
|
||||
<string name="revanced_copy_video_url_title">Εμφάνιση κουμπιού αντιγραφής 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_timestamp_title">Εμφάνιση κουμπιού αντιγραφής URL με χρονική σήμανση</string>
|
||||
@@ -490,11 +511,22 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_hide_subscriptions_button_summary_off">Εμφανίζεται</string>
|
||||
<!-- 'Notifications' should be translated using the same localized wording YouTube displays the tab. -->
|
||||
<string name="revanced_switch_create_with_notifications_button_title">Εναλλαγή κουμπιού «Δημιουργία» με κουμπί «Ειδοποιήσεις»</string>
|
||||
<string name="revanced_switch_create_with_notifications_button_summary_on">Γίνεται εναλλαγή του κουμπιού δημιουργίας σε κουμπί ειδοποιήσεων\n\nΣημείωση: Ενεργοποιώντας την εναλλαγή θα κρύβονται και οι διαφημίσεις βίντεο</string>
|
||||
<string name="revanced_switch_create_with_notifications_button_summary_on">"Γίνεται εναλλαγή θέσεων των κουμπιών «Δημιουργία» και «Ειδοποιήσεις»
|
||||
|
||||
Σημείωση: Η ενεργοποίηση αυτής της ρύθμισης εξαναγκάζει επίσης την απόκρυψη των διαφημίσεων βίντεο"</string>
|
||||
<string name="revanced_switch_create_with_notifications_button_summary_off">Δε γίνεται εναλλαγή του κουμπιού δημιουργίας σε κουμπί ειδοποιήσεων</string>
|
||||
<string name="revanced_hide_navigation_button_labels_title">Ονομασίες κουμπιών γραμμής πλοήγησης</string>
|
||||
<string name="revanced_hide_navigation_button_labels_summary_on">Κρυμμένες</string>
|
||||
<string name="revanced_hide_navigation_button_labels_summary_off">Εμφανίζονται</string>
|
||||
<string name="revanced_disable_translucent_status_bar_title">Απενεργοποίηση διαφανούς γραμμής κατάστασης</string>
|
||||
<string name="revanced_disable_translucent_status_bar_summary_on">Η γραμμή κατάστασης δεν είναι διαφανής</string>
|
||||
<string name="revanced_disable_translucent_status_bar_summary_off">Η διαφάνεια της γραμμής κατάστασης ορίζεται αυτόματα</string>
|
||||
<string name="revanced_disable_translucent_navigation_bar_light_title">Απενεργοποίηση διαφανούς γραμμής στο φωτεινό θέμα</string>
|
||||
<string name="revanced_disable_translucent_navigation_bar_light_summary_on">Η γραμμή πλοήγησης στο φωτεινό θέμα δεν είναι διαφανής</string>
|
||||
<string name="revanced_disable_translucent_navigation_bar_light_summary_off">Η διαφάνεια της γραμμής πλοήγησης στο φωτεινό θέμα ορίζεται αυτόματα</string>
|
||||
<string name="revanced_disable_translucent_navigation_bar_dark_title">Απενεργοποίηση ημιδιαφανούς γραμμής στο σκούρο θέμα</string>
|
||||
<string name="revanced_disable_translucent_navigation_bar_dark_summary_on">Η γραμμή πλοήγησης στο σκούρο θέμα δεν είναι διαφανής</string>
|
||||
<string name="revanced_disable_translucent_navigation_bar_dark_summary_off">Η διαφάνεια της γραμμής πλοήγησης στο σκούρο θέμα ορίζεται αυτόματα</string>
|
||||
</patch>
|
||||
<patch id="layout.hide.player.flyoutmenupanel.hidePlayerFlyoutMenuPatch">
|
||||
<string name="revanced_hide_player_flyout_title">Αναδυόμενο μενού ρυθμίσεων</string>
|
||||
@@ -692,7 +724,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_hide_shorts_sound_button_summary_off">Εμφανίζεται</string>
|
||||
<string name="revanced_hide_shorts_navigation_bar_title">Γραμμή πλοήγησης</string>
|
||||
<string name="revanced_hide_shorts_navigation_bar_summary_on">Η γραμμή πλοήγησης θα είναι κρυμμένη κατά την αναπαραγωγή Shorts</string>
|
||||
<string name="revanced_hide_shorts_navigation_bar_summary_off">Η γραμμή πλοήγησης θα εμφανίζεται κατά την αναπαραγωγή Shorts</string>
|
||||
<string name="revanced_hide_shorts_navigation_bar_summary_off">Η γραμμή πλοήγησης εμφανίζεται κατά την αναπαραγωγή Shorts</string>
|
||||
</patch>
|
||||
<patch id="layout.hide.suggestedvideoendscreen.disableSuggestedVideoEndScreenResourcePatch">
|
||||
<string name="revanced_disable_suggested_video_end_screen_title">Τελική οθόνη προτεινόμενων βίντεο</string>
|
||||
@@ -731,7 +763,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_ryd_enable_summary_off">Τα «Δεν μου αρέσει» δεν εμφανίζονται</string>
|
||||
<string name="revanced_ryd_shorts_title">Εμφάνιση στα Shorts</string>
|
||||
<string name="revanced_ryd_shorts_summary_on">Τα «Δεν μου αρέσει» εμφανίζονται στα Shorts</string>
|
||||
<string name="revanced_ryd_shorts_summary_on_disclaimer">Τα «Δεν μου αρέσει» εμφανίζονται στα Shorts\n\nΠεριορισμός: Τα «Δεν μου αρέσει» ενδέχεται να μην εμφανίζονται σε λειτουργία ανώνυμης περιήγησης</string>
|
||||
<string name="revanced_ryd_shorts_summary_on_disclaimer">"Τα «Δεν μου αρέσει» εμφανίζονται στα Shorts
|
||||
|
||||
Περιορισμός: Τα «Δεν μου αρέσει» ενδέχεται να μην εμφανίζονται σε λειτουργία ανώνυμης περιήγησης"</string>
|
||||
<string name="revanced_ryd_shorts_summary_off">Τα «Δεν μου αρέσει» δεν εμφανίζονται στα Shorts</string>
|
||||
<string name="revanced_ryd_dislike_percentage_title">Εμφάνιση ως ποσοστό</string>
|
||||
<string name="revanced_ryd_dislike_percentage_summary_on">Τα «Δεν μου αρέσει» εμφανίζονται ως ποσοστό</string>
|
||||
@@ -774,7 +808,11 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_seekbar_thumbnails_high_quality_summary_off">Οι μικρογραφίες της γραμμής προόδου είναι μέτριας ποιότητας</string>
|
||||
<string name="revanced_seekbar_thumbnails_high_quality_legacy_summary_on">Οι μικρογραφίες πλήρους οθόνης της γραμμής προόδου είναι υψηλής ποιότητας</string>
|
||||
<string name="revanced_seekbar_thumbnails_high_quality_legacy_summary_off">Οι μικρογραφίες πλήρους οθόνης της γραμμής προόδου είναι μέτριας ποιότητας</string>
|
||||
<string name="revanced_seekbar_thumbnails_high_quality_dialog_message">Αυτό θα επαναφέρει επίσης τις μικρογραφίες σε ζωντανές μεταδόσεις που δεν έχουν μικρογραφίες γραμμής προόδου.\n\nΟι μικρογραφίες της γραμμής προόδου θα χρησιμοποιούν την ίδια ποιότητα με το τρέχον βίντεο.\n\nΑυτή η ρύθμιση λειτουργεί καλύτερα με ποιότητα βίντεο 720p ή χαμηλότερη και όταν χρησιμοποιείτε μια πολύ γρήγορη σύνδεση στο διαδίκτυο.</string>
|
||||
<string name="revanced_seekbar_thumbnails_high_quality_dialog_message">"Αυτό θα επαναφέρει επίσης τις μικρογραφίες σε ζωντανές μεταδόσεις που δεν έχουν μικρογραφίες γραμμής προόδου.
|
||||
|
||||
Οι μικρογραφίες γραμμής αναζήτησης θα χρησιμοποιούν την ίδια ποιότητα με το τρέχον βίντεο.
|
||||
|
||||
Αυτή η δυνατότητα λειτουργεί καλύτερα με ποιότητα βίντεο 720p ή χαμηλότερη και όταν χρησιμοποιείται πολύ γρήγορη σύνδεση στο διαδίκτυο."</string>
|
||||
<string name="revanced_restore_old_seekbar_thumbnails_title">Παλιές μικρογραφίες γραμμής προόδου</string>
|
||||
<string name="revanced_restore_old_seekbar_thumbnails_summary_on">Οι μικρογραφίες προεπισκόπησης θα εμφανίζονται πάνω από τη γραμμή προόδου</string>
|
||||
<string name="revanced_restore_old_seekbar_thumbnails_summary_off">Οι μικρογραφίες προεπισκόπησης θα εμφανίζονται σε πλήρη οθόνη</string>
|
||||
@@ -837,7 +875,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_sb_settings_import_successful">Οι ρυθμίσεις εισήχθησαν επιτυχώς</string>
|
||||
<string name="revanced_sb_settings_import_failed">Η εισαγωγή απέτυχε: %s</string>
|
||||
<string name="revanced_sb_settings_export_failed">Η εξαγωγή απέτυχε: %s</string>
|
||||
<string name="revanced_sb_settings_revanced_export_user_id_warning">Οι ρυθμίσεις σας περιέχουν ένα ιδιωτικό αναγνωριστικό χρήστη SponsorBlock.\n\nΑυτό είναι σαν έναν κωδικό πρόσβασης και δεν πρέπει ποτέ να το μοιραστείτε.\n</string>
|
||||
<string name="revanced_sb_settings_revanced_export_user_id_warning">"Οι ρυθμίσεις σας περιέχουν ένα ιδιωτικό αναγνωριστικό χρήστη SponsorBlock.
|
||||
|
||||
Το αναγνωριστικό χρήστη σας είναι σαν κωδικός πρόσβασης και δεν πρέπει ποτέ να μοιράζεται."</string>
|
||||
<string name="revanced_sb_settings_revanced_export_user_id_warning_dismiss">Να μην εμφανιστεί ξανά</string>
|
||||
<string name="revanced_sb_diff_segments">Αλλαγή συμπεριφοράς τμημάτων</string>
|
||||
<string name="revanced_sb_segments_sponsor">Χορηγός</string>
|
||||
@@ -897,9 +937,10 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_sb_submit_failed_invalid">Αδυναμία υποβολής τμήματος: %s</string>
|
||||
<string name="revanced_sb_submit_failed_timeout">Το SponsorBlock είναι προσωρινά εκτός λειτουργίας</string>
|
||||
<string name="revanced_sb_submit_failed_unknown_error">Αδυναμία υποβολής τμήματος (κατάσταση: %1$d %2$s)</string>
|
||||
<string name="revanced_sb_submit_failed_rate_limit">Αδυναμία υποβολής τμήματος.\nΌριο συχνότητας (πάρα πολλά από τον ίδιο χρήστη ή την ίδια IP)</string>
|
||||
<string name="revanced_sb_submit_failed_rate_limit">Αδυναμία υποβολής τμήματος. Όριο Συχνότητας (πάρα πολλά από τον ίδιο χρήστη ή την IP)</string>
|
||||
<string name="revanced_sb_submit_failed_forbidden">Αδυναμία υποβολής του τμήματος: %s</string>
|
||||
<string name="revanced_sb_submit_failed_duplicate">Αδυναμία αποστολής του τμήματος.\nΥπάρχει ήδη</string>
|
||||
<string name="revanced_sb_submit_failed_duplicate">"Δεν είναι δυνατή η υποβολή του τμήματος.
|
||||
Υπάρχει ήδη"</string>
|
||||
<string name="revanced_sb_submit_succeeded">Το τμήμα υποβλήθηκε επιτυχώς</string>
|
||||
<!-- Toast shown if network connection times out. Translations of this should not be longer than the original English or the text can be clipped and not entirely shown. -->
|
||||
<string name="revanced_sb_sponsorblock_connection_failure_timeout">SponsorBlock προσωρινά μη διαθέσιμο (καθυστέρηση API)</string>
|
||||
@@ -922,7 +963,15 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_sb_new_segment_time_start">Χρόνος έναρξης του τμήματος</string>
|
||||
<string name="revanced_sb_new_segment_time_end">Χρόνος λήξης του τμήματος</string>
|
||||
<string name="revanced_sb_new_segment_confirm_title">Είναι σωστοί οι χρόνοι;</string>
|
||||
<string name="revanced_sb_new_segment_confirm_content">Το τμήμα είναι από\n\n%1$s\nσε\n%2$s\n\n(%3$s)\n\nΈτοιμο για υποβολή;</string>
|
||||
<string name="revanced_sb_new_segment_confirm_content">"Το τμήμα είναι από το
|
||||
|
||||
%1$s
|
||||
έως το
|
||||
%2$s
|
||||
|
||||
(%3$s)
|
||||
|
||||
Είστε έτοιμοι για υποβολή;"</string>
|
||||
<string name="revanced_sb_new_segment_start_is_before_end">Η αρχή πρέπει να είναι πριν από το τέλος</string>
|
||||
<string name="revanced_sb_new_segment_mark_locations_first">Σημειώστε δύο σημεία στην γραμμή προόδου πρώτα</string>
|
||||
<string name="revanced_sb_new_segment_preview_segment_first">Κάντε προεπισκόπηση του τμήματος, και σιγουρευτείτε ότι παραλείπεται σωστά</string>
|
||||
@@ -964,7 +1013,11 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_spoof_app_version_title">Τροποποίηση έκδοσης εφαρμογής</string>
|
||||
<string name="revanced_spoof_app_version_summary_on">Η έκδοση τροποποιείται</string>
|
||||
<string name="revanced_spoof_app_version_summary_off">Η έκδοση δεν τροποποιείται</string>
|
||||
<string name="revanced_spoof_app_version_user_dialog_message">Η έκδοση της εφαρμογής YouTube θα τροποποιηθεί σε παλιότερη.\n\nΑυτό θα αλλάξει την εμφάνιση και τα χαρακτηριστικά της εφαρμογής, αλλά ενδέχεται να εμφανιστούν άγνωστες παρενέργειες.\n\nΑν αργότερα απενεργοποιηθεί, συνιστάται η εκκαθάριση των δεδομένων της εφαρμογής για την αποφυγή σφαλμάτων UI.</string>
|
||||
<string name="revanced_spoof_app_version_user_dialog_message">"Η έκδοση της εφαρμογής YouTube θα παραποιηθεί σε παλιότερη.
|
||||
|
||||
Αυτό θα αλλάξει την εμφάνιση και τα χαρακτηριστικά της εφαρμογής, αλλά ενδέχεται να εμφανιστούν άγνωστες παρενέργειες.
|
||||
|
||||
Αν αργότερα απενεργοποιηθεί, συνιστάται η εκκαθάριση δεδομένων της εφαρμογής για την αποφυγή σφαλμάτων UI."</string>
|
||||
<!-- It is ideal, but not required, if the text here appears is alphabetically after the text used for 'revanced_spoof_app_version_title'.
|
||||
This is because the 'General layout' menu uses alphabetic sorting, and it functionally works better if the spoof target selector appears below the 'Spoof app version' UI switch -->
|
||||
<string name="revanced_spoof_app_version_target_title">Έκδοση τροποποίησης της εφαρμογής</string>
|
||||
@@ -976,7 +1029,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_spoof_app_version_target_legacy_entry_4">17.33.42 - Επαναφορά ενότητας λίστας αναπαραγωγής παλιού στυλ</string>
|
||||
</patch>
|
||||
<patch id="layout.startpage.changeStartPagePatch">
|
||||
<string name="revanced_change_start_page_title">Ορισμός αρχικής σελίδας</string>
|
||||
<string name="revanced_change_start_page_title">Αλλαγή της αρχικής σελίδας</string>
|
||||
<string name="revanced_change_start_page_entry_default">Προεπιλογή</string>
|
||||
<string name="revanced_change_start_page_entry_browse">Περιήγηση καναλιών</string>
|
||||
<string name="revanced_change_start_page_entry_explore">Εξερεύνηση</string>
|
||||
@@ -984,7 +1037,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_change_start_page_entry_history">Ιστορικό</string>
|
||||
<string name="revanced_change_start_page_entry_library">Βιβλιοθήκη</string>
|
||||
<string name="revanced_change_start_page_entry_liked_videos">Βίντεο που σας αρέσουν</string>
|
||||
<string name="revanced_change_start_page_entry_live">Live</string>
|
||||
<string name="revanced_change_start_page_entry_live">Άμεση</string>
|
||||
<string name="revanced_change_start_page_entry_movies">Ταινίες</string>
|
||||
<string name="revanced_change_start_page_entry_music">Μουσική</string>
|
||||
<string name="revanced_change_start_page_entry_search">Αναζήτηση</string>
|
||||
@@ -998,6 +1051,12 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_disable_resuming_shorts_player_summary_on">Η αναπαραγωγή Shorts δε θα συνεχίζεται κατά την εκκίνηση της εφαρμογής</string>
|
||||
<string name="revanced_disable_resuming_shorts_player_summary_off">Η αναπαραγωγή Shorts θα συνεχίζεται κατά την εκκίνηση της εφαρμογής</string>
|
||||
</patch>
|
||||
<patch id="layout.shortsplayer.shortsPlayerTypePatch">
|
||||
<string name="revanced_shorts_player_type_title">Άνοιγμα Shorts με</string>
|
||||
<string name="revanced_shorts_player_type_shorts">Οθόνη αναπαραγωγής Shorts</string>
|
||||
<string name="revanced_shorts_player_type_regular_player">Οθόνη αναπαραγωγής κανονικών βίντεο </string>
|
||||
<string name="revanced_shorts_player_type_regular_player_fullscreen">Πλήρη οθόνη αναπαραγωγής κανονικών βίντεο </string>
|
||||
</patch>
|
||||
<patch id="layout.shortsautoplay.shortsAutoplayPatch">
|
||||
<string name="revanced_shorts_autoplay_title">Αυτόματη αναπαραγωγή Shorts</string>
|
||||
<string name="revanced_shorts_autoplay_summary_on">Τα επόμενα Shorts θα αναπαράγονται αυτόματα</string>
|
||||
@@ -1017,7 +1076,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_miniplayer_screen_summary">Αλλάξτε το στυλ της ελαχιστοποιημένης οθόνης αναπαραγωγής</string>
|
||||
<string name="revanced_miniplayer_type_title">Τύπος ελαχιστοποιημένης οθόνης αναπαραγωγής</string>
|
||||
<string name="revanced_miniplayer_type_entry_0">Ανενεργή</string>
|
||||
<string name="revanced_miniplayer_type_entry_1">Αρχικός</string>
|
||||
<string name="revanced_miniplayer_type_entry_1">Προεπιλογή</string>
|
||||
<string name="revanced_miniplayer_type_entry_2">Ελάχιστη</string>
|
||||
<string name="revanced_miniplayer_type_entry_3">Ταμπλετ</string>
|
||||
<string name="revanced_miniplayer_type_entry_4">Μοντέρνα 1</string>
|
||||
@@ -1027,19 +1086,28 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_miniplayer_rounded_corners_summary_on">Οι γωνίες είναι στρογγυλεμένες</string>
|
||||
<string name="revanced_miniplayer_rounded_corners_summary_off">Οι γωνίες είναι τετράγωνες</string>
|
||||
<string name="revanced_miniplayer_double_tap_action_title">Διπλό πάτημα & τσίμπημα για αλλαγή μεγέθους</string>
|
||||
<string name="revanced_miniplayer_double_tap_action_summary_on">Η λειτουργία διπλού πατήματος και τσιμπήματος για αλλαγή μεγέθους είναι ενεργοποιημένη\n\n• Πατήστε δύο φορές για να αυξήσετε το μέγεθος της ελαχιστοποιημένης οθόνης\n• Πατήστε ξανά δύο φορές για επαναφορά στο αρχικό της μέγεθος</string>
|
||||
<string name="revanced_miniplayer_double_tap_action_summary_on">"Η λειτουργία διπλού πατήματος και τσιμπήματος για αλλαγή μεγέθους είναι ενεργοποιημένη
|
||||
|
||||
• Πατήστε δύο φορές για να αυξήσετε το μέγεθος της ελαχιστοποιημένης οθόνης
|
||||
• Πατήστε ξανά δύο φορές για επαναφορά στο αρχικό της μέγεθος"</string>
|
||||
<string name="revanced_miniplayer_double_tap_action_summary_off">Η λειτουργία διπλού πατήματος και τσιμπήματος για αλλαγή μεγέθους είναι απενεργοποιημένη</string>
|
||||
<string name="revanced_miniplayer_drag_and_drop_title">Λειτουργία μεταφοράς και απόθεσης</string>
|
||||
<string name="revanced_miniplayer_drag_and_drop_summary_on">Η λειτουργία μεταφοράς και απόθεσης είναι ενεργοποιημένη\n\nΗ ελαχιστοποιημένη οθόνη αναπαραγωγής μπορεί να μετακινηθεί σε οποιαδήποτε γωνία της οθόνης</string>
|
||||
<string name="revanced_miniplayer_drag_and_drop_summary_on">"Η λειτουργία μεταφοράς και απόθεσης είναι ενεργοποιημένη
|
||||
|
||||
Η ελαχιστοποιημένη οθόνη αναπαραγωγής μπορεί να μετακινηθεί σε οποιαδήποτε γωνία της οθόνης"</string>
|
||||
<string name="revanced_miniplayer_drag_and_drop_summary_off">Η λειτουργία μεταφοράς και απόθεσης είναι απενεργοποιημένη</string>
|
||||
<string name="revanced_miniplayer_horizontal_drag_title">Ενεργοποίηση οριζόντιας χειρονομίας απόρριψης</string>
|
||||
<string name="revanced_miniplayer_horizontal_drag_summary_on">Η οριζόντια χειρονομία είναι ενεργή\n\nΗ ελαχιστοποιημένη οθόνη μπορεί να συρθεί εκτός οθόνης προς τα αριστερά ή δεξιά</string>
|
||||
<string name="revanced_miniplayer_horizontal_drag_summary_on">"Η χειρονομία οριζόντιας σύρσης είναι ενεργοποιημένη
|
||||
|
||||
Η ελαχιστοποιημένη οθόνη μπορεί να συρθεί εκτός οθόνης προς τα αριστερά ή δεξιά"</string>
|
||||
<string name="revanced_miniplayer_horizontal_drag_summary_off">Η οριζόντια χειρονομία είναι ανενεργή</string>
|
||||
<string name="revanced_miniplayer_hide_expand_close_title">Κουμπί κλεισίματος</string>
|
||||
<string name="revanced_miniplayer_hide_expand_close_summary_on">Κρυμμένο</string>
|
||||
<string name="revanced_miniplayer_hide_expand_close_summary_off">Εμφανίζεται</string>
|
||||
<string name="revanced_miniplayer_hide_expand_close_legacy_title">Κουμπιά επέκτασης και κλεισίματος</string>
|
||||
<string name="revanced_miniplayer_hide_expand_close_legacy_summary_on">Κρυμμένα\n\nΣύρετε για επέκταση ή κλείσιμο</string>
|
||||
<string name="revanced_miniplayer_hide_expand_close_legacy_summary_on">"Κρυμμένα
|
||||
|
||||
Σύρετε την ελαχιστοποιημένη οθόνη αναπαραγωγής για επέκταση ή κλείσιμο του βίντεο"</string>
|
||||
<string name="revanced_miniplayer_hide_expand_close_legacy_summary_off">Εμφανίζονται</string>
|
||||
<string name="revanced_miniplayer_hide_subtext_title">Κείμενα στην οθόνη αναπαραγωγής</string>
|
||||
<string name="revanced_miniplayer_hide_subtext_summary_on">Κρυμμένα</string>
|
||||
@@ -1070,7 +1138,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<patch id="layout.thumbnails.bypassImageRegionRestrictionsPatch">
|
||||
<string name="revanced_bypass_image_region_restrictions_title">Παράκαμψη μπλοκαρίσματος φόρτωσης εικόνων</string>
|
||||
<string name="revanced_bypass_image_region_restrictions_summary_on">Χρησιμοποιείται το domain yt4.ggpht.com για την φόρτωση εικόνων</string>
|
||||
<string name="revanced_bypass_image_region_restrictions_summary_off">Χρησιμοποιείται το αρχικό domain για την φόρτωση εικόνων\n\nΗ ενεργοποίηση αυτής της ρύθμισης μπορεί να διορθώσει την φόρτωση εικόνων που είναι μπλοκαρισμένες σε κάποιες περιοχές</string>
|
||||
<string name="revanced_bypass_image_region_restrictions_summary_off">"Χρησιμοποιείται το αρχικό domain για την φόρτωση εικόνων
|
||||
|
||||
Η ενεργοποίηση αυτής της ρύθμισης μπορεί να διορθώσει την φόρτωση εικόνων που είναι μπλοκαρισμένες σε ορισμένες περιοχές"</string>
|
||||
</patch>
|
||||
<patch id="layout.thumbnails.alternativeThumbnailsPatch">
|
||||
<!-- 'Home' should be translated using the same localized wording YouTube displays for the home tab. -->
|
||||
@@ -1085,7 +1155,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_alt_thumbnail_options_entry_2">DeArrow & Αρχικές μικρογραφίες</string>
|
||||
<string name="revanced_alt_thumbnail_options_entry_3">DeArrow & Ακίνητα καρέ</string>
|
||||
<string name="revanced_alt_thumbnail_options_entry_4">Ακίνητα καρέ</string>
|
||||
<string name="revanced_alt_thumbnail_dearrow_about_summary">Το DeArrow παρέχει μικρογραφίες από το κοινό για τα βίντεο. Οι μικρογραφίες αυτές είναι συχνά πιο σχετικές από εκείνες που παρέχει το ίδιο το YouTube. Εάν ενεργοποιηθεί, οι διευθύνσεις URL των βίντεο θα στέλνονται στον διακομιστή API χωρίς να στέλνονται άλλα δεδομένα. Αν ένα βίντεο δεν έχει μικρογραφίες DeArrow, θα εμφανιστούν είτε οι αρχικές του μικρογραφίες είτε λήψεις ακίνητων καρέ.\n\nΠατήστε για να μάθετε περισσότερα για το DeArrow</string>
|
||||
<string name="revanced_alt_thumbnail_dearrow_about_summary">"Το DeArrow παρέχει μικρογραφίες από το κοινό για τα βίντεο. Οι μικρογραφίες αυτές είναι συχνά πιο σχετικές από εκείνες που παρέχει το ίδιο το YouTube. Αν ενεργοποιηθεί, οι διευθύνσεις URL των βίντεο θα στέλνονται στον διακομιστή API χωρίς να στέλνονται άλλα δεδομένα. Αν κάποιο βίντεο δεν έχει μικρογραφίες DeArrow, θα εμφανιστούν είτε οι αρχικές του μικρογραφίες είτε λήψεις ακίνητων καρέ.
|
||||
|
||||
Πατήστε για να μάθετε περισσότερα για το DeArrow"</string>
|
||||
<string name="revanced_alt_thumbnail_dearrow_connection_toast_title">Εμφάνιση μηνύματος αν το API δεν είναι διαθέσιμο</string>
|
||||
<string name="revanced_alt_thumbnail_dearrow_connection_toast_summary_on">Να εμφανίζεται μήνυμα στο κάτω μέρος της οθόνης αν το DeArrow δεν είναι διαθέσιμο</string>
|
||||
<string name="revanced_alt_thumbnail_dearrow_connection_toast_summary_off">Να μην εμφανίζεται μήνυμα στο κάτω μέρος της οθόνης αν το DeArrow δεν είναι διαθέσιμο</string>
|
||||
@@ -1124,8 +1196,12 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
</patch>
|
||||
<patch id="misc.dimensions.spoof.spoofDeviceDimensionsPatch">
|
||||
<string name="revanced_spoof_device_dimensions_title">Παραποίηση διαστάσεων συσκευής</string>
|
||||
<string name="revanced_spoof_device_dimensions_summary_on">Οι διαστάσεις συσκευής παραποιούνται\n\nΜπορεί να γίνουν διαθέσιμες υψηλότερες ποιότητες βίντεο, αλλά πιθανότατα να αντιμετωπίσετε μικρο-κολλήματα κατά την αναπαραγωγή, χειρότερη διάρκεια ζωής μπαταρίας και άλλες άγνωστες παρενέργειες</string>
|
||||
<string name="revanced_spoof_device_dimensions_summary_off">Οι διαστάσεις συσκευής δεν παραποιούνται\n\nΕνεργοποιώντας αυτή τη ρύθμιση μπορούν να γίνουν διαθέσιμες υψηλότερες ποιότητες βίντεο</string>
|
||||
<string name="revanced_spoof_device_dimensions_summary_on">"Οι διαστάσεις συσκευής παραποιούνται
|
||||
|
||||
Ενδέχεται να ξεκλειδωθούν υψηλότερες ποιότητες βίντεο, αλλά μπορεί να αντιμετωπίσετε κολλήματα αναπαραγωγής βίντεο, χειρότερη διάρκεια ζωής μπαταρίας και άλλες άγνωστες παρενέργειες"</string>
|
||||
<string name="revanced_spoof_device_dimensions_summary_off">"Οι διαστάσεις συσκευής δεν παραποιούνται
|
||||
|
||||
Η ενεργοποίηση αυτής της λειτουργίας μπορεί να ξεκλειδώσει υψηλότερες ποιότητες βίντεο"</string>
|
||||
<string name="revanced_spoof_device_dimensions_user_dialog_message">Η ενεργοποίηση αυτής της λειτουργίας μπορεί να προκαλέσει μικρο-κολλήματα κατά την αναπαραγωγή, χειρότερη διάρκεια ζωής μπαταρίας, και άλλες άγνωστες παρενέργειες.</string>
|
||||
</patch>
|
||||
<patch id="misc.gms.gmsCoreSupportResourcePatch">
|
||||
@@ -1148,16 +1224,21 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_remove_tracking_query_parameter_summary_off">Η παράμετρος παρακολούθησης δεν αφαιρείται από τους συνδέσμους στην κοινοποίηση</string>
|
||||
</patch>
|
||||
<patch id="misc.zoomhaptics.zoomHapticsPatch">
|
||||
<string name="revanced_disable_zoom_haptics_title">Κατάργηση απόκρισης δόνησης στο ζουμ</string>
|
||||
<string name="revanced_disable_zoom_haptics_title">Απενεργοποίηση απόκρισης δόνησης χειρονομίας ζουμ</string>
|
||||
<string name="revanced_disable_zoom_haptics_summary_on">Η απόκριση δόνησης είναι απενεργοποιημένη</string>
|
||||
<string name="revanced_disable_zoom_haptics_summary_off">Η απόκριση δόνησης είναι ενεργοποιημένη</string>
|
||||
</patch>
|
||||
<patch id="video.audio.forceOriginalAudioPatch">
|
||||
<string name="revanced_force_original_audio_title">Εξαναγκασμός αρχικού ήχου</string>
|
||||
<string name="revanced_force_original_audio_summary_on">Χρήση αρχικού ήχου</string>
|
||||
<string name="revanced_force_original_audio_summary_off">Χρήση προεπιλεγμένου ήχου</string>
|
||||
</patch>
|
||||
<patch id="video.quality.rememberVideoQualityPatch">
|
||||
<!-- Translations should use the same text as revanced_custom_playback_speeds_auto -->
|
||||
<string name="revanced_video_quality_default_entry_1">Αυτόματη</string>
|
||||
<string name="revanced_remember_video_quality_last_selected_title">Απομνημόνευση αλλαγών ποιότητας βίντεο</string>
|
||||
<string name="revanced_remember_video_quality_last_selected_summary_on">Οι αλλαγές ποιότητας θα ισχύουν για όλα τα βίντεο</string>
|
||||
<string name="revanced_remember_video_quality_last_selected_summary_off">Οι αλλαγές ποιότητας θα ισχύουν μόνο για το τρέχον βίντεο</string>
|
||||
<string name="revanced_remember_video_quality_last_selected_summary_on">Οι αλλαγές ποιότητας ισχύουν για όλα τα βίντεο</string>
|
||||
<string name="revanced_remember_video_quality_last_selected_summary_off">Οι αλλαγές ποιότητας ισχύουν μόνο για το τρέχον βίντεο</string>
|
||||
<string name="revanced_video_quality_default_wifi_title">Προεπιλεγμένη ποιότητα βίντεο με Wi-Fi</string>
|
||||
<string name="revanced_video_quality_default_mobile_title">Προεπιλεγμένη ποιότητα βίντεο με δεδομένα κινητής τηλεφωνίας</string>
|
||||
<string name="revanced_remember_video_quality_mobile">δεδομένων</string>
|
||||
@@ -1175,45 +1256,51 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_custom_speed_menu_summary_off">Το μενού προσαρμοσμένης ταχύτητας αναπαραγωγής δεν εμφανίζεται</string>
|
||||
<string name="revanced_custom_playback_speeds_title">Προσαρμοσμένες ταχύτητες αναπαραγωγής</string>
|
||||
<string name="revanced_custom_playback_speeds_summary">Προσθέστε ή αλλάξτε τις προσαρμοσμένες ταχύτητες αναπαραγωγής</string>
|
||||
<string name="revanced_custom_playback_speeds_invalid">Οι ταχύτητες πρέπει να είναι μικρότερες από %sx. Επαναφορά...</string>
|
||||
<string name="revanced_custom_playback_speeds_parse_exception">Μη έγκυρες ταχύτητες αναπαραγωγής. Επαναφορά...</string>
|
||||
<string name="revanced_custom_playback_speeds_invalid">Οι ταχύτητες πρέπει να είναι μικρότερες από %sx</string>
|
||||
<string name="revanced_custom_playback_speeds_parse_exception">Μη έγκυρες προσαρμοσμένες ταχύτητες αναπαραγωγής</string>
|
||||
<string name="revanced_custom_playback_speeds_auto">Αυτόματη</string>
|
||||
</patch>
|
||||
<patch id="video.speed.remember.rememberPlaybackSpeedPatch">
|
||||
<string name="revanced_remember_playback_speed_last_selected_title">Απομνημόνευση αλλαγών ταχύτητας αναπαραγωγής</string>
|
||||
<string name="revanced_remember_playback_speed_last_selected_summary_on">Οι αλλαγές ταχύτητας αναπαραγωγής θα ισχύουν για όλα τα βίντεο</string>
|
||||
<string name="revanced_remember_playback_speed_last_selected_summary_off">Οι αλλαγές ταχύτητας αναπαραγωγής θα ισχύουν μόνο για το τρέχον βίντεο</string>
|
||||
<string name="revanced_remember_playback_speed_last_selected_summary_on">Οι αλλαγές ταχύτητας αναπαραγωγής ισχύουν για όλα τα βίντεο</string>
|
||||
<string name="revanced_remember_playback_speed_last_selected_summary_off">Οι αλλαγές ταχύτητας αναπαραγωγής ισχύουν μόνο για το τρέχον βίντεο</string>
|
||||
<string name="revanced_playback_speed_default_title">Προεπιλεγμένη ταχύτητα αναπαραγωγής</string>
|
||||
<string name="revanced_remember_playback_speed_toast">Η προεπιλεγμένη ταχύτητα άλλαξε σε: %s</string>
|
||||
</patch>
|
||||
<patch id="video.videoqualitymenu.restoreOldVideoQualityMenuResourcePatch">
|
||||
<string name="revanced_restore_old_video_quality_menu_title">Επαναφορά παλιού μενού ποιότητας βίντεο</string>
|
||||
<string name="revanced_restore_old_video_quality_menu_summary_on">Το μενού ποιότητας βίντεο θα εμφανίζεται με το παλιό στυλ</string>
|
||||
<string name="revanced_restore_old_video_quality_menu_summary_off">Το μενού ποιότητας βίντεο θα εμφανίζεται με το νέο στυλ</string>
|
||||
<string name="revanced_restore_old_video_quality_menu_summary_on">Το μενού ποιότητας βίντεο εμφανίζεται με το παλιό στυλ</string>
|
||||
<string name="revanced_restore_old_video_quality_menu_summary_off">Το μενού ποιότητας βίντεο εμφανίζεται με το νέο στυλ</string>
|
||||
</patch>
|
||||
<patch id="interaction.seekbar.enableSlideToSeekPatch">
|
||||
<string name="revanced_slide_to_seek_title">Χειρονομία οριζόντιας σάρωσης για αναζήτηση</string>
|
||||
<string name="revanced_slide_to_seek_summary_on">Η αναζήτηση στη γραμμή προόδου με χειρονομία οριζόντιας σάρωσης είναι ενεργοποιημένη</string>
|
||||
<string name="revanced_slide_to_seek_summary_off">Η αναζήτηση στη γραμμή προόδου με χειρονομία σάρωσης είναι απενεργοποιημένη</string>
|
||||
<string name="revanced_slide_to_seek_title">Χειρονομία συρσίματος για αναζήτηση</string>
|
||||
<string name="revanced_slide_to_seek_summary_on">Η χειρονομία συρσίματος για αναζήτηση στη γραμμή προόδου είναι ενεργοποιημένη</string>
|
||||
<string name="revanced_slide_to_seek_summary_off">Η χειρονομία συρσίματος για αναζήτηση στη γραμμή προόδου είναι απενεργοποιημένη</string>
|
||||
</patch>
|
||||
<patch id="misc.fix.playback.spoofVideoStreamsPatch">
|
||||
<string name="revanced_spoof_video_streams_screen_title">Παραποίηση ροών βίντεο</string>
|
||||
<string name="revanced_spoof_video_streams_screen_summary">Παραποίηση ροών βίντεο του προγράμματος πελάτη για την αποφυγή προβλημάτων αναπαραγωγής</string>
|
||||
<string name="revanced_spoof_video_streams_title">Παραποίηση ροών βίντεο</string>
|
||||
<string name="revanced_spoof_video_streams_summary_on">Οι ροές βίντεο παραποιούνται</string>
|
||||
<string name="revanced_spoof_video_streams_summary_off">Οι ροές βίντεο δεν παραποιούνται\n\nΗ αναπαραγωγή βίντεο ενδέχεται να μην λειτουργεί</string>
|
||||
<string name="revanced_spoof_video_streams_summary_off">"Οι ροές βίντεο δεν παραποιούνται
|
||||
|
||||
Η αναπαραγωγή βίντεο ενδέχεται να μην λειτουργεί"</string>
|
||||
<string name="revanced_spoof_video_streams_user_dialog_message">Η απενεργοποίηση αυτής της ρύθμισης ενδέχεται να προκαλέσει προβλήματα αναπαραγωγής βίντεο.</string>
|
||||
<string name="revanced_spoof_video_streams_client_title">Προεπιλεγμένο πρόγραμμα πελάτη</string>
|
||||
<string name="revanced_spoof_video_streams_ios_force_avc_title">Εξαναγκασμός AVC (H.264)</string>
|
||||
<string name="revanced_spoof_video_streams_ios_force_avc_summary_on">Ο κωδικοποιητής βίντεο έχει οριστεί υποχρεωτικά σε AVC (H.264)</string>
|
||||
<string name="revanced_spoof_video_streams_ios_force_avc_summary_off">Ο κωδικοποιητής βίντεο ορίζεται αυτόματα</string>
|
||||
<string name="revanced_spoof_video_streams_ios_force_avc_user_dialog_message">Η ενεργοποίηση αυτού μπορεί να βελτιώσει τη διάρκεια ζωής της μπαταρίας και να διορθώσει κολλήματα αναπαραγωγής.\n\nΟ AVC έχει μέγιστη ανάλυση 1080p, ο κωδικοποιητής ήχου Opus δεν είναι διαθέσιμος και η αναπαραγωγή βίντεο θα καταναλώνει περισσότερα δεδομένα internet από τον VP9 ή τον AV1.</string>
|
||||
<string name="revanced_spoof_video_streams_ios_force_avc_user_dialog_message">"Η ενεργοποίηση αυτής της λειτουργίας μπορεί να βελτιώσει τη διάρκεια ζωής της μπαταρίας και να διορθώσει κολλήματα αναπαραγωγής.
|
||||
|
||||
Ο AVC ωστόσο έχει μέγιστη ανάλυση 1080p, ο κωδικοποιητής ήχου Opus δεν είναι διαθέσιμος και η αναπαραγωγή βίντεο θα χρησιμοποιεί περισσότερα δεδομένα internet από τον κωδικοποιητή VP9 ή τον AV1."</string>
|
||||
<string name="revanced_spoof_video_streams_about_ios_title">Παρενέργειες παραποίησης σε iOS</string>
|
||||
<string name="revanced_spoof_video_streams_about_ios_summary">• Ιδιωτικά βίντεο για παιδιά ενδεχομένως να μην αναπαράγονται\n• Οι ζωντανές μεταδόσεις ξεκινούν από την αρχή\n• Τα βίντεο ενδέχεται να λήξουν 1 δευτερόλεπτο νωρίτερα</string>
|
||||
<string name="revanced_spoof_video_streams_about_ios_summary">"• Τα ιδιωτικά βίντεο για παιδιά ενδέχεται να μην αναπαράγονται
|
||||
• Τα βίντεο τελειώνουν 1 δευτερόλεπτο νωρίτερα"</string>
|
||||
<string name="revanced_spoof_video_streams_about_android_vr_title">Παρενέργειες παραποίησης σε Android VR</string>
|
||||
<string name="revanced_spoof_video_streams_about_android_vr_summary">• Τα βίντεο για παιδιά ενδέχεται να μην αναπαράγονται\n• Το μενού «Κομμάτι ήχου» λείπει\n• Η λειτουργία «Σταθερή ένταση» δεν είναι διαθέσιμη</string>
|
||||
<string name="revanced_spoof_video_streams_language_">Οι ροές βίντεο παραποιούνται</string>
|
||||
<string name="revanced_spoof_video_streams_language_title">Προτιμώμενη γλώσσα ροής ήχου</string>
|
||||
<string name="revanced_spoof_video_streams_about_android_vr_summary">"• Τα βίντεο για παιδιά ενδέχεται να μην αναπαράγονται
|
||||
• Το μενού «Κομμάτι ήχου» λείπει
|
||||
• Η λειτουργία «Σταθερή ένταση» δεν είναι διαθέσιμη"</string>
|
||||
<string name="revanced_spoof_video_streams_language_title">Προεπιλεγμένη γλώσσα ροής ήχου</string>
|
||||
<string name="revanced_spoof_video_streams_language_DEFAULT">Γλώσσα εφαρμογής</string>
|
||||
<string name="revanced_spoof_video_streams_language_AR">Αραβικά</string>
|
||||
<string name="revanced_spoof_video_streams_language_AZ">Αζερμπαϊτζανικά</string>
|
||||
@@ -1276,8 +1363,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_block_audio_ads_summary_off">Οι διαφημίσεις ήχου δεν έχουν αποκλειστεί</string>
|
||||
</patch>
|
||||
<patch id="ad.embedded.embeddedAdsPatch">
|
||||
<string name="revanced_embedded_ads_service_unavailable">%s μη διαθέσιμο. Οι διαφημίσεις θα εμφανίζονται. Δοκιμάστε άλλη υπηρεσία αποκλεισμού διαφημίσεων.</string>
|
||||
<string name="revanced_embedded_ads_service_failed">Σφάλμα διακομιστή %s. Οι διαφημίσεις ενδέχεται να εμφανίζονται. Δοκιμάστε κάποια άλλη υπηρεσία αποκλεισμού διαφημίσεων.</string>
|
||||
<string name="revanced_embedded_ads_service_unavailable">%s δεν είναι διαθέσιμο, ενδέχεται να εμφανιστούν διαφημίσεις. Δοκιμάστε να αλλάξετε την υπηρεσία αποκλεισμού διαφημίσεων στις ρυθμίσεις.</string>
|
||||
<string name="revanced_embedded_ads_service_failed">%s επέστρεψε ένα σφάλμα, ενδέχεται να εμφανιστούν διαφημίσεις. Δοκιμάστε να αλλάξετε την υπηρεσία αποκλεισμού διαφημίσεων στις ρυθμίσεις.</string>
|
||||
<string name="revanced_block_embedded_ads_title">Αποκλεισμός ενσωματωμένων διαφημίσεων βίντεο</string>
|
||||
<string name="revanced_block_embedded_ads_entry_1">Ανενεργό</string>
|
||||
<string name="revanced_block_embedded_ads_entry_2">Διαμεσολαβητής Luminous</string>
|
||||
|
||||
@@ -1,34 +1,23 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
|
||||
Note: All strings must have a unique path, even if the same string is declared in two different apps.
|
||||
This is because Crowdin requires temporarily flattening this file and removing the <app> and <patch> elements.
|
||||
All strings must have a unique path, even if the same string is declared in two different apps.
|
||||
This is because Crowdin requires temporarily flattening this file and removing the <app> and <patch> elements.
|
||||
|
||||
# General guidelines and information for translating
|
||||
|
||||
## Strings parameters can be reordered to allow more flexible translations if the grammar should be changed.
|
||||
Strings with new lines must be raw strings where they're wrapped in quotes and new lines are not encoded.
|
||||
Raw strings still requires escaping embedded double quotes but escaping embedded single quotes is optional.
|
||||
|
||||
For example, the patches string:
|
||||
<string name="revanced_patches_string">You will arrive at %1$s in %2$s hours from now</string>
|
||||
Could be translated to another language using a rearranged grammar:
|
||||
<string name="revanced_patches_string">You will arrive %2$s hours from now at %1$s</string>
|
||||
Raw strings are required because Crowdin AI translations regularly gets confused and
|
||||
replace \n with an encoded new line character.
|
||||
|
||||
For Manager strings:
|
||||
You will arrive at ${destination} in ${count} hours from now
|
||||
Could be rearranged by changing the order of the ${} parameters:
|
||||
You will arrive ${count} hours from now at ${destination}
|
||||
Bad:
|
||||
<string name="summary_key">First \'item\' text\nSecond \"item\" text</string>
|
||||
|
||||
Reordering is particularly relevant when translating into right to left languages, or for any language with grammar that is noticeably different from English.
|
||||
Good:
|
||||
<string name="summary_key">"First 'item' text
|
||||
Second \"item\" text"</string>
|
||||
|
||||
## Single and double quotation marks must be escaped for patch strings (Manager does not require escaping any quotes).
|
||||
|
||||
All _patches_ single and double quotation marks must be escaped as \" or \'
|
||||
Forgetting to do this will cause that string to appear in app with no quotation characters.
|
||||
|
||||
Correct:
|
||||
<string name="revanced_string">You\'re correct. This is the \"correct\" way and this text will appear as expected in the app</string>
|
||||
Not correct:
|
||||
<string name="revanced_string">You're not correct. This is not the "correct" way and this text will not appear as expected the in app</string>
|
||||
-->
|
||||
<resources>
|
||||
<app id="shared">
|
||||
@@ -44,6 +33,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_check_environment_not_near_patch_time_invalid">La fecha de compilación del APK está dañada</string>
|
||||
</patch>
|
||||
<patch id="misc.settings.settingsResourcePatch">
|
||||
<string name="revanced_settings_title">ReVanced</string>
|
||||
<string name="revanced_settings_confirm_user_dialog_title">¿Desea continuar?</string>
|
||||
<string name="revanced_settings_reset">Restablecer</string>
|
||||
<string name="revanced_settings_restart_title">Actualizar y reiniciar</string>
|
||||
@@ -67,9 +57,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<!-- Translations of this should not be longer than the original English text, otherwise the text can be clipped and not entirely shown. -->
|
||||
<string name="gms_core_toast_not_installed_message">MicroG GmsCore no está instalado. Instálala.</string>
|
||||
<string name="gms_core_dialog_title">Acción necesaria</string>
|
||||
<string name="gms_core_dialog_not_whitelisted_not_allowed_in_background_message">MicroG GmsCore no tiene permiso para ejecutarse en segundo plano.\n\nSigue la guía \"No cerrar mi aplicación\" para tu teléfono y aplica las instrucciones a tu instalación de MicroG.\n\nEsto es necesario para que la aplicación funcione.</string>
|
||||
<string name="gms_core_dialog_not_whitelisted_not_allowed_in_background_message">"MicroG GmsCore no tiene permiso para ejecutarse en segundo plano."</string>
|
||||
<string name="gms_core_dialog_open_website_text">Abrir sitio web</string>
|
||||
<string name="gms_core_dialog_not_whitelisted_using_battery_optimizations_message">Las optimizaciones de batería de MicroG GmsCore deben estar deshabilitadas para evitar problemas.\n\nPulse el botón continuar y desactive las optimizaciones de la batería.</string>
|
||||
<string name="gms_core_dialog_not_whitelisted_using_battery_optimizations_message">"La optimización de la batería de MicroG GmsCore debe estar deshabilitada para evitar problemas."</string>
|
||||
<string name="gms_core_dialog_continue_text">Continuar</string>
|
||||
</patch>
|
||||
</app>
|
||||
@@ -81,6 +71,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_settings_screen_03_feed_title">Fuente</string>
|
||||
<string name="revanced_settings_screen_04_player_title">Reproductor</string>
|
||||
<string name="revanced_settings_screen_05_general_title">Diseño general</string>
|
||||
<string name="revanced_settings_screen_06_shorts_title">Shorts</string>
|
||||
<string name="revanced_settings_screen_07_seekbar_title">Barra</string>
|
||||
<string name="revanced_settings_screen_08_swipe_controls_title">Controles de deslizamiento</string>
|
||||
<string name="revanced_settings_screen_11_misc_title">Miscelánea</string>
|
||||
@@ -106,7 +97,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_debug_toast_on_error_title">Mostrar brindis en error ReVanced</string>
|
||||
<string name="revanced_debug_toast_on_error_summary_on">Toast mostrado si ocurre un error</string>
|
||||
<string name="revanced_debug_toast_on_error_summary_off">Toast no se muestra si ocurre un error</string>
|
||||
<string name="revanced_debug_toast_on_error_user_dialog_message">Desactivar los avisos (toasts) de errores oculta todas las notificaciones de error ReVanced\n\nNo se le notificará de ningún evento inesperado.</string>
|
||||
<string name="revanced_debug_toast_on_error_user_dialog_message">"Desactivar las notificaciones de error oculta todas las notificaciones de error de ReVanced."</string>
|
||||
</patch>
|
||||
<patch id="layout.hide.general.hideLayoutComponentsPatch">
|
||||
<string name="revanced_disable_like_subscribe_glow_title">Desactivar el brillo del botón de like / suscripción</string>
|
||||
@@ -125,7 +116,12 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_hide_channel_watermark_summary_on">Marca de agua oculta</string>
|
||||
<string name="revanced_hide_channel_watermark_summary_off">Marca de agua mostrada</string>
|
||||
<string name="revanced_hide_horizontal_shelves_title">Ocultar estantes horizontales</string>
|
||||
<string name="revanced_hide_horizontal_shelves_summary_on">Los estantes están ocultos como:\n• Últimas noticias\n• Continuar viendo\n• Explorar más canales\n• Comprar\n• Verlo de nuevo</string>
|
||||
<string name="revanced_hide_horizontal_shelves_summary_on">"Los estantes están ocultos, tales como:
|
||||
• Noticias de última hora
|
||||
• Continuar viendo
|
||||
• Explorar más canales
|
||||
• Compras
|
||||
• Verlo de nuevo"</string>
|
||||
<string name="revanced_hide_horizontal_shelves_summary_off">Se muestran las estanterías</string>
|
||||
<!-- 'Join' should be translated using the same localized wording YouTube displays.
|
||||
This appears in the video player for certain videos. -->
|
||||
@@ -153,9 +149,6 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_hide_timed_reactions_title">Ocultar reacciones temporizadas</string>
|
||||
<string name="revanced_hide_timed_reactions_summary_on">Las reacciones temporizadas están ocultas</string>
|
||||
<string name="revanced_hide_timed_reactions_summary_off">Se muestran reacciones temporizadas</string>
|
||||
<string name="revanced_hide_search_result_shelf_header_title">Ocultar la cabecera de resultados de búsqueda</string>
|
||||
<string name="revanced_hide_search_result_shelf_header_summary_on">Encabezado de estante oculto</string>
|
||||
<string name="revanced_hide_search_result_shelf_header_summary_off">Encabezado del estante se muestra</string>
|
||||
<string name="revanced_hide_channel_guidelines_title">Ocultar pautas de canal</string>
|
||||
<string name="revanced_hide_channel_guidelines_summary_on">Las pautas del canal están ocultas</string>
|
||||
<string name="revanced_hide_channel_guidelines_summary_off">Se muestran las pautas del canal</string>
|
||||
@@ -252,6 +245,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_hide_filter_bar_feed_in_related_videos_summary_off">Mostrar en vídeos relacionados</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_hide_comments_chat_summary_title">Ocultar \'Resumen del chat\'</string>
|
||||
<string name="revanced_hide_comments_chat_summary_summary_on">El resumen de chat está oculto</string>
|
||||
<string name="revanced_hide_comments_chat_summary_summary_off">El resumen del chat se muestra</string>
|
||||
<string name="revanced_hide_comments_by_members_header_title">Ocultar encabezado \'Comentarios por miembros\'</string>
|
||||
<string name="revanced_hide_comments_by_members_header_summary_on">El encabezado \'Comentarios por miembros\' está oculto</string>
|
||||
<string name="revanced_hide_comments_by_members_header_summary_off">La cabecera \'Comentarios por miembros\' se muestra</string>
|
||||
@@ -274,7 +270,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_hide_doodles_title">Ocultar YouTube Doodles</string>
|
||||
<string name="revanced_hide_doodles_summary_on">Barra de búsqueda Doodles están ocultos</string>
|
||||
<string name="revanced_hide_doodles_summary_off">Mostrar la barra de búsqueda Doodles</string>
|
||||
<string name="revanced_hide_doodles_user_dialog_message">Los Doodles de YouTube aparecen unos pocos días cada año.\n\nSi un Doodle se muestra actualmente en tu región y esta opción de ocultación está activada, entonces la barra de filtro bajo la barra de búsqueda también se ocultará.</string>
|
||||
<string name="revanced_hide_doodles_user_dialog_message">"Los doodles de YouTube se muestran durante unos días al año.
|
||||
|
||||
Si un doodle se está mostrando actualmente en tu región y este ajuste de ocultación está activado, la barra de filtro situada debajo de la barra de búsqueda también estará oculta."</string>
|
||||
<string name="revanced_custom_filter_screen_title">Filtro personalizado</string>
|
||||
<string name="revanced_custom_filter_screen_summary">Ocultar componentes usando filtros personalizados</string>
|
||||
<string name="revanced_custom_filter_title">Activar filtro personalizado</string>
|
||||
@@ -298,9 +296,18 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_hide_keyword_content_phrases_title">Palabras clave a ocultar</string>
|
||||
<!-- For localization it is preferred, but not required, if 'LeBlanc' is replaced with a localized name or a familiar word that has upper case letters in the middle of the word.
|
||||
This is because keywords can be in any language, and showing an example in the localized script helps convey this. -->
|
||||
<string name="revanced_hide_keyword_content_phrases_summary">Palabras clave y frases para ocultar, separadas por nuevas líneas\n\nLas palabras clave pueden ser nombres de canales o cualquier texto que se muestre en los títulos de vídeo\n\nLas palabras con letras mayúsculas en el medio deben ser ingresadas con la mayúscula (por ejemplo: iPhone, TikTok, LeBlanc)</string>
|
||||
<string name="revanced_hide_keyword_content_phrases_summary">"Las palabras y frases que se ocultan, separadas por nuevas líneas
|
||||
|
||||
Las palabras clave pueden ser nombres de canales o cualquier texto que aparezca en los títulos de los vídeos
|
||||
|
||||
Las palabras con mayúsculas en medio deben introducirse con las mayúsculas (es decir, iPhone, TikTok, LeBlanc)"</string>
|
||||
<string name="revanced_hide_keyword_content_about_title">Acerca del filtrado de palabras clave</string>
|
||||
<string name="revanced_hide_keyword_content_about_summary">Los resultados de inicio/suscripción/búsqueda se filtran para ocultar el contenido que coincide con las frases de palabras clave\n\nLimitaciones\n• Los cortos no se pueden ocultar con el nombre del canal\n• Algunos componentes de la interfaz pueden no estar ocultos\n• Buscar una palabra clave no puede mostrar resultados</string>
|
||||
<string name="revanced_hide_keyword_content_about_summary">"Los resultados de búsqueda de Home/Suscripción/Búsqueda se filtran para ocultar el contenido que coincida con las frases de palabras clave
|
||||
|
||||
Limitaciones
|
||||
• Los vídeos cortos no se pueden ocultar por nombre de canal
|
||||
• Es posible que algunos componentes de la interfaz de usuario no estén ocultos
|
||||
• La búsqueda de una palabra clave puede no mostrar ningún resultado"</string>
|
||||
<string name="revanced_hide_keyword_content_about_whole_words_title">Coincidir palabras completas</string>
|
||||
<!-- Translations _must_ use a localized example. For languages that do not use spaces between words (Chinese, Japanese, etc) the English AI example should be used since no localized examples exist. Or if using machine translations, or if nobody wants to think of a localized example, then the English 'ai' example should be left as-is. -->
|
||||
<string name="revanced_hide_keyword_content_about_whole_words_summary">Rodear una palabra clave/frase con comillas dobles evitará las coincidencias parciales de títulos de vídeo y nombres de canales<br><br>Por ejemplo,<br><b>\"ai\"</b> ocultará el vídeo: <b>¿Cómo funciona la AI?</b><br>pero no ocultará: <b>¿Quieres aprender a bailar?</b></string>
|
||||
@@ -316,7 +323,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_hide_general_ads_summary_on">Los anuncios generales están ocultos</string>
|
||||
<string name="revanced_hide_general_ads_summary_off">Se muestran anuncios generales</string>
|
||||
<string name="revanced_hide_fullscreen_ads_title">Ocultar anuncios a pantalla completa</string>
|
||||
<string name="revanced_hide_fullscreen_ads_summary_on">Los anuncios a pantalla completa están ocultos\n\nEsta función solo está disponible para dispositivos más antiguos</string>
|
||||
<string name="revanced_hide_fullscreen_ads_summary_on">"Los anuncios a pantalla completa están ocultos
|
||||
|
||||
Esta función solo está disponible para dispositivos antiguos"</string>
|
||||
<string name="revanced_hide_fullscreen_ads_summary_off">Se muestran anuncios a pantalla completa</string>
|
||||
<string name="revanced_hide_buttoned_ads_title">Ocultar anuncios botonados</string>
|
||||
<string name="revanced_hide_buttoned_ads_summary_on">Los anuncios botonados están ocultos</string>
|
||||
@@ -418,7 +427,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_swipe_lowest_value_enable_auto_brightness_title">Activar gesto de brillo automático</string>
|
||||
<string name="revanced_swipe_lowest_value_enable_auto_brightness_summary_on">Deslizar hacia abajo hasta el valor más bajo del gesto de brillo permite el brillo automático</string>
|
||||
<string name="revanced_swipe_lowest_value_enable_auto_brightness_summary_off">Deslizar hacia abajo hasta el valor más bajo no habilita el brillo automático</string>
|
||||
<string name="revanced_swipe_lowest_value_enable_auto_brightness_overlay_text">Auto</string>
|
||||
<string name="revanced_swipe_lowest_value_enable_auto_brightness_overlay_text">Automático</string>
|
||||
<string name="revanced_swipe_overlay_timeout_title">Tiempo de espera del deslizado</string>
|
||||
<string name="revanced_swipe_overlay_timeout_summary">La cantidad de milisegundos que la superposición es visible</string>
|
||||
<string name="revanced_swipe_text_overlay_size_title">Deslizar tamaño de texto superpuesto</string>
|
||||
@@ -490,11 +499,22 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_hide_subscriptions_button_summary_off">Se muestra el botón Suscripciones</string>
|
||||
<!-- 'Notifications' should be translated using the same localized wording YouTube displays the tab. -->
|
||||
<string name="revanced_switch_create_with_notifications_button_title">Cambiar Crear con Notificaciones</string>
|
||||
<string name="revanced_switch_create_with_notifications_button_summary_on">El botón Crear cambia con el botón de Notificaciones\n\nNota: Activar esto también oculta anuncios de vídeo por la fuerza</string>
|
||||
<string name="revanced_switch_create_with_notifications_button_summary_on">"El botón Crear se cambia por el botón Notificaciones
|
||||
|
||||
Nota: Habilitar esto también oculta a la fuerza los anuncios de vídeo"</string>
|
||||
<string name="revanced_switch_create_with_notifications_button_summary_off">El botón Crear no se cambia con el botón de notificaciones</string>
|
||||
<string name="revanced_hide_navigation_button_labels_title">Ocultar etiquetas de botón de navegación</string>
|
||||
<string name="revanced_hide_navigation_button_labels_summary_on">Las etiquetas están ocultas</string>
|
||||
<string name="revanced_hide_navigation_button_labels_summary_off">Las etiquetas se muestran</string>
|
||||
<string name="revanced_disable_translucent_status_bar_title">Desactivar la barra de estado translúcida</string>
|
||||
<string name="revanced_disable_translucent_status_bar_summary_on">La barra de estado es opaca</string>
|
||||
<string name="revanced_disable_translucent_status_bar_summary_off">La barra de estado es opaca o translúcida</string>
|
||||
<string name="revanced_disable_translucent_navigation_bar_light_title">Desactivar la barra translúcida clara</string>
|
||||
<string name="revanced_disable_translucent_navigation_bar_light_summary_on">La barra de navegación en modo claro es opaca</string>
|
||||
<string name="revanced_disable_translucent_navigation_bar_light_summary_off">La barra de navegación del modo claro es opaca o translúcida</string>
|
||||
<string name="revanced_disable_translucent_navigation_bar_dark_title">Desactivar la barra translúcida oscura</string>
|
||||
<string name="revanced_disable_translucent_navigation_bar_dark_summary_on">La barra de navegación en modo oscuro es opaca</string>
|
||||
<string name="revanced_disable_translucent_navigation_bar_dark_summary_off">La barra de navegación del modo oscuro es opaca o translúcida</string>
|
||||
</patch>
|
||||
<patch id="layout.hide.player.flyoutmenupanel.hidePlayerFlyoutMenuPatch">
|
||||
<string name="revanced_hide_player_flyout_title">Menú desplegable</string>
|
||||
@@ -731,7 +751,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_ryd_enable_summary_off">No se muestran Dislikes</string>
|
||||
<string name="revanced_ryd_shorts_title">Mostrar no me gusta en Shorts</string>
|
||||
<string name="revanced_ryd_shorts_summary_on">Dislikes mostrados en Shorts</string>
|
||||
<string name="revanced_ryd_shorts_summary_on_disclaimer">No me Gusta mostrados en Shorts\n\nLimitación: Los No me Gusta no pueden aparecer en modo incógnito</string>
|
||||
<string name="revanced_ryd_shorts_summary_on_disclaimer">"No me gustas que se muestran en los Shorts
|
||||
|
||||
Limitación: Es posible que los No me gustas no aparezcan en el modo de incógnito"</string>
|
||||
<string name="revanced_ryd_shorts_summary_off">No me Gusta ocultos en Shorts</string>
|
||||
<string name="revanced_ryd_dislike_percentage_title">Desliza como porcentaje</string>
|
||||
<string name="revanced_ryd_dislike_percentage_summary_on">Dislikes mostrados como porcentaje</string>
|
||||
@@ -774,7 +796,11 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_seekbar_thumbnails_high_quality_summary_off">Las miniuñas Seekbar son de calidad media</string>
|
||||
<string name="revanced_seekbar_thumbnails_high_quality_legacy_summary_on">Las miniaturas de la barra de búsqueda a pantalla completa son de alta calidad</string>
|
||||
<string name="revanced_seekbar_thumbnails_high_quality_legacy_summary_off">Las miniaturas de la barra de búsqueda a pantalla completa son de calidad media</string>
|
||||
<string name="revanced_seekbar_thumbnails_high_quality_dialog_message">Esto también restaurará las miniuñas en vivos que no tienen las miniuñas seekbar.\n\nLas miniaturas de la barra de búsqueda usarán la misma calidad que el vídeo actual.\n\nEsta función funciona mejor con una calidad de vídeo de 720p o inferior y al usar una conexión a internet muy rápida.</string>
|
||||
<string name="revanced_seekbar_thumbnails_high_quality_dialog_message">"Esto también restaurará las miniaturas en las transmisiones en vivo que no tengan miniaturas de la barra de búsqueda.
|
||||
|
||||
Las miniaturas de la barra de búsqueda utilizarán la misma calidad que el vídeo actual.
|
||||
|
||||
Esta función funciona mejor con una calidad de vídeo de 720p o inferior y cuando se utiliza una conexión a Internet muy rápida."</string>
|
||||
<string name="revanced_restore_old_seekbar_thumbnails_title">Restaurar antiguas miniaturas de la barra de búsqueda</string>
|
||||
<string name="revanced_restore_old_seekbar_thumbnails_summary_on">Las miniaturas de la barra de búsqueda aparecerán por encima de la barra de búsqueda</string>
|
||||
<string name="revanced_restore_old_seekbar_thumbnails_summary_off">Las miniaturas de Seekbar aparecerán en pantalla completa</string>
|
||||
@@ -837,10 +863,12 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_sb_settings_import_successful">Configuración importada correctamente</string>
|
||||
<string name="revanced_sb_settings_import_failed">Error al importar: %s</string>
|
||||
<string name="revanced_sb_settings_export_failed">Error al exportar: %s</string>
|
||||
<string name="revanced_sb_settings_revanced_export_user_id_warning">Tu configuración contiene un usuario privado de SponsorBlock.\n\nTu id de usuario es como una contraseña y nunca debe ser compartida.\n</string>
|
||||
<string name="revanced_sb_settings_revanced_export_user_id_warning">"Tu configuración contiene una ID de usuario de SponsorBlock privada.
|
||||
|
||||
Tu ID de usuario es como una contraseña y nunca debe compartirse."</string>
|
||||
<string name="revanced_sb_settings_revanced_export_user_id_warning_dismiss">No mostrar de nuevo</string>
|
||||
<string name="revanced_sb_diff_segments">Cambiar comportamiento del segmento</string>
|
||||
<string name="revanced_sb_segments_sponsor">Sponsor</string>
|
||||
<string name="revanced_sb_segments_sponsor">Patrocinador</string>
|
||||
<string name="revanced_sb_segments_sponsor_sum">Promoción pagada, referencias pagadas y anuncios directos. No para autopromoción o gritos gratuitos a causas/creadores/sitios web/productos que les gustan</string>
|
||||
<string name="revanced_sb_segments_selfpromo">Promoción Propia/No Remunerada</string>
|
||||
<string name="revanced_sb_segments_selfpromo_sum">Similar a \'Patrocinador\' excepto por falta de pago o autopromoción. Incluye secciones sobre meritud, donaciones o información sobre con quién colaboraron</string>
|
||||
@@ -867,7 +895,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_sb_skip_button_intro_beginning">Saltar intro</string>
|
||||
<string name="revanced_sb_skip_button_intro_middle">Omitir intermisión</string>
|
||||
<string name="revanced_sb_skip_button_intro_end">Omitir intermisión</string>
|
||||
<string name="revanced_sb_skip_button_outro">Skip outro</string>
|
||||
<string name="revanced_sb_skip_button_outro">Saltar outro</string>
|
||||
<string name="revanced_sb_skip_button_preview_beginning">Saltar vista previa</string>
|
||||
<string name="revanced_sb_skip_button_preview_middle">Saltar vista previa</string>
|
||||
<string name="revanced_sb_skip_button_preview_end">Saltar resumen</string>
|
||||
@@ -897,9 +925,10 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_sb_submit_failed_invalid">No se puede enviar el segmento: %s</string>
|
||||
<string name="revanced_sb_submit_failed_timeout">SponsorBlock está temporalmente abajo</string>
|
||||
<string name="revanced_sb_submit_failed_unknown_error">No se puede enviar el segmento (estado: %1$d %2$s)</string>
|
||||
<string name="revanced_sb_submit_failed_rate_limit">No se puede enviar el segmento.\nTasa limitada (demasiados usuarios o IP)</string>
|
||||
<string name="revanced_sb_submit_failed_rate_limit">No se puede enviar el segmento. Límite de velocidad (demasiados del mismo usuario o IP)</string>
|
||||
<string name="revanced_sb_submit_failed_forbidden">No se puede enviar el segmento: %s</string>
|
||||
<string name="revanced_sb_submit_failed_duplicate">No se pudo enviar el segmento.\nYa existe</string>
|
||||
<string name="revanced_sb_submit_failed_duplicate">"No se puede enviar el segmento.
|
||||
Ya existe"</string>
|
||||
<string name="revanced_sb_submit_succeeded">Segmento enviado correctamente</string>
|
||||
<!-- Toast shown if network connection times out. Translations of this should not be longer than the original English or the text can be clipped and not entirely shown. -->
|
||||
<string name="revanced_sb_sponsorblock_connection_failure_timeout">SponsorBlock temporalmente no está disponible (API)</string>
|
||||
@@ -922,7 +951,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_sb_new_segment_time_start">Segundo en el que el segmento comienza</string>
|
||||
<string name="revanced_sb_new_segment_time_end">Segundo en el que el segmento finaliza</string>
|
||||
<string name="revanced_sb_new_segment_confirm_title">¿Los tiempos son correctos?</string>
|
||||
<string name="revanced_sb_new_segment_confirm_content">El segmento es desde\n\n%1$s\nhasta\n%2$s\n\n(%3$s)\n\n¿Listo para enviarlo?</string>
|
||||
<string name="revanced_sb_new_segment_confirm_content">"El segmento es de %1$s a %2$s (%3$s) ¿Listo para enviar?"</string>
|
||||
<string name="revanced_sb_new_segment_start_is_before_end">Inicio debe ser antes del final</string>
|
||||
<string name="revanced_sb_new_segment_mark_locations_first">Primero, marca dos instantes en la barra de tiempo</string>
|
||||
<string name="revanced_sb_new_segment_preview_segment_first">Previsualizar el segmento y asegurarse de que se salta sin problemas</string>
|
||||
@@ -964,7 +993,11 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_spoof_app_version_title">Versión de la aplicación Spoof</string>
|
||||
<string name="revanced_spoof_app_version_summary_on">Versión falseada</string>
|
||||
<string name="revanced_spoof_app_version_summary_off">Versión no falseada</string>
|
||||
<string name="revanced_spoof_app_version_user_dialog_message">La versión de la aplicación será suplantada por una versión anterior de YouTube.\n\nEsto cambiará la apariencia y las funciones de la aplicación, pero pueden ocurrir efectos secundarios desconocidos.\n\nSi luego se desactiva, se recomienda borrar los datos de la aplicación para prevenir errores de interfaz de usuario.</string>
|
||||
<string name="revanced_spoof_app_version_user_dialog_message">"La versión de la aplicación se falsificará a una versión anterior de YouTube.
|
||||
|
||||
Esto cambiará la apariencia y las características de la aplicación, pero pueden producirse efectos secundarios desconocidos.
|
||||
|
||||
Si se desactiva posteriormente, se recomienda borrar los datos de la aplicación para evitar errores en la interfaz de usuario."</string>
|
||||
<!-- It is ideal, but not required, if the text here appears is alphabetically after the text used for 'revanced_spoof_app_version_title'.
|
||||
This is because the 'General layout' menu uses alphabetic sorting, and it functionally works better if the spoof target selector appears below the 'Spoof app version' UI switch -->
|
||||
<string name="revanced_spoof_app_version_target_title">Destino de versión de la aplicación Spoof</string>
|
||||
@@ -998,6 +1031,12 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_disable_resuming_shorts_player_summary_on">El reproductor de Shorts no se reanudará al iniciar la aplicación</string>
|
||||
<string name="revanced_disable_resuming_shorts_player_summary_off">El reproductor de Shorts se reanudará al iniciar la aplicación</string>
|
||||
</patch>
|
||||
<patch id="layout.shortsplayer.shortsPlayerTypePatch">
|
||||
<string name="revanced_shorts_player_type_title">Abre Shorts con</string>
|
||||
<string name="revanced_shorts_player_type_shorts">Reproductor de Shorts</string>
|
||||
<string name="revanced_shorts_player_type_regular_player">Reproductor normal</string>
|
||||
<string name="revanced_shorts_player_type_regular_player_fullscreen">Reproductor normal en pantalla completa</string>
|
||||
</patch>
|
||||
<patch id="layout.shortsautoplay.shortsAutoplayPatch">
|
||||
<string name="revanced_shorts_autoplay_title">Reproducción automática de Shorts</string>
|
||||
<string name="revanced_shorts_autoplay_summary_on">Los Shorts se reproducirán automáticamente</string>
|
||||
@@ -1017,9 +1056,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_miniplayer_screen_summary">Cambiar el estilo del reproductor minimizado de la aplicación</string>
|
||||
<string name="revanced_miniplayer_type_title">Tipo de minreproductor</string>
|
||||
<string name="revanced_miniplayer_type_entry_0">Desactivado</string>
|
||||
<string name="revanced_miniplayer_type_entry_1">Original</string>
|
||||
<string name="revanced_miniplayer_type_entry_1">Predeterminado</string>
|
||||
<string name="revanced_miniplayer_type_entry_2">Mínimo</string>
|
||||
<string name="revanced_miniplayer_type_entry_3">Tablet</string>
|
||||
<string name="revanced_miniplayer_type_entry_3">Tableta</string>
|
||||
<string name="revanced_miniplayer_type_entry_4">Moderna 1</string>
|
||||
<string name="revanced_miniplayer_type_entry_5">Moderna 2</string>
|
||||
<string name="revanced_miniplayer_type_entry_6">Moderna 3</string>
|
||||
@@ -1027,19 +1066,28 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_miniplayer_rounded_corners_summary_on">Las esquinas están redondeadas</string>
|
||||
<string name="revanced_miniplayer_rounded_corners_summary_off">Las esquinas son cuadradas</string>
|
||||
<string name="revanced_miniplayer_double_tap_action_title">Habilitar doble toque y pellizco para redimensionar</string>
|
||||
<string name="revanced_miniplayer_double_tap_action_summary_on">Acción de doble toque y pulsar para cambiar el tamaño está habilitado\n\n• Doble toque para aumentar el tamaño de minijugador\n• Doble toque de nuevo para restaurar el tamaño original</string>
|
||||
<string name="revanced_miniplayer_double_tap_action_summary_on">"La acción de doble toque y el pellizco para cambiar el tamaño están activados
|
||||
|
||||
• Toca dos veces para aumentar el tamaño del minireproductor
|
||||
• Toca dos veces de nuevo para restaurar el tamaño original"</string>
|
||||
<string name="revanced_miniplayer_double_tap_action_summary_off">Acción de doble toque y pellizco para redimensionar está desactivado</string>
|
||||
<string name="revanced_miniplayer_drag_and_drop_title">Activar arrastrar y soltar</string>
|
||||
<string name="revanced_miniplayer_drag_and_drop_summary_on">Arrastrar y soltar está habilitado\n\nMinijugador puede ser arrastrado a cualquier esquina de la pantalla</string>
|
||||
<string name="revanced_miniplayer_drag_and_drop_summary_on">"La función de arrastrar y soltar está activada
|
||||
|
||||
El minireproductor se puede arrastrar a cualquier esquina de la pantalla"</string>
|
||||
<string name="revanced_miniplayer_drag_and_drop_summary_off">Arrastre y suelte está desactivado</string>
|
||||
<string name="revanced_miniplayer_horizontal_drag_title">Activar gesto de arrastre horizontal</string>
|
||||
<string name="revanced_miniplayer_horizontal_drag_summary_on">Gesto de arrastre horizontal habilitado\n\nMinijugador puede ser arrastrado de la pantalla a la izquierda o derecha</string>
|
||||
<string name="revanced_miniplayer_horizontal_drag_summary_on">"El gesto de arrastre horizontal está activado
|
||||
|
||||
El minireproductor se puede arrastrar fuera de la pantalla hacia la izquierda o la derecha"</string>
|
||||
<string name="revanced_miniplayer_horizontal_drag_summary_off">Gesto de arrastre horizontal desactivado</string>
|
||||
<string name="revanced_miniplayer_hide_expand_close_title">Ocultar botón de cerrar</string>
|
||||
<string name="revanced_miniplayer_hide_expand_close_summary_on">El botón de cierre está oculto</string>
|
||||
<string name="revanced_miniplayer_hide_expand_close_summary_off">Se muestra el botón de cerrar</string>
|
||||
<string name="revanced_miniplayer_hide_expand_close_legacy_title">Ocultar botones de expansión y cierre</string>
|
||||
<string name="revanced_miniplayer_hide_expand_close_legacy_summary_on">Los botones están ocultos\n\nDesliza para expandir o cerrar</string>
|
||||
<string name="revanced_miniplayer_hide_expand_close_legacy_summary_on">"Los botones están ocultos
|
||||
|
||||
Desliza para expandir o cerrar"</string>
|
||||
<string name="revanced_miniplayer_hide_expand_close_legacy_summary_off">Mostrar los botones de ampliación y cierre</string>
|
||||
<string name="revanced_miniplayer_hide_subtext_title">Ocultar subtextos</string>
|
||||
<string name="revanced_miniplayer_hide_subtext_summary_on">Los subtextos están ocultos</string>
|
||||
@@ -1070,7 +1118,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<patch id="layout.thumbnails.bypassImageRegionRestrictionsPatch">
|
||||
<string name="revanced_bypass_image_region_restrictions_title">Evitar restricción regional de imágenes</string>
|
||||
<string name="revanced_bypass_image_region_restrictions_summary_on">Usando host de imagen yt4.ggpht.com</string>
|
||||
<string name="revanced_bypass_image_region_restrictions_summary_off">Utilizando el host de imágenes original\n\nHabilitar esto puede arreglar las imágenes faltantes que están bloqueadas en algunas regiones</string>
|
||||
<string name="revanced_bypass_image_region_restrictions_summary_off">"Usando el servidor de imágenes original
|
||||
|
||||
Habilitar esto puede solucionar las imágenes que faltan que están bloqueadas en algunas regiones"</string>
|
||||
</patch>
|
||||
<patch id="layout.thumbnails.alternativeThumbnailsPatch">
|
||||
<!-- 'Home' should be translated using the same localized wording YouTube displays for the home tab. -->
|
||||
@@ -1081,15 +1131,19 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_alt_thumbnail_library_title">Pestaña</string>
|
||||
<string name="revanced_alt_thumbnail_player_title">Listas de reproducción, recomendaciones</string>
|
||||
<string name="revanced_alt_thumbnail_search_title">Resultados de búsqueda</string>
|
||||
<string name="revanced_alt_thumbnail_options_entry_1">Original thumbnails</string>
|
||||
<string name="revanced_alt_thumbnail_options_entry_1">Miniaturas originales</string>
|
||||
<string name="revanced_alt_thumbnail_options_entry_2">Deflecha & miniaturas originales</string>
|
||||
<string name="revanced_alt_thumbnail_options_entry_3">Flecha & Todavía capturas</string>
|
||||
<string name="revanced_alt_thumbnail_options_entry_4">Sigue capturando</string>
|
||||
<string name="revanced_alt_thumbnail_dearrow_about_summary">DeFlecha proporciona miniaturas de origen crowd para vídeos de YouTube. Estas uñas suelen ser más relevantes que las proporcionadas por YouTube\n\nSi están activadas, las URL de vídeo se enviarán al servidor API y no se enviarán otros datos. Si un video no tiene miniaturas de Flecha Deprimida, entonces las capturas originales o todavía se muestran\n\nPulsa aquí para aprender más sobre DeFlecha</string>
|
||||
<string name="revanced_alt_thumbnail_dearrow_about_summary">"DeArrow proporciona miniaturas de vídeos de YouTube obtenidas mediante crowdsourcing. Estas miniaturas suelen ser más relevantes que las que proporciona YouTube
|
||||
|
||||
Si está habilitado, las URL de los vídeos se enviarán al servidor de la API y no se envían otros datos. Si un vídeo no tiene miniaturas de DeArrow, se mostrarán las originales o las capturas fijas
|
||||
|
||||
Toca aquí para obtener más información sobre DeArrow"</string>
|
||||
<string name="revanced_alt_thumbnail_dearrow_connection_toast_title">Mostrar un brindis si la API no está disponible</string>
|
||||
<string name="revanced_alt_thumbnail_dearrow_connection_toast_summary_on">Toast se muestra si DeFlecha no está disponible</string>
|
||||
<string name="revanced_alt_thumbnail_dearrow_connection_toast_summary_off">Toast no se muestra si DeFlecha no está disponible</string>
|
||||
<string name="revanced_alt_thumbnail_dearrow_api_url_title">DeArrow API endpoint</string>
|
||||
<string name="revanced_alt_thumbnail_dearrow_api_url_title">Punto final de la API DeArrow</string>
|
||||
<string name="revanced_alt_thumbnail_dearrow_api_url_summary">La URL del final de la caché en miniatura de DeArrow</string>
|
||||
<string name="revanced_alt_thumbnail_stills_about_title">Capturas estáticas de vídeo</string>
|
||||
<string name="revanced_alt_thumbnail_stills_about_summary">Las capturas se toman desde el principio/medio/final de cada vídeo. Estas imágenes están incorporadas en YouTube y no se utiliza ninguna API externa</string>
|
||||
@@ -1124,8 +1178,12 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
</patch>
|
||||
<patch id="misc.dimensions.spoof.spoofDeviceDimensionsPatch">
|
||||
<string name="revanced_spoof_device_dimensions_title">Dimensiones del dispositivo</string>
|
||||
<string name="revanced_spoof_device_dimensions_summary_on">Dimensiones del dispositivo falseadas\n\nCalidad de vídeo más alta puede ser desbloqueada, pero puede experimentar la reproducción de vídeo, peor duración de la batería y efectos secundarios desconocidos</string>
|
||||
<string name="revanced_spoof_device_dimensions_summary_off">Dimensiones del dispositivo no falseadas\n\nHabilitar esto puede desbloquear mayores calidades de vídeo</string>
|
||||
<string name="revanced_spoof_device_dimensions_summary_on">"Las dimensiones del dispositivo están falsificadas
|
||||
|
||||
Es posible que se desbloqueen calidades de vídeo más altas, pero es posible que experimentes pausas en la reproducción de vídeo, una peor duración de la batería y efectos secundarios desconocidos"</string>
|
||||
<string name="revanced_spoof_device_dimensions_summary_off">"Las dimensiones del dispositivo no están falsificadas
|
||||
|
||||
Habilitar esto puede desbloquear calidades de vídeo más altas"</string>
|
||||
<string name="revanced_spoof_device_dimensions_user_dialog_message">Activar esto puede causar retraso en la reproducción de vídeo, peor duración de la batería y efectos secundarios desconocidos.</string>
|
||||
</patch>
|
||||
<patch id="misc.gms.gmsCoreSupportResourcePatch">
|
||||
@@ -1152,9 +1210,14 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_disable_zoom_haptics_summary_on">Hápticas desactivadas</string>
|
||||
<string name="revanced_disable_zoom_haptics_summary_off">Haptics están habilitados</string>
|
||||
</patch>
|
||||
<patch id="video.audio.forceOriginalAudioPatch">
|
||||
<string name="revanced_force_original_audio_title">Forzar audio original</string>
|
||||
<string name="revanced_force_original_audio_summary_on">Utilizando audio original</string>
|
||||
<string name="revanced_force_original_audio_summary_off">Utilizando audio predeterminado</string>
|
||||
</patch>
|
||||
<patch id="video.quality.rememberVideoQualityPatch">
|
||||
<!-- Translations should use the same text as revanced_custom_playback_speeds_auto -->
|
||||
<string name="revanced_video_quality_default_entry_1">Auto</string>
|
||||
<string name="revanced_video_quality_default_entry_1">Automático</string>
|
||||
<string name="revanced_remember_video_quality_last_selected_title">Recordar cambios de calidad de vídeo</string>
|
||||
<string name="revanced_remember_video_quality_last_selected_summary_on">Los cambios de calidad se aplican a todos los vídeos</string>
|
||||
<string name="revanced_remember_video_quality_last_selected_summary_off">Los cambios de calidad sólo se aplican al vídeo actual</string>
|
||||
@@ -1175,9 +1238,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_custom_speed_menu_summary_off">Menú de velocidad personalizado no se muestra</string>
|
||||
<string name="revanced_custom_playback_speeds_title">Velocidades de reproducción personalizadas</string>
|
||||
<string name="revanced_custom_playback_speeds_summary">Añadir o cambiar las velocidades de reproducción personalizadas</string>
|
||||
<string name="revanced_custom_playback_speeds_invalid">Velocidades personalizadas deben ser inferiores a %s. Utilizando valores predeterminados.</string>
|
||||
<string name="revanced_custom_playback_speeds_parse_exception">Velocidades de reproducción personalizadas no válidas. Utilizando valores predeterminados.</string>
|
||||
<string name="revanced_custom_playback_speeds_auto">Auto</string>
|
||||
<string name="revanced_custom_playback_speeds_invalid">Las velocidades personalizadas deben ser menores que %s</string>
|
||||
<string name="revanced_custom_playback_speeds_parse_exception">Velocidades de reproducción personalizadas no válidas</string>
|
||||
<string name="revanced_custom_playback_speeds_auto">Automático</string>
|
||||
</patch>
|
||||
<patch id="video.speed.remember.rememberPlaybackSpeedPatch">
|
||||
<string name="revanced_remember_playback_speed_last_selected_title">Recordar cambios de velocidad de reproducción</string>
|
||||
@@ -1201,19 +1264,25 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_spoof_video_streams_screen_summary">Falsifica el stream de vídeo del cliente para evitar problemas de reproducción</string>
|
||||
<string name="revanced_spoof_video_streams_title">Falsificación del stream de vídeo</string>
|
||||
<string name="revanced_spoof_video_streams_summary_on">El stream de vídeo está falsificado</string>
|
||||
<string name="revanced_spoof_video_streams_summary_off">Los streams de vídeo no están falsificados\n\nLa reproducción de vídeo puede no funcionar</string>
|
||||
<string name="revanced_spoof_video_streams_summary_off">"Las transmisiones de vídeo no están falsificadas
|
||||
|
||||
Es posible que la reproducción de vídeo no funcione"</string>
|
||||
<string name="revanced_spoof_video_streams_user_dialog_message">Desactivar esta configuración puede causar problemas de reproducción de vídeo.</string>
|
||||
<string name="revanced_spoof_video_streams_client_title">Cliente por defecto</string>
|
||||
<string name="revanced_spoof_video_streams_ios_force_avc_title">Forzar AVC (H.264)</string>
|
||||
<string name="revanced_spoof_video_streams_ios_force_avc_summary_on">Códec de vídeo se ve obligado a AVC (H.264)</string>
|
||||
<string name="revanced_spoof_video_streams_ios_force_avc_summary_off">El códec de vídeo se determina automáticamente</string>
|
||||
<string name="revanced_spoof_video_streams_ios_force_avc_user_dialog_message">Activar esto puede mejorar la vida de la batería y corregir el retraso en la reproducción.\n\nAVC tiene una resolución máxima de 1080p, el código de audio Opus no está disponible. y la reproducción de vídeo utilizará más datos de Internet que VP9 o AV1.</string>
|
||||
<string name="revanced_spoof_video_streams_ios_force_avc_user_dialog_message">"Habilitar esto podría mejorar la duración de la batería y solucionar los tartamudeos de la reproducción.
|
||||
|
||||
AVC tiene una resolución máxima de 1080p, el códec de audio Opus no está disponible y la reproducción de vídeo utilizará más datos de internet que VP9 o AV1."</string>
|
||||
<string name="revanced_spoof_video_streams_about_ios_title">Efectos secundarios para la falsificación de iOS</string>
|
||||
<string name="revanced_spoof_video_streams_about_ios_summary">• Los vídeos de niños privados no pueden reproducir\n• Livestreams comienzan desde el principio\n• Los vídeos pueden terminar temprano 1 segundo</string>
|
||||
<string name="revanced_spoof_video_streams_about_ios_summary">"• Es posible que los videos privados para niños no se reproduzcan
|
||||
• Los videos terminan 1 segundo antes"</string>
|
||||
<string name="revanced_spoof_video_streams_about_android_vr_title">Efectos secundarios para la falsificación de Android RV</string>
|
||||
<string name="revanced_spoof_video_streams_about_android_vr_summary">• Los vídeos infantiles no pueden reproducir\n• Falta el menú de pista de audio\n• El volumen estable no está disponible</string>
|
||||
<string name="revanced_spoof_video_streams_language_">El stream de vídeo está falsificado</string>
|
||||
<string name="revanced_spoof_video_streams_language_title">Idioma de flujo de audio preferido</string>
|
||||
<string name="revanced_spoof_video_streams_about_android_vr_summary">"• Es posible que los vídeos para niños no se reproduzcan
|
||||
• Las transmisiones en vivo empiezan desde el principio
|
||||
• Los vídeos terminan 1 segundo antes"</string>
|
||||
<string name="revanced_spoof_video_streams_language_title">Idioma de flujo de audio por defecto</string>
|
||||
<string name="revanced_spoof_video_streams_language_DEFAULT">Idioma de la aplicación</string>
|
||||
<string name="revanced_spoof_video_streams_language_AR">Árabe</string>
|
||||
<string name="revanced_spoof_video_streams_language_AZ">Бессия</string>
|
||||
@@ -1237,7 +1306,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_spoof_video_streams_language_ID">Indonesio/a</string>
|
||||
<string name="revanced_spoof_video_streams_language_IT">Italiano</string>
|
||||
<string name="revanced_spoof_video_streams_language_JA">Japonés</string>
|
||||
<string name="revanced_spoof_video_streams_language_KK">Kazakh</string>
|
||||
<string name="revanced_spoof_video_streams_language_KK">Kazajo</string>
|
||||
<string name="revanced_spoof_video_streams_language_KO">Coreano</string>
|
||||
<string name="revanced_spoof_video_streams_language_LT">Lituano</string>
|
||||
<string name="revanced_spoof_video_streams_language_LV">Letón</string>
|
||||
@@ -1245,7 +1314,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_spoof_video_streams_language_MN">Mongol</string>
|
||||
<string name="revanced_spoof_video_streams_language_MR">Maratí</string>
|
||||
<string name="revanced_spoof_video_streams_language_MS">Malayo</string>
|
||||
<string name="revanced_spoof_video_streams_language_MY">Burmese</string>
|
||||
<string name="revanced_spoof_video_streams_language_MY">Birmano</string>
|
||||
<string name="revanced_spoof_video_streams_language_NL">Holandés</string>
|
||||
<string name="revanced_spoof_video_streams_language_OR">Odia</string>
|
||||
<string name="revanced_spoof_video_streams_language_PA">Punjabi</string>
|
||||
@@ -1255,7 +1324,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_spoof_video_streams_language_RO">Rumano</string>
|
||||
<string name="revanced_spoof_video_streams_language_RU">Ruso</string>
|
||||
<string name="revanced_spoof_video_streams_language_SK">Eslovaco</string>
|
||||
<string name="revanced_spoof_video_streams_language_SL">Slovene</string>
|
||||
<string name="revanced_spoof_video_streams_language_SL">Esloveno</string>
|
||||
<string name="revanced_spoof_video_streams_language_SR">Serbio</string>
|
||||
<string name="revanced_spoof_video_streams_language_SV">Sueco</string>
|
||||
<string name="revanced_spoof_video_streams_language_SW">Swahili</string>
|
||||
@@ -1265,7 +1334,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_spoof_video_streams_language_TR">Turco</string>
|
||||
<string name="revanced_spoof_video_streams_language_UK">Ucraniano</string>
|
||||
<string name="revanced_spoof_video_streams_language_UR">Urdu</string>
|
||||
<string name="revanced_spoof_video_streams_language_VI">Vietnamese</string>
|
||||
<string name="revanced_spoof_video_streams_language_VI">Vietnamita</string>
|
||||
<string name="revanced_spoof_video_streams_language_ZH">Chino</string>
|
||||
</patch>
|
||||
</app>
|
||||
@@ -1276,8 +1345,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<string name="revanced_block_audio_ads_summary_off">Anuncios de audio desbloqueados</string>
|
||||
</patch>
|
||||
<patch id="ad.embedded.embeddedAdsPatch">
|
||||
<string name="revanced_embedded_ads_service_unavailable">%s no está disponible. Los anuncios pueden mostrarse. Intenta cambiar a otro servicio de bloqueo de anuncios en la configuración.</string>
|
||||
<string name="revanced_embedded_ads_service_failed">El servidor %s devolvió un error. Los anuncios pueden mostrar. Intente cambiar a otro servicio de bloqueo de anuncios en la configuración.</string>
|
||||
<string name="revanced_embedded_ads_service_unavailable">%s no disponible, es posible que se muestren anuncios. Intenta cambiar el servicio de bloqueo de anuncios en los ajustes.</string>
|
||||
<string name="revanced_embedded_ads_service_failed">%s ha devuelto un error, es posible que se muestren anuncios. Intenta cambiar el servicio de bloqueo de anuncios en los ajustes.</string>
|
||||
<string name="revanced_block_embedded_ads_title">Bloquear anuncios de vídeo incrustados</string>
|
||||
<string name="revanced_block_embedded_ads_entry_1">Desactivado</string>
|
||||
<string name="revanced_block_embedded_ads_entry_2">Proxy luminoso</string>
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,34 +1,23 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
|
||||
Note: All strings must have a unique path, even if the same string is declared in two different apps.
|
||||
This is because Crowdin requires temporarily flattening this file and removing the <app> and <patch> elements.
|
||||
All strings must have a unique path, even if the same string is declared in two different apps.
|
||||
This is because Crowdin requires temporarily flattening this file and removing the <app> and <patch> elements.
|
||||
|
||||
# General guidelines and information for translating
|
||||
|
||||
## Strings parameters can be reordered to allow more flexible translations if the grammar should be changed.
|
||||
Strings with new lines must be raw strings where they're wrapped in quotes and new lines are not encoded.
|
||||
Raw strings still requires escaping embedded double quotes but escaping embedded single quotes is optional.
|
||||
|
||||
For example, the patches string:
|
||||
<string name="revanced_patches_string">You will arrive at %1$s in %2$s hours from now</string>
|
||||
Could be translated to another language using a rearranged grammar:
|
||||
<string name="revanced_patches_string">You will arrive %2$s hours from now at %1$s</string>
|
||||
Raw strings are required because Crowdin AI translations regularly gets confused and
|
||||
replace \n with an encoded new line character.
|
||||
|
||||
For Manager strings:
|
||||
You will arrive at ${destination} in ${count} hours from now
|
||||
Could be rearranged by changing the order of the ${} parameters:
|
||||
You will arrive ${count} hours from now at ${destination}
|
||||
Bad:
|
||||
<string name="summary_key">First \'item\' text\nSecond \"item\" text</string>
|
||||
|
||||
Reordering is particularly relevant when translating into right to left languages, or for any language with grammar that is noticeably different from English.
|
||||
Good:
|
||||
<string name="summary_key">"First 'item' text
|
||||
Second \"item\" text"</string>
|
||||
|
||||
## Single and double quotation marks must be escaped for patch strings (Manager does not require escaping any quotes).
|
||||
|
||||
All _patches_ single and double quotation marks must be escaped as \" or \'
|
||||
Forgetting to do this will cause that string to appear in app with no quotation characters.
|
||||
|
||||
Correct:
|
||||
<string name="revanced_string">You\'re correct. This is the \"correct\" way and this text will appear as expected in the app</string>
|
||||
Not correct:
|
||||
<string name="revanced_string">You're not correct. This is not the "correct" way and this text will not appear as expected the in app</string>
|
||||
-->
|
||||
<resources>
|
||||
<app id="shared">
|
||||
@@ -175,6 +164,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
</patch>
|
||||
<patch id="layout.startupshortsreset.disableResumingShortsOnStartupPatch">
|
||||
</patch>
|
||||
<patch id="layout.shortsplayer.shortsPlayerTypePatch">
|
||||
</patch>
|
||||
<patch id="layout.shortsautoplay.shortsAutoplayPatch">
|
||||
</patch>
|
||||
<patch id="layout.tablet.enableTabletLayoutPatch">
|
||||
@@ -211,6 +202,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
</patch>
|
||||
<patch id="misc.zoomhaptics.zoomHapticsPatch">
|
||||
</patch>
|
||||
<patch id="video.audio.forceOriginalAudioPatch">
|
||||
</patch>
|
||||
<patch id="video.quality.rememberVideoQualityPatch">
|
||||
<!-- Translations should use the same text as revanced_custom_playback_speeds_auto -->
|
||||
</patch>
|
||||
|
||||
@@ -1,34 +1,23 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
|
||||
Note: All strings must have a unique path, even if the same string is declared in two different apps.
|
||||
This is because Crowdin requires temporarily flattening this file and removing the <app> and <patch> elements.
|
||||
All strings must have a unique path, even if the same string is declared in two different apps.
|
||||
This is because Crowdin requires temporarily flattening this file and removing the <app> and <patch> elements.
|
||||
|
||||
# General guidelines and information for translating
|
||||
|
||||
## Strings parameters can be reordered to allow more flexible translations if the grammar should be changed.
|
||||
Strings with new lines must be raw strings where they're wrapped in quotes and new lines are not encoded.
|
||||
Raw strings still requires escaping embedded double quotes but escaping embedded single quotes is optional.
|
||||
|
||||
For example, the patches string:
|
||||
<string name="revanced_patches_string">You will arrive at %1$s in %2$s hours from now</string>
|
||||
Could be translated to another language using a rearranged grammar:
|
||||
<string name="revanced_patches_string">You will arrive %2$s hours from now at %1$s</string>
|
||||
Raw strings are required because Crowdin AI translations regularly gets confused and
|
||||
replace \n with an encoded new line character.
|
||||
|
||||
For Manager strings:
|
||||
You will arrive at ${destination} in ${count} hours from now
|
||||
Could be rearranged by changing the order of the ${} parameters:
|
||||
You will arrive ${count} hours from now at ${destination}
|
||||
Bad:
|
||||
<string name="summary_key">First \'item\' text\nSecond \"item\" text</string>
|
||||
|
||||
Reordering is particularly relevant when translating into right to left languages, or for any language with grammar that is noticeably different from English.
|
||||
Good:
|
||||
<string name="summary_key">"First 'item' text
|
||||
Second \"item\" text"</string>
|
||||
|
||||
## Single and double quotation marks must be escaped for patch strings (Manager does not require escaping any quotes).
|
||||
|
||||
All _patches_ single and double quotation marks must be escaped as \" or \'
|
||||
Forgetting to do this will cause that string to appear in app with no quotation characters.
|
||||
|
||||
Correct:
|
||||
<string name="revanced_string">You\'re correct. This is the \"correct\" way and this text will appear as expected in the app</string>
|
||||
Not correct:
|
||||
<string name="revanced_string">You're not correct. This is not the "correct" way and this text will not appear as expected the in app</string>
|
||||
-->
|
||||
<resources>
|
||||
<app id="shared">
|
||||
@@ -175,12 +164,13 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
</patch>
|
||||
<patch id="layout.startupshortsreset.disableResumingShortsOnStartupPatch">
|
||||
</patch>
|
||||
<patch id="layout.shortsplayer.shortsPlayerTypePatch">
|
||||
</patch>
|
||||
<patch id="layout.shortsautoplay.shortsAutoplayPatch">
|
||||
</patch>
|
||||
<patch id="layout.tablet.enableTabletLayoutPatch">
|
||||
</patch>
|
||||
<patch id="layout.miniplayer.miniplayerPatch">
|
||||
<string name="revanced_miniplayer_type_entry_0">غیرفعال شده</string>
|
||||
</patch>
|
||||
<patch id="layout.theme.themePatch">
|
||||
</patch>
|
||||
@@ -197,7 +187,6 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<patch id="misc.announcements.announcementsPatch">
|
||||
</patch>
|
||||
<patch id="misc.dns.checkWatchHistoryDomainNameResolutionPatch">
|
||||
<string name="revanced_check_watch_history_domain_name_dialog_title">هشدار</string>
|
||||
</patch>
|
||||
<patch id="misc.autorepeat.autoRepeatPatch">
|
||||
</patch>
|
||||
@@ -213,6 +202,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
</patch>
|
||||
<patch id="misc.zoomhaptics.zoomHapticsPatch">
|
||||
</patch>
|
||||
<patch id="video.audio.forceOriginalAudioPatch">
|
||||
</patch>
|
||||
<patch id="video.quality.rememberVideoQualityPatch">
|
||||
<!-- Translations should use the same text as revanced_custom_playback_speeds_auto -->
|
||||
</patch>
|
||||
@@ -244,7 +235,6 @@ This is because Crowdin requires temporarily flattening this file and removing t
|
||||
<!-- Twitch specific internal debug mode, and not the same as 'revanced_debug_title' -->
|
||||
</patch>
|
||||
<patch id="misc.settings.settingsPatch">
|
||||
<string name="revanced_about_title">درباره ما</string>
|
||||
</patch>
|
||||
</app>
|
||||
</resources>
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user