Compare commits

...

26 Commits

Author SHA1 Message Date
semantic-release-bot
6e87e3044c chore(release): 4.12.0-dev.4 [skip ci]
# [4.12.0-dev.4](https://github.com/ReVanced/revanced-patches/compare/v4.12.0-dev.3...v4.12.0-dev.4) (2024-07-20)

### Features

* **Google News:** Add `Enable CustomTabs` and `GmsCore support` patch ([#3111](https://github.com/ReVanced/revanced-patches/issues/3111)) ([273af26](273af26274))
2024-07-20 02:57:11 +00:00
benjy3gg
273af26274 feat(Google News): Add Enable CustomTabs and GmsCore support patch (#3111)
Co-authored-by: benjy3gg <benjy3gg@gmail.com>
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2024-07-20 04:55:08 +02:00
semantic-release-bot
2b1b081051 chore(release): 4.12.0-dev.3 [skip ci]
# [4.12.0-dev.3](https://github.com/ReVanced/revanced-patches/compare/v4.12.0-dev.2...v4.12.0-dev.3) (2024-07-18)

### Bug Fixes

* **Instagram - Hide ads:**  Restore compatibility with latest version by fixing fingerprint ([#3455](https://github.com/ReVanced/revanced-patches/issues/3455)) ([f2bf2da](f2bf2da9a5))
2024-07-18 23:52:11 +00:00
Tim
f2bf2da9a5 fix(Instagram - Hide ads): Restore compatibility with latest version by fixing fingerprint (#3455) 2024-07-19 01:50:03 +02:00
ReVanced Bot
15317003b1 chore: Sync translations (#3451) 2024-07-18 17:22:23 +04:00
semantic-release-bot
6c81a5b65f chore(release): 4.12.0-dev.2 [skip ci]
# [4.12.0-dev.2](https://github.com/ReVanced/revanced-patches/compare/v4.12.0-dev.1...v4.12.0-dev.2) (2024-07-15)

### Features

* **YouTube:** Add `Bypass image region restrictions` patch ([#3442](https://github.com/ReVanced/revanced-patches/issues/3442)) ([9ef51ab](9ef51abde7))
2024-07-15 19:01:14 +00:00
LisoUseInAIKyrios
9ef51abde7 feat(YouTube): Add Bypass image region restrictions patch (#3442)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2024-07-15 02:56:12 +04:00
semantic-release-bot
1d31565d47 chore(release): 4.12.0-dev.1 [skip ci]
# [4.12.0-dev.1](https://github.com/ReVanced/revanced-patches/compare/v4.11.1-dev.1...v4.12.0-dev.1) (2024-07-13)

### Features

* **SoundCloud:** Add `Enable offline sync` patch ([#3407](https://github.com/ReVanced/revanced-patches/issues/3407)) ([b944fb7](b944fb7bf1))
2024-07-13 23:45:56 +00:00
LightCat
b944fb7bf1 feat(SoundCloud): Add Enable offline sync patch (#3407)
Co-authored-by: bewzusore <bewzusore>
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
Co-authored-by: BenCat07 <BenCat07@gitlab.com>
2024-07-14 01:43:48 +02:00
semantic-release-bot
dfd46d8e8f chore(release): 4.11.1-dev.1 [skip ci]
## [4.11.1-dev.1](https://github.com/ReVanced/revanced-patches/compare/v4.11.0...v4.11.1-dev.1) (2024-07-12)

### Bug Fixes

* **YouTube - Hide keyword content:** Do not hide flyout menu ([cfbc4aa](cfbc4aa6b2))
2024-07-12 22:45:58 +00:00
oSumAtrIX
f64e03a1f6 ci: Correct usage of repository variable 2024-07-13 00:43:59 +02:00
semantic-release-bot
a65970bdc2 chore(release): 4.11.1-dev.1 [skip ci]
## [4.11.1-dev.1](https://github.com/ReVanced/revanced-patches/compare/v4.11.0...v4.11.1-dev.1) (2024-07-12)

### Bug Fixes

* **YouTube - Hide keyword content:** Do not hide flyout menu ([cfbc4aa](cfbc4aa6b2))
2024-07-12 18:17:37 +00:00
LisoUseInAIKyrios
cfbc4aa6b2 fix(YouTube - Hide keyword content): Do not hide flyout menu 2024-07-12 22:15:13 +04:00
semantic-release-bot
b04652890e chore(release): 4.11.0 [skip ci]
# [4.11.0](https://github.com/ReVanced/revanced-patches/compare/v4.10.0...v4.11.0) (2024-07-11)

### Bug Fixes

* **Boost for reddit - Fix missing audio in video downloads:** Replace correct strings ([#3379](https://github.com/ReVanced/revanced-patches/issues/3379)) ([0b098a2](0b098a2027))
* **Windy - Unlock pro:** Revert changing package name ([#3402](https://github.com/ReVanced/revanced-patches/issues/3402)) ([dd6a9f9](dd6a9f977f))
* **Windy - Unlock pro:** Use correct package name ([#3397](https://github.com/ReVanced/revanced-patches/issues/3397)) ([e4ae9cc](e4ae9ccd26))
* **YouTube - Hide layout components:** Detect if a keyword filter hides all videos ([#3365](https://github.com/ReVanced/revanced-patches/issues/3365)) ([03eb9c0](03eb9c032a))
* **YouTube - Settings:** Move some settings to different menus, adjust default setting values ([#3415](https://github.com/ReVanced/revanced-patches/issues/3415)) ([def1ec4](def1ec4de6))
* **YouTube - SponsorBlock:** Skip segments when casting ([#3331](https://github.com/ReVanced/revanced-patches/issues/3331)) ([a81a6bf](a81a6bf5b2))

### Features

* Add `Remove share targets` patch ([#3334](https://github.com/ReVanced/revanced-patches/issues/3334)) ([70e54f8](70e54f8794))
* Add translations ([#2963](https://github.com/ReVanced/revanced-patches/issues/2963)) ([f5f0240](f5f024024a))
* **Bandcamp:** Add `Remove play limits` patch ([#3366](https://github.com/ReVanced/revanced-patches/issues/3366)) ([f0fb2fa](f0fb2fa3ba))
* **Instagram:** Add `Hide ads` patch ([#3380](https://github.com/ReVanced/revanced-patches/issues/3380)) ([decdff9](decdff9037))
* **RAR:** Add `Hide purchase reminder` patch ([#3321](https://github.com/ReVanced/revanced-patches/issues/3321)) ([55556f3](55556f3efc))
* **Soundcloud:** Add `Hide ads` and `Disable telemetry` patch ([#3386](https://github.com/ReVanced/revanced-patches/issues/3386)) ([a036c1f](a036c1fa0a))
* **Stocard:** Add `Hide offers tab` and `Hide story bubbles` patch ([#3359](https://github.com/ReVanced/revanced-patches/issues/3359)) ([e2f9193](e2f9193aa8))
2024-07-11 18:56:56 +00:00
LisoUseInAIKyrios
4fe1dbe9e0 chore: Merge branch dev to main (#3369) 2024-07-11 22:54:46 +04:00
ReVanced Bot
32acfbaee7 chore: Sync translations (#3427) 2024-07-11 02:24:16 +04:00
semantic-release-bot
d02a490f36 chore(release): 4.11.0-dev.7 [skip ci]
# [4.11.0-dev.7](https://github.com/ReVanced/revanced-patches/compare/v4.11.0-dev.6...v4.11.0-dev.7) (2024-07-10)

### Features

* **Bandcamp:** Add `Remove play limits` patch ([#3366](https://github.com/ReVanced/revanced-patches/issues/3366)) ([f0fb2fa](f0fb2fa3ba))
2024-07-10 22:23:36 +00:00
xob0t
f0fb2fa3ba feat(Bandcamp): Add Remove play limits patch (#3366)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2024-07-11 00:21:40 +02:00
semantic-release-bot
4885d4ef00 chore(release): 4.11.0-dev.6 [skip ci]
# [4.11.0-dev.6](https://github.com/ReVanced/revanced-patches/compare/v4.11.0-dev.5...v4.11.0-dev.6) (2024-07-10)

### Bug Fixes

* **YouTube - SponsorBlock:** Skip segments when casting ([#3331](https://github.com/ReVanced/revanced-patches/issues/3331)) ([a81a6bf](a81a6bf5b2))

### Features

* **Soundcloud:** Add `Hide ads` and `Disable telemetry` patch ([#3386](https://github.com/ReVanced/revanced-patches/issues/3386)) ([a036c1f](a036c1fa0a))
2024-07-10 22:15:51 +00:00
patchink0
a036c1fa0a feat(Soundcloud): Add Hide ads and Disable telemetry patch (#3386)
Co-authored-by: bewzusore <bewzusore>
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2024-07-11 00:13:44 +02:00
Sami Alaoui
a81a6bf5b2 fix(YouTube - SponsorBlock): Skip segments when casting (#3331)
Co-authored-by: LisoUseInAIKyrios <118716522+LisoUseInAIKyrios@users.noreply.github.com>
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2024-07-11 00:12:03 +02:00
semantic-release-bot
81836119c0 chore(release): 4.11.0-dev.5 [skip ci]
# [4.11.0-dev.5](https://github.com/ReVanced/revanced-patches/compare/v4.11.0-dev.4...v4.11.0-dev.5) (2024-07-05)

### Bug Fixes

* **YouTube - Settings:** Move some settings to different menus, adjust default setting values ([#3415](https://github.com/ReVanced/revanced-patches/issues/3415)) ([def1ec4](def1ec4de6))
2024-07-05 17:40:57 +00:00
LisoUseInAIKyrios
def1ec4de6 fix(YouTube - Settings): Move some settings to different menus, adjust default setting values (#3415) 2024-07-05 21:38:52 +04:00
ReVanced Bot
72f02c8d2f chore: Sync translations (#3400) 2024-07-04 02:05:06 +04:00
semantic-release-bot
5e0dd932cd chore(release): 4.11.0-dev.4 [skip ci]
# [4.11.0-dev.4](https://github.com/ReVanced/revanced-patches/compare/v4.11.0-dev.3...v4.11.0-dev.4) (2024-07-01)

### Bug Fixes

* **Windy - Unlock pro:** Revert changing package name ([#3402](https://github.com/ReVanced/revanced-patches/issues/3402)) ([dd6a9f9](dd6a9f977f))
2024-07-01 13:02:34 +00:00
oSumAtrIX
dd6a9f977f fix(Windy - Unlock pro): Revert changing package name (#3402) 2024-07-01 15:00:34 +02:00
132 changed files with 6343 additions and 2063 deletions

View File

@@ -42,7 +42,7 @@ jobs:
with:
gpg_private_key: ${{ secrets.GPG_PRIVATE_KEY }}
passphrase: ${{ secrets.GPG_PASSPHRASE }}
fingerprint: ${{ env.GPG_FINGERPRINT }}
fingerprint: ${{ vars.GPG_FINGERPRINT }}
- name: Release
env:

View File

@@ -1,3 +1,101 @@
# [4.12.0-dev.4](https://github.com/ReVanced/revanced-patches/compare/v4.12.0-dev.3...v4.12.0-dev.4) (2024-07-20)
### Features
* **Google News:** Add `Enable CustomTabs` and `GmsCore support` patch ([#3111](https://github.com/ReVanced/revanced-patches/issues/3111)) ([ad59096](https://github.com/ReVanced/revanced-patches/commit/ad590962275f888b335252ad5bed0f34e959d3c7))
# [4.12.0-dev.3](https://github.com/ReVanced/revanced-patches/compare/v4.12.0-dev.2...v4.12.0-dev.3) (2024-07-18)
### Bug Fixes
* **Instagram - Hide ads:** Restore compatibility with latest version by fixing fingerprint ([#3455](https://github.com/ReVanced/revanced-patches/issues/3455)) ([4505fa4](https://github.com/ReVanced/revanced-patches/commit/4505fa4138bb55c8957790239c01b8dda63d6cdd))
# [4.12.0-dev.2](https://github.com/ReVanced/revanced-patches/compare/v4.12.0-dev.1...v4.12.0-dev.2) (2024-07-15)
### Features
* **YouTube:** Add `Bypass image region restrictions` patch ([#3442](https://github.com/ReVanced/revanced-patches/issues/3442)) ([765fab2](https://github.com/ReVanced/revanced-patches/commit/765fab2af2769349446cc0f2109343ef3bd8c621))
# [4.12.0-dev.1](https://github.com/ReVanced/revanced-patches/compare/v4.11.1-dev.1...v4.12.0-dev.1) (2024-07-13)
### Features
* **SoundCloud:** Add `Enable offline sync` patch ([#3407](https://github.com/ReVanced/revanced-patches/issues/3407)) ([4de86c6](https://github.com/ReVanced/revanced-patches/commit/4de86c6407376bcd3cc0513a2f0707410b8d7ccd))
## [4.11.1-dev.1](https://github.com/ReVanced/revanced-patches/compare/v4.11.0...v4.11.1-dev.1) (2024-07-12)
### Bug Fixes
* **YouTube - Hide keyword content:** Do not hide flyout menu ([687c9f7](https://github.com/ReVanced/revanced-patches/commit/687c9f7eb03cca5f7b3486f07f2e3453ebc77faf))
## [4.11.1-dev.1](https://github.com/ReVanced/revanced-patches/compare/v4.11.0...v4.11.1-dev.1) (2024-07-12)
### Bug Fixes
* **YouTube - Hide keyword content:** Do not hide flyout menu ([687c9f7](https://github.com/ReVanced/revanced-patches/commit/687c9f7eb03cca5f7b3486f07f2e3453ebc77faf))
# [4.11.0](https://github.com/ReVanced/revanced-patches/compare/v4.10.0...v4.11.0) (2024-07-11)
### Bug Fixes
* **Boost for reddit - Fix missing audio in video downloads:** Replace correct strings ([#3379](https://github.com/ReVanced/revanced-patches/issues/3379)) ([b43db98](https://github.com/ReVanced/revanced-patches/commit/b43db98e8483e2939d8fb9cd02443f24aeaae3c3))
* **Windy - Unlock pro:** Revert changing package name ([#3402](https://github.com/ReVanced/revanced-patches/issues/3402)) ([541f1e7](https://github.com/ReVanced/revanced-patches/commit/541f1e702665630a3737f67a4cc0c4f7b4899f8f))
* **Windy - Unlock pro:** Use correct package name ([#3397](https://github.com/ReVanced/revanced-patches/issues/3397)) ([1d8459a](https://github.com/ReVanced/revanced-patches/commit/1d8459ac992b12371c41df3c25b6386119770d15))
* **YouTube - Hide layout components:** Detect if a keyword filter hides all videos ([#3365](https://github.com/ReVanced/revanced-patches/issues/3365)) ([6aa47ec](https://github.com/ReVanced/revanced-patches/commit/6aa47ec1050cf32158ab608441c0649501184971))
* **YouTube - Settings:** Move some settings to different menus, adjust default setting values ([#3415](https://github.com/ReVanced/revanced-patches/issues/3415)) ([7201ac4](https://github.com/ReVanced/revanced-patches/commit/7201ac45c158682413c8584aac7bb37b770fc924))
* **YouTube - SponsorBlock:** Skip segments when casting ([#3331](https://github.com/ReVanced/revanced-patches/issues/3331)) ([d9395fd](https://github.com/ReVanced/revanced-patches/commit/d9395fdbca45cf68fbc63469e228eefbd6c2bf2e))
### Features
* Add `Remove share targets` patch ([#3334](https://github.com/ReVanced/revanced-patches/issues/3334)) ([9414122](https://github.com/ReVanced/revanced-patches/commit/94141228163aee8d051491db51fc1e4c8b86f0e6))
* Add translations ([#2963](https://github.com/ReVanced/revanced-patches/issues/2963)) ([69ea6f3](https://github.com/ReVanced/revanced-patches/commit/69ea6f3bc2b5f419320f17c150489dcb9eed76ce))
* **Bandcamp:** Add `Remove play limits` patch ([#3366](https://github.com/ReVanced/revanced-patches/issues/3366)) ([ad8d3bb](https://github.com/ReVanced/revanced-patches/commit/ad8d3bb1c86f1324234e890f1171ec4a18e56dd9))
* **Instagram:** Add `Hide ads` patch ([#3380](https://github.com/ReVanced/revanced-patches/issues/3380)) ([c6b2f8c](https://github.com/ReVanced/revanced-patches/commit/c6b2f8c0172b4fd142927d9448ed855831c86ae4))
* **RAR:** Add `Hide purchase reminder` patch ([#3321](https://github.com/ReVanced/revanced-patches/issues/3321)) ([8fbe7e3](https://github.com/ReVanced/revanced-patches/commit/8fbe7e3d38c43adfa0755bcbe87f8c6b7696da3a))
* **Soundcloud:** Add `Hide ads` and `Disable telemetry` patch ([#3386](https://github.com/ReVanced/revanced-patches/issues/3386)) ([3c79f3d](https://github.com/ReVanced/revanced-patches/commit/3c79f3d34d978aead60de19e64d05fbebc1bc73a))
* **Stocard:** Add `Hide offers tab` and `Hide story bubbles` patch ([#3359](https://github.com/ReVanced/revanced-patches/issues/3359)) ([fbd0507](https://github.com/ReVanced/revanced-patches/commit/fbd0507ce5cdeb93a1f661aa8097139c61e643a0))
# [4.11.0-dev.7](https://github.com/ReVanced/revanced-patches/compare/v4.11.0-dev.6...v4.11.0-dev.7) (2024-07-10)
### Features
* **Bandcamp:** Add `Remove play limits` patch ([#3366](https://github.com/ReVanced/revanced-patches/issues/3366)) ([ad8d3bb](https://github.com/ReVanced/revanced-patches/commit/ad8d3bb1c86f1324234e890f1171ec4a18e56dd9))
# [4.11.0-dev.6](https://github.com/ReVanced/revanced-patches/compare/v4.11.0-dev.5...v4.11.0-dev.6) (2024-07-10)
### Bug Fixes
* **YouTube - SponsorBlock:** Skip segments when casting ([#3331](https://github.com/ReVanced/revanced-patches/issues/3331)) ([d9395fd](https://github.com/ReVanced/revanced-patches/commit/d9395fdbca45cf68fbc63469e228eefbd6c2bf2e))
### Features
* **Soundcloud:** Add `Hide ads` and `Disable telemetry` patch ([#3386](https://github.com/ReVanced/revanced-patches/issues/3386)) ([3c79f3d](https://github.com/ReVanced/revanced-patches/commit/3c79f3d34d978aead60de19e64d05fbebc1bc73a))
# [4.11.0-dev.5](https://github.com/ReVanced/revanced-patches/compare/v4.11.0-dev.4...v4.11.0-dev.5) (2024-07-05)
### Bug Fixes
* **YouTube - Settings:** Move some settings to different menus, adjust default setting values ([#3415](https://github.com/ReVanced/revanced-patches/issues/3415)) ([7201ac4](https://github.com/ReVanced/revanced-patches/commit/7201ac45c158682413c8584aac7bb37b770fc924))
# [4.11.0-dev.4](https://github.com/ReVanced/revanced-patches/compare/v4.11.0-dev.3...v4.11.0-dev.4) (2024-07-01)
### Bug Fixes
* **Windy - Unlock pro:** Revert changing package name ([#3402](https://github.com/ReVanced/revanced-patches/issues/3402)) ([541f1e7](https://github.com/ReVanced/revanced-patches/commit/541f1e702665630a3737f67a4cc0c4f7b4899f8f))
# [4.11.0-dev.3](https://github.com/ReVanced/revanced-patches/compare/v4.11.0-dev.2...v4.11.0-dev.3) (2024-06-30)

View File

@@ -181,6 +181,12 @@ public final class app/revanced/patches/backdrops/misc/pro/ProUnlockPatch : app/
public synthetic fun execute (Lapp/revanced/patcher/data/Context;)V
}
public final class app/revanced/patches/bandcamp/limitations/RemovePlayLimitsPatch : app/revanced/patcher/patch/BytecodePatch {
public static final field INSTANCE Lapp/revanced/patches/bandcamp/limitations/RemovePlayLimitsPatch;
public fun execute (Lapp/revanced/patcher/data/BytecodeContext;)V
public synthetic fun execute (Lapp/revanced/patcher/data/Context;)V
}
public final class app/revanced/patches/candylinkvpn/UnlockProPatch : app/revanced/patcher/patch/BytecodePatch {
public static final field INSTANCE Lapp/revanced/patches/candylinkvpn/UnlockProPatch;
public fun execute (Lapp/revanced/patcher/data/BytecodeContext;)V
@@ -211,6 +217,24 @@ public final class app/revanced/patches/finanzonline/detection/root/RootDetectio
public synthetic fun execute (Lapp/revanced/patcher/data/Context;)V
}
public final class app/revanced/patches/googlenews/customtabs/EnableCustomTabs : app/revanced/patcher/patch/BytecodePatch {
public static final field INSTANCE Lapp/revanced/patches/googlenews/customtabs/EnableCustomTabs;
public fun execute (Lapp/revanced/patcher/data/BytecodeContext;)V
public synthetic fun execute (Lapp/revanced/patcher/data/Context;)V
}
public final class app/revanced/patches/googlenews/misc/gms/GmsCoreSupportPatch : app/revanced/patches/shared/misc/gms/BaseGmsCoreSupportPatch {
public static final field INSTANCE Lapp/revanced/patches/googlenews/misc/gms/GmsCoreSupportPatch;
}
public final class app/revanced/patches/googlenews/misc/gms/GmsCoreSupportResourcePatch : app/revanced/patches/shared/misc/gms/BaseGmsCoreSupportResourcePatch {
public static final field INSTANCE Lapp/revanced/patches/googlenews/misc/gms/GmsCoreSupportResourcePatch;
}
public final class app/revanced/patches/googlenews/misc/integrations/IntegrationsPatch : app/revanced/patches/shared/misc/integrations/BaseIntegrationsPatch {
public static final field INSTANCE Lapp/revanced/patches/googlenews/misc/integrations/IntegrationsPatch;
}
public final class app/revanced/patches/googlerecorder/restrictions/RemoveDeviceRestrictions : app/revanced/patcher/patch/BytecodePatch {
public static final field INSTANCE Lapp/revanced/patches/googlerecorder/restrictions/RemoveDeviceRestrictions;
public fun execute (Lapp/revanced/patcher/data/BytecodeContext;)V
@@ -1032,6 +1056,24 @@ public final class app/revanced/patches/songpal/badge/RemoveNotificationBadgePat
public synthetic fun execute (Lapp/revanced/patcher/data/Context;)V
}
public final class app/revanced/patches/soundcloud/ad/HideAdsPatch : app/revanced/patcher/patch/BytecodePatch {
public static final field INSTANCE Lapp/revanced/patches/soundcloud/ad/HideAdsPatch;
public fun execute (Lapp/revanced/patcher/data/BytecodeContext;)V
public synthetic fun execute (Lapp/revanced/patcher/data/Context;)V
}
public final class app/revanced/patches/soundcloud/analytics/DisableTelemetryPatch : app/revanced/patcher/patch/BytecodePatch {
public static final field INSTANCE Lapp/revanced/patches/soundcloud/analytics/DisableTelemetryPatch;
public fun execute (Lapp/revanced/patcher/data/BytecodeContext;)V
public synthetic fun execute (Lapp/revanced/patcher/data/Context;)V
}
public final class app/revanced/patches/soundcloud/offlinesync/EnableOfflineSyncPatch : app/revanced/patcher/patch/BytecodePatch {
public static final field INSTANCE Lapp/revanced/patches/soundcloud/offlinesync/EnableOfflineSyncPatch;
public fun execute (Lapp/revanced/patcher/data/BytecodeContext;)V
public synthetic fun execute (Lapp/revanced/patcher/data/Context;)V
}
public final class app/revanced/patches/spotify/layout/theme/CustomThemePatch : app/revanced/patcher/patch/ResourcePatch {
public static final field INSTANCE Lapp/revanced/patches/spotify/layout/theme/CustomThemePatch;
public synthetic fun execute (Lapp/revanced/patcher/data/Context;)V
@@ -1700,6 +1742,12 @@ public final class app/revanced/patches/youtube/layout/thumbnails/AlternativeThu
public synthetic fun execute (Lapp/revanced/patcher/data/Context;)V
}
public final class app/revanced/patches/youtube/layout/thumbnails/BypassImageRegionRestrictions : app/revanced/patcher/patch/BytecodePatch {
public static final field INSTANCE Lapp/revanced/patches/youtube/layout/thumbnails/BypassImageRegionRestrictions;
public fun execute (Lapp/revanced/patcher/data/BytecodeContext;)V
public synthetic fun execute (Lapp/revanced/patcher/data/Context;)V
}
public final class app/revanced/patches/youtube/misc/announcements/AnnouncementsPatch : app/revanced/patcher/patch/BytecodePatch {
public static final field INSTANCE Lapp/revanced/patches/youtube/misc/announcements/AnnouncementsPatch;
public fun execute (Lapp/revanced/patcher/data/BytecodeContext;)V
@@ -1766,6 +1814,16 @@ public final class app/revanced/patches/youtube/misc/gms/GmsCoreSupportResourceP
public fun execute (Lapp/revanced/patcher/data/ResourceContext;)V
}
public final class app/revanced/patches/youtube/misc/imageurlhook/CronetImageUrlHook : app/revanced/patcher/patch/BytecodePatch {
public static final field INSTANCE Lapp/revanced/patches/youtube/misc/imageurlhook/CronetImageUrlHook;
public final fun addImageUrlErrorCallbackHook (Ljava/lang/String;)V
public final fun addImageUrlHook (Ljava/lang/String;Z)V
public static synthetic fun addImageUrlHook$default (Lapp/revanced/patches/youtube/misc/imageurlhook/CronetImageUrlHook;Ljava/lang/String;ZILjava/lang/Object;)V
public final fun addImageUrlSuccessCallbackHook (Ljava/lang/String;)V
public fun execute (Lapp/revanced/patcher/data/BytecodeContext;)V
public synthetic fun execute (Lapp/revanced/patcher/data/Context;)V
}
public final class app/revanced/patches/youtube/misc/integrations/IntegrationsPatch : app/revanced/patches/shared/misc/integrations/BaseIntegrationsPatch {
public static final field INSTANCE Lapp/revanced/patches/youtube/misc/integrations/IntegrationsPatch;
}
@@ -1993,7 +2051,11 @@ public final class app/revanced/util/BytecodeUtilsKt {
public static final fun indexOfIdResourceOrThrow (Lcom/android/tools/smali/dexlib2/iface/Method;Ljava/lang/String;)I
public static final fun injectHideViewCall (Lapp/revanced/patcher/util/proxy/mutableTypes/MutableMethod;IILjava/lang/String;Ljava/lang/String;)V
public static final fun resultOrThrow (Lapp/revanced/patcher/fingerprint/MethodFingerprint;)Lapp/revanced/patcher/fingerprint/MethodFingerprintResult;
public static final fun returnEarly (Lapp/revanced/patcher/fingerprint/MethodFingerprint;Z)V
public static final fun returnEarly (Ljava/lang/Iterable;Z)V
public static final fun returnEarly (Ljava/util/List;Z)V
public static synthetic fun returnEarly$default (Lapp/revanced/patcher/fingerprint/MethodFingerprint;ZILjava/lang/Object;)V
public static synthetic fun returnEarly$default (Ljava/lang/Iterable;ZILjava/lang/Object;)V
public static synthetic fun returnEarly$default (Ljava/util/List;ZILjava/lang/Object;)V
public static final fun transformMethods (Lapp/revanced/patcher/util/proxy/mutableTypes/MutableClass;Lkotlin/jvm/functions/Function1;)V
public static final fun traverseClassHierarchy (Lapp/revanced/patcher/data/BytecodeContext;Lapp/revanced/patcher/util/proxy/mutableTypes/MutableClass;Lkotlin/jvm/functions/Function1;)V

View File

@@ -1,4 +1,4 @@
org.gradle.parallel = true
org.gradle.caching = true
kotlin.code.style = official
version = 4.11.0-dev.3
version = 4.12.0-dev.4

View File

@@ -0,0 +1,23 @@
package app.revanced.patches.bandcamp.limitations
import app.revanced.patcher.data.BytecodeContext
import app.revanced.patcher.extensions.InstructionExtensions.addInstructions
import app.revanced.patcher.patch.BytecodePatch
import app.revanced.patcher.patch.annotation.CompatiblePackage
import app.revanced.patcher.patch.annotation.Patch
import app.revanced.patches.bandcamp.limitations.fingerprints.HandlePlaybackLimitsPatch
import app.revanced.util.exception
@Patch(
name = "Remove play limits",
description = "Disables purchase nagging and playback limits of not purchased tracks.",
compatiblePackages = [CompatiblePackage("com.bandcamp.android")],
)
@Suppress("unused")
object RemovePlayLimitsPatch : BytecodePatch(
setOf(HandlePlaybackLimitsPatch),
) {
override fun execute(context: BytecodeContext) =
HandlePlaybackLimitsPatch.result?.mutableMethod?.addInstructions(0, "return-void")
?: throw HandlePlaybackLimitsPatch.exception
}

View File

@@ -0,0 +1,7 @@
package app.revanced.patches.bandcamp.limitations.fingerprints
import app.revanced.patcher.fingerprint.MethodFingerprint
internal object HandlePlaybackLimitsPatch : MethodFingerprint(
strings = listOf("play limits processing track", "found play_count"),
)

View File

@@ -0,0 +1,32 @@
package app.revanced.patches.googlenews.customtabs
import app.revanced.patcher.data.BytecodeContext
import app.revanced.patcher.extensions.InstructionExtensions.getInstruction
import app.revanced.patcher.extensions.InstructionExtensions.replaceInstruction
import app.revanced.patcher.patch.BytecodePatch
import app.revanced.patcher.patch.annotation.CompatiblePackage
import app.revanced.patcher.patch.annotation.Patch
import app.revanced.patches.googlenews.customtabs.fingerprints.LaunchCustomTabFingerprint
import app.revanced.util.resultOrThrow
import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
@Patch(
name = "Enable CustomTabs",
description = "Enables CustomTabs to open articles in your default browser.",
compatiblePackages = [CompatiblePackage("com.google.android.apps.magazines")],
)
@Suppress("unused")
object EnableCustomTabs : BytecodePatch(
setOf(LaunchCustomTabFingerprint)
) {
override fun execute(context: BytecodeContext) {
LaunchCustomTabFingerprint.resultOrThrow().let { result ->
result.mutableMethod.apply {
val checkIndex = result.scanResult.patternScanResult!!.endIndex + 1
val register = getInstruction<OneRegisterInstruction>(checkIndex).registerA
replaceInstruction(checkIndex, "const/4 v$register, 0x1")
}
}
}
}

View File

@@ -0,0 +1,18 @@
package app.revanced.patches.googlenews.customtabs.fingerprints
import app.revanced.patcher.extensions.or
import app.revanced.patcher.fingerprint.MethodFingerprint
import com.android.tools.smali.dexlib2.AccessFlags
import com.android.tools.smali.dexlib2.Opcode
internal object LaunchCustomTabFingerprint : MethodFingerprint(
accessFlags = AccessFlags.PUBLIC or AccessFlags.CONSTRUCTOR,
opcodes = listOf(
Opcode.IPUT_OBJECT,
Opcode.CONST_4,
Opcode.IPUT,
Opcode.CONST_4,
Opcode.IPUT_BOOLEAN,
),
customFingerprint = { _, classDef -> classDef.endsWith("CustomTabsArticleLauncher;") },
)

View File

@@ -0,0 +1,6 @@
package app.revanced.patches.googlenews.misc.gms
internal object Constants {
const val MAGAZINES_PACKAGE_NAME = "com.google.android.apps.magazines"
const val REVANCED_MAGAZINES_PACKAGE_NAME = "app.revanced.android.magazines"
}

View File

@@ -0,0 +1,26 @@
package app.revanced.patches.googlenews.misc.gms
import app.revanced.patches.googlenews.misc.gms.Constants.MAGAZINES_PACKAGE_NAME
import app.revanced.patches.googlenews.misc.gms.Constants.REVANCED_MAGAZINES_PACKAGE_NAME
import app.revanced.patches.googlenews.misc.gms.GmsCoreSupportResourcePatch.gmsCoreVendorGroupIdOption
import app.revanced.patches.googlenews.misc.gms.fingerprints.MagazinesActivityOnCreateFingerprint
import app.revanced.patches.googlenews.misc.gms.fingerprints.ServiceCheckFingerprint
import app.revanced.patches.googlenews.misc.integrations.IntegrationsPatch
import app.revanced.patches.shared.misc.gms.BaseGmsCoreSupportPatch
@Suppress("unused")
object GmsCoreSupportPatch : BaseGmsCoreSupportPatch(
fromPackageName = MAGAZINES_PACKAGE_NAME,
toPackageName = REVANCED_MAGAZINES_PACKAGE_NAME,
primeMethodFingerprint = null,
earlyReturnFingerprints = setOf(ServiceCheckFingerprint),
mainActivityOnCreateFingerprint = MagazinesActivityOnCreateFingerprint,
integrationsPatchDependency = IntegrationsPatch::class,
gmsCoreSupportResourcePatch = GmsCoreSupportResourcePatch,
// Remove version constraint,
// once https://github.com/ReVanced/revanced-patches/pull/3111#issuecomment-2240877277 is resolved.
compatiblePackages = setOf(CompatiblePackage(MAGAZINES_PACKAGE_NAME, setOf("5.108.0.644447823"))),
fingerprints = setOf(ServiceCheckFingerprint),
) {
override val gmsCoreVendorGroupId by gmsCoreVendorGroupIdOption
}

View File

@@ -0,0 +1,11 @@
package app.revanced.patches.googlenews.misc.gms
import app.revanced.patches.googlenews.misc.gms.Constants.MAGAZINES_PACKAGE_NAME
import app.revanced.patches.googlenews.misc.gms.Constants.REVANCED_MAGAZINES_PACKAGE_NAME
import app.revanced.patches.shared.misc.gms.BaseGmsCoreSupportResourcePatch
object GmsCoreSupportResourcePatch : BaseGmsCoreSupportResourcePatch(
fromPackageName = MAGAZINES_PACKAGE_NAME,
toPackageName = REVANCED_MAGAZINES_PACKAGE_NAME,
spoofedPackageSignature = "24bb24c05e47e0aefa68a58a766179d9b613a666",
)

View File

@@ -0,0 +1,9 @@
package app.revanced.patches.googlenews.misc.gms.fingerprints
import app.revanced.patcher.fingerprint.MethodFingerprint
internal object MagazinesActivityOnCreateFingerprint : MethodFingerprint(
customFingerprint = { methodDef, classDef ->
methodDef.name == "onCreate" && classDef.endsWith("/StartActivity;")
},
)

View File

@@ -0,0 +1,7 @@
package app.revanced.patches.googlenews.misc.gms.fingerprints
import app.revanced.patcher.fingerprint.MethodFingerprint
internal object PrimeMethodFingerprint : MethodFingerprint(
strings = listOf("com.google.android.GoogleCamera", "com.android.vending"),
)

View File

@@ -0,0 +1,12 @@
package app.revanced.patches.googlenews.misc.gms.fingerprints
import app.revanced.patcher.extensions.or
import app.revanced.patcher.fingerprint.MethodFingerprint
import com.android.tools.smali.dexlib2.AccessFlags
internal object ServiceCheckFingerprint : MethodFingerprint(
returnType = "V",
accessFlags = AccessFlags.PUBLIC or AccessFlags.STATIC,
parameters = listOf("L", "I"),
strings = listOf("Google Play Services not available", "GooglePlayServices not available due to error "),
)

View File

@@ -0,0 +1,10 @@
package app.revanced.patches.googlenews.misc.integrations
import app.revanced.patcher.patch.annotation.Patch
import app.revanced.patches.googlenews.misc.integrations.fingerprints.StartActivityInitFingerprint
import app.revanced.patches.shared.misc.integrations.BaseIntegrationsPatch
@Patch(requiresIntegrations = true)
object IntegrationsPatch : BaseIntegrationsPatch(
setOf(StartActivityInitFingerprint),
)

View File

@@ -0,0 +1,41 @@
package app.revanced.patches.googlenews.misc.integrations.fingerprints
import app.revanced.patches.googlenews.misc.integrations.fingerprints.StartActivityInitFingerprint.getApplicationContextIndex
import app.revanced.patches.shared.misc.integrations.BaseIntegrationsPatch.IntegrationsFingerprint
import app.revanced.util.getReference
import app.revanced.util.indexOfFirstInstructionOrThrow
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
internal object StartActivityInitFingerprint : IntegrationsFingerprint(
opcodes = listOf(
Opcode.INVOKE_STATIC,
Opcode.MOVE_RESULT,
Opcode.CONST_4,
Opcode.IF_EQZ,
Opcode.CONST,
Opcode.INVOKE_VIRTUAL,
Opcode.IPUT_OBJECT,
Opcode.IPUT_BOOLEAN,
Opcode.INVOKE_VIRTUAL, // Calls startActivity.getApplicationContext().
Opcode.MOVE_RESULT_OBJECT,
),
insertIndexResolver = { method ->
getApplicationContextIndex = method.indexOfFirstInstructionOrThrow {
getReference<MethodReference>()?.name == "getApplicationContext"
}
getApplicationContextIndex + 2 // Below the move-result-object instruction
},
contextRegisterResolver = { method ->
val moveResultInstruction = method.implementation!!.instructions.elementAt(getApplicationContextIndex + 1)
as OneRegisterInstruction
moveResultInstruction.registerA
},
customFingerprint = { methodDef, classDef ->
methodDef.name == "onCreate" && classDef.endsWith("/StartActivity;")
},
) {
private var getApplicationContextIndex = -1
}

View File

@@ -12,15 +12,15 @@ import app.revanced.util.returnEarly
@Patch(
name = "Remove root detection",
description = "Removes the check for root permissions and unlocked bootloader.",
compatiblePackages = [CompatiblePackage("at.gv.oe.app")]
compatiblePackages = [CompatiblePackage("at.gv.oe.app")],
)
@Suppress("unused")
object RootDetectionPatch : BytecodePatch(
setOf(AttestationSupportedCheckFingerprint, BootloaderCheckFingerprint, RootCheckFingerprint)
setOf(AttestationSupportedCheckFingerprint, BootloaderCheckFingerprint, RootCheckFingerprint),
) {
override fun execute(context: BytecodeContext) = listOf(
override fun execute(context: BytecodeContext) = setOf(
AttestationSupportedCheckFingerprint,
BootloaderCheckFingerprint,
RootCheckFingerprint
RootCheckFingerprint,
).returnEarly(true)
}

View File

@@ -2,16 +2,13 @@ package app.revanced.patches.instagram.patches.ad.fingerprints
import app.revanced.patcher.fingerprint.MethodFingerprint
import com.android.tools.smali.dexlib2.AccessFlags
import com.android.tools.smali.dexlib2.Opcode
internal object AdInjectorFingerprint : MethodFingerprint(
returnType = "Z",
accessFlags = AccessFlags.PRIVATE.value,
parameters = listOf("L", "L"),
opcodes = listOf(
Opcode.IGET,
Opcode.INVOKE_INTERFACE,
Opcode.MOVE_RESULT_OBJECT,
strings = listOf(
"SponsoredContentController.insertItem",
"SponsoredContentController::Delivery",
),
strings = listOf("SponsoredContentController::Delivery"),
)

View File

@@ -12,7 +12,7 @@ import app.revanced.util.resultOrThrow
@Patch(
name = "Remove background playback restrictions",
description = "Removes restrictions on background playback.",
description = "Removes restrictions on background playback, including playing kids videos in the background.",
compatiblePackages = [
CompatiblePackage(
"com.google.android.apps.youtube.music",

View File

@@ -15,7 +15,6 @@ object GmsCoreSupportPatch : BaseGmsCoreSupportPatch(
primeMethodFingerprint = PrimeMethodFingerprint,
earlyReturnFingerprints = setOf(
ServiceCheckFingerprint,
GooglePlayUtilityFingerprint,
CastDynamiteModuleFingerprint,
CastDynamiteModuleV2Fingerprint,
CastContextFetchFingerprint,
@@ -32,12 +31,11 @@ object GmsCoreSupportPatch : BaseGmsCoreSupportPatch(
"7.01.53",
"7.02.52",
"7.03.52",
)
)
),
),
),
fingerprints = setOf(
ServiceCheckFingerprint,
GooglePlayUtilityFingerprint,
CastDynamiteModuleFingerprint,
CastDynamiteModuleV2Fingerprint,
CastContextFetchFingerprint,

View File

@@ -1,18 +0,0 @@
package app.revanced.patches.music.misc.gms.fingerprints
import app.revanced.patcher.extensions.or
import app.revanced.patcher.fingerprint.MethodFingerprint
import com.android.tools.smali.dexlib2.AccessFlags
internal object GooglePlayUtilityFingerprint : MethodFingerprint(
"I",
AccessFlags.PUBLIC or AccessFlags.STATIC,
listOf("L", "I"),
strings = listOf(
"This should never happen.",
"MetadataValueReader",
"GooglePlayServicesUtil",
"com.android.vending",
"android.hardware.type.embedded"
)
)

View File

@@ -15,5 +15,5 @@ abstract class BaseDisableAdsPatch(
compatiblePackages = compatiblePackages,
fingerprints = setOf(IsAdsEnabledFingerprint),
) {
override fun execute(context: BytecodeContext) = listOf(IsAdsEnabledFingerprint).returnEarly()
override fun execute(context: BytecodeContext) = IsAdsEnabledFingerprint.returnEarly()
}

View File

@@ -22,5 +22,5 @@ object UnlockSubscriptionPatch : BytecodePatch(
setOf(StartSubscriptionActivityFingerprint, BillingClientOnServiceConnected),
) {
override fun execute(context: BytecodeContext) =
listOf(StartSubscriptionActivityFingerprint, BillingClientOnServiceConnected).returnEarly()
setOf(StartSubscriptionActivityFingerprint, BillingClientOnServiceConnected).returnEarly()
}

View File

@@ -13,6 +13,7 @@ import app.revanced.patches.shared.misc.gms.BaseGmsCoreSupportPatch.Constants.AU
import app.revanced.patches.shared.misc.gms.BaseGmsCoreSupportPatch.Constants.PERMISSIONS
import app.revanced.patches.shared.misc.gms.fingerprints.GmsCoreSupportFingerprint
import app.revanced.patches.shared.misc.gms.fingerprints.GmsCoreSupportFingerprint.GET_GMS_CORE_VENDOR_GROUP_ID_METHOD_NAME
import app.revanced.patches.shared.misc.gms.fingerprints.GooglePlayUtilityFingerprint
import app.revanced.util.exception
import app.revanced.util.getReference
import app.revanced.util.returnEarly
@@ -42,7 +43,7 @@ import com.android.tools.smali.dexlib2.util.MethodUtil
abstract class BaseGmsCoreSupportPatch(
private val fromPackageName: String,
private val toPackageName: String,
private val primeMethodFingerprint: MethodFingerprint,
private val primeMethodFingerprint: MethodFingerprint?,
private val earlyReturnFingerprints: Set<MethodFingerprint>,
private val mainActivityOnCreateFingerprint: MethodFingerprint,
private val integrationsPatchDependency: PatchClass,
@@ -62,6 +63,7 @@ abstract class BaseGmsCoreSupportPatch(
compatiblePackages = compatiblePackages,
fingerprints = setOf(
GmsCoreSupportFingerprint,
GooglePlayUtilityFingerprint,
mainActivityOnCreateFingerprint,
) + fingerprints,
requiresIntegrations = true,
@@ -91,10 +93,13 @@ abstract class BaseGmsCoreSupportPatch(
}
// Specific method that needs to be patched.
transformPrimeMethod(packageName)
primeMethodFingerprint?.let { transformPrimeMethod(packageName) }
// Return these methods early to prevent the app from crashing.
earlyReturnFingerprints.toList().returnEarly()
earlyReturnFingerprints.returnEarly()
if (GooglePlayUtilityFingerprint.result != null) {
GooglePlayUtilityFingerprint.returnEarly()
}
// Verify GmsCore is installed and whitelisted for power optimizations and background usage.
mainActivityOnCreateFingerprint.result?.mutableMethod?.addInstructions(
@@ -192,7 +197,7 @@ abstract class BaseGmsCoreSupportPatch(
}
private fun transformPrimeMethod(packageName: String) {
primeMethodFingerprint.result?.mutableMethod?.apply {
primeMethodFingerprint!!.result?.mutableMethod?.apply {
var register = 2
val index = getInstructions().indexOfFirst {
@@ -305,6 +310,7 @@ abstract class BaseGmsCoreSupportPatch(
"com.google.android.gms.languageprofile.service.START",
"com.google.android.gms.clearcut.service.START",
"com.google.android.gms.icing.LIGHTWEIGHT_INDEX_SERVICE",
"com.google.android.gms.accountsettings.action.VIEW_SETTINGS",
// potoken
"com.google.android.gms.potokens.service.START",

View File

@@ -1,4 +1,4 @@
package app.revanced.patches.youtube.misc.gms.fingerprints
package app.revanced.patches.shared.misc.gms.fingerprints
import app.revanced.patcher.extensions.or
import app.revanced.patcher.fingerprint.MethodFingerprint
@@ -8,5 +8,5 @@ internal object GooglePlayUtilityFingerprint : MethodFingerprint(
returnType = "I",
accessFlags = AccessFlags.PUBLIC or AccessFlags.STATIC,
parameters = listOf("L", "I"),
strings = listOf("This should never happen.", "MetadataValueReader", "com.google.android.gms")
)
strings = listOf("This should never happen.", "MetadataValueReader", "com.google.android.gms"),
)

View File

@@ -0,0 +1,72 @@
package app.revanced.patches.soundcloud.ad
import app.revanced.patcher.data.BytecodeContext
import app.revanced.patcher.extensions.InstructionExtensions.addInstruction
import app.revanced.patcher.extensions.InstructionExtensions.addInstructions
import app.revanced.patcher.extensions.InstructionExtensions.addInstructionsWithLabels
import app.revanced.patcher.extensions.InstructionExtensions.getInstruction
import app.revanced.patcher.patch.BytecodePatch
import app.revanced.patcher.patch.annotation.CompatiblePackage
import app.revanced.patcher.patch.annotation.Patch
import app.revanced.patcher.util.smali.ExternalLabel
import app.revanced.patches.soundcloud.ad.fingerprints.InterceptFingerprint
import app.revanced.patches.soundcloud.shared.fingerprints.FeatureConstructorFingerprint
import app.revanced.patches.soundcloud.ad.fingerprints.UserConsumerPlanConstructorFingerprint
import app.revanced.util.resultOrThrow
@Patch(
name = "Hide ads",
compatiblePackages = [CompatiblePackage("com.soundcloud.android")],
)
@Suppress("unused")
object HideAdsPatch : BytecodePatch(
setOf(FeatureConstructorFingerprint, UserConsumerPlanConstructorFingerprint, InterceptFingerprint),
) {
override fun execute(context: BytecodeContext) {
// Enable a preset feature to disable audio ads by modifying the JSON server response.
// This method is the constructor of a class representing a "Feature" object parsed from JSON data.
// p1 is the name of the feature.
// p2 is true if the feature is enabled, false otherwise.
FeatureConstructorFingerprint.resultOrThrow().mutableMethod.apply {
val afterCheckNotNullIndex = 2
addInstructionsWithLabels(
afterCheckNotNullIndex,
"""
const-string v0, "no_audio_ads"
invoke-virtual {p1, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v0
if-eqz v0, :skip
const/4 p2, 0x1
""",
ExternalLabel("skip", getInstruction(afterCheckNotNullIndex)),
)
}
// Overwrite the JSON response from the server to a paid plan, which hides all ads in the app.
// This does not enable paid features, as they are all checked for on the backend.
// This method is the constructor of a class representing a "UserConsumerPlan" object parsed from JSON data.
// p1 is the "currentTier" value, dictating which features to enable in the app.
// p4 is the "consumerPlanUpsells" value, a list of plans to try to sell to the user.
// p5 is the "currentConsumerPlan" value, the type of plan currently subscribed to.
// p6 is the "currentConsumerPlanTitle" value, the name of the plan currently subscribed to, shown to the user.
UserConsumerPlanConstructorFingerprint.resultOrThrow().mutableMethod.addInstructions(
0,
"""
const-string p1, "high_tier"
new-instance p4, Ljava/util/ArrayList;
invoke-direct {p4}, Ljava/util/ArrayList;-><init>()V
const-string p5, "go-plus"
const-string p6, "SoundCloud Go+"
""",
)
// Prevent verification of an HTTP header containing the user's current plan, which would contradict the previous patch.
InterceptFingerprint.resultOrThrow().let { result ->
val conditionIndex = result.scanResult.patternScanResult!!.endIndex
result.mutableMethod.addInstruction(
conditionIndex,
"return-object p1",
)
}
}
}

View File

@@ -0,0 +1,22 @@
package app.revanced.patches.soundcloud.ad.fingerprints
import app.revanced.patcher.fingerprint.MethodFingerprint
import com.android.tools.smali.dexlib2.AccessFlags
import com.android.tools.smali.dexlib2.Opcode
internal object InterceptFingerprint : MethodFingerprint(
returnType = "L",
accessFlags = AccessFlags.PUBLIC.value,
parameters = listOf("L"),
opcodes = listOf(
Opcode.INVOKE_INTERFACE,
Opcode.MOVE_RESULT_OBJECT,
Opcode.INVOKE_VIRTUAL,
Opcode.MOVE_RESULT,
Opcode.IF_EQZ,
),
strings = listOf("SC-Mob-UserPlan", "Configuration"),
customFingerprint = { _, classDef ->
classDef.sourceFile == "ApiUserPlanInterceptor.java"
},
)

View File

@@ -0,0 +1,14 @@
package app.revanced.patches.soundcloud.ad.fingerprints
import app.revanced.patcher.extensions.or
import app.revanced.patcher.fingerprint.MethodFingerprint
import com.android.tools.smali.dexlib2.AccessFlags
internal object UserConsumerPlanConstructorFingerprint : MethodFingerprint(
returnType = "V",
accessFlags = AccessFlags.PUBLIC or AccessFlags.CONSTRUCTOR,
parameters = listOf("Ljava/lang/String;", "Z", "Ljava/lang/String;", "Ljava/util/List;", "Ljava/lang/String;", "Ljava/lang/String;"),
customFingerprint = { _, classDef ->
classDef.sourceFile == "UserConsumerPlan.kt"
},
)

View File

@@ -0,0 +1,24 @@
package app.revanced.patches.soundcloud.analytics
import app.revanced.patcher.data.BytecodeContext
import app.revanced.patcher.extensions.InstructionExtensions.addInstruction
import app.revanced.patcher.patch.BytecodePatch
import app.revanced.patcher.patch.annotation.CompatiblePackage
import app.revanced.patcher.patch.annotation.Patch
import app.revanced.patches.soundcloud.analytics.fingerprints.CreateTrackingApiFingerprint
import app.revanced.util.resultOrThrow
@Patch(
name = "Disable telemetry",
description = "Disables SoundCloud's telemetry system.",
compatiblePackages = [CompatiblePackage("com.soundcloud.android")],
)
@Suppress("unused")
object DisableTelemetryPatch : BytecodePatch(
setOf(CreateTrackingApiFingerprint),
) {
override fun execute(context: BytecodeContext) =
// Empty the "backend" argument to abort the initializer.
CreateTrackingApiFingerprint.resultOrThrow()
.mutableMethod.addInstruction(0, "const-string p1, \"\"")
}

View File

@@ -0,0 +1,12 @@
package app.revanced.patches.soundcloud.analytics.fingerprints
import app.revanced.patcher.fingerprint.MethodFingerprint
import com.android.tools.smali.dexlib2.AccessFlags
internal object CreateTrackingApiFingerprint : MethodFingerprint(
returnType = "L",
accessFlags = AccessFlags.PUBLIC.value,
customFingerprint = { methodDef, classDef ->
classDef.sourceFile == "DefaultTrackingApiFactory.kt" && methodDef.name == "create"
},
)

View File

@@ -0,0 +1,83 @@
package app.revanced.patches.soundcloud.offlinesync
import app.revanced.patcher.data.BytecodeContext
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.extensions.InstructionExtensions.getInstructions
import app.revanced.patcher.extensions.InstructionExtensions.replaceInstruction
import app.revanced.patcher.patch.BytecodePatch
import app.revanced.patcher.patch.annotation.CompatiblePackage
import app.revanced.patcher.patch.annotation.Patch
import app.revanced.patcher.util.smali.ExternalLabel
import app.revanced.patches.soundcloud.offlinesync.fingerprints.DownloadOperationsHeaderVerificationFingerprint
import app.revanced.patches.soundcloud.offlinesync.fingerprints.DownloadOperationsURLBuilderFingerprint
import app.revanced.patches.soundcloud.shared.fingerprints.FeatureConstructorFingerprint
import app.revanced.util.getReference
import app.revanced.util.resultOrThrow
import com.android.tools.smali.dexlib2.Opcode
import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
import com.android.tools.smali.dexlib2.iface.reference.FieldReference
@Patch(
name = "Enable offline sync",
compatiblePackages = [CompatiblePackage("com.soundcloud.android")],
)
@Suppress("unused")
object EnableOfflineSyncPatch : BytecodePatch(
setOf(
FeatureConstructorFingerprint, DownloadOperationsURLBuilderFingerprint,
DownloadOperationsHeaderVerificationFingerprint
),
) {
override fun execute(context: BytecodeContext) {
// Enable the feature to allow offline track syncing by modifying the JSON server response.
// This method is the constructor of a class representing a "Feature" object parsed from JSON data.
// p1 is the name of the feature.
// p2 is true if the feature is enabled, false otherwise.
FeatureConstructorFingerprint.resultOrThrow().mutableMethod.apply {
val afterCheckNotNullIndex = 2
addInstructionsWithLabels(
afterCheckNotNullIndex,
"""
const-string v0, "offline_sync"
invoke-virtual { p1, v0 }, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v0
if-eqz v0, :skip
const/4 p2, 0x1
""",
ExternalLabel("skip", getInstruction(afterCheckNotNullIndex)),
)
}
// Patch the URL builder to use the HTTPS_STREAM endpoint
// instead of the offline sync endpoint to downloading the track.
DownloadOperationsURLBuilderFingerprint.resultOrThrow().mutableMethod.apply {
val getEndpointsEnumFieldIndex = 1
val getEndpointsEnumFieldInstruction = getInstruction<OneRegisterInstruction>(getEndpointsEnumFieldIndex)
val targetRegister = getEndpointsEnumFieldInstruction.registerA
val endpointsType = getEndpointsEnumFieldInstruction.getReference<FieldReference>()!!.type
replaceInstruction(
getEndpointsEnumFieldIndex,
"sget-object v$targetRegister, $endpointsType->HTTPS_STREAM:$endpointsType"
)
}
// The HTTPS_STREAM endpoint does not return the necessary headers for offline sync.
// Mock the headers to prevent the app from crashing by setting them to empty strings.
// The headers are all cosmetic and do not affect the functionality of the app.
DownloadOperationsHeaderVerificationFingerprint.resultOrThrow().mutableMethod.apply {
// The first three null checks need to be patched.
getInstructions().asSequence().filter {
it.opcode == Opcode.IF_EQZ
}.take(3).map { it.location.index }.forEach { nullCheckIndex ->
val headerStringRegister = getInstruction<OneRegisterInstruction>(nullCheckIndex).registerA
addInstruction(nullCheckIndex, "const-string v$headerStringRegister, \"\"")
}
}
}
}

View File

@@ -0,0 +1,21 @@
package app.revanced.patches.soundcloud.offlinesync.fingerprints
import app.revanced.patcher.extensions.or
import app.revanced.patcher.fingerprint.MethodFingerprint
import com.android.tools.smali.dexlib2.AccessFlags
import com.android.tools.smali.dexlib2.Opcode
internal object DownloadOperationsHeaderVerificationFingerprint : MethodFingerprint(
returnType = "V",
accessFlags = AccessFlags.PUBLIC or AccessFlags.FINAL,
parameters = listOf("L","L"),
opcodes = listOf(
Opcode.CONST_STRING,
Opcode.INVOKE_VIRTUAL,
Opcode.MOVE_RESULT_OBJECT,
Opcode.CONST_STRING
),
customFingerprint = { _, classDef ->
classDef.sourceFile == "DownloadOperations.kt"
}
)

View File

@@ -0,0 +1,20 @@
package app.revanced.patches.soundcloud.offlinesync.fingerprints
import app.revanced.patcher.extensions.or
import app.revanced.patcher.fingerprint.MethodFingerprint
import com.android.tools.smali.dexlib2.AccessFlags
import com.android.tools.smali.dexlib2.Opcode
internal object DownloadOperationsURLBuilderFingerprint : MethodFingerprint(
returnType = "Ljava/lang/String",
accessFlags = AccessFlags.PUBLIC or AccessFlags.FINAL,
parameters = listOf("L","L"),
opcodes = listOf(
Opcode.IGET_OBJECT,
Opcode.SGET_OBJECT,
Opcode.FILLED_NEW_ARRAY
),
customFingerprint = { _, classDef ->
classDef.sourceFile == "DownloadOperations.kt"
}
)

View File

@@ -0,0 +1,14 @@
package app.revanced.patches.soundcloud.shared.fingerprints
import app.revanced.patcher.extensions.or
import app.revanced.patcher.fingerprint.MethodFingerprint
import com.android.tools.smali.dexlib2.AccessFlags
internal object FeatureConstructorFingerprint : MethodFingerprint(
returnType = "V",
accessFlags = AccessFlags.PUBLIC or AccessFlags.CONSTRUCTOR,
parameters = listOf("Ljava/lang/String;", "Z", "Ljava/util/List;"),
customFingerprint = { _, classDef ->
classDef.sourceFile == "Feature.kt"
},
)

View File

@@ -10,7 +10,7 @@ import app.revanced.patches.windyapp.misc.unlockpro.fingerprints.CheckProFingerp
@Patch(
name = "Unlock pro",
description = "Unlocks all pro features.",
compatiblePackages = [CompatiblePackage("com.windyty.android")]
compatiblePackages = [CompatiblePackage("co.windyapp.android")]
)
@Suppress("unused")
object UnlockProPatch : BytecodePatch(

View File

@@ -102,7 +102,6 @@ object HideLayoutComponentsPatch : BytecodePatch(
),
),
SwitchPreference("revanced_hide_emergency_box"),
SwitchPreference("revanced_hide_expandable_chip"),
SwitchPreference("revanced_hide_info_panels"),
SwitchPreference("revanced_hide_join_membership_button"),
SwitchPreference("revanced_disable_like_subscribe_glow"),
@@ -143,6 +142,7 @@ object HideLayoutComponentsPatch : BytecodePatch(
)
SettingsPatch.PreferenceScreen.GENERAL_LAYOUT.addPreferences(
SwitchPreference("revanced_hide_expandable_chip"),
SwitchPreference("revanced_hide_gray_separator"),
PreferenceScreen(
key = "revanced_custom_filter_screen",
@@ -155,10 +155,6 @@ object HideLayoutComponentsPatch : BytecodePatch(
),
)
SettingsPatch.PreferenceScreen.VIDEO.addPreferences(
SwitchPreference("revanced_hide_video_quality_menu_footer"),
)
LithoFilterPatch.addFilter(LAYOUT_COMPONENTS_FILTER_CLASS_DESCRIPTOR)
LithoFilterPatch.addFilter(DESCRIPTION_COMPONENTS_FILTER_CLASS_NAME)
LithoFilterPatch.addFilter(KEYWORD_FILTER_CLASS_NAME)

View File

@@ -74,6 +74,7 @@ object HidePlayerFlyoutMenuPatch : ResourcePatch() {
SwitchPreference("revanced_hide_player_flyout_more_info"),
SwitchPreference("revanced_hide_player_flyout_audio_track"),
SwitchPreference("revanced_hide_player_flyout_watch_in_vr"),
SwitchPreference("revanced_hide_video_quality_menu_footer"),
)
)
)

View File

@@ -1,36 +1,18 @@
package app.revanced.patches.youtube.layout.thumbnails
import app.revanced.patcher.data.BytecodeContext
import app.revanced.patcher.extensions.InstructionExtensions.addInstruction
import app.revanced.patcher.extensions.InstructionExtensions.addInstructions
import app.revanced.patcher.extensions.InstructionExtensions.getInstructions
import app.revanced.patcher.fingerprint.MethodFingerprint
import app.revanced.patcher.patch.BytecodePatch
import app.revanced.patcher.patch.annotation.CompatiblePackage
import app.revanced.patcher.patch.annotation.Patch
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.AddResourcesPatch
import app.revanced.patches.shared.misc.settings.preference.ListPreference
import app.revanced.patches.shared.misc.settings.preference.NonInteractivePreference
import app.revanced.patches.shared.misc.settings.preference.SwitchPreference
import app.revanced.patches.shared.misc.settings.preference.TextPreference
import app.revanced.patches.youtube.layout.thumbnails.fingerprints.MessageDigestImageUrlFingerprint
import app.revanced.patches.youtube.layout.thumbnails.fingerprints.MessageDigestImageUrlParentFingerprint
import app.revanced.patches.youtube.layout.thumbnails.fingerprints.cronet.RequestFingerprint
import app.revanced.patches.youtube.layout.thumbnails.fingerprints.cronet.request.callback.OnFailureFingerprint
import app.revanced.patches.youtube.layout.thumbnails.fingerprints.cronet.request.callback.OnResponseStartedFingerprint
import app.revanced.patches.youtube.layout.thumbnails.fingerprints.cronet.request.callback.OnSucceededFingerprint
import app.revanced.patches.youtube.misc.imageurlhook.CronetImageUrlHook
import app.revanced.patches.youtube.misc.integrations.IntegrationsPatch
import app.revanced.patches.youtube.misc.navigation.NavigationBarHookPatch
import app.revanced.patches.youtube.misc.settings.SettingsPatch
import app.revanced.util.resultOrThrow
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.ReferenceInstruction
import com.android.tools.smali.dexlib2.iface.reference.FieldReference
import com.android.tools.smali.dexlib2.immutable.ImmutableMethod
@Patch(
name = "Alternative thumbnails",
@@ -39,7 +21,8 @@ import com.android.tools.smali.dexlib2.immutable.ImmutableMethod
IntegrationsPatch::class,
SettingsPatch::class,
AddResourcesPatch::class,
NavigationBarHookPatch::class
NavigationBarHookPatch::class,
CronetImageUrlHook::class
],
compatiblePackages = [
CompatiblePackage(
@@ -74,65 +57,10 @@ import com.android.tools.smali.dexlib2.immutable.ImmutableMethod
],
)
@Suppress("unused")
object AlternativeThumbnailsPatch : BytecodePatch(
setOf(
MessageDigestImageUrlParentFingerprint,
OnResponseStartedFingerprint,
RequestFingerprint,
),
) {
object AlternativeThumbnailsPatch : BytecodePatch(emptySet()) {
private const val INTEGRATIONS_CLASS_DESCRIPTOR =
"Lapp/revanced/integrations/youtube/patches/AlternativeThumbnailsPatch;"
private lateinit var loadImageUrlMethod: MutableMethod
private var loadImageUrlIndex = 0
private lateinit var loadImageSuccessCallbackMethod: MutableMethod
private var loadImageSuccessCallbackIndex = 0
private lateinit var loadImageErrorCallbackMethod: MutableMethod
private var loadImageErrorCallbackIndex = 0
/**
* @param highPriority If the hook should be called before all other hooks.
*/
@Suppress("SameParameterValue")
private fun addImageUrlHook(targetMethodClass: String, highPriority: Boolean) {
loadImageUrlMethod.addInstructions(
if (highPriority) 0 else loadImageUrlIndex,
"""
invoke-static { p1 }, $targetMethodClass->overrideImageURL(Ljava/lang/String;)Ljava/lang/String;
move-result-object p1
""",
)
loadImageUrlIndex += 2
}
/**
* If a connection completed, which includes normal 200 responses but also includes
* status 404 and other error like http responses.
*/
@Suppress("SameParameterValue")
private fun addImageUrlSuccessCallbackHook(targetMethodClass: String) {
loadImageSuccessCallbackMethod.addInstruction(
loadImageSuccessCallbackIndex++,
"invoke-static { p1, p2 }, $targetMethodClass->handleCronetSuccess(" +
"Lorg/chromium/net/UrlRequest;Lorg/chromium/net/UrlResponseInfo;)V",
)
}
/**
* If a connection outright failed to complete any connection.
*/
@Suppress("SameParameterValue")
private fun addImageUrlErrorCallbackHook(targetMethodClass: String) {
loadImageErrorCallbackMethod.addInstruction(
loadImageErrorCallbackIndex++,
"invoke-static { p1, p2, p3 }, $targetMethodClass->handleCronetFailure(" +
"Lorg/chromium/net/UrlRequest;Lorg/chromium/net/UrlResponseInfo;Ljava/io/IOException;)V",
)
}
override fun execute(context: BytecodeContext) {
AddResourcesPatch(this::class)
@@ -177,62 +105,8 @@ object AlternativeThumbnailsPatch : BytecodePatch(
ListPreference("revanced_alt_thumbnail_stills_time", summaryKey = null)
)
fun MethodFingerprint.alsoResolve(fingerprint: MethodFingerprint) =
also { resolve(context, fingerprint.resultOrThrow().classDef) }.resultOrThrow()
fun MethodFingerprint.resolveAndLetMutableMethod(
fingerprint: MethodFingerprint,
block: (MutableMethod) -> Unit,
) = alsoResolve(fingerprint).also { block(it.mutableMethod) }
MessageDigestImageUrlFingerprint.resolveAndLetMutableMethod(MessageDigestImageUrlParentFingerprint) {
loadImageUrlMethod = it
addImageUrlHook(INTEGRATIONS_CLASS_DESCRIPTOR, true)
}
OnSucceededFingerprint.resolveAndLetMutableMethod(OnResponseStartedFingerprint) {
loadImageSuccessCallbackMethod = it
addImageUrlSuccessCallbackHook(INTEGRATIONS_CLASS_DESCRIPTOR)
}
OnFailureFingerprint.resolveAndLetMutableMethod(OnResponseStartedFingerprint) {
loadImageErrorCallbackMethod = it
addImageUrlErrorCallbackHook(INTEGRATIONS_CLASS_DESCRIPTOR)
}
// The URL is required for the failure callback hook, but the URL field is obfuscated.
// Add a helper get method that returns the URL field.
RequestFingerprint.resultOrThrow().apply {
// The url is the only string field that is set inside the constructor.
val urlFieldInstruction = mutableMethod.getInstructions().first {
if (it.opcode != Opcode.IPUT_OBJECT) return@first false
val reference = (it as ReferenceInstruction).reference as FieldReference
reference.type == "Ljava/lang/String;"
} as ReferenceInstruction
val urlFieldName = (urlFieldInstruction.reference as FieldReference).name
val definingClass = RequestFingerprint.IMPLEMENTATION_CLASS_NAME
val addedMethodName = "getHookedUrl"
mutableClass.methods.add(
ImmutableMethod(
definingClass,
addedMethodName,
emptyList(),
"Ljava/lang/String;",
AccessFlags.PUBLIC.value,
null,
null,
MutableMethodImplementation(2),
).toMutable().apply {
addInstructions(
"""
iget-object v0, p0, $definingClass->$urlFieldName:Ljava/lang/String;
return-object v0
""",
)
},
)
}
CronetImageUrlHook.addImageUrlHook(INTEGRATIONS_CLASS_DESCRIPTOR)
CronetImageUrlHook.addImageUrlSuccessCallbackHook(INTEGRATIONS_CLASS_DESCRIPTOR)
CronetImageUrlHook.addImageUrlErrorCallbackHook(INTEGRATIONS_CLASS_DESCRIPTOR)
}
}

View File

@@ -0,0 +1,71 @@
package app.revanced.patches.youtube.layout.thumbnails
import app.revanced.patcher.data.BytecodeContext
import app.revanced.patcher.patch.BytecodePatch
import app.revanced.patcher.patch.annotation.CompatiblePackage
import app.revanced.patcher.patch.annotation.Patch
import app.revanced.patches.all.misc.resources.AddResourcesPatch
import app.revanced.patches.shared.misc.settings.preference.SwitchPreference
import app.revanced.patches.youtube.misc.imageurlhook.CronetImageUrlHook
import app.revanced.patches.youtube.misc.integrations.IntegrationsPatch
import app.revanced.patches.youtube.misc.settings.SettingsPatch
@Patch(
name = "Bypass image region restrictions",
description = "Adds an option to use a different host for user avatar and channel images," +
"and can fix missing images that are blocked in some countries.",
dependencies = [
IntegrationsPatch::class,
SettingsPatch::class,
AddResourcesPatch::class,
CronetImageUrlHook::class
],
compatiblePackages = [
CompatiblePackage(
"com.google.android.youtube",
[
"18.32.39",
"18.37.36",
"18.38.44",
"18.43.45",
"18.44.41",
"18.45.43",
"18.48.39",
"18.49.37",
"19.01.34",
"19.02.39",
"19.03.36",
"19.04.38",
"19.05.36",
"19.06.39",
"19.07.40",
"19.08.36",
"19.09.38",
"19.10.39",
"19.11.43",
"19.12.41",
"19.13.37",
"19.14.43",
"19.15.36",
"19.16.39",
]
)
]
)
@Suppress("unused")
object BypassImageRegionRestrictions : BytecodePatch(emptySet()) {
private const val INTEGRATIONS_CLASS_DESCRIPTOR =
"Lapp/revanced/integrations/youtube/patches/BypassImageRegionRestrictionsPatch;"
override fun execute(context: BytecodeContext) {
AddResourcesPatch(this::class)
SettingsPatch.PreferenceScreen.GENERAL_LAYOUT.addPreferences(
SwitchPreference("revanced_bypass_image_region_restrictions")
)
// A priority hook is not needed, as the image urls of interest are not modified
// by AlternativeThumbnails or any other patch in this repo.
CronetImageUrlHook.addImageUrlHook(INTEGRATIONS_CLASS_DESCRIPTOR)
}
}

View File

@@ -7,12 +7,10 @@ import app.revanced.patcher.patch.BytecodePatch
import app.revanced.patcher.patch.annotation.CompatiblePackage
import app.revanced.patcher.patch.annotation.Patch
import app.revanced.patcher.util.proxy.mutableTypes.MutableMethod
import app.revanced.patches.all.misc.resources.AddResourcesPatch
import app.revanced.patches.shared.misc.settings.preference.NonInteractivePreference
import app.revanced.patches.youtube.misc.integrations.IntegrationsPatch
import app.revanced.patches.youtube.misc.backgroundplayback.fingerprints.KidsBackgroundPlaybackPolicyControllerFingerprint
import app.revanced.patches.youtube.misc.backgroundplayback.fingerprints.BackgroundPlaybackManagerFingerprint
import app.revanced.patches.youtube.misc.backgroundplayback.fingerprints.BackgroundPlaybackSettingsFingerprint
import app.revanced.patches.youtube.misc.backgroundplayback.fingerprints.KidsBackgroundPlaybackPolicyControllerFingerprint
import app.revanced.patches.youtube.misc.integrations.IntegrationsPatch
import app.revanced.patches.youtube.misc.playertype.PlayerTypeHookPatch
import app.revanced.patches.youtube.misc.settings.SettingsPatch
import app.revanced.patches.youtube.video.information.VideoInformationPatch
@@ -29,7 +27,6 @@ import com.android.tools.smali.dexlib2.iface.reference.MethodReference
PlayerTypeHookPatch::class,
VideoInformationPatch::class,
SettingsPatch::class,
AddResourcesPatch::class
],
compatiblePackages = [
CompatiblePackage(
@@ -69,12 +66,6 @@ object BackgroundPlaybackPatch : BytecodePatch(
"Lapp/revanced/integrations/youtube/patches/BackgroundPlaybackPatch;"
override fun execute(context: BytecodeContext) {
AddResourcesPatch(this::class)
SettingsPatch.PreferenceScreen.MISC.addPreferences(
NonInteractivePreference("revanced_background_playback")
)
BackgroundPlaybackManagerFingerprint.resultOrThrow().mutableMethod.addInstructions(
0,
"""

View File

@@ -7,7 +7,10 @@ import app.revanced.patches.youtube.misc.fix.playback.SpoofClientPatch
import app.revanced.patches.youtube.misc.gms.Constants.REVANCED_YOUTUBE_PACKAGE_NAME
import app.revanced.patches.youtube.misc.gms.Constants.YOUTUBE_PACKAGE_NAME
import app.revanced.patches.youtube.misc.gms.GmsCoreSupportResourcePatch.gmsCoreVendorGroupIdOption
import app.revanced.patches.youtube.misc.gms.fingerprints.*
import app.revanced.patches.youtube.misc.gms.fingerprints.CastDynamiteModuleFingerprint
import app.revanced.patches.youtube.misc.gms.fingerprints.CastDynamiteModuleV2Fingerprint
import app.revanced.patches.youtube.misc.gms.fingerprints.PrimeMethodFingerprint
import app.revanced.patches.youtube.misc.gms.fingerprints.ServiceCheckFingerprint
import app.revanced.patches.youtube.misc.integrations.IntegrationsPatch
import app.revanced.patches.youtube.shared.fingerprints.MainActivityOnCreateFingerprint
@@ -18,7 +21,6 @@ object GmsCoreSupportPatch : BaseGmsCoreSupportPatch(
primeMethodFingerprint = PrimeMethodFingerprint,
earlyReturnFingerprints = setOf(
ServiceCheckFingerprint,
GooglePlayUtilityFingerprint,
CastDynamiteModuleFingerprint,
CastDynamiteModuleV2Fingerprint,
CastContextFetchFingerprint,
@@ -62,7 +64,6 @@ object GmsCoreSupportPatch : BaseGmsCoreSupportPatch(
),
fingerprints = setOf(
ServiceCheckFingerprint,
GooglePlayUtilityFingerprint,
CastDynamiteModuleFingerprint,
CastDynamiteModuleV2Fingerprint,
CastContextFetchFingerprint,

View File

@@ -0,0 +1,134 @@
package app.revanced.patches.youtube.misc.imageurlhook
import app.revanced.patcher.data.BytecodeContext
import app.revanced.patcher.extensions.InstructionExtensions.addInstruction
import app.revanced.patcher.extensions.InstructionExtensions.addInstructions
import app.revanced.patcher.extensions.InstructionExtensions.getInstructions
import app.revanced.patcher.fingerprint.MethodFingerprint
import app.revanced.patcher.patch.BytecodePatch
import app.revanced.patcher.patch.annotation.Patch
import app.revanced.patcher.util.proxy.mutableTypes.MutableMethod
import app.revanced.patcher.util.proxy.mutableTypes.MutableMethod.Companion.toMutable
import app.revanced.patches.youtube.misc.imageurlhook.fingerprints.MessageDigestImageUrlFingerprint
import app.revanced.patches.youtube.misc.imageurlhook.fingerprints.MessageDigestImageUrlParentFingerprint
import app.revanced.patches.youtube.misc.imageurlhook.fingerprints.cronet.RequestFingerprint
import app.revanced.patches.youtube.misc.imageurlhook.fingerprints.cronet.request.callback.OnFailureFingerprint
import app.revanced.patches.youtube.misc.imageurlhook.fingerprints.cronet.request.callback.OnResponseStartedFingerprint
import app.revanced.patches.youtube.misc.imageurlhook.fingerprints.cronet.request.callback.OnSucceededFingerprint
import app.revanced.patches.youtube.misc.integrations.IntegrationsPatch
import app.revanced.util.resultOrThrow
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.ReferenceInstruction
import com.android.tools.smali.dexlib2.iface.reference.FieldReference
import com.android.tools.smali.dexlib2.immutable.ImmutableMethod
@Patch(
description = "Hooks Cronet image urls",
dependencies = [
IntegrationsPatch::class
]
)
object CronetImageUrlHook : BytecodePatch(
setOf(
MessageDigestImageUrlParentFingerprint,
OnResponseStartedFingerprint,
RequestFingerprint
)
) {
private lateinit var loadImageUrlMethod: MutableMethod
private var loadImageUrlIndex = 0
private lateinit var loadImageSuccessCallbackMethod: MutableMethod
private var loadImageSuccessCallbackIndex = 0
private lateinit var loadImageErrorCallbackMethod: MutableMethod
private var loadImageErrorCallbackIndex = 0
/**
* @param highPriority If the hook should be called before all other hooks.
*/
fun addImageUrlHook(targetMethodClass: String, highPriority: Boolean = false) {
loadImageUrlMethod.addInstructions(
if (highPriority) 0 else loadImageUrlIndex,
"""
invoke-static { p1 }, $targetMethodClass->overrideImageURL(Ljava/lang/String;)Ljava/lang/String;
move-result-object p1
""",
)
loadImageUrlIndex += 2
}
/**
* If a connection completed, which includes normal 200 responses but also includes
* status 404 and other error like http responses.
*/
fun addImageUrlSuccessCallbackHook(targetMethodClass: String) {
loadImageSuccessCallbackMethod.addInstruction(
loadImageSuccessCallbackIndex++,
"invoke-static { p1, p2 }, $targetMethodClass->handleCronetSuccess(" +
"Lorg/chromium/net/UrlRequest;Lorg/chromium/net/UrlResponseInfo;)V",
)
}
/**
* If a connection outright failed to complete any connection.
*/
fun addImageUrlErrorCallbackHook(targetMethodClass: String) {
loadImageErrorCallbackMethod.addInstruction(
loadImageErrorCallbackIndex++,
"invoke-static { p1, p2, p3 }, $targetMethodClass->handleCronetFailure(" +
"Lorg/chromium/net/UrlRequest;Lorg/chromium/net/UrlResponseInfo;Ljava/io/IOException;)V",
)
}
override fun execute(context: BytecodeContext) {
fun MethodFingerprint.alsoResolve(fingerprint: MethodFingerprint) =
also { resolve(context, fingerprint.resultOrThrow().classDef) }.resultOrThrow()
loadImageUrlMethod = MessageDigestImageUrlFingerprint
.alsoResolve(MessageDigestImageUrlParentFingerprint).mutableMethod
loadImageSuccessCallbackMethod = OnSucceededFingerprint
.alsoResolve(OnResponseStartedFingerprint).mutableMethod
loadImageErrorCallbackMethod = OnFailureFingerprint
.alsoResolve(OnResponseStartedFingerprint).mutableMethod
// The URL is required for the failure callback hook, but the URL field is obfuscated.
// Add a helper get method that returns the URL field.
RequestFingerprint.resultOrThrow().apply {
// The url is the only string field that is set inside the constructor.
val urlFieldInstruction = mutableMethod.getInstructions().single {
if (it.opcode != Opcode.IPUT_OBJECT) return@single false
val reference = (it as ReferenceInstruction).reference as FieldReference
reference.type == "Ljava/lang/String;"
} as ReferenceInstruction
val urlFieldName = (urlFieldInstruction.reference as FieldReference).name
val definingClass = RequestFingerprint.IMPLEMENTATION_CLASS_NAME
val addedMethodName = "getHookedUrl"
mutableClass.methods.add(
ImmutableMethod(
definingClass,
addedMethodName,
emptyList(),
"Ljava/lang/String;",
AccessFlags.PUBLIC.value,
null,
null,
MutableMethodImplementation(2),
).toMutable().apply {
addInstructions(
"""
iget-object v0, p0, $definingClass->$urlFieldName:Ljava/lang/String;
return-object v0
""",
)
}
)
}
}
}

View File

@@ -1,4 +1,4 @@
package app.revanced.patches.youtube.layout.thumbnails.fingerprints
package app.revanced.patches.youtube.misc.imageurlhook.fingerprints
import app.revanced.patcher.extensions.or
import app.revanced.patcher.fingerprint.MethodFingerprint

View File

@@ -1,4 +1,4 @@
package app.revanced.patches.youtube.layout.thumbnails.fingerprints
package app.revanced.patches.youtube.misc.imageurlhook.fingerprints
import app.revanced.patcher.extensions.or
import app.revanced.patcher.fingerprint.MethodFingerprint

View File

@@ -1,8 +1,8 @@
package app.revanced.patches.youtube.layout.thumbnails.fingerprints.cronet
package app.revanced.patches.youtube.misc.imageurlhook.fingerprints.cronet
import app.revanced.patcher.extensions.or
import app.revanced.patcher.fingerprint.MethodFingerprint
import app.revanced.patches.youtube.layout.thumbnails.fingerprints.cronet.RequestFingerprint.IMPLEMENTATION_CLASS_NAME
import app.revanced.patches.youtube.misc.imageurlhook.fingerprints.cronet.RequestFingerprint.IMPLEMENTATION_CLASS_NAME
import com.android.tools.smali.dexlib2.AccessFlags
internal object RequestFingerprint : MethodFingerprint(

View File

@@ -1,4 +1,4 @@
package app.revanced.patches.youtube.layout.thumbnails.fingerprints.cronet.request.callback
package app.revanced.patches.youtube.misc.imageurlhook.fingerprints.cronet.request.callback
import app.revanced.patcher.extensions.or
import app.revanced.patcher.fingerprint.MethodFingerprint

View File

@@ -1,4 +1,4 @@
package app.revanced.patches.youtube.layout.thumbnails.fingerprints.cronet.request.callback
package app.revanced.patches.youtube.misc.imageurlhook.fingerprints.cronet.request.callback
import app.revanced.patcher.extensions.or
import app.revanced.patcher.fingerprint.MethodFingerprint

View File

@@ -1,4 +1,4 @@
package app.revanced.patches.youtube.layout.thumbnails.fingerprints.cronet.request.callback
package app.revanced.patches.youtube.misc.imageurlhook.fingerprints.cronet.request.callback
import app.revanced.patcher.extensions.or
import app.revanced.patcher.fingerprint.MethodFingerprint

View File

@@ -14,6 +14,9 @@ import app.revanced.patches.youtube.video.information.fingerprints.*
import app.revanced.patches.youtube.video.playerresponse.PlayerResponseMethodHookPatch
import app.revanced.patches.youtube.video.videoid.VideoIdPatch
import app.revanced.util.exception
import app.revanced.util.getReference
import app.revanced.util.indexOfFirstInstructionOrThrow
import app.revanced.util.resultOrThrow
import com.android.tools.smali.dexlib2.AccessFlags
import com.android.tools.smali.dexlib2.Opcode
import com.android.tools.smali.dexlib2.builder.BuilderInstruction
@@ -24,6 +27,9 @@ import com.android.tools.smali.dexlib2.iface.instruction.TwoRegisterInstruction
import com.android.tools.smali.dexlib2.immutable.ImmutableMethod
import com.android.tools.smali.dexlib2.immutable.ImmutableMethodParameter
import com.android.tools.smali.dexlib2.util.MethodUtil
import com.android.tools.smali.dexlib2.iface.Method
import com.android.tools.smali.dexlib2.iface.instruction.FiveRegisterInstruction
import com.android.tools.smali.dexlib2.iface.reference.MethodReference
@Patch(
description = "Hooks YouTube to get information about the current playing video.",
@@ -32,6 +38,7 @@ import com.android.tools.smali.dexlib2.util.MethodUtil
object VideoInformationPatch : BytecodePatch(
setOf(
PlayerInitFingerprint,
MdxPlayerDirectorSetVideoStageFingerprint,
CreateVideoPlayerSeekbarFingerprint,
PlayerControllerSetTimeReferenceFingerprint,
OnPlaybackSpeedItemClickFingerprint
@@ -42,12 +49,16 @@ object VideoInformationPatch : BytecodePatch(
private lateinit var playerInitMethod: MutableMethod
private var playerInitInsertIndex = 4
private lateinit var mdxInitMethod: MutableMethod
private var mdxInitInsertIndex = -1
private var mdxInitInsertRegister = -1
private lateinit var timeMethod: MutableMethod
private var timeInitInsertIndex = 2
private lateinit var speedSelectionInsertMethod: MutableMethod
private var speedSelectionInsertIndex = 0
private var speedSelectionValueRegister = 0
private var speedSelectionInsertIndex = -1
private var speedSelectionValueRegister = -1
// Used by other patches.
internal lateinit var setPlaybackSpeedContainerClassFieldReference: String
@@ -55,44 +66,48 @@ object VideoInformationPatch : BytecodePatch(
internal lateinit var setPlaybackSpeedMethodReference: String
override fun execute(context: BytecodeContext) {
with(PlayerInitFingerprint.result!!) {
with(PlayerInitFingerprint.resultOrThrow()) {
playerInitMethod = mutableClass.methods.first { MethodUtil.isConstructor(it) }
// hook the player controller for use through integrations
onCreateHook(INTEGRATIONS_CLASS_DESCRIPTOR, "initialize")
// seek method
val seekFingerprintResultMethod = SeekFingerprint.also { it.resolve(context, classDef) }.result!!.method
val seekFingerprintResultMethod =
SeekFingerprint.also { it.resolve(context, classDef) }.resultOrThrow().method
// create helper method
val seekHelperMethod = ImmutableMethod(
seekFingerprintResultMethod.definingClass,
"seekTo",
listOf(ImmutableMethodParameter("J", null, "time")),
"Z",
AccessFlags.PUBLIC or AccessFlags.FINAL,
null, null,
MutableMethodImplementation(4)
).toMutable()
// get enum type for the seek helper method
val seekSourceEnumType = seekFingerprintResultMethod.parameterTypes[1].toString()
// insert helper method instructions
seekHelperMethod.addInstructions(
0,
"""
sget-object v0, $seekSourceEnumType->a:$seekSourceEnumType
invoke-virtual {p0, p1, p2, v0}, ${seekFingerprintResultMethod.definingClass}->${seekFingerprintResultMethod.name}(J$seekSourceEnumType)Z
move-result p1
return p1
"""
)
val seekHelperMethod = generateSeekMethodHelper(seekFingerprintResultMethod)
// add the seekTo method to the class for the integrations to call
mutableClass.methods.add(seekHelperMethod)
}
with(MdxPlayerDirectorSetVideoStageFingerprint.resultOrThrow()) {
mdxInitMethod = mutableClass.methods.first { MethodUtil.isConstructor(it) }
// find the location of the first invoke-direct call and extract the register storing the 'this' object reference
val initThisIndex = mdxInitMethod.indexOfFirstInstructionOrThrow {
opcode == Opcode.INVOKE_DIRECT && getReference<MethodReference>()?.name == "<init>"
}
mdxInitInsertRegister = mdxInitMethod.getInstruction<FiveRegisterInstruction>(initThisIndex).registerC
mdxInitInsertIndex = initThisIndex + 1
// hook the MDX director for use through integrations
onCreateHookMdx(INTEGRATIONS_CLASS_DESCRIPTOR, "initializeMdx")
// MDX seek method
val mdxSeekFingerprintResultMethod =
MdxSeekFingerprint.apply { resolve(context, classDef) }.resultOrThrow().method
// create helper method
val mdxSeekHelperMethod = generateSeekMethodHelper(mdxSeekFingerprintResultMethod)
// add the seekTo method to the class for the integrations to call
mutableClass.methods.add(mdxSeekHelperMethod)
}
with(CreateVideoPlayerSeekbarFingerprint.result!!) {
val videoLengthMethodResult = VideoLengthFingerprint.also { it.resolve(context, classDef) }.result!!
@@ -103,7 +118,7 @@ object VideoInformationPatch : BytecodePatch(
addInstruction(
videoLengthMethodResult.scanResult.patternScanResult!!.endIndex,
"invoke-static {v$videoLengthRegister, v$dummyRegisterForLong}, $INTEGRATIONS_CLASS_DESCRIPTOR->setVideoLength(J)V"
"invoke-static { v$videoLengthRegister, v$dummyRegisterForLong }, $INTEGRATIONS_CLASS_DESCRIPTOR->setVideoLength(J)V"
)
}
}
@@ -158,6 +173,35 @@ object VideoInformationPatch : BytecodePatch(
userSelectedPlaybackSpeedHook(INTEGRATIONS_CLASS_DESCRIPTOR, "userSelectedPlaybackSpeed")
}
private fun generateSeekMethodHelper(seekMethod: Method): MutableMethod {
// create helper method
val generatedMethod = ImmutableMethod(
seekMethod.definingClass,
"seekTo",
listOf(ImmutableMethodParameter("J", null, "time")),
"Z",
AccessFlags.PUBLIC or AccessFlags.FINAL,
null, null,
MutableMethodImplementation(4)
).toMutable()
// get enum type for the seek helper method
val seekSourceEnumType = seekMethod.parameterTypes[1].toString()
// insert helper method instructions
generatedMethod.addInstructions(
0,
"""
sget-object v0, $seekSourceEnumType->a:$seekSourceEnumType
invoke-virtual { p0, p1, p2, v0 }, $seekMethod
move-result p1
return p1
"""
)
return generatedMethod
}
private fun MutableMethod.insert(insertIndex: Int, register: String, descriptor: String) =
addInstruction(insertIndex, "invoke-static { $register }, $descriptor")
@@ -180,6 +224,19 @@ object VideoInformationPatch : BytecodePatch(
"$targetMethodClass->$targetMethodName(Ljava/lang/Object;)V"
)
/**
* Hook the MDX player director. Called when playing videos while casting to a big screen device.
*
* @param targetMethodClass The descriptor for the class to invoke when the player controller is created.
* @param targetMethodName The name of the static method to invoke when the player controller is created.
*/
internal fun onCreateHookMdx(targetMethodClass: String, targetMethodName: String) =
mdxInitMethod.insert(
mdxInitInsertIndex++,
"v$mdxInitInsertRegister",
"$targetMethodClass->$targetMethodName(Ljava/lang/Object;)V"
)
/**
* Hook the video time.
* The hook is usually called once per second.

View File

@@ -0,0 +1,8 @@
package app.revanced.patches.youtube.video.information.fingerprints
import app.revanced.patcher.fingerprint.MethodFingerprint
internal object MdxPlayerDirectorSetVideoStageFingerprint : MethodFingerprint(
strings = listOf("MdxDirector setVideoStage ad should be null when videoStage is not an Ad state ")
)

View File

@@ -0,0 +1,23 @@
package app.revanced.patches.youtube.video.information.fingerprints
import app.revanced.patcher.extensions.or
import app.revanced.patcher.fingerprint.MethodFingerprint
import com.android.tools.smali.dexlib2.AccessFlags
import com.android.tools.smali.dexlib2.Opcode
internal object MdxSeekFingerprint : MethodFingerprint(
accessFlags = AccessFlags.PUBLIC or AccessFlags.FINAL,
returnType = "Z",
parameters = listOf("J", "L"),
opcodes = listOf(
Opcode.INVOKE_VIRTUAL,
Opcode.MOVE_RESULT,
Opcode.RETURN,
),
customFingerprint = { methodDef, _ ->
// The instruction count is necessary here to avoid matching the relative version
// of the seek method we're after, which has the same function signature as the
// regular one, is in the same class, and even has the exact same 3 opcodes pattern.
methodDef.implementation!!.instructions.count() == 3
}
)

View File

@@ -114,7 +114,7 @@ fun Method.indexOfFirstWideLiteralInstructionValue(literal: Long) = implementati
*
* @return the first literal instruction with the value, or throws [PatchException] if not found.
*/
fun Method.indexOfFirstWideLiteralInstructionValueOrThrow(literal: Long) : Int {
fun Method.indexOfFirstWideLiteralInstructionValueOrThrow(literal: Long): Int {
val index = indexOfFirstWideLiteralInstructionValue(literal)
if (index < 0) throw PatchException("Could not find literal value: $literal")
return index
@@ -160,7 +160,7 @@ inline fun <reified T : Reference> Instruction.getReference() = (this as? Refere
// TODO: delete this on next major release, the overloaded method with an optional start index serves the same purposes.
// Method is deprecated, but annotation is commented out otherwise during compilation usage of the replacement is
// incorrectly flagged as deprecated.
//@Deprecated("Use the overloaded method with an optional start index.", ReplaceWith("indexOfFirstInstruction(predicate)"))
// @Deprecated("Use the overloaded method with an optional start index.", ReplaceWith("indexOfFirstInstruction(predicate)"))
fun Method.indexOfFirstInstruction(predicate: Instruction.() -> Boolean) = indexOfFirstInstruction(0, predicate)
/**
@@ -211,28 +211,41 @@ fun Method.findOpcodeIndicesReversed(opcode: Opcode): List<Int> {
}
/**
* Return the resolved methods of [MethodFingerprint]s early.
* Return the resolved method early.
*/
fun List<MethodFingerprint>.returnEarly(bool: Boolean = false) {
fun MethodFingerprint.returnEarly(bool: Boolean = false) {
val const = if (bool) "0x1" else "0x0"
this.forEach { fingerprint ->
fingerprint.result?.let { result ->
val stringInstructions = when (result.method.returnType.first()) {
'L' ->
"""
result?.let { result ->
val stringInstructions = when (result.method.returnType.first()) {
'L' ->
"""
const/4 v0, $const
return-object v0
"""
'V' -> "return-void"
'I', 'Z' ->
"""
'V' -> "return-void"
'I', 'Z' ->
"""
const/4 v0, $const
return v0
"""
else -> throw Exception("This case should never happen.")
}
else -> throw Exception("This case should never happen.")
}
result.mutableMethod.addInstructions(0, stringInstructions)
} ?: throw fingerprint.exception
}
result.mutableMethod.addInstructions(0, stringInstructions)
} ?: throw exception
}
/**
* Return the resolved methods early.
*/
fun Iterable<MethodFingerprint>.returnEarly(bool: Boolean = false) = forEach { fingerprint ->
fingerprint.returnEarly(bool)
}
/**
* Return the resolved methods early.
*/
@Deprecated("Use the Iterable version")
fun List<MethodFingerprint>.returnEarly(bool: Boolean = false) = forEach { fingerprint ->
fingerprint.returnEarly(bool)
}

View File

@@ -1,6 +1,9 @@
<?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.
# General guidelines and information for translating
## Strings parameters can be reordered to allow more flexible translations if the grammar should be changed.
@@ -54,9 +57,12 @@
<!-- '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. -->
<!-- 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. -->
<!-- Translations of this should not be longer than the original English text, otherwise the text can be clipped and not entirely shown. -->
<!-- Translations of this should not be longer than the original English text, otherwise the text can be clipped and not entirely shown. -->
</patch>
<patch id="ad.general.HideAdsResourcePatch">
<!-- 'Visit store' should be translated with the same localized wording that YouTube displays. -->
<!-- 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="ad.getpremium.HideGetPremiumPatch">
</patch>
@@ -192,6 +198,8 @@
</patch>
<patch id="layout.theme.ThemeResourcePatch">
</patch>
<patch id="layout.thumbnails.BypassImageRegionRestrictions">
</patch>
<patch id="layout.thumbnails.AlternativeThumbnailsPatch">
<!-- 'Home' should be translated using the same localized wording YouTube displays for the home tab. -->
<!-- 'Subscription' should be translated using the same localized wording YouTube displays for the subscription tab. -->
@@ -210,8 +218,6 @@
</patch>
<patch id="misc.links.OpenLinksExternallyPatch">
</patch>
<patch id="misc.backgroundplayback.BackgroundPlaybackPatch">
</patch>
<patch id="misc.privacy.RemoveTrackingQueryParameterPatch">
</patch>
<patch id="misc.zoomhaptics.ZoomHapticsPatch">

View File

@@ -1,6 +1,9 @@
<?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.
# General guidelines and information for translating
## Strings parameters can be reordered to allow more flexible translations if the grammar should be changed.
@@ -54,9 +57,12 @@
<!-- '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. -->
<!-- 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. -->
<!-- Translations of this should not be longer than the original English text, otherwise the text can be clipped and not entirely shown. -->
<!-- Translations of this should not be longer than the original English text, otherwise the text can be clipped and not entirely shown. -->
</patch>
<patch id="ad.general.HideAdsResourcePatch">
<!-- 'Visit store' should be translated with the same localized wording that YouTube displays. -->
<!-- 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="ad.getpremium.HideGetPremiumPatch">
</patch>
@@ -192,6 +198,8 @@
</patch>
<patch id="layout.theme.ThemeResourcePatch">
</patch>
<patch id="layout.thumbnails.BypassImageRegionRestrictions">
</patch>
<patch id="layout.thumbnails.AlternativeThumbnailsPatch">
<!-- 'Home' should be translated using the same localized wording YouTube displays for the home tab. -->
<!-- 'Subscription' should be translated using the same localized wording YouTube displays for the subscription tab. -->
@@ -210,8 +218,6 @@
</patch>
<patch id="misc.links.OpenLinksExternallyPatch">
</patch>
<patch id="misc.backgroundplayback.BackgroundPlaybackPatch">
</patch>
<patch id="misc.privacy.RemoveTrackingQueryParameterPatch">
</patch>
<patch id="misc.zoomhaptics.ZoomHapticsPatch">

View File

@@ -1,6 +1,9 @@
<?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.
# General guidelines and information for translating
## Strings parameters can be reordered to allow more flexible translations if the grammar should be changed.
@@ -239,9 +242,11 @@
<string name="revanced_hide_keyword_content_phrases_summary">الكلمات المفتاحية والعبارات المراد إخفاؤها، مفصولة بأسطر جديد\n\nالكلمات التي تحتوي على أحرف كبيرة في الوسط يجب إدخالها مع التغليف (مثل: iPhone, TikTok, Leblanc)</string>
<string name="revanced_hide_keyword_content_about_title">حول تصفية الكلمات المفتاحية</string>
<string name="revanced_hide_keyword_content_about_summary">الصفحة الرئيسية/الاشتراك/نتائج البحث يتم تصفيتها لإخفاء المحتوى الذي يطابق عبارات الكلمات المفتاحية\n\nالتقييد\n• بعض المقاطع القصيرة قد لا تكون مخفية\n• بعض مكونات واجهة المستخدم قد لا تكون مخفية\n• البحث عن كلمة رئيسية قد لا يظهر أي نتائج</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>
<!-- 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_length">الكلمة المفتاحية غير صالحة. \'%1$s\' أقل من %2$d حرفًا</string>
<string name="revanced_hide_keyword_toast_invalid_broad">الكلمة المفتاحية \'$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>
@@ -275,6 +280,7 @@
<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>
<!-- 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">
@@ -984,6 +990,11 @@
<string name="revanced_seekbar_custom_color_value_summary">لون شريط التقدم</string>
<string name="revanced_seekbar_custom_color_invalid">لون الشريط غير صالح. استخدام القيمة الافتراضية.</string>
</patch>
<patch id="layout.thumbnails.BypassImageRegionRestrictions">
<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>
</patch>
<patch id="layout.thumbnails.AlternativeThumbnailsPatch">
<!-- 'Home' should be translated using the same localized wording YouTube displays for the home tab. -->
<string name="revanced_alt_thumbnail_home_title">علامة تبويب الصفحة الرئيسية</string>
@@ -1049,10 +1060,6 @@
<string name="revanced_external_browser_summary_on">فتح الروابط خارجيًا</string>
<string name="revanced_external_browser_summary_off">فتح الروابط في التطبيق</string>
</patch>
<patch id="misc.backgroundplayback.BackgroundPlaybackPatch">
<string name="revanced_background_playback_title">التشغيل في الخلفية</string>
<string name="revanced_background_playback_summary">يمكن العثور على هذا الإعداد في الإعدادات -&gt; الخلفية</string>
</patch>
<patch id="misc.privacy.RemoveTrackingQueryParameterPatch">
<string name="revanced_remove_tracking_query_parameter_title">إزالة معلمة تتبع الاستعلام</string>
<string name="revanced_remove_tracking_query_parameter_summary_on">يتم إزالة معلمة استعلام التتبع من الروابط</string>

View File

@@ -1,6 +1,9 @@
<?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.
# General guidelines and information for translating
## Strings parameters can be reordered to allow more flexible translations if the grammar should be changed.
@@ -54,9 +57,12 @@
<!-- '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. -->
<!-- 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. -->
<!-- Translations of this should not be longer than the original English text, otherwise the text can be clipped and not entirely shown. -->
<!-- Translations of this should not be longer than the original English text, otherwise the text can be clipped and not entirely shown. -->
</patch>
<patch id="ad.general.HideAdsResourcePatch">
<!-- 'Visit store' should be translated with the same localized wording that YouTube displays. -->
<!-- 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="ad.getpremium.HideGetPremiumPatch">
</patch>
@@ -192,6 +198,8 @@
</patch>
<patch id="layout.theme.ThemeResourcePatch">
</patch>
<patch id="layout.thumbnails.BypassImageRegionRestrictions">
</patch>
<patch id="layout.thumbnails.AlternativeThumbnailsPatch">
<!-- 'Home' should be translated using the same localized wording YouTube displays for the home tab. -->
<!-- 'Subscription' should be translated using the same localized wording YouTube displays for the subscription tab. -->
@@ -210,8 +218,6 @@
</patch>
<patch id="misc.links.OpenLinksExternallyPatch">
</patch>
<patch id="misc.backgroundplayback.BackgroundPlaybackPatch">
</patch>
<patch id="misc.privacy.RemoveTrackingQueryParameterPatch">
</patch>
<patch id="misc.zoomhaptics.ZoomHapticsPatch">

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1,6 +1,9 @@
<?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.
# General guidelines and information for translating
## Strings parameters can be reordered to allow more flexible translations if the grammar should be changed.
@@ -207,6 +210,8 @@
<string name="revanced_hide_keyword_content_phrases_summary">Ключови думи и фрази, които да бъдат скрити, разделени с нови редове\n\nДуми с главни букви в средата трябва да бъдат въведени с големи букви (например: iPhone, TikTok, LeBlanc)</string>
<string name="revanced_hide_keyword_content_about_title">За филтриране с ключови думи</string>
<string name="revanced_hide_keyword_content_about_summary">Начало/Абонамент/Резултатите от търсенето се филтрират, за да се скрие съдържанието, което съответства на ключовите фрази\n\nОграничения\n• Някои кратки видеоклипове може да не са скрити\n• Някои компоненти на потребителския интерфейс може да не са скрити\n• Търсенето на ключова дума може да не покаже резултати</string>
<!-- Translations of this should not be longer than the original English text, otherwise the text can be clipped and not entirely shown. -->
<!-- Translations of this should not be longer than the original English text, otherwise the text can be clipped and not entirely shown. -->
</patch>
<patch id="ad.general.HideAdsResourcePatch">
<string name="revanced_hide_general_ads_title">Скриване на общите реклами</string>
@@ -234,6 +239,7 @@
<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>
<!-- 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="ad.getpremium.HideGetPremiumPatch">
<string name="revanced_hide_get_premium_title">Скриване на YouTube Premium промоции</string>
@@ -457,6 +463,8 @@
</patch>
<patch id="layout.theme.ThemeResourcePatch">
</patch>
<patch id="layout.thumbnails.BypassImageRegionRestrictions">
</patch>
<patch id="layout.thumbnails.AlternativeThumbnailsPatch">
<!-- 'Home' should be translated using the same localized wording YouTube displays for the home tab. -->
<!-- 'Subscription' should be translated using the same localized wording YouTube displays for the subscription tab. -->
@@ -476,8 +484,6 @@
</patch>
<patch id="misc.links.OpenLinksExternallyPatch">
</patch>
<patch id="misc.backgroundplayback.BackgroundPlaybackPatch">
</patch>
<patch id="misc.privacy.RemoveTrackingQueryParameterPatch">
</patch>
<patch id="misc.zoomhaptics.ZoomHapticsPatch">

View File

@@ -1,6 +1,9 @@
<?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.
# General guidelines and information for translating
## Strings parameters can be reordered to allow more flexible translations if the grammar should be changed.
@@ -52,7 +55,7 @@
</app>
<app id="youtube">
<patch id="misc.settings.SettingsResourcePatch">
<string name="revanced_settings_about_links_body">আপনি ReVanced প্যাচ সংস্করণ &lt;i&gt;&lt;i&gt;%s&lt;/i&gt;&lt;/i&gt; ব্যবহার করছেন</string>
<string name="revanced_settings_about_links_body">আপনি ReVanced প্যাচ সংস্করণ &lt;i&gt;%s&lt;/i&gt; ব্যবহার করছেন</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_header">অফিশ্যাল লিংকসমূহ</string>
@@ -66,7 +69,6 @@
<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">শর্টস</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>
@@ -197,6 +199,8 @@
<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_attributes_section_title">বৈশিষ্ট্য বিভাগ লুকান</string>
<string name="revanced_hide_attributes_section_summary_on">\'বৈশিষ্ট্যযুক্ত স্থান\', গেম এবং সঙ্গীত বিভাগগুলি লুকানো আছে</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>
@@ -230,7 +234,9 @@
<string name="revanced_hide_keyword_content_phrases_summary">লুকানোর জন্য কীওয়ার্ড এবং বাক্যাংশ, নতুন লাইনে পৃথক করা\n\nশব্দের মাঝে বড় হাতের অক্ষর থাকলে তা অবশ্যই সঠিক আবরণে লিখতে হবে (উদাহরণ: 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>
<!-- 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>
<!-- 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_length">ত্রুটিপূর্ণ কীওয়ার্ড। \'%1$s\' টি %2$d অক্ষর থেকে কম</string>
</patch>
<patch id="ad.general.HideAdsResourcePatch">
@@ -265,6 +271,7 @@
<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>
<!-- 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">
@@ -334,44 +341,24 @@
<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">Hell</string>
<string name="revanced_swipe_overlay_timeout_title"></string>
<string name="revanced_swipe_overlay_timeout_summary">The amount of milliseconds the overlay is visible</string>
<string name="revanced_swipe_text_overlay_size_title">Swipe overlay text size</string>
<string name="revanced_swipe_text_overlay_size_summary">The text size for swipe overlay</string>
<string name="revanced_swipe_overlay_background_alpha_title">Swipe background visibility</string>
<string name="revanced_swipe_overlay_background_alpha_summary">The visibility of swipe overlay background</string>
<string name="revanced_swipe_threshold_title">Swipe magnitude threshold</string>
<string name="revanced_swipe_threshold_summary">The amount of threshold for swipe to occur</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_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_threshold_title">সোয়াইপ থ্রেশহোল্ড এর মাত্রা</string>
</patch>
<patch id="layout.autocaptions.AutoCaptionsPatch">
<string name="revanced_auto_captions_title">Disable auto captions</string>
<string name="revanced_auto_captions_summary_on">Auto captions are disabled</string>
<string name="revanced_auto_captions_summary_off">Auto captions are enabled</string>
<string name="revanced_auto_captions_title">স্বয়ংক্রিয় ক্যাপশন বন্ধ করুন</string>
</patch>
<patch id="layout.buttons.action.HideButtonsPatch">
<string name="revanced_hide_buttons_screen_title">Action buttons</string>
<string name="revanced_hide_buttons_screen_summary">Hide or show buttons under videos</string>
<string name="revanced_hide_like_dislike_button_title">Hide Like and Dislike</string>
<string name="revanced_hide_like_dislike_button_summary_on">Like and Dislike buttons are hidden</string>
<string name="revanced_hide_like_dislike_button_summary_off">Like and Dislike buttons are shown</string>
<!-- 'Share' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_share_button_title">Hide Share</string>
<string name="revanced_hide_share_button_summary_on">Share button is hidden</string>
<string name="revanced_hide_share_button_summary_off">Share button is hidden</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">Hide Report</string>
<string name="revanced_hide_report_button_summary_on">Report button is hidden</string>
<string name="revanced_hide_report_button_summary_off">Report button is shown</string>
<!-- 'Remix' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_remix_button_title">Hide Remix</string>
<string name="revanced_hide_remix_button_summary_on">Remix button is hidden</string>
<string name="revanced_hide_remix_button_summary_off">Remix button is shown</string>
<!-- 'Download' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_download_button_title">Hide Download </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. -->
@@ -379,29 +366,17 @@
<string name="revanced_hide_thanks_button_summary_on">ধন্যবাদ বোতাম লুকানো আছে</string>
<string name="revanced_hide_thanks_button_summary_off">ধন্যবাদ বোতাম দেখানো হয়</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_summary_on">Clip button is hidden</string>
<string name="revanced_hide_clip_button_summary_off">Clip button is shown</string>
<string name="revanced_hide_clip_button_title">ক্লিপ লুকান</string>
<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">Hide Save to playlist</string>
<string name="revanced_hide_playlist_button_summary_on">Save to playlist button is hidden</string>
<string name="revanced_hide_playlist_button_summary_off">Save to playlist button is shown</string>
</patch>
<patch id="layout.buttons.autoplay.HideAutoplayButtonPatch">
<string name="revanced_hide_autoplay_button_title">Hide autoplay button</string>
<string name="revanced_hide_autoplay_button_summary_on">Autoplay button is hidden</string>
<string name="revanced_hide_autoplay_button_summary_off">Autoplay button is shown</string>
</patch>
<patch id="layout.buttons.captions.HideCaptionsButtonPatch">
<!-- 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">Hide captions button</string>
<string name="revanced_hide_captions_button_summary_on">Captions button is hidden</string>
<string name="revanced_hide_captions_button_summary_off">Captions button is shown</string>
</patch>
<patch id="layout.buttons.cast.HideCastButtonPatch">
<string name="revanced_hide_cast_button_title">Hide cast button</string>
<string name="revanced_hide_cast_button_summary_on">Cast button is hidden</string>
<string name="revanced_hide_cast_button_summary_off">Cast button is shown</string>
</patch>
<patch id="layout.buttons.navigation.NavigationButtonsPatch">
<string name="revanced_navigation_buttons_screen_title">নেভিগেশন বোতাম</string>
@@ -417,46 +392,20 @@
<!-- 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">Create button is shown</string>
<!-- 'Subscriptions' should be translated using the same localized wording YouTube displays the tab. -->
<string name="revanced_hide_subscriptions_button_title">Hide Subscriptions</string>
<string name="revanced_hide_subscriptions_button_summary_on">Subscriptions button is hidden</string>
<string name="revanced_hide_subscriptions_button_summary_off">Subscriptions button is shown</string>
<!-- 'Notifications' should be translated using the same localized wording YouTube displays the tab. -->
<string name="revanced_switch_create_with_notifications_button_title">Switch Create with Notifications</string>
<string name="revanced_switch_create_with_notifications_button_summary_on">তৈরি করুন বোতাম বিজ্ঞপ্তিগুলো বোতাম দ্বারা স্থান পরিবর্তিত হয়েছে\n\nবিঃদ্রঃ এটি সক্রিয় করার ফলে ভিডিও বিজ্ঞাপন জোরপূর্বক বন্ধ থাকবে</string>
<string name="revanced_switch_create_with_notifications_button_summary_off">Create button is not switched with Notifications button</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>
</patch>
<patch id="layout.hide.player.flyoutmenupanel.HidePlayerFlyoutMenuPatch">
<string name="revanced_hide_player_flyout_title">Flyout menu</string>
<string name="revanced_hide_player_flyout_summary">Hide or show player flyout menu items</string>
<!-- 'Captions' should be translated using the same localized wording YouTube displays for the menu item. -->
<string name="revanced_hide_player_flyout_captions_title">Hide Captions</string>
<string name="revanced_hide_player_flyout_captions_summary_on">Captions menu is hidden</string>
<string name="revanced_hide_player_flyout_captions_summary_off">Captions menu is shown</string>
<!-- 'Additional settings' should be translated using the same localized wording YouTube displays for the menu item. -->
<string name="revanced_hide_player_flyout_additional_settings_title">Hide Additional settings</string>
<string name="revanced_hide_player_flyout_additional_settings_summary_on">Additional settings menu is hidden</string>
<string name="revanced_hide_player_flyout_additional_settings_summary_off">Additional settings menu is shown</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">Hide Loop video</string>
<string name="revanced_hide_player_flyout_loop_video_summary_on">Loop video menu is hidden</string>
<string name="revanced_hide_player_flyout_loop_video_summary_off">Loop video menu is shown</string>
<!-- 'Ambient mode' should be translated using the same localized wording YouTube displays for the menu item. -->
<string name="revanced_hide_player_flyout_ambient_mode_title">Hide Ambient mode</string>
<string name="revanced_hide_player_flyout_ambient_mode_summary_on">Ambient mode menu is hidden</string>
<string name="revanced_hide_player_flyout_ambient_mode_summary_off">Ambient mode menu is shown</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">Hide Help &amp; feedback</string>
<string name="revanced_hide_player_flyout_help_summary_on">Help &amp; feedback menu is hidden</string>
<string name="revanced_hide_player_flyout_help_summary_off">Help &amp; feedback menu is shown</string>
<!-- 'Playback speed' should be translated using the same localized wording YouTube displays for the menu item. -->
<string name="revanced_hide_player_flyout_speed_title">Hide Playback speed</string>
<string name="revanced_hide_player_flyout_speed_summary_on">Playback speed menu is hidden</string>
<string name="revanced_hide_player_flyout_speed_summary_off">Playback speed menu is shown</string>
<!-- 'More info' should be translated using the same localized wording YouTube displays for the menu item.
This menu only appears for some videos. Translate the name normally if the menu cannot be found. -->
<string name="revanced_hide_player_flyout_more_info_title">আরো তথ্য লুকান</string>
@@ -481,9 +430,7 @@
<string name="revanced_hide_player_buttons_summary_off">বোতাম দেখানো হয়</string>
</patch>
<patch id="layout.hide.albumcards.AlbumCardsResourcePatch">
<string name="revanced_hide_album_cards_title">Hide album cards</string>
<string name="revanced_hide_album_cards_summary_on">Album cards are hidden</string>
<string name="revanced_hide_album_cards_summary_off">Album cards are shown</string>
<string name="revanced_hide_album_cards_summary_off">অ্যালবাম কার্ড প্রদর্শিত হয়েছে</string>
</patch>
<patch id="layout.hide.comments.CommentsPatch">
<string name="revanced_comments_screen_title">মন্তব্য</string>
@@ -902,11 +849,11 @@
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>
<!-- 'RYD' is 'Return YouTube Dislike' -->
<string name="revanced_spoof_app_version_target_entry_1">১৮.৩৩. - ছদ্মবেশি মোডে RYD পুনরুদ্ধার করে</string>
<string name="revanced_spoof_app_version_target_entry_2">১৮.২০.৩৯ - প্রশ্বস্ত ভিডিও স্পিড এবং গুণমান মেনু পুনরুদ্ধার করে</string>
<string name="revanced_spoof_app_version_target_entry_3">১৮.০৯.৩৯ - লাইব্রেরি ট্যাপ পুনরুদ্ধার করে</string>
<string name="revanced_spoof_app_version_target_entry_4">১৭.৪১.৩৯ - পুরোনো প্লেলিস্ট শেলফ পুনরুদ্ধার করে</string>
<string name="revanced_spoof_app_version_target_entry_5">১৭.৩৩.৪২ - পুরোনো UI লেআউট পুনরুদ্ধার করে</string>
<string name="revanced_spoof_app_version_target_entry_1">18.33.40 - ছদ্মবেশি মোডে RYD পুনরুদ্ধার করে</string>
<string name="revanced_spoof_app_version_target_entry_2">18.20.39 - প্রশ্বস্ত ভিডিও স্পিড এবং গুণমান মেনু পুনরুদ্ধার করে</string>
<string name="revanced_spoof_app_version_target_entry_3">18.09.39 - লাইব্রেরি ট্যাপ পুনরুদ্ধার করে</string>
<string name="revanced_spoof_app_version_target_entry_4">17.41.37 - পুরোনো প্লেলিস্ট শেলফ পুনরুদ্ধার করে</string>
<string name="revanced_spoof_app_version_target_entry_5">17.33.42 - পুরোনো UI লেআউট পুনরুদ্ধার করে</string>
</patch>
<patch id="layout.startpage.ChangeStartPagePatch">
<string name="revanced_start_page_title">শুরুর পৃষ্ঠা সেট করুন</string>
@@ -972,6 +919,8 @@
<string name="revanced_seekbar_custom_color_value_summary">সিকবারের রং</string>
<string name="revanced_seekbar_custom_color_invalid">সিকবারে ভুল রং দেয়া হয়েছে। মূল রং ব্যবহার করছে।</string>
</patch>
<patch id="layout.thumbnails.BypassImageRegionRestrictions">
</patch>
<patch id="layout.thumbnails.AlternativeThumbnailsPatch">
<!-- 'Home' should be translated using the same localized wording YouTube displays for the home tab. -->
<string name="revanced_alt_thumbnail_home_title">হোম ট্যাব</string>
@@ -1037,10 +986,6 @@
<string name="revanced_external_browser_summary_on">লিংক বাহিরে খুলুন</string>
<string name="revanced_external_browser_summary_off">অ্যাপের মধ্যে লিংক খুলছে</string>
</patch>
<patch id="misc.backgroundplayback.BackgroundPlaybackPatch">
<string name="revanced_background_playback_title">ব্যাকগ্রাউন্ড প্লেব্যাক</string>
<string name="revanced_background_playback_summary">এই সেটিংটি পাওয়া যাবে সেটিং -> ব্যাকগ্রাউন্ড -এ</string>
</patch>
<patch id="misc.privacy.RemoveTrackingQueryParameterPatch">
<string name="revanced_remove_tracking_query_parameter_title">ট্র্যাকিং করার প্যারামিটার মুছুন</string>
<string name="revanced_remove_tracking_query_parameter_summary_on">লিংক থেকে ট্র্যাকিং করার প্যারামিটার মুছে ফেলা হয়েছে</string>
@@ -1099,6 +1044,7 @@
<string name="revanced_spoof_client_user_dialog_message">এই সেটিংটি বন্ধ করার ফলে ভিডিও প্লেব্যাক ত্রুটি হতে পারে।</string>
<string name="revanced_spoof_client_use_ios_title">ক্লায়েন্ট iOS এ স্পুফ করুন</string>
<string name="revanced_spoof_client_use_ios_summary_on">ক্লায়েন্ট এখন iOS এ স্পুফ করা হয়েছে\n\nপার্শ্বপ্রতিক্রিয়া রয়েছে:\n• কোন এইচিডিআর ভিডিও নেই\n• ভিডিও ইতিহাস কাজ নাও করতে পারে\n• উচ্চ ভিডিও গুণমান অনুপস্থিত থাকতে পারে\n•শুধুমাত্র অডিওতে লাইভ স্ট্রিম চলবে না\n• অ্যান্ড্রয়েট ৮ সংস্করণে লাইভ স্ট্রিম উপলভ্য নয়</string>
<string name="revanced_spoof_client_use_ios_summary_off">ক্লায়েন্টকে বর্তমানে Android VR-এর সাথে প্রতারণা করা হয়েছে\n\nসাইড এফেক্টগুলির মধ্যে রয়েছে:\n• কোনও HDR ভিডিও নেই\n• বাচ্চাদের ভিডিও প্লেব্যাক হয় না\n• বিরতি দেওয়া ভিডিওগুলি এলোমেলোভাবে আবার শুরু হতে পারে\n• নিম্নমানের শর্টস সিকবার থাম্বনেল\n• ডাউনলোড অ্যাকশন বোতাম সবসময় লুকানো থাকে\n• শেষ স্ক্রিন কার্ড সবসময় লুকানো থাকে</string>
<string name="revanced_spoof_client_storyboard_timeout">ক্লায়েন্ট স্পুফ থাম্বনেইল সাময়িকভাবে উপলভ্য নয় (API সময় শেষ হয়েছে)</string>
<string name="revanced_spoof_client_storyboard_io_exception">স্পুফ ক্লায়েন্ট থাম্বনেইল সাময়িকভাবে উপলভ্য নয়: %s</string>
</patch>

View File

@@ -1,6 +1,9 @@
<?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.
# General guidelines and information for translating
## Strings parameters can be reordered to allow more flexible translations if the grammar should be changed.
@@ -54,9 +57,12 @@
<!-- '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. -->
<!-- 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. -->
<!-- Translations of this should not be longer than the original English text, otherwise the text can be clipped and not entirely shown. -->
<!-- Translations of this should not be longer than the original English text, otherwise the text can be clipped and not entirely shown. -->
</patch>
<patch id="ad.general.HideAdsResourcePatch">
<!-- 'Visit store' should be translated with the same localized wording that YouTube displays. -->
<!-- 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="ad.getpremium.HideGetPremiumPatch">
</patch>
@@ -192,6 +198,8 @@
</patch>
<patch id="layout.theme.ThemeResourcePatch">
</patch>
<patch id="layout.thumbnails.BypassImageRegionRestrictions">
</patch>
<patch id="layout.thumbnails.AlternativeThumbnailsPatch">
<!-- 'Home' should be translated using the same localized wording YouTube displays for the home tab. -->
<!-- 'Subscription' should be translated using the same localized wording YouTube displays for the subscription tab. -->
@@ -210,8 +218,6 @@
</patch>
<patch id="misc.links.OpenLinksExternallyPatch">
</patch>
<patch id="misc.backgroundplayback.BackgroundPlaybackPatch">
</patch>
<patch id="misc.privacy.RemoveTrackingQueryParameterPatch">
</patch>
<patch id="misc.zoomhaptics.ZoomHapticsPatch">

View File

@@ -1,6 +1,9 @@
<?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.
# General guidelines and information for translating
## Strings parameters can be reordered to allow more flexible translations if the grammar should be changed.
@@ -56,9 +59,12 @@
<!-- '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. -->
<!-- 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. -->
<!-- Translations of this should not be longer than the original English text, otherwise the text can be clipped and not entirely shown. -->
<!-- Translations of this should not be longer than the original English text, otherwise the text can be clipped and not entirely shown. -->
</patch>
<patch id="ad.general.HideAdsResourcePatch">
<!-- 'Visit store' should be translated with the same localized wording that YouTube displays. -->
<!-- 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="ad.getpremium.HideGetPremiumPatch">
</patch>
@@ -200,6 +206,8 @@
</patch>
<patch id="layout.theme.ThemeResourcePatch">
</patch>
<patch id="layout.thumbnails.BypassImageRegionRestrictions">
</patch>
<patch id="layout.thumbnails.AlternativeThumbnailsPatch">
<!-- 'Home' should be translated using the same localized wording YouTube displays for the home tab. -->
<!-- 'Subscription' should be translated using the same localized wording YouTube displays for the subscription tab. -->
@@ -218,8 +226,6 @@
</patch>
<patch id="misc.links.OpenLinksExternallyPatch">
</patch>
<patch id="misc.backgroundplayback.BackgroundPlaybackPatch">
</patch>
<patch id="misc.privacy.RemoveTrackingQueryParameterPatch">
</patch>
<patch id="misc.zoomhaptics.ZoomHapticsPatch">

View File

@@ -1,6 +1,9 @@
<?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.
# General guidelines and information for translating
## Strings parameters can be reordered to allow more flexible translations if the grammar should be changed.
@@ -242,9 +245,11 @@
<string name="revanced_hide_keyword_content_phrases_summary">klíčová slova a fráze ke skrytí, odděleno novými řádky\n\nSlova s velkými písmeny uprostřed musí být zadána s pláštěm (ie: iPhone, TikTok, LeBlanc)</string>
<string name="revanced_hide_keyword_content_about_title">O filtrování klíčových slov</string>
<string name="revanced_hide_keyword_content_about_summary">Výsledky domovského/předplatného/vyhledávání jsou filtrovány pro skrytí obsahu, který odpovídá výrazům klíčových slov\n\nOmezení\n• Některé krátkosti nemusí být skryty\n• Některé komponenty uživatelského rozhraní nemusí být skryté\n• Hledání klíčových slov nemusí zobrazovat žádné výsledky</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">Neplatné klíčové slovo. Nelze použít: \'%s\' jako filtr</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_length">Neplatné klíčové slovo. \'%1$s\' je menší než %2$d znaků</string>
<string name="revanced_hide_keyword_toast_invalid_broad">Klíčové slovo \'$s\' skryje všechna videa</string>
<string name="revanced_hide_keyword_toast_invalid_broad">Klíčové slovo \'%s\' skryje všechna videa</string>
</patch>
<patch id="ad.general.HideAdsResourcePatch">
<string name="revanced_hide_general_ads_title">Skrýt obecné reklamy</string>
@@ -278,6 +283,7 @@
<string name="revanced_hide_merchandise_banners_title">Skrýt bannery zboží</string>
<string name="revanced_hide_merchandise_banners_summary_on">Bannery zboží jsou skryty</string>
<string name="revanced_hide_merchandise_banners_summary_off">Bannery zboží jsou zobrazeny</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">Skrýt reklamy na celou obrazovku fungují pouze se staršími zařízeními</string>
</patch>
<patch id="ad.getpremium.HideGetPremiumPatch">
@@ -988,6 +994,11 @@
<string name="revanced_seekbar_custom_color_value_summary">Barva vyhledávacího panelu</string>
<string name="revanced_seekbar_custom_color_invalid">Neplatná hodnota barvy vyhledávacího panelu. Použít výchozí hodnotu.</string>
</patch>
<patch id="layout.thumbnails.BypassImageRegionRestrictions">
<string name="revanced_bypass_image_region_restrictions_title">Obejít omezení oblasti obrázku</string>
<string name="revanced_bypass_image_region_restrictions_summary_on">Použití hostitele obrázků yt4.gggpht.com</string>
<string name="revanced_bypass_image_region_restrictions_summary_off">Použití originálního hostitele obrázků\n\nPovolení tohoto nastavení může opravit chybějící obrázky, které jsou blokovány v některých regionech</string>
</patch>
<patch id="layout.thumbnails.AlternativeThumbnailsPatch">
<!-- 'Home' should be translated using the same localized wording YouTube displays for the home tab. -->
<string name="revanced_alt_thumbnail_home_title">Záložka Domů</string>
@@ -1053,10 +1064,6 @@
<string name="revanced_external_browser_summary_on">Otevírací odkazy vně</string>
<string name="revanced_external_browser_summary_off">Otevírání odkazů v aplikaci</string>
</patch>
<patch id="misc.backgroundplayback.BackgroundPlaybackPatch">
<string name="revanced_background_playback_title">Přehrávání na pozadí</string>
<string name="revanced_background_playback_summary">Toto nastavení lze nalézt v Nastavení -&gt; Pozadí</string>
</patch>
<patch id="misc.privacy.RemoveTrackingQueryParameterPatch">
<string name="revanced_remove_tracking_query_parameter_title">Odstranit parametr dotaz pro sledování</string>
<string name="revanced_remove_tracking_query_parameter_summary_on">Parametr dotaz na sledování je odstraněn z odkazů</string>

View File

@@ -1,6 +1,9 @@
<?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.
# General guidelines and information for translating
## Strings parameters can be reordered to allow more flexible translations if the grammar should be changed.
@@ -241,9 +244,11 @@
<string name="revanced_hide_keyword_content_phrases_summary">Nøgleord og sætninger at skjule, adskilt af nye linjer\n\nOrd med store bogstaver i midten skal indtastes med casing (dvs. 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 matcher søgeordssætninger\n\nBegrænsninger\n• Nogle Shorts er muligvis ikke skjult\n• Nogle UI-komponenter er muligvis ikke skjult\n• Søger efter et søgeord, kan ikke vise nogen resultater</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">Ugyldigt søgeord. Kan ikke bruge: \'%s\' som et filter</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_length">Ugyldigt søgeord. \'%1$s\' er mindre end %2$d tegn</string>
<string name="revanced_hide_keyword_toast_invalid_broad">Nøgleord \'$s\' vil skjule alle videoer</string>
<string name="revanced_hide_keyword_toast_invalid_broad">Nøgleord \'%s\' vil skjule alle videoer</string>
</patch>
<patch id="ad.general.HideAdsResourcePatch">
<string name="revanced_hide_general_ads_title">Skjul generelle annoncer</string>
@@ -277,6 +282,7 @@
<string name="revanced_hide_merchandise_banners_title">Skjul merchandise bannere</string>
<string name="revanced_hide_merchandise_banners_summary_on">Varer bannere er skjult</string>
<string name="revanced_hide_merchandise_banners_summary_off">Varer bannere er vist</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">Skjul reklamer på fuld skærm virker kun med ældre enheder</string>
</patch>
<patch id="ad.getpremium.HideGetPremiumPatch">
@@ -391,7 +397,6 @@
<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">Hide Clip</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. -->
@@ -574,11 +579,11 @@
<!-- '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>
<string name="revanced_hide_shorts_home_summary_off">Korte i hjemmet feed er vist</string>
<string name="revanced_hide_shorts_home_summary_off">Shorts i hjemmet feed er vist</string>
<!-- 'subscription' should be translated using the same localized wording YouTube displays for the subscription tab. -->
<string name="revanced_hide_shorts_subscriptions_title">Skjul Shorts i abonnementsfeed</string>
<string name="revanced_hide_shorts_subscriptions_summary_on">Korte i abonnementsfeed er skjult</string>
<string name="revanced_hide_shorts_subscriptions_summary_off">Korte i abonnementsfeed vises</string>
<string name="revanced_hide_shorts_subscriptions_summary_on">Shorts i abonnementsfeed er skjult</string>
<string name="revanced_hide_shorts_subscriptions_summary_off">Shorts i abonnementsfeed vises</string>
<string name="revanced_hide_shorts_search_title">Skjul Shorts i søgeresultater</string>
<string name="revanced_hide_shorts_search_summary_on">Shorts i søgeresultater er skjult</string>
<string name="revanced_hide_shorts_search_summary_off">Korte i søgeresultater vises</string>
@@ -986,6 +991,11 @@
<string name="revanced_seekbar_custom_color_value_summary">Farven på den søgende bar</string>
<string name="revanced_seekbar_custom_color_invalid">Ugyldig søgelinje farveværdi. Brug standardværdi.</string>
</patch>
<patch id="layout.thumbnails.BypassImageRegionRestrictions">
<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>
</patch>
<patch id="layout.thumbnails.AlternativeThumbnailsPatch">
<!-- 'Home' should be translated using the same localized wording YouTube displays for the home tab. -->
<string name="revanced_alt_thumbnail_home_title">Hjem fane</string>
@@ -1051,10 +1061,6 @@
<string name="revanced_external_browser_summary_on">Åbning af links eksternt</string>
<string name="revanced_external_browser_summary_off">Åbner links i appen</string>
</patch>
<patch id="misc.backgroundplayback.BackgroundPlaybackPatch">
<string name="revanced_background_playback_title">Baggrunds afspilning</string>
<string name="revanced_background_playback_summary">Denne indstilling kan findes i Indstillinger -&gt; Baggrund</string>
</patch>
<patch id="misc.privacy.RemoveTrackingQueryParameterPatch">
<string name="revanced_remove_tracking_query_parameter_title">Fjern sporingsforespørgselsparameter</string>
<string name="revanced_remove_tracking_query_parameter_summary_on">Sporingsparameteren er fjernet fra links</string>

View File

@@ -1,6 +1,9 @@
<?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.
# General guidelines and information for translating
## Strings parameters can be reordered to allow more flexible translations if the grammar should be changed.
@@ -242,9 +245,11 @@
<string name="revanced_hide_keyword_content_phrases_summary">Stichwörter und zu versteckende Phrasen durch neue Zeilen\n\ngetrennte Wörter mit Großbuchstaben in der Mitte müssen mit dem Gehäuse 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 auszublenden, die den Schlüsselwörtern\n\nBeschränkungen\nentsprechen • Einige Shorts können nicht versteckt werden\n• Einige UI-Komponenten können nicht versteckt werden\n• Suche nach einem Schlüsselwort kann keine Ergebnisse zeigen</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">Ungültiges Schlüsselwort. Kann nicht verwenden: \'%s\' als Filter</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_length">Ungültiges Schlüsselwort. \'%1$s\' ist weniger als %2$d Zeichen</string>
<string name="revanced_hide_keyword_toast_invalid_broad">Stichwort \'$s\' wird alle Videos ausblenden</string>
<string name="revanced_hide_keyword_toast_invalid_broad">Schlüsselwort \'%s\' wird alle Videos ausblenden</string>
</patch>
<patch id="ad.general.HideAdsResourcePatch">
<string name="revanced_hide_general_ads_title">Allgemeine Werbung ausblenden</string>
@@ -278,6 +283,7 @@
<string name="revanced_hide_merchandise_banners_title">Merchandise-Banner ausblenden</string>
<string name="revanced_hide_merchandise_banners_summary_on">Warenbanner sind versteckt</string>
<string name="revanced_hide_merchandise_banners_summary_off">Warenbanner werden angezeigt</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">Vollbild-Werbung ausblenden funktioniert nur mit älteren Geräten</string>
</patch>
<patch id="ad.getpremium.HideGetPremiumPatch">
@@ -674,11 +680,12 @@
<patch id="layout.returnyoutubedislike.ReturnYouTubeDislikeResourcePatch">
<string name="revanced_ryd_video_likes_hidden_by_video_owner">Nicht anzeigen</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_ryd_failure_connection_timeout">Dislikes vorläufig nicht verfügbar (API Timeout)</string>
<string name="revanced_ryd_failure_connection_status_code">Dislikes nicht verfügbar (Status %d)</string>
<string name="revanced_ryd_failure_client_rate_limit_requested">Nicht verfügbar (Client-API-Limit erreicht)</string>
<string name="revanced_ryd_failure_generic">Dislikes nicht verfügbar (%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">Video neu laden, um mit Return YouTube Abgleich zu stimmen</string>
<string name="revanced_ryd_failure_ryd_enabled_while_playing_video_then_user_voted">Video neu laden, um mit Return YouTube Dislike abzustimmen</string>
<string name="revanced_ryd_enable_summary_on">Dislikes werden angezeigt</string>
<string name="revanced_ryd_enable_summary_off">Dislikes werden nicht angezeigt</string>
<string name="revanced_ryd_shorts_title">Dislikes auf Shorts anzeigen</string>
@@ -985,6 +992,11 @@
<string name="revanced_seekbar_custom_color_value_summary">Die Farbe der Suchleiste</string>
<string name="revanced_seekbar_custom_color_invalid">Ungültiger Suchleisten-Farbwert. Standardwert wird verwendet.</string>
</patch>
<patch id="layout.thumbnails.BypassImageRegionRestrictions">
<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>
</patch>
<patch id="layout.thumbnails.AlternativeThumbnailsPatch">
<!-- 'Home' should be translated using the same localized wording YouTube displays for the home tab. -->
<string name="revanced_alt_thumbnail_home_title">Home-Tab</string>
@@ -1050,10 +1062,6 @@
<string name="revanced_external_browser_summary_on">Links extern öffnen</string>
<string name="revanced_external_browser_summary_off">Öffne Links in der App</string>
</patch>
<patch id="misc.backgroundplayback.BackgroundPlaybackPatch">
<string name="revanced_background_playback_title">Hintergrundwiedergabe</string>
<string name="revanced_background_playback_summary">Diese Einstellung kann in den Einstellungen gefunden werden -&gt; Hintergrund</string>
</patch>
<patch id="misc.privacy.RemoveTrackingQueryParameterPatch">
<string name="revanced_remove_tracking_query_parameter_title">Tracking-Abfrageparameter entfernen</string>
<string name="revanced_remove_tracking_query_parameter_summary_on">Tracking-Abfrageparameter wird von Links entfernt</string>

View File

@@ -1,6 +1,9 @@
<?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.
# General guidelines and information for translating
## Strings parameters can be reordered to allow more flexible translations if the grammar should be changed.
@@ -240,9 +243,11 @@
<string name="revanced_hide_keyword_content_phrases_summary">Λέξεις-κλειδιά και φράσεις προς απόκρυψη, διαχωρισμένες η μία κάτω από την άλλη\n\nΔώστε προσοχή στα πεζά και κεφάλαια γράμματα διότι ισχύει ευαισθησία πεζότητας (π.χ.: 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>
<!-- 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>
<!-- 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_length">Μη έγκυρη λέξη-κλειδί. Το \'%1$s\' είναι μικρότερο από %2$d χαρακτήρες</string>
<string name="revanced_hide_keyword_toast_invalid_broad">Η λέξη «$ είναι τόσο ευρεία που θα κρύψει όλα τα βίντεο</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>
@@ -276,6 +281,7 @@
<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>
<!-- 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">
@@ -986,6 +992,11 @@
<string name="revanced_seekbar_custom_color_value_summary">Το χρώμα της γραμμής προόδου</string>
<string name="revanced_seekbar_custom_color_invalid">Μη έγκυρη τιμή χρώματος. Επαναφορά...</string>
</patch>
<patch id="layout.thumbnails.BypassImageRegionRestrictions">
<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>
</patch>
<patch id="layout.thumbnails.AlternativeThumbnailsPatch">
<!-- 'Home' should be translated using the same localized wording YouTube displays for the home tab. -->
<string name="revanced_alt_thumbnail_home_title">Αρχική σελίδα</string>
@@ -1051,10 +1062,6 @@
<string name="revanced_external_browser_summary_on">Οι σύνδεσμοι ανοίγουν εξωτερικά</string>
<string name="revanced_external_browser_summary_off">Οι σύνδεσμοι ανοίγουν εντός της εφαρμογής</string>
</patch>
<patch id="misc.backgroundplayback.BackgroundPlaybackPatch">
<string name="revanced_background_playback_title">Αναπαραγωγή στο παρασκήνιο</string>
<string name="revanced_background_playback_summary">Αυτή η ρύθμιση μπορεί να βρεθεί στις Ρυθμίσεις -&gt; Παρασκήνιο</string>
</patch>
<patch id="misc.privacy.RemoveTrackingQueryParameterPatch">
<string name="revanced_remove_tracking_query_parameter_title">Καθαρισμός συνδέσμων κοινοποίησης</string>
<string name="revanced_remove_tracking_query_parameter_summary_on">Η παράμετρος παρακολούθησης αφαιρείται από τους συνδέσμους στην κοινοποίηση</string>

View File

@@ -1,6 +1,9 @@
<?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.
# General guidelines and information for translating
## Strings parameters can be reordered to allow more flexible translations if the grammar should be changed.
@@ -242,7 +245,9 @@
<string name="revanced_hide_keyword_content_phrases_summary">Palabras clave y frases para ocultar, separadas por nuevas líneas\n\nLas palabras con letras mayúsculas en el centro deben ser ingresadas con la caja (por ejemplo: 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 contenido que coincide con las frases de palabras clave\n\nLimitaciones\n• Algunos cortos pueden no estar ocultos\n• Algunos componentes de la interfaz pueden no estar ocultos\n• Buscar una palabra clave no puede mostrar resultados</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">Palabra clave inválida. No se puede usar: \'%s\' como filtro</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_length">Palabra clave no válida. \'%1$s\' es menor de %2$d caracteres</string>
<string name="revanced_hide_keyword_toast_invalid_broad">La palabra clave \'$s\' oculta todos los vídeos</string>
</patch>
@@ -278,6 +283,7 @@
<string name="revanced_hide_merchandise_banners_title">Ocultar banners de mercandise</string>
<string name="revanced_hide_merchandise_banners_summary_on">Los banners de mercadería están ocultos</string>
<string name="revanced_hide_merchandise_banners_summary_off">Se muestran los banners de Mercandise</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">Ocultar anuncios a pantalla completa sólo funciona con dispositivos antiguos</string>
</patch>
<patch id="ad.getpremium.HideGetPremiumPatch">
@@ -392,7 +398,7 @@
<string name="revanced_hide_thanks_button_summary_on">El botón de gracias está oculto</string>
<string name="revanced_hide_thanks_button_summary_off">Se muestra el botón de gracias</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">Ocultar Recortar</string>
<string name="revanced_hide_clip_button_summary_on">El botón del clip está oculto</string>
<string name="revanced_hide_clip_button_summary_off">Se muestra el botón de clip</string>
<!-- 'Save' should be translated with the same localized wording that YouTube displays. -->

View File

@@ -1,6 +1,9 @@
<?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.
# General guidelines and information for translating
## Strings parameters can be reordered to allow more flexible translations if the grammar should be changed.
@@ -30,7 +33,6 @@
<resources>
<app id="shared">
<patch id="misc.settings.BaseSettingsResourcePatch">
<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>
@@ -68,7 +70,6 @@
<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">Acortes</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>
@@ -175,9 +176,9 @@
<string name="revanced_hide_channel_bar_title">Ocultar barra de canal</string>
<string name="revanced_hide_channel_bar_summary_on">Barra de canales oculta</string>
<string name="revanced_hide_channel_bar_summary_off">Barra de canales mostrada</string>
<string name="revanced_hide_playables_title">Ocultar reproducibles</string>
<string name="revanced_hide_playables_summary_on">Los reproductores están ocultos</string>
<string name="revanced_hide_playables_summary_off">Se muestran los reproductores</string>
<string name="revanced_hide_playables_title">Ocultar los Juegos</string>
<string name="revanced_hide_playables_summary_on">Los Juegos están ocultos</string>
<string name="revanced_hide_playables_summary_off">Se muestran los Juegos</string>
<string name="revanced_hide_quick_actions_title">Ocultar acciones rápidas en pantalla completa</string>
<string name="revanced_hide_quick_actions_summary_on">Las acciones rápidas están ocultas</string>
<string name="revanced_hide_quick_actions_summary_off">Se muestran acciones rápidas</string>
@@ -242,9 +243,11 @@
<string name="revanced_hide_keyword_content_phrases_summary">Palabras clave y frases para ocultar, separadas por nuevas líneas\n\nLas palabras con letras mayúsculas en el centro deben ser ingresadas con la caja (por ejemplo: 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 contenido que coincide con las frases de palabras clave\n\nLimitaciones\n• Algunos cortos pueden no estar ocultos\n• Algunos componentes de la interfaz pueden no estar ocultos\n• Buscar una palabra clave no puede mostrar resultados</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">Palabra clave inválida. No se puede usar: \'%s\' como filtro</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_length">Palabra clave no válida. \'%1$s\' es menor de %2$d caracteres</string>
<string name="revanced_hide_keyword_toast_invalid_broad">La palabra clave \'$s\' oculta todos los vídeos</string>
<string name="revanced_hide_keyword_toast_invalid_broad">La palabra clave \'%s\' oculta todos los vídeos</string>
</patch>
<patch id="ad.general.HideAdsResourcePatch">
<string name="revanced_hide_general_ads_title">Ocultar anuncios generales</string>
@@ -278,6 +281,7 @@
<string name="revanced_hide_merchandise_banners_title">Ocultar banners de mercandise</string>
<string name="revanced_hide_merchandise_banners_summary_on">Los banners de mercadería están ocultos</string>
<string name="revanced_hide_merchandise_banners_summary_off">Se muestran los banners de Mercandise</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">Ocultar anuncios a pantalla completa sólo funciona con dispositivos antiguos</string>
</patch>
<patch id="ad.getpremium.HideGetPremiumPatch">
@@ -392,9 +396,9 @@
<string name="revanced_hide_thanks_button_summary_on">El botón de gracias está oculto</string>
<string name="revanced_hide_thanks_button_summary_off">Se muestra el botón de gracias</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_summary_on">El botón del clip está oculto</string>
<string name="revanced_hide_clip_button_summary_off">Se muestra el botón de clip</string>
<string name="revanced_hide_clip_button_title">Ocultar Recortar</string>
<string name="revanced_hide_clip_button_summary_on">El botón del recortar está oculto</string>
<string name="revanced_hide_clip_button_summary_off">Se muestra el botón de recortar</string>
<!-- 'Save' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_playlist_button_title">Ocultar Guardar en lista</string>
<string name="revanced_hide_playlist_button_summary_on">El botón Guardar a la lista de reproducción está oculto</string>
@@ -420,13 +424,13 @@
<string name="revanced_navigation_buttons_screen_title">Navigation buttons</string>
<string name="revanced_navigation_buttons_screen_summary">Ocultar o cambiar botones en la barra de navegación</string>
<!-- 'Home' should be translated using the same localized wording YouTube displays for the tab. -->
<string name="revanced_hide_home_button_title">Ocultar Inicio</string>
<string name="revanced_hide_home_button_summary_on">El botón de inicio está oculto</string>
<string name="revanced_hide_home_button_summary_off">Se muestra el botón de inicio</string>
<string name="revanced_hide_home_button_title">Ocultar Principal</string>
<string name="revanced_hide_home_button_summary_on">El botón de principal está oculto</string>
<string name="revanced_hide_home_button_summary_off">Se muestra el botón de principal</string>
<!-- 'Shorts' should be translated using the same localized wording YouTube displays the tab. -->
<string name="revanced_hide_shorts_button_title">Ocultar breves</string>
<string name="revanced_hide_shorts_button_summary_on">El botón de shorts está oculto</string>
<string name="revanced_hide_shorts_button_summary_off">El botón de shorts es visible</string>
<string name="revanced_hide_shorts_button_title">Ocultar Shorts</string>
<string name="revanced_hide_shorts_button_summary_on">El botón de Shorts está oculto</string>
<string name="revanced_hide_shorts_button_summary_off">El botón de Shorts es visible</string>
<!-- The Create button has no display name. Translate normally. -->
<string name="revanced_hide_create_button_title">Ocultar Crear</string>
<string name="revanced_hide_create_button_summary_on">El botón Crear está oculto</string>
@@ -988,6 +992,11 @@
<string name="revanced_seekbar_custom_color_value_summary">El color de la barra de ajustes</string>
<string name="revanced_seekbar_custom_color_invalid">Valor de color de la barra de búsqueda inválido. Usando el valor por defecto.</string>
</patch>
<patch id="layout.thumbnails.BypassImageRegionRestrictions">
<string name="revanced_bypass_image_region_restrictions_title">Restricciones de región de imagen bypass</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>
</patch>
<patch id="layout.thumbnails.AlternativeThumbnailsPatch">
<!-- 'Home' should be translated using the same localized wording YouTube displays for the home tab. -->
<string name="revanced_alt_thumbnail_home_title">Pestaña</string>
@@ -1053,10 +1062,6 @@
<string name="revanced_external_browser_summary_on">Abriendo enlaces externamente</string>
<string name="revanced_external_browser_summary_off">Abrir enlaces en la aplicación</string>
</patch>
<patch id="misc.backgroundplayback.BackgroundPlaybackPatch">
<string name="revanced_background_playback_title">Reproducción en segundo plano</string>
<string name="revanced_background_playback_summary">Esta configuración se puede encontrar en Ajustes -&gt; Fondo</string>
</patch>
<patch id="misc.privacy.RemoveTrackingQueryParameterPatch">
<string name="revanced_remove_tracking_query_parameter_title">Quitar parámetro de consulta de rastreo</string>
<string name="revanced_remove_tracking_query_parameter_summary_on">Parámetro de la consulta de seguimiento se elimina de los enlaces</string>

View File

@@ -1,6 +1,9 @@
<?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.
# General guidelines and information for translating
## Strings parameters can be reordered to allow more flexible translations if the grammar should be changed.
@@ -242,7 +245,9 @@
<string name="revanced_hide_keyword_content_phrases_summary">Palabras clave y frases para ocultar, separadas por nuevas líneas\n\nLas palabras con letras mayúsculas en el centro deben ser ingresadas con la caja (por ejemplo: 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 contenido que coincide con las frases de palabras clave\n\nLimitaciones\n• Algunos cortos pueden no estar ocultos\n• Algunos componentes de la interfaz pueden no estar ocultos\n• Buscar una palabra clave no puede mostrar resultados</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">Clave inválida. No se puede usar \'%s\' como filtro</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_length">Clave inválida. \'%1$s\' es menor que %2$d caracteres</string>
<string name="revanced_hide_keyword_toast_invalid_broad">La palabra clave \'$s\' oculta todos los vídeos</string>
</patch>
@@ -278,6 +283,7 @@
<string name="revanced_hide_merchandise_banners_title">Ocultar banners de mercandise</string>
<string name="revanced_hide_merchandise_banners_summary_on">Los banners de mercadería están ocultos</string>
<string name="revanced_hide_merchandise_banners_summary_off">Se muestran los banners de Mercandise</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">Ocultar anuncios a pantalla completa sólo funciona con dispositivos antiguos</string>
</patch>
<patch id="ad.getpremium.HideGetPremiumPatch">
@@ -392,8 +398,8 @@
<string name="revanced_hide_thanks_button_summary_on">El botón de gracias está oculto</string>
<string name="revanced_hide_thanks_button_summary_off">Se muestra el botón de gracias</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_summary_on">El botón del clip está oculto</string>
<string name="revanced_hide_clip_button_title">Ocultar Recortar</string>
<string name="revanced_hide_clip_button_summary_on">El botón del recortar está oculto</string>
<string name="revanced_hide_clip_button_summary_off">Se muestra el botón de clip</string>
<!-- 'Save' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_playlist_button_title">Ocultar Guardar en lista</string>

View File

@@ -1,6 +1,9 @@
<?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.
# General guidelines and information for translating
## Strings parameters can be reordered to allow more flexible translations if the grammar should be changed.
@@ -57,9 +60,12 @@
<!-- '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. -->
<!-- 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. -->
<!-- Translations of this should not be longer than the original English text, otherwise the text can be clipped and not entirely shown. -->
<!-- Translations of this should not be longer than the original English text, otherwise the text can be clipped and not entirely shown. -->
</patch>
<patch id="ad.general.HideAdsResourcePatch">
<!-- 'Visit store' should be translated with the same localized wording that YouTube displays. -->
<!-- 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="ad.getpremium.HideGetPremiumPatch">
</patch>
@@ -203,6 +209,8 @@
</patch>
<patch id="layout.theme.ThemeResourcePatch">
</patch>
<patch id="layout.thumbnails.BypassImageRegionRestrictions">
</patch>
<patch id="layout.thumbnails.AlternativeThumbnailsPatch">
<!-- 'Home' should be translated using the same localized wording YouTube displays for the home tab. -->
<!-- 'Subscription' should be translated using the same localized wording YouTube displays for the subscription tab. -->
@@ -222,8 +230,6 @@
</patch>
<patch id="misc.links.OpenLinksExternallyPatch">
</patch>
<patch id="misc.backgroundplayback.BackgroundPlaybackPatch">
</patch>
<patch id="misc.privacy.RemoveTrackingQueryParameterPatch">
</patch>
<patch id="misc.zoomhaptics.ZoomHapticsPatch">

View File

@@ -1,6 +1,9 @@
<?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.
# General guidelines and information for translating
## Strings parameters can be reordered to allow more flexible translations if the grammar should be changed.
@@ -54,9 +57,12 @@
<!-- '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. -->
<!-- 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. -->
<!-- Translations of this should not be longer than the original English text, otherwise the text can be clipped and not entirely shown. -->
<!-- Translations of this should not be longer than the original English text, otherwise the text can be clipped and not entirely shown. -->
</patch>
<patch id="ad.general.HideAdsResourcePatch">
<!-- 'Visit store' should be translated with the same localized wording that YouTube displays. -->
<!-- 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="ad.getpremium.HideGetPremiumPatch">
</patch>
@@ -192,6 +198,8 @@
</patch>
<patch id="layout.theme.ThemeResourcePatch">
</patch>
<patch id="layout.thumbnails.BypassImageRegionRestrictions">
</patch>
<patch id="layout.thumbnails.AlternativeThumbnailsPatch">
<!-- 'Home' should be translated using the same localized wording YouTube displays for the home tab. -->
<!-- 'Subscription' should be translated using the same localized wording YouTube displays for the subscription tab. -->
@@ -210,8 +218,6 @@
</patch>
<patch id="misc.links.OpenLinksExternallyPatch">
</patch>
<patch id="misc.backgroundplayback.BackgroundPlaybackPatch">
</patch>
<patch id="misc.privacy.RemoveTrackingQueryParameterPatch">
</patch>
<patch id="misc.zoomhaptics.ZoomHapticsPatch">

View File

@@ -1,6 +1,9 @@
<?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.
# General guidelines and information for translating
## Strings parameters can be reordered to allow more flexible translations if the grammar should be changed.
@@ -57,9 +60,12 @@
<!-- '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. -->
<!-- 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. -->
<!-- Translations of this should not be longer than the original English text, otherwise the text can be clipped and not entirely shown. -->
<!-- Translations of this should not be longer than the original English text, otherwise the text can be clipped and not entirely shown. -->
</patch>
<patch id="ad.general.HideAdsResourcePatch">
<!-- 'Visit store' should be translated with the same localized wording that YouTube displays. -->
<!-- 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="ad.getpremium.HideGetPremiumPatch">
</patch>
@@ -201,6 +207,8 @@
</patch>
<patch id="layout.theme.ThemeResourcePatch">
</patch>
<patch id="layout.thumbnails.BypassImageRegionRestrictions">
</patch>
<patch id="layout.thumbnails.AlternativeThumbnailsPatch">
<!-- 'Home' should be translated using the same localized wording YouTube displays for the home tab. -->
<!-- 'Subscription' should be translated using the same localized wording YouTube displays for the subscription tab. -->
@@ -219,8 +227,6 @@
</patch>
<patch id="misc.links.OpenLinksExternallyPatch">
</patch>
<patch id="misc.backgroundplayback.BackgroundPlaybackPatch">
</patch>
<patch id="misc.privacy.RemoveTrackingQueryParameterPatch">
</patch>
<patch id="misc.zoomhaptics.ZoomHapticsPatch">

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1,6 +1,9 @@
<?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.
# General guidelines and information for translating
## Strings parameters can be reordered to allow more flexible translations if the grammar should be changed.
@@ -241,9 +244,11 @@
<string name="revanced_hide_keyword_content_phrases_summary">Mots-clés et phrases à cacher, séparés par de nouvelles lignes\n\nLes mots avec des lettres majuscules au milieu doivent être saisis en respectant la casse (ex : iPhone, TikTok, LeBlanc)</string>
<string name="revanced_hide_keyword_content_about_title">À propos du filtrage par mots-clés</string>
<string name="revanced_hide_keyword_content_about_summary">Les onglets \"Accueil\" et \"Abonnements\" ainsi que les résultats de la recherche sont filtrés pour masquer le contenu correspondant à des phrases clés\n\nLimitations\n• Il se peut que certains Shorts ne soient pas masqués\n• Il se peut que certains composants de l\'interface utilisateur ne soient pas masqués\n• Les recherches par mots-clés ne pourraient pas donner de résultats</string>
<string name="revanced_hide_keyword_toast_invalid_common">Mot-clé invalide. Ne peut pas être utilisé : \'%s\' comme filtre</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">Mot-clé invalide. Impossible d\'utiliser : \'%s\' comme filtre</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_length">Mot-clé invalide. \'%1$s\' contient moins de %2$d caractères</string>
<string name="revanced_hide_keyword_toast_invalid_broad">Le mot-clé \'$s\' masquera toutes les vidéos</string>
<string name="revanced_hide_keyword_toast_invalid_broad">Le mot-clé «%s» masquera toutes les vidéos</string>
</patch>
<patch id="ad.general.HideAdsResourcePatch">
<string name="revanced_hide_general_ads_title">Masquer les pubs générales</string>
@@ -277,6 +282,7 @@
<string name="revanced_hide_merchandise_banners_title">Cacher les bannières commerciales</string>
<string name="revanced_hide_merchandise_banners_summary_on">Les bannières de marchandise de la chaîne sont masquées</string>
<string name="revanced_hide_merchandise_banners_summary_off">Les bannières de marchandise sont affichées</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">Masquer les publicités en plein écran ne fonctionne qu\'avec les appareils plus anciens</string>
</patch>
<patch id="ad.getpremium.HideGetPremiumPatch">
@@ -391,9 +397,9 @@
<string name="revanced_hide_thanks_button_summary_on">Le bouton de remerciement est caché</string>
<string name="revanced_hide_thanks_button_summary_off">Le bouton de remerciement est affiché</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_summary_on">Le bouton de clip est masqué</string>
<string name="revanced_hide_clip_button_summary_off">Le bouton de clip est affiché</string>
<string name="revanced_hide_clip_button_title">Masquer Extrait</string>
<string name="revanced_hide_clip_button_summary_on">Le bouton Extrait est masqué</string>
<string name="revanced_hide_clip_button_summary_off">Le bouton Extrait est affiché</string>
<!-- 'Save' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_playlist_button_title">Cacher Enregistrer dans la playlist</string>
<string name="revanced_hide_playlist_button_summary_on">Le bouton Enregistrer dans la liste de lecture est masqué</string>
@@ -986,6 +992,11 @@
<string name="revanced_seekbar_custom_color_value_summary">La couleur de la barre de recherche</string>
<string name="revanced_seekbar_custom_color_invalid">Valeur de couleur de la barre de recherche invalide.</string>
</patch>
<patch id="layout.thumbnails.BypassImageRegionRestrictions">
<string name="revanced_bypass_image_region_restrictions_title">Ignorer les restrictions de région de l\'image</string>
<string name="revanced_bypass_image_region_restrictions_summary_on">Utiliser l\'hôte d\'image yt4.ggpht.com</string>
<string name="revanced_bypass_image_region_restrictions_summary_off">Utiliser l\'hôte d\'image original\n\nActiver ceci peut corriger les images manquantes qui sont bloquées dans certaines régions</string>
</patch>
<patch id="layout.thumbnails.AlternativeThumbnailsPatch">
<!-- 'Home' should be translated using the same localized wording YouTube displays for the home tab. -->
<string name="revanced_alt_thumbnail_home_title">Onglet d\'accueil</string>
@@ -1051,10 +1062,6 @@
<string name="revanced_external_browser_summary_on">Ouverture des liens externes</string>
<string name="revanced_external_browser_summary_off">Ouverture des liens dans l\'application</string>
</patch>
<patch id="misc.backgroundplayback.BackgroundPlaybackPatch">
<string name="revanced_background_playback_title">Lecture en arrière-plan</string>
<string name="revanced_background_playback_summary">Ce paramètre peut être trouvé dans Paramètres -&gt; Arrière-plan</string>
</patch>
<patch id="misc.privacy.RemoveTrackingQueryParameterPatch">
<string name="revanced_remove_tracking_query_parameter_title">Supprimer le paramètre de requête de suivi</string>
<string name="revanced_remove_tracking_query_parameter_summary_on">Le paramètre de requête de suivi est supprimé des liens</string>
@@ -1112,6 +1119,7 @@
<string name="revanced_spoof_client_summary_off">Le client n\'est pas trompé\n\nLa lecture de la vidéo peut ne pas fonctionner</string>
<string name="revanced_spoof_client_user_dialog_message">Désactiver ce paramètre peut causer des problèmes de lecture vidéo.</string>
<string name="revanced_spoof_client_use_ios_title">Falsifier le client vers iOS</string>
<string name="revanced_spoof_client_use_ios_summary_on">Le client simule actuellement iOS\n\nLes effets secondaires incluent :\n• Aucune vidéo HDR\n• L\'historique de lecture peut ne pas fonctionner\n• Des qualités vidéo plus élevées peuvent manquer\n• Les vidéos en direct ne peuvent pas être lancées uniquement en tant que audio\n• Les vidéos en direct ne sont pas disponibles sur Android 8.0</string>
<string name="revanced_spoof_client_use_ios_summary_off">Le client est actuellement usurpé à Android VR\n\nEffets secondaires incluant:\n• Aucune vidéo HDR\n• Les vidéos des enfants ne lisent pas\n• Les vidéos en pause peuvent reprendre aléatoirement\n• Les Shorts de basse qualité sur les vignettes de la barre de recherche\n• Le bouton d\'action de téléchargement est toujours caché\n• Les cartes d\'écran de fin sont toujours cachées</string>
<string name="revanced_spoof_client_storyboard_timeout">Tromper les vignettes du client non disponibles (API expirée)</string>
<string name="revanced_spoof_client_storyboard_io_exception">Tromper les vignettes du client temporairement indisponibles : %s</string>

View File

@@ -1,6 +1,9 @@
<?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.
# General guidelines and information for translating
## Strings parameters can be reordered to allow more flexible translations if the grammar should be changed.
@@ -54,9 +57,12 @@
<!-- '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. -->
<!-- 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. -->
<!-- Translations of this should not be longer than the original English text, otherwise the text can be clipped and not entirely shown. -->
<!-- Translations of this should not be longer than the original English text, otherwise the text can be clipped and not entirely shown. -->
</patch>
<patch id="ad.general.HideAdsResourcePatch">
<!-- 'Visit store' should be translated with the same localized wording that YouTube displays. -->
<!-- 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="ad.getpremium.HideGetPremiumPatch">
</patch>
@@ -192,6 +198,8 @@
</patch>
<patch id="layout.theme.ThemeResourcePatch">
</patch>
<patch id="layout.thumbnails.BypassImageRegionRestrictions">
</patch>
<patch id="layout.thumbnails.AlternativeThumbnailsPatch">
<!-- 'Home' should be translated using the same localized wording YouTube displays for the home tab. -->
<!-- 'Subscription' should be translated using the same localized wording YouTube displays for the subscription tab. -->
@@ -210,8 +218,6 @@
</patch>
<patch id="misc.links.OpenLinksExternallyPatch">
</patch>
<patch id="misc.backgroundplayback.BackgroundPlaybackPatch">
</patch>
<patch id="misc.privacy.RemoveTrackingQueryParameterPatch">
</patch>
<patch id="misc.zoomhaptics.ZoomHapticsPatch">

View File

@@ -1,6 +1,9 @@
<?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.
# General guidelines and information for translating
## Strings parameters can be reordered to allow more flexible translations if the grammar should be changed.
@@ -54,9 +57,12 @@
<!-- '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. -->
<!-- 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. -->
<!-- Translations of this should not be longer than the original English text, otherwise the text can be clipped and not entirely shown. -->
<!-- Translations of this should not be longer than the original English text, otherwise the text can be clipped and not entirely shown. -->
</patch>
<patch id="ad.general.HideAdsResourcePatch">
<!-- 'Visit store' should be translated with the same localized wording that YouTube displays. -->
<!-- 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="ad.getpremium.HideGetPremiumPatch">
</patch>
@@ -192,6 +198,8 @@
</patch>
<patch id="layout.theme.ThemeResourcePatch">
</patch>
<patch id="layout.thumbnails.BypassImageRegionRestrictions">
</patch>
<patch id="layout.thumbnails.AlternativeThumbnailsPatch">
<!-- 'Home' should be translated using the same localized wording YouTube displays for the home tab. -->
<!-- 'Subscription' should be translated using the same localized wording YouTube displays for the subscription tab. -->
@@ -210,8 +218,6 @@
</patch>
<patch id="misc.links.OpenLinksExternallyPatch">
</patch>
<patch id="misc.backgroundplayback.BackgroundPlaybackPatch">
</patch>
<patch id="misc.privacy.RemoveTrackingQueryParameterPatch">
</patch>
<patch id="misc.zoomhaptics.ZoomHapticsPatch">

View File

@@ -1,6 +1,9 @@
<?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.
# General guidelines and information for translating
## Strings parameters can be reordered to allow more flexible translations if the grammar should be changed.
@@ -56,9 +59,12 @@
<!-- '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. -->
<!-- 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. -->
<!-- Translations of this should not be longer than the original English text, otherwise the text can be clipped and not entirely shown. -->
<!-- Translations of this should not be longer than the original English text, otherwise the text can be clipped and not entirely shown. -->
</patch>
<patch id="ad.general.HideAdsResourcePatch">
<!-- 'Visit store' should be translated with the same localized wording that YouTube displays. -->
<!-- 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="ad.getpremium.HideGetPremiumPatch">
</patch>
@@ -200,6 +206,8 @@
</patch>
<patch id="layout.theme.ThemeResourcePatch">
</patch>
<patch id="layout.thumbnails.BypassImageRegionRestrictions">
</patch>
<patch id="layout.thumbnails.AlternativeThumbnailsPatch">
<!-- 'Home' should be translated using the same localized wording YouTube displays for the home tab. -->
<!-- 'Subscription' should be translated using the same localized wording YouTube displays for the subscription tab. -->
@@ -219,8 +227,6 @@
</patch>
<patch id="misc.links.OpenLinksExternallyPatch">
</patch>
<patch id="misc.backgroundplayback.BackgroundPlaybackPatch">
</patch>
<patch id="misc.privacy.RemoveTrackingQueryParameterPatch">
</patch>
<patch id="misc.zoomhaptics.ZoomHapticsPatch">

View File

@@ -1,6 +1,9 @@
<?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.
# General guidelines and information for translating
## Strings parameters can be reordered to allow more flexible translations if the grammar should be changed.
@@ -56,9 +59,12 @@
<!-- '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. -->
<!-- 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. -->
<!-- Translations of this should not be longer than the original English text, otherwise the text can be clipped and not entirely shown. -->
<!-- Translations of this should not be longer than the original English text, otherwise the text can be clipped and not entirely shown. -->
</patch>
<patch id="ad.general.HideAdsResourcePatch">
<!-- 'Visit store' should be translated with the same localized wording that YouTube displays. -->
<!-- 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="ad.getpremium.HideGetPremiumPatch">
</patch>
@@ -204,6 +210,8 @@
</patch>
<patch id="layout.theme.ThemeResourcePatch">
</patch>
<patch id="layout.thumbnails.BypassImageRegionRestrictions">
</patch>
<patch id="layout.thumbnails.AlternativeThumbnailsPatch">
<!-- 'Home' should be translated using the same localized wording YouTube displays for the home tab. -->
<!-- 'Subscription' should be translated using the same localized wording YouTube displays for the subscription tab. -->
@@ -222,8 +230,6 @@
</patch>
<patch id="misc.links.OpenLinksExternallyPatch">
</patch>
<patch id="misc.backgroundplayback.BackgroundPlaybackPatch">
</patch>
<patch id="misc.privacy.RemoveTrackingQueryParameterPatch">
</patch>
<patch id="misc.zoomhaptics.ZoomHapticsPatch">

View File

@@ -1,6 +1,9 @@
<?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.
# General guidelines and information for translating
## Strings parameters can be reordered to allow more flexible translations if the grammar should be changed.
@@ -90,6 +93,9 @@
<string name="revanced_debug_toast_on_error_user_dialog_message">A hibaüzenetek kikapcsolása elrejti az összes ReVanced hibaértesítést.\n\nNem kap értesítést semmilyen váratlan eseményről.</string>
</patch>
<patch id="layout.hide.general.HideLayoutComponentsPatch">
<string name="revanced_disable_like_subscribe_glow_title">Like / feliratkozás gomb ragyogásának kikapcsolása</string>
<string name="revanced_disable_like_subscribe_glow_summary_on">Like / feliratkozás gomb nem fog ragyogni mikor megemlítik</string>
<string name="revanced_disable_like_subscribe_glow_summary_off">Like / feliratkozás gomb ragyogni fog mikor megemlítik</string>
<string name="revanced_hide_gray_separator_title">Szürke elválasztó elrejtése</string>
<string name="revanced_hide_gray_separator_summary_on">A szürke elválasztók el vannak rejtve</string>
<string name="revanced_hide_gray_separator_summary_off">A szürke elválasztók láthatóak</string>
@@ -237,9 +243,11 @@
<string name="revanced_hide_keyword_content_phrases_summary">Elrejtendő kulcsszavak és kifejezések, új sorokkal elválasztva.\n\nA szóközépen nagy betűt tartalmazó szavaknál a kis- és nagybetűknek a megfelelő helyen kell lennie (pl: iPhone, TikTok, LeBlanc)</string>
<string name="revanced_hide_keyword_content_about_title">A kulcsszó alapú szűrésről</string>
<string name="revanced_hide_keyword_content_about_summary">A Kezdőlap/Feliratkozások/Keresés eredményei a kulcsszóval megegyező tartalom elrejtésére vannak szűrve\n\nKorlátozások\n• Néhány Shorts lehet, hogy nem lesz elrejtve\n• Néhány UI elem lehet, hogy nem lesz elrejtve\n• Előfordulhat, hogy a kulcsszó keresése nem hoz eredményt</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">Érvénytelen kulcsszó.\'%s\'nem használható szűrőként</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_length">Helytelen kulcsszó. \'%1$s\' kevesebb, mint %2$d karakter</string>
<string name="revanced_hide_keyword_toast_invalid_broad">\'$s\' kulcsszó elrejti az összes videót</string>
<string name="revanced_hide_keyword_toast_invalid_broad">\'%s\' kulcsszó elrejti az összes videót</string>
</patch>
<patch id="ad.general.HideAdsResourcePatch">
<string name="revanced_hide_general_ads_title">Általános hirdetések elrejtése</string>
@@ -273,6 +281,7 @@
<string name="revanced_hide_merchandise_banners_title">Áruszalaghirdetések elrejtése</string>
<string name="revanced_hide_merchandise_banners_summary_on">Az áruszalaghirdetések el vannak rejtve</string>
<string name="revanced_hide_merchandise_banners_summary_off">Az áruszalaghirdetések megjelennek</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">A teljes képernyős hirdetések elrejtése csak régebbi eszközökön működik</string>
</patch>
<patch id="ad.getpremium.HideGetPremiumPatch">
@@ -983,6 +992,8 @@
<string name="revanced_seekbar_custom_color_value_summary">A keresősáv színe</string>
<string name="revanced_seekbar_custom_color_invalid">Érvénytelen színérték. Az alap érték használata.</string>
</patch>
<patch id="layout.thumbnails.BypassImageRegionRestrictions">
</patch>
<patch id="layout.thumbnails.AlternativeThumbnailsPatch">
<!-- 'Home' should be translated using the same localized wording YouTube displays for the home tab. -->
<string name="revanced_alt_thumbnail_home_title">Kezdőlap</string>
@@ -1048,10 +1059,6 @@
<string name="revanced_external_browser_summary_on">Hivatkozások külső megnyitása</string>
<string name="revanced_external_browser_summary_off">Hivatkozások megnyitása az alkalmazásban</string>
</patch>
<patch id="misc.backgroundplayback.BackgroundPlaybackPatch">
<string name="revanced_background_playback_title">Lejátszás a háttérben</string>
<string name="revanced_background_playback_summary">Ez a beállítás a Beállítások -&gt; Háttér menüpontban található</string>
</patch>
<patch id="misc.privacy.RemoveTrackingQueryParameterPatch">
<string name="revanced_remove_tracking_query_parameter_title">Nyomkövetési lekérdezési paraméter eltávolítása</string>
<string name="revanced_remove_tracking_query_parameter_summary_on">A nyomkövetési lekérdezési paraméter eltávolítva a linkekből</string>
@@ -1110,6 +1117,7 @@
<string name="revanced_spoof_client_user_dialog_message">A beállítás kikapcsolása videolejátszási problémákat okozhat.</string>
<string name="revanced_spoof_client_use_ios_title">Hamis kliens iOS-re</string>
<string name="revanced_spoof_client_use_ios_summary_on">A kliens jelenleg iOS-re van hamisítva\n\nA mellékhatások a következők:\n• Nincs HDR-videó\n• Előfordulhat, hogy a megtekintési előzmények nem működnek\n• Hiányozhatnak a jobb videóminőségek\n• Az élő közvetítések nem játszhatók le csak hangként\n• Élő a streamek nem érhetők el Android 8.0 rendszeren</string>
<string name="revanced_spoof_client_use_ios_summary_off">A kliens jelenleg az Android VR-t utánozza\n\nMellékhatásokkal együtt:\n• Nincs HDR video\n• Nincs \'Kids\' videólejátszás\n• A pillanatmegállított videók véletlenszerűen elindulhatnak\n• Alacsony minőségű Shorts csűszka bélyegképek\n• A letöltés gomb mindig rejtett\n• Videó végi kártyák mindig rejtett</string>
<string name="revanced_spoof_client_storyboard_timeout">Hamis kliens miniatűrök nem érhetők el (API időtúllépés)</string>
<string name="revanced_spoof_client_storyboard_io_exception">A hamis kliens miniatűrök átmenetileg nem érhetők el: %s</string>
</patch>

View File

@@ -1,6 +1,9 @@
<?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.
# General guidelines and information for translating
## Strings parameters can be reordered to allow more flexible translations if the grammar should be changed.
@@ -55,9 +58,12 @@
<!-- '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. -->
<!-- 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. -->
<!-- Translations of this should not be longer than the original English text, otherwise the text can be clipped and not entirely shown. -->
<!-- Translations of this should not be longer than the original English text, otherwise the text can be clipped and not entirely shown. -->
</patch>
<patch id="ad.general.HideAdsResourcePatch">
<!-- 'Visit store' should be translated with the same localized wording that YouTube displays. -->
<!-- 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="ad.getpremium.HideGetPremiumPatch">
</patch>
@@ -196,6 +202,8 @@
</patch>
<patch id="layout.theme.ThemeResourcePatch">
</patch>
<patch id="layout.thumbnails.BypassImageRegionRestrictions">
</patch>
<patch id="layout.thumbnails.AlternativeThumbnailsPatch">
<!-- 'Home' should be translated using the same localized wording YouTube displays for the home tab. -->
<!-- 'Subscription' should be translated using the same localized wording YouTube displays for the subscription tab. -->
@@ -214,8 +222,6 @@
</patch>
<patch id="misc.links.OpenLinksExternallyPatch">
</patch>
<patch id="misc.backgroundplayback.BackgroundPlaybackPatch">
</patch>
<patch id="misc.privacy.RemoveTrackingQueryParameterPatch">
</patch>
<patch id="misc.zoomhaptics.ZoomHapticsPatch">

View File

@@ -1,6 +1,9 @@
<?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.
# General guidelines and information for translating
## Strings parameters can be reordered to allow more flexible translations if the grammar should be changed.
@@ -44,9 +47,9 @@
<!-- 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 belum dipasang. Pasang dulu.</string>
<string name="gms_core_dialog_title">Perlu tindakan</string>
<string name="gms_core_dialog_not_whitelisted_not_allowed_in_background_message">.</string>
<string name="gms_core_dialog_not_whitelisted_not_allowed_in_background_message">MicroG GmsCore tidak memiliki izin untuk berjalan di latar belakang.\n\nIkuti panduan \"Don\'t kill my app\" untuk ponsel Anda, dan terapkan petunjuk tersebut pada pemasangan MicroG Anda.\n\nIni diperlukan supaya aplikasi dapat berfungsi.</string>
<string name="gms_core_dialog_open_website_text">Buka situs</string>
<string name="gms_core_dialog_not_whitelisted_using_battery_optimizations_message">.</string>
<string name="gms_core_dialog_not_whitelisted_using_battery_optimizations_message">Pengoptimalan baterai MicroG GmsCore harus dinonaktifkan untuk mencegah masalah.\n\nKetuk tombol lanjutkan dan matikan pengoptimalan baterai.</string>
<string name="gms_core_dialog_continue_text">Lanjut</string>
</patch>
</app>
@@ -66,7 +69,7 @@
<string name="revanced_settings_screen_03_feed_title">Feed</string>
<string name="revanced_settings_screen_04_player_title">Pemutar</string>
<string name="revanced_settings_screen_05_general_title">Layout umum</string>
<string name="revanced_settings_screen_07_seekbar_title">Progressbar</string>
<string name="revanced_settings_screen_07_seekbar_title">Seekbar</string>
<string name="revanced_settings_screen_08_swipe_controls_title">Kontrol geser</string>
<string name="revanced_settings_screen_11_misc_title">Lainnya</string>
<string name="revanced_settings_screen_12_video_title">Video</string>
@@ -92,210 +95,680 @@
<string name="revanced_disable_like_subscribe_glow_title">Nonaktifkan kilau tombol suka / langganan</string>
<string name="revanced_disable_like_subscribe_glow_summary_on">Tombol suka dan langganan tidak akan berkilau saat ditekan</string>
<string name="revanced_disable_like_subscribe_glow_summary_off">Tombol suka dan langganan akan berkilau saat ditekan</string>
<string name="revanced_hide_gray_separator_title">S\'bunyikan pemisah abu-abu</string>
<string name="revanced_hide_gray_separator_title">Sembunyikan pemisah abu-abu</string>
<string name="revanced_hide_gray_separator_summary_on">Pemisah abu-abu disembunyikan</string>
<string name="revanced_hide_gray_separator_summary_off">Pemisah abu-abu ditampilkan</string>
<string name="revanced_hide_channel_watermark_title">S\"bunyikan tanda air saluran</string>
<string name="revanced_hide_channel_watermark_summary_on">Watermark disembunyikan</string>
<string name="revanced_hide_channel_watermark_title">Sembunyikan watermark saluran</string>
<string name="revanced_hide_channel_watermark_summary_on">Tanda air disembunyikan</string>
<string name="revanced_hide_channel_watermark_summary_off">Watermark ditampilkan</string>
<string name="revanced_hide_horizontal_shelves_title">S\'bunyikan rak mendatar</string>
<string name="revanced_hide_horizontal_shelves_title">Sembunyikan rak mendatar</string>
<string name="revanced_hide_horizontal_shelves_summary_on">Rak berikut disembunyikan:\n• Berita sela\n• Lanjut menonton\n• Jelajahi saluran lain\n• Belanja\n• Tonton lagi</string>
<string name="revanced_hide_horizontal_shelves_summary_off">Rak ditampilkan</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">S\'bunyikan \'Gabung\'</string>
<string name="revanced_hide_join_membership_button_title">Sembunyikan \'Gabung\'</string>
<string name="revanced_hide_join_membership_button_summary_on">Tombol disembunyikan</string>
<string name="revanced_hide_join_membership_button_summary_off">Tombol ditampilkan</string>
<!-- 'For you' should be translated using the same localized wording YouTube displays. -->
<string name="revanced_hide_for_you_shelf_title">S\'bunyikan rak \'Untuk Anda\' di laman saluran</string>
<string name="revanced_hide_for_you_shelf_title">Sembunyikan rak \'Untuk Anda\' di laman saluran</string>
<string name="revanced_hide_for_you_shelf_summary_on">Rak disembunyikan</string>
<string name="revanced_hide_for_you_shelf_summary_off">Rak ditampilkan</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">S\'bunyikan \'Beri tahu saya\'</string>
<string name="revanced_hide_notify_me_button_title">Sembunyikan \'Beri tahu saya\'</string>
<string name="revanced_hide_notify_me_button_summary_on">Tombol disembunyikan</string>
<string name="revanced_hide_notify_me_button_summary_off">Tombol ditampilkan</string>
<!-- 'People also watch' should be translated using the same localized wording YouTube displays. -->
<string name="revanced_hide_search_result_recommendations_title">S\'bunyikan anjuran \'Juga ditonton orang\'</string>
<string name="revanced_hide_search_result_recommendations_title">Sembunyikan anjuran \'Juga ditonton orang\'</string>
<string name="revanced_hide_search_result_recommendations_summary_on">Anjuran disembunyikan</string>
<string name="revanced_hide_search_result_recommendations_summary_off">Anjuran ditampilkan</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">Sembunyikan tombol \'Tampilkan Lebih\'</string>
<string name="revanced_hide_show_more_button_title">Sembunyikan \'Tampilkan Lebih\'</string>
<string name="revanced_hide_show_more_button_summary_on">Tombol disembunyikan</string>
<string name="revanced_hide_show_more_button_summary_off">Tombol ditampilkan</string>
<string name="revanced_hide_timed_reactions_title">Sembunyikan waktu reaksi</string>
<string name="revanced_hide_timed_reactions_summary_on">Waktu reaksi disembunyikan</string>
<string name="revanced_hide_timed_reactions_summary_off">Tampilkan Waktu Reaksi</string>
<string name="revanced_hide_search_result_shelf_header_title">.</string>
<string name="revanced_hide_search_result_shelf_header_title">Sembunyikan header rak pencarian</string>
<string name="revanced_hide_search_result_shelf_header_summary_on">Sembunyikan Shelf Header</string>
<string name="revanced_hide_search_result_shelf_header_summary_off">Tampilkan Shelf Header</string>
<string name="revanced_hide_channel_guidelines_title">Sembunyikan Panduan Channel</string>
<string name="revanced_hide_channel_guidelines_summary_on">Panduan channel disembunyikan</string>
<string name="revanced_hide_channel_guidelines_summary_off">Panduan channel di tampilkan</string>
<string name="revanced_hide_expandable_chip_title"></string>
<string name="revanced_hide_expandable_chip_summary_on">Chip yang dapat diperluas disembunyikan</string>
<string name="revanced_hide_channel_guidelines_title">Sembunyikan Panduan Saluran</string>
<string name="revanced_hide_channel_guidelines_summary_on">Panduan saluran disembunyikan</string>
<string name="revanced_hide_channel_guidelines_summary_off">Panduan saluran ditampilkan</string>
<string name="revanced_hide_expandable_chip_title">Sembunyikan opsi deret di bawah video</string>
<string name="revanced_hide_expandable_chip_summary_on">Opsi deret disembunyikan</string>
<string name="revanced_hide_expandable_chip_summary_off">Chip yang dapat diperluas ditampilkan</string>
<string name="revanced_hide_video_quality_menu_footer_title">Sembunyikan footer menu kualitas video</string>
<string name="revanced_hide_video_quality_menu_footer_summary_on">Footer menu kualitas video disembunyikan</string>
<string name="revanced_hide_video_quality_menu_footer_summary_off">Footer menu kualitas video ditampilkan</string>
<string name="revanced_hide_community_posts_title">Sembunyikan postingan komunitas</string>
<string name="revanced_hide_community_posts_summary_on">Postingan komunitas disembunyikan</string>
<string name="revanced_hide_video_quality_menu_footer_title">Sembunyikan footer menu mutu video</string>
<string name="revanced_hide_video_quality_menu_footer_summary_on">Footer menu mutu video disembunyikan</string>
<string name="revanced_hide_video_quality_menu_footer_summary_off">Footer menu mutu video ditampilkan</string>
<string name="revanced_hide_community_posts_title">Sembunyikan post. komunitas</string>
<string name="revanced_hide_community_posts_summary_on">Post. komunitas disembunyikan</string>
<string name="revanced_hide_community_posts_summary_off">Postingan komunitas ditampilkan</string>
<string name="revanced_hide_compact_banner_title">Sembunyikan banner padat</string>
<string name="revanced_hide_compact_banner_summary_on">Banner padat disembunyikan</string>
<string name="revanced_hide_compact_banner_title">Sembunyikan spanduk ringkas</string>
<string name="revanced_hide_compact_banner_summary_on">Spanduk ringkas disembunyikan</string>
<string name="revanced_hide_compact_banner_summary_off">Banner padat ditampilkan</string>
<string name="revanced_hide_channel_bar_title">S\'bunyikan bilah saluran</string>
<string name="revanced_hide_movies_section_title">Sembunyikan bagian film</string>
<string name="revanced_hide_movies_section_summary_on">Bagian film disembunyikan</string>
<string name="revanced_hide_movies_section_summary_off">Bagian film ditampilkan</string>
<string name="revanced_hide_feed_survey_title">Sembunyikan survei</string>
<string name="revanced_hide_feed_survey_summary_on">Survei disembunyikan</string>
<string name="revanced_hide_feed_survey_summary_off">Survei umpan balik ditampilkan</string>
<string name="revanced_hide_community_guidelines_title">Sembunyikan pedoman komunitas</string>
<string name="revanced_hide_community_guidelines_summary_on">Pedoman komunitas disembunyikan</string>
<string name="revanced_hide_community_guidelines_summary_off">Pedoman komunitas ditampilkan</string>
<string name="revanced_hide_subscribers_community_guidelines_title">Sembunyikan pedoman komunitas pelanggan</string>
<string name="revanced_hide_subscribers_community_guidelines_summary_on">Pedoman komunitas pelanggan disembunyikan</string>
<string name="revanced_hide_subscribers_community_guidelines_summary_off">Pedoman komunitas untuk para pelanggan ditampilkan</string>
<string name="revanced_hide_channel_member_shelf_title">Sembunyikan rak anggota saluran</string>
<string name="revanced_hide_channel_member_shelf_summary_on">Rak anggota saluran disembunyikan</string>
<string name="revanced_hide_channel_member_shelf_summary_off">Rak anggota saluran ditampilkan</string>
<string name="revanced_hide_emergency_box_title">Sembunyikan kotak darurat</string>
<string name="revanced_hide_emergency_box_summary_on">Kotak darurat disembunyikan</string>
<string name="revanced_hide_emergency_box_summary_off">Kotak darurat ditampilkan</string>
<string name="revanced_hide_info_panels_title">Sembunyikan panel info</string>
<string name="revanced_hide_info_panels_summary_on">Panel info disembunyikan</string>
<string name="revanced_hide_info_panels_summary_off">Panel informasi ditampilkan</string>
<string name="revanced_hide_medical_panels_title">Sembunyikan panel medis</string>
<string name="revanced_hide_medical_panels_summary_on">Panel medis disembunyikan</string>
<string name="revanced_hide_medical_panels_summary_off">Panel medis ditampilkan</string>
<string name="revanced_hide_channel_bar_title">Sembunyikan bilah saluran</string>
<string name="revanced_hide_channel_bar_summary_on">Bilah saluran disembunyikan</string>
<string name="revanced_hide_channel_bar_summary_off">Bilah saluran ditampilkan</string>
<string name="revanced_hide_playables_title">Sembunyikan konten tonton</string>
<string name="revanced_hide_playables_summary_on">Konten tonton disembunyikan</string>
<string name="revanced_hide_playables_summary_off">Yang dapat diputar ditunjukkan</string>
<string name="revanced_hide_quick_actions_title">Sembunyikan tindakan cepat di layar penuh</string>
<string name="revanced_hide_quick_actions_summary_on">Tindakan cepat disembunyikan</string>
<string name="revanced_hide_quick_actions_summary_off">Tindakan cepat ditampilkan</string>
<string name="revanced_hide_related_videos_title">Sembunyikan video terkait dalam tindakan cepat</string>
<string name="revanced_hide_related_videos_summary_on">Video terkait disembunyikan</string>
<string name="revanced_hide_related_videos_summary_off">Video terkait ditampilkan</string>
<string name="revanced_hide_image_shelf_title">Sembunyikan rak gambar di pencarian</string>
<string name="revanced_hide_image_shelf_summary_on">Rak gambar disembunyikan</string>
<string name="revanced_hide_image_shelf_summary_off">Rak gambar ditampilkan</string>
<string name="revanced_hide_latest_posts_ads_title">Sembunyikan post. terbaru</string>
<string name="revanced_hide_latest_posts_ads_summary_on">Post. terbaru disembunyikan</string>
<string name="revanced_hide_latest_posts_ads_summary_off">Kiriman terbaru ditampilkan</string>
<string name="revanced_hide_mix_playlists_title">Sembunyikan daftar putar campuran</string>
<string name="revanced_hide_mix_playlists_summary_on">Daftar putar campuran disembunyikan</string>
<string name="revanced_hide_mix_playlists_summary_off">Daftar putar campuran ditampilkan</string>
<string name="revanced_hide_artist_cards_title">Sembunyikan kartu artis</string>
<string name="revanced_hide_artist_cards_summary_on">Kartu artis disembunyikan</string>
<string name="revanced_hide_artist_cards_summary_off">Kartu artis ditampilkan</string>
<string name="revanced_hide_chips_shelf_title">Sembunyikan rak chip</string>
<string name="revanced_hide_chips_shelf_summary_on">Rak opsi deret disembunyikan</string>
<string name="revanced_hide_chips_shelf_summary_off">Rak chip ditampilkan</string>
<string name="revanced_hide_attributes_section_title">Sembunyikan bagian atribut</string>
<string name="revanced_hide_attributes_section_summary_on">\'Tempat menonjol\', \'Permainan\', dan \'Musik\' disembunyikan</string>
<string name="revanced_hide_attributes_section_summary_off">\'Tempat menonjol\', \'Permainan\', dan \'Musik\' ditampilkan</string>
<string name="revanced_hide_chapters_section_title">Sembunyikan bagian Bab</string>
<string name="revanced_hide_chapters_section_summary_on">Bagian Bab sudah disembunyikan</string>
<string name="revanced_hide_chapters_section_summary_off">Bagian Bab sudah ditampilkan</string>
<string name="revanced_hide_podcast_section_title">Sembunyikan bagian \'Jelajahi podcast\'</string>
<string name="revanced_hide_podcast_section_summary_on">Bagian \'Jelajahi podcast\' disembunyikan</string>
<string name="revanced_hide_podcast_section_summary_off">Bagian \'Jelajahi podcast\' ditampilkan</string>
<string name="revanced_hide_info_cards_section_title">Sembunyikan kartu info</string>
<string name="revanced_hide_info_cards_section_summary_on">Kartu info sudah disembunyikan</string>
<string name="revanced_hide_info_cards_section_summary_off">Bagian kartu info sudah ditampilkan</string>
<string name="revanced_hide_transcript_section_title">Sembunyikan bagian transkrip</string>
<string name="revanced_hide_transcript_section_summary_on">Bagian transkrip sudah disembunyikan</string>
<string name="revanced_hide_transcript_section_summary_off">Bagian transkrip sudah ditampilkan</string>
<string name="revanced_hide_description_components_screen_title">Keterangan video</string>
<string name="revanced_hide_description_components_screen_summary">Sembunyi/tampilkan komponen keterangan video</string>
<string name="revanced_custom_filter_screen_title">Penyaring kustom</string>
<string name="revanced_custom_filter_screen_summary">Sembunyikan komponen menggunakan penyaring khusus</string>
<string name="revanced_custom_filter_title">Aktifkan penyaring khusus</string>
<string name="revanced_custom_filter_summary_on">Penyaring khusus diaktifkan</string>
<string name="revanced_custom_filter_summary_off">Penyaring khusus dimatikan</string>
<string name="revanced_custom_filter_strings_title">Penyaring khusus</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">Daftar untaian karakter untuk disaring, dipisah dengan baris baru</string>
<string name="revanced_custom_filter_toast_invalid_syntax">Penyaring khusus tidak valid: %s</string>
<string name="revanced_hide_keyword_content_screen_title">Sembunyikan kata kunci konten</string>
<string name="revanced_hide_keyword_content_screen_summary">Sembunyikan pencarian dan umpan video menggunakan penyaring kata kunci</string>
<string name="revanced_hide_keyword_content_home_title">Sembunyikan video beranda dengan kata kunci</string>
<string name="revanced_hide_keyword_content_home_summary_on">Video di tab beranda disaring berdasarkan kata kunci</string>
<string name="revanced_hide_keyword_content_home_summary_off">Video di tab beranda tidak disaring berdasarkan kata kunci</string>
<string name="revanced_hide_keyword_content_subscriptions_title">Sembunyikan video langganan dengan kata kunci</string>
<string name="revanced_hide_keyword_content_subscriptions_summary_on">Video di tab langganan disaring berdasarkan kata kunci</string>
<string name="revanced_hide_keyword_content_subscriptions_summary_off">Video di tab langganan tidak disaring berdasarkan kata kunci</string>
<string name="revanced_hide_keyword_content_search_title">Sembunyikan hasil pencarian berdasarkan kata kunci</string>
<string name="revanced_hide_keyword_content_search_summary_on">Hasil pencarian disaring berdasarkan kata kunci</string>
<string name="revanced_hide_keyword_content_search_summary_off">Hasil pencarian tidak disaring berdasarkan kata kunci</string>
<string name="revanced_hide_keyword_content_phrases_title">Kata kunci yang ingin disembunyikan</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">Kata kunci dan frasa yang ingin disembunyikan, dipisahkan dengan baris baru\n\nKata dengan huruf kapital di tengah harus dimasukkan dengan huruf besar (contoh: iPhone, TikTok, LeBlanc)</string>
<string name="revanced_hide_keyword_content_about_title">Tentang penyaringan kata kunci</string>
<string name="revanced_hide_keyword_content_about_summary">Beranda/Langganan/Hasil penelusuran disaring untuk menyembunyikan konten yang cocok dengan frasa kata kunci\n\nBatasan\n• Beberapa video Shorts mungkin tidak disembunyikan\n• Beberapa komponen UI mungkin tidak disembunyikan\n• Penelusuran dengan kata kunci mungkin tidak menunjukkan hasil</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">Kata kunci tidak sah: \'%s\'</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_length">Kata kunci tidak sah. \'%1$s\' kurang dari %2$d karakter</string>
<string name="revanced_hide_keyword_toast_invalid_broad">Kata kunci \'%s\' akan menyembunyikan semua video</string>
</patch>
<patch id="ad.general.HideAdsResourcePatch">
<string name="revanced_hide_general_ads_title">Sembunyikan iklan umum</string>
<string name="revanced_hide_general_ads_summary_on">Iklan umum sudah disembunyikan</string>
<string name="revanced_hide_general_ads_summary_off">Iklan umum sudah ditampilkan</string>
<string name="revanced_hide_fullscreen_ads_title">Sembunyikan iklan layar penuh</string>
<string name="revanced_hide_fullscreen_ads_summary_on">Iklan layar penuh disembunyikan\n\nFitur ini hanya tersedia untuk perangkat lama</string>
<string name="revanced_hide_fullscreen_ads_summary_off">Iklan layar penuh sudah ditampilkan</string>
<string name="revanced_hide_buttoned_ads_title">Sembunyikan iklan bertombol</string>
<string name="revanced_hide_buttoned_ads_summary_on">Iklan berbentuk tombol disembunyikan</string>
<string name="revanced_hide_buttoned_ads_summary_off">Iklan bertombol ditampilkan</string>
<string name="revanced_hide_paid_promotion_label_title">Sembunyikan label promosi berbayar</string>
<string name="revanced_hide_paid_promotion_label_summary_on">Label promosi berbayar disembunyikan</string>
<string name="revanced_hide_paid_promotion_label_summary_off">Label promosi berbayar ditampilkan</string>
<string name="revanced_hide_self_sponsor_ads_title">Sembunyikan kartu bersponsor pribadi</string>
<string name="revanced_hide_self_sponsor_ads_summary_on">Kartu bersponsor pribadi disembunyikan</string>
<string name="revanced_hide_self_sponsor_ads_summary_off">Kartu bersponsor pribadi ditampilkan</string>
<string name="revanced_hide_products_banner_title">Sembunyikan banner untuk melihat produk</string>
<string name="revanced_hide_products_banner_summary_on">Banner disembunyikan</string>
<string name="revanced_hide_products_banner_summary_off">Banner ditampilkan</string>
<string name="revanced_hide_shopping_links_title">Sembunyikan tautan belanja dalam deskripsi video</string>
<string name="revanced_hide_shopping_links_summary_on">Tautan belanja disembunyikan</string>
<string name="revanced_hide_shopping_links_summary_off">Tautan belanja ditampilkan</string>
<!-- 'Visit store' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_visit_store_button_title">S\'bunyikan tombol \'Lihat toko\' di laman saluran</string>
<string name="revanced_hide_visit_store_button_title">Sembunyikan \'Lihat toko\' di laman saluran</string>
<string name="revanced_hide_visit_store_button_summary_on">Tombol disembunyikan</string>
<string name="revanced_hide_visit_store_button_summary_off">Tombol ditampilkan</string>
<string name="revanced_hide_web_search_results_title">Sembunyikan hasil pencarian web</string>
<string name="revanced_hide_web_search_results_summary_on">Hasil pencarian web disembunyikan</string>
<string name="revanced_hide_web_search_results_summary_off">Hasil pencarian web ditampilkan</string>
<string name="revanced_hide_merchandise_banners_title">Sembunyikan banner merchandise</string>
<string name="revanced_hide_merchandise_banners_summary_on">Banner merchandise disembunyikan</string>
<string name="revanced_hide_merchandise_banners_summary_off">Banner merchandise ditampilkan</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">Sembunyikan iklan layar penuh hanya berfungsi pada perangkat lama</string>
</patch>
<patch id="ad.getpremium.HideGetPremiumPatch">
<string name="revanced_hide_get_premium_title">Sembunyikan promosi YouTube Premium</string>
<string name="revanced_hide_get_premium_summary_on">Promosi YouTube Premium di bawah pemutar video disembunyikan</string>
<string name="revanced_hide_get_premium_summary_off">Promosi YouTube Premium di bawah pemutar video ditampilkan</string>
</patch>
<patch id="ad.video.VideoAdsPatch">
<string name="revanced_hide_video_ads_title">Sembunyikan iklan video</string>
<string name="revanced_hide_video_ads_summary_on">Iklan video disembunyikan</string>
<string name="revanced_hide_video_ads_summary_off">Iklan video ditampilkan</string>
</patch>
<patch id="interaction.copyvideourl.CopyVideoUrlResourcePatch">
<string name="revanced_share_copy_url_success">URL disalin ke papan klip</string>
<string name="revanced_share_copy_url_timestamp_success">URL dengan timestamp telah disalin</string>
<string name="revanced_copy_video_url_title">Tampilkan tombol salin URL video</string>
<string name="revanced_copy_video_url_summary_on">Tombol ditampilkan. Ketuk untuk menyalin URL video. Ketuk dan tahan untuk menyalin URL video dengan timestamp</string>
<string name="revanced_copy_video_url_summary_off">Tombol tidak ditampilkan</string>
<string name="revanced_copy_video_url_timestamp_title">Tampilkan tombol salin timestamp URL</string>
<string name="revanced_copy_video_url_timestamp_summary_on">Tombol ditampilkan. Ketuk untuk menyalin URL video dengan timestamp. Ketuk dan tahan untuk menyalin video tanpa timestamp</string>
<string name="revanced_copy_video_url_timestamp_summary_off">Tombol tidak ditampilkan</string>
</patch>
<patch id="interaction.dialog.RemoveViewerDiscretionDialogPatch">
<string name="revanced_remove_viewer_discretion_dialog_title">Hapus dialog peringatan untuk penonton</string>
<string name="revanced_remove_viewer_discretion_dialog_summary_on">Dialog akan dihapus</string>
<string name="revanced_remove_viewer_discretion_dialog_summary_off">Dialog akan ditampilkan</string>
<string name="revanced_remove_viewer_discretion_dialog_user_dialog_message">Ini tidak mengabaikan batasan usia. Hanya otomatis menerimanya.</string>
</patch>
<patch id="interaction.downloads.DownloadsResourcePatch">
<string name="revanced_external_downloader_screen_title">Unduhan eksternal</string>
<string name="revanced_external_downloader_screen_summary">Pengaturan untuk menggunakan pengunduh eksternal</string>
<string name="revanced_external_downloader_title">Tampilkan tombol unduhan eksternal</string>
<string name="revanced_external_downloader_summary_on">Tombol unduh ditampilkan di pemutar</string>
<string name="revanced_external_downloader_summary_off">Tombol unduh tidak ditampilkan di pemutar</string>
<!-- 'download action button' should be translated using the same wording as the translation of 'revanced_hide_download_button_title' -->
<string name="revanced_external_downloader_action_button_title">Ganti tombol tindakan pengunduhan</string>
<string name="revanced_external_downloader_action_button_summary_on">Tombol unduh membuka pengunduh eksternal Anda</string>
<string name="revanced_external_downloader_action_button_summary_off">Tombol unduh membuka pengunduh asli di dalam aplikasi</string>
<string name="revanced_external_downloader_name_title">Nama paket pengunduh</string>
<string name="revanced_external_downloader_name_summary">Nama paket aplikasi pengunduh eksternal yang Anda pasang, seperti NewPipe atau Seal</string>
<string name="revanced_external_downloader_not_installed_warning">%s belum terpasang. Silahkan pasang.</string>
</patch>
<patch id="interaction.seekbar.DisablePreciseSeekingGesturePatch">
<string name="revanced_disable_precise_seeking_gesture_title">Matikan gerakan pencarian presisi</string>
<string name="revanced_disable_precise_seeking_gesture_summary_on">Gerakan dinonaktifkan</string>
<string name="revanced_disable_precise_seeking_gesture_summary_off">Gerakan dinyalakan</string>
</patch>
<patch id="interaction.seekbar.EnableSeekbarTappingPatch">
<string name="revanced_seekbar_tapping_title">Aktifkan tapping seekbar</string>
<string name="revanced_seekbar_tapping_summary_on">Tapping seekbar diaktifkan</string>
<string name="revanced_seekbar_tapping_summary_off">Tapping seekbar dinonaktifkan</string>
</patch>
<patch id="interaction.swipecontrols.SwipeControlsResourcePatch">
<string name="revanced_swipe_brightness_title">Nyalakan gerakan kecerahan</string>
<string name="revanced_swipe_brightness_summary_on">Sapuan kecerahan dinyalakan</string>
<string name="revanced_swipe_brightness_summary_off">Sapuan kecerahan dimatikan</string>
<string name="revanced_swipe_volume_title">Nyalakan gerakan volume</string>
<string name="revanced_swipe_volume_summary_on">Sapuan volume dinyalakan</string>
<string name="revanced_swipe_volume_summary_off">Sapuan volume dimatikan</string>
<string name="revanced_swipe_press_to_engage_title">Nyalakan gerakan tekan-untuk-menggeser</string>
<string name="revanced_swipe_press_to_engage_summary_on">Tekan-untuk-menggeser dinyalakan</string>
<string name="revanced_swipe_press_to_engage_summary_off">Tekan-untuk-menggeser dimatikan</string>
<string name="revanced_swipe_haptic_feedback_title">Nyalakan umpan balik sentuhan</string>
<string name="revanced_swipe_haptic_feedback_summary_on">Umpan balik sentuhan dinyalakan</string>
<string name="revanced_swipe_haptic_feedback_summary_off">Umpan balik sentuhan dimatikan</string>
<string name="revanced_swipe_save_and_restore_brightness_title">Simpan dan pulihkan kecerahan</string>
<string name="revanced_swipe_save_and_restore_brightness_summary_on">Simpan dan pulihkan kecerahan saat keluar atau memasuki layar penuh</string>
<string name="revanced_swipe_save_and_restore_brightness_summary_off">Jangan simpan dan pulihkan kecerahan saat keluar atau memasuki layar penuh</string>
<string name="revanced_swipe_lowest_value_enable_auto_brightness_title">Nyalakan gerakan kecerahan otomatis</string>
<string name="revanced_swipe_lowest_value_enable_auto_brightness_summary_on">Mengusap ke bawah ke nilai terendah dari gerakan kecerahan akan menyalakan kecerahan otomatis</string>
<string name="revanced_swipe_lowest_value_enable_auto_brightness_summary_off">Mengusap ke bawah ke nilai terendah tidak mengaktifkan kecerahan otomatis</string>
<string name="revanced_swipe_lowest_value_enable_auto_brightness_overlay_text">Otomatis</string>
<string name="revanced_swipe_overlay_timeout_title">Batas waktu hamparan geser</string>
<string name="revanced_swipe_overlay_timeout_summary">Jumlah milidetik hamparan terlihat</string>
<string name="revanced_swipe_text_overlay_size_title">Ukuran teks hamparan geser</string>
<string name="revanced_swipe_text_overlay_size_summary">Ukuran teks untuk hamparan geser</string>
<string name="revanced_swipe_overlay_background_alpha_title">Visibilitas latar belakang geser</string>
<string name="revanced_swipe_overlay_background_alpha_summary">Visibilitas latar belakang hamparan geser</string>
<string name="revanced_swipe_threshold_title">Ambang batas magnitudo geser</string>
<string name="revanced_swipe_threshold_summary">Jumlah ambang batas untuk terjadinya geser</string>
</patch>
<patch id="layout.autocaptions.AutoCaptionsPatch">
<string name="revanced_auto_captions_title">Matikan teks otomatis</string>
<string name="revanced_auto_captions_summary_on">Teks otomatis dimatikan</string>
<string name="revanced_auto_captions_summary_off">Teks otomatis dinyalakan</string>
</patch>
<patch id="layout.buttons.action.HideButtonsPatch">
<string name="revanced_hide_buttons_screen_title">Tombol tindakan</string>
<string name="revanced_hide_buttons_screen_summary">Sembunyikan atau tampilkan tombol di bawah video</string>
<string name="revanced_hide_like_dislike_button_title">Sembunyikan Suka dan Tidak Suka</string>
<string name="revanced_hide_like_dislike_button_summary_on">Suka dan Tidak suka disembunyikan</string>
<string name="revanced_hide_like_dislike_button_summary_off">Suka dan Tidak suka ditampilkan</string>
<!-- 'Share' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_share_button_title">Sembunyikan Bagikan</string>
<string name="revanced_hide_share_button_summary_on">Tombol bagikan disembunyikan</string>
<string name="revanced_hide_share_button_summary_off">Tombol bagikan ditampilkan</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">Sembunyikan Laporkan</string>
<string name="revanced_hide_report_button_summary_on">Tombol laporkan disembunyikan</string>
<string name="revanced_hide_report_button_summary_off">Tombol laporkan ditampilkan</string>
<!-- 'Remix' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_remix_button_title">Sembunyikan Remix</string>
<string name="revanced_hide_remix_button_summary_on">Tombol remix disembunyikan</string>
<string name="revanced_hide_remix_button_summary_off">Tombol remix ditampilkan</string>
<!-- 'Download' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_download_button_title">Sembunyikan Unduhan</string>
<string name="revanced_hide_download_button_summary_on">Tombol download disembunyikan</string>
<string name="revanced_hide_download_button_summary_off">Tombol download ditampilkan</string>
<!-- 'Thanks' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_thanks_button_title">Sembunyikan Thanks</string>
<string name="revanced_hide_thanks_button_summary_on">Tombol thanks disembunyikan</string>
<string name="revanced_hide_thanks_button_summary_off">Tombol thanks ditampilkan</string>
<!-- 'Clip' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_clip_button_title">Sembunyikan Klip</string>
<string name="revanced_hide_clip_button_summary_on">Tombol klip disembunyikan</string>
<string name="revanced_hide_clip_button_summary_off">Tombol klip ditampilkan</string>
<!-- 'Save' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_playlist_button_title">Sembunyikan Simpan ke daftar putar</string>
<string name="revanced_hide_playlist_button_summary_on">Tombol Simpan ke daftar putar disembunyikan</string>
<string name="revanced_hide_playlist_button_summary_off">Tombol Simpan ke daftar putar ditampilkan</string>
</patch>
<patch id="layout.buttons.autoplay.HideAutoplayButtonPatch">
<string name="revanced_hide_autoplay_button_title">Sembunyikan tombol putar otomatis</string>
<string name="revanced_hide_autoplay_button_summary_on">Tombol putar otomatis disembunyikan</string>
<string name="revanced_hide_autoplay_button_summary_off">Tombol putar otomatis ditampilkan</string>
</patch>
<patch id="layout.buttons.captions.HideCaptionsButtonPatch">
<!-- 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">Sembunyikan tombol teks</string>
<string name="revanced_hide_captions_button_summary_on">Tombol teks disembunyikan</string>
<string name="revanced_hide_captions_button_summary_off">Tombol teks ditampilkan</string>
</patch>
<patch id="layout.buttons.cast.HideCastButtonPatch">
<string name="revanced_hide_cast_button_title">Sembunyikan tombol transmisi</string>
<string name="revanced_hide_cast_button_summary_on">Tombol membagikan layar disembunyikan</string>
<string name="revanced_hide_cast_button_summary_off">Tombol membagikan layar ditampilkan</string>
</patch>
<patch id="layout.buttons.navigation.NavigationButtonsPatch">
<string name="revanced_navigation_buttons_screen_title">Tombol navigasi</string>
<string name="revanced_navigation_buttons_screen_summary">Sembunyikan atau ganti tombol di bilah navigasi</string>
<!-- 'Home' should be translated using the same localized wording YouTube displays for the tab. -->
<string name="revanced_hide_home_button_title">Sembunyikan Beranda</string>
<string name="revanced_hide_home_button_summary_on">Tombol beranda disembunyikan</string>
<string name="revanced_hide_home_button_summary_off">Tombol beranda ditampilkan</string>
<!-- 'Shorts' should be translated using the same localized wording YouTube displays the tab. -->
<string name="revanced_hide_shorts_button_title">Sembunyikan Shorts</string>
<string name="revanced_hide_shorts_button_summary_on">Tombol shorts disembunyikan</string>
<string name="revanced_hide_shorts_button_summary_off">Tomtol shorts ditampilkan</string>
<!-- The Create button has no display name. Translate normally. -->
<string name="revanced_hide_create_button_title">Sembunyikan Buat</string>
<string name="revanced_hide_create_button_summary_on">Tombol buat disembunyikan</string>
<string name="revanced_hide_create_button_summary_off">Tombol buat ditampilkan</string>
<!-- 'Subscriptions' should be translated using the same localized wording YouTube displays the tab. -->
<string name="revanced_hide_subscriptions_button_title">Sembunyikan Subscription</string>
<string name="revanced_hide_subscriptions_button_summary_on">Tombol subscription disembunyikan</string>
<string name="revanced_hide_subscriptions_button_summary_off">Tombol subscription ditampilkan</string>
<!-- 'Notifications' should be translated using the same localized wording YouTube displays the tab. -->
<string name="revanced_switch_create_with_notifications_button_title">Ganti Buat dengan Notifikasi</string>
<string name="revanced_switch_create_with_notifications_button_summary_on">Tombol Buat diganti dengan tombol Pemberitahuan\n\nCatatan: Iklan video juga akan disembunyikan paksa</string>
<string name="revanced_switch_create_with_notifications_button_summary_off">Tombol buat tidak diganti dengan tombol Notifikasi</string>
<string name="revanced_hide_navigation_button_labels_title">Sembunyikan label tombol navigasi</string>
<string name="revanced_hide_navigation_button_labels_summary_on">Label disembunyikan</string>
<string name="revanced_hide_navigation_button_labels_summary_off">Label ditampilkan</string>
</patch>
<patch id="layout.hide.player.flyoutmenupanel.HidePlayerFlyoutMenuPatch">
<string name="revanced_hide_player_flyout_title">Menu flyout</string>
<string name="revanced_hide_player_flyout_summary">Sembunyikan atau tampilkan item menu pemutar flyout</string>
<!-- 'Captions' should be translated using the same localized wording YouTube displays for the menu item. -->
<string name="revanced_hide_player_flyout_captions_title">Sembunyikan Caption</string>
<string name="revanced_hide_player_flyout_captions_summary_on">Menu caption disembunyikan</string>
<string name="revanced_hide_player_flyout_captions_summary_off">Menu caption ditampilkan</string>
<!-- 'Additional settings' should be translated using the same localized wording YouTube displays for the menu item. -->
<string name="revanced_hide_player_flyout_additional_settings_title">Sembunyikan P\'aturan tambahan</string>
<string name="revanced_hide_player_flyout_additional_settings_summary_on">Menu p\'aturan tambahan disembunyikan</string>
<string name="revanced_hide_player_flyout_additional_settings_summary_off">Menu p\'aturan tambahan ditampilkan</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">Sembunyikan Ulangi video</string>
<string name="revanced_hide_player_flyout_loop_video_summary_on">Menu ulangi video disembunyikan</string>
<string name="revanced_hide_player_flyout_loop_video_summary_off">Menu ulangi video ditampilkan</string>
<!-- 'Ambient mode' should be translated using the same localized wording YouTube displays for the menu item. -->
<string name="revanced_hide_player_flyout_ambient_mode_title">Sembunyikan Mode pencahayaan sinematik</string>
<string name="revanced_hide_player_flyout_ambient_mode_summary_on">Menu mode pencahayaan sinematik disembunyikan</string>
<string name="revanced_hide_player_flyout_ambient_mode_summary_off">Menu mode pencahayaan sinematik ditampilkan</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">Sembunyikan Bantuan &amp; masukan</string>
<string name="revanced_hide_player_flyout_help_summary_on">Bantuan &amp; menu masukan disembunyikan</string>
<string name="revanced_hide_player_flyout_help_summary_off">Bantuan &amp; menu masukan ditampilkan</string>
<!-- 'Playback speed' should be translated using the same localized wording YouTube displays for the menu item. -->
<string name="revanced_hide_player_flyout_speed_title">Sembunyikan Kecepatan pemutaran</string>
<string name="revanced_hide_player_flyout_speed_summary_on">Menu kecepatan pemutar video disembunyikan</string>
<string name="revanced_hide_player_flyout_speed_summary_off">Menu kecepatan pemutar video ditampilkan</string>
<!-- 'More info' should be translated using the same localized wording YouTube displays for the menu item.
This menu only appears for some videos. Translate the name normally if the menu cannot be found. -->
<string name="revanced_hide_player_flyout_more_info_title">Sembunyikan Info lanjut</string>
<string name="revanced_hide_player_flyout_more_info_summary_on">Menu info lanjut disembunyikan</string>
<string name="revanced_hide_player_flyout_more_info_summary_off">Menu info lanjut ditampilkan</string>
<!-- 'Lock screen' should be translated using the same localized wording YouTube displays for the menu item. -->
<string name="revanced_hide_player_flyout_lock_screen_title">Sembunyikan Kunci layar</string>
<string name="revanced_hide_player_flyout_lock_screen_summary_on">Menu kunci layar disembunyikan</string>
<string name="revanced_hide_player_flyout_lock_screen_summary_off">Menu kunci layar ditampilkan</string>
<!-- 'Audio track' should be translated using the same localized wording YouTube displays for the menu item. -->
<string name="revanced_hide_player_flyout_audio_track_title">Sembunyikan Trek audio</string>
<string name="revanced_hide_player_flyout_audio_track_summary_on">Menu trek audio disembunyikan</string>
<string name="revanced_hide_player_flyout_audio_track_summary_off">Menu trek audio ditampilkan</string>
<!-- '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">Sembunyikan Tonton di VR</string>
<string name="revanced_hide_player_flyout_watch_in_vr_summary_on">Menu tonton di VR disembunyikan</string>
<string name="revanced_hide_player_flyout_watch_in_vr_summary_off">Menu tonton di VR ditampilkan</string>
</patch>
<patch id="layout.buttons.player.hide.HidePlayerButtonsPatch">
<string name="revanced_hide_player_buttons_title">Sembunyikan tombol sebelumnya &amp; berikutnya</string>
<string name="revanced_hide_player_buttons_summary_on">Tombol disembunyikan</string>
<string name="revanced_hide_player_buttons_summary_off">Tombol ditampilkan</string>
</patch>
<patch id="layout.hide.albumcards.AlbumCardsResourcePatch">
<string name="revanced_hide_album_cards_title">Sembunyikan kartu album</string>
<string name="revanced_hide_album_cards_summary_on">Kartu album disembunyikan</string>
<string name="revanced_hide_album_cards_summary_off">Kartu album ditampilkan</string>
</patch>
<patch id="layout.hide.comments.CommentsPatch">
<string name="revanced_comments_screen_title">Komentar</string>
<string name="revanced_comments_screen_summary">Sembunyikan atau tampilkan komponen bagian komentar</string>
<string name="revanced_hide_comments_by_members_header_title">Sembunyikan Header \'Komentar oleh anggota\'</string>
<string name="revanced_hide_comments_by_members_header_summary_on">Header \'Komentar oleh anggota\' disembunyikan</string>
<string name="revanced_hide_comments_by_members_header_summary_off">Header \'Komentar oleh anggota\' disembunyikan</string>
<string name="revanced_hide_comments_section_title">Sembunyikan bagian komentar</string>
<string name="revanced_hide_comments_section_summary_on">Bagian komentar disembunyikan</string>
<string name="revanced_hide_comments_section_summary_off">Bagian komentar ditampilkan</string>
<string name="revanced_hide_comments_thanks_button_title">S\'bunyikan tmbl terima kasih</string>
<string name="revanced_hide_comments_create_a_short_button_title">Sembunyikan tombol \"Buat Short\"</string>
<string name="revanced_hide_comments_create_a_short_button_summary_on">Tombol \'Buat Short\' disembunyikan</string>
<string name="revanced_hide_comments_create_a_short_button_summary_off">Tombol \'Buat Short\' ditampilkan</string>
<string name="revanced_hide_comments_preview_comment_title">Sembunyikan komentar pratinjau</string>
<string name="revanced_hide_comments_preview_comment_summary_on">Komentar pratinjau disembunyikan</string>
<string name="revanced_hide_comments_preview_comment_summary_off">Komentar pratinjau ditampilkan</string>
<string name="revanced_hide_comments_thanks_button_title">Sembunyikan \'terima kasih\'</string>
<string name="revanced_hide_comments_thanks_button_summary_on">Tmbl terima kasih disembunyikan</string>
<string name="revanced_hide_comments_thanks_button_summary_off">Tmbl terima kasih ditampilkan</string>
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_title">Sembunyikan timestamp dan tombol emoji</string>
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_summary_on">Tombol timestamp dan emoji disembunyikan</string>
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_summary_off">Tombol timestamp dan emoji ditampilkan</string>
</patch>
<patch id="layout.hide.crowdfundingbox.CrowdfundingBoxResourcePatch">
<string name="revanced_hide_crowdfunding_box_title">Sembunyikan kotak penggalangan dana</string>
<string name="revanced_hide_crowdfunding_box_summary_on">Kotak penggalangan dana disembunyikan</string>
<string name="revanced_hide_crowdfunding_box_summary_off">Kotak penggalangan dana ditampilkan</string>
</patch>
<patch id="layout.hide.endscreencards.HideEndscreenCardsResourcePatch">
<string name="revanced_hide_endscreen_cards_title">Sembunyikan kartu layar akhir</string>
<string name="revanced_hide_endscreen_cards_summary_on">Kartu layar akhir disembunyikan</string>
<string name="revanced_hide_endscreen_cards_summary_off">Kartu layar akhir ditampilkan</string>
</patch>
<patch id="layout.hide.filterbar.HideFilterBarResourcePatch">
<string name="revanced_hide_filter_bar_screen_title">Bilah saring</string>
<string name="revanced_hide_filter_bar_screen_summary">Sembunyikan atau tampilkan bilah filter di feed, pencarian, dan video terkait</string>
<string name="revanced_hide_filter_bar_feed_in_feed_title">Sembunyikan di feed</string>
<string name="revanced_hide_filter_bar_feed_in_feed_summary_on">Sembunyikan di feed</string>
<string name="revanced_hide_filter_bar_feed_in_feed_summary_off">Tampilkan di feed</string>
<string name="revanced_hide_filter_bar_feed_in_search_title">Sembunyikan di pencarian</string>
<string name="revanced_hide_filter_bar_feed_in_search_summary_on">Disembunyikan di pencarian</string>
<string name="revanced_hide_filter_bar_feed_in_search_summary_off">Ditampilkan di pencarian</string>
<string name="revanced_hide_filter_bar_feed_in_related_videos_title">Sembunyikan di video terkait</string>
<string name="revanced_hide_filter_bar_feed_in_related_videos_summary_on">Disembunyikan di video terkait</string>
<string name="revanced_hide_filter_bar_feed_in_related_videos_summary_off">Ditampilkan di video terkait</string>
</patch>
<patch id="layout.hide.floatingmicrophone.HideFloatingMicrophoneButtonResourcePatch">
<string name="revanced_hide_floating_microphone_button_title">Sembunyikan tombol mikrofon mengambang</string>
<string name="revanced_hide_floating_microphone_button_summary_on">Tombol mikrofon disembunyikan</string>
<string name="revanced_hide_floating_microphone_button_summary_off">Tombol mikrofon ditampilkan</string>
</patch>
<patch id="layout.hide.fullscreenambientmode.DisableFullscreenAmbientModePatch">
<string name="revanced_disable_fullscreen_ambient_mode_title">Nonaktifkan mode ambien di layar penuh</string>
<string name="revanced_disable_fullscreen_ambient_mode_summary_on">Mide ambien dinonaktifkan</string>
<string name="revanced_disable_fullscreen_ambient_mode_summary_off">Mode ambien diaktifkan</string>
</patch>
<patch id="layout.hide.infocards.HideInfocardsResourcePatch">
<string name="revanced_hide_info_cards_title">Sembunyikan kartu info</string>
<string name="revanced_hide_info_cards_summary_on">Kartu info disembunyikan</string>
<string name="revanced_hide_info_cards_summary_off">Kartu info ditampilkan</string>
</patch>
<patch id="layout.hide.rollingnumber.DisableRollingNumberAnimationPatch">
<string name="revanced_disable_rolling_number_animations_title">Nonaktifkan animasi angka bergulir</string>
<string name="revanced_disable_rolling_number_animations_summary_on">Angka bergulir tidak dianimasikan</string>
<string name="revanced_disable_rolling_number_animations_summary_off">Angka bergulir dianimasikan</string>
</patch>
<patch id="layout.hide.seekbar.HideSeekbarPatch">
<string name="revanced_hide_seekbar_title">Sembunyikan seekbar di pemutar video</string>
<string name="revanced_hide_seekbar_summary_on">Seekbar pemutar video disembunyikan</string>
<string name="revanced_hide_seekbar_summary_off">Seekbar pemutar video ditampilkan</string>
<string name="revanced_hide_seekbar_thumbnail_title">Sembunyikan seekbar di thumbnail video</string>
<string name="revanced_hide_seekbar_thumbnail_summary_on">Seekbar thumbnail disembunyikan</string>
<string name="revanced_hide_seekbar_thumbnail_summary_off">Seekbar thumbnail ditampilkan</string>
</patch>
<patch id="layout.hide.shorts.HideShortsComponentsResourcePatch">
<!-- 'home' should be translated using the same localized wording YouTube displays for the home tab. -->
<string name="revanced_hide_shorts_home_title">Sembunyikan Shorts di feed beranda</string>
<string name="revanced_hide_shorts_home_summary_on">Shorts di feed beranda disembunyikan</string>
<string name="revanced_hide_shorts_home_summary_off">Shorts di feed beranda ditampilkan</string>
<!-- 'subscription' should be translated using the same localized wording YouTube displays for the subscription tab. -->
<string name="revanced_hide_shorts_subscriptions_title">Sembunyikan Shorts di feed subscription</string>
<string name="revanced_hide_shorts_subscriptions_summary_on">Shorts di feed subscription disembunyikan</string>
<string name="revanced_hide_shorts_subscriptions_summary_off">Shorts di feed subscription ditampilkan</string>
<string name="revanced_hide_shorts_search_title">Sembunyikan Shorts di hasil pencarian</string>
<string name="revanced_hide_shorts_search_summary_on">Shorts di hasil pencarian disembunyikan</string>
<string name="revanced_hide_shorts_search_summary_off">Shorts di hasil pencarian ditampilkan</string>
<!-- 'join' should be translated using the same localized wording YouTube displays for the button. -->
<string name="revanced_hide_shorts_join_button_title">Sembunyikan tombol gabung</string>
<string name="revanced_hide_shorts_join_button_summary_on">Tombol gabung disembunyikan</string>
<string name="revanced_hide_shorts_join_button_summary_off">Tombol gabung ditampilkan</string>
<!-- 'subscribe' should be translated using the same localized wording YouTube displays for the button. -->
<string name="revanced_hide_shorts_subscribe_button_title">Sembunyikan tombol berlangganan</string>
<string name="revanced_hide_shorts_subscribe_button_summary_on">Tombol berlangganan disembunyikan</string>
<string name="revanced_hide_shorts_subscribe_button_summary_off">Tombol berlangganan ditampilkan</string>
<string name="revanced_hide_shorts_paused_overlay_buttons_title">Sembunyikan tombol henti overlay</string>
<string name="revanced_hide_shorts_paused_overlay_buttons_summary_on">Tombol henti overlay disembunyikan</string>
<string name="revanced_hide_shorts_paused_overlay_buttons_summary_off">Tombol henti overlay ditampilkan</string>
<string name="revanced_hide_shorts_shop_button_title">Sembunyikan tombol belanja</string>
<string name="revanced_hide_shorts_shop_button_summary_on">Tombol belanja disembunyikan</string>
<string name="revanced_hide_shorts_shop_button_summary_off">Tombol belanja ditampilkan</string>
<string name="revanced_hide_shorts_super_thanks_button_title">Sembunyikan tombol super thanks</string>
<string name="revanced_hide_shorts_super_thanks_button_summary_on">Tombol super thanks disembunyikan</string>
<string name="revanced_hide_shorts_super_thanks_button_summary_off">Tombol super thanks ditampilkan</string>
<string name="revanced_hide_shorts_tagged_products_title">Sembunyikan produk yang ditag</string>
<string name="revanced_hide_shorts_tagged_products_summary_on">Produk yang ditag disembunyikan</string>
<string name="revanced_hide_shorts_tagged_products_summary_off">Produk yang ditag ditampilkan</string>
<string name="revanced_hide_shorts_location_label_title">Sembunyikan label lokasi</string>
<string name="revanced_hide_shorts_location_label_summary_on">Label lokasi disembunyikan</string>
<string name="revanced_hide_shorts_location_label_summary_off">Label lokasi ditampilkan</string>
<string name="revanced_hide_shorts_save_sound_button_title">Sembunyikan tombol simpan suara ke daftar putar</string>
<string name="revanced_hide_shorts_save_sound_button_summary_on">Simpan suara ke daftar putar disembunyikan</string>
<string name="revanced_hide_shorts_save_sound_button_summary_off">Simpan suara ke daftar putar ditampilkan</string>
<string name="revanced_hide_shorts_search_suggestions_title">Sembunyikan saran penelusuran</string>
<string name="revanced_hide_shorts_search_suggestions_summary_on">Saran penelusuran disembunyikan</string>
<string name="revanced_hide_shorts_search_suggestions_summary_off">Saran penelusuran ditampilkan</string>
<string name="revanced_hide_shorts_like_button_title">Sembunyikan tombol suka</string>
<string name="revanced_hide_shorts_like_button_summary_on">Tombol suka disembunyikan</string>
<string name="revanced_hide_shorts_like_button_summary_off">Tombol suka ditampilkan</string>
<string name="revanced_hide_shorts_dislike_button_title">Sembunyikan tombol tidak suka </string>
<string name="revanced_hide_shorts_dislike_button_summary_on">Tombol tidak suka disembunyikan</string>
<string name="revanced_hide_shorts_dislike_button_summary_off">Tombol tidak suka ditampilkan</string>
<string name="revanced_hide_shorts_comments_button_title">Sembunyikan tombol komentar</string>
<string name="revanced_hide_shorts_comments_button_summary_on">Tombol komentar disembunyikan</string>
<string name="revanced_hide_shorts_comments_button_summary_off">Tombol komentar ditampilkan</string>
<!-- 'remix' should be translated using the same localized wording YouTube displays for the button. -->
<string name="revanced_hide_shorts_remix_button_title">Sembunyikan tombol remix</string>
<string name="revanced_hide_shorts_remix_button_summary_on">Tombol remix disembunyikan</string>
<string name="revanced_hide_shorts_remix_button_summary_off">Tombol remix ditampilkan</string>
<!-- 'share' should be translated using the same localized wording YouTube displays for the button. -->
<string name="revanced_hide_shorts_video_title_title">S\'bunyikan judul video</string>
<string name="revanced_hide_shorts_share_button_title">Sembunyikan tombol bagikan</string>
<string name="revanced_hide_shorts_share_button_summary_on">Tombol bagikan disembunyikan</string>
<string name="revanced_hide_shorts_share_button_summary_off">Tombol bagikan ditampilkan</string>
<string name="revanced_hide_shorts_info_panel_title">Sembunyikan panel informasi</string>
<string name="revanced_hide_shorts_info_panel_summary_on">Panel informasi disembunyikan</string>
<string name="revanced_hide_shorts_info_panel_summary_off">Panel informasi ditampilkan</string>
<string name="revanced_hide_shorts_channel_bar_title">Sembunyikan bilah saluran</string>
<string name="revanced_hide_shorts_channel_bar_summary_on">Bilah saluran disembunyikan</string>
<string name="revanced_hide_shorts_channel_bar_summary_off">Bilah saluran ditampilkan</string>
<string name="revanced_hide_shorts_video_title_title">Sembunyikan judul video</string>
<string name="revanced_hide_shorts_video_title_summary_on">Judul disembunyikan</string>
<string name="revanced_hide_shorts_video_title_summary_off">Judul ditampilkan</string>
<string name="revanced_hide_shorts_sound_metadata_label_title">Sembunyikan label metadata suara</string>
<string name="revanced_hide_shorts_sound_metadata_label_summary_on">Label metadata disembunyikan</string>
<string name="revanced_hide_shorts_sound_metadata_label_summary_off">Label metadata ditampilkan</string>
<string name="revanced_hide_shorts_full_video_link_label_title">Sembunyikan label tautan video penuh</string>
<string name="revanced_hide_shorts_full_video_link_label_summary_on">Label tautan video disembunyikan</string>
<string name="revanced_hide_shorts_full_video_link_label_summary_off">Label tautan video ditampilkan</string>
<string name="revanced_hide_shorts_sound_button_title">Sembunyikan tombol suara</string>
<string name="revanced_hide_shorts_sound_button_summary_on">Tombol suara disembunyikan</string>
<string name="revanced_hide_shorts_sound_button_summary_off">Tombol suara ditampilkan</string>
<string name="revanced_hide_shorts_navigation_bar_title">Sembunyikan bilah navigasi</string>
<string name="revanced_hide_shorts_navigation_bar_summary_on">Bilah navigasi disembunyikan</string>
<string name="revanced_hide_shorts_navigation_bar_summary_off">Bilah navigasi ditampilkan</string>
</patch>
<patch id="layout.hide.suggestedvideoendscreen.DisableSuggestedVideoEndScreenResourcePatch">
<string name="revanced_disable_suggested_video_end_screen_title">Nonaktifkan layar akhir video yang disarankan</string>
<string name="revanced_disable_suggested_video_end_screen_summary_on">Video yang disarankan akan dinonaktifkan</string>
<string name="revanced_disable_suggested_video_end_screen_summary_off">Video yang disarankan akan ditampilkan</string>
</patch>
<patch id="layout.hide.time.HideTimestampPatch">
<string name="revanced_hide_timestamp_title">Sembunyikan timestamp video</string>
<string name="revanced_hide_timestamp_summary_on">Timestamp disembunyikan</string>
<string name="revanced_hide_timestamp_summary_off">Timestamp ditampilkan</string>
</patch>
<patch id="layout.panels.popup.PlayerPopupPanelsPatch">
<string name="revanced_hide_player_popup_panels_title">Sembunyikan panel popup pemutar</string>
<string name="revanced_hide_player_popup_panels_summary_on">Panel popup pemutar disembunyikan</string>
<string name="revanced_hide_player_popup_panels_summary_off">Panel popup pemutar ditampilkan</string>
</patch>
<patch id="layout.player.overlay.CustomPlayerOverlayOpacityResourcePatch">
<string name="revanced_player_overlay_opacity_title">Kapasitas overlay pemutar</string>
<string name="revanced_player_overlay_opacity_summary">Nilai opasitas antara 0-100, dimana 0 adalah transparan</string>
<string name="revanced_player_overlay_opacity_invalid_toast">Opasitas overlay pemutar harus di antara 0-100</string>
</patch>
<patch id="layout.returnyoutubedislike.ReturnYouTubeDislikeResourcePatch">
<string name="revanced_ryd_video_likes_hidden_by_video_owner">Tersembunyi</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_ryd_failure_connection_timeout">Dislike sementara tidak tersedia (waktu API habis)</string>
<string name="revanced_ryd_failure_connection_status_code">Dislike tidak tersedia (status %d)</string>
<string name="revanced_ryd_failure_client_rate_limit_requested">Dislike tidak tersedia (batas API klien tercapai)</string>
<string name="revanced_ryd_failure_generic">Dislike tidak tersedia (%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">Muat ulang video untuk vote Return YouTube Dislike</string>
<string name="revanced_ryd_enable_summary_on">Dislike ditampilkan</string>
<string name="revanced_ryd_enable_summary_off">Dislike tidak ditampilkan</string>
<string name="revanced_ryd_shorts_title">Tampilkan dislike di Shorts</string>
<string name="revanced_ryd_shorts_summary_on">Dislike ditampilkan di Shorts</string>
<string name="revanced_ryd_shorts_summary_on_disclaimer">Dislike ditampilan di Shorts\n\nKeterbatasan: Dislike mungkin tidak muncul di mode incognito</string>
<string name="revanced_ryd_shorts_summary_off">Dislike disembunyikan di Shorts</string>
<string name="revanced_ryd_dislike_percentage_title">Dislike sebagai persentase</string>
<string name="revanced_ryd_dislike_percentage_summary_on">Dislike ditampilkan sebagai persentase</string>
<string name="revanced_ryd_dislike_percentage_summary_off">Dislike ditampilkan sebagai angka</string>
<!-- Translations should use language similar to 'revanced_sb_enable_compact_skip_button' -->
<string name="revanced_ryd_compact_layout_title">Tombol like ringkas</string>
<string name="revanced_ryd_compact_layout_summary_on">Tombol like ditata untuk lebar minimum</string>
<string name="revanced_ryd_compact_layout_summary_off">Tombol like ditata untuk penampilan terbaik</string>
<string name="revanced_ryd_toast_on_connection_error_title">Tampilkan dialog jika API tidak tersedia</string>
<string name="revanced_ryd_toast_on_connection_error_summary_on">Dialog ditampilkan jika Return Youtube Dislike tidak tersedia</string>
<string name="revanced_ryd_toast_on_connection_error_summary_off">Dialog tidak ditampilkan jika Return Youtube Dislike tidak tersedia</string>
<string name="revanced_ryd_about">Tentang</string>
<string name="revanced_ryd_attribution_summary">Data disediakan oleh API Return YouTube Dislike. Tekan di sini untuk mempelajari lebih lanjut</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">Statistik API ReturnYoutubeDislike di perangkat ini</string>
<string name="revanced_ryd_statistics_getFetchCallResponseTimeAverage_title">Waktu respons API, rata-rata</string>
<string name="revanced_ryd_statistics_getFetchCallResponseTimeMin_title">Waktu respons API, minimum</string>
<string name="revanced_ryd_statistics_getFetchCallResponseTimeMax_title">Waktu respons API, maksimum</string>
<string name="revanced_ryd_statistics_getFetchCallResponseTimeLast_title">Waktu respons API, video terakhir</string>
<string name="revanced_ryd_statistics_getFetchCallResponseTimeLast_rate_limit_summary">Dislike sementara tidak tersedia - Pembatasan tarif API klien berlaku</string>
<string name="revanced_ryd_statistics_getFetchCallCount_title">API mengambil vote, jumlah dari panggilan</string>
<string name="revanced_ryd_statistics_getFetchCallCount_zero_summary">Tidak ada panggilan jaringan yang terjadi</string>
<string name="revanced_ryd_statistics_getFetchCallCount_non_zero_summary">%d panggilan jaringan terjadi</string>
<string name="revanced_ryd_statistics_getFetchCallNumberOfFailures_title">API mengambil vote, jumlah dari waktu habis</string>
<string name="revanced_ryd_statistics_getFetchCallNumberOfFailures_zero_summary">Tidak ada panggilan jaringan yang habis waktu</string>
<string name="revanced_ryd_statistics_getFetchCallNumberOfFailures_non_zero_summary">%d panggilan jaringan yang habis waktu</string>
<string name="revanced_ryd_statistics_getNumberOfRateLimitRequestsEncountered_title">Pembatasan tarif API klien</string>
<string name="revanced_ryd_statistics_getNumberOfRateLimitRequestsEncountered_zero_summary">Tidak ada pembatasan tarif klien terjadi</string>
<string name="revanced_ryd_statistics_getNumberOfRateLimitRequestsEncountered_non_zero_summary">Pembatasan tarif klien terjadi %d kali</string>
<string name="revanced_ryd_statistics_millisecond_text">%d milisekon</string>
</patch>
<patch id="layout.searchbar.WideSearchbarPatch">
<string name="revanced_wide_searchbar_title">Aktifkan bilah pencarian lebar</string>
<string name="revanced_wide_searchbar_summary_on">Bilah pencarian lebar diaktifkan</string>
<string name="revanced_wide_searchbar_summary_off">Bilah pencarian lebar dinonaktifkan</string>
</patch>
<patch id="layout.seekbar.RestoreOldSeekbarThumbnailsPatch">
<string name="revanced_restore_old_seekbar_thumbnails_title">Kembalikan thumbnail seekbar yang lama</string>
<string name="revanced_restore_old_seekbar_thumbnails_summary_on">Thumbnail seekbar akan muncul diatas seekbar</string>
<string name="revanced_restore_old_seekbar_thumbnails_summary_off">Thumbnail seekbar akan muncul di layar penuh</string>
</patch>
<patch id="layout.sponsorblock.SponsorBlockResourcePatch">
<string name="revanced_sb_enable_sb">Aktifkan SponsorBlock</string>
<string name="revanced_sb_enable_sb_sum">SponsorBlock adalah sistem crowd-source untuk melewatkan bagian yang mengganggu di video YouTube</string>
<string name="revanced_sb_appearance_category">Tampilan</string>
<string name="revanced_sb_enable_voting">Tampilkan tombol voting</string>
<string name="revanced_sb_enable_voting_sum_on">Tombol segmen voting ditampilkan</string>
<string name="revanced_sb_enable_voting_sum_off">Tombol segmen voting tidak ditampilkan</string>
<!-- Translations should use language similar to 'revanced_ryd_compact_layout_title' -->
<string name="revanced_sb_enable_compact_skip_button">Gunakan tombol lewati ringkas</string>
<string name="revanced_sb_enable_compact_skip_button_sum_on">Tombol lewati ditata untuk lebar minimum</string>
<string name="revanced_sb_enable_compact_skip_button_sum_off">Tombol gaya lewati untuk penampilan terbaik</string>
<string name="revanced_sb_enable_auto_hide_skip_segment_button">Tombol lewati disembunyikan secara otomatis</string>
<string name="revanced_sb_enable_auto_hide_skip_segment_button_sum_on">Tombol lewati disembunyikan setelah beberapa detik</string>
<string name="revanced_sb_enable_auto_hide_skip_segment_button_sum_off">Tombol lewati ditampilkan untuk seluruh segmen</string>
<string name="revanced_sb_general_skiptoast">Tampilkan dialog ketika melewati segmen otomatis</string>
<string name="revanced_sb_general_skiptoast_sum_on">Dialog ditampilkan saat segmen dilewati secara otomatis. Tekan di sini untuk melihat contohnya</string>
<string name="revanced_sb_general_skiptoast_sum_off">Dialog tidak ditampilkan. Tekan di sini untuk melihat contohnya</string>
<string name="revanced_sb_general_time_without">Tampilkan durasi video tanpa segmen</string>
<string name="revanced_sb_general_time_without_sum_on">Durasi video dikurangi semua segmen, ditampilkan dalam tanda kurung di samping durasi video penuh</string>
<string name="revanced_sb_general_time_without_sum_off">Durasi video penuh ditampilkan</string>
<string name="revanced_sb_create_segment_category">Membuat segmen baru</string>
<string name="revanced_sb_enable_create_segment">Tampilkan tombol buat segmen baru</string>
<string name="revanced_sb_enable_create_segment_sum_on">Tombol buat segmen baru ditampilkan</string>
<string name="revanced_sb_enable_create_segment_sum_off">Tombol buat segmen baru tidak ditampilkan</string>
<string name="revanced_sb_general_adjusting">Sesuaikan langkah segmen baru</string>
<string name="revanced_sb_general_adjusting_sum">Jumlah milidetik tombol penyesuaian waktu bergerak saat membuat segmen baru</string>
<string name="revanced_sb_general_adjusting_invalid">Nilainya harus berupa angka positif</string>
<string name="revanced_sb_guidelines_preference_title">Lihat pedoman</string>
<string name="revanced_sb_guidelines_preference_sum">Pedoman berisi aturan dan tips untuk membuat segmen baru</string>
<string name="revanced_sb_guidelines_popup_title">Ikuti pedoman</string>
<string name="revanced_sb_guidelines_popup_content">Bacalah panduan SponsorBlock sebelum membuat segmen baru</string>
<string name="revanced_sb_guidelines_popup_already_read">Sudah dibaca</string>
<string name="revanced_sb_guidelines_popup_open">Tunjukkan</string>
<string name="revanced_sb_general">Umum</string>
<string name="revanced_sb_toast_on_connection_error_title">Tampilkan pesan toast jika API tidak tersedia</string>
<string name="revanced_sb_toast_on_connection_error_summary_on">Toast ditampilkan jika SponsorBlock tidak tersedia</string>
<string name="revanced_sb_toast_on_connection_error_summary_off">Toast tidak ditampilkan jika SponsorBlock tidak tersedia</string>
<string name="revanced_sb_general_skipcount">Nyalakan pelacakan melewati hitungan</string>
<string name="revanced_sb_general_skipcount_sum_on">Mengizinkan leaderboard SponsorBlock mengetahui berapa banyak waktu yang diselamatkan. Sebuah pesan dikirim ke leaderboard setiap kali sebuah segmen dilewati</string>
<string name="revanced_sb_general_skipcount_sum_off">Pelacakan melewati hitungan tidak dinyalakan</string>
<string name="revanced_sb_general_min_duration">Durasi minimum segmen</string>
<string name="revanced_sb_general_uuid_sum">Ini harus dijaga kerahasiaannya. Seperti kata sandi dan tidak disarankan untuk dibagikan dengan siapa pun. Jika seseorang mendapatkan ini, mereka dapat menyamar sebagai Anda</string>
<string name="revanced_sb_general_api_url">Ubah URL API</string>
@@ -368,6 +841,7 @@
<string name="revanced_sb_about">Tentang</string>
</patch>
<patch id="layout.spoofappversion.SpoofAppVersionPatch">
<string name="revanced_spoof_app_version_user_dialog_message">Versi aplikasi akan dipalsukan ke versi lama YouTube.\n\nIni akan mengubah tampilan dan fitur aplikasi, tapi mungkin terjadi efek samping tidak diketahui.\n\nJika nanti dinonaktifkan, disarankan menghapus data aplikasi agar UI tidak kacau.</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 -->
<!-- 'RYD' is 'Return YouTube Dislike' -->
@@ -391,13 +865,18 @@
<string name="revanced_miniplayer_type_entry_4">Modern 1</string>
<string name="revanced_miniplayer_type_entry_5">Modern 2</string>
<string name="revanced_miniplayer_type_entry_6">Modern 3</string>
<string name="revanced_miniplayer_hide_subtext_title">S\'bunyikan subteks</string>
<string name="revanced_miniplayer_hide_subtext_title">Sembunyikan subteks</string>
<string name="revanced_miniplayer_opacity_title">Kelegapan hamparan</string>
</patch>
<patch id="layout.theme.ThemeBytecodePatch">
</patch>
<patch id="layout.theme.ThemeResourcePatch">
</patch>
<patch id="layout.thumbnails.BypassImageRegionRestrictions">
<string name="revanced_bypass_image_region_restrictions_title">Abaikan batasan daerah gambar</string>
<string name="revanced_bypass_image_region_restrictions_summary_on">Menggunakan sumber yt4.ggpht.com</string>
<string name="revanced_bypass_image_region_restrictions_summary_off">Menggunakan sumber gambar asli\n\nMengaktifkan ini akan memperbaiki gambar hilang di daerah tertentu</string>
</patch>
<patch id="layout.thumbnails.AlternativeThumbnailsPatch">
<!-- 'Home' should be translated using the same localized wording YouTube displays for the home tab. -->
<!-- 'Subscription' should be translated using the same localized wording YouTube displays for the subscription tab. -->
@@ -417,17 +896,26 @@
<patch id="misc.gms.GmsCoreSupportResourcePatch">
</patch>
<patch id="misc.links.BypassURLRedirectsPatch">
<string name="revanced_bypass_url_redirects_title">Abaikan pengalihan URL</string>
<string name="revanced_bypass_url_redirects_summary_on">Pengalihan URL diabaikan</string>
<string name="revanced_bypass_url_redirects_summary_off">Pengalihan URL tidak diabaikan</string>
</patch>
<patch id="misc.links.OpenLinksExternallyPatch">
</patch>
<patch id="misc.backgroundplayback.BackgroundPlaybackPatch">
<string name="revanced_background_playback_title">Putar di latar belakang</string>
</patch>
<patch id="misc.privacy.RemoveTrackingQueryParameterPatch">
</patch>
<patch id="misc.zoomhaptics.ZoomHapticsPatch">
</patch>
<patch id="video.quality.RememberVideoQualityPatch">
<string name="revanced_video_quality_default_entry_1">Mutu video otomatis</string>
<string name="revanced_remember_video_quality_last_selected_title">Ingat perubahan mutu video</string>
<string name="revanced_remember_video_quality_last_selected_summary_on">Perubahan mutu diatur ke semua video</string>
<string name="revanced_remember_video_quality_last_selected_summary_off">Perubahan mutu hanya diatur di video saat ini</string>
<string name="revanced_video_quality_default_wifi_title">Mutu video ke bawaan di jejaring Wi-Fi</string>
<string name="revanced_video_quality_default_mobile_title">Mutu video ke bawaan di jejaring seluler</string>
<string name="revanced_remember_video_quality_mobile">seluler</string>
<string name="revanced_remember_video_quality_wifi">wifi</string>
<string name="revanced_remember_video_quality_toast">Mutu bawaan %1$s diubah ke: %2$s</string>
</patch>
<patch id="video.speed.button.PlaybackSpeedButtonPatch">
<string name="revanced_playback_speed_dialog_button_summary_on">Tombol ditampilkan</string>
@@ -438,6 +926,9 @@
<patch id="video.speed.remember.RememberPlaybackSpeedPatch">
</patch>
<patch id="video.videoqualitymenu.RestoreOldVideoQualityMenuResourcePatch">
<string name="revanced_restore_old_video_quality_menu_title">Pulihkan menu lawas mutu video</string>
<string name="revanced_restore_old_video_quality_menu_summary_on">Menu lawas mutu video ditampilkan</string>
<string name="revanced_restore_old_video_quality_menu_summary_off">Menu lawas mutu video tidak ditampilkan</string>
</patch>
<patch id="interaction.seekbar.EnableSlideToSeekPatch">
</patch>
@@ -461,6 +952,9 @@
<patch id="chat.antidelete.ShowDeletedMessagesPatch">
</patch>
<patch id="chat.autoclaim.AutoClaimChannelPointsPatch">
<string name="revanced_auto_claim_channel_points_title">Klaim Poin Saluran secara otomatis</string>
<string name="revanced_auto_claim_channel_points_summary_on">Poin Saluran diklaim secara otomatis</string>
<string name="revanced_auto_claim_channel_points_summary_off">Poin Saluran tidak diklaim secara otomatis</string>
</patch>
<patch id="debug.DebugModePatch">
<!-- Twitch specific internal debug mode, and not the same as 'revanced_debug_title' -->

View File

@@ -1,6 +1,9 @@
<?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.
# General guidelines and information for translating
## Strings parameters can be reordered to allow more flexible translations if the grammar should be changed.
@@ -57,9 +60,12 @@
<!-- '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. -->
<!-- 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. -->
<!-- Translations of this should not be longer than the original English text, otherwise the text can be clipped and not entirely shown. -->
<!-- Translations of this should not be longer than the original English text, otherwise the text can be clipped and not entirely shown. -->
</patch>
<patch id="ad.general.HideAdsResourcePatch">
<!-- 'Visit store' should be translated with the same localized wording that YouTube displays. -->
<!-- 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="ad.getpremium.HideGetPremiumPatch">
</patch>
@@ -201,6 +207,8 @@
</patch>
<patch id="layout.theme.ThemeResourcePatch">
</patch>
<patch id="layout.thumbnails.BypassImageRegionRestrictions">
</patch>
<patch id="layout.thumbnails.AlternativeThumbnailsPatch">
<!-- 'Home' should be translated using the same localized wording YouTube displays for the home tab. -->
<!-- 'Subscription' should be translated using the same localized wording YouTube displays for the subscription tab. -->
@@ -220,8 +228,6 @@
</patch>
<patch id="misc.links.OpenLinksExternallyPatch">
</patch>
<patch id="misc.backgroundplayback.BackgroundPlaybackPatch">
</patch>
<patch id="misc.privacy.RemoveTrackingQueryParameterPatch">
</patch>
<patch id="misc.zoomhaptics.ZoomHapticsPatch">

View File

@@ -1,6 +1,9 @@
<?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.
# General guidelines and information for translating
## Strings parameters can be reordered to allow more flexible translations if the grammar should be changed.
@@ -239,9 +242,11 @@
<string name="revanced_hide_keyword_content_phrases_summary">Parole chiave e frasi da nascondere, separate da nuove linee\n\nLe parole con lettere maiuscole nel centro devono essere inserite con il budello (ie: iPhone, TikTok, LeBlanc)</string>
<string name="revanced_hide_keyword_content_about_title">Informazioni sul filtro delle parole chiave</string>
<string name="revanced_hide_keyword_content_about_summary">Home/Abbonamento/I risultati della ricerca sono filtrati per nascondere il contenuto che corrisponde alle frasi di parole chiave\n\nLimitazioni\n• Alcuni Shorts potrebbero non essere nascosti\n• Alcuni componenti dell\'interfaccia utente potrebbero non essere nascosti\n• La ricerca di una parola chiave potrebbe non mostrare alcun risultato</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">Parola chiave non valida. Impossibile utilizzare: \'%s\' come filtro</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_length">Parola chiave non valida. \'%1$s\' è minore di %2$d caratteri</string>
<string name="revanced_hide_keyword_toast_invalid_broad">Parola chiave \'$s\' nasconderà tutti i video</string>
<string name="revanced_hide_keyword_toast_invalid_broad">La parola chiave \'%s\' nasconderà tutti i video</string>
</patch>
<patch id="ad.general.HideAdsResourcePatch">
<string name="revanced_hide_general_ads_title">Nascondi gli annunci generali</string>
@@ -275,6 +280,7 @@
<string name="revanced_hide_merchandise_banners_title">Nascondi banner merchandise</string>
<string name="revanced_hide_merchandise_banners_summary_on">I banner merceologici sono nascosti</string>
<string name="revanced_hide_merchandise_banners_summary_off">Vengono mostrati i banner di merce</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">Nascondi gli annunci a schermo intero funziona solo con dispositivi più vecchi</string>
</patch>
<patch id="ad.getpremium.HideGetPremiumPatch">
@@ -389,7 +395,7 @@
<string name="revanced_hide_thanks_button_summary_on">Grazie pulsante è nascosto</string>
<string name="revanced_hide_thanks_button_summary_off">Il pulsante di ringraziamento è mostrato</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">Nascondi Clip</string>
<string name="revanced_hide_clip_button_summary_on">Il pulsante clip è nascosto</string>
<string name="revanced_hide_clip_button_summary_off">Il pulsante clip è mostrato</string>
<!-- 'Save' should be translated with the same localized wording that YouTube displays. -->
@@ -570,7 +576,7 @@
</patch>
<patch id="layout.hide.shorts.HideShortsComponentsResourcePatch">
<!-- 'home' should be translated using the same localized wording YouTube displays for the home tab. -->
<string name="revanced_hide_shorts_home_title">Nascondi Pantaloncini nel feed home</string>
<string name="revanced_hide_shorts_home_title">Nascondi Shorts nella scheda Home</string>
<string name="revanced_hide_shorts_home_summary_on">Pantaloncini nel feed domestico sono nascosti</string>
<string name="revanced_hide_shorts_home_summary_off">Vengono mostrati i pantaloncini in home feed</string>
<!-- 'subscription' should be translated using the same localized wording YouTube displays for the subscription tab. -->
@@ -579,7 +585,7 @@
<string name="revanced_hide_shorts_subscriptions_summary_off">Vengono mostrati i resort in abbonamento</string>
<string name="revanced_hide_shorts_search_title">Nascondi ricordi nei risultati di ricerca</string>
<string name="revanced_hide_shorts_search_summary_on">Shorts nei risultati di ricerca sono nascosti</string>
<string name="revanced_hide_shorts_search_summary_off">I resort nei risultati della ricerca sono mostrati</string>
<string name="revanced_hide_shorts_search_summary_off">Vengono visualizzati gli Shorts nei risultati di ricerca</string>
<!-- 'join' should be translated using the same localized wording YouTube displays for the button. -->
<string name="revanced_hide_shorts_join_button_title">Nascondi pulsante join</string>
<string name="revanced_hide_shorts_join_button_summary_on">Il pulsante Entra è nascosto</string>
@@ -984,6 +990,11 @@
<string name="revanced_seekbar_custom_color_value_summary">Il colore della barra di ricerca</string>
<string name="revanced_seekbar_custom_color_invalid">Valore colore seekbar non valido. Usare il valore predefinito.</string>
</patch>
<patch id="layout.thumbnails.BypassImageRegionRestrictions">
<string name="revanced_bypass_image_region_restrictions_title">Bypass restrizioni regione immagine</string>
<string name="revanced_bypass_image_region_restrictions_summary_on">Uso host immagine yt4.ggpht.com</string>
<string name="revanced_bypass_image_region_restrictions_summary_off">Usando l\'host immagine originale\n\nAbilitando questo si possono correggere le immagini mancanti bloccate in alcune regioni</string>
</patch>
<patch id="layout.thumbnails.AlternativeThumbnailsPatch">
<!-- 'Home' should be translated using the same localized wording YouTube displays for the home tab. -->
<string name="revanced_alt_thumbnail_home_title">Scheda home</string>
@@ -1049,10 +1060,6 @@
<string name="revanced_external_browser_summary_on">Apertura dei collegamenti esternamente</string>
<string name="revanced_external_browser_summary_off">Apertura link nell\'app</string>
</patch>
<patch id="misc.backgroundplayback.BackgroundPlaybackPatch">
<string name="revanced_background_playback_title">Riproduzione in background</string>
<string name="revanced_background_playback_summary">Questa impostazione può essere trovata in Impostazioni -&gt; Sfondo</string>
</patch>
<patch id="misc.privacy.RemoveTrackingQueryParameterPatch">
<string name="revanced_remove_tracking_query_parameter_title">Rimuovere il parametro di tracking query</string>
<string name="revanced_remove_tracking_query_parameter_summary_on">Il parametro di tracciamento della query viene rimosso dai link</string>
@@ -1111,7 +1118,7 @@
<string name="revanced_spoof_client_user_dialog_message">Disattivare questa impostazione potrebbe causare problemi di riproduzione video.</string>
<string name="revanced_spoof_client_use_ios_title">Spoof client per iOS</string>
<string name="revanced_spoof_client_use_ios_summary_on">Il client è attualmente spoofed per iOS\n\nGli effetti collaterali includono:\n• Nessun video HDR\n• La cronologia dell\'orologio potrebbe non funzionare\n• Potrebbero mancare qualità video più elevate\n• I flussi dal vivo non possono riprodurre solo l\'audio\n• I flussi dal vivo non sono disponibili su Android 8.0</string>
<string name="revanced_spoof_client_use_ios_summary_off">Il client è attualmente spoofed per Android VR\n\nGli effetti collaterali includono:\n• Nessun video HDR\n• I video per bambini non riproducono\n• I video in pausa possono riprendere casualmente\n• Bassa qualità Pantaloncini seekbar miniature\n• Il pulsante di azione del download è sempre nascosto\n• Le schede dello schermo finale sono sempre nascoste</string>
<string name="revanced_spoof_client_use_ios_summary_off">Il client è attualmente spoofed per Android VR\n\nGli effetti collaterali includono:\n• Nessun video HDR\n• I video per bambini non riproducono\n• I video in pausa possono riprendere casualmente\n• Bassa qualità Shorts seekbar miniature\n• Il pulsante di azione del download è sempre nascosto\n• Le schede dello schermo finale sono sempre nascoste</string>
<string name="revanced_spoof_client_storyboard_timeout">Le miniature del client non sono disponibili (timeout API)</string>
<string name="revanced_spoof_client_storyboard_io_exception">Miniature del client Spoof temporaneamente non disponibili: %s</string>
</patch>

View File

@@ -1,6 +1,9 @@
<?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.
# General guidelines and information for translating
## Strings parameters can be reordered to allow more flexible translations if the grammar should be changed.
@@ -58,9 +61,12 @@
<!-- '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. -->
<!-- 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. -->
<!-- Translations of this should not be longer than the original English text, otherwise the text can be clipped and not entirely shown. -->
<!-- Translations of this should not be longer than the original English text, otherwise the text can be clipped and not entirely shown. -->
</patch>
<patch id="ad.general.HideAdsResourcePatch">
<!-- 'Visit store' should be translated with the same localized wording that YouTube displays. -->
<!-- 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="ad.getpremium.HideGetPremiumPatch">
</patch>
@@ -254,6 +260,8 @@
</patch>
<patch id="layout.theme.ThemeResourcePatch">
</patch>
<patch id="layout.thumbnails.BypassImageRegionRestrictions">
</patch>
<patch id="layout.thumbnails.AlternativeThumbnailsPatch">
<!-- 'Home' should be translated using the same localized wording YouTube displays for the home tab. -->
<!-- 'Subscription' should be translated using the same localized wording YouTube displays for the subscription tab. -->
@@ -273,8 +281,6 @@
</patch>
<patch id="misc.links.OpenLinksExternallyPatch">
</patch>
<patch id="misc.backgroundplayback.BackgroundPlaybackPatch">
</patch>
<patch id="misc.privacy.RemoveTrackingQueryParameterPatch">
</patch>
<patch id="misc.zoomhaptics.ZoomHapticsPatch">

View File

@@ -1,6 +1,9 @@
<?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.
# General guidelines and information for translating
## Strings parameters can be reordered to allow more flexible translations if the grammar should be changed.
@@ -240,9 +243,11 @@
<string name="revanced_hide_keyword_content_phrases_summary">非表示にするキーワードとフレーズ 新しい行で区切られた\n\n中央に大文字を含む単語はケーシングで入力する必要があります (iPhone、TikTok、LeBlancなど)</string>
<string name="revanced_hide_keyword_content_about_title">キーワードフィルタリングについて</string>
<string name="revanced_hide_keyword_content_about_summary">ホーム/登録/検索結果は、キーワードフレーズに一致するコンテンツを非表示にするためにフィルタリングされます\n\n制限事項\n• 一部のショートは非表示にされない場合があります\n• 一部のUIコンポーネントが非表示にされない場合があります\n• キーワードを検索しても結果が表示されない場合があります</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>
<!-- 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_length">無効なキーワードです。\'%1$s\' は %2$d 文字未満です</string>
<string name="revanced_hide_keyword_toast_invalid_broad">キーワード \'$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>
@@ -276,6 +281,7 @@
<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>
<!-- 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">
@@ -390,7 +396,6 @@
<string name="revanced_hide_thanks_button_summary_on">「Thanks」ボタンは非表示です</string>
<string name="revanced_hide_thanks_button_summary_off">「Thanks」ボタンは表示されます</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_summary_on">クリップボタンは非表示です</string>
<string name="revanced_hide_clip_button_summary_off">クリップボタンを表示する</string>
<!-- 'Save' should be translated with the same localized wording that YouTube displays. -->
@@ -984,6 +989,10 @@
<string name="revanced_seekbar_custom_color_value_summary">シークバーの色</string>
<string name="revanced_seekbar_custom_color_invalid">シークバーの色の値が無効です。デフォルト値を使用してください。</string>
</patch>
<patch id="layout.thumbnails.BypassImageRegionRestrictions">
<string name="revanced_bypass_image_region_restrictions_title">画像領域の制限をバイパスする</string>
<string name="revanced_bypass_image_region_restrictions_summary_on">イメージホストの使用 yt4.ggpht.com</string>
</patch>
<patch id="layout.thumbnails.AlternativeThumbnailsPatch">
<!-- 'Home' should be translated using the same localized wording YouTube displays for the home tab. -->
<string name="revanced_alt_thumbnail_home_title">ホームタブ</string>
@@ -1049,10 +1058,6 @@
<string name="revanced_external_browser_summary_on">外部リンクを開く</string>
<string name="revanced_external_browser_summary_off">アプリ内でリンクを開く</string>
</patch>
<patch id="misc.backgroundplayback.BackgroundPlaybackPatch">
<string name="revanced_background_playback_title">バックグラウンド再生</string>
<string name="revanced_background_playback_summary">この設定は設定 -&gt; 背景 で見つけることができます</string>
</patch>
<patch id="misc.privacy.RemoveTrackingQueryParameterPatch">
<string name="revanced_remove_tracking_query_parameter_title">トラッキングクエリパラメータを削除</string>
<string name="revanced_remove_tracking_query_parameter_summary_on">トラッキングクエリパラメータがリンクから削除されました</string>

View File

@@ -1,6 +1,9 @@
<?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.
# General guidelines and information for translating
## Strings parameters can be reordered to allow more flexible translations if the grammar should be changed.
@@ -54,9 +57,12 @@
<!-- '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. -->
<!-- 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. -->
<!-- Translations of this should not be longer than the original English text, otherwise the text can be clipped and not entirely shown. -->
<!-- Translations of this should not be longer than the original English text, otherwise the text can be clipped and not entirely shown. -->
</patch>
<patch id="ad.general.HideAdsResourcePatch">
<!-- 'Visit store' should be translated with the same localized wording that YouTube displays. -->
<!-- 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="ad.getpremium.HideGetPremiumPatch">
</patch>
@@ -192,6 +198,8 @@
</patch>
<patch id="layout.theme.ThemeResourcePatch">
</patch>
<patch id="layout.thumbnails.BypassImageRegionRestrictions">
</patch>
<patch id="layout.thumbnails.AlternativeThumbnailsPatch">
<!-- 'Home' should be translated using the same localized wording YouTube displays for the home tab. -->
<!-- 'Subscription' should be translated using the same localized wording YouTube displays for the subscription tab. -->
@@ -210,8 +218,6 @@
</patch>
<patch id="misc.links.OpenLinksExternallyPatch">
</patch>
<patch id="misc.backgroundplayback.BackgroundPlaybackPatch">
</patch>
<patch id="misc.privacy.RemoveTrackingQueryParameterPatch">
</patch>
<patch id="misc.zoomhaptics.ZoomHapticsPatch">

View File

@@ -1,6 +1,9 @@
<?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.
# General guidelines and information for translating
## Strings parameters can be reordered to allow more flexible translations if the grammar should be changed.
@@ -55,9 +58,12 @@
<!-- '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. -->
<!-- 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. -->
<!-- Translations of this should not be longer than the original English text, otherwise the text can be clipped and not entirely shown. -->
<!-- Translations of this should not be longer than the original English text, otherwise the text can be clipped and not entirely shown. -->
</patch>
<patch id="ad.general.HideAdsResourcePatch">
<!-- 'Visit store' should be translated with the same localized wording that YouTube displays. -->
<!-- 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="ad.getpremium.HideGetPremiumPatch">
</patch>
@@ -199,6 +205,8 @@
</patch>
<patch id="layout.theme.ThemeResourcePatch">
</patch>
<patch id="layout.thumbnails.BypassImageRegionRestrictions">
</patch>
<patch id="layout.thumbnails.AlternativeThumbnailsPatch">
<!-- 'Home' should be translated using the same localized wording YouTube displays for the home tab. -->
<!-- 'Subscription' should be translated using the same localized wording YouTube displays for the subscription tab. -->
@@ -218,8 +226,6 @@
</patch>
<patch id="misc.links.OpenLinksExternallyPatch">
</patch>
<patch id="misc.backgroundplayback.BackgroundPlaybackPatch">
</patch>
<patch id="misc.privacy.RemoveTrackingQueryParameterPatch">
</patch>
<patch id="misc.zoomhaptics.ZoomHapticsPatch">

View File

@@ -1,6 +1,9 @@
<?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.
# General guidelines and information for translating
## Strings parameters can be reordered to allow more flexible translations if the grammar should be changed.
@@ -58,9 +61,12 @@
<!-- '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. -->
<!-- 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. -->
<!-- Translations of this should not be longer than the original English text, otherwise the text can be clipped and not entirely shown. -->
<!-- Translations of this should not be longer than the original English text, otherwise the text can be clipped and not entirely shown. -->
</patch>
<patch id="ad.general.HideAdsResourcePatch">
<!-- 'Visit store' should be translated with the same localized wording that YouTube displays. -->
<!-- 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="ad.getpremium.HideGetPremiumPatch">
</patch>
@@ -197,6 +203,8 @@
</patch>
<patch id="layout.theme.ThemeResourcePatch">
</patch>
<patch id="layout.thumbnails.BypassImageRegionRestrictions">
</patch>
<patch id="layout.thumbnails.AlternativeThumbnailsPatch">
<!-- 'Home' should be translated using the same localized wording YouTube displays for the home tab. -->
<!-- 'Subscription' should be translated using the same localized wording YouTube displays for the subscription tab. -->
@@ -216,8 +224,6 @@
</patch>
<patch id="misc.links.OpenLinksExternallyPatch">
</patch>
<patch id="misc.backgroundplayback.BackgroundPlaybackPatch">
</patch>
<patch id="misc.privacy.RemoveTrackingQueryParameterPatch">
</patch>
<patch id="misc.zoomhaptics.ZoomHapticsPatch">

View File

@@ -1,6 +1,9 @@
<?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.
# General guidelines and information for translating
## Strings parameters can be reordered to allow more flexible translations if the grammar should be changed.
@@ -54,9 +57,12 @@
<!-- '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. -->
<!-- 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. -->
<!-- Translations of this should not be longer than the original English text, otherwise the text can be clipped and not entirely shown. -->
<!-- Translations of this should not be longer than the original English text, otherwise the text can be clipped and not entirely shown. -->
</patch>
<patch id="ad.general.HideAdsResourcePatch">
<!-- 'Visit store' should be translated with the same localized wording that YouTube displays. -->
<!-- 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="ad.getpremium.HideGetPremiumPatch">
</patch>
@@ -192,6 +198,8 @@
</patch>
<patch id="layout.theme.ThemeResourcePatch">
</patch>
<patch id="layout.thumbnails.BypassImageRegionRestrictions">
</patch>
<patch id="layout.thumbnails.AlternativeThumbnailsPatch">
<!-- 'Home' should be translated using the same localized wording YouTube displays for the home tab. -->
<!-- 'Subscription' should be translated using the same localized wording YouTube displays for the subscription tab. -->
@@ -210,8 +218,6 @@
</patch>
<patch id="misc.links.OpenLinksExternallyPatch">
</patch>
<patch id="misc.backgroundplayback.BackgroundPlaybackPatch">
</patch>
<patch id="misc.privacy.RemoveTrackingQueryParameterPatch">
</patch>
<patch id="misc.zoomhaptics.ZoomHapticsPatch">

View File

@@ -1,6 +1,9 @@
<?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.
# General guidelines and information for translating
## Strings parameters can be reordered to allow more flexible translations if the grammar should be changed.
@@ -43,9 +46,9 @@
</patch>
<patch id="misc.gms.BaseGmsCoreSupportResourcePatch">
<!-- 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_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에 백그라운드에서 실행할 수 있는 권한이 없습니다\n\n이 기기에 대한 \"Don\'t kill my app\" 가이드를 읽어보고, MicroG 설치 지침을 적용하세요\n\n앱이 실행하려면 이 과정이 필요합니다</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_continue_text">계속하기</string>
@@ -67,7 +70,7 @@
<string name="revanced_settings_screen_02_alt_thumbnails_title">대체 썸네일</string>
<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_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>
@@ -93,8 +96,8 @@
</patch>
<patch id="layout.hide.general.HideLayoutComponentsPatch">
<string name="revanced_disable_like_subscribe_glow_title">빛나는 \'좋아요\' / \'구독\' 버튼 비활성화하기</string>
<string name="revanced_disable_like_subscribe_glow_summary_on">동영상에서 \'Like (좋아요)\' 또는 \'Subscribe (구독)\' 버튼이 언급되었을 때, 버튼에 빛나는 애니메이션을 적용하지 않습니다\n• 일부 언어는 아직 지원되지 않습니다</string>
<string name="revanced_disable_like_subscribe_glow_summary_off">동영상에서 \'Like (좋아요)\' 또는 \'Subscribe (구독)\' 버튼이 언급되었을 때, 버튼에 빛나는 애니메이션을 적용합니다.\n• 일부 언어는 아직 지원되지 않습니다</string>
<string name="revanced_disable_like_subscribe_glow_summary_on">동영상에서 \'Like (좋아요)\' 또는 \'Subscribe (구독)\' 버튼이 언급되었을 때, 해당 버튼에 빛나는 애니메이션을 적용하지 않습니다\n• 일부 언어는 아직 지원되지 않습니다</string>
<string name="revanced_disable_like_subscribe_glow_summary_off">동영상에서 \'Like (좋아요)\' 또는 \'Subscribe (구독)\' 버튼이 언급되었을 때, 해당 버튼에 빛나는 애니메이션을 적용합니다\n• 일부 언어는 아직 지원되지 않습니다</string>
<string name="revanced_hide_gray_separator_title">회색 구분선 숨기기</string>
<string name="revanced_hide_gray_separator_summary_on">동영상들 사이에서 회색 구분선이 숨겨집니다</string>
<string name="revanced_hide_gray_separator_summary_off">동영상들 사이에서 회색 구분선이 노출됩니다</string>
@@ -208,9 +211,9 @@
<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_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_transcript_section_title">스크립트 섹션 숨기기</string>
<string name="revanced_hide_transcript_section_summary_on">스크립트 섹션이 숨겨집니다</string>
<string name="revanced_hide_transcript_section_summary_off">스크립트 섹션이 노출됩니다</string>
@@ -223,7 +226,7 @@
<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">필터링할 컴포넌트 패스 빌더 문자열을 줄바꿈으로 구분하여 설정합니다\n• 컴포넌트 패스 빌더 문자열은 숨겨질 레이아웃 구성요소를 식별하는 기술적인 이름입니다</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>
@@ -241,10 +244,12 @@
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영어 키워드는 대소문자를 구분하여 입력해야 합니다 (예: 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">홈 피드 / 구독 피드 / 검색 결과에서 키워드와 일치하는 콘텐츠가 숨겨집니다\n\n알려진 문제점:\n• 일부 Shorts는 숨겨지지 않을 수 있습니다\n• 일부 화면 구성요소가 숨겨지지 않을 수 있습니다\n• 필터링 키워드를 검색하면 결과가 표시되지 않을 수 있습니다</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>
<!-- 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_length">\'%1$s\'는 잘못된 키워드입니다. 필터링 키워드는 %2$d 글자 이상이어야 합니다.</string>
<string name="revanced_hide_keyword_toast_invalid_broad">키워드 \'$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>
@@ -253,9 +258,9 @@
<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_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_title">버튼형 광고 숨기기</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>
@@ -275,9 +280,10 @@
<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_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_title">품 배너 숨기기</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">
@@ -294,12 +300,10 @@
<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_summary_on">버튼을 표시합니다.
버튼을 눌러서 동영상 URL을 복사할 수 있습니다. 길게 누르면 타임스탬프를 표기한 동영상 URL이 복사됩니다</string>
<string name="revanced_copy_video_url_summary_on">버튼을 표시합니다. \n버튼을 눌러서 동영상 URL을 복사할 수 있습니다. 길게 누르면 타임스탬프를 표기한 동영상 URL이 복사됩니다</string>
<string name="revanced_copy_video_url_summary_off">버튼을 표시하지 않습니다</string>
<string name="revanced_copy_video_url_timestamp_title">타임스탬프를 표기한 URL 복사 버튼 표시하기</string>
<string name="revanced_copy_video_url_timestamp_summary_on">버튼을 표시합니다.
버튼을 눌러서 타임스탬프를 표기한 동영상 URL을 복사할 수 있습니다. 길게 누르면 타임스탬프를 표기하지 않은 동영상 URL이 복사됩니다</string>
<string name="revanced_copy_video_url_timestamp_summary_on">버튼을 표시합니다. \n버튼을 눌러서 타임스탬프를 표기한 동영상 URL을 복사할 수 있습니다. 길게 누르면 타임스탬프를 표기하지 않은 동영상 URL이 복사됩니다</string>
<string name="revanced_copy_video_url_timestamp_summary_off">버튼을 표시하지 않습니다</string>
</patch>
<patch id="interaction.dialog.RemoveViewerDiscretionDialogPatch">
@@ -310,7 +314,7 @@
</patch>
<patch id="interaction.downloads.DownloadsResourcePatch">
<string name="revanced_external_downloader_screen_title">외부 다운로드</string>
<string name="revanced_external_downloader_screen_summary">외부 다운로더 설정할 수 있습니다</string>
<string name="revanced_external_downloader_screen_summary">외부 다운로더 설정할 수 있습니다</string>
<string name="revanced_external_downloader_title">외부 다운로드 버튼 표시하기</string>
<string name="revanced_external_downloader_summary_on">플레이어에서 외부 다운로드 버튼을 표시합니다</string>
<string name="revanced_external_downloader_summary_off">플레이어에서 외부 다운로드 버튼을 표시하지 않습니다</string>
@@ -320,12 +324,12 @@
<string name="revanced_external_downloader_action_button_summary_off">오프라인 저장 버튼으로 기본 다운로더를 실행할 수 있습니다 (YouTube Premium 기능)</string>
<string name="revanced_external_downloader_name_title">외부 다운로더 패키지명</string>
<string name="revanced_external_downloader_name_summary">NewPipe 또는 Seal와 같은 설치된 외부 다운로더 패키지명입니다</string>
<string name="revanced_external_downloader_not_installed_warning">%s은(는) 설치되어 있지 않습니다. 설치하세요</string>
<string name="revanced_external_downloader_not_installed_warning">%s 설치되어 있지 않습니다. 설치하세요</string>
</patch>
<patch id="interaction.seekbar.DisablePreciseSeekingGesturePatch">
<string name="revanced_disable_precise_seeking_gesture_title">정확한 탐색 제스처 비활성화하기</string>
<string name="revanced_disable_precise_seeking_gesture_summary_on">정확한 탐색 제스처를 비활성화합니다\n• 필름 스트립 오버레이</string>
<string name="revanced_disable_precise_seeking_gesture_summary_off">정확한 탐색 제스처를 활성화합니다\n• 필름 스트립 오버레이</string>
<string name="revanced_disable_precise_seeking_gesture_title">세밀하게 보면서 탐색 제스처 비활성화하기</string>
<string name="revanced_disable_precise_seeking_gesture_summary_on">세밀하게 보면서 탐색 제스처를 비활성화합니다\n• 필름 스트립 오버레이</string>
<string name="revanced_disable_precise_seeking_gesture_summary_off">세밀하게 보면서 탐색 제스처를 활성화합니다\n• 필름 스트립 오버레이</string>
</patch>
<patch id="interaction.seekbar.EnableSeekbarTappingPatch">
<string name="revanced_seekbar_tapping_title">재생바 터치 조작 활성화하기</string>
@@ -346,8 +350,8 @@
<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>
<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">스와이프 제스처로 밝기가 0이 되면 자동 밝기를 활성화합니다</string>
<string name="revanced_swipe_lowest_value_enable_auto_brightness_summary_off">스와이프 제스처로 밝기가 0이 되더라도 자동 밝기를 활성화하지 않습니다</string>
@@ -491,9 +495,9 @@
<string name="revanced_hide_player_flyout_watch_in_vr_summary_off">VR로 보기 메뉴가 노출됩니다</string>
</patch>
<patch id="layout.buttons.player.hide.HidePlayerButtonsPatch">
<string name="revanced_hide_player_buttons_title">이전 동영상 &amp; 다음 동영상 버튼 숨기기</string>
<string name="revanced_hide_player_buttons_summary_on">이전 동영상 &amp; 다음 동영상 버튼이 숨겨집니다</string>
<string name="revanced_hide_player_buttons_summary_off">이전 동영상 &amp; 다음 동영상 버튼이 노출됩니다</string>
<string name="revanced_hide_player_buttons_title">이전 &amp; 다음 동영상 버튼 숨기기</string>
<string name="revanced_hide_player_buttons_summary_on">이전 &amp; 다음 동영상 버튼이 숨겨집니다</string>
<string name="revanced_hide_player_buttons_summary_off">이전 &amp; 다음 동영상 버튼이 노출됩니다</string>
</patch>
<patch id="layout.hide.albumcards.AlbumCardsResourcePatch">
<string name="revanced_hide_album_cards_title">음악 앨범 카드 숨기기</string>
@@ -524,8 +528,8 @@
</patch>
<patch id="layout.hide.crowdfundingbox.CrowdfundingBoxResourcePatch">
<string name="revanced_hide_crowdfunding_box_title">크라우드 펀딩 박스 숨기기</string>
<string name="revanced_hide_crowdfunding_box_summary_on">플레이어 하단에서 크라우드펀딩 박스가 숨겨집니다</string>
<string name="revanced_hide_crowdfunding_box_summary_off">플레이어 하단에서 크라우드펀딩 박스가 노출됩니다</string>
<string name="revanced_hide_crowdfunding_box_summary_on">플레이어 하단에서 크라우드 펀딩 박스가 숨겨집니다</string>
<string name="revanced_hide_crowdfunding_box_summary_off">플레이어 하단에서 크라우드 펀딩 박스가 노출됩니다</string>
</patch>
<patch id="layout.hide.endscreencards.HideEndscreenCardsResourcePatch">
<string name="revanced_hide_endscreen_cards_title">최종 화면 카드 숨기기</string>
@@ -561,9 +565,9 @@
<string name="revanced_hide_info_cards_summary_off">정보 카드가 노출됩니다</string>
</patch>
<patch id="layout.hide.rollingnumber.DisableRollingNumberAnimationPatch">
<string name="revanced_disable_rolling_number_animations_title">실시간 조회수 카운팅 애니메이션 비활성화하기</string>
<string name="revanced_disable_rolling_number_animations_summary_on">실시간 조회수 카운팅 애니메이션을 비활성화합니다</string>
<string name="revanced_disable_rolling_number_animations_summary_off">실시간 조회수 카운팅 애니메이션을 활성화합니다</string>
<string name="revanced_disable_rolling_number_animations_title">롤링 넘버 애니메이션 비활성화하기</string>
<string name="revanced_disable_rolling_number_animations_summary_on">다음 롤링 넘버 애니메이션을 비활성화합니다\n• 조회수, 시청자 수 롤링 애니메이션 (플레이어 하단)\n• 좋아요 개수, 조회수 롤링 애니메이션 (동영상 설명)</string>
<string name="revanced_disable_rolling_number_animations_summary_off">다음 롤링 넘버 애니메이션을 활성화합니다\n• 조회수, 시청자 수 롤링 애니메이션 (플레이어 하단)\n• 좋아요 개수, 조회수 롤링 애니메이션 (동영상 설명)</string>
</patch>
<patch id="layout.hide.seekbar.HideSeekbarPatch">
<string name="revanced_hide_seekbar_title">동영상 플레이어 재생바 숨기기</string>
@@ -643,7 +647,7 @@
<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_full_video_link_label_title">관련 동영상 링크 라벨 숨기기</string>
<string name="revanced_hide_shorts_full_video_link_label_title">FULL 또는 관련 동영상 링크 라벨 숨기기</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>
@@ -665,10 +669,8 @@
</patch>
<patch id="layout.panels.popup.PlayerPopupPanelsPatch">
<string name="revanced_hide_player_popup_panels_title">플레이어 팝업 패널 숨기기</string>
<string name="revanced_hide_player_popup_panels_summary_on">플레이어 팝업 패널이 숨겨집니다
• 재생목록, 실시간 채팅, etc.</string>
<string name="revanced_hide_player_popup_panels_summary_off">플레이어 팝업 패널이 노출됩니다
• 재생목록, 실시간 채팅, etc.</string>
<string name="revanced_hide_player_popup_panels_summary_on">플레이어 팝업 패널이 숨겨집니다\n• 재생목록, 실시간 채팅, etc.</string>
<string name="revanced_hide_player_popup_panels_summary_off">플레이어 팝업 패널이 노출됩니다\n• 재생목록, 실시간 채팅, etc.</string>
</patch>
<patch id="layout.player.overlay.CustomPlayerOverlayOpacityResourcePatch">
<string name="revanced_player_overlay_opacity_title">플레이어 오버레이 불투명도</string>
@@ -862,12 +864,12 @@
<string name="revanced_sb_vote_downvote">싫어요</string>
<string name="revanced_sb_vote_category">카테고리 변경</string>
<string name="revanced_sb_vote_no_segments">투표할 구간이 없습니다</string>
<string name="revanced_sb_new_segment_choose_category">구간 카테고리를 선택해주세요</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">새 SponsorBlock 구간</string>
<!-- Do not rearrange the (hour):(minute):second) time format operators here.
YT shows the same seekbar time format for all languages, and this string is confirming the segment time as it appears in the seekbar. -->
<string name="revanced_sb_new_segment_mark_time_as_question">%1$02d:%2$02d:%3$03d을 구간의 시작 또는 끝으로 설정할까요?</string>
<string name="revanced_sb_new_segment_mark_time_as_question">%1$02d:%2$02d:%3$03d을 구간의 시작 또는 끝으로 설정하겠습니까?</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>
@@ -878,8 +880,8 @@
YT shows the same seekbar time format for all languages, and this string is confirming the segment time as it appears in the seekbar. -->
<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_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>
<string name="revanced_sb_new_segment_mark_locations_first">먼저 재생바에서 시작 지점과 끝 지점을 표시세요</string>
<string name="revanced_sb_new_segment_preview_segment_first">구간 미리 보기 버튼을 눌러서 설정한 구간이 정상적으로 건너뛰기가 되는지 확인세요</string>
<string name="revanced_sb_new_segment_edit_by_hand_title">직접 시간 구간 편집하기</string>
<string name="revanced_sb_new_segment_edit_by_hand_content">구간의 시작이나 끝을 편집하겠습니까?</string>
<string name="revanced_sb_new_segment_edit_by_hand_parse_error">잘못된 시간 형식입니다</string>
@@ -930,7 +932,7 @@
</patch>
<patch id="layout.startpage.ChangeStartPagePatch">
<string name="revanced_start_page_title">앱 시작 페이지 변경하기</string>
<string name="revanced_start_page_entry_0">기본</string>
<string name="revanced_start_page_entry_0">기본</string>
<!-- 'Home' should be translated using the same localized wording YouTube displays for the home tab. -->
<string name="revanced_start_page_entry_1"></string>
<string name="revanced_start_page_entry_2">검색</string>
@@ -992,6 +994,11 @@
<string name="revanced_seekbar_custom_color_value_summary">재생바 색상</string>
<string name="revanced_seekbar_custom_color_invalid">잘못된 재생바 색상 값이므로 기본값으로 초기화합니다</string>
</patch>
<patch id="layout.thumbnails.BypassImageRegionRestrictions">
<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이 설정을 활성화하면 일부 국가에서 차단된 이미지를 수신할 수 있습니다 (채널 프로필 사진, 커뮤니티 게시물 이미지, etc.)</string>
</patch>
<patch id="layout.thumbnails.AlternativeThumbnailsPatch">
<!-- 'Home' should be translated using the same localized wording YouTube displays for the home tab. -->
<string name="revanced_alt_thumbnail_home_title">홈 탭</string>
@@ -1057,10 +1064,6 @@
<string name="revanced_external_browser_summary_on">앱 내에서 외부 링크를 열 때, 외부 브라우저를 사용합니다</string>
<string name="revanced_external_browser_summary_off">앱 내에서 외부 링크를 열 때, 내부 브라우저를 사용합니다</string>
</patch>
<patch id="misc.backgroundplayback.BackgroundPlaybackPatch">
<string name="revanced_background_playback_title">백그라운드 재생</string>
<string name="revanced_background_playback_summary">이 설정은 YouTube 설정에서 변경할 수 있습니다 → 백그라운드</string>
</patch>
<patch id="misc.privacy.RemoveTrackingQueryParameterPatch">
<string name="revanced_remove_tracking_query_parameter_title">추적 쿼리를 제거한 링크 공유하기</string>
<string name="revanced_remove_tracking_query_parameter_summary_on">링크를 공유할 때, URL에서 추적 쿼리 매개변수를 제거합니다 (URL의 뒷부분 \'?si=...\' 이 제거됨)</string>
@@ -1084,7 +1087,7 @@
</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">
@@ -1115,11 +1118,11 @@
<string name="revanced_spoof_client_screen_summary">클라이언트를 변경하여 재생 문제를 방지할 수 있습니다</string>
<string name="revanced_spoof_client_title">클라이언트 변경하기</string>
<string name="revanced_spoof_client_summary_on">클라이언트를 변경합니다</string>
<string name="revanced_spoof_client_summary_off">클라이언트를 변경하지 않습니다. 동영상 재생되지 않을 수 있습니다</string>
<string name="revanced_spoof_client_summary_off">클라이언트를 변경하지 않습니다\n동영상 재생 문제가 발생할 수 있습니다</string>
<string name="revanced_spoof_client_user_dialog_message">이 설정을 비활성화하면 동영상 재생 문제가 발생할 수 있습니다</string>
<string name="revanced_spoof_client_use_ios_title">iOS 클라이언트로 변경하기</string>
<string name="revanced_spoof_client_use_ios_summary_on">클라이언트를 iOS 클라이언트로 변경합니다\n\n알려진 문제점:\n• HDR 동영상을 재생할 수 없습니다\n• 브랜드 계정 사용자는 시청 기록을 사용할 수 없습니다\n• 동영상이 초고화질 동영상 값으로 재생되지 않을 수 있습니다 (1440p, 2160p)\n• 실시간 스트림에서 \'백그라운드 재생\'을 사용할 수 없습니다\n• Android 8.0 사용자는 실시간 스트림을 재생할 수 없습니다</string>
<string name="revanced_spoof_client_use_ios_summary_off">클라이언트를 Android VR 클라이언트로 변경합니다\n\n알려진 문제점: \n• HDR 동영상을 재생할 수 없습니다\n- Kids 동영상을 재생할 수 없습니다\n• 일시 정지된 동영상이 갑자기 다시 시작될 수 있습니다\n• 저화질 Shorts 재생바 썸네일이 표시됩니다\n• 플레이어 하단에서 오프라인 저장 버튼이 표시되지 않습니다\n• 최종 화면 카드가 표되지 않습니다</string>
<string name="revanced_spoof_client_use_ios_summary_off">클라이언트를 Android VR 클라이언트로 변경합니다\n\n알려진 문제점: \n• HDR 동영상을 재생할 수 없습니다\n- Kids 동영상을 재생할 수 없습니다\n• 일시 정지된 동영상이 갑자기 다시 시작될 수 있습니다\n• 저화질 Shorts 재생바 썸네일이 표시됩니다\n• 플레이어 하단에서 오프라인 저장 버튼이 표시되지 않습니다\n• 최종 화면 카드가 표되지 않습니다</string>
<string name="revanced_spoof_client_storyboard_timeout">클라이언트 썸네일을 사용할 수 없습니다 (응답 시간 초과)</string>
<string name="revanced_spoof_client_storyboard_io_exception">클라이언트 썸네일을 일시적으로 사용할 수 없습니다: %s</string>
</patch>
@@ -1148,8 +1151,8 @@
<string name="revanced_embedded_ads_service_failed">%s 서버에서 오류가 발생했기 때문에 광고가 표시될 것입니다. 설정에서 다른 광고 차단 서비스로 전환해 보세요</string>
<string name="revanced_block_embedded_ads_title">광고 차단 Proxy 서버 사용하기</string>
<string name="revanced_block_embedded_ads_entry_1">사용하지 않기</string>
<string name="revanced_block_embedded_ads_entry_2">Luminous proxy</string>
<string name="revanced_block_embedded_ads_entry_3">PurpleAdBlock proxy</string>
<string name="revanced_block_embedded_ads_entry_2">Luminous 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">동영상 광고 차단하기</string>
@@ -1157,11 +1160,11 @@
<string name="revanced_block_video_ads_summary_off">동영상 광고를 차단하지 않습니다</string>
</patch>
<patch id="chat.antidelete.ShowDeletedMessagesPatch">
<string name="revanced_deleted_msg">메시지를 제합니다</string>
<string name="revanced_show_deleted_messages_title">제된 메시지 표시하기</string>
<string name="revanced_show_deleted_messages_entry_1">제된 메시지 표시하지 않기</string>
<string name="revanced_show_deleted_messages_entry_2">스포일러 뒤에 제된 메시지 숨기기</string>
<string name="revanced_show_deleted_messages_entry_3">제된 메시지를 줄이 그어진 텍스트로 표시하기</string>
<string name="revanced_deleted_msg">메시지를 제합니다</string>
<string name="revanced_show_deleted_messages_title">된 메시지 표시하기</string>
<string name="revanced_show_deleted_messages_entry_1">된 메시지 표시하지 않기</string>
<string name="revanced_show_deleted_messages_entry_2">스포일러 뒤에 제된 메시지 숨기기</string>
<string name="revanced_show_deleted_messages_entry_3">된 메시지를 줄이 그어진 텍스트로 표시하기</string>
</patch>
<patch id="chat.autoclaim.AutoClaimChannelPointsPatch">
<string name="revanced_auto_claim_channel_points_title">채널 포인트 자동 적립하기</string>

View File

@@ -1,6 +1,9 @@
<?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.
# General guidelines and information for translating
## Strings parameters can be reordered to allow more flexible translations if the grammar should be changed.
@@ -54,9 +57,12 @@
<!-- '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. -->
<!-- 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. -->
<!-- Translations of this should not be longer than the original English text, otherwise the text can be clipped and not entirely shown. -->
<!-- Translations of this should not be longer than the original English text, otherwise the text can be clipped and not entirely shown. -->
</patch>
<patch id="ad.general.HideAdsResourcePatch">
<!-- 'Visit store' should be translated with the same localized wording that YouTube displays. -->
<!-- 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="ad.getpremium.HideGetPremiumPatch">
</patch>
@@ -192,6 +198,8 @@
</patch>
<patch id="layout.theme.ThemeResourcePatch">
</patch>
<patch id="layout.thumbnails.BypassImageRegionRestrictions">
</patch>
<patch id="layout.thumbnails.AlternativeThumbnailsPatch">
<!-- 'Home' should be translated using the same localized wording YouTube displays for the home tab. -->
<!-- 'Subscription' should be translated using the same localized wording YouTube displays for the subscription tab. -->
@@ -210,8 +218,6 @@
</patch>
<patch id="misc.links.OpenLinksExternallyPatch">
</patch>
<patch id="misc.backgroundplayback.BackgroundPlaybackPatch">
</patch>
<patch id="misc.privacy.RemoveTrackingQueryParameterPatch">
</patch>
<patch id="misc.zoomhaptics.ZoomHapticsPatch">

View File

@@ -1,6 +1,9 @@
<?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.
# General guidelines and information for translating
## Strings parameters can be reordered to allow more flexible translations if the grammar should be changed.
@@ -54,9 +57,12 @@
<!-- '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. -->
<!-- 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. -->
<!-- Translations of this should not be longer than the original English text, otherwise the text can be clipped and not entirely shown. -->
<!-- Translations of this should not be longer than the original English text, otherwise the text can be clipped and not entirely shown. -->
</patch>
<patch id="ad.general.HideAdsResourcePatch">
<!-- 'Visit store' should be translated with the same localized wording that YouTube displays. -->
<!-- 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="ad.getpremium.HideGetPremiumPatch">
</patch>
@@ -192,6 +198,8 @@
</patch>
<patch id="layout.theme.ThemeResourcePatch">
</patch>
<patch id="layout.thumbnails.BypassImageRegionRestrictions">
</patch>
<patch id="layout.thumbnails.AlternativeThumbnailsPatch">
<!-- 'Home' should be translated using the same localized wording YouTube displays for the home tab. -->
<!-- 'Subscription' should be translated using the same localized wording YouTube displays for the subscription tab. -->
@@ -210,8 +218,6 @@
</patch>
<patch id="misc.links.OpenLinksExternallyPatch">
</patch>
<patch id="misc.backgroundplayback.BackgroundPlaybackPatch">
</patch>
<patch id="misc.privacy.RemoveTrackingQueryParameterPatch">
</patch>
<patch id="misc.zoomhaptics.ZoomHapticsPatch">

View File

@@ -1,6 +1,9 @@
<?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.
# General guidelines and information for translating
## Strings parameters can be reordered to allow more flexible translations if the grammar should be changed.
@@ -57,9 +60,12 @@
<!-- '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. -->
<!-- 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. -->
<!-- Translations of this should not be longer than the original English text, otherwise the text can be clipped and not entirely shown. -->
<!-- Translations of this should not be longer than the original English text, otherwise the text can be clipped and not entirely shown. -->
</patch>
<patch id="ad.general.HideAdsResourcePatch">
<!-- 'Visit store' should be translated with the same localized wording that YouTube displays. -->
<!-- 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="ad.getpremium.HideGetPremiumPatch">
</patch>
@@ -201,6 +207,8 @@
</patch>
<patch id="layout.theme.ThemeResourcePatch">
</patch>
<patch id="layout.thumbnails.BypassImageRegionRestrictions">
</patch>
<patch id="layout.thumbnails.AlternativeThumbnailsPatch">
<!-- 'Home' should be translated using the same localized wording YouTube displays for the home tab. -->
<!-- 'Subscription' should be translated using the same localized wording YouTube displays for the subscription tab. -->
@@ -220,8 +228,6 @@
</patch>
<patch id="misc.links.OpenLinksExternallyPatch">
</patch>
<patch id="misc.backgroundplayback.BackgroundPlaybackPatch">
</patch>
<patch id="misc.privacy.RemoveTrackingQueryParameterPatch">
</patch>
<patch id="misc.zoomhaptics.ZoomHapticsPatch">

View File

@@ -1,6 +1,9 @@
<?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.
# General guidelines and information for translating
## Strings parameters can be reordered to allow more flexible translations if the grammar should be changed.
@@ -56,9 +59,12 @@
<!-- '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. -->
<!-- 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. -->
<!-- Translations of this should not be longer than the original English text, otherwise the text can be clipped and not entirely shown. -->
<!-- Translations of this should not be longer than the original English text, otherwise the text can be clipped and not entirely shown. -->
</patch>
<patch id="ad.general.HideAdsResourcePatch">
<!-- 'Visit store' should be translated with the same localized wording that YouTube displays. -->
<!-- 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="ad.getpremium.HideGetPremiumPatch">
</patch>
@@ -200,6 +206,8 @@
</patch>
<patch id="layout.theme.ThemeResourcePatch">
</patch>
<patch id="layout.thumbnails.BypassImageRegionRestrictions">
</patch>
<patch id="layout.thumbnails.AlternativeThumbnailsPatch">
<!-- 'Home' should be translated using the same localized wording YouTube displays for the home tab. -->
<!-- 'Subscription' should be translated using the same localized wording YouTube displays for the subscription tab. -->
@@ -218,8 +226,6 @@
</patch>
<patch id="misc.links.OpenLinksExternallyPatch">
</patch>
<patch id="misc.backgroundplayback.BackgroundPlaybackPatch">
</patch>
<patch id="misc.privacy.RemoveTrackingQueryParameterPatch">
</patch>
<patch id="misc.zoomhaptics.ZoomHapticsPatch">

View File

@@ -1,6 +1,9 @@
<?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.
# General guidelines and information for translating
## Strings parameters can be reordered to allow more flexible translations if the grammar should be changed.
@@ -54,9 +57,12 @@
<!-- '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. -->
<!-- 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. -->
<!-- Translations of this should not be longer than the original English text, otherwise the text can be clipped and not entirely shown. -->
<!-- Translations of this should not be longer than the original English text, otherwise the text can be clipped and not entirely shown. -->
</patch>
<patch id="ad.general.HideAdsResourcePatch">
<!-- 'Visit store' should be translated with the same localized wording that YouTube displays. -->
<!-- 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="ad.getpremium.HideGetPremiumPatch">
</patch>
@@ -192,6 +198,8 @@
</patch>
<patch id="layout.theme.ThemeResourcePatch">
</patch>
<patch id="layout.thumbnails.BypassImageRegionRestrictions">
</patch>
<patch id="layout.thumbnails.AlternativeThumbnailsPatch">
<!-- 'Home' should be translated using the same localized wording YouTube displays for the home tab. -->
<!-- 'Subscription' should be translated using the same localized wording YouTube displays for the subscription tab. -->
@@ -210,8 +218,6 @@
</patch>
<patch id="misc.links.OpenLinksExternallyPatch">
</patch>
<patch id="misc.backgroundplayback.BackgroundPlaybackPatch">
</patch>
<patch id="misc.privacy.RemoveTrackingQueryParameterPatch">
</patch>
<patch id="misc.zoomhaptics.ZoomHapticsPatch">

View File

@@ -1,6 +1,9 @@
<?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.
# General guidelines and information for translating
## Strings parameters can be reordered to allow more flexible translations if the grammar should be changed.
@@ -54,9 +57,12 @@
<!-- '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. -->
<!-- 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. -->
<!-- Translations of this should not be longer than the original English text, otherwise the text can be clipped and not entirely shown. -->
<!-- Translations of this should not be longer than the original English text, otherwise the text can be clipped and not entirely shown. -->
</patch>
<patch id="ad.general.HideAdsResourcePatch">
<!-- 'Visit store' should be translated with the same localized wording that YouTube displays. -->
<!-- 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="ad.getpremium.HideGetPremiumPatch">
</patch>
@@ -192,6 +198,8 @@
</patch>
<patch id="layout.theme.ThemeResourcePatch">
</patch>
<patch id="layout.thumbnails.BypassImageRegionRestrictions">
</patch>
<patch id="layout.thumbnails.AlternativeThumbnailsPatch">
<!-- 'Home' should be translated using the same localized wording YouTube displays for the home tab. -->
<!-- 'Subscription' should be translated using the same localized wording YouTube displays for the subscription tab. -->
@@ -210,8 +218,6 @@
</patch>
<patch id="misc.links.OpenLinksExternallyPatch">
</patch>
<patch id="misc.backgroundplayback.BackgroundPlaybackPatch">
</patch>
<patch id="misc.privacy.RemoveTrackingQueryParameterPatch">
</patch>
<patch id="misc.zoomhaptics.ZoomHapticsPatch">

View File

@@ -1,6 +1,9 @@
<?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.
# General guidelines and information for translating
## Strings parameters can be reordered to allow more flexible translations if the grammar should be changed.
@@ -54,9 +57,12 @@
<!-- '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. -->
<!-- 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. -->
<!-- Translations of this should not be longer than the original English text, otherwise the text can be clipped and not entirely shown. -->
<!-- Translations of this should not be longer than the original English text, otherwise the text can be clipped and not entirely shown. -->
</patch>
<patch id="ad.general.HideAdsResourcePatch">
<!-- 'Visit store' should be translated with the same localized wording that YouTube displays. -->
<!-- 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="ad.getpremium.HideGetPremiumPatch">
</patch>
@@ -192,6 +198,8 @@
</patch>
<patch id="layout.theme.ThemeResourcePatch">
</patch>
<patch id="layout.thumbnails.BypassImageRegionRestrictions">
</patch>
<patch id="layout.thumbnails.AlternativeThumbnailsPatch">
<!-- 'Home' should be translated using the same localized wording YouTube displays for the home tab. -->
<!-- 'Subscription' should be translated using the same localized wording YouTube displays for the subscription tab. -->
@@ -210,8 +218,6 @@
</patch>
<patch id="misc.links.OpenLinksExternallyPatch">
</patch>
<patch id="misc.backgroundplayback.BackgroundPlaybackPatch">
</patch>
<patch id="misc.privacy.RemoveTrackingQueryParameterPatch">
</patch>
<patch id="misc.zoomhaptics.ZoomHapticsPatch">

View File

@@ -1,6 +1,9 @@
<?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.
# General guidelines and information for translating
## Strings parameters can be reordered to allow more flexible translations if the grammar should be changed.
@@ -54,9 +57,12 @@
<!-- '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. -->
<!-- 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. -->
<!-- Translations of this should not be longer than the original English text, otherwise the text can be clipped and not entirely shown. -->
<!-- Translations of this should not be longer than the original English text, otherwise the text can be clipped and not entirely shown. -->
</patch>
<patch id="ad.general.HideAdsResourcePatch">
<!-- 'Visit store' should be translated with the same localized wording that YouTube displays. -->
<!-- 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="ad.getpremium.HideGetPremiumPatch">
</patch>
@@ -192,6 +198,8 @@
</patch>
<patch id="layout.theme.ThemeResourcePatch">
</patch>
<patch id="layout.thumbnails.BypassImageRegionRestrictions">
</patch>
<patch id="layout.thumbnails.AlternativeThumbnailsPatch">
<!-- 'Home' should be translated using the same localized wording YouTube displays for the home tab. -->
<!-- 'Subscription' should be translated using the same localized wording YouTube displays for the subscription tab. -->
@@ -210,8 +218,6 @@
</patch>
<patch id="misc.links.OpenLinksExternallyPatch">
</patch>
<patch id="misc.backgroundplayback.BackgroundPlaybackPatch">
</patch>
<patch id="misc.privacy.RemoveTrackingQueryParameterPatch">
</patch>
<patch id="misc.zoomhaptics.ZoomHapticsPatch">

View File

@@ -1,6 +1,9 @@
<?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.
# General guidelines and information for translating
## Strings parameters can be reordered to allow more flexible translations if the grammar should be changed.
@@ -56,9 +59,12 @@
<!-- '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. -->
<!-- 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. -->
<!-- Translations of this should not be longer than the original English text, otherwise the text can be clipped and not entirely shown. -->
<!-- Translations of this should not be longer than the original English text, otherwise the text can be clipped and not entirely shown. -->
</patch>
<patch id="ad.general.HideAdsResourcePatch">
<!-- 'Visit store' should be translated with the same localized wording that YouTube displays. -->
<!-- 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="ad.getpremium.HideGetPremiumPatch">
</patch>
@@ -199,6 +205,8 @@
</patch>
<patch id="layout.theme.ThemeResourcePatch">
</patch>
<patch id="layout.thumbnails.BypassImageRegionRestrictions">
</patch>
<patch id="layout.thumbnails.AlternativeThumbnailsPatch">
<!-- 'Home' should be translated using the same localized wording YouTube displays for the home tab. -->
<!-- 'Subscription' should be translated using the same localized wording YouTube displays for the subscription tab. -->
@@ -217,8 +225,6 @@
</patch>
<patch id="misc.links.OpenLinksExternallyPatch">
</patch>
<patch id="misc.backgroundplayback.BackgroundPlaybackPatch">
</patch>
<patch id="misc.privacy.RemoveTrackingQueryParameterPatch">
</patch>
<patch id="misc.zoomhaptics.ZoomHapticsPatch">

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