Compare commits

..

24 Commits

Author SHA1 Message Date
Crowdin Bot
3ef05a7906 New Crowdin translations by GitHub Action 2026-01-07 12:05:22 +00:00
semantic-release-bot
a3f7609fe3 chore: Release v5.48.0-dev.8 [skip ci]
# [5.48.0-dev.8](https://github.com/ReVanced/revanced-patches/compare/v5.48.0-dev.7...v5.48.0-dev.8) (2026-01-04)

### Features

* **Letterboxd:** Add `Unlock app icons` patch ([#6415](https://github.com/ReVanced/revanced-patches/issues/6415)) ([d25dcfe](d25dcfe49a))
2026-01-04 13:17:54 +00:00
Swakshan
d25dcfe49a feat(Letterboxd): Add Unlock app icons patch (#6415) 2026-01-04 14:14:29 +01:00
semantic-release-bot
1cc2cb9cb2 chore: Release v5.48.0-dev.7 [skip ci]
# [5.48.0-dev.7](https://github.com/ReVanced/revanced-patches/compare/v5.48.0-dev.6...v5.48.0-dev.7) (2026-01-04)

### Features

* **Strava:** Add `Disable Quick Edit` patch ([#6452](https://github.com/ReVanced/revanced-patches/issues/6452)) ([f5cbb31](f5cbb31724))
* **Strava:** Add `Overwrite media upload parameters` patch ([#6410](https://github.com/ReVanced/revanced-patches/issues/6410)) ([b42ae27](b42ae27ce6))
2026-01-04 02:43:29 +00:00
xehpuk
f5cbb31724 feat(Strava): Add Disable Quick Edit patch (#6452)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2026-01-04 03:38:04 +01:00
xehpuk
b42ae27ce6 feat(Strava): Add Overwrite media upload parameters patch (#6410) 2026-01-04 03:36:08 +01:00
semantic-release-bot
43ab29d03d chore: Release v5.48.0-dev.6 [skip ci]
# [5.48.0-dev.6](https://github.com/ReVanced/revanced-patches/compare/v5.48.0-dev.5...v5.48.0-dev.6) (2026-01-04)

### Bug Fixes

* Fix build error introduced in `4046bee` ([#6417](https://github.com/ReVanced/revanced-patches/issues/6417)) ([789f0a5](789f0a5628))
2026-01-04 02:07:07 +00:00
xehpuk
789f0a5628 fix: Fix build error introduced in 4046bee (#6417) 2026-01-04 03:03:44 +01:00
semantic-release-bot
da836b667c chore: Release v5.48.0-dev.5 [skip ci]
# [5.48.0-dev.5](https://github.com/ReVanced/revanced-patches/compare/v5.48.0-dev.4...v5.48.0-dev.5) (2025-12-30)

### Bug Fixes

* **Disney+ - Skip ads:** Remove unsupported package names ([#6422](https://github.com/ReVanced/revanced-patches/issues/6422)) ([44e7dbc](44e7dbcf4d))
2025-12-30 18:37:28 +00:00
ILoveOpenSourceApplications
44e7dbcf4d fix(Disney+ - Skip ads): Remove unsupported package names (#6422) 2025-12-30 19:32:17 +01:00
semantic-release-bot
195c239000 chore: Release v5.48.0-dev.4 [skip ci]
# [5.48.0-dev.4](https://github.com/ReVanced/revanced-patches/compare/v5.48.0-dev.3...v5.48.0-dev.4) (2025-12-29)

### Features

* **Strava:** Add `Block Snowplow tracking` patch ([#6413](https://github.com/ReVanced/revanced-patches/issues/6413)) ([c47beae](c47beae213))
2025-12-29 21:25:35 +00:00
xehpuk
c47beae213 feat(Strava): Add Block Snowplow tracking patch (#6413)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2025-12-29 22:20:26 +01:00
semantic-release-bot
cebcfab86a chore: Release v5.48.0-dev.3 [skip ci]
# [5.48.0-dev.3](https://github.com/ReVanced/revanced-patches/compare/v5.48.0-dev.2...v5.48.0-dev.3) (2025-12-28)

### Bug Fixes

* Fix compilation error introduced in `6bb6281` ([#6409](https://github.com/ReVanced/revanced-patches/issues/6409)) ([71c6cb5](71c6cb569e))

### Features

* **Instagram - Hides navigation buttons:** Add more buttons to hide ([#6390](https://github.com/ReVanced/revanced-patches/issues/6390)) ([6bb6281](6bb6281149))
2025-12-28 22:33:37 +00:00
xehpuk
71c6cb569e fix: Fix compilation error introduced in 6bb6281 (#6409) 2025-12-28 23:30:32 +01:00
PainfulPaladins
6bb6281149 feat(Instagram - Hides navigation buttons): Add more buttons to hide (#6390) 2025-12-27 18:50:08 +01:00
semantic-release-bot
16bd96e2bb chore: Release v5.48.0-dev.2 [skip ci]
# [5.48.0-dev.2](https://github.com/ReVanced/revanced-patches/compare/v5.48.0-dev.1...v5.48.0-dev.2) (2025-12-27)

### Features

* **Strava:** Add `Enable password login` patch ([#6396](https://github.com/ReVanced/revanced-patches/issues/6396)) ([8f3f4c9](8f3f4c95bb))
2025-12-27 17:48:32 +00:00
xehpuk
8f3f4c95bb feat(Strava): Add Enable password login patch (#6396)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2025-12-27 18:45:09 +01:00
semantic-release-bot
da02d68587 chore: Release v5.48.0-dev.1 [skip ci]
# [5.48.0-dev.1](https://github.com/ReVanced/revanced-patches/compare/v5.47.0...v5.48.0-dev.1) (2025-12-23)

### Bug Fixes

* Fix compilation error introduced in dc69f243 ([#6392](https://github.com/ReVanced/revanced-patches/issues/6392)) ([a429824](a429824bb7))
* **YouTube - Hide layout components:** Hide new type of crowdfunding box ([#6380](https://github.com/ReVanced/revanced-patches/issues/6380)) ([dc69f24](dc69f2433e))

### Features

* **ProtonVPN:** Add `Unlock split tunneling` patch ([#6353](https://github.com/ReVanced/revanced-patches/issues/6353)) ([e0f3346](e0f33468e6))
* **SBS On Demand:** Add `Remove ads` patch ([#6378](https://github.com/ReVanced/revanced-patches/issues/6378)) ([315931c](315931cbf8))
2025-12-23 01:30:13 +00:00
xehpuk
a429824bb7 fix: Fix compilation error introduced in dc69f243 (#6392) 2025-12-23 02:26:54 +01:00
Sylvain Finot
e0f33468e6 feat(ProtonVPN): Add Unlock split tunneling patch (#6353)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2025-12-22 15:00:08 +01:00
trespyian
315931cbf8 feat(SBS On Demand): Add Remove ads patch (#6378)
Co-authored-by: Trespyian <trespyian@nowhere.com>
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2025-12-22 14:49:19 +01:00
ILoveOpenSourceApplications
dc69f2433e fix(YouTube - Hide layout components): Hide new type of crowdfunding box (#6380) 2025-12-21 23:10:35 +01:00
semantic-release-bot
73e43b2a49 chore: Release v5.47.0 [skip ci]
# [5.47.0](https://github.com/ReVanced/revanced-patches/compare/v5.46.0...v5.47.0) (2025-12-18)

### Bug Fixes

* **Instagram - Disable signature check:** Change patch to default excluded ([#6283](https://github.com/ReVanced/revanced-patches/issues/6283)) ([bb745b5](bb745b555b))
* **Lightroom:** Add `Disable version check` patch to fix opening the app  ([#6315](https://github.com/ReVanced/revanced-patches/issues/6315)) ([018d176](018d176914))
* **Reddit - Hide ads:** Update patch for new versions of Reddit ([#6342](https://github.com/ReVanced/revanced-patches/issues/6342)) ([f8bd123](f8bd1239cc))
* **Spotify:** Make patches work with latest versions again ([#6359](https://github.com/ReVanced/revanced-patches/issues/6359)) ([34830ba](34830ba63b))
* **YouTube - Hide layout components:** Fix "Hide Subscribe button" in channel page not working ([#6363](https://github.com/ReVanced/revanced-patches/issues/6363)) ([ded8370](ded8370207))
* **YouTube - Hide player flyout menu items:** Allow hiding audio menu with 'Android No SDK' client type ([9495cf4](9495cf49ef))
* **YouTube - Sanitize sharing links:** Handle non hierarchical urls ([654d091](654d091e65))

### Features

* **Disney+ - SkipAds:** Add other package names the patch is compatible with ([#6372](https://github.com/ReVanced/revanced-patches/issues/6372)) ([1f4f252](1f4f252c81))
* **Disney+:** Add `Skip ads` patch ([#6343](https://github.com/ReVanced/revanced-patches/issues/6343)) ([6bd7dca](6bd7dca75b))
* **IdAustria - Remove device integrity check:** Update patch to work with latest version ([#6360](https://github.com/ReVanced/revanced-patches/issues/6360)) ([0ea3491](0ea3491227))
* **Instagram:** Add `Anonymous story viewing` patch ([#6263](https://github.com/ReVanced/revanced-patches/issues/6263)) ([94ae84a](94ae84ad0f))
* **Instagram:** Add `Disable auto story flipping` patch ([#6262](https://github.com/ReVanced/revanced-patches/issues/6262)) ([2f0de15](2f0de15e67))
* **Instagram:** Add `Disable Reels scrolling` patch ([#6317](https://github.com/ReVanced/revanced-patches/issues/6317)) ([0928dcd](0928dcd00d))
* **Letterboxd:** Add `Hide ads` patch ([#6309](https://github.com/ReVanced/revanced-patches/issues/6309)) ([0af0ee9](0af0ee92c4))
* **Peacock TV:** Add `Hide ads` patch ([#6348](https://github.com/ReVanced/revanced-patches/issues/6348)) ([847ee18](847ee189a9))
* **ProtonVPN:** Add `Remove delay` patch ([#6326](https://github.com/ReVanced/revanced-patches/issues/6326)) ([bbd8932](bbd8932b2e))
* **Spoof SIM provider:** Spoof additional TelephonyManager methods ([#6293](https://github.com/ReVanced/revanced-patches/issues/6293)) ([ac583d4](ac583d40d0))
* **YouTube - Hide layout components:** Add "Hide cell divider", "Hide featured links", and "Hide featured videos" options ([#6335](https://github.com/ReVanced/revanced-patches/issues/6335)) ([a5d197b](a5d197b977))
* **YouTube - Hide layout components:** Add "Hide Join button" and "Hide Subscribe button" options for channel page ([#6345](https://github.com/ReVanced/revanced-patches/issues/6345)) ([02831a6](02831a6069))
* **YouTube - Hide Shorts components:** Add "Hide auto-dubbed label" and "Hide live preview" options ([#6334](https://github.com/ReVanced/revanced-patches/issues/6334)) ([a7c220a](a7c220a4ae))
2025-12-18 12:14:21 +00:00
oSumAtrIX
918f04793f chore: Merge branch dev to main (#6282) 2025-12-18 13:10:41 +01:00
44 changed files with 1289 additions and 410 deletions

View File

@@ -1,3 +1,102 @@
# [5.48.0-dev.8](https://github.com/ReVanced/revanced-patches/compare/v5.48.0-dev.7...v5.48.0-dev.8) (2026-01-04)
### Features
* **Letterboxd:** Add `Unlock app icons` patch ([#6415](https://github.com/ReVanced/revanced-patches/issues/6415)) ([d25dcfe](https://github.com/ReVanced/revanced-patches/commit/d25dcfe49ac331c9b3dca739ba0be95dbab669cc))
# [5.48.0-dev.7](https://github.com/ReVanced/revanced-patches/compare/v5.48.0-dev.6...v5.48.0-dev.7) (2026-01-04)
### Features
* **Strava:** Add `Disable Quick Edit` patch ([#6452](https://github.com/ReVanced/revanced-patches/issues/6452)) ([f5cbb31](https://github.com/ReVanced/revanced-patches/commit/f5cbb31724d15f7e939b96ee0186fd0a108f9fdc))
* **Strava:** Add `Overwrite media upload parameters` patch ([#6410](https://github.com/ReVanced/revanced-patches/issues/6410)) ([b42ae27](https://github.com/ReVanced/revanced-patches/commit/b42ae27ce66ebad9e9cfc5b70fc121df5bad7567))
# [5.48.0-dev.6](https://github.com/ReVanced/revanced-patches/compare/v5.48.0-dev.5...v5.48.0-dev.6) (2026-01-04)
### Bug Fixes
* Fix build error introduced in `4046bee` ([#6417](https://github.com/ReVanced/revanced-patches/issues/6417)) ([789f0a5](https://github.com/ReVanced/revanced-patches/commit/789f0a562861825065633d172445ebf35a1ba8d8))
# [5.48.0-dev.5](https://github.com/ReVanced/revanced-patches/compare/v5.48.0-dev.4...v5.48.0-dev.5) (2025-12-30)
### Bug Fixes
* **Disney+ - Skip ads:** Remove unsupported package names ([#6422](https://github.com/ReVanced/revanced-patches/issues/6422)) ([44e7dbc](https://github.com/ReVanced/revanced-patches/commit/44e7dbcf4d7eaf94dd0164baba847d3e19250154))
# [5.48.0-dev.4](https://github.com/ReVanced/revanced-patches/compare/v5.48.0-dev.3...v5.48.0-dev.4) (2025-12-29)
### Features
* **Strava:** Add `Block Snowplow tracking` patch ([#6413](https://github.com/ReVanced/revanced-patches/issues/6413)) ([c47beae](https://github.com/ReVanced/revanced-patches/commit/c47beae21376dd17ab8bc09afe73e9094481bde9))
# [5.48.0-dev.3](https://github.com/ReVanced/revanced-patches/compare/v5.48.0-dev.2...v5.48.0-dev.3) (2025-12-28)
### Bug Fixes
* Fix compilation error introduced in `6bb6281` ([#6409](https://github.com/ReVanced/revanced-patches/issues/6409)) ([71c6cb5](https://github.com/ReVanced/revanced-patches/commit/71c6cb569ebf7b93cf73ee391839e5220557ce7c))
### Features
* **Instagram - Hides navigation buttons:** Add more buttons to hide ([#6390](https://github.com/ReVanced/revanced-patches/issues/6390)) ([6bb6281](https://github.com/ReVanced/revanced-patches/commit/6bb62811493da04812cc3e392e68d874f95cbef9))
# [5.48.0-dev.2](https://github.com/ReVanced/revanced-patches/compare/v5.48.0-dev.1...v5.48.0-dev.2) (2025-12-27)
### Features
* **Strava:** Add `Enable password login` patch ([#6396](https://github.com/ReVanced/revanced-patches/issues/6396)) ([8f3f4c9](https://github.com/ReVanced/revanced-patches/commit/8f3f4c95bb8f151fc9a2c272bf7d0e905c2f01fc))
# [5.48.0-dev.1](https://github.com/ReVanced/revanced-patches/compare/v5.47.0...v5.48.0-dev.1) (2025-12-23)
### Bug Fixes
* Fix compilation error introduced in dc69f243 ([#6392](https://github.com/ReVanced/revanced-patches/issues/6392)) ([a429824](https://github.com/ReVanced/revanced-patches/commit/a429824bb77b49aea14b0b54f2204ae24d5209a1))
* **YouTube - Hide layout components:** Hide new type of crowdfunding box ([#6380](https://github.com/ReVanced/revanced-patches/issues/6380)) ([dc69f24](https://github.com/ReVanced/revanced-patches/commit/dc69f2433e2650654e2dffdd76b0b0c8a52bf515))
### Features
* **ProtonVPN:** Add `Unlock split tunneling` patch ([#6353](https://github.com/ReVanced/revanced-patches/issues/6353)) ([e0f3346](https://github.com/ReVanced/revanced-patches/commit/e0f33468e6e96b9f10cf35ec67622d6488528c90))
* **SBS On Demand:** Add `Remove ads` patch ([#6378](https://github.com/ReVanced/revanced-patches/issues/6378)) ([315931c](https://github.com/ReVanced/revanced-patches/commit/315931cbf8f61cd4b3a54ace1ff03685d748614c))
# [5.47.0](https://github.com/ReVanced/revanced-patches/compare/v5.46.0...v5.47.0) (2025-12-18)
### Bug Fixes
* **Instagram - Disable signature check:** Change patch to default excluded ([#6283](https://github.com/ReVanced/revanced-patches/issues/6283)) ([bb745b5](https://github.com/ReVanced/revanced-patches/commit/bb745b555b3808b7679c5995319aa365630fbd76))
* **Lightroom:** Add `Disable version check` patch to fix opening the app ([#6315](https://github.com/ReVanced/revanced-patches/issues/6315)) ([018d176](https://github.com/ReVanced/revanced-patches/commit/018d176914a06a30e9007a3eb2e6b0f459078413))
* **Reddit - Hide ads:** Update patch for new versions of Reddit ([#6342](https://github.com/ReVanced/revanced-patches/issues/6342)) ([f8bd123](https://github.com/ReVanced/revanced-patches/commit/f8bd1239cc0f0bd1c2dca39f846951bf512891e3))
* **Spotify:** Make patches work with latest versions again ([#6359](https://github.com/ReVanced/revanced-patches/issues/6359)) ([34830ba](https://github.com/ReVanced/revanced-patches/commit/34830ba63b436146064f0f89f948d51cd0cb9146))
* **YouTube - Hide layout components:** Fix "Hide Subscribe button" in channel page not working ([#6363](https://github.com/ReVanced/revanced-patches/issues/6363)) ([ded8370](https://github.com/ReVanced/revanced-patches/commit/ded83702077701aac8a8749d71bf7376427f37d6))
* **YouTube - Hide player flyout menu items:** Allow hiding audio menu with 'Android No SDK' client type ([9495cf4](https://github.com/ReVanced/revanced-patches/commit/9495cf49ef8a872be64de6c971c1919b4b9a8720))
* **YouTube - Sanitize sharing links:** Handle non hierarchical urls ([654d091](https://github.com/ReVanced/revanced-patches/commit/654d091e650cda37650b57cbf3ba6f1cdd6d47d3))
### Features
* **Disney+ - SkipAds:** Add other package names the patch is compatible with ([#6372](https://github.com/ReVanced/revanced-patches/issues/6372)) ([1f4f252](https://github.com/ReVanced/revanced-patches/commit/1f4f252c81e9a89267f6e37548e66027b1bc1a1a))
* **Disney+:** Add `Skip ads` patch ([#6343](https://github.com/ReVanced/revanced-patches/issues/6343)) ([6bd7dca](https://github.com/ReVanced/revanced-patches/commit/6bd7dca75bd2ea335a596aa93a8b767d39be5f83))
* **IdAustria - Remove device integrity check:** Update patch to work with latest version ([#6360](https://github.com/ReVanced/revanced-patches/issues/6360)) ([0ea3491](https://github.com/ReVanced/revanced-patches/commit/0ea3491227fc50c03555d43d3fec78eb82906b26))
* **Instagram:** Add `Anonymous story viewing` patch ([#6263](https://github.com/ReVanced/revanced-patches/issues/6263)) ([94ae84a](https://github.com/ReVanced/revanced-patches/commit/94ae84ad0fc3a9197c82d5356301d464730c3b17))
* **Instagram:** Add `Disable auto story flipping` patch ([#6262](https://github.com/ReVanced/revanced-patches/issues/6262)) ([2f0de15](https://github.com/ReVanced/revanced-patches/commit/2f0de15e67e4f99ed6ecdc136d04cceb23b0d069))
* **Instagram:** Add `Disable Reels scrolling` patch ([#6317](https://github.com/ReVanced/revanced-patches/issues/6317)) ([0928dcd](https://github.com/ReVanced/revanced-patches/commit/0928dcd00dc2a9c1eef9a23c1e26ff5dc9ee670a))
* **Letterboxd:** Add `Hide ads` patch ([#6309](https://github.com/ReVanced/revanced-patches/issues/6309)) ([0af0ee9](https://github.com/ReVanced/revanced-patches/commit/0af0ee92c48bb2ffc332197e05439e20c5c05d83))
* **Peacock TV:** Add `Hide ads` patch ([#6348](https://github.com/ReVanced/revanced-patches/issues/6348)) ([847ee18](https://github.com/ReVanced/revanced-patches/commit/847ee189a971e6d4a99823998569f8e561b8319c))
* **ProtonVPN:** Add `Remove delay` patch ([#6326](https://github.com/ReVanced/revanced-patches/issues/6326)) ([bbd8932](https://github.com/ReVanced/revanced-patches/commit/bbd8932b2e740aff96ba047332e541bff3e09436))
* **Spoof SIM provider:** Spoof additional TelephonyManager methods ([#6293](https://github.com/ReVanced/revanced-patches/issues/6293)) ([ac583d4](https://github.com/ReVanced/revanced-patches/commit/ac583d40d0f4c0e6544e3661ff3e82a25912f2b0))
* **YouTube - Hide layout components:** Add "Hide cell divider", "Hide featured links", and "Hide featured videos" options ([#6335](https://github.com/ReVanced/revanced-patches/issues/6335)) ([a5d197b](https://github.com/ReVanced/revanced-patches/commit/a5d197b9775b98d7a37bfdee9e5f726d5e04d8cf))
* **YouTube - Hide layout components:** Add "Hide Join button" and "Hide Subscribe button" options for channel page ([#6345](https://github.com/ReVanced/revanced-patches/issues/6345)) ([02831a6](https://github.com/ReVanced/revanced-patches/commit/02831a6069fc30ffa3a87f8e4de653d003a2187e))
* **YouTube - Hide Shorts components:** Add "Hide auto-dubbed label" and "Hide live preview" options ([#6334](https://github.com/ReVanced/revanced-patches/issues/6334)) ([a7c220a](https://github.com/ReVanced/revanced-patches/commit/a7c220a4aea93ea7ae7005b5760443d7571c4228))
# [5.47.0-dev.18](https://github.com/ReVanced/revanced-patches/compare/v5.47.0-dev.17...v5.47.0-dev.18) (2025-12-18)

View File

@@ -247,8 +247,13 @@ public final class LayoutComponentsFilter extends Filter {
"sponsorships"
);
final var crowdfundingBox = new StringFilterGroup(
Settings.HIDE_CROWDFUNDING_BOX,
"donation_shelf"
);
final var channelWatermark = new StringFilterGroup(
Settings.HIDE_VIDEO_CHANNEL_WATERMARK,
Settings.HIDE_CHANNEL_WATERMARK,
"featured_channel_watermark_overlay"
);
@@ -312,6 +317,7 @@ public final class LayoutComponentsFilter extends Filter {
compactChannelBar,
compactChannelBarInner,
communityPosts,
crowdfundingBox,
emergencyBox,
expandableMetadata,
forYouShelf,
@@ -427,7 +433,7 @@ public final class LayoutComponentsFilter extends Filter {
* Injection point.
*/
public static boolean showWatermark() {
return !Settings.HIDE_VIDEO_CHANNEL_WATERMARK.get();
return !Settings.HIDE_CHANNEL_WATERMARK.get();
}
/**

View File

@@ -96,7 +96,6 @@ public class Settings extends BaseSettings {
public static final BooleanSetting HIDE_CHIPS_SHELF = new BooleanSetting("revanced_hide_chips_shelf", TRUE);
public static final BooleanSetting HIDE_COMMUNITY_POSTS = new BooleanSetting("revanced_hide_community_posts", FALSE);
public static final BooleanSetting HIDE_COMPACT_BANNER = new BooleanSetting("revanced_hide_compact_banner", TRUE);
public static final BooleanSetting HIDE_CROWDFUNDING_BOX = new BooleanSetting("revanced_hide_crowdfunding_box", FALSE, true);
public static final BooleanSetting HIDE_DOODLES = new BooleanSetting("revanced_hide_doodles", FALSE, true, "revanced_hide_doodles_user_dialog_message");
public static final BooleanSetting HIDE_EXPANDABLE_CARD = new BooleanSetting("revanced_hide_expandable_card", TRUE);
public static final BooleanSetting HIDE_FILTER_BAR_FEED_IN_FEED = new BooleanSetting("revanced_hide_filter_bar_feed_in_feed", FALSE, true);
@@ -158,6 +157,8 @@ public class Settings extends BaseSettings {
public static final BooleanSetting HIDE_CAPTIONS_BUTTON = new BooleanSetting("revanced_hide_captions_button", FALSE);
public static final BooleanSetting HIDE_CAST_BUTTON = new BooleanSetting("revanced_hide_cast_button", TRUE, true);
public static final BooleanSetting HIDE_CHANNEL_BAR = new BooleanSetting("revanced_hide_channel_bar", FALSE);
public static final BooleanSetting HIDE_CHANNEL_WATERMARK = new BooleanSetting("revanced_hide_channel_watermark", TRUE);
public static final BooleanSetting HIDE_CROWDFUNDING_BOX = new BooleanSetting("revanced_hide_crowdfunding_box", FALSE, true);
public static final BooleanSetting HIDE_EMERGENCY_BOX = new BooleanSetting("revanced_hide_emergency_box", TRUE);
public static final BooleanSetting HIDE_ENDSCREEN_CARDS = new BooleanSetting("revanced_hide_endscreen_cards", FALSE);
public static final BooleanSetting HIDE_END_SCREEN_SUGGESTED_VIDEO = new BooleanSetting("revanced_end_screen_suggested_video", FALSE, true);
@@ -172,7 +173,6 @@ public class Settings extends BaseSettings {
public static final BooleanSetting HIDE_RELATED_VIDEOS = new BooleanSetting("revanced_hide_related_videos", FALSE);
public static final BooleanSetting HIDE_SUBSCRIBERS_COMMUNITY_GUIDELINES = new BooleanSetting("revanced_hide_subscribers_community_guidelines", TRUE);
public static final BooleanSetting HIDE_TIMED_REACTIONS = new BooleanSetting("revanced_hide_timed_reactions", TRUE);
public static final BooleanSetting HIDE_VIDEO_CHANNEL_WATERMARK = new BooleanSetting("revanced_hide_channel_watermark", TRUE);
public static final BooleanSetting OPEN_VIDEOS_FULLSCREEN_PORTRAIT = new BooleanSetting("revanced_open_videos_fullscreen_portrait", FALSE);
public static final BooleanSetting PLAYBACK_SPEED_DIALOG_BUTTON = new BooleanSetting("revanced_playback_speed_dialog_button", FALSE);
public static final BooleanSetting VIDEO_QUALITY_DIALOG_BUTTON = new BooleanSetting("revanced_video_quality_dialog_button", FALSE);

View File

@@ -3,4 +3,4 @@ org.gradle.jvmargs = -Xms512M -Xmx2048M
org.gradle.parallel = true
android.useAndroidX = true
kotlin.code.style = official
version = 5.47.0-dev.18
version = 5.48.0-dev.8

View File

@@ -176,6 +176,10 @@ public final class app/revanced/patches/cieid/restrictions/root/BypassRootChecks
public static final fun getBypassRootChecksPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
}
public final class app/revanced/patches/com/sbs/ondemand/tv/RemoveAdsPatchKt {
public static final fun getRemoveAdsPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
}
public final class app/revanced/patches/cricbuzz/ads/DisableAdsPatchKt {
public static final fun getDisableAdsPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
}
@@ -348,6 +352,10 @@ public final class app/revanced/patches/letterboxd/ads/HideAdsPatchKt {
public static final fun getHideAdsPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
}
public final class app/revanced/patches/letterboxd/unlock/unlockAppIcons/UnlockAppIconsPatchKt {
public static final fun getUnlockAppIconsPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
}
public final class app/revanced/patches/lightroom/misc/login/DisableMandatoryLoginPatchKt {
public static final fun getDisableMandatoryLoginPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
}
@@ -645,6 +653,10 @@ public final class app/revanced/patches/protonvpn/delay/RemoveDelayPatchKt {
public static final fun getRemoveDelayPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
}
public final class app/revanced/patches/protonvpn/splittunneling/UnlockSplitTunnelingKt {
public static final fun getUnlockSplitTunnelingPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
}
public final class app/revanced/patches/rar/misc/annoyances/purchasereminder/HidePurchaseReminderPatchKt {
public static final fun getHidePurchaseReminderPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
}
@@ -1180,6 +1192,22 @@ public final class app/revanced/patches/stocard/layout/HideStoryBubblesPatchKt {
public static final fun getHideStoryBubblesPatch ()Lapp/revanced/patcher/patch/ResourcePatch;
}
public final class app/revanced/patches/strava/mediaupload/OverwriteMediaUploadParametersPatchKt {
public static final fun getOverwriteMediaUploadParametersPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
}
public final class app/revanced/patches/strava/password/EnablePasswordLoginPatchKt {
public static final fun getEnablePasswordLoginPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
}
public final class app/revanced/patches/strava/privacy/BlockSnowplowTrackingPatchKt {
public static final fun getBlockSnowplowTrackingPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
}
public final class app/revanced/patches/strava/quickedit/DisableQuickEditPatchKt {
public static final fun getDisableQuickEditPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
}
public final class app/revanced/patches/strava/subscription/UnlockSubscriptionPatchKt {
public static final fun getUnlockSubscriptionPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
}
@@ -1955,6 +1983,7 @@ public final class app/revanced/util/BytecodeUtilsKt {
public static final fun indexOfFirstResourceIdOrThrow (Lcom/android/tools/smali/dexlib2/iface/Method;Ljava/lang/String;)I
public static final fun injectHideViewCall (Lapp/revanced/patcher/util/proxy/mutableTypes/MutableMethod;IILjava/lang/String;Ljava/lang/String;)V
public static final fun literal (Lapp/revanced/patcher/FingerprintBuilder;Lkotlin/jvm/functions/Function0;)V
public static final fun returnEarly (Lapp/revanced/patcher/util/proxy/mutableTypes/MutableMethod;)V
public static final fun returnEarly (Lapp/revanced/patcher/util/proxy/mutableTypes/MutableMethod;B)V
public static final fun returnEarly (Lapp/revanced/patcher/util/proxy/mutableTypes/MutableMethod;C)V
public static final fun returnEarly (Lapp/revanced/patcher/util/proxy/mutableTypes/MutableMethod;D)V
@@ -1964,7 +1993,6 @@ public final class app/revanced/util/BytecodeUtilsKt {
public static final fun returnEarly (Lapp/revanced/patcher/util/proxy/mutableTypes/MutableMethod;Ljava/lang/String;)V
public static final fun returnEarly (Lapp/revanced/patcher/util/proxy/mutableTypes/MutableMethod;S)V
public static final fun returnEarly (Lapp/revanced/patcher/util/proxy/mutableTypes/MutableMethod;Z)V
public static synthetic fun returnEarly$default (Lapp/revanced/patcher/util/proxy/mutableTypes/MutableMethod;ZILjava/lang/Object;)V
public static final fun returnLate (Lapp/revanced/patcher/util/proxy/mutableTypes/MutableMethod;B)V
public static final fun returnLate (Lapp/revanced/patcher/util/proxy/mutableTypes/MutableMethod;C)V
public static final fun returnLate (Lapp/revanced/patcher/util/proxy/mutableTypes/MutableMethod;D)V

View File

@@ -0,0 +1,28 @@
package app.revanced.patches.com.sbs.ondemand.tv
import app.revanced.patcher.fingerprint
internal val shouldShowAdvertisingTVFingerprint = fingerprint {
returns("Z")
custom { method, classDef ->
method.name == "getShouldShowAdvertisingTV" &&
classDef.type == "Lcom/sbs/ondemand/common/InMemoryStorage;"
}
}
internal val shouldShowPauseAdFingerprint = fingerprint {
returns("Z")
custom { method, classDef ->
method.name == "shouldShowPauseAd" &&
classDef.type == "Lcom/sbs/ondemand/player/viewmodels/PauseAdController;"
}
}
internal val requestAdStreamFingerprint = fingerprint {
returns("V")
custom { method, classDef ->
method.name == "requestAdStream\$player_googleStoreTvRelease" &&
classDef.type == "Lcom/sbs/ondemand/player/viewmodels/AdsController;"
}
}

View File

@@ -0,0 +1,37 @@
package app.revanced.patches.com.sbs.ondemand.tv
import app.revanced.patcher.extensions.InstructionExtensions.addInstructions
import app.revanced.patcher.patch.bytecodePatch
import app.revanced.patches.shared.misc.pairip.license.disableLicenseCheckPatch
import app.revanced.util.returnEarly
@Suppress("unused")
val removeAdsPatch = bytecodePatch(
name = "Remove ads",
description = "Removes pre-roll, pause and on-demand advertisements from SBS On Demand TV.",
) {
compatibleWith("com.sbs.ondemand.tv")
dependsOn(disableLicenseCheckPatch)
execute {
shouldShowAdvertisingTVFingerprint.method.returnEarly(true)
shouldShowPauseAdFingerprint.method.returnEarly(false)
// Remove on-demand pre-roll advertisements using exception handling.
// Exception handling is used instead of returnEarly() because:
// 1. returnEarly() causes black screen when the app waits for ad content that never comes.
// 2. SBS app has built-in exception handling in handleProviderFailure().
// 3. Exception triggers fallbackToAkamaiProvider() which loads actual content.
// 4. This preserves the intended app flow: first try ads, then fail gracefully, then load content.
requestAdStreamFingerprint.method.addInstructions(
0,
"""
new-instance v0, Ljava/lang/RuntimeException;
const-string v1, "Ad stream disabled"
invoke-direct {v0, v1}, Ljava/lang/RuntimeException;-><init>(Ljava/lang/String;)V
throw v0
"""
)
}
}

View File

@@ -8,11 +8,7 @@ val skipAdsPatch = bytecodePatch(
name = "Skip ads",
description = "Automatically skips ads.",
) {
compatibleWith(
"com.disney.disneyplus",
"in.startv.hotstar",
"in.startv.hotstaronly",
)
compatibleWith("com.disney.disneyplus")
execute {
arrayOf(insertionGetPointsFingerprint, insertionGetRangesFingerprint).forEach {

View File

@@ -28,6 +28,13 @@ val hideNavigationButtonsPatch = bytecodePatch(
dependsOn(sharedExtensionPatch)
val hideHome by booleanOption(
key = "hideHome",
default = false,
title = "Hide Home",
description = "Permanently hides the Home button. App starts at next available tab." // On the "homecoming" / current instagram layout.
)
val hideReels by booleanOption(
key = "hideReels",
default = true,
@@ -35,6 +42,27 @@ val hideNavigationButtonsPatch = bytecodePatch(
description = "Permanently hides the Reels button."
)
val hideDirect by booleanOption(
key = "hideDirect",
default = false,
title = "Hide Direct",
description = "Permanently hides the Direct button."
)
val hideSearch by booleanOption(
key = "hideSearch",
default = false,
title = "Hide Search",
description = "Permanently hides the Search button."
)
val hideProfile by booleanOption(
key = "hideProfile",
default = false,
title = "Hide Profile",
description = "Permanently hides the Profile button."
)
val hideCreate by booleanOption(
key = "hideCreate",
default = true,
@@ -43,7 +71,7 @@ val hideNavigationButtonsPatch = bytecodePatch(
)
execute {
if (!hideReels!! && !hideCreate!!) {
if (!hideHome!! &&!hideReels!! && !hideDirect!! && !hideSearch!! && !hideProfile!! && !hideCreate!!) {
return@execute Logger.getLogger(this::class.java.name).warning(
"No hide navigation buttons options are enabled. No changes made."
)
@@ -76,6 +104,13 @@ val hideNavigationButtonsPatch = bytecodePatch(
"""
}
if (hideHome!!) {
addInstructionsAtControlFlowLabel(
returnIndex,
instructionsRemoveButtonByName("fragment_feed")
)
}
if (hideReels!!) {
addInstructionsAtControlFlowLabel(
returnIndex,
@@ -83,12 +118,33 @@ val hideNavigationButtonsPatch = bytecodePatch(
)
}
if (hideDirect!!) {
addInstructionsAtControlFlowLabel(
returnIndex,
instructionsRemoveButtonByName("fragment_direct_tab")
)
}
if (hideSearch!!) {
addInstructionsAtControlFlowLabel(
returnIndex,
instructionsRemoveButtonByName("fragment_search")
)
}
if (hideCreate!!) {
addInstructionsAtControlFlowLabel(
returnIndex,
instructionsRemoveButtonByName("fragment_share")
)
}
if (hideProfile!!) {
addInstructionsAtControlFlowLabel(
returnIndex,
instructionsRemoveButtonByName("fragment_profile")
)
}
}
}
}

View File

@@ -0,0 +1,9 @@
package app.revanced.patches.letterboxd.unlock.unlockAppIcons
import app.revanced.patcher.fingerprint
internal val getCanChangeAppIconFingerprint = fingerprint {
custom { method, classDef ->
method.name == "getCanChangeAppIcon" && classDef.type.endsWith("SettingsAppIconFragment;")
}
}

View File

@@ -0,0 +1,16 @@
package app.revanced.patches.letterboxd.unlock.unlockAppIcons
import app.revanced.patcher.patch.bytecodePatch
import app.revanced.util.returnEarly
@Suppress("unused")
val unlockAppIconsPatch = bytecodePatch(
name = "Unlock app icons",
) {
compatibleWith("com.letterboxd.letterboxd")
execute {
getCanChangeAppIconFingerprint.method.returnEarly(true)
}
}

View File

@@ -0,0 +1,20 @@
package app.revanced.patches.protonvpn.splittunneling
import app.revanced.patcher.fingerprint
import com.android.tools.smali.dexlib2.AccessFlags
import com.android.tools.smali.dexlib2.Opcode
internal val enableSplitTunnelingUiFingerprint = fingerprint {
strings("currentModeAppNames")
opcodes(
Opcode.MOVE_OBJECT,
Opcode.MOVE_FROM16,
Opcode.INVOKE_DIRECT_RANGE
)
}
internal val initializeSplitTunnelingSettingsUIFingerprint = fingerprint {
custom { method, _ ->
method.name == "applyRestrictions"
}
}

View File

@@ -0,0 +1,34 @@
package app.revanced.patches.protonvpn.splittunneling
import app.revanced.patcher.extensions.InstructionExtensions.getInstruction
import app.revanced.patcher.extensions.InstructionExtensions.removeInstruction
import app.revanced.patcher.extensions.InstructionExtensions.replaceInstruction
import app.revanced.patcher.patch.bytecodePatch
import app.revanced.util.getReference
import app.revanced.util.indexOfFirstInstructionOrThrow
import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
import com.android.tools.smali.dexlib2.iface.reference.MethodReference
@Suppress("unused")
val unlockSplitTunnelingPatch =
bytecodePatch(
name = "Unlock split tunneling",
) {
compatibleWith("ch.protonvpn.android")
execute {
val registerIndex = enableSplitTunnelingUiFingerprint.patternMatch!!.endIndex - 1
enableSplitTunnelingUiFingerprint.method.apply {
val register = getInstruction<OneRegisterInstruction>(registerIndex).registerA
replaceInstruction(registerIndex, "const/4 v$register, 0x0")
}
initializeSplitTunnelingSettingsUIFingerprint.method.apply {
val initSettingsIndex = indexOfFirstInstructionOrThrow {
getReference<MethodReference>()?.name == "getSplitTunneling"
}
removeInstruction(initSettingsIndex - 1)
}
}
}

View File

@@ -0,0 +1,21 @@
package app.revanced.patches.strava.mediaupload
import app.revanced.patcher.fingerprint
internal val getCompressionQualityFingerprint = fingerprint {
custom { method, _ ->
method.name == "getCompressionQuality"
}
}
internal val getMaxDurationFingerprint = fingerprint {
custom { method, _ ->
method.name == "getMaxDuration"
}
}
internal val getMaxSizeFingerprint = fingerprint {
custom { method, _ ->
method.name == "getMaxSize"
}
}

View File

@@ -0,0 +1,48 @@
package app.revanced.patches.strava.mediaupload
import app.revanced.patcher.patch.bytecodePatch
import app.revanced.patcher.patch.intOption
import app.revanced.patcher.patch.longOption
import app.revanced.util.returnEarly
@Suppress("unused")
val overwriteMediaUploadParametersPatch = bytecodePatch(
name = "Overwrite media upload parameters",
description = "Overwrites the compression, resize and trim media (images and videos) parameters returned by Strava's server before upload.",
) {
compatibleWith("com.strava")
val compressionQuality by intOption(
key = "compressionQuality",
title = "Compression quality (percent)",
description = "This is used as the JPEG quality setting (≤ 100).",
) { it == null || it in 1..100 }
val maxDuration by longOption(
key = "maxDuration",
title = "Max duration (seconds)",
description = "The maximum length (≤ ${60 * 60}) of a video before it gets trimmed.",
) { it == null || it in 1..60 * 60 }
val maxSize by intOption(
key = "maxSize",
title = "Max size (pixels)",
description = "The image gets resized so that the smaller dimension (width/height) does not exceed this value (≤ 10000).",
) { it == null || it in 1..10000 }
execute {
val mediaUploadParametersClass = classes.single { it.endsWith("/MediaUploadParameters;") }
compressionQuality?.let { compressionQuality ->
getCompressionQualityFingerprint.match(mediaUploadParametersClass).method.returnEarly(compressionQuality / 100f)
}
maxDuration?.let { maxDuration ->
getMaxDurationFingerprint.match(mediaUploadParametersClass).method.returnEarly(maxDuration)
}
maxSize?.let {
getMaxSizeFingerprint.match(mediaUploadParametersClass).method.returnEarly(it)
}
}
}

View File

@@ -0,0 +1,20 @@
package app.revanced.patches.strava.password
import app.revanced.patcher.Fingerprint
import app.revanced.patcher.patch.bytecodePatch
import app.revanced.util.returnEarly
@Suppress("unused")
val enablePasswordLoginPatch = bytecodePatch(
name = "Enable password login",
description = "Re-enables password login after having used an OTP code.",
) {
compatibleWith("com.strava")
execute {
fun Fingerprint.returnTrue() = method.returnEarly(true)
logInGetUsePasswordFingerprint.returnTrue()
emailChangeGetUsePasswordFingerprint.returnTrue()
}
}

View File

@@ -0,0 +1,15 @@
package app.revanced.patches.strava.password
import app.revanced.patcher.fingerprint
internal val logInGetUsePasswordFingerprint = fingerprint {
custom { method, classDef ->
method.name == "getUsePassword" && classDef.endsWith("/RequestOtpLogInNetworkResponse;")
}
}
internal val emailChangeGetUsePasswordFingerprint = fingerprint {
custom { method, classDef ->
method.name == "getUsePassword" && classDef.endsWith("/RequestEmailChangeWithOtpOrPasswordResponse;")
}
}

View File

@@ -0,0 +1,17 @@
package app.revanced.patches.strava.privacy
import app.revanced.patcher.patch.bytecodePatch
import app.revanced.util.returnEarly
@Suppress("unused")
val blockSnowplowTrackingPatch = bytecodePatch(
name = "Block Snowplow tracking",
description = "Blocks Snowplow analytics. See https://snowplow.io for more information.",
) {
compatibleWith("com.strava")
execute {
// Keep events list empty, otherwise sent to https://c.strava.com/com.snowplowanalytics.snowplow/tp2.
insertEventFingerprint.method.returnEarly()
}
}

View File

@@ -0,0 +1,9 @@
package app.revanced.patches.strava.privacy
import app.revanced.patcher.fingerprint
// https://github.com/snowplow/snowplow-android-tracker/blob/2.2.0/snowplow-tracker/src/main/java/com/snowplowanalytics/snowplow/internal/emitter/storage/SQLiteEventStore.java#L130
// Not the exact same code (e.g. returns void instead of long), even though the version number matches.
internal val insertEventFingerprint = fingerprint {
strings("Added event to database: %s")
}

View File

@@ -0,0 +1,16 @@
package app.revanced.patches.strava.quickedit
import app.revanced.patcher.patch.bytecodePatch
import app.revanced.util.returnEarly
@Suppress("unused")
val disableQuickEditPatch = bytecodePatch(
name = "Disable Quick Edit",
description = "Prevents the Quick Edit prompt from popping up.",
) {
compatibleWith("com.strava")
execute {
getHasAccessToQuickEditFingerprint.method.returnEarly()
}
}

View File

@@ -0,0 +1,10 @@
package app.revanced.patches.strava.quickedit
import app.revanced.patcher.fingerprint
internal val getHasAccessToQuickEditFingerprint = fingerprint {
returns("Z")
custom { method, _ ->
method.name == "getHasAccessToQuickEdit"
}
}

View File

@@ -1,11 +1,9 @@
package app.revanced.patches.strava.subscription
import app.revanced.patcher.fingerprint
import com.android.tools.smali.dexlib2.Opcode
internal val getSubscribedFingerprint = fingerprint {
opcodes(Opcode.IGET_BOOLEAN)
custom { method, classDef ->
classDef.endsWith("/SubscriptionDetailResponse;") && method.name == "getSubscribed"
method.name == "getSubscribed" && classDef.endsWith("/SubscriptionDetailResponse;")
}
}

View File

@@ -1,7 +1,7 @@
package app.revanced.patches.strava.subscription
import app.revanced.patcher.extensions.InstructionExtensions.replaceInstruction
import app.revanced.patcher.patch.bytecodePatch
import app.revanced.util.returnEarly
@Suppress("unused")
val unlockSubscriptionPatch = bytecodePatch(
@@ -11,9 +11,6 @@ val unlockSubscriptionPatch = bytecodePatch(
compatibleWith("com.strava")
execute {
getSubscribedFingerprint.method.replaceInstruction(
getSubscribedFingerprint.patternMatch!!.startIndex,
"const/4 v0, 0x1",
)
getSubscribedFingerprint.method.returnEarly(true)
}
}

View File

@@ -174,6 +174,7 @@ val hideLayoutComponentsPatch = bytecodePatch(
),
SwitchPreference("revanced_hide_channel_bar"),
SwitchPreference("revanced_hide_channel_watermark"),
SwitchPreference("revanced_hide_crowdfunding_box"),
SwitchPreference("revanced_hide_emergency_box"),
SwitchPreference("revanced_hide_info_panels"),
SwitchPreference("revanced_hide_join_membership_button"),
@@ -229,7 +230,6 @@ val hideLayoutComponentsPatch = bytecodePatch(
SwitchPreference("revanced_hide_chips_shelf"),
SwitchPreference("revanced_hide_community_posts"),
SwitchPreference("revanced_hide_compact_banner"),
SwitchPreference("revanced_hide_crowdfunding_box"),
SwitchPreference("revanced_hide_expandable_card"),
SwitchPreference("revanced_hide_floating_microphone_button"),
SwitchPreference(

View File

@@ -23,22 +23,19 @@ import app.revanced.util.InstructionUtils.Companion.writeOpcodes
import com.android.tools.smali.dexlib2.AccessFlags
import com.android.tools.smali.dexlib2.Opcode
import com.android.tools.smali.dexlib2.Opcode.*
import com.android.tools.smali.dexlib2.analysis.reflection.util.ReflectionUtils
import com.android.tools.smali.dexlib2.formatter.DexFormatter
import com.android.tools.smali.dexlib2.iface.Method
import com.android.tools.smali.dexlib2.iface.instruction.FiveRegisterInstruction
import com.android.tools.smali.dexlib2.iface.instruction.Instruction
import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
import com.android.tools.smali.dexlib2.iface.instruction.ReferenceInstruction
import com.android.tools.smali.dexlib2.iface.instruction.RegisterRangeInstruction
import com.android.tools.smali.dexlib2.iface.instruction.ThreeRegisterInstruction
import com.android.tools.smali.dexlib2.iface.instruction.TwoRegisterInstruction
import com.android.tools.smali.dexlib2.iface.instruction.WideLiteralInstruction
import com.android.tools.smali.dexlib2.iface.instruction.*
import com.android.tools.smali.dexlib2.iface.reference.FieldReference
import com.android.tools.smali.dexlib2.iface.reference.MethodReference
import com.android.tools.smali.dexlib2.iface.reference.Reference
import com.android.tools.smali.dexlib2.iface.reference.StringReference
import com.android.tools.smali.dexlib2.iface.value.*
import com.android.tools.smali.dexlib2.immutable.ImmutableField
import com.android.tools.smali.dexlib2.immutable.value.*
import com.android.tools.smali.dexlib2.util.MethodUtil
import java.util.EnumSet
import java.util.*
/**
* Starting from and including the instruction at index [startIndex],
@@ -180,7 +177,7 @@ internal val Instruction.isReturnInstruction: Boolean
*
* @param fieldName The name of the field to find. Partial matches are allowed.
*/
private fun Method.findInstructionIndexFromToString(fieldName: String) : Int {
private fun Method.findInstructionIndexFromToString(fieldName: String): Int {
val stringIndex = indexOfFirstInstruction {
val reference = getReference<StringReference>()
reference?.string?.contains(fieldName) == true
@@ -233,7 +230,7 @@ private fun Method.findInstructionIndexFromToString(fieldName: String) : Int {
* @param fieldName The name of the field to find. Partial matches are allowed.
*/
context(BytecodePatchContext)
internal fun Method.findMethodFromToString(fieldName: String) : MutableMethod {
internal fun Method.findMethodFromToString(fieldName: String): MutableMethod {
val methodUsageIndex = findInstructionIndexFromToString(fieldName)
return navigate(this).to(methodUsageIndex).stop()
}
@@ -243,7 +240,7 @@ internal fun Method.findMethodFromToString(fieldName: String) : MutableMethod {
*
* @param fieldName The name of the field to find. Partial matches are allowed.
*/
internal fun Method.findFieldFromToString(fieldName: String) : FieldReference {
internal fun Method.findFieldFromToString(fieldName: String): FieldReference {
val methodUsageIndex = findInstructionIndexFromToString(fieldName)
return getInstruction<ReferenceInstruction>(methodUsageIndex).getReference<FieldReference>()!!
}
@@ -838,23 +835,59 @@ fun BytecodePatchContext.forEachLiteralValueInstruction(
}
private const val RETURN_TYPE_MISMATCH = "Mismatch between override type and Method return type"
private fun MutableMethod.checkReturnType(expectedTypes: Iterable<Class<*>>) {
val returnTypeJava = ReflectionUtils.dexToJavaName(returnType)
check(expectedTypes.any { returnTypeJava == it.name }) {
"Actual return type $returnTypeJava is not contained in expected types: $expectedTypes"
}
}
/**
* Overrides the first instruction of a method with a constant `Boolean` return value.
* Overrides the first instruction of a method with returning the default value for the type (or `void`).
* None of the method code will ever execute.
*
* For methods that return an object or any array type, calling this method with `false`
* will force the method to return a `null` value.
*
* @see returnLate
*/
fun MutableMethod.returnEarly(value: Boolean = false) {
val returnType = returnType.first()
check(returnType == 'Z' || (!value && (returnType == 'V' || returnType == 'L' || returnType != '['))) {
RETURN_TYPE_MISMATCH
fun MutableMethod.returnEarly() {
val value = when (returnType) {
"V" -> null
"Z" -> ImmutableBooleanEncodedValue.FALSE_VALUE
"B" -> ImmutableByteEncodedValue(0)
"S" -> ImmutableShortEncodedValue(0)
"C" -> ImmutableCharEncodedValue(Char.MIN_VALUE)
"I" -> ImmutableIntEncodedValue(0)
"F" -> ImmutableFloatEncodedValue(0f)
"J" -> ImmutableLongEncodedValue(0)
"D" -> ImmutableDoubleEncodedValue(0.0)
else -> ImmutableNullEncodedValue.INSTANCE
}
overrideReturnValue(value.toHexString(), false)
overrideReturnValue(value, false)
}
private fun MutableMethod.returnString(value: String, late: Boolean) {
checkReturnType(String::class.java.allAssignableTypes())
overrideReturnValue(ImmutableStringEncodedValue(value), late)
}
/**
* Overrides the first instruction of a method with a constant `String` return value.
* None of the method code will ever execute.
*
* @see returnLate
*/
fun MutableMethod.returnEarly(value: String) = returnString(value, false)
/**
* Overrides all return statements with a constant `String` value.
* All method code is executed the same as unpatched.
*
* @see returnEarly
*/
fun MutableMethod.returnLate(value: String) = returnString(value, true)
private fun MutableMethod.returnByte(value: Byte, late: Boolean) {
checkReturnType(Byte::class.javaObjectType.allAssignableTypes() + Byte::class.javaPrimitiveType!!)
overrideReturnValue(ImmutableByteEncodedValue(value), late)
}
/**
@@ -863,9 +896,40 @@ fun MutableMethod.returnEarly(value: Boolean = false) {
*
* @see returnLate
*/
fun MutableMethod.returnEarly(value: Byte) {
check(returnType.first() == 'B') { RETURN_TYPE_MISMATCH }
overrideReturnValue(value.toString(), false)
fun MutableMethod.returnEarly(value: Byte) = returnByte(value, false)
/**
* Overrides all return statements with a constant `Byte` value.
* All method code is executed the same as unpatched.
*
* @see returnEarly
*/
fun MutableMethod.returnLate(value: Byte) = returnByte(value, true)
private fun MutableMethod.returnBoolean(value: Boolean, late: Boolean) {
checkReturnType(Boolean::class.javaObjectType.allAssignableTypes() + Boolean::class.javaPrimitiveType!!)
overrideReturnValue(ImmutableBooleanEncodedValue.forBoolean(value), late)
}
/**
* Overrides the first instruction of a method with a constant `Boolean` return value.
* None of the method code will ever execute.
*
* @see returnLate
*/
fun MutableMethod.returnEarly(value: Boolean) = returnBoolean(value, false)
/**
* Overrides all return statements with a constant `Boolean` value.
* All method code is executed the same as unpatched.
*
* @see returnEarly
*/
fun MutableMethod.returnLate(value: Boolean) = returnBoolean(value, true)
private fun MutableMethod.returnShort(value: Short, late: Boolean) {
checkReturnType(Short::class.javaObjectType.allAssignableTypes() + Short::class.javaPrimitiveType!!)
overrideReturnValue(ImmutableShortEncodedValue(value), late)
}
/**
@@ -874,9 +938,19 @@ fun MutableMethod.returnEarly(value: Byte) {
*
* @see returnLate
*/
fun MutableMethod.returnEarly(value: Short) {
check(returnType.first() == 'S') { RETURN_TYPE_MISMATCH }
overrideReturnValue(value.toString(), false)
fun MutableMethod.returnEarly(value: Short) = returnShort(value, false)
/**
* Overrides all return statements with a constant `Short` value.
* All method code is executed the same as unpatched.
*
* @see returnEarly
*/
fun MutableMethod.returnLate(value: Short) = returnShort(value, true)
private fun MutableMethod.returnChar(value: Char, late: Boolean) {
checkReturnType(Char::class.javaObjectType.allAssignableTypes() + Char::class.javaPrimitiveType!!)
overrideReturnValue(ImmutableCharEncodedValue(value), late)
}
/**
@@ -885,9 +959,19 @@ fun MutableMethod.returnEarly(value: Short) {
*
* @see returnLate
*/
fun MutableMethod.returnEarly(value: Char) {
check(returnType.first() == 'C') { RETURN_TYPE_MISMATCH }
overrideReturnValue(value.code.toString(), false)
fun MutableMethod.returnEarly(value: Char) = returnChar(value, false)
/**
* Overrides all return statements with a constant `Char` value.
* All method code is executed the same as unpatched.
*
* @see returnEarly
*/
fun MutableMethod.returnLate(value: Char) = returnChar(value, true)
private fun MutableMethod.returnInt(value: Int, late: Boolean) {
checkReturnType(Int::class.javaObjectType.allAssignableTypes() + Int::class.javaPrimitiveType!!)
overrideReturnValue(ImmutableIntEncodedValue(value), late)
}
/**
@@ -896,20 +980,19 @@ fun MutableMethod.returnEarly(value: Char) {
*
* @see returnLate
*/
fun MutableMethod.returnEarly(value: Int) {
check(returnType.first() == 'I') { RETURN_TYPE_MISMATCH }
overrideReturnValue(value.toString(), false)
}
fun MutableMethod.returnEarly(value: Int) = returnInt(value, false)
/**
* Overrides the first instruction of a method with a constant `Long` return value.
* None of the method code will ever execute.
* Overrides all return statements with a constant `Int` value.
* All method code is executed the same as unpatched.
*
* @see returnLate
* @see returnEarly
*/
fun MutableMethod.returnEarly(value: Long) {
check(returnType.first() == 'J') { RETURN_TYPE_MISMATCH }
overrideReturnValue(value.toString(), false)
fun MutableMethod.returnLate(value: Int) = returnInt(value, true)
private fun MutableMethod.returnFloat(value: Float, late: Boolean) {
checkReturnType(Float::class.javaObjectType.allAssignableTypes() + Float::class.javaPrimitiveType!!)
overrideReturnValue(ImmutableFloatEncodedValue(value), late)
}
/**
@@ -918,9 +1001,40 @@ fun MutableMethod.returnEarly(value: Long) {
*
* @see returnLate
*/
fun MutableMethod.returnEarly(value: Float) {
check(returnType.first() == 'F') { RETURN_TYPE_MISMATCH }
overrideReturnValue(value.toString(), false)
fun MutableMethod.returnEarly(value: Float) = returnFloat(value, false)
/**
* Overrides all return statements with a constant `Float` value.
* All method code is executed the same as unpatched.
*
* @see returnEarly
*/
fun MutableMethod.returnLate(value: Float) = returnFloat(value, true)
private fun MutableMethod.returnLong(value: Long, late: Boolean) {
checkReturnType(Long::class.javaObjectType.allAssignableTypes() + Long::class.javaPrimitiveType!!)
overrideReturnValue(ImmutableLongEncodedValue(value), late)
}
/**
* Overrides the first instruction of a method with a constant `Long` return value.
* None of the method code will ever execute.
*
* @see returnLate
*/
fun MutableMethod.returnEarly(value: Long) = returnLong(value, false)
/**
* Overrides all return statements with a constant `Long` value.
* All method code is executed the same as unpatched.
*
* @see returnEarly
*/
fun MutableMethod.returnLate(value: Long) = returnLong(value, true)
private fun MutableMethod.returnDouble(value: Double, late: Boolean) {
checkReturnType(Double::class.javaObjectType.allAssignableTypes() + Double::class.javaPrimitiveType!!)
overrideReturnValue(ImmutableDoubleEncodedValue(value), late)
}
/**
@@ -929,113 +1043,7 @@ fun MutableMethod.returnEarly(value: Float) {
*
* @see returnLate
*/
fun MutableMethod.returnEarly(value: Double) {
check(returnType.first() == 'J') { RETURN_TYPE_MISMATCH }
overrideReturnValue(value.toString(), false)
}
/**
* Overrides the first instruction of a method with a constant String return value.
* None of the method code will ever execute.
*
* Target method must have return type
* Ljava/lang/String; or Ljava/lang/CharSequence;
*
* @see returnLate
*/
fun MutableMethod.returnEarly(value: String) {
check(returnType == "Ljava/lang/String;" || returnType == "Ljava/lang/CharSequence;") {
RETURN_TYPE_MISMATCH
}
overrideReturnValue(value, false)
}
/**
* Overrides all return statements with a constant `Boolean` value.
* All method code is executed the same as unpatched.
*
* For methods that return an object or any array type, calling this method with `false`
* will force the method to return a `null` value.
*
* @see returnEarly
*/
fun MutableMethod.returnLate(value: Boolean) {
val returnType = returnType.first()
if (returnType == 'V') {
error("Cannot return late for Method of void type")
}
check(returnType == 'Z' || (!value && (returnType == 'L' || returnType == '['))) {
RETURN_TYPE_MISMATCH
}
overrideReturnValue(value.toHexString(), true)
}
/**
* Overrides all return statements with a constant `Byte` value.
* All method code is executed the same as unpatched.
*
* @see returnEarly
*/
fun MutableMethod.returnLate(value: Byte) {
check(returnType.first() == 'B') { RETURN_TYPE_MISMATCH }
overrideReturnValue(value.toString(), true)
}
/**
* Overrides all return statements with a constant `Short` value.
* All method code is executed the same as unpatched.
*
* @see returnEarly
*/
fun MutableMethod.returnLate(value: Short) {
check(returnType.first() == 'S') { RETURN_TYPE_MISMATCH }
overrideReturnValue(value.toString(), true)
}
/**
* Overrides all return statements with a constant `Char` value.
* All method code is executed the same as unpatched.
*
* @see returnEarly
*/
fun MutableMethod.returnLate(value: Char) {
check(returnType.first() == 'C') { RETURN_TYPE_MISMATCH }
overrideReturnValue(value.code.toString(), true)
}
/**
* Overrides all return statements with a constant `Int` value.
* All method code is executed the same as unpatched.
*
* @see returnEarly
*/
fun MutableMethod.returnLate(value: Int) {
check(returnType.first() == 'I') { RETURN_TYPE_MISMATCH }
overrideReturnValue(value.toString(), true)
}
/**
* Overrides all return statements with a constant `Long` value.
* All method code is executed the same as unpatched.
*
* @see returnEarly
*/
fun MutableMethod.returnLate(value: Long) {
check(returnType.first() == 'J') { RETURN_TYPE_MISMATCH }
overrideReturnValue(value.toString(), true)
}
/**
* Overrides all return statements with a constant `Float` value.
* All method code is executed the same as unpatched.
*
* @see returnEarly
*/
fun MutableMethod.returnLate(value: Float) {
check(returnType.first() == 'F') { RETURN_TYPE_MISMATCH }
overrideReturnValue(value.toString(), true)
}
fun MutableMethod.returnEarly(value: Double) = returnDouble(value, false)
/**
* Overrides all return statements with a constant `Double` value.
@@ -1043,75 +1051,164 @@ fun MutableMethod.returnLate(value: Float) {
*
* @see returnEarly
*/
fun MutableMethod.returnLate(value: Double) {
check(returnType.first() == 'D') { RETURN_TYPE_MISMATCH }
overrideReturnValue(value.toString(), true)
}
fun MutableMethod.returnLate(value: Double) = returnDouble(value, true)
/**
* Overrides all return statements with a constant String value.
* All method code is executed the same as unpatched.
*
* Target method must have return type
* Ljava/lang/String; or Ljava/lang/CharSequence;
*
* @see returnEarly
*/
fun MutableMethod.returnLate(value: String) {
check(returnType == "Ljava/lang/String;" || returnType == "Ljava/lang/CharSequence;") {
RETURN_TYPE_MISMATCH
}
overrideReturnValue(value, true)
}
private fun MutableMethod.overrideReturnValue(value: String, returnLate: Boolean) {
val instructions = if (returnType == "Ljava/lang/String;" || returnType == "Ljava/lang/CharSequence;" ) {
"""
const-string v0, "$value"
return-object v0
"""
} else when (returnType.first()) {
// If return type is an object, always return null.
'L', '[' -> {
"""
private fun MutableMethod.overrideReturnValue(value: EncodedValue?, returnLate: Boolean) {
val instructions = if (value == null) {
require(!returnLate) {
"Cannot return late for method of void type"
}
"return-void"
} else {
val encodedValue = DexFormatter.INSTANCE.getEncodedValue(value)
when (value) {
is NullEncodedValue -> {
"""
const/4 v0, 0x0
return-object v0
"""
}
"""
}
'V' -> {
"return-void"
}
is StringEncodedValue -> {
"""
const-string v0, $encodedValue
return-object v0
"""
}
'B', 'Z' -> {
"""
const/4 v0, $value
return v0
"""
}
is ByteEncodedValue -> {
if (returnType == "B") {
"""
const/4 v0, $encodedValue
return v0
"""
} else {
"""
const/4 v0, $encodedValue
invoke-static { v0 }, Ljava/lang/Byte;->valueOf(B)Ljava/lang/Byte;
move-result-object v0
return-object v0
"""
}
}
'S', 'C' -> {
"""
const/16 v0, $value
return v0
"""
}
is BooleanEncodedValue -> {
val encodedValue = value.value.toHexString()
if (returnType == "Z") {
"""
const/4 v0, $encodedValue
return v0
"""
} else {
"""
const/4 v0, $encodedValue
invoke-static { v0 }, Ljava/lang/Boolean;->valueOf(Z)Ljava/lang/Boolean;
move-result-object v0
return-object v0
"""
}
}
'I', 'F' -> {
"""
const v0, $value
return v0
"""
}
is ShortEncodedValue -> {
if (returnType == "S") {
"""
const/16 v0, $encodedValue
return v0
"""
} else {
"""
const/16 v0, $encodedValue
invoke-static { v0 }, Ljava/lang/Short;->valueOf(S)Ljava/lang/Short;
move-result-object v0
return-object v0
"""
}
}
'J', 'D' -> {
"""
const-wide v0, $value
return-wide v0
"""
}
is CharEncodedValue -> {
if (returnType == "C") {
"""
const/16 v0, $encodedValue
return v0
"""
} else {
"""
const/16 v0, $encodedValue
invoke-static { v0 }, Ljava/lang/Character;->valueOf(C)Ljava/lang/Character;
move-result-object v0
return-object v0
"""
}
}
else -> throw Exception("Return type is not supported: $this")
is IntEncodedValue -> {
if (returnType == "I") {
"""
const v0, $encodedValue
return v0
"""
} else {
"""
const v0, $encodedValue
invoke-static { v0 }, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
move-result-object v0
return-object v0
"""
}
}
is FloatEncodedValue -> {
val encodedValue = "${encodedValue}f"
if (returnType == "F") {
"""
const v0, $encodedValue
return v0
"""
} else {
"""
const v0, $encodedValue
invoke-static { v0 }, Ljava/lang/Float;->valueOf(F)Ljava/lang/Float;
move-result-object v0
return-object v0
"""
}
}
is LongEncodedValue -> {
val encodedValue = "${encodedValue}L"
if (returnType == "J") {
"""
const-wide v0, $encodedValue
return-wide v0
"""
} else {
"""
const-wide v0, $encodedValue
invoke-static { v0 }, Ljava/lang/Long;->valueOf(J)Ljava/lang/Long;
move-result-object v0
return-object v0
"""
}
}
is DoubleEncodedValue -> {
if (returnType == "D") {
"""
const-wide v0, $encodedValue
return-wide v0
"""
} else {
"""
const-wide v0, $encodedValue
invoke-static { v0 }, Ljava/lang/Double;->valueOf(D)Ljava/lang/Double;
move-result-object v0
return-object v0
"""
}
}
else -> throw IllegalArgumentException("Value $value cannot be returned from $this")
}
}
if (returnLate) {

View File

@@ -7,4 +7,21 @@ internal object Utils {
.trimIndent() // Remove the leading newline.
}
internal fun Boolean.toHexString(): String = if (this) "0x1" else "0x0"
internal fun Boolean.toHexString(): String = if (this) "0x1" else "0x0"
internal fun Class<*>.allAssignableTypes(): Set<Class<*>> {
val result = mutableSetOf<Class<*>>()
fun visit(child: Class<*>?) {
if (child == null || !result.add(child)) {
return
}
child.interfaces.forEach(::visit)
visit(child.superclass)
}
visit(this)
return result
}

View File

@@ -282,9 +282,9 @@ Second \"item\" text"</string>
<string name="revanced_hide_video_recommendation_labels_title">إخفاء تسميات توصيات الفيديو</string>
<string name="revanced_hide_video_recommendation_labels_summary_on">تم إخفاء تسميات \'شاهد المستخدمون أيضًا\' و\'قد يعجبك أيضًا\' في نتائج البحث</string>
<string name="revanced_hide_video_recommendation_labels_summary_off">يتم عرض تسميات \'شاهد المستخدمون أيضًا\' و\'قد يعجبك أيضًا\' في نتائج البحث</string>
<string name="revanced_hide_visual_spacer_title">إخفاء المسافة البادئة المرئية</string>
<string name="revanced_hide_visual_spacer_summary_on">المسافة البادئة المرئية مخفية</string>
<string name="revanced_hide_visual_spacer_summary_off">المسافة البادئة المرئية ظاهرة</string>
<string name="revanced_hide_visual_spacer_title">إخفاء الفاصل المرئي</string>
<string name="revanced_hide_visual_spacer_summary_on">تم إخفاء الفاصل المرئي</string>
<string name="revanced_hide_visual_spacer_summary_off">يتم عرض الفاصل المرئي</string>
<!-- https://logos.fandom.com/wiki/YouTube/Yoodles -->
<string name="revanced_hide_doodles_title">إخفاء رسومات YouTube</string>
<string name="revanced_hide_doodles_summary_on">تم إخفاء رسوم Doodles المتحركة على شعار YouTube</string>
@@ -357,9 +357,9 @@ Second \"item\" text"</string>
<string name="revanced_hide_key_concepts_section_title">إخفاء \'المفاهيم الأساسية\'</string>
<string name="revanced_hide_key_concepts_section_summary_on">تم إخفاء قسم المفاهيم الأساسية</string>
<string name="revanced_hide_key_concepts_section_summary_off">يتم عرض قسم المفاهيم الأساسية</string>
<string name="revanced_hide_subscribe_button_title">إخفاء زر الاشتراك</string>
<string name="revanced_hide_subscribe_button_summary_on">تم إخفاء زر الاشتراك</string>
<string name="revanced_hide_subscribe_button_summary_off">يتم عرض زر الاشتراك</string>
<string name="revanced_hide_subscribe_button_title">إخفاء زر اشتراك</string>
<string name="revanced_hide_subscribe_button_summary_on">تم إخفاء زر اشتراك</string>
<string name="revanced_hide_subscribe_button_summary_off">يتم عرض زر اشتراك</string>
<string name="revanced_hide_transcript_section_title">إخفاء النص</string>
<string name="revanced_hide_transcript_section_summary_on">تم إخفاء قسم النص</string>
<string name="revanced_hide_transcript_section_summary_off">يتم عرض قسم النص</string>
@@ -383,8 +383,8 @@ Second \"item\" text"</string>
<string name="revanced_channel_screen_summary">إخفاء أو عرض مكونات صفحة القناة</string>
<!-- 'Community' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_community_button_title">إخفاء زر المنتدى</string>
<string name="revanced_hide_community_button_summary_on">تم إخفاء زر المجتمع</string>
<string name="revanced_hide_community_button_summary_off">يتم عرض زر المجتمع</string>
<string name="revanced_hide_community_button_summary_on">تم إخفاء زر المنتدى</string>
<string name="revanced_hide_community_button_summary_off">يتم عرض زر المنتدى</string>
<!-- 'For You' should be translated using the same localized wording YouTube displays. -->
<string name="revanced_hide_for_you_shelf_title">إخفاء رف \'مقترحات لك\'</string>
<string name="revanced_hide_for_you_shelf_summary_on">تم إخفاء رف مقترح لك</string>
@@ -404,9 +404,9 @@ Second \"item\" text"</string>
<string name="revanced_hide_store_button_summary_on">تم إخفاء زر المتجر</string>
<string name="revanced_hide_store_button_summary_off">يتم عرض زر المتجر</string>
<!-- 'Subscribe' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_subscribe_button_in_channel_page_title">إخفاء زر الاشتراك</string>
<string name="revanced_hide_subscribe_button_in_channel_page_summary_on">تم إخفاء زر الاشتراك</string>
<string name="revanced_hide_subscribe_button_in_channel_page_summary_off">يتم عرض زر الاشتراك</string>
<string name="revanced_hide_subscribe_button_in_channel_page_title">إخفاء زر اشتراك</string>
<string name="revanced_hide_subscribe_button_in_channel_page_summary_on">تم إخفاء زر اشتراك</string>
<string name="revanced_hide_subscribe_button_in_channel_page_summary_off">يتم عرض زر اشتراك</string>
<string name="revanced_comments_screen_title">التعليقات</string>
<string name="revanced_comments_screen_summary">إخفاء أو عرض مكونات قسم التعليقات</string>
<string name="revanced_hide_comments_ai_chat_summary_title">إخفاء ملخص محادثات الذكاء الاصطناعي</string>
@@ -561,7 +561,7 @@ Second \"item\" text"</string>
<string name="revanced_remove_viewer_discretion_dialog_user_dialog_message">وهذا لا يتجاوز قيود السن. بل يقبلها تلقائيًا.</string>
</patch>
<patch id="layout.hide.signintotv.disableSignInToTvPopupPatch">
<string name="revanced_disable_signin_to_tv_popup_title">تعطيل النافذة المنبثقة لتسجيل الدخول إلى التلفزيون</string>
<string name="revanced_disable_signin_to_tv_popup_title">تعطيل نافذة تسجيل الدخول إلى التلفزيون</string>
<string name="revanced_disable_signin_to_tv_popup_summary_on">تم تعطيل نافذة تسجيل الدخول إلى التلفزيون</string>
<string name="revanced_disable_signin_to_tv_popup_summary_off">تم تمكين نافذة تسجيل الدخول إلى التلفزيون</string>
</patch>
@@ -894,16 +894,16 @@ Second \"item\" text"</string>
<string name="revanced_hide_shorts_history_title">إخفاء Shorts في السجلّ</string>
<string name="revanced_hide_shorts_history_summary_on">مخفي في السجلّ</string>
<string name="revanced_hide_shorts_history_summary_off">يُعرض في السجلّ</string>
<string name="revanced_hide_shorts_auto_dubbed_label_title">إخفاء تسمية \دبلج تلقائياً\"</string>
<string name="revanced_hide_shorts_auto_dubbed_label_summary_on">تم إخفاء تسمية الدبلجة التلقائية</string>
<string name="revanced_hide_shorts_auto_dubbed_label_summary_off">يتم عرض تسمية الدبلجة التلقائية</string>
<string name="revanced_hide_shorts_auto_dubbed_label_title">إخفاء تسمية \'مُدبلج تلقائيًا\'</string>
<string name="revanced_hide_shorts_auto_dubbed_label_summary_on">تم إخفاء تسمية \'مُدبلج تلقائيًا\'</string>
<string name="revanced_hide_shorts_auto_dubbed_label_summary_off">يتم عرض تسمية \'مُدبلج تلقائيًا\'</string>
<string name="revanced_hide_shorts_super_thanks_button_title">إخفاء زر شراء Super Thanks</string>
<string name="revanced_hide_shorts_super_thanks_button_summary_on">تم إخفاء زر شراء Super Thanks</string>
<string name="revanced_hide_shorts_super_thanks_button_summary_off">يتم عرض زر شراء Super Thanks</string>
<string name="revanced_hide_shorts_effect_button_title">إخفاء زر التأثير</string>
<string name="revanced_hide_shorts_effect_button_summary_on">تم إخفاء زر التأثير</string>
<string name="revanced_hide_shorts_effect_button_summary_off">يتم عرض زر التأثير</string>
<string name="revanced_hide_shorts_green_screen_button_title">إخفاء زر الشاشة الخضراء</string>
<string name="revanced_hide_shorts_green_screen_button_title">إخفاء زر \'الشاشة الخضراء\'</string>
<string name="revanced_hide_shorts_green_screen_button_summary_on">تم إخفاء زر الشاشة الخضراء</string>
<string name="revanced_hide_shorts_green_screen_button_summary_off">يتم عرض زر الشاشة الخضراء</string>
<string name="revanced_hide_shorts_hashtag_button_title">إخفاء زر هاشتاج</string>
@@ -913,13 +913,13 @@ Second \"item\" text"</string>
<string name="revanced_hide_shorts_join_button_title">إخفاء زر الانضمام</string>
<string name="revanced_hide_shorts_join_button_summary_on">تم إخفاء زر الانضمام</string>
<string name="revanced_hide_shorts_join_button_summary_off">يتم عرض زر الانضمام</string>
<string name="revanced_hide_shorts_live_preview_title">إخفاء المعاينة المباشرة</string>
<string name="revanced_hide_shorts_live_preview_summary_on">تم إخفاء معاينة البث المباشر</string>
<string name="revanced_hide_shorts_live_preview_summary_off">تم عرض معاينة البث المباشر</string>
<string name="revanced_hide_shorts_live_preview_title">إخفاء معاينة المحتوى المباشر</string>
<string name="revanced_hide_shorts_live_preview_summary_on">تم إخفاء معاينة المحتوى المباشر</string>
<string name="revanced_hide_shorts_live_preview_summary_off">يتم عرض معاينة المحتوى المباشر</string>
<string name="revanced_hide_shorts_location_label_title">إخفاء تسمية الموقع</string>
<string name="revanced_hide_shorts_location_label_summary_on">تم إخفاء تسمية الموقع</string>
<string name="revanced_hide_shorts_location_label_summary_off">يتم عرض تسمية الموقع</string>
<string name="revanced_hide_shorts_new_posts_button_title">إخفاء زر المنشورات الجديدة</string>
<string name="revanced_hide_shorts_new_posts_button_title">إخفاء زر \'منشورات جديدة\'</string>
<string name="revanced_hide_shorts_new_posts_button_summary_on">تم إخفاء زر المنشورات الجديدة</string>
<string name="revanced_hide_shorts_new_posts_button_summary_off">يتم عرض زر المنشورات الجديدة</string>
<string name="revanced_hide_shorts_paused_overlay_buttons_title">إخفاء أزرار واجهة التوقف</string>
@@ -928,7 +928,7 @@ Second \"item\" text"</string>
<string name="revanced_hide_shorts_preview_comment_title">إخفاء تعليق المعاينة</string>
<string name="revanced_hide_shorts_preview_comment_summary_on">تم إخفاء تعليق المعاينة</string>
<string name="revanced_hide_shorts_preview_comment_summary_off">يتم عرض تعليق المعاينة</string>
<string name="revanced_hide_shorts_save_sound_button_title">إخفاء زر حفظ الموسيقى</string>
<string name="revanced_hide_shorts_save_sound_button_title">إخفاء زر \'حفظ الموسيقى\'</string>
<string name="revanced_hide_shorts_save_sound_button_summary_on">تم إخفاء زر حفظ الموسيقى</string>
<string name="revanced_hide_shorts_save_sound_button_summary_off">يتم عرض زر حفظ الموسيقى</string>
<string name="revanced_hide_shorts_search_suggestions_title">إخفاء اقتراحات البحث</string>
@@ -949,10 +949,10 @@ Second \"item\" text"</string>
<string name="revanced_hide_shorts_upcoming_button_title">إخفاء زر القادم</string>
<string name="revanced_hide_shorts_upcoming_button_summary_on">تم إخفاء زر القادم</string>
<string name="revanced_hide_shorts_upcoming_button_summary_off">يتم عرض زر القادم</string>
<string name="revanced_hide_shorts_use_sound_button_title">إخفاء زر استخدام هذا الصوت</string>
<string name="revanced_hide_shorts_use_sound_button_title">إخفاء زر \'استخدام هذا الصوت\'</string>
<string name="revanced_hide_shorts_use_sound_button_summary_on">تم إخفاء زر استخدام هذا الصوت</string>
<string name="revanced_hide_shorts_use_sound_button_summary_off">يتم عرض زر استخدام هذا الصوت</string>
<string name="revanced_hide_shorts_use_template_button_title">إخفاء زر استخدام النموذج</string>
<string name="revanced_hide_shorts_use_template_button_title">إخفاء زر \'استخدام النموذج\'</string>
<string name="revanced_hide_shorts_use_template_button_summary_on">تم إخفاء زر استخدم هذا النموذج</string>
<string name="revanced_hide_shorts_use_template_button_summary_off">يتم عرض زر استخدم هذا النموذج</string>
<string name="revanced_hide_shorts_like_fountain_title">إخفاء التأثير الفوّار لـزر أعجبني</string>

View File

@@ -187,7 +187,7 @@ Gözlənilməz hallardan xəbərdar olmayacaqsınız."</string>
<string name="revanced_settings_screen_00_about_title">Haqqında</string>
<string name="revanced_settings_screen_01_ads_title">Reklamlar</string>
<string name="revanced_settings_screen_02_alt_thumbnails_title">Seçmə miniatürlər</string>
<string name="revanced_settings_screen_03_feed_title">Axın</string>
<string name="revanced_settings_screen_03_feed_title">Səhifələnmə</string>
<string name="revanced_settings_screen_04_general_title">Ümumi</string>
<string name="revanced_settings_screen_05_player_title">Oynadıcı</string>
<string name="revanced_settings_screen_07_seekbar_title">İrəliləyiş cizgisi</string>
@@ -282,9 +282,9 @@ Hər halda, bunu aktivləşdirmə IP ünvanınız kimi bəzi istifadəçi məlum
<string name="revanced_hide_video_recommendation_labels_title">Video tövsiyə etiketlərini gizlət</string>
<string name="revanced_hide_video_recommendation_labels_summary_on">\'İnsanlar həmçinin izləyiblər\' və \'Bunu da bəyənə bilərsiniz\' etiketləri axtarış nəticələrində gizlədilib</string>
<string name="revanced_hide_video_recommendation_labels_summary_off">\'İnsanlar həmçinin izləyiblər\' və \'Bunu da bəyənə bilərsiniz\' etiketləri axtarış nəticələrində görünür</string>
<string name="revanced_hide_visual_spacer_title">Vizual ayırıcı gizlət</string>
<string name="revanced_hide_visual_spacer_title">Vizual ayırıcını gizlət</string>
<string name="revanced_hide_visual_spacer_summary_on">Vizual ayırıcı gizlənib</string>
<string name="revanced_hide_visual_spacer_summary_off">Vizual ayırıcıstərilib</string>
<string name="revanced_hide_visual_spacer_summary_off">Vizual ayırıcırünür</string>
<!-- https://logos.fandom.com/wiki/YouTube/Yoodles -->
<string name="revanced_hide_doodles_title">YouTube Doodle-ları gizlət</string>
<string name="revanced_hide_doodles_summary_on">YouTube Doodles animasiyası simvolda gizlidir</string>
@@ -383,8 +383,8 @@ Hər halda, bunu aktivləşdirmə IP ünvanınız kimi bəzi istifadəçi məlum
<string name="revanced_channel_screen_summary">Kanal səhifə elementlərini gizlət və ya göstər</string>
<!-- 'Community' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_community_button_title">İcma düyməsini gizlət</string>
<string name="revanced_hide_community_button_summary_on">İcmaya düyməsi gizlidir</string>
<string name="revanced_hide_community_button_summary_off">İcmaya düyməsi görünür</string>
<string name="revanced_hide_community_button_summary_on">İcma düyməsi gizlidir</string>
<string name="revanced_hide_community_button_summary_off">İcma düyməsi görünür</string>
<!-- 'For You' should be translated using the same localized wording YouTube displays. -->
<string name="revanced_hide_for_you_shelf_title">\"Sizin üçün\" bölməsin gizlət</string>
<string name="revanced_hide_for_you_shelf_summary_on">Sizin üçün cərgəsi gizlidir</string>
@@ -548,11 +548,11 @@ Bu xüsusiyyət yalnız köhnə cihazlar üçün mövcuddur"</string>
<string name="revanced_share_copy_url_success">URL buferə köçürüldü</string>
<string name="revanced_share_copy_url_timestamp_success">Vaxt möhürlü URL köçürüldü</string>
<string name="revanced_copy_video_url_title">Video URL-i köçürmə düyməsin göstər</string>
<string name="revanced_copy_video_url_summary_on">Video URL-ini kopyala düyməsi görünür. Video URL-ini kopyalamaq üçün toxunun. Zaman nişanı ilə kopyalamaq üçün toxunub saxlayın</string>
<string name="revanced_copy_video_url_summary_off">Video URL-ini kopyala düyməsi görünmür</string>
<string name="revanced_copy_video_url_summary_on">Video URL-ni köçür düyməsi görünür. Video URL-ini köçürmək üçün toxunun. Vaxt ştampı ilə köçürmək üçün toxunub saxlayın</string>
<string name="revanced_copy_video_url_summary_off">Video URL-ni köçür düyməsi görünmür</string>
<string name="revanced_copy_video_url_timestamp_title">Vaxt möhürü URL köçür düyməsi göstər</string>
<string name="revanced_copy_video_url_timestamp_summary_on">Zaman nişanı URL-ini kopyala düyməsi görünür. Zaman nişanı ilə video URL-ini kopyalamaq üçün toxunun. Zaman nişanı olmadan kopyalamaq üçün toxunub saxlayın</string>
<string name="revanced_copy_video_url_timestamp_summary_off">Zaman nişanı URL-ini kopyala düyməsi görünmür</string>
<string name="revanced_copy_video_url_timestamp_summary_on">Vaxt damğalı URL-ni köçür düyməsi görünür. Vaxt damğası ilə video URL-ni köçürmək üçün toxunun. Vaxt damğası olmadan köçürmək üçün toxunub saxla</string>
<string name="revanced_copy_video_url_timestamp_summary_off">Vaxt damğalı URL-ni köçür düyməsi görünmür</string>
</patch>
<patch id="interaction.dialog.removeViewerDiscretionDialogPatch">
<string name="revanced_remove_viewer_discretion_dialog_title">İzləyici mülahizə dialoqun sil</string>
@@ -561,7 +561,7 @@ Bu xüsusiyyət yalnız köhnə cihazlar üçün mövcuddur"</string>
<string name="revanced_remove_viewer_discretion_dialog_user_dialog_message">Bu, yaş məhdudiyyətini ötürmür. Sadəcə birbaşa qəbul edir.</string>
</patch>
<patch id="layout.hide.signintotv.disableSignInToTvPopupPatch">
<string name="revanced_disable_signin_to_tv_popup_title">TV ani görüntüsü girişin qapat</string>
<string name="revanced_disable_signin_to_tv_popup_title">\"TV-yə daxil olun\" ani görüntüsün qapat</string>
<string name="revanced_disable_signin_to_tv_popup_summary_on">TV ani görüntüyə giriş qapadılıb</string>
<string name="revanced_disable_signin_to_tv_popup_summary_off">TV ani görüntüyə giriş işləkdir</string>
</patch>
@@ -919,7 +919,7 @@ Səs treki menyusunu göstərmək üçün \"Video yayımları saxtalaşdır\"-ı
<string name="revanced_hide_shorts_location_label_title">Məkan etiketini gizlət</string>
<string name="revanced_hide_shorts_location_label_summary_on">Məkan etiketi gizlidir</string>
<string name="revanced_hide_shorts_location_label_summary_off">Məkan etiketi göstərilir</string>
<string name="revanced_hide_shorts_new_posts_button_title">Yeni elanlar düyməsini gizlət</string>
<string name="revanced_hide_shorts_new_posts_button_title">\"Yeni elanlar\" düyməsini gizlət</string>
<string name="revanced_hide_shorts_new_posts_button_summary_on">Yeni elanlar düyməsi gizlidir</string>
<string name="revanced_hide_shorts_new_posts_button_summary_off">Yeni elanlar düyməsi göstərilir</string>
<string name="revanced_hide_shorts_paused_overlay_buttons_title">Dayandırma örtük düymələrini gizlət</string>
@@ -928,7 +928,7 @@ Səs treki menyusunu göstərmək üçün \"Video yayımları saxtalaşdır\"-ı
<string name="revanced_hide_shorts_preview_comment_title">Öncül baxış şərhini gizlət</string>
<string name="revanced_hide_shorts_preview_comment_summary_on">Öncül baxış şərhi gizlidir</string>
<string name="revanced_hide_shorts_preview_comment_summary_off">Öncül baxış şərhi göstərilir</string>
<string name="revanced_hide_shorts_save_sound_button_title">\'Musiqini yadda saxla\' düyməsini gizlət</string>
<string name="revanced_hide_shorts_save_sound_button_title">\'Musiqini saxla\' düyməsini gizlət</string>
<string name="revanced_hide_shorts_save_sound_button_summary_on">\"Musiqini saxla\" düyməsi gizlidir</string>
<string name="revanced_hide_shorts_save_sound_button_summary_off">\"Musiqini saxla\" düyməsi göstərilir</string>
<string name="revanced_hide_shorts_search_suggestions_title">Axtarış təkliflərini gizlət</string>
@@ -949,10 +949,10 @@ Səs treki menyusunu göstərmək üçün \"Video yayımları saxtalaşdır\"-ı
<string name="revanced_hide_shorts_upcoming_button_title">Yaxınlaşan düyməsini gizlət</string>
<string name="revanced_hide_shorts_upcoming_button_summary_on">\"Yaxınlaşan\" düyməsi gizlidir</string>
<string name="revanced_hide_shorts_upcoming_button_summary_off">\"Yaxınlaşan\" düyməsi göstərilir</string>
<string name="revanced_hide_shorts_use_sound_button_title">Bu səsi işlət düyməsini gizlət</string>
<string name="revanced_hide_shorts_use_sound_button_title">\"Bu səsi işlət\" düyməsini gizlət</string>
<string name="revanced_hide_shorts_use_sound_button_summary_on">Bu səsi işlət düyməsi gizlidir</string>
<string name="revanced_hide_shorts_use_sound_button_summary_off">Bu səsi işlət düyməsi görünür</string>
<string name="revanced_hide_shorts_use_template_button_title">Bu şablonu işlət düyməsini gizlət</string>
<string name="revanced_hide_shorts_use_template_button_title">\"Bu şablonu işlət\" düyməsini gizlət</string>
<string name="revanced_hide_shorts_use_template_button_summary_on">Bu şablonu işlət düyməsi gizlidir</string>
<string name="revanced_hide_shorts_use_template_button_summary_off">Bu şablonu işlət düyməsi görünür</string>
<string name="revanced_hide_shorts_like_fountain_title">Bəyənmə düyməsi fontan animasiyasın gizlət</string>
@@ -1594,12 +1594,12 @@ Bunu aktivləşdirmə daha yüksək video keyfiyyətləri əngəlin silə bilər
</patch>
<patch id="video.speed.button.playbackSpeedButtonPatch">
<string name="revanced_playback_speed_dialog_button_title">Sürət dialoq düyməsini göstər</string>
<string name="revanced_playback_speed_dialog_button_summary_on">Sürət dialoqu düyməsi görünür. Oxutma sürətini ilkin vəziyyətinə qaytarmaq üçün toxunub saxlayın</string>
<string name="revanced_playback_speed_dialog_button_summary_on">Sürət dialoqu düyməsi görünür. Oynatma sürətini standarta qaytarmaq üçün toxunub saxla</string>
<string name="revanced_playback_speed_dialog_button_summary_off">Sürət dialoqu düyməsi görünmür</string>
</patch>
<patch id="video.quality.button.videoQualityDialogButtonPatch">
<string name="revanced_video_quality_dialog_button_title">Video keyfiyyəti düyməsini göstər</string>
<string name="revanced_video_quality_dialog_button_summary_on">Video keyfiyyəti düyməsi görünür. Keyfiyyəti ilkin vəziyyətinə qaytarmaq üçün toxunub saxlayın</string>
<string name="revanced_video_quality_dialog_button_summary_on">Video keyfiyyəti düyməsi görünür. Keyfiyyəti standarta qaytarmaq üçün toxunub saxla</string>
<string name="revanced_video_quality_dialog_button_summary_off">Video keyfiyyəti düyməsi görünmür</string>
</patch>
<patch id="video.speed.custom.customPlaybackSpeedPatch">

View File

@@ -896,7 +896,7 @@ Second \"item\" text"</string>
<string name="revanced_hide_shorts_history_title">Shorts στο ιστορικό παρακολούθησης</string>
<string name="revanced_hide_shorts_history_summary_on">Κρυμμένα</string>
<string name="revanced_hide_shorts_history_summary_off">Εμφανίζονται</string>
<string name="revanced_hide_shorts_auto_dubbed_label_title">Ετικέτα αυτόματης μεταγλώττισης</string>
<string name="revanced_hide_shorts_auto_dubbed_label_title">Ετικέτα «Αυτόματη μεταγλώττιση»</string>
<string name="revanced_hide_shorts_auto_dubbed_label_summary_on">Κρυμμένη</string>
<string name="revanced_hide_shorts_auto_dubbed_label_summary_off">Εμφανίζεται</string>
<string name="revanced_hide_shorts_super_thanks_button_title">Κουμπί «Αγορά Super Thanks»</string>
@@ -915,7 +915,7 @@ Second \"item\" text"</string>
<string name="revanced_hide_shorts_join_button_title">Κουμπί «Συμμετοχή»</string>
<string name="revanced_hide_shorts_join_button_summary_on">Κρυμμένο</string>
<string name="revanced_hide_shorts_join_button_summary_off">Εμφανίζεται</string>
<string name="revanced_hide_shorts_live_preview_title">Προεπισκόπηση live</string>
<string name="revanced_hide_shorts_live_preview_title">Προεπισκόπηση ζωντανής μετάδοσης</string>
<string name="revanced_hide_shorts_live_preview_summary_on">Κρυμμένη</string>
<string name="revanced_hide_shorts_live_preview_summary_off">Εμφανίζεται</string>
<string name="revanced_hide_shorts_location_label_title">Ετικέτα τοποθεσίας</string>

View File

@@ -282,9 +282,9 @@ Tämän käyttöönotto kirjaa myös joitakin käyttäjätietoja, kuten IP-osoit
<string name="revanced_hide_video_recommendation_labels_title">Piilota videosuositusten tunnisteet</string>
<string name="revanced_hide_video_recommendation_labels_summary_on">\'Ihmiset katsoivat myös\' ja \'Saatat myös pitää\' -tunnisteet piilotetaan hakutuloksissa</string>
<string name="revanced_hide_video_recommendation_labels_summary_off">\"Ihmiset katsoivat myös\" ja \"Saatat myös pitää\" -otsikot näkyvät hakutuloksissa</string>
<string name="revanced_hide_visual_spacer_title">Piilota visuaalinen väliosa</string>
<string name="revanced_hide_visual_spacer_summary_on">Visuaalinen väliosa on piilotettu</string>
<string name="revanced_hide_visual_spacer_summary_off">Visuaalinen väliosa on näkyvissä</string>
<string name="revanced_hide_visual_spacer_title">Piilota visuaalinen välikappale</string>
<string name="revanced_hide_visual_spacer_summary_on">Visuaalinen välikappale piilotetaan</string>
<string name="revanced_hide_visual_spacer_summary_off">Visuaalinen välikappale näytetään</string>
<!-- https://logos.fandom.com/wiki/YouTube/Yoodles -->
<string name="revanced_hide_doodles_title">Piilota YouTube Doodlet</string>
<string name="revanced_hide_doodles_summary_on">Logon YouTube Doodles -animaatio piilotetaan</string>
@@ -345,12 +345,12 @@ Jos Doodle näkyy tällä hetkellä alueellasi ja tämä piilotusasetus on käyt
<string name="revanced_hide_podcast_section_title">Piilota \"Tutustu podcastiin\"</string>
<string name="revanced_hide_podcast_section_summary_on">Tutustu podcastiin -osio piilotetaan</string>
<string name="revanced_hide_podcast_section_summary_off">Tutustu podcastiin -osio näytetään</string>
<string name="revanced_hide_featured_links_section_title">Piilota esitellyt linkit</string>
<string name="revanced_hide_featured_links_section_summary_on">Suositeltujen linkkien osio piilotetaan</string>
<string name="revanced_hide_featured_links_section_summary_off">Suositeltujen linkkien osio näytetään</string>
<string name="revanced_hide_featured_links_section_title">Piilota suositellut linkit</string>
<string name="revanced_hide_featured_links_section_summary_on">Suositellut linkit -osio piilotetaan</string>
<string name="revanced_hide_featured_links_section_summary_off">Suositellut linkit -osio näytetään</string>
<string name="revanced_hide_featured_videos_section_title">Piilota suositellut videot</string>
<string name="revanced_hide_featured_videos_section_summary_on">Suositeltujen videoiden osio piilotetaan</string>
<string name="revanced_hide_featured_videos_section_summary_off">Suositeltujen videoiden osio näytetään</string>
<string name="revanced_hide_featured_videos_section_summary_on">Suositellut videot -osio piilotetaan</string>
<string name="revanced_hide_featured_videos_section_summary_off">Suositellut videot -osio näytetään</string>
<string name="revanced_hide_info_cards_section_title">Piilota tietokortit</string>
<string name="revanced_hide_info_cards_section_summary_on">Infokortit-osio piilotetaan</string>
<string name="revanced_hide_info_cards_section_summary_off">Infokortit-osio näytetään</string>
@@ -382,7 +382,7 @@ Jos Doodle näkyy tällä hetkellä alueellasi ja tämä piilotusasetus on käyt
<string name="revanced_channel_screen_title">Kanavasivu</string>
<string name="revanced_channel_screen_summary">Piilota tai näytä kanavasivun osia</string>
<!-- 'Community' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_community_button_title">Piilota yhteisöpainike</string>
<string name="revanced_hide_community_button_title">Piilota Yhteisö-painike</string>
<string name="revanced_hide_community_button_summary_on">Yhteisö-painike piilotetaan</string>
<string name="revanced_hide_community_button_summary_off">Yhteisö-painike näytetään</string>
<!-- 'For You' should be translated using the same localized wording YouTube displays. -->
@@ -548,11 +548,11 @@ Tämä ominaisuus on käytettävissä vain vanhemmilla laitteilla"</string>
<string name="revanced_share_copy_url_success">URL-osoite kopioitiin leikepöydälle</string>
<string name="revanced_share_copy_url_timestamp_success">Aikaleimattu URL-osoite kopioitiin</string>
<string name="revanced_copy_video_url_title">Näytä videon URL-osoitteen kopiointipainike</string>
<string name="revanced_copy_video_url_summary_on">Kopioi videon URL -painike näytetään. Napauta kopioidaksesi videon URL:n. Paina pitkään kopioidaksesi aikaleimalla.</string>
<string name="revanced_copy_video_url_summary_on">Kopioi videon URL -painike näytetään. Napauta kopioidaksesi videon URL:n. Paina pitkään kopioidaksesi aikaleimalla</string>
<string name="revanced_copy_video_url_summary_off">Kopioi videon URL -painiketta ei näytetä</string>
<string name="revanced_copy_video_url_timestamp_title">Näytä videon aikaleimatun URL-osoitteen kopiointipainike</string>
<string name="revanced_copy_video_url_timestamp_summary_on">Kopioi aikaleiman URL -painike näytetään. Napauta kopioidaksesi videon URL:n aikaleimalla. Paina pitkään kopioidaksesi ilman aikaleimaa.</string>
<string name="revanced_copy_video_url_timestamp_summary_off">Kopioi aikaleiman URL -painiketta ei näytetä</string>
<string name="revanced_copy_video_url_timestamp_summary_on">Kopioi aikaleimattu URL -painike näytetään. Napauta kopioidaksesi videon URL:n aikaleimalla. Paina pitkään kopioidaksesi ilman aikaleimaa</string>
<string name="revanced_copy_video_url_timestamp_summary_off">Kopioi aikaleimattu URL -painiketta ei näytetä</string>
</patch>
<patch id="interaction.dialog.removeViewerDiscretionDialogPatch">
<string name="revanced_remove_viewer_discretion_dialog_title">Poista katsojan harkinta -valintaikkuna</string>
@@ -823,12 +823,12 @@ Näyttääksesi ääniraitavalikon, muuta \"Videostriimien naamioiminen\" -asetu
<string name="revanced_hide_player_flyout_watch_in_vr_title">Piilota Katso VR-tilassa</string>
<string name="revanced_hide_player_flyout_watch_in_vr_summary_on">Katso VR-tilassa -valinta piilotetaan</string>
<string name="revanced_hide_player_flyout_watch_in_vr_summary_off">Katso VR-tilassa -valinta näytetään</string>
<string name="revanced_hide_player_flyout_video_quality_title">Piilota videolaatuvalikko</string>
<string name="revanced_hide_player_flyout_video_quality_summary_on">Videolaatuvalikko piilotetaan</string>
<string name="revanced_hide_player_flyout_video_quality_summary_off">Videolaatuvalikko näytetään</string>
<string name="revanced_hide_player_flyout_video_quality_footer_title">Piilota videolaatuvalikon alatunniste</string>
<string name="revanced_hide_player_flyout_video_quality_footer_summary_on">Videolaatuvalikon alatunniste piilotetaan</string>
<string name="revanced_hide_player_flyout_video_quality_footer_summary_off">Videolaatuvalikon alatunniste näytetään</string>
<string name="revanced_hide_player_flyout_video_quality_title">Piilota videon laatuvalikko</string>
<string name="revanced_hide_player_flyout_video_quality_summary_on">Videon laatuvalikko piilotetaan</string>
<string name="revanced_hide_player_flyout_video_quality_summary_off">Videon laatuvalikko näytetään</string>
<string name="revanced_hide_player_flyout_video_quality_footer_title">Piilota videon laatuvalikon alatunniste</string>
<string name="revanced_hide_player_flyout_video_quality_footer_summary_on">Videon laatuvalikon alatunniste piilotetaan</string>
<string name="revanced_hide_player_flyout_video_quality_footer_summary_off">Videon laatuvalikon alatunniste näytetään</string>
</patch>
<patch id="layout.buttons.overlay.hidePlayerOverlayButtonsPatch">
<string name="revanced_hide_autoplay_button_title">Piilota Automaattinen toisto -painike</string>
@@ -895,15 +895,15 @@ Näyttääksesi ääniraitavalikon, muuta \"Videostriimien naamioiminen\" -asetu
<string name="revanced_hide_shorts_history_summary_on">Piilotetaan katseluhistoriassa</string>
<string name="revanced_hide_shorts_history_summary_off">Näytetään katseluhistoriassa</string>
<string name="revanced_hide_shorts_auto_dubbed_label_title">Piilota \"Automaattisesti jälkiäänitetty\" -merkintä</string>
<string name="revanced_hide_shorts_auto_dubbed_label_summary_on">Automaattisesti jälkiäänitetty merkintä on piilotettu</string>
<string name="revanced_hide_shorts_auto_dubbed_label_summary_off">Automaattisesti jälkiäänitetty merkintä näytetään</string>
<string name="revanced_hide_shorts_super_thanks_button_title">Piilota \"Osta Super Kiitokset\" -painike</string>
<string name="revanced_hide_shorts_auto_dubbed_label_summary_on">Automaattisesti jälkiäänitetty -merkintä piilotetaan</string>
<string name="revanced_hide_shorts_auto_dubbed_label_summary_off">Automaattisesti jälkiäänitetty -merkintä näytetään</string>
<string name="revanced_hide_shorts_super_thanks_button_title">Piilota \"Osta Superkiitos\" -painike</string>
<string name="revanced_hide_shorts_super_thanks_button_summary_on">Osta Superkiitos -painike piilotetaan</string>
<string name="revanced_hide_shorts_super_thanks_button_summary_off">Osta Superkiitos -painike näytetään</string>
<string name="revanced_hide_shorts_effect_button_title">Piilota Tehoste-painike</string>
<string name="revanced_hide_shorts_effect_button_summary_on">Tehoste-painike piilotetaan</string>
<string name="revanced_hide_shorts_effect_button_summary_off">Tehoste-painike näytetään</string>
<string name="revanced_hide_shorts_green_screen_button_title">Piilota \"Vihreä ruutu\" -painike</string>
<string name="revanced_hide_shorts_green_screen_button_title">Piilota \"Vihertausta\" -painike</string>
<string name="revanced_hide_shorts_green_screen_button_summary_on">Vihertausta-painike piilotetaan</string>
<string name="revanced_hide_shorts_green_screen_button_summary_off">Vihertausta-painike näytetään</string>
<string name="revanced_hide_shorts_hashtag_button_title">Piilota Hashtag-painike</string>
@@ -1575,7 +1575,7 @@ Tämä voi avata korkealaatuisemmat videot"</string>
<patch id="video.quality.rememberVideoQualityPatch">
<!-- Translations should use the same text as 'revanced_custom_playback_speeds_auto'. -->
<string name="revanced_video_quality_default_entry_1">Automaattinen</string>
<string name="revanced_remember_video_quality_last_selected_title">Muista videolaadun muutokset</string>
<string name="revanced_remember_video_quality_last_selected_title">Muista videon laadun muutokset</string>
<string name="revanced_remember_video_quality_last_selected_summary_on">Laatumuutokset koskevat kaikkia videoita</string>
<string name="revanced_remember_video_quality_last_selected_summary_off">Laatumuutokset koskevat vain nykyistä videota</string>
<string name="revanced_remember_video_quality_last_selected_toast_title">Näytä ponnahdusilmoitus videon laatua muutettaessa</string>
@@ -1595,13 +1595,13 @@ Tämä voi avata korkealaatuisemmat videot"</string>
</patch>
<patch id="video.speed.button.playbackSpeedButtonPatch">
<string name="revanced_playback_speed_dialog_button_title">Näytä nopeuden valintapainike</string>
<string name="revanced_playback_speed_dialog_button_summary_on">Nopeusasetusten painike näytetään. Paina pitkään palauttaaksesi toistonopeuden oletukseksi.</string>
<string name="revanced_playback_speed_dialog_button_summary_off">Nopeusasetusten painiketta ei näytetä</string>
<string name="revanced_playback_speed_dialog_button_summary_on">Nopeuden valintapainike näytetään. Paina pitkään palauttaaksesi toistonopeuden oletukseksi</string>
<string name="revanced_playback_speed_dialog_button_summary_off">Nopeuden valintapainiketta ei näytetä</string>
</patch>
<patch id="video.quality.button.videoQualityDialogButtonPatch">
<string name="revanced_video_quality_dialog_button_title">Näytä videolaatupainike</string>
<string name="revanced_video_quality_dialog_button_summary_on">Videolaadun painike näytetään. Paina pitkään palauttaaksesi laadun oletukseksi.</string>
<string name="revanced_video_quality_dialog_button_summary_off">Videolaadun painiketta ei näytetä</string>
<string name="revanced_video_quality_dialog_button_title">Näytä videon laatupainike</string>
<string name="revanced_video_quality_dialog_button_summary_on">Videon laatupainike näytetään. Paina pitkään palauttaaksesi laadun oletukseksi</string>
<string name="revanced_video_quality_dialog_button_summary_off">Videon laatupainiketta ei näytetä</string>
</patch>
<patch id="video.speed.custom.customPlaybackSpeedPatch">
<string name="revanced_custom_speed_menu_title">Mukautettu toistonopeusvalikko</string>
@@ -1646,9 +1646,9 @@ Rajoitukset:
• Jotkin laitteet eivät voi pakottaa AVC:tä"</string>
</patch>
<patch id="video.quality.advancedVideoQualityMenuPatch">
<string name="revanced_advanced_video_quality_menu_title">Näytä edistynyt videolaatuvalikko</string>
<string name="revanced_advanced_video_quality_menu_summary_on">Edistynyt videolaatuvalikko näytetään</string>
<string name="revanced_advanced_video_quality_menu_summary_off">Edistynyttä videolaatuvalikkoa ei näytetä</string>
<string name="revanced_advanced_video_quality_menu_title">Näytä edistynyt videon laatuvalikko</string>
<string name="revanced_advanced_video_quality_menu_summary_on">Edistynyt videon laatuvalikko näytetään</string>
<string name="revanced_advanced_video_quality_menu_summary_off">Edistynyttä videon laatuvalikkoa ei näytetä</string>
</patch>
<patch id="interaction.seekbar.enableSlideToSeekPatch">
<string name="revanced_slide_to_seek_title">Ota kelaus liu\'uttamalla käyttöön</string>

View File

@@ -223,9 +223,9 @@ Toutefois, l'activation de cette option entraînera également l'enregistrement
<string name="revanced_hide_chips_shelf_title">Masquer l\'étagère des filtres</string>
<string name="revanced_hide_chips_shelf_summary_on">L\'étagère des filtres est masquée</string>
<string name="revanced_hide_chips_shelf_summary_off">L\'étagère des filtres est affichée</string>
<string name="revanced_hide_community_posts_title">Masquer les posts</string>
<string name="revanced_hide_community_posts_summary_on">Les posts destinés à la communauté sont masqués</string>
<string name="revanced_hide_community_posts_summary_off">Les posts destinés à la communauté sont affichés</string>
<string name="revanced_hide_community_posts_title">Masquer les posts de communautés</string>
<string name="revanced_hide_community_posts_summary_on">Les posts de communautés sont masqués</string>
<string name="revanced_hide_community_posts_summary_off">Les posts de communautés sont affichés</string>
<string name="revanced_hide_compact_banner_title">Masquer les bannières compactes</string>
<string name="revanced_hide_compact_banner_summary_on">Les bannières compactes sont masquées</string>
<string name="revanced_hide_compact_banner_summary_off">Les bannières compactes sont affichées</string>
@@ -1326,7 +1326,7 @@ Prêt à le soumettre ?"</string>
<string name="revanced_change_form_factor_user_dialog_message">"Les modifications comprennent :
Format Tablette
• Les posts destinés à la communauté sont masqués
• Les posts de communautés sont masqués
Format Automotive
• Les Shorts s'ouvrent dans le lecteur standard

View File

@@ -22,6 +22,7 @@ Second \"item\" text"</string>
<app id="shared">
<patch id="layout.branding.baseCustomBrandingPatch">
<!-- Translations of this should be identical to revanced_custom_branding_icon_entry_5 -->
<string name="revanced_custom_branding_name_entry_5"></string>
<!-- Translation of this should be identical to revanced_header_logo_entry_5 -->
<!-- Translations of this should be identical to revanced_custom_branding_name_entry_5 -->
</patch>

View File

@@ -21,11 +21,15 @@ Second \"item\" text"</string>
<resources>
<app id="shared">
<patch id="layout.branding.baseCustomBrandingPatch">
<string name="revanced_custom_branding_name_title">ऐप का नाम</string>
<!-- Translations of this should be identical to revanced_custom_branding_icon_entry_5 -->
<string name="revanced_custom_branding_name_entry_5">कस्टम</string>
<string name="revanced_custom_branding_icon_title">ऐप आइकन</string>
<!-- Translation of this should be identical to revanced_header_logo_entry_5 -->
<!-- Translations of this should be identical to revanced_custom_branding_name_entry_5 -->
</patch>
<patch id="misc.checks.checkEnvironmentPatch">
<string name="revanced_check_environment_dialog_ignore_button">नज़रअंदाज़ करें</string>
</patch>
<patch id="misc.dns.checkWatchHistoryDomainNameResolutionPatch">
</patch>

View File

@@ -21,36 +21,112 @@ Second \"item\" text"</string>
<resources>
<app id="shared">
<patch id="layout.branding.baseCustomBrandingPatch">
<string name="revanced_custom_branding_name_title">Naziv aplikacije</string>
<!-- Translations of this should be identical to revanced_custom_branding_icon_entry_5 -->
<string name="revanced_custom_branding_name_entry_5">Prilagođeno</string>
<string name="revanced_custom_branding_icon_title">Ikona aplikacije</string>
<string name="revanced_custom_branding_icon_entry_1">Izvorno</string>
<!-- Translation of this should be identical to revanced_header_logo_entry_5 -->
<string name="revanced_custom_branding_icon_entry_3">Minimalni ReVanced</string>
<string name="revanced_custom_branding_icon_entry_4">Skalirani ReVanced</string>
<!-- Translations of this should be identical to revanced_custom_branding_name_entry_5 -->
<string name="revanced_custom_branding_icon_entry_5">Prilagođeno</string>
</patch>
<patch id="misc.checks.checkEnvironmentPatch">
<string name="revanced_check_environment_failed_title">Provjere nisu uspjele</string>
<string name="revanced_check_environment_dialog_open_official_source_button">Otvori službenu web-stranicu</string>
<string name="revanced_check_environment_dialog_ignore_button">Ignoriraj</string>
<string name="revanced_check_environment_failed_message">&lt;h5&gt;Izgleda da Vi niste zakrpali ovu aplikaciju.&lt;/h5&gt;&lt;br&gt;Ova aplikacija možda neće funkcionirati pravilno, &lt;b&gt;a može biti i štetna ili opasna za korištenje&lt;/b&gt;.&lt;br&gt;&lt;br&gt;Ove provjere ukazuju na to da je ova aplikacija unaprijed zakrpana ili je dobivena od nekoga drugog:&lt;br&gt;&lt;br&gt;&lt;small&gt;%1$s&lt;/small&gt;&lt;br&gt;Strogo preporučamo da &lt;b&gt;deinstalirate i sami zakrpate aplikaciju&lt;/b&gt; kako biste bili sigurni da koristite važeću i sigurnu aplikaciju.&lt;p&gt;&lt;br&gt;Ako ga ignorirate, ovo će se upozorenje prikazati samo dva puta.</string>
<string name="revanced_check_environment_not_same_patching_device">Zakrpano na drugom uređaju</string>
<string name="revanced_check_environment_manager_not_expected_installer">Nije instalirao ReVanced Manager</string>
<string name="revanced_check_environment_not_near_patch_time">Zakrpano prije više od 10 minuta</string>
<string name="revanced_check_environment_not_near_patch_time_days">Zakrpano prije %s dan(a)</string>
<string name="revanced_check_environment_not_near_patch_time_invalid">Datum izrade APK-a je oštećen</string>
</patch>
<patch id="misc.dns.checkWatchHistoryDomainNameResolutionPatch">
<string name="revanced_check_watch_history_domain_name_dialog_title">ReVancedova obavijest</string>
<string name="revanced_check_watch_history_domain_name_dialog_ignore">Ne prikazuj ponovno</string>
</patch>
<patch id="misc.settings.settingsResourcePatch">
<string name="revanced_settings_submenu_title">Postavke</string>
<string name="revanced_settings_confirm_user_dialog_title">Jeste li sigurni da želite nastaviti?</string>
<string name="revanced_settings_save">Sačuvaj</string>
<string name="revanced_settings_reset">Ponovno postavi</string>
<string name="revanced_settings_reset_color">Ponovno postavi boju</string>
<string name="revanced_settings_color_invalid">Nevažeća boja</string>
<string name="revanced_settings_restart_title">Potrebno je ponovno pokretanje</string>
<string name="revanced_settings_restart_dialog_message">Ponovno pokrenite aplikaciju da bi se promjena primijenila.</string>
<string name="revanced_settings_restart">Ponovno pokreni</string>
<string name="revanced_settings_import">Uvezi</string>
<string name="revanced_settings_import_copy">Kopiraj</string>
<string name="revanced_settings_import_reset">Postavke za ReVanced vraćene su na zadane</string>
<string name="revanced_settings_import_failure_parse">Uvoz nije uspio: %s</string>
<string name="revanced_settings_search_hint">Pretraži postavke</string>
<string name="revanced_settings_search_no_results_title">Nema rezultata za pojam „%s”</string>
<string name="revanced_settings_search_no_results_summary">Pokušajte s drugom ključnom riječi</string>
<string name="revanced_settings_search_recent_searches">Nedavne pretrage</string>
<string name="revanced_settings_search_remove_message">Ukloniti iz povijesti pretraživanja?</string>
<string name="revanced_settings_search_clear_history">Očisti povijest pretraživanja</string>
<string name="revanced_settings_search_clear_history_message">Jeste li sigurni da želite izbrisati svu povijest pretraživanja?</string>
<string name="revanced_settings_search_tips_title">Savjeti za pretraživanje</string>
<string name="revanced_settings_search_tips_summary">"• Dodirnite putanju da biste ju otvorili.
• Dugo pritisnite postavku da biste ju otvorili.
• Pritisnite gumb enter da pretragu spremite u povijest.
• Pretraživanje ne razlikuje velika i mala slova, ni interpunkciju.
• Nadređene postavke pojavljuju se iznad onemogućenih podređenih postavki."</string>
<string name="revanced_settings_search_empty_history_title">Povijest pretraživanja je prazna</string>
<string name="revanced_language_title">Jezik ReVanceda</string>
<string name="revanced_language_user_dialog_message">"Prijevodi za neke jezike možda nedostaju ili su nedovršeni.
Za prevođenje u nove jezike ili poboljšanje postojećih prijevoda, posjetite translate.revanced.app"</string>
<string name="revanced_language_DEFAULT">Jezik aplikacije</string>
<string name="revanced_pref_import_export_title">Uvoz / Izvoz</string>
<string name="revanced_pref_import_export_summary">Uvezi / Izvezi postavke za ReVanced</string>
<!-- Settings about dialog. -->
<string name="revanced_settings_about_links_body">Koristite verziju &lt;i&gt;%s&lt;/i&gt; ReVancedovih zakrpi</string>
<string name="revanced_settings_about_links_dev_header">Napomena</string>
<string name="revanced_settings_about_links_header">Službene poveznice</string>
<!-- NOTE: the about strings above are duplicated in the TikTok about screen code,
and changes made here must also be made there. -->
</patch>
<patch id="misc.gms.gmsCoreSupportResourcePatch">
<string name="microg_settings_title">Postavke za GmsCore</string>
<string name="microg_settings_summary">Postavke za GmsCore</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="gms_core_toast_not_installed_message">MicroG GmsCore nije instaliran. Instalirajte ga.</string>
<string name="gms_core_dialog_title">Potrebna je radnja</string>
<string name="gms_core_dialog_open_website_text">Otvori web-stranicu</string>
<string name="gms_core_dialog_continue_text">Nastavi</string>
</patch>
<patch id="misc.fix.playback.spoofVideoStreamsPatch">
<string name="revanced_spoof_video_streams_client_type_title">Zadani klijent</string>
</patch>
<patch id="misc.audio.forceOriginalAudioPatch">
<string name="revanced_force_original_audio_title">Prisili izvorni jezik zvuka</string>
<string name="revanced_force_original_audio_summary_on">Koristi se izvorni jezik zvuka</string>
<string name="revanced_force_original_audio_summary_off">Koristi se zadani zvuk</string>
<!-- 'Spoof video streams' should be the same translation used for 'revanced_spoof_video_streams_screen_title'. -->
</patch>
<patch id="misc.debugging.enableDebuggingPatch">
<string name="revanced_debug_logs_none_found">Zapisnici nisu pronađeni</string>
<string name="revanced_debug_logs_copied_to_clipboard">Zapisnici su kopirani</string>
</patch>
<patch id="misc.privacy.sanitizeSharingLinksPatch">
<string name="revanced_sanitize_sharing_links_title">Očisti poveznice za dijeljenje</string>
<string name="revanced_sanitize_sharing_links_summary_on">Iz poveznica za dijeljenje brišu se parametri za praćenje</string>
</patch>
</app>
<app id="youtube">
<patch id="misc.settings.settingsPatch">
<string name="revanced_settings_screen_00_about_title">O aplikaciji</string>
<string name="revanced_settings_screen_01_ads_title">Oglasi</string>
<string name="revanced_settings_screen_02_alt_thumbnails_title">Alternativne minijature</string>
<string name="revanced_settings_screen_04_general_title">Općenito</string>
<string name="revanced_settings_screen_05_player_title">Player</string>
<string name="revanced_settings_screen_12_video_title">Video</string>
<string name="revanced_restore_old_settings_menus_title">Vrati stare izbornike postavki</string>
<string name="revanced_restore_old_settings_menus_summary_on">Prikazuju se stari izbornici postavki</string>
<string name="revanced_restore_old_settings_menus_summary_off">Ne prikazuju se stari izbornici postavki</string>
</patch>
<patch id="misc.backgroundplayback.backgroundPlaybackPatch">
</patch>
@@ -90,6 +166,7 @@ Second \"item\" text"</string>
<patch id="interaction.dialog.removeViewerDiscretionDialogPatch">
</patch>
<patch id="layout.hide.signintotv.disableSignInToTvPopupPatch">
<string name="revanced_disable_signin_to_tv_popup_title">Onemogući skočni prozor „Prijavi se na TV”</string>
</patch>
<patch id="interaction.doubletap.disableDoubleTapActionsPatch">
</patch>
@@ -120,14 +197,51 @@ Second \"item\" text"</string>
This button only shows if the user ip is from specific region such as the USA or EU. -->
<!-- 'Clip' should be translated with the same localized wording that YouTube displays. -->
<!-- 'Shop' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_shop_button_summary_on">Gumb za trgovinu je sakriven</string>
<string name="revanced_hide_shop_button_summary_off">Gumb za trgovinu je prikazan</string>
<!-- 'Save' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_save_button_title">Sakrij „Spremi”</string>
<string name="revanced_hide_save_button_summary_on">Gumb za spremanje je sakriven</string>
<string name="revanced_hide_save_button_summary_off">Gumb za spremanje je prikazan</string>
</patch>
<patch id="layout.buttons.navigation.navigationButtonsPatch">
<string name="revanced_navigation_buttons_screen_title">Navigacijske tipke</string>
<string name="revanced_navigation_buttons_screen_summary">Sakrijte ili promijenite tipke na navigacijskoj traci</string>
<!-- 'Home' should be translated using the same localized wording YouTube displays for the tab. -->
<string name="revanced_hide_home_button_title">Sakrij „Početna”</string>
<string name="revanced_hide_home_button_summary_on">Gumb za početnu stranicu je sakriven</string>
<string name="revanced_hide_home_button_summary_off">Gumb za početnu stranicu je prikazan</string>
<!-- 'Shorts' should be translated using the same localized wording YouTube displays the tab. -->
<string name="revanced_hide_shorts_button_title">Sakrij „Shorts”</string>
<string name="revanced_hide_shorts_button_summary_on">Gumb za Shorts je sakriven</string>
<string name="revanced_hide_shorts_button_summary_off">Gumb za Shorts je prikazan</string>
<!-- 'Create' has no display name. Translate normally. -->
<string name="revanced_hide_create_button_title">Sakrij „Stvori”</string>
<string name="revanced_hide_create_button_summary_on">Gumb za stvaranje je sakriven</string>
<string name="revanced_hide_create_button_summary_off">Gumb za stvaranje je prikazan</string>
<!-- 'Subscriptions' should be translated using the same localized wording YouTube displays the tab. -->
<string name="revanced_hide_subscriptions_button_title">Sakrij „Pretplate”</string>
<string name="revanced_hide_subscriptions_button_summary_on">Gumb za pretplate je sakriven</string>
<string name="revanced_hide_subscriptions_button_summary_off">Gumb za pretplate je prikazan</string>
<string name="revanced_hide_notifications_button_title">Sakrij „Obavijesti”</string>
<string name="revanced_hide_notifications_button_summary_on">Gumb za obavijesti je sakriven</string>
<string name="revanced_hide_notifications_button_summary_off">Gumb za obavijesti je prikazan</string>
<!-- 'Notifications' should be translated using the same localized wording YouTube displays the tab. -->
<string name="revanced_switch_create_with_notifications_button_title">Zamijeni „Stvori” s „Obavijesti”</string>
<string name="revanced_switch_create_with_notifications_button_summary_on">"Gumb „Stvori” je zamijenjen s gumbom „Obavijesti”
Napomena: omogućavanjem ove opcije prisilno sakriva i video-oglase"</string>
<string name="revanced_switch_create_with_notifications_button_summary_off">Gumb „Stvori” nije zamijenjen s gumbom „Obavijesti”</string>
<string name="revanced_switch_create_with_notifications_button_user_dialog_message">"Onemogućavanjem ove postavke deaktivirati će se i blokiranje oglasa u „Shorts”.
Ako promjena ove postavke ne stupi na snagu, pokušajte se prebaciti u anonimni način."</string>
<string name="revanced_hide_navigation_button_labels_title">Sakrij oznake navigacijskih tipki</string>
<string name="revanced_hide_navigation_button_labels_summary_on">Oznake su sakrivene</string>
<string name="revanced_hide_navigation_button_labels_summary_off">Oznake su prikazane</string>
<string name="revanced_disable_translucent_status_bar_title">Onemogući prozirnu statusnu traku</string>
<string name="revanced_disable_translucent_status_bar_summary_on">Statusna traka je neprozirna</string>
<string name="revanced_disable_translucent_status_bar_summary_off">Statusna traka je neprozirna ili prozirna</string>
<string name="revanced_disable_translucent_status_bar_user_dialog_message">Omogućavanje ove značajke će, na nekim uređajima, promijeniti navigacijsku traku u prozirnu.</string>
</patch>
<patch id="layout.hide.player.flyoutmenupanel.hidePlayerFlyoutMenuPatch">
<!-- 'Captions' should be translated using the same localized wording YouTube displays for the menu item. -->
@@ -192,15 +306,56 @@ Second \"item\" text"</string>
</patch>
<patch id="layout.sponsorblock.sponsorBlockResourcePatch">
<!-- Translations should use language similar to 'revanced_ryd_compact_layout_title'. -->
<string name="revanced_sb_general_api_url">Promijeni URL API-a</string>
<string name="revanced_sb_api_url_reset">URL API-a je ponovno postyvljen</string>
<string name="revanced_sb_api_url_invalid">URL API-a nije važeći</string>
<string name="revanced_sb_api_url_changed">URL API-a je promijenjen</string>
<string name="revanced_sb_settings_ie">Uvezi/Izvezi postavke</string>
<string name="revanced_sb_settings_copy">Kopiraj</string>
<string name="revanced_sb_settings_revanced_export_user_id_warning_dismiss">Ne prikazuj ponovno</string>
<string name="revanced_sb_skip_button_compact">Preskoči</string>
<string name="revanced_sb_skip_button_compact_highlight">Istaknuto</string>
<string name="revanced_sb_skip_button_sponsor">Preskoči sponzora</string>
<string name="revanced_sb_skip_button_selfpromo">Preskoči promociju</string>
<string name="revanced_sb_skip_button_interaction">Preskoči interakciju</string>
<string name="revanced_sb_skip_button_highlight">Preskoči na istaknuto</string>
<string name="revanced_sb_skip_button_intro_beginning">Preskoči uvod</string>
<string name="revanced_sb_skip_button_intro_middle">Preskoči stanku</string>
<string name="revanced_sb_skip_button_intro_end">Preskoči stanku</string>
<string name="revanced_sb_skip_button_outro">Preskoči završetak</string>
<string name="revanced_sb_skip_button_hook">Preskoči mamac</string>
<string name="revanced_sb_skip_button_preview_beginning">Preskoči pretpregled</string>
<string name="revanced_sb_skipped_unsubmitted">Preskočen je neprijavljeni segment</string>
<string name="revanced_sb_skipped_multiple_segments">Preskočeno je više segmenata</string>
<string name="revanced_sb_skip_automatically">Preskoči automatski</string>
<string name="revanced_sb_skip_automatically_once">Preskoči automatski jednom</string>
<string name="revanced_sb_skip_showbutton">Prikaži gumb „Preskoči”</string>
<string name="revanced_sb_skip_ignore">Onemogući</string>
<string name="revanced_sb_submit_failed_invalid">Nije moguće prijaviti segment: %s</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. -->
<!-- A segment start and end time, such as "02:10 to 03:40". -->
<!-- Shown in the settings preferences, and translations can be any text length. -->
<string name="revanced_sb_stats_loading">Učitavanje...</string>
</patch>
<patch id="layout.formfactor.changeFormFactorPatch">
<string name="revanced_change_form_factor_entry_1">Zadano</string>
<string name="revanced_change_form_factor_entry_2">Telefon</string>
<string name="revanced_change_form_factor_entry_3">Tablet</string>
<string name="revanced_change_form_factor_entry_4">Automotive</string>
</patch>
<patch id="layout.spoofappversion.spoofAppVersionPatch">
</patch>
<patch id="layout.startpage.changeStartPagePatch">
<string name="revanced_change_start_page_title">Promijeni početnu stranicu</string>
<string name="revanced_change_start_page_entry_default">Zadano</string>
<string name="revanced_change_start_page_entry_all_subscriptions">Sve pretplate</string>
<string name="revanced_change_start_page_entry_browse">Pregledavanje kanala</string>
<string name="revanced_change_start_page_entry_courses">Tečajevi / Učenje</string>
<string name="revanced_change_start_page_entry_explore">Istraži</string>
<string name="revanced_change_start_page_entry_fashion">Moda i ljepota</string>
<string name="revanced_change_start_page_entry_gaming">Igre</string>
<string name="revanced_change_start_page_entry_history">Povijest</string>
<string name="revanced_change_start_page_entry_library">Zbirka</string>
</patch>
<patch id="layout.startupshortsreset.disableResumingShortsOnStartupPatch">
</patch>
@@ -209,8 +364,24 @@ Second \"item\" text"</string>
<patch id="layout.shortsautoplay.shortsAutoplayPatch">
</patch>
<patch id="layout.miniplayer.miniplayerPatch">
<string name="revanced_miniplayer_screen_title">Miniplayer</string>
<string name="revanced_miniplayer_type_title">Vrsta miniplayera</string>
<string name="revanced_miniplayer_type_entry_0">Onemogućeno</string>
<string name="revanced_miniplayer_type_entry_1">Zadano</string>
<string name="revanced_miniplayer_type_entry_2">Minimalno</string>
<string name="revanced_miniplayer_type_entry_3">Tablet</string>
<string name="revanced_miniplayer_type_entry_4">Moderno 1</string>
<string name="revanced_miniplayer_type_entry_5">Moderno 2</string>
<string name="revanced_miniplayer_type_entry_6">Moderno 3</string>
<string name="revanced_miniplayer_type_entry_7">Moderno 4</string>
<string name="revanced_miniplayer_disable_rounded_corners_title">Onemogući zaobljene kutove</string>
<string name="revanced_miniplayer_disable_rounded_corners_summary_on">Kutovi su kvadratni</string>
<string name="revanced_miniplayer_disable_rounded_corners_summary_off">Kutovi su zaobljeni</string>
</patch>
<patch id="layout.theme.themePatch">
<string name="revanced_splash_screen_animation_style_title">Stil uvodnog zaslona</string>
<string name="revanced_splash_screen_animation_style_entry_1">Boja</string>
<string name="revanced_splash_screen_animation_style_entry_2">Crno-bijelo</string>
</patch>
<patch id="layout.branding.customBrandingPatch">
</patch>
@@ -223,9 +394,18 @@ Second \"item\" text"</string>
<!-- 'Home' should be translated using the same localized wording YouTube displays for the Home tab. -->
<!-- 'Subscriptions' should be translated using the same localized wording YouTube displays for the Subscriptions tab. -->
<!-- 'You' should be translated using the same localized wording YouTube displays for the You (Library) tab. -->
<string name="revanced_alt_thumbnail_options_entry_1">Izvorne minijature</string>
<string name="revanced_alt_thumbnail_options_entry_2">DeArrow i izvorne minijature</string>
<string name="revanced_alt_thumbnail_options_entry_3">DeArrow i kadrovi</string>
<string name="revanced_alt_thumbnail_options_entry_4">Kadrovi</string>
<string name="revanced_alt_thumbnail_stills_time_title">Vrijeme u videozapisu za izdvajanje kadrova</string>
<string name="revanced_alt_thumbnail_stills_time_entry_1">Početak videa</string>
<string name="revanced_alt_thumbnail_stills_time_entry_2">Sredina videa</string>
<string name="revanced_alt_thumbnail_stills_time_entry_3">Kraj videa</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="misc.announcements.announcementsPatch">
<string name="revanced_announcements_dialog_dismiss">Odbaci</string>
</patch>
<patch id="misc.loopvideo.loopVideoPatch">
</patch>
@@ -240,17 +420,22 @@ Second \"item\" text"</string>
<patch id="misc.links.bypassURLRedirectsPatch">
</patch>
<patch id="misc.links.openLinksExternallyPatch">
<string name="revanced_external_browser_summary_off">Otvaranje poveznica u pregledniku unutar aplikacije</string>
</patch>
<patch id="video.quality.rememberVideoQualityPatch">
<!-- Translations should use the same text as 'revanced_custom_playback_speeds_auto'. -->
<string name="revanced_video_quality_default_entry_1">Automatski</string>
</patch>
<patch id="video.speed.button.playbackSpeedButtonPatch">
</patch>
<patch id="video.quality.button.videoQualityDialogButtonPatch">
</patch>
<patch id="video.speed.custom.customPlaybackSpeedPatch">
<string name="revanced_custom_playback_speeds_auto">Automatski</string>
</patch>
<patch id="video.speed.remember.rememberPlaybackSpeedPatch">
<string name="revanced_playback_speed_default_title">Zadana brzina reprodukcije</string>
<string name="revanced_remember_playback_speed_toast">Zadana brzina promijenjena je na: %s</string>
</patch>
<patch id="video.codecs.disableVideoCodecsPatch">
</patch>
@@ -276,6 +461,7 @@ Second \"item\" text"</string>
<patch id="layout.compactheader.hideCategoryBar">
</patch>
<patch id="layout.miniplayercolor.changeMiniplayerColor">
<string name="revanced_music_change_miniplayer_color_title">Promijeni boju miniplayera</string>
</patch>
<patch id="layout.navigationbar.navigationBarPatch">
<!-- 'Home' should be translated using the same localized wording YouTube Music displays for the tab. -->

View File

@@ -345,9 +345,9 @@ Jika Doodle saat ini ditampilkan di wilayah Anda dan pengaturan penyembunyi ini
<string name="revanced_hide_podcast_section_title">Sembunyikan \'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_featured_links_section_title">Sembunyikan tautan unggulan</string>
<string name="revanced_hide_featured_links_section_summary_on">Bagian tautan unggulan disembunyikan</string>
<string name="revanced_hide_featured_links_section_summary_off">Bagian tautan unggulan ditampilkan</string>
<string name="revanced_hide_featured_links_section_title">Sembunyikan tautan Unggulan</string>
<string name="revanced_hide_featured_links_section_summary_on">Bagian tautan Unggulan disembunyikan</string>
<string name="revanced_hide_featured_links_section_summary_off">Bagian tautan Unggulan ditampilkan</string>
<string name="revanced_hide_featured_videos_section_title">Sembunyikan video unggulan</string>
<string name="revanced_hide_featured_videos_section_summary_on">Bagian video unggulan disembunyikan</string>
<string name="revanced_hide_featured_videos_section_summary_off">Bagian video unggulan ditampilkan</string>
@@ -358,8 +358,8 @@ Jika Doodle saat ini ditampilkan di wilayah Anda dan pengaturan penyembunyi ini
<string name="revanced_hide_key_concepts_section_summary_on">Bagian Konsep utama disembunyikan</string>
<string name="revanced_hide_key_concepts_section_summary_off">Bagian Konsep utama ditampilkan</string>
<string name="revanced_hide_subscribe_button_title">Sembunyikan tombol Berlangganan</string>
<string name="revanced_hide_subscribe_button_summary_on">Tombol Langganan disembunyikan</string>
<string name="revanced_hide_subscribe_button_summary_off">Tombol Langganan ditampilkan</string>
<string name="revanced_hide_subscribe_button_summary_on">Tombol Berlangganan disembunyikan</string>
<string name="revanced_hide_subscribe_button_summary_off">Tombol Berlangganan ditampilkan</string>
<string name="revanced_hide_transcript_section_title">Sembunyikan Transkrip</string>
<string name="revanced_hide_transcript_section_summary_on">Bagian transkrip disembunyikan</string>
<string name="revanced_hide_transcript_section_summary_off">Bagian transkrip ditampilkan</string>
@@ -405,8 +405,8 @@ Jika Doodle saat ini ditampilkan di wilayah Anda dan pengaturan penyembunyi ini
<string name="revanced_hide_store_button_summary_off">Tombol Belanja ditampilkan</string>
<!-- 'Subscribe' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_subscribe_button_in_channel_page_title">Sembunyikan tombol Berlangganan</string>
<string name="revanced_hide_subscribe_button_in_channel_page_summary_on">Tombol Langganan disembunyikan</string>
<string name="revanced_hide_subscribe_button_in_channel_page_summary_off">Tombol Langganan ditampilkan</string>
<string name="revanced_hide_subscribe_button_in_channel_page_summary_on">Tombol Berlangganan disembunyikan</string>
<string name="revanced_hide_subscribe_button_in_channel_page_summary_off">Tombol Berlangganan ditampilkan</string>
<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_ai_chat_summary_title">Sembunyikan ringkasan chat AI</string>
@@ -894,7 +894,7 @@ Untuk menampilkan menu trek audio, ubah 'Palsukan aliran video' ke 'Android No S
<string name="revanced_hide_shorts_history_title">Sembunyikan Shorts dalam riwayat tontonan</string>
<string name="revanced_hide_shorts_history_summary_on">Disembunyikan dalam riwayat tontonan</string>
<string name="revanced_hide_shorts_history_summary_off">Ditampilkan dalam riwayat tontonan</string>
<string name="revanced_hide_shorts_auto_dubbed_label_title">Sembunyikan label \'Dubbing Otomatis\'</string>
<string name="revanced_hide_shorts_auto_dubbed_label_title">Sembunyikan label \'Sulih suara Otomatis\'</string>
<string name="revanced_hide_shorts_auto_dubbed_label_summary_on">Label sulih suara otomatis disembunyikan</string>
<string name="revanced_hide_shorts_auto_dubbed_label_summary_off">Label sulih suara otomatis ditampilkan</string>
<string name="revanced_hide_shorts_super_thanks_button_title">Sembunyikan tombol \'Beli Super Thanks\'</string>

View File

@@ -77,13 +77,13 @@ Second \"item\" text"</string>
• 検索では、大文字・小文字や句読点は無視される
• 無効化されている下位設定の上には、その設定を無効化している上位設定が表示される"</string>
<string name="revanced_settings_search_empty_history_title">検索履歴はありません</string>
<string name="revanced_settings_search_empty_history_summary">検索履歴を保存するには、検索クエリを入力して Enter キーを押してください</string>
<string name="revanced_settings_search_empty_history_summary">検索履歴を保存するには、検索クエリを入力して [Enter] キーを押してください</string>
<string name="revanced_settings_search_history_title">設定の検索履歴を表示</string>
<string name="revanced_settings_search_history_summary_on">設定の検索履歴は表示されます</string>
<string name="revanced_settings_search_history_summary_off">設定の検索履歴は表示されません</string>
<string name="revanced_show_menu_icons_title">ReVanced の設定にアイコンを表示</string>
<string name="revanced_show_menu_icons_summary_on">ReVanced の設定メニューにアイコンが表示されます</string>
<string name="revanced_show_menu_icons_summary_off">ReVanced の設定メニューにアイコンは表示されません</string>
<string name="revanced_show_menu_icons_summary_on">ReVanced の設定メニューにアイコンが表示されます</string>
<string name="revanced_show_menu_icons_summary_off">ReVanced の設定メニューにアイコンは表示されません</string>
<string name="revanced_language_title">ReVanced 設定の言語</string>
<string name="revanced_language_user_dialog_message">"一部の言語の翻訳が欠落しているまたは不完全である可能性があります。
@@ -105,9 +105,9 @@ Second \"item\" text"</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="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">"GmsCore はバックグラウンドで実行する権限がありません。
<string name="gms_core_dialog_not_whitelisted_not_allowed_in_background_message">"MicroG にバックグラウンドで実行するための権限が与えられていません。
お使いのデバイスの「Don't kill my app!」ガイドに従い、GmsCore に対するデバイスの設定を変更してください。
下記ウェブサイト「Don't kill my app!」の携帯電話メーカー別のガイドに従い、MicroG に対するデバイスの設定を変更してください。
これはアプリが正常に動作するために必要です。"</string>
<string name="gms_core_dialog_open_website_text">ウェブサイトを開く</string>
@@ -282,8 +282,8 @@ YouTube Premium ユーザーの場合、この設定は必要ない可能性が
<string name="revanced_hide_ticket_shelf_summary_off">チケット欄は表示されます</string>
<!-- 'People also watched' and 'You might also like' should be translated using the same localized wording YouTube displays. -->
<string name="revanced_hide_video_recommendation_labels_title">おすすめ動画のラベルを非表示</string>
<string name="revanced_hide_video_recommendation_labels_summary_on">「他の人はこの動画も視聴しています」ラベルと「あなたへのおすすめ」ラベルは検索結果に表示されません</string>
<string name="revanced_hide_video_recommendation_labels_summary_off">「他の人はこの動画も視聴しています」ラベルと「あなたへのおすすめ」ラベルは検索結果に表示されます</string>
<string name="revanced_hide_video_recommendation_labels_summary_on">検索結果の「他の人はこの動画も視聴しています」ラベルと「あなたへのおすすめ」ラベルは表示されません</string>
<string name="revanced_hide_video_recommendation_labels_summary_off">検索結果の「他の人はこの動画も視聴しています」ラベルと「あなたへのおすすめ」ラベル表示されます</string>
<string name="revanced_hide_visual_spacer_title">区切りのスペースを非表示</string>
<string name="revanced_hide_visual_spacer_summary_on">コンポーネントを区切るためのスペースは表示されません</string>
<string name="revanced_hide_visual_spacer_summary_off">コンポーネントを区切るためのスペースが表示されます</string>
@@ -334,7 +334,7 @@ YouTube Premium ユーザーの場合、この設定は必要ない可能性が
<string name="revanced_hide_ask_section_summary_off">「質問する」セクションは表示されます</string>
<string name="revanced_hide_attributes_section_title">付随情報を非表示</string>
<string name="revanced_hide_attributes_section_summary_on">注目の場所 / ゲーム / 音楽 / 人物セクションは表示されません</string>
<string name="revanced_hide_attributes_section_summary_off">注目の場所 / ゲーム / 音楽 / 人物セクション表示されます</string>
<string name="revanced_hide_attributes_section_summary_off">注目の場所 / ゲーム / 音楽 / 人物セクション表示されます</string>
<string name="revanced_hide_chapters_section_title">チャプターを非表示</string>
<string name="revanced_hide_chapters_section_summary_on">チャプター セクションは表示されません</string>
<string name="revanced_hide_chapters_section_summary_off">チャプター セクションは表示されます</string>
@@ -568,9 +568,9 @@ YouTube Premium ユーザーの場合、この設定は必要ない可能性が
<string name="revanced_disable_signin_to_tv_popup_summary_off">「テレビでログイン」ポップアップは有効です</string>
</patch>
<patch id="interaction.doubletap.disableDoubleTapActionsPatch">
<string name="revanced_disable_chapter_skip_double_tap_title">ダブルタップ時のチャプター スキップを無効化</string>
<string name="revanced_disable_chapter_skip_double_tap_title">ダブルタップによるチャプター スキップを無効化</string>
<string name="revanced_disable_chapter_skip_double_tap_summary_on">ダブルタップしたときに、次または前のチャプターへスキップしてしまうことはありません</string>
<string name="revanced_disable_chapter_skip_double_tap_summary_off">ダブルタップしたときに、たまに次または前のチャプターへスキップしてしまうことがあります</string>
<string name="revanced_disable_chapter_skip_double_tap_summary_off">ダブルタップしたときに、たまに次または前のチャプターへスキップしてしまう場合があります</string>
</patch>
<patch id="interaction.downloads.downloadsResourcePatch">
<string name="revanced_external_downloader_screen_title">外部ダウンロード</string>
@@ -640,7 +640,7 @@ YouTube Premium ユーザーの場合、この設定は必要ない可能性が
<string name="revanced_swipe_text_overlay_size_summary">スワイプ オーバーレイのテキストサイズ (1-30)</string>
<string name="revanced_swipe_text_overlay_size_invalid_toast">テキストサイズの範囲は 1-30 です</string>
<string name="revanced_swipe_threshold_title">スワイプのしきい値</string>
<string name="revanced_swipe_threshold_summary">スワイプと判定される最小のスワイプ距離</string>
<string name="revanced_swipe_threshold_summary">ジェスチャーとして判定される最小のスワイプ距離</string>
<string name="revanced_swipe_volume_sensitivity_title">音量ジェスチャーのスワイプ感度</string>
<string name="revanced_swipe_volume_sensitivity_summary">スワイプによる音量の変化量</string>
<string name="revanced_swipe_overlay_style_title">オーバーレイのスタイル</string>
@@ -759,16 +759,16 @@ YouTube Premium ユーザーの場合、この設定は必要ない可能性が
<string name="revanced_hide_navigation_button_labels_title">ボタンをアイコンのみで表示</string>
<string name="revanced_hide_navigation_button_labels_summary_on">ナビゲーション ボタンはアイコンのみで表示されます</string>
<string name="revanced_hide_navigation_button_labels_summary_off">ナビゲーション ボタンはアイコンと文字で表示されます</string>
<string name="revanced_disable_translucent_status_bar_title">半透明ステータスバーを無効化</string>
<string name="revanced_disable_translucent_status_bar_title">ステータスバーの半透明化を無効化</string>
<string name="revanced_disable_translucent_status_bar_summary_on">ステータスバーは常に透けません</string>
<string name="revanced_disable_translucent_status_bar_summary_off">ステータスバーは状況に応じて透けます</string>
<string name="revanced_disable_translucent_status_bar_user_dialog_message">一部のデバイスでは、この機能を有効にすると、システムのナビゲーション バーが半透明になりアプリ内のコンポーネントに重なってしまう可能性があります。</string>
<string name="revanced_disable_translucent_navigation_bar_light_title">ライトモード時の半透明バーを無効化</string>
<string name="revanced_disable_translucent_navigation_bar_light_summary_on">ライトモード時にはナビゲーション バーは透けません</string>
<string name="revanced_disable_translucent_navigation_bar_light_summary_off">ライトモード時にはナビゲーション バーが状況に応じて透けます</string>
<string name="revanced_disable_translucent_navigation_bar_dark_title">ダークモード時の半透明バーを無効化</string>
<string name="revanced_disable_translucent_navigation_bar_dark_summary_on">ダークモード時にはナビゲーション バーは透けません</string>
<string name="revanced_disable_translucent_navigation_bar_dark_summary_off">ダークモード時にはナビゲーション バーが状況に応じて透けます</string>
<string name="revanced_disable_translucent_navigation_bar_light_title">ライトモード半透明を無効化</string>
<string name="revanced_disable_translucent_navigation_bar_light_summary_on">ライトモードはナビゲーション バーは透けません</string>
<string name="revanced_disable_translucent_navigation_bar_light_summary_off">ライトモードはナビゲーション バーが状況に応じて透けます</string>
<string name="revanced_disable_translucent_navigation_bar_dark_title">ダークモード半透明を無効化</string>
<string name="revanced_disable_translucent_navigation_bar_dark_summary_on">ダークモードはナビゲーション バーは透けません</string>
<string name="revanced_disable_translucent_navigation_bar_dark_summary_off">ダークモードはナビゲーション バーが状況に応じて透けます</string>
</patch>
<patch id="layout.hide.player.flyoutmenupanel.hidePlayerFlyoutMenuPatch">
<string name="revanced_hide_player_flyout_title">フライアウト メニュー</string>
@@ -1051,7 +1051,7 @@ YouTube Premium ユーザーの場合、この設定は必要ない可能性が
<string name="revanced_ryd_video_likes_hidden_by_video_owner">非公開</string>
<string name="revanced_ryd_enabled_summary_on">低評価数は表示されます</string>
<string name="revanced_ryd_enabled_summary_off">低評価数は表示されません</string>
<string name="revanced_ryd_shorts_title">ショート動画の低評価数を表示</string>
<string name="revanced_ryd_shorts_title">ショートの低評価数を表示</string>
<string name="revanced_ryd_shorts_summary_on">"ショート動画の低評価数は表示されます
制限事項: シークレット モードでは低評価数が表示されない場合があります"</string>
@@ -1383,14 +1383,14 @@ Automotive レイアウト
</patch>
<patch id="layout.startupshortsreset.disableResumingShortsOnStartupPatch">
<string name="revanced_disable_resuming_shorts_player_title">ショート プレーヤーの再開を無効化</string>
<string name="revanced_disable_resuming_shorts_player_summary_on">アプリ起動時にショート プレーヤーは再開されません</string>
<string name="revanced_disable_resuming_shorts_player_summary_off">アプリ起動時にショート プレーヤー再開されます</string>
<string name="revanced_disable_resuming_shorts_player_summary_on">ショート プレーヤーはアプリ起動時に再開されません</string>
<string name="revanced_disable_resuming_shorts_player_summary_off">ショート プレーヤーはアプリ起動時に再開されます</string>
</patch>
<patch id="layout.shortsplayer.shortsPlayerTypePatch">
<string name="revanced_shorts_player_type_title">ショート動画を開くプレーヤー</string>
<string name="revanced_shorts_player_type_title">ショートを開くプレーヤー</string>
<string name="revanced_shorts_player_type_shorts">ショート プレーヤー</string>
<string name="revanced_shorts_player_type_regular_player">通常のプレーヤー</string>
<string name="revanced_shorts_player_type_regular_player_fullscreen">通常のプレーヤー (全画面)</string>
<string name="revanced_shorts_player_type_regular_player_fullscreen">通常のプレーヤー全画面</string>
</patch>
<patch id="layout.shortsautoplay.shortsAutoplayPatch">
<string name="revanced_shorts_autoplay_title">ショート動画の自動再生</string>

View File

@@ -1042,7 +1042,7 @@ YouTube Premium 사용자라면 이 설정은 필요하지 않을 수 있습니
<string name="revanced_ryd_failure_client_rate_limit_requested">싫어요 수를 표시할 수 없습니다 (클라이언트 API 제한 도달)</string>
<string name="revanced_ryd_failure_generic">싫어요 수를 표시할 수 없습니다 (%s)</string>
<!-- Toast shown if the user enables RYD while a video is opened, and then tries to vote for the video. -->
<string name="revanced_ryd_failure_ryd_enabled_while_playing_video_then_user_voted">ReturnYouTubeDislike를 사용하여 투표하려면 동영상을 다시 불러오세요</string>
<string name="revanced_ryd_failure_ryd_enabled_while_playing_video_then_user_voted">Return YouTube Dislike를 사용하여 투표하려면 동영상을 다시 불러오세요</string>
<!-- Video likes have been set to hidden by the video uploader. -->
<string name="revanced_ryd_video_likes_hidden_by_video_owner">소유자에 의해 숨겨짐</string>
<string name="revanced_ryd_enabled_summary_on">싫어요 수를 표시합니다</string>
@@ -1064,8 +1064,8 @@ YouTube Premium 사용자라면 이 설정은 필요하지 않을 수 있습니
<string name="revanced_ryd_estimated_like_summary_on">좋아요 수가 숨겨진 동영상에서 추정되는 좋아요 수를 표시합니다</string>
<string name="revanced_ryd_estimated_like_summary_off">좋아요 수가 숨겨진 동영상에서 추정되는 좋아요 수를 표시하지 않습니다</string>
<string name="revanced_ryd_toast_on_connection_error_title">API 사용 불가 메시지 표시하기</string>
<string name="revanced_ryd_toast_on_connection_error_summary_on">ReturnYouTubeDislike를 사용할 수 없을 경우에 팝업 메시지를 표시합니다</string>
<string name="revanced_ryd_toast_on_connection_error_summary_off">ReturnYouTubeDislike를 사용할 수 없을 경우에 팝업 메시지를 표시하지 않습니다</string>
<string name="revanced_ryd_toast_on_connection_error_summary_on">Return YouTube Dislike를 사용할 수 없을 경우에 팝업 메시지를 표시합니다</string>
<string name="revanced_ryd_toast_on_connection_error_summary_off">Return YouTube Dislike를 사용할 수 없을 경우에 팝업 메시지를 표시하지 않습니다</string>
<string name="revanced_ryd_attribution_summary">싫어요 수의 데이터는 Return YouTube Dislike API에 의해 제공됩니다. 자세한 내용을 보려면 여기를 탭하세요</string>
<!-- Statistic strings are shown in the settings only when ReVanced debug mode is enabled. Typical users will never see these. -->
<string name="revanced_ryd_statistics_category_title">이 기기의 ReturnYouTubeDislike API 사용 통계</string>
@@ -1460,8 +1460,8 @@ YouTube Premium 사용자라면 이 설정은 필요하지 않을 수 있습니
<string name="revanced_seekbar_custom_color_title">사용자 정의 재생바 색상 활성화하기</string>
<string name="revanced_seekbar_custom_color_summary_on">사용자 정의 재생바 색상을 활성화합니다</string>
<string name="revanced_seekbar_custom_color_summary_off">기본 재생바 색상을 활성화합니다</string>
<string name="revanced_seekbar_custom_color_primary_title">사용자 정의 재생바 메인 색상</string>
<string name="revanced_seekbar_custom_color_primary_summary">재생바 메인 색상을 지정할 수 있습니다</string>
<string name="revanced_seekbar_custom_color_primary_title">사용자 정의 재생바 주요 색상</string>
<string name="revanced_seekbar_custom_color_primary_summary">재생바 주요 색상을 지정할 수 있습니다</string>
<string name="revanced_seekbar_custom_color_accent_title">사용자 정의 재생바 보조 색상</string>
<string name="revanced_seekbar_custom_color_accent_summary">재생바 보조 색상을 지정할 수 있습니다</string>
<string name="revanced_seekbar_custom_color_invalid">잘못된 재생바 색상입니다</string>

View File

@@ -21,7 +21,7 @@ Second \"item\" text"</string>
<resources>
<app id="shared">
<patch id="layout.branding.baseCustomBrandingPatch">
<string name="revanced_custom_branding_name_title">Nome do aplicativo</string>
<string name="revanced_custom_branding_name_title">AppNome do aplicativo</string>
<!-- Translations of this should be identical to revanced_custom_branding_icon_entry_5 -->
<string name="revanced_custom_branding_name_entry_5">Personalizado</string>
<string name="revanced_custom_branding_icon_title">Ícone do aplicativo</string>

View File

@@ -345,12 +345,12 @@ Ako se Doodle trenutno prikazuje u vašem regionu i ova opcija skrivanja je uklj
<string name="revanced_hide_podcast_section_title">Sakrij odeljak „Istražite podkast”</string>
<string name="revanced_hide_podcast_section_summary_on">Odeljak „Istražite podkast” je skriven</string>
<string name="revanced_hide_podcast_section_summary_off">Odeljak „Istražite podkast” je prikazan</string>
<string name="revanced_hide_featured_links_section_title">Sakrij istaknute veze</string>
<string name="revanced_hide_featured_links_section_summary_on">Odeljak istaknutih veza je skriven</string>
<string name="revanced_hide_featured_links_section_summary_off">Odeljak istaknutih veza je prikazan</string>
<string name="revanced_hide_featured_videos_section_title">Sakrij istaknute video snimke</string>
<string name="revanced_hide_featured_videos_section_summary_on">Odeljak istaknutih video snimaka je skriven</string>
<string name="revanced_hide_featured_videos_section_summary_off">Odeljak istaknutih video snimaka je prikazan</string>
<string name="revanced_hide_featured_links_section_title">Sakrij istaknute linkove</string>
<string name="revanced_hide_featured_links_section_summary_on">Odeljak istaknutih linkova je skriven</string>
<string name="revanced_hide_featured_links_section_summary_off">Odeljak istaknutih linkova je prikazan</string>
<string name="revanced_hide_featured_videos_section_title">Sakrij istaknute videe</string>
<string name="revanced_hide_featured_videos_section_summary_on">Odeljak istaknutih videa je skriven</string>
<string name="revanced_hide_featured_videos_section_summary_off">Odeljak istaknutih videa je prikazan</string>
<string name="revanced_hide_info_cards_section_title">Sakrij kartice sa informacijama</string>
<string name="revanced_hide_info_cards_section_summary_on">Odeljak za kartice sa informacijama je skriven</string>
<string name="revanced_hide_info_cards_section_summary_off">Odeljak za kartice sa informacijama je prikazan</string>
@@ -382,7 +382,7 @@ Ako se Doodle trenutno prikazuje u vašem regionu i ova opcija skrivanja je uklj
<string name="revanced_channel_screen_title">Stranica kanala</string>
<string name="revanced_channel_screen_summary">Sakrijte ili prikažite komponente stranice kanala</string>
<!-- 'Community' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_community_button_title">Sakrij dugme Zajednica</string>
<string name="revanced_hide_community_button_title">Sakrij dugme Zajednica</string>
<string name="revanced_hide_community_button_summary_on">Dugme „Zajednica” je skriveno</string>
<string name="revanced_hide_community_button_summary_off">Dugme „Zajednica” je prikazano</string>
<!-- 'For You' should be translated using the same localized wording YouTube displays. -->
@@ -390,9 +390,9 @@ Ako se Doodle trenutno prikazuje u vašem regionu i ova opcija skrivanja je uklj
<string name="revanced_hide_for_you_shelf_summary_on">Polica „Za vas” je skrivena</string>
<string name="revanced_hide_for_you_shelf_summary_off">Polica „Za vas” je prikazana</string>
<!-- 'Join' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_join_button_title">Sakrij dugme „Pridruži se”</string>
<string name="revanced_hide_join_button_summary_on">Dugme „Pridruži se” je skriveno</string>
<string name="revanced_hide_join_button_summary_off">Dugme „Pridruži se” je prikazano</string>
<string name="revanced_hide_join_button_title">Sakrij dugme „Učlani me”</string>
<string name="revanced_hide_join_button_summary_on">Dugme „Učlani me” je skriveno</string>
<string name="revanced_hide_join_button_summary_off">Dugme „Učlani me” je prikazano</string>
<string name="revanced_hide_links_preview_title">Sakrij pregled linkova</string>
<string name="revanced_hide_links_preview_summary_on">Pregled linkova je skriven</string>
<string name="revanced_hide_links_preview_summary_off">Pregled linkova je prikazan</string>
@@ -548,11 +548,11 @@ Ova funkcija je dostupna samo za starije uređaje"</string>
<string name="revanced_share_copy_url_success">Link je kopiran u privremenu memoriju</string>
<string name="revanced_share_copy_url_timestamp_success">Link s vremenskom oznakom je kopiran</string>
<string name="revanced_copy_video_url_title">Prikaži dugme za kopiranje linka videa</string>
<string name="revanced_copy_video_url_summary_on">Dugme za kopiranje URL adrese video snimka je prikazano. Dodirnite da biste kopirali URL adresu video snimka. Dodirnite i zadržite da biste kopirali sa vremenskom oznakom</string>
<string name="revanced_copy_video_url_summary_off">Dugme za kopiranje URL adrese video snimka nije prikazano</string>
<string name="revanced_copy_video_url_summary_on">Dugme za kopiranje URL adrese videa je prikazano. Dodirnite da biste kopirali URL adresu videa. Dodirnite i zadržite da biste kopirali URL adresu videa sa vremenskom oznakom</string>
<string name="revanced_copy_video_url_summary_off">Dugme za kopiranje URL adrese videa nije prikazano</string>
<string name="revanced_copy_video_url_timestamp_title">Prikaži dugme za kopiranje linka videa s vremenskom oznakom</string>
<string name="revanced_copy_video_url_timestamp_summary_on">Dugme za kopiranje URL adrese sa vremenskom oznakom je prikazano. Dodirnite da biste kopirali URL adresu video snimka sa vremenskom oznakom. Dodirnite i zadržite da biste kopirali bez vremenske oznake</string>
<string name="revanced_copy_video_url_timestamp_summary_off">Dugme za kopiranje URL adrese sa vremenskom oznakom nije prikazano</string>
<string name="revanced_copy_video_url_timestamp_summary_on">Dugme za kopiranje URL adrese videa sa vremenskom oznakom je prikazano. Dodirnite da biste kopirali URL adresu videa sa vremenskom oznakom. Dodirnite i zadržite da biste kopirali URL adresu videa bez vremenske oznake</string>
<string name="revanced_copy_video_url_timestamp_summary_off">Dugme za kopiranje URL adrese videa sa vremenskom oznakom nije prikazano</string>
</patch>
<patch id="interaction.dialog.removeViewerDiscretionDialogPatch">
<string name="revanced_remove_viewer_discretion_dialog_title">Ukloni dijalog o diskreciji gledaoca</string>
@@ -895,9 +895,9 @@ Da biste prikazali meni „Audio snimak”, promenite opciju „Lažirani video
<string name="revanced_hide_shorts_history_summary_on">Skriveno u istoriji gledanja</string>
<string name="revanced_hide_shorts_history_summary_off">Prikazano u istoriji gledanja</string>
<string name="revanced_hide_shorts_auto_dubbed_label_title">Sakrij oznaku „Automatski sinhronizovano”</string>
<string name="revanced_hide_shorts_auto_dubbed_label_summary_on">Oznaka za automatski sinhronizovano je skrivena</string>
<string name="revanced_hide_shorts_auto_dubbed_label_summary_off">Oznaka za automatski sinhronizovano je prikazana</string>
<string name="revanced_hide_shorts_super_thanks_button_title">Sakrij dugme „Kupi Super hvala”</string>
<string name="revanced_hide_shorts_auto_dubbed_label_summary_on">Oznaka „Automatski sinhronizovano je skrivena</string>
<string name="revanced_hide_shorts_auto_dubbed_label_summary_off">Oznaka „Automatski sinhronizovano je prikazana</string>
<string name="revanced_hide_shorts_super_thanks_button_title">Sakrij dugme „Kupi Superhvala”</string>
<string name="revanced_hide_shorts_super_thanks_button_summary_on">Dugme „Kupi superhvala” je skriveno</string>
<string name="revanced_hide_shorts_super_thanks_button_summary_off">Dugme „Kupi superhvala” je prikazano</string>
<string name="revanced_hide_shorts_effect_button_title">Sakrij dugme „Efekat”</string>
@@ -1594,8 +1594,8 @@ Ako ovo omogućite, mogu biti otključani viši kvaliteti videa"</string>
</patch>
<patch id="video.speed.button.playbackSpeedButtonPatch">
<string name="revanced_playback_speed_dialog_button_title">Prikaži dugme dijaloga za brzinu</string>
<string name="revanced_playback_speed_dialog_button_summary_on">Dugme dijaloga za brzinu je prikazano. Dodirnite i zadržite da biste vratili brzinu reprodukcije na podrazumevanu vrednost</string>
<string name="revanced_playback_speed_dialog_button_summary_off">Dugme dijaloga za brzinu nije prikazano</string>
<string name="revanced_playback_speed_dialog_button_summary_on">Dugme za dijalog brzine je prikazano. Dodirnite i zadržite da biste vratili brzinu reprodukcije na podrazumevanu vrednost</string>
<string name="revanced_playback_speed_dialog_button_summary_off">Dugme za dijalog brzine nije prikazano</string>
</patch>
<patch id="video.quality.button.videoQualityDialogButtonPatch">
<string name="revanced_video_quality_dialog_button_title">Prikaži dugme kvaliteta videa</string>

View File

@@ -282,9 +282,9 @@ Second \"item\" text"</string>
<string name="revanced_hide_video_recommendation_labels_title">Сакриј ознаке препорука видеа</string>
<string name="revanced_hide_video_recommendation_labels_summary_on">Ознаке „Други су такође гледали овај видео” и „Можда ће вам се такође допасти” у резултатима претраге су скривене</string>
<string name="revanced_hide_video_recommendation_labels_summary_off">Ознаке „Други су такође гледали овај видео” и „Можда ће вам се такође допасти” у резултатима претраге су приказане</string>
<string name="revanced_hide_visual_spacer_title">Сакриј визуелни размак</string>
<string name="revanced_hide_visual_spacer_summary_on">Визуелни размак је скривен</string>
<string name="revanced_hide_visual_spacer_summary_off">Визуелни размак је приказан</string>
<string name="revanced_hide_visual_spacer_title">Сакриј визуелни разделник</string>
<string name="revanced_hide_visual_spacer_summary_on">Визуелни разделник је скривен</string>
<string name="revanced_hide_visual_spacer_summary_off">Визуелни разделник је приказан</string>
<!-- https://logos.fandom.com/wiki/YouTube/Yoodles -->
<string name="revanced_hide_doodles_title">Сакриј YouTube Doodles</string>
<string name="revanced_hide_doodles_summary_on">Анимација YouTube Doodles-а на логотипу је скривена</string>
@@ -345,12 +345,12 @@ Second \"item\" text"</string>
<string name="revanced_hide_podcast_section_title">Сакриј одељак „Истражите подкаст”</string>
<string name="revanced_hide_podcast_section_summary_on">Одељак „Истражите подкаст” је скривен</string>
<string name="revanced_hide_podcast_section_summary_off">Одељак „Истражите подкаст” је приказан</string>
<string name="revanced_hide_featured_links_section_title">Сакриј истакнуте везе</string>
<string name="revanced_hide_featured_links_section_summary_on">Одељак са истакнутим везама је скривен</string>
<string name="revanced_hide_featured_links_section_summary_off">Одељак са истакнутим везама је приказан</string>
<string name="revanced_hide_featured_links_section_title">Сакриј истакнуте линкове</string>
<string name="revanced_hide_featured_links_section_summary_on">Одељак истакнутих линкова је скривен</string>
<string name="revanced_hide_featured_links_section_summary_off">Одељак истакнутих линкова је приказан</string>
<string name="revanced_hide_featured_videos_section_title">Сакриј истакнуте видее</string>
<string name="revanced_hide_featured_videos_section_summary_on">Одељак са истакнутим видеима је скривен</string>
<string name="revanced_hide_featured_videos_section_summary_off">Одељак са истакнутим видеима је приказан</string>
<string name="revanced_hide_featured_videos_section_summary_on">Одељак истакнутих видеа је скривен</string>
<string name="revanced_hide_featured_videos_section_summary_off">Одељак истакнутих видеа је приказан</string>
<string name="revanced_hide_info_cards_section_title">Сакриј картице са информацијама</string>
<string name="revanced_hide_info_cards_section_summary_on">Одељак за картице са информацијама је скривен</string>
<string name="revanced_hide_info_cards_section_summary_off">Одељак за картице са информацијама је приказан</string>
@@ -390,9 +390,9 @@ Second \"item\" text"</string>
<string name="revanced_hide_for_you_shelf_summary_on">Полица „За вас” је скривена</string>
<string name="revanced_hide_for_you_shelf_summary_off">Полица „За вас” је приказана</string>
<!-- 'Join' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_join_button_title">Сакриј дугме „Придружи се”</string>
<string name="revanced_hide_join_button_summary_on">Дугме „Придружи се” је скривено</string>
<string name="revanced_hide_join_button_summary_off">Дугме „Придружи се” је приказано</string>
<string name="revanced_hide_join_button_title">Сакриј дугме „Учлани ме”</string>
<string name="revanced_hide_join_button_summary_on">Дугме „Учлани ме” је скривено</string>
<string name="revanced_hide_join_button_summary_off">Дугме „Учлани ме” је приказано</string>
<string name="revanced_hide_links_preview_title">Сакриј преглед линкова</string>
<string name="revanced_hide_links_preview_summary_on">Преглед линкова је скривен</string>
<string name="revanced_hide_links_preview_summary_off">Преглед линкова је приказан</string>
@@ -548,11 +548,11 @@ Second \"item\" text"</string>
<string name="revanced_share_copy_url_success">Линк је копиран у привремену меморију</string>
<string name="revanced_share_copy_url_timestamp_success">Линк с временском ознаком је копиран</string>
<string name="revanced_copy_video_url_title">Прикажи дугме за копирање линка видеа</string>
<string name="revanced_copy_video_url_summary_on">Дугме за копирање URL адресе видеа је приказано. Додирните да бисте копирали URL адресу видеа. Додирните и задржите да бисте копирали са временском ознаком</string>
<string name="revanced_copy_video_url_summary_on">Дугме за копирање URL адресе видеа је приказано. Додирните да бисте копирали URL адресу видеа. Додирните и задржите да бисте копирали URL адресу видеа са временском ознаком</string>
<string name="revanced_copy_video_url_summary_off">Дугме за копирање URL адресе видеа није приказано</string>
<string name="revanced_copy_video_url_timestamp_title">Прикажи дугме за копирање линка видеа с временском ознаком</string>
<string name="revanced_copy_video_url_timestamp_summary_on">Дугме за копирање URL адресе са временском ознаком је приказано. Додирните да бисте копирали URL адресу видеа са временском ознаком. Додирните и задржите да бисте копирали без временске ознаке</string>
<string name="revanced_copy_video_url_timestamp_summary_off">Дугме за копирање URL адресе са временском ознаком није приказано</string>
<string name="revanced_copy_video_url_timestamp_summary_on">Дугме за копирање URL адресе видеа са временском ознаком је приказано. Додирните да бисте копирали URL адресу видеа са временском ознаком. Додирните и задржите да бисте копирали URL адресу видеа без временске ознаке</string>
<string name="revanced_copy_video_url_timestamp_summary_off">Дугме за копирање URL адресе видеа са временском ознаком није приказано</string>
</patch>
<patch id="interaction.dialog.removeViewerDiscretionDialogPatch">
<string name="revanced_remove_viewer_discretion_dialog_title">Уклони дијалог о дискрецији гледаоца</string>
@@ -895,9 +895,9 @@ Second \"item\" text"</string>
<string name="revanced_hide_shorts_history_summary_on">Скривено у историји гледања</string>
<string name="revanced_hide_shorts_history_summary_off">Приказано у историји гледања</string>
<string name="revanced_hide_shorts_auto_dubbed_label_title">Сакриј ознаку „Аутоматски синхронизовано”</string>
<string name="revanced_hide_shorts_auto_dubbed_label_summary_on">Ознака аутоматски синхронизованог је скривена</string>
<string name="revanced_hide_shorts_auto_dubbed_label_summary_off">Ознака аутоматски синхронизованог је приказана</string>
<string name="revanced_hide_shorts_super_thanks_button_title">Сакриј дугме „Купи Супер хвала”</string>
<string name="revanced_hide_shorts_auto_dubbed_label_summary_on">Ознака „Аутоматски синхронизовано је скривена</string>
<string name="revanced_hide_shorts_auto_dubbed_label_summary_off">Ознака „Аутоматски синхронизовано је приказана</string>
<string name="revanced_hide_shorts_super_thanks_button_title">Сакриј дугме „Купи Суперхвала”</string>
<string name="revanced_hide_shorts_super_thanks_button_summary_on">Дугме „Купи суперхвала” је скривено</string>
<string name="revanced_hide_shorts_super_thanks_button_summary_off">Дугме „Купи суперхвала” је приказано</string>
<string name="revanced_hide_shorts_effect_button_title">Сакриј дугме „Ефекат”</string>
@@ -928,7 +928,7 @@ Second \"item\" text"</string>
<string name="revanced_hide_shorts_preview_comment_title">Сакриј преглед коментара</string>
<string name="revanced_hide_shorts_preview_comment_summary_on">Преглед коментара је скривен</string>
<string name="revanced_hide_shorts_preview_comment_summary_off">Преглед коментара је приказан</string>
<string name="revanced_hide_shorts_save_sound_button_title">Сакриј дугме „Сачувај звук</string>
<string name="revanced_hide_shorts_save_sound_button_title">Сакриј дугме „Сачувај музику</string>
<string name="revanced_hide_shorts_save_sound_button_summary_on">Дугме „Сачувај звук” је скривено</string>
<string name="revanced_hide_shorts_save_sound_button_summary_off">Дугме „Сачувај звук” је приказано</string>
<string name="revanced_hide_shorts_search_suggestions_title">Сакриј предлоге за претрагу</string>

View File

@@ -383,7 +383,7 @@ Om en doodle visas för närvarande i din region och den här döljningsinställ
<string name="revanced_channel_screen_title">Kanalsida</string>
<string name="revanced_channel_screen_summary">Dölj eller visa komponenter på kanalsidan</string>
<!-- 'Community' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_community_button_title">Dölj Community-knapp</string>
<string name="revanced_hide_community_button_title">Dölj knappen Community</string>
<string name="revanced_hide_community_button_summary_on">Knappen Community är dold</string>
<string name="revanced_hide_community_button_summary_off">Knappen Community visas</string>
<!-- 'For You' should be translated using the same localized wording YouTube displays. -->
@@ -549,11 +549,11 @@ Den här funktionen är endast tillgänglig för äldre enheter"</string>
<string name="revanced_share_copy_url_success">Videoadress kopierad till urklipp</string>
<string name="revanced_share_copy_url_timestamp_success">Videoadress med tidsstämpel kopierad</string>
<string name="revanced_copy_video_url_title">Visa knapp för att kopiera videoadress</string>
<string name="revanced_copy_video_url_summary_on">Knappen för att kopiera video-URL visas. Tryck för att kopiera videoadressen. Tryck länge för att kopiera med tidsstämpel</string>
<string name="revanced_copy_video_url_summary_off">Knappen för att kopiera video-URL visas inte</string>
<string name="revanced_copy_video_url_summary_on">Knappen för att kopiera videoadress visas. Tryck för att kopiera videoadressen. Tryck länge för att kopiera med tidsstämpel</string>
<string name="revanced_copy_video_url_summary_off">Knappen för att kopiera videoadress visas inte</string>
<string name="revanced_copy_video_url_timestamp_title">Visa knapp för att kopiera videoadress med tidsstämpel</string>
<string name="revanced_copy_video_url_timestamp_summary_on">Knappen för att kopiera tidsstämpel-URL visas. Tryck för att kopiera videoadressen med tidsstämpel. Tryck länge för att kopiera utan tidsstämpel</string>
<string name="revanced_copy_video_url_timestamp_summary_off">Knappen för att kopiera tidsstämpel-URL visas inte</string>
<string name="revanced_copy_video_url_timestamp_summary_on">Knappen för att kopiera videoadress med tidsstämpel visas. Tryck för att kopiera videoadressen med tidsstämpel. Tryck länge för att kopiera utan tidsstämpel</string>
<string name="revanced_copy_video_url_timestamp_summary_off">Knappen för att kopiera videoadress med tidsstämpel visas inte</string>
</patch>
<patch id="interaction.dialog.removeViewerDiscretionDialogPatch">
<string name="revanced_remove_viewer_discretion_dialog_title">Ta bort dialogrutan Känsliga tittare varnas</string>
@@ -562,7 +562,7 @@ Den här funktionen är endast tillgänglig för äldre enheter"</string>
<string name="revanced_remove_viewer_discretion_dialog_user_dialog_message">Detta kringgår inte åldersbegränsningen. Det bara godkänner automatiskt.</string>
</patch>
<patch id="layout.hide.signintotv.disableSignInToTvPopupPatch">
<string name="revanced_disable_signin_to_tv_popup_title">Inaktivera popup-fönstret \'Logga in på TV\'</string>
<string name="revanced_disable_signin_to_tv_popup_title">Inaktivera popup-fönstret Logga in på TV</string>
<string name="revanced_disable_signin_to_tv_popup_summary_on">\"Logga in på TV\"-popup är inaktiverad</string>
<string name="revanced_disable_signin_to_tv_popup_summary_off">\"Logga in på TV\"-popup är aktiverad</string>
</patch>
@@ -895,16 +895,16 @@ Om du vill att menyn Ljudspår ska visas ändrar du \"Förfalska videoströmmar\
<string name="revanced_hide_shorts_history_title">Dölj Shorts-videor i visningshistoriken</string>
<string name="revanced_hide_shorts_history_summary_on">Döljs i visningshistoriken</string>
<string name="revanced_hide_shorts_history_summary_off">Visas i visningshistoriken</string>
<string name="revanced_hide_shorts_auto_dubbed_label_title">Dölj etiketten \'Automatiskt dubbat\'</string>
<string name="revanced_hide_shorts_auto_dubbed_label_summary_on">Etiketten för automatiskt dubbat är dold</string>
<string name="revanced_hide_shorts_auto_dubbed_label_summary_off">Etiketten för automatiskt dubbat visas</string>
<string name="revanced_hide_shorts_super_thanks_button_title">Dölj knappen \'Köp Super Thanks\'</string>
<string name="revanced_hide_shorts_auto_dubbed_label_title">Dölj etiketten Automatiskt dubbad</string>
<string name="revanced_hide_shorts_auto_dubbed_label_summary_on">Etiketten Automatiskt dubbad är dold</string>
<string name="revanced_hide_shorts_auto_dubbed_label_summary_off">Etiketten Automatiskt dubbad visas</string>
<string name="revanced_hide_shorts_super_thanks_button_title">Dölj knappen Köp Super Thanks</string>
<string name="revanced_hide_shorts_super_thanks_button_summary_on">Knappen Köp Super Thanks är dold</string>
<string name="revanced_hide_shorts_super_thanks_button_summary_off">Knappen Köp Super Thanks visas</string>
<string name="revanced_hide_shorts_effect_button_title">Dölj effektknapp</string>
<string name="revanced_hide_shorts_effect_button_summary_on">Effektknappen är dold</string>
<string name="revanced_hide_shorts_effect_button_summary_off">Effektknappen visas</string>
<string name="revanced_hide_shorts_green_screen_button_title">Dölj knappen \'Greenscreen\'</string>
<string name="revanced_hide_shorts_green_screen_button_title">Dölj knappen Greenscreen</string>
<string name="revanced_hide_shorts_green_screen_button_summary_on">Knappen Greenscreen är dold</string>
<string name="revanced_hide_shorts_green_screen_button_summary_off">Knappen Greenscreen visas</string>
<string name="revanced_hide_shorts_hashtag_button_title">Dölj hashtag-knapp</string>
@@ -914,13 +914,13 @@ Om du vill att menyn Ljudspår ska visas ändrar du \"Förfalska videoströmmar\
<string name="revanced_hide_shorts_join_button_title">Dölj knappen Bli medlem</string>
<string name="revanced_hide_shorts_join_button_summary_on">Knappen Bli medlem är dold</string>
<string name="revanced_hide_shorts_join_button_summary_off">Knappen Bli medlem visas</string>
<string name="revanced_hide_shorts_live_preview_title">Dölj liveförhandsgranskning</string>
<string name="revanced_hide_shorts_live_preview_summary_on">Direktförhandsgranskning är dold</string>
<string name="revanced_hide_shorts_live_preview_summary_off">Direktförhandsgranskning visas</string>
<string name="revanced_hide_shorts_live_preview_title">Dölj live-förhandsgranskning</string>
<string name="revanced_hide_shorts_live_preview_summary_on">Live-förhandsgranskning är dold</string>
<string name="revanced_hide_shorts_live_preview_summary_off">Live-förhandsgranskning visas</string>
<string name="revanced_hide_shorts_location_label_title">Dölj platsetikett</string>
<string name="revanced_hide_shorts_location_label_summary_on">Platsetiketten är dold</string>
<string name="revanced_hide_shorts_location_label_summary_off">Platsetiketten visas</string>
<string name="revanced_hide_shorts_new_posts_button_title">Dölj knappen \'Nya inlägg\'</string>
<string name="revanced_hide_shorts_new_posts_button_title">Dölj knappen Nya inlägg</string>
<string name="revanced_hide_shorts_new_posts_button_summary_on">Knappen Nya inlägg är dold</string>
<string name="revanced_hide_shorts_new_posts_button_summary_off">Knappen Nya inlägg visas</string>
<string name="revanced_hide_shorts_paused_overlay_buttons_title">Dölj pausöverläggsknappar</string>
@@ -929,7 +929,7 @@ Om du vill att menyn Ljudspår ska visas ändrar du \"Förfalska videoströmmar\
<string name="revanced_hide_shorts_preview_comment_title">Dölj förhandsvisad kommentar</string>
<string name="revanced_hide_shorts_preview_comment_summary_on">Förhandsvisad kommentar är dold</string>
<string name="revanced_hide_shorts_preview_comment_summary_off">Förhandsvisad kommentar visas</string>
<string name="revanced_hide_shorts_save_sound_button_title">Dölj knappen \'Spara musik\'</string>
<string name="revanced_hide_shorts_save_sound_button_title">Dölj knappen Spara musik</string>
<string name="revanced_hide_shorts_save_sound_button_summary_on">Knappen Spara musik är dold</string>
<string name="revanced_hide_shorts_save_sound_button_summary_off">Knappen Spara musik visas</string>
<string name="revanced_hide_shorts_search_suggestions_title">Dölj sökförslag</string>
@@ -950,10 +950,10 @@ Om du vill att menyn Ljudspår ska visas ändrar du \"Förfalska videoströmmar\
<string name="revanced_hide_shorts_upcoming_button_title">Dölj knappen Kommande</string>
<string name="revanced_hide_shorts_upcoming_button_summary_on">Knappen Kommande är dold</string>
<string name="revanced_hide_shorts_upcoming_button_summary_off">Knappen Kommande visas</string>
<string name="revanced_hide_shorts_use_sound_button_title">Dölj knappen \'Använd det här ljudet\'</string>
<string name="revanced_hide_shorts_use_sound_button_title">Dölj knappen Använd det här ljudet</string>
<string name="revanced_hide_shorts_use_sound_button_summary_on">Knappen Använd det här ljudet är dold</string>
<string name="revanced_hide_shorts_use_sound_button_summary_off">Knappen Använd det här ljudet visas</string>
<string name="revanced_hide_shorts_use_template_button_title">Dölj knappen \'Använd den här mallen\'</string>
<string name="revanced_hide_shorts_use_template_button_title">Dölj knappen Använd den här mallen</string>
<string name="revanced_hide_shorts_use_template_button_summary_on">Knappen Använd den här mallen är dold</string>
<string name="revanced_hide_shorts_use_template_button_summary_off">Knappen Använd den här mallen visas</string>
<string name="revanced_hide_shorts_like_fountain_title">Dölj fontäneffekt för knappen Gilla</string>
@@ -1595,11 +1595,11 @@ Om du aktiverar detta kan högre videokvaliteter låsas upp"</string>
</patch>
<patch id="video.speed.button.playbackSpeedButtonPatch">
<string name="revanced_playback_speed_dialog_button_title">Visa knapp för hastighetsdialogruta</string>
<string name="revanced_playback_speed_dialog_button_summary_on">Knappen för hastighetsdialog visas. Tryck länge för att återställa uppspelningshastigheten till standardhastigheten</string>
<string name="revanced_playback_speed_dialog_button_summary_off">Knappen för hastighetsdialog visas inte</string>
<string name="revanced_playback_speed_dialog_button_summary_on">Knappen för hastighetsdialogruta visas. Tryck länge för att återställa uppspelningshastigheten till standardhastigheten</string>
<string name="revanced_playback_speed_dialog_button_summary_off">Knappen för hastighetsdialogruta visas inte</string>
</patch>
<patch id="video.quality.button.videoQualityDialogButtonPatch">
<string name="revanced_video_quality_dialog_button_title">Visa videokvalitetsknapp</string>
<string name="revanced_video_quality_dialog_button_title">Visa knapp för videokvalitet</string>
<string name="revanced_video_quality_dialog_button_summary_on">Knappen för videokvalitet visas. Tryck länge för att återställa kvaliteten till standardkvaliteten</string>
<string name="revanced_video_quality_dialog_button_summary_off">Knappen för videokvalitet visas inte</string>
</patch>

View File

@@ -21,7 +21,100 @@ Second \"item\" text"</string>
<resources>
<app id="shared">
<patch id="layout.branding.baseCustomBrandingPatch">
<string name="revanced_custom_branding_name_title">ชื่อแอป</string>
<string name="revanced_custom_branding_name_title">{
\"name\": \"ReVanced\",
\"about\": \"ReVanced was born out of Vanced\'s discontinuation and it is our goal to continue the legacy of what Vanced left behind. Thanks to ReVanced Patcher, it\'s possible to create lonhttps://www.youtube.com/@ReVanced\"g-lasting patches for nearly any Android app. ReVanced\'s patching system is designed to allow patches to work on new versions of the apps automatically with bare minimum maintenance.\",
\"keys\": \"https://api.revanced.app/keys\",
\"branding\": {
\"logo\": \"https://raw.githubusercontent.com/ReVanced/revanced-branding/main/assets/revanced-logo/revanced-logo.svg\"
},
\"contact\": {
\"email\": \"contact@revanced.app\"
},
\"socials\": [
{
\"name\": \"Website\",
\"url\": \"https://revanced.app\",
\"preferred\": true
},
{
\"name\": \"GitHub\",
\"url\": \"https://github.com/revanced\",
\"preferred\": false
},
{
\"name\": \"Twitter\",
\"url\": \"https://twitter.com/revancedapp\",
\"preferred\": false
},
{
\"name\": \"Discord\",
\"url\": \"https://revanced.app/discord\",
\"preferred\": true
},
{
\"name\": \"Reddit\",
\"url\": \"https://www.reddit.com/r/revancedapp\",
\"preferred\": false
},
{
\"name\": \"Telegram\",
\"url\": \"https://t.me/app_revanced\",
\"preferred\": false
},
{
\"name\": \"YouTube\",
\"url\": \"https://www.youtube.com/@ReVanced\",
\"preferred\": false
}
],
\"donations\": {
\"wallets\": [
{
\"network\": \"Bitcoin\",
\"currency_code\": \"BTC\",
\"address\": \"bc1q4x8j6mt27y5gv0q625t8wkr87ruy8fprpy4v3f\",
\"preferred\": false
},
{
\"network\": \"Dogecoin\",
\"currency_code\": \"DOGE\",
\"address\": \"D8GH73rNjudgi6bS2krrXWEsU9KShedLXp\",
\"preferred\": true
},
{
\"network\": \"Ethereum\",
\"currency_code\": \"ETH\",
\"address\": \"0x7ab4091e00363654bf84B34151225742cd92FCE5\",
\"preferred\": false
},
{
\"network\": \"Litecoin\",
\"currency_code\": \"LTC\",
\"address\": \"LbJi8EuoDcwaZvykcKmcrM74jpjde23qJ2\",
\"preferred\": false
},
{
\"network\": \"Monero\",
\"currency_code\": \"XMR\",
\"address\": \"46YwWDbZD6jVptuk5mLHsuAmh1BnUMSjSNYacozQQEraWSQ93nb2yYVRHoMR6PmFYWEHsLHg9tr1cH5M8Rtn7YaaGQPCjSh\",
\"preferred\": false
}
],
\"links\": [
{
\"name\": \"Open Collective\",
\"url\": \"https://opencollective.com/revanced\",
\"preferred\": true
},
{
\"name\": \"GitHub Sponsors\",
\"url\": \"https://github.com/sponsors/ReVanced\",
\"preferred\": false
}
]
}
}</string>
<!-- Translations of this should be identical to revanced_custom_branding_icon_entry_5 -->
<string name="revanced_custom_branding_name_entry_5">กำหนดเอง</string>
<string name="revanced_custom_branding_icon_title">ไอคอนแอป</string>

View File

@@ -30,6 +30,7 @@ Second \"item\" text"</string>
<patch id="misc.dns.checkWatchHistoryDomainNameResolutionPatch">
</patch>
<patch id="misc.settings.settingsResourcePatch">
<string name="revanced_show_menu_icons_summary_off">Sozlama belgilari koʻrsatilmagan</string>
<!-- Settings about dialog. -->
<!-- NOTE: the about strings above are duplicated in the TikTok about screen code,
and changes made here must also be made there. -->

View File

@@ -232,9 +232,6 @@ However, enabling this will also log some user data such as your IP address."</s
<string name="revanced_hide_compact_banner_title">Hide compact banners</string>
<string name="revanced_hide_compact_banner_summary_on">Compact banners are hidden</string>
<string name="revanced_hide_compact_banner_summary_off">Compact banners are shown</string>
<string name="revanced_hide_crowdfunding_box_title">Hide crowdfunding box</string>
<string name="revanced_hide_crowdfunding_box_summary_on">Crowdfunding box is hidden</string>
<string name="revanced_hide_crowdfunding_box_summary_off">Crowdfunding box is shown</string>
<string name="revanced_hide_expandable_card_title">Hide expandable card</string>
<string name="revanced_hide_expandable_card_summary_on">Expandable card under videos is hidden</string>
<string name="revanced_hide_expandable_card_summary_off">Expandable card under videos is shown</string>
@@ -300,8 +297,11 @@ If a Doodle is currently showing in your region and this hide setting is on, the
<string name="revanced_hide_channel_bar_summary_on">Channel bar is hidden</string>
<string name="revanced_hide_channel_bar_summary_off">Channel bar is shown</string>
<string name="revanced_hide_channel_watermark_title">Hide channel watermark</string>
<string name="revanced_hide_channel_watermark_summary_on">Watermark is hidden</string>
<string name="revanced_hide_channel_watermark_summary_off">Watermark is shown</string>
<string name="revanced_hide_channel_watermark_summary_on">Channel watermark is hidden</string>
<string name="revanced_hide_channel_watermark_summary_off">Channel watermark is shown</string>
<string name="revanced_hide_crowdfunding_box_title">Hide crowdfunding box</string>
<string name="revanced_hide_crowdfunding_box_summary_on">Crowdfunding box is hidden</string>
<string name="revanced_hide_crowdfunding_box_summary_off">Crowdfunding box is shown</string>
<string name="revanced_hide_emergency_box_title">Hide emergency boxes</string>
<string name="revanced_hide_emergency_box_summary_on">Emergency boxes are hidden</string>
<string name="revanced_hide_emergency_box_summary_off">Emergency boxes are shown</string>