Compare commits

..

34 Commits

Author SHA1 Message Date
semantic-release-bot
bcdc7a4589 chore: Release v4.17.0-dev.3 [skip ci]
# [4.17.0-dev.3](https://github.com/ReVanced/revanced-patches/compare/v4.17.0-dev.2...v4.17.0-dev.3) (2024-10-06)

### Features

* **YouTube - Hide layout components:** Add option to hide Yoodles (YouTube Doodles) ([#3743](https://github.com/ReVanced/revanced-patches/issues/3743)) ([0679a47](0679a47b22))
2024-10-06 00:11:05 +00:00
LisoUseInAIKyrios
0679a47b22 feat(YouTube - Hide layout components): Add option to hide Yoodles (YouTube Doodles) (#3743)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2024-10-05 20:09:06 -04:00
semantic-release-bot
5a08620356 chore: Release v4.17.0-dev.2 [skip ci]
# [4.17.0-dev.2](https://github.com/ReVanced/revanced-patches/compare/v4.17.0-dev.1...v4.17.0-dev.2) (2024-10-05)

### Features

* **Willhaben:** Add `Hide ads` patch ([#3740](https://github.com/ReVanced/revanced-patches/issues/3740)) ([42ed29b](42ed29b4c0))
2024-10-05 23:21:37 +00:00
1fexd
42ed29b4c0 feat(Willhaben): Add Hide ads patch (#3740) 2024-10-06 01:19:39 +02:00
semantic-release-bot
8475cc2b09 chore: Release v4.17.0-dev.1 [skip ci]
# [4.17.0-dev.1](https://github.com/ReVanced/revanced-patches/compare/v4.16.1-dev.1...v4.17.0-dev.1) (2024-10-02)

### Features

* **YouTube - Hide Shorts components:** Add option to hide like fountain ([#3731](https://github.com/ReVanced/revanced-patches/issues/3731)) ([d76f4c9](d76f4c96a4))
2024-10-02 00:40:56 +00:00
oSumAtrIX
d76f4c96a4 feat(YouTube - Hide Shorts components): Add option to hide like fountain (#3731)
Co-authored-by: LisoUseInAIKyrios <118716522+LisoUseInAIKyrios@users.noreply.github.com>
2024-10-02 02:38:49 +02:00
semantic-release-bot
eebe82b2f4 chore: Release v4.16.1-dev.1 [skip ci]
## [4.16.1-dev.1](https://github.com/ReVanced/revanced-patches/compare/v4.16.0...v4.16.1-dev.1) (2024-10-01)
2024-10-01 15:31:58 +00:00
oSumAtrIX
59273999e9 ci: Use permissions and regular GitHub token instead of PAT 2024-10-01 17:28:12 +02:00
oSumAtrIX
c3d457d7de build(Needs bump): Update dependencies 2024-09-30 23:21:43 +02:00
oSumAtrIX
17dfc161c1 ci: Adjust release commit message 2024-09-30 22:34:23 +02:00
oSumAtrIX
e3e1efea33 chore: Adjust PR body 2024-09-30 22:08:45 +02:00
semantic-release-bot
ef8aa22779 chore(release): 4.16.0 [skip ci]
# [4.16.0](https://github.com/ReVanced/revanced-patches/compare/v4.15.0...v4.16.0) (2024-09-30)

### Bug Fixes

* **Soundcloud:** Support latest versions ([#3702](https://github.com/ReVanced/revanced-patches/issues/3702)) ([fa94ddd](fa94ddd510))
* **Twitter - Open links with app chooser:** Fix incorrect version in compatibility list ([#3683](https://github.com/ReVanced/revanced-patches/issues/3683)) ([2e9142e](2e9142eda4))
* **YouTube - SponsorBlock:** Fade out SB buttons without overlapping other buttons ([#3719](https://github.com/ReVanced/revanced-patches/issues/3719)) ([1928e89](1928e89085))
* **YouTube:** Show video chapter titles without clipping when overlay buttons are enabled ([#3674](https://github.com/ReVanced/revanced-patches/issues/3674)) ([317e9a8](317e9a80eb))

### Features

* **Google Photos:** Restore hidden 'Back up while charging' toggle ([#3678](https://github.com/ReVanced/revanced-patches/issues/3678)) ([8a3b061](8a3b0610b4))
* **YouTube - Disable precise seeking gesture:** Hide "pull up" label that shows up when swiping ([#3668](https://github.com/ReVanced/revanced-patches/issues/3668)) ([1f0b4cd](1f0b4cdcb4))
* **YouTube - Hide Shorts components:** Add `Hide save music`, `Hide stickers` ([#3710](https://github.com/ReVanced/revanced-patches/issues/3710)) ([82d44f6](82d44f691d))
* **YouTube - Hide Shorts components:** Add patch option to hide Shorts app shortcut (long press app icon) ([#3699](https://github.com/ReVanced/revanced-patches/issues/3699)) ([bb0dcbe](bb0dcbe83d))
* **YouTube - Hide Shorts components:** Add patch option to hide Shorts from app launcher widget Beta ([#3707](https://github.com/ReVanced/revanced-patches/issues/3707)) ([4c7b018](4c7b018878))
2024-09-30 19:15:42 +00:00
oSumAtrIX
fb9db0eec4 chore: Merge branch dev to main (#3681) 2024-09-30 21:13:15 +02:00
ReVanced Bot
33adf53ef1 chore: Sync translations (#3721) 2024-09-30 15:07:54 -04:00
semantic-release-bot
9131e387b5 chore(release): 4.16.0-dev.7 [skip ci]
# [4.16.0-dev.7](https://github.com/ReVanced/revanced-patches/compare/v4.16.0-dev.6...v4.16.0-dev.7) (2024-09-29)

### Bug Fixes

* **YouTube - SponsorBlock:** Fade out SB buttons without overlapping other buttons ([#3719](https://github.com/ReVanced/revanced-patches/issues/3719)) ([1928e89](1928e89085))
2024-09-29 21:15:24 +00:00
LisoUseInAIKyrios
1928e89085 fix(YouTube - SponsorBlock): Fade out SB buttons without overlapping other buttons (#3719) 2024-09-29 17:13:21 -04:00
ReVanced Bot
35973c721a chore: Sync translations (#3720) 2024-09-29 17:13:04 -04:00
LisoUseInAIKyrios
31b18fec39 chore(YouTube - Hide layout components): Move Hide chips shelf to general as it also appears in the feed 2024-09-28 21:28:55 -04:00
semantic-release-bot
db15b68dc8 chore(release): 4.16.0-dev.6 [skip ci]
# [4.16.0-dev.6](https://github.com/ReVanced/revanced-patches/compare/v4.16.0-dev.5...v4.16.0-dev.6) (2024-09-29)

### Features

* **YouTube - Hide Shorts components:** Add `Hide save music`, `Hide stickers` ([#3710](https://github.com/ReVanced/revanced-patches/issues/3710)) ([82d44f6](82d44f691d))
2024-09-29 01:05:21 +00:00
LisoUseInAIKyrios
82d44f691d feat(YouTube - Hide Shorts components): Add Hide save music, Hide stickers (#3710) 2024-09-28 21:02:56 -04:00
semantic-release-bot
fee2218303 chore(release): 4.16.0-dev.5 [skip ci]
# [4.16.0-dev.5](https://github.com/ReVanced/revanced-patches/compare/v4.16.0-dev.4...v4.16.0-dev.5) (2024-09-29)

### Features

* **YouTube - Disable precise seeking gesture:** Hide "pull up" label that shows up when swiping ([#3668](https://github.com/ReVanced/revanced-patches/issues/3668)) ([1f0b4cd](1f0b4cdcb4))
2024-09-29 00:34:19 +00:00
Zain
1f0b4cdcb4 feat(YouTube - Disable precise seeking gesture): Hide "pull up" label that shows up when swiping (#3668)
Co-authored-by: LisoUseInAIKyrios <118716522+LisoUseInAIKyrios@users.noreply.github.com>
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2024-09-29 02:32:17 +02:00
semantic-release-bot
1fd30c1b44 chore(release): 4.16.0-dev.4 [skip ci]
# [4.16.0-dev.4](https://github.com/ReVanced/revanced-patches/compare/v4.16.0-dev.3...v4.16.0-dev.4) (2024-09-29)

### Bug Fixes

* **Soundcloud:** Support latest versions ([#3702](https://github.com/ReVanced/revanced-patches/issues/3702)) ([fa94ddd](fa94ddd510))
2024-09-29 00:27:59 +00:00
FullerBread2032
fa94ddd510 fix(Soundcloud): Support latest versions (#3702) 2024-09-29 02:25:56 +02:00
semantic-release-bot
94cf815e4a chore(release): 4.16.0-dev.3 [skip ci]
# [4.16.0-dev.3](https://github.com/ReVanced/revanced-patches/compare/v4.16.0-dev.2...v4.16.0-dev.3) (2024-09-29)

### Features

* **Google Photos:** Restore hidden 'Back up while charging' toggle ([#3678](https://github.com/ReVanced/revanced-patches/issues/3678)) ([8a3b061](8a3b0610b4))
2024-09-29 00:24:39 +00:00
xob0t
8a3b0610b4 feat(Google Photos): Restore hidden 'Back up while charging' toggle (#3678)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2024-09-29 02:22:32 +02:00
ReVanced Bot
b920355d9c chore: Sync translations (#3709) 2024-09-28 19:22:19 -04:00
semantic-release-bot
8b49012130 chore(release): 4.16.0-dev.2 [skip ci]
# [4.16.0-dev.2](https://github.com/ReVanced/revanced-patches/compare/v4.16.0-dev.1...v4.16.0-dev.2) (2024-09-28)

### Features

* **YouTube - Hide Shorts components:** Add patch option to hide Shorts from app launcher widget Beta ([#3707](https://github.com/ReVanced/revanced-patches/issues/3707)) ([4c7b018](4c7b018878))
2024-09-28 21:04:47 +00:00
LisoUseInAIKyrios
4c7b018878 feat(YouTube - Hide Shorts components): Add patch option to hide Shorts from app launcher widget Beta (#3707) 2024-09-28 17:02:42 -04:00
semantic-release-bot
5ddd957313 chore(release): 4.16.0-dev.1 [skip ci]
# [4.16.0-dev.1](https://github.com/ReVanced/revanced-patches/compare/v4.15.1-dev.2...v4.16.0-dev.1) (2024-09-27)

### Features

* **YouTube - Hide Shorts components:** Add patch option to hide Shorts app shortcut (long press app icon) ([#3699](https://github.com/ReVanced/revanced-patches/issues/3699)) ([bb0dcbe](bb0dcbe83d))
2024-09-27 01:57:13 +00:00
LisoUseInAIKyrios
bb0dcbe83d feat(YouTube - Hide Shorts components): Add patch option to hide Shorts app shortcut (long press app icon) (#3699)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2024-09-26 21:55:14 -04:00
ReVanced Bot
163736fb26 chore: Sync translations (#3692) 2024-09-25 15:28:51 -04:00
semantic-release-bot
0c6db43bde chore(release): 4.15.1-dev.2 [skip ci]
## [4.15.1-dev.2](https://github.com/ReVanced/revanced-patches/compare/v4.15.1-dev.1...v4.15.1-dev.2) (2024-09-23)

### Bug Fixes

* **YouTube:** Show video chapter titles without clipping when overlay buttons are enabled ([#3674](https://github.com/ReVanced/revanced-patches/issues/3674)) ([317e9a8](317e9a80eb))
2024-09-23 22:52:28 +00:00
LisoUseInAIKyrios
317e9a80eb fix(YouTube): Show video chapter titles without clipping when overlay buttons are enabled (#3674) 2024-09-23 18:50:16 -04:00
107 changed files with 1876 additions and 1224 deletions

View File

@@ -25,7 +25,8 @@ jobs:
pr_body: |
This pull request will ${{ env.MESSAGE }}.
## Dependencies before merge
## Before merging this PR
- [ ] https://github.com/revanced/revanced-integrations
- [ ] Remember about https://github.com/revanced/revanced-integrations
- [ ] Pull translations from Crowdin
pr_draft: true

View File

@@ -8,6 +8,8 @@ on:
jobs:
pull:
name: Pull strings
permissions:
contents: write
runs-on: ubuntu-latest
steps:
- name: Checkout
@@ -30,6 +32,6 @@ jobs:
github_user_name: revanced-bot
github_user_email: github@revanced.app
env:
GITHUB_TOKEN: ${{ secrets.REPOSITORY_PUSH_ACCESS }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
CROWDIN_PROJECT_ID: ${{ secrets.CROWDIN_PROJECT_ID }}
CROWDIN_PERSONAL_TOKEN: ${{ secrets.CROWDIN_PERSONAL_TOKEN }}

View File

@@ -24,6 +24,5 @@ jobs:
config: crowdin.yml
upload_sources: true
env:
GITHUB_TOKEN: ${{ secrets.REPOSITORY_PUSH_ACCESS }}
CROWDIN_PROJECT_ID: ${{ secrets.CROWDIN_PROJECT_ID }}
CROWDIN_PERSONAL_TOKEN: ${{ secrets.CROWDIN_PERSONAL_TOKEN }}

View File

@@ -10,6 +10,9 @@ on:
jobs:
release:
name: Release
permissions:
contents: write
packages: write
runs-on: ubuntu-latest
steps:
- name: Checkout
@@ -46,5 +49,5 @@ jobs:
- name: Release
env:
GITHUB_TOKEN: ${{ secrets.REPOSITORY_PUSH_ACCESS }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: npm exec semantic-release

View File

@@ -21,11 +21,11 @@
"@semantic-release/git",
{
"assets": [
"README.md",
"CHANGELOG.md",
"gradle.properties",
"patches.json"
]
],
"message": "chore: Release v${nextRelease.version} [skip ci]\n\n${nextRelease.notes}"
}
],
[

View File

@@ -1,3 +1,101 @@
# [4.17.0-dev.3](https://github.com/ReVanced/revanced-patches/compare/v4.17.0-dev.2...v4.17.0-dev.3) (2024-10-06)
### Features
* **YouTube - Hide layout components:** Add option to hide Yoodles (YouTube Doodles) ([#3743](https://github.com/ReVanced/revanced-patches/issues/3743)) ([b8c8916](https://github.com/ReVanced/revanced-patches/commit/b8c89164cf3911ac3842df9b0d2ec42b52213505))
# [4.17.0-dev.2](https://github.com/ReVanced/revanced-patches/compare/v4.17.0-dev.1...v4.17.0-dev.2) (2024-10-05)
### Features
* **Willhaben:** Add `Hide ads` patch ([#3740](https://github.com/ReVanced/revanced-patches/issues/3740)) ([1fe3a52](https://github.com/ReVanced/revanced-patches/commit/1fe3a523e99ccfe556d88800686e34ac6ed77b2c))
# [4.17.0-dev.1](https://github.com/ReVanced/revanced-patches/compare/v4.16.1-dev.1...v4.17.0-dev.1) (2024-10-02)
### Features
* **YouTube - Hide Shorts components:** Add option to hide like fountain ([#3731](https://github.com/ReVanced/revanced-patches/issues/3731)) ([00a99dd](https://github.com/ReVanced/revanced-patches/commit/00a99dd13be6e5c44fa691d74c92b23ce6ba659d))
## [4.16.1-dev.1](https://github.com/ReVanced/revanced-patches/compare/v4.16.0...v4.16.1-dev.1) (2024-10-01)
# [4.16.0](https://github.com/ReVanced/revanced-patches/compare/v4.15.0...v4.16.0) (2024-09-30)
### Bug Fixes
* **Soundcloud:** Support latest versions ([#3702](https://github.com/ReVanced/revanced-patches/issues/3702)) ([099ac5e](https://github.com/ReVanced/revanced-patches/commit/099ac5ea2cf55633a7c6a7e6f8e963599bcd5784))
* **Twitter - Open links with app chooser:** Fix incorrect version in compatibility list ([#3683](https://github.com/ReVanced/revanced-patches/issues/3683)) ([adafe85](https://github.com/ReVanced/revanced-patches/commit/adafe85d77f6a0031a5523b9b7da69475959d78d))
* **YouTube - SponsorBlock:** Fade out SB buttons without overlapping other buttons ([#3719](https://github.com/ReVanced/revanced-patches/issues/3719)) ([bf96108](https://github.com/ReVanced/revanced-patches/commit/bf9610894f0a9f9e751e2eed5b825c5d327a722c))
* **YouTube:** Show video chapter titles without clipping when overlay buttons are enabled ([#3674](https://github.com/ReVanced/revanced-patches/issues/3674)) ([4b88c31](https://github.com/ReVanced/revanced-patches/commit/4b88c316ed90c56e83e2aee266561833b36fc37d))
### Features
* **Google Photos:** Restore hidden 'Back up while charging' toggle ([#3678](https://github.com/ReVanced/revanced-patches/issues/3678)) ([f9e19ce](https://github.com/ReVanced/revanced-patches/commit/f9e19ce6e9185fdf31b2b0d5f2934f6e8a544b8e))
* **YouTube - Disable precise seeking gesture:** Hide "pull up" label that shows up when swiping ([#3668](https://github.com/ReVanced/revanced-patches/issues/3668)) ([3fa8af9](https://github.com/ReVanced/revanced-patches/commit/3fa8af9fe534b59ad093c36f1927f56f549a330d))
* **YouTube - Hide Shorts components:** Add `Hide save music`, `Hide stickers` ([#3710](https://github.com/ReVanced/revanced-patches/issues/3710)) ([8c99321](https://github.com/ReVanced/revanced-patches/commit/8c99321df4db696156330fc90dd547c1345d880e))
* **YouTube - Hide Shorts components:** Add patch option to hide Shorts app shortcut (long press app icon) ([#3699](https://github.com/ReVanced/revanced-patches/issues/3699)) ([0d4e1f5](https://github.com/ReVanced/revanced-patches/commit/0d4e1f5d03cf3dcc06fd41165e26a1ce901b976b))
* **YouTube - Hide Shorts components:** Add patch option to hide Shorts from app launcher widget Beta ([#3707](https://github.com/ReVanced/revanced-patches/issues/3707)) ([838f183](https://github.com/ReVanced/revanced-patches/commit/838f1834a5df547ce2c3217b874c0594b6878a67))
# [4.16.0-dev.7](https://github.com/ReVanced/revanced-patches/compare/v4.16.0-dev.6...v4.16.0-dev.7) (2024-09-29)
### Bug Fixes
* **YouTube - SponsorBlock:** Fade out SB buttons without overlapping other buttons ([#3719](https://github.com/ReVanced/revanced-patches/issues/3719)) ([bf96108](https://github.com/ReVanced/revanced-patches/commit/bf9610894f0a9f9e751e2eed5b825c5d327a722c))
# [4.16.0-dev.6](https://github.com/ReVanced/revanced-patches/compare/v4.16.0-dev.5...v4.16.0-dev.6) (2024-09-29)
### Features
* **YouTube - Hide Shorts components:** Add `Hide save music`, `Hide stickers` ([#3710](https://github.com/ReVanced/revanced-patches/issues/3710)) ([8c99321](https://github.com/ReVanced/revanced-patches/commit/8c99321df4db696156330fc90dd547c1345d880e))
# [4.16.0-dev.5](https://github.com/ReVanced/revanced-patches/compare/v4.16.0-dev.4...v4.16.0-dev.5) (2024-09-29)
### Features
* **YouTube - Disable precise seeking gesture:** Hide "pull up" label that shows up when swiping ([#3668](https://github.com/ReVanced/revanced-patches/issues/3668)) ([3fa8af9](https://github.com/ReVanced/revanced-patches/commit/3fa8af9fe534b59ad093c36f1927f56f549a330d))
# [4.16.0-dev.4](https://github.com/ReVanced/revanced-patches/compare/v4.16.0-dev.3...v4.16.0-dev.4) (2024-09-29)
### Bug Fixes
* **Soundcloud:** Support latest versions ([#3702](https://github.com/ReVanced/revanced-patches/issues/3702)) ([099ac5e](https://github.com/ReVanced/revanced-patches/commit/099ac5ea2cf55633a7c6a7e6f8e963599bcd5784))
# [4.16.0-dev.3](https://github.com/ReVanced/revanced-patches/compare/v4.16.0-dev.2...v4.16.0-dev.3) (2024-09-29)
### Features
* **Google Photos:** Restore hidden 'Back up while charging' toggle ([#3678](https://github.com/ReVanced/revanced-patches/issues/3678)) ([f9e19ce](https://github.com/ReVanced/revanced-patches/commit/f9e19ce6e9185fdf31b2b0d5f2934f6e8a544b8e))
# [4.16.0-dev.2](https://github.com/ReVanced/revanced-patches/compare/v4.16.0-dev.1...v4.16.0-dev.2) (2024-09-28)
### Features
* **YouTube - Hide Shorts components:** Add patch option to hide Shorts from app launcher widget Beta ([#3707](https://github.com/ReVanced/revanced-patches/issues/3707)) ([838f183](https://github.com/ReVanced/revanced-patches/commit/838f1834a5df547ce2c3217b874c0594b6878a67))
# [4.16.0-dev.1](https://github.com/ReVanced/revanced-patches/compare/v4.15.1-dev.2...v4.16.0-dev.1) (2024-09-27)
### Features
* **YouTube - Hide Shorts components:** Add patch option to hide Shorts app shortcut (long press app icon) ([#3699](https://github.com/ReVanced/revanced-patches/issues/3699)) ([0d4e1f5](https://github.com/ReVanced/revanced-patches/commit/0d4e1f5d03cf3dcc06fd41165e26a1ce901b976b))
## [4.15.1-dev.2](https://github.com/ReVanced/revanced-patches/compare/v4.15.1-dev.1...v4.15.1-dev.2) (2024-09-23)
### Bug Fixes
* **YouTube:** Show video chapter titles without clipping when overlay buttons are enabled ([#3674](https://github.com/ReVanced/revanced-patches/issues/3674)) ([4b88c31](https://github.com/ReVanced/revanced-patches/commit/4b88c316ed90c56e83e2aee266561833b36fc37d))
## [4.15.1-dev.1](https://github.com/ReVanced/revanced-patches/compare/v4.15.0...v4.15.1-dev.1) (2024-09-23)

View File

@@ -321,6 +321,12 @@ public final class app/revanced/patches/googlephotos/misc/integrations/Integrati
public static final field INSTANCE Lapp/revanced/patches/googlephotos/misc/integrations/IntegrationsPatch;
}
public final class app/revanced/patches/googlephotos/preferences/RestoreHiddenBackUpWhileChargingTogglePatch : app/revanced/patcher/patch/BytecodePatch {
public static final field INSTANCE Lapp/revanced/patches/googlephotos/preferences/RestoreHiddenBackUpWhileChargingTogglePatch;
public fun execute (Lapp/revanced/patcher/data/BytecodeContext;)V
public synthetic fun execute (Lapp/revanced/patcher/data/Context;)V
}
public final class app/revanced/patches/googlerecorder/restrictions/RemoveDeviceRestrictions : app/revanced/patcher/patch/BytecodePatch {
public static final field INSTANCE Lapp/revanced/patches/googlerecorder/restrictions/RemoveDeviceRestrictions;
public fun execute (Lapp/revanced/patcher/data/BytecodeContext;)V
@@ -1514,6 +1520,12 @@ public final class app/revanced/patches/warnwetter/misc/promocode/PromoCodeUnloc
public synthetic fun execute (Lapp/revanced/patcher/data/Context;)V
}
public final class app/revanced/patches/willhaben/ads/HideAdsPatch : app/revanced/patcher/patch/BytecodePatch {
public static final field INSTANCE Lapp/revanced/patches/willhaben/ads/HideAdsPatch;
public fun execute (Lapp/revanced/patcher/data/BytecodeContext;)V
public synthetic fun execute (Lapp/revanced/patcher/data/Context;)V
}
public final class app/revanced/patches/windyapp/misc/unlockpro/UnlockProPatch : app/revanced/patcher/patch/BytecodePatch {
public static final field INSTANCE Lapp/revanced/patches/windyapp/misc/unlockpro/UnlockProPatch;
public fun execute (Lapp/revanced/patcher/data/BytecodeContext;)V
@@ -2000,13 +2012,19 @@ public final class app/revanced/patches/youtube/misc/playercontrols/BottomContro
public final class app/revanced/patches/youtube/misc/playercontrols/PlayerControlsBytecodePatch : app/revanced/patcher/patch/BytecodePatch {
public static final field INSTANCE Lapp/revanced/patches/youtube/misc/playercontrols/PlayerControlsBytecodePatch;
public static field showPlayerControlsFingerprintResult Lapp/revanced/patcher/fingerprint/MethodFingerprintResult;
public fun execute (Lapp/revanced/patcher/data/BytecodeContext;)V
public synthetic fun execute (Lapp/revanced/patcher/data/Context;)V
public final fun getShowPlayerControlsFingerprintResult ()Lapp/revanced/patcher/fingerprint/MethodFingerprintResult;
public final fun initializeBottomControl (Ljava/lang/String;)V
public final fun initializeControl (Ljava/lang/String;)V
public final fun injectVisibilityCheckCall (Ljava/lang/String;)V
public final fun setShowPlayerControlsFingerprintResult (Lapp/revanced/patcher/fingerprint/MethodFingerprintResult;)V
}
public final class app/revanced/patches/youtube/misc/playercontrols/PlayerControlsResourcePatch : app/revanced/patcher/patch/ResourcePatch, java/io/Closeable {
public static final field INSTANCE Lapp/revanced/patches/youtube/misc/playercontrols/PlayerControlsResourcePatch;
public final fun addBottomControls (Ljava/lang/String;)V
public fun close ()V
public synthetic fun execute (Lapp/revanced/patcher/data/Context;)V
public fun execute (Lapp/revanced/patcher/data/ResourceContext;)V
}
public final class app/revanced/patches/youtube/misc/playeroverlay/PlayerOverlaysHookPatch : app/revanced/patcher/patch/BytecodePatch {
@@ -2166,6 +2184,7 @@ public final class app/revanced/util/BytecodeUtilsKt {
public static final fun containsWideLiteralInstructionValue (Lcom/android/tools/smali/dexlib2/iface/Method;J)Z
public static final fun findMutableMethodOf (Lapp/revanced/patcher/util/proxy/mutableTypes/MutableClass;Lcom/android/tools/smali/dexlib2/iface/Method;)Lapp/revanced/patcher/util/proxy/mutableTypes/MutableMethod;
public static final fun findOpcodeIndicesReversed (Lcom/android/tools/smali/dexlib2/iface/Method;Lcom/android/tools/smali/dexlib2/Opcode;)Ljava/util/List;
public static final fun findOpcodeIndicesReversed (Lcom/android/tools/smali/dexlib2/iface/Method;Lkotlin/jvm/functions/Function1;)Ljava/util/List;
public static final fun getException (Lapp/revanced/patcher/fingerprint/MethodFingerprint;)Lapp/revanced/patcher/patch/PatchException;
public static final fun indexOfFirstInstruction (Lcom/android/tools/smali/dexlib2/iface/Method;ILkotlin/jvm/functions/Function1;)I
public static final fun indexOfFirstInstruction (Lcom/android/tools/smali/dexlib2/iface/Method;Lkotlin/jvm/functions/Function1;)I
@@ -2174,6 +2193,8 @@ public final class app/revanced/util/BytecodeUtilsKt {
public static synthetic fun indexOfFirstInstructionOrThrow$default (Lcom/android/tools/smali/dexlib2/iface/Method;ILkotlin/jvm/functions/Function1;ILjava/lang/Object;)I
public static final fun indexOfFirstWideLiteralInstructionValue (Lcom/android/tools/smali/dexlib2/iface/Method;J)I
public static final fun indexOfFirstWideLiteralInstructionValueOrThrow (Lcom/android/tools/smali/dexlib2/iface/Method;J)I
public static final fun indexOfFirstWideLiteralInstructionValueReversed (Lcom/android/tools/smali/dexlib2/iface/Method;J)I
public static final fun indexOfFirstWideLiteralInstructionValueReversedOrThrow (Lcom/android/tools/smali/dexlib2/iface/Method;J)I
public static final fun indexOfIdResource (Lcom/android/tools/smali/dexlib2/iface/Method;Ljava/lang/String;)I
public static final fun indexOfIdResourceOrThrow (Lcom/android/tools/smali/dexlib2/iface/Method;Ljava/lang/String;)I
public static final fun injectHideViewCall (Lapp/revanced/patcher/util/proxy/mutableTypes/MutableMethod;IILjava/lang/String;Ljava/lang/String;)V
@@ -2201,6 +2222,7 @@ public final class app/revanced/util/ResourceUtilsKt {
public static final fun copyXmlNode (Ljava/lang/String;Lapp/revanced/patcher/util/DomFileEditor;Lapp/revanced/patcher/util/DomFileEditor;)Ljava/lang/AutoCloseable;
public static final fun doRecursively (Lorg/w3c/dom/Node;Lkotlin/jvm/functions/Function1;)V
public static final fun forEachChildElement (Lorg/w3c/dom/Node;Lkotlin/jvm/functions/Function1;)V
public static final fun insertFirst (Lorg/w3c/dom/Node;Lorg/w3c/dom/Node;)V
public static final fun iterateXmlNodeChildren (Lapp/revanced/patcher/data/ResourceContext;Ljava/lang/String;Ljava/lang/String;Lkotlin/jvm/functions/Function1;)V
}

View File

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

321
package-lock.json generated
View File

@@ -8,8 +8,8 @@
"@saithodev/semantic-release-backmerge": "^4.0.1",
"@semantic-release/changelog": "^6.0.3",
"@semantic-release/git": "^10.0.1",
"gradle-semantic-release-plugin": "^1.9.2",
"semantic-release": "^24.0.0"
"gradle-semantic-release-plugin": "^1.10.1",
"semantic-release": "^24.1.2"
}
},
"node_modules/@babel/code-frame": {
@@ -235,13 +235,13 @@
"license": "MIT"
},
"node_modules/@octokit/plugin-paginate-rest": {
"version": "11.3.3",
"resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-11.3.3.tgz",
"integrity": "sha512-o4WRoOJZlKqEEgj+i9CpcmnByvtzoUYC6I8PD2SA95M+BJ2x8h7oLcVOg9qcowWXBOdcTRsMZiwvM3EyLm9AfA==",
"version": "11.3.5",
"resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-11.3.5.tgz",
"integrity": "sha512-cgwIRtKrpwhLoBi0CUNuY83DPGRMaWVjqVI/bGKsLJ4PzyWZNaEmhHroI2xlrVXkk6nFv0IsZpOp+ZWSWUS2AQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"@octokit/types": "^13.5.0"
"@octokit/types": "^13.6.0"
},
"engines": {
"node": ">= 18"
@@ -251,9 +251,9 @@
}
},
"node_modules/@octokit/plugin-retry": {
"version": "7.1.1",
"resolved": "https://registry.npmjs.org/@octokit/plugin-retry/-/plugin-retry-7.1.1.tgz",
"integrity": "sha512-G9Ue+x2odcb8E1XIPhaFBnTTIrrUDfXN05iFXiqhR+SeeeDMMILcAnysOsxUpEWcQp2e5Ft397FCXTcPkiPkLw==",
"version": "7.1.2",
"resolved": "https://registry.npmjs.org/@octokit/plugin-retry/-/plugin-retry-7.1.2.tgz",
"integrity": "sha512-XOWnPpH2kJ5VTwozsxGurw+svB2e61aWlmk5EVIYZPwFK5F9h4cyPyj9CIKRyMXMHSwpIsI3mPOdpMmrRhe7UQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -302,9 +302,9 @@
}
},
"node_modules/@octokit/request-error": {
"version": "6.1.4",
"resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-6.1.4.tgz",
"integrity": "sha512-VpAhIUxwhWZQImo/dWAN/NpPqqojR6PSLgLYAituLM6U+ddx9hCioFGwBr5Mi+oi5CLeJkcAs3gJ0PYYzU6wUg==",
"version": "6.1.5",
"resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-6.1.5.tgz",
"integrity": "sha512-IlBTfGX8Yn/oFPMwSfvugfncK2EwRLjzbrpifNaMY8o/HTEAFqCA1FZxjD9cWvSKBHgrIhc4CSBIzMxiLsbzFQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -315,9 +315,9 @@
}
},
"node_modules/@octokit/types": {
"version": "13.5.0",
"resolved": "https://registry.npmjs.org/@octokit/types/-/types-13.5.0.tgz",
"integrity": "sha512-HdqWTf5Z3qwDVlzCrP8UJquMwunpDiMPt5er+QjGzL4hqr/vBVY/MauQgS1xWxCDT1oMx1EULyqxncdCY/NVSQ==",
"version": "13.6.0",
"resolved": "https://registry.npmjs.org/@octokit/types/-/types-13.6.0.tgz",
"integrity": "sha512-CrooV/vKCXqwLa+osmHLIMUb87brpgUqlqkPGc6iE2wCkUvTrHiXFMhAKoDDaAAYJrtKtrFTgSQTg5nObBEaew==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -355,9 +355,9 @@
"license": "ISC"
},
"node_modules/@pnpm/npm-conf": {
"version": "2.2.2",
"resolved": "https://registry.npmjs.org/@pnpm/npm-conf/-/npm-conf-2.2.2.tgz",
"integrity": "sha512-UA91GwWPhFExt3IizW6bOeY/pQ0BkuNwKjk9iQW9KqxluGCrg4VenZ0/L+2Y0+ZOtme72EVvg6v0zo3AMQRCeA==",
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/@pnpm/npm-conf/-/npm-conf-2.3.1.tgz",
"integrity": "sha512-c83qWb22rNRuB0UaVCI0uRPNRr8Z0FWnEIvT47jiHAmOIUHbBOg5XvV7pM5x+rKn9HRpjxquDbXYSXr3fAKFcw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -977,6 +977,19 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/@saithodev/semantic-release-backmerge/node_modules/hosted-git-info": {
"version": "7.0.2",
"resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.2.tgz",
"integrity": "sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==",
"dev": true,
"license": "ISC",
"dependencies": {
"lru-cache": "^10.0.1"
},
"engines": {
"node": "^16.14.0 || >=18.0.0"
}
},
"node_modules/@saithodev/semantic-release-backmerge/node_modules/human-signals": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz",
@@ -1372,9 +1385,9 @@
}
},
"node_modules/@semantic-release/github": {
"version": "10.1.1",
"resolved": "https://registry.npmjs.org/@semantic-release/github/-/github-10.1.1.tgz",
"integrity": "sha512-sSmsBKGpAlTtXf9rUJf/si16p+FwPEsvsJRjl3KCwFP0WywaSpynvUhlYvE18n5rzkQNbGJnObAKIoo3xFMSjA==",
"version": "11.0.0",
"resolved": "https://registry.npmjs.org/@semantic-release/github/-/github-11.0.0.tgz",
"integrity": "sha512-Uon6G6gJD8U1JNvPm7X0j46yxNRJ8Ui6SgK4Zw5Ktu8RgjEft3BGn+l/RX1TTzhhO3/uUcKuqM+/9/ETFxWS/Q==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -1399,7 +1412,7 @@
"node": ">=20.8.1"
},
"peerDependencies": {
"semantic-release": ">=20.1.0"
"semantic-release": ">=24.1.0"
}
},
"node_modules/@semantic-release/github/node_modules/@semantic-release/error": {
@@ -1569,9 +1582,9 @@
}
},
"node_modules/@semantic-release/npm/node_modules/execa": {
"version": "9.3.0",
"resolved": "https://registry.npmjs.org/execa/-/execa-9.3.0.tgz",
"integrity": "sha512-l6JFbqnHEadBoVAVpN5dl2yCyfX28WoBAGaoQcNmLLSedOxTxcn2Qa83s8I/PA5i56vWru2OHOtrwF7Om2vqlg==",
"version": "9.4.0",
"resolved": "https://registry.npmjs.org/execa/-/execa-9.4.0.tgz",
"integrity": "sha512-yKHlle2YGxZE842MERVIplWwNH5VYmqqcPFgtnlU//K8gxuFFXu0pwd/CrfXTumFpeEiufsP7+opT/bPJa1yVw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -1579,10 +1592,10 @@
"cross-spawn": "^7.0.3",
"figures": "^6.1.0",
"get-stream": "^9.0.0",
"human-signals": "^7.0.0",
"human-signals": "^8.0.0",
"is-plain-obj": "^4.1.0",
"is-stream": "^4.0.1",
"npm-run-path": "^5.2.0",
"npm-run-path": "^6.0.0",
"pretty-ms": "^9.0.0",
"signal-exit": "^4.1.0",
"strip-final-newline": "^4.0.0",
@@ -1613,9 +1626,9 @@
}
},
"node_modules/@semantic-release/npm/node_modules/human-signals": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/human-signals/-/human-signals-7.0.0.tgz",
"integrity": "sha512-74kytxOUSvNbjrT9KisAbaTZ/eJwD/LrbM/kh5j0IhPuJzwuA19dWvniFGwBzN9rVjg+O/e+F310PjObDXS+9Q==",
"version": "8.0.0",
"resolved": "https://registry.npmjs.org/human-signals/-/human-signals-8.0.0.tgz",
"integrity": "sha512-/1/GPCpDUCCYwlERiYjxoczfP0zfvZMU/OWgQPMya9AbAE24vseigFdhAMObpc8Q4lc/kjutPfUddDYyAmejnA==",
"dev": true,
"license": "Apache-2.0",
"engines": {
@@ -1649,16 +1662,17 @@
}
},
"node_modules/@semantic-release/npm/node_modules/npm-run-path": {
"version": "5.3.0",
"resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz",
"integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==",
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-6.0.0.tgz",
"integrity": "sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==",
"dev": true,
"license": "MIT",
"dependencies": {
"path-key": "^4.0.0"
"path-key": "^4.0.0",
"unicorn-magic": "^0.3.0"
},
"engines": {
"node": "^12.20.0 || ^14.13.1 || >=16.0.0"
"node": ">=18"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
@@ -1703,6 +1717,19 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/@semantic-release/npm/node_modules/unicorn-magic": {
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.3.0.tgz",
"integrity": "sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=18"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/@semantic-release/release-notes-generator": {
"version": "14.0.1",
"resolved": "https://registry.npmjs.org/@semantic-release/release-notes-generator/-/release-notes-generator-14.0.1.tgz",
@@ -2273,13 +2300,13 @@
}
},
"node_modules/debug": {
"version": "4.3.5",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz",
"integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==",
"version": "4.3.7",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz",
"integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"ms": "2.1.2"
"ms": "^2.1.3"
},
"engines": {
"node": ">=6.0"
@@ -2358,9 +2385,9 @@
"license": "MIT"
},
"node_modules/env-ci": {
"version": "11.0.0",
"resolved": "https://registry.npmjs.org/env-ci/-/env-ci-11.0.0.tgz",
"integrity": "sha512-apikxMgkipkgTvMdRT9MNqWx5VLOci79F4VBd7Op/7OPjjoanjdAvn6fglMCCEf/1bAh8eOiuEVCUs4V3qP3nQ==",
"version": "11.1.0",
"resolved": "https://registry.npmjs.org/env-ci/-/env-ci-11.1.0.tgz",
"integrity": "sha512-Z8dnwSDbV1XYM9SBF2J0GcNVvmfmfh3a49qddGIROhBoVro6MZVTji15z/sJbQ2ko2ei8n988EU1wzoLU/tF+g==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -2549,9 +2576,9 @@
}
},
"node_modules/escalade": {
"version": "3.1.2",
"resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz",
"integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==",
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz",
"integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==",
"dev": true,
"license": "MIT",
"engines": {
@@ -2847,9 +2874,9 @@
"license": "ISC"
},
"node_modules/gradle-semantic-release-plugin": {
"version": "1.9.2",
"resolved": "https://registry.npmjs.org/gradle-semantic-release-plugin/-/gradle-semantic-release-plugin-1.9.2.tgz",
"integrity": "sha512-8qpf4GYFPQ+UMUymYBy/VchOOwLILAWzZMrZX1R0RR3JMgJBMN2R0tJn92R/3rXmxx4OAqwUFH6Np51eFoxr3w==",
"version": "1.10.1",
"resolved": "https://registry.npmjs.org/gradle-semantic-release-plugin/-/gradle-semantic-release-plugin-1.10.1.tgz",
"integrity": "sha512-Q4dLAFICjPouUyRRHEKK8cXNB75nraXoioYZDZlVQOg4sYKudnTDZ3ohLmV3k4cPGiiMCh1ckXETkx9JnuyKmA==",
"dev": true,
"funding": [
{
@@ -2925,16 +2952,16 @@
}
},
"node_modules/hosted-git-info": {
"version": "7.0.2",
"resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.2.tgz",
"integrity": "sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==",
"version": "8.0.0",
"resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-8.0.0.tgz",
"integrity": "sha512-4nw3vOVR+vHUOT8+U4giwe2tcGv+R3pwwRidUe67DoMBTjhrfr6rZYJVVwdkBE+Um050SG+X9tf0Jo4fOpn01w==",
"dev": true,
"license": "ISC",
"dependencies": {
"lru-cache": "^10.0.1"
},
"engines": {
"node": "^16.14.0 || >=18.0.0"
"node": "^18.17.0 || >=20.5.0"
}
},
"node_modules/http-proxy-agent": {
@@ -2976,9 +3003,9 @@
}
},
"node_modules/ignore": {
"version": "5.3.1",
"resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz",
"integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==",
"version": "5.3.2",
"resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz",
"integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==",
"dev": true,
"license": "MIT",
"engines": {
@@ -3191,9 +3218,9 @@
}
},
"node_modules/is-unicode-supported": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.0.0.tgz",
"integrity": "sha512-FRdAyx5lusK1iHG0TWpVtk9+1i+GjrzRffhDg4ovQ7mcidMQ6mj+MhKPmvh7Xwyv5gIS06ns49CA7Sqg7lC22Q==",
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.1.0.tgz",
"integrity": "sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==",
"dev": true,
"license": "MIT",
"engines": {
@@ -3497,9 +3524,9 @@
}
},
"node_modules/micromatch": {
"version": "4.0.7",
"resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz",
"integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==",
"version": "4.0.8",
"resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz",
"integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -3547,9 +3574,9 @@
}
},
"node_modules/ms": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
"version": "2.1.3",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
"integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
"dev": true,
"license": "MIT"
},
@@ -3610,6 +3637,19 @@
"node": "^16.14.0 || >=18.0.0"
}
},
"node_modules/normalize-package-data/node_modules/hosted-git-info": {
"version": "7.0.2",
"resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.2.tgz",
"integrity": "sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==",
"dev": true,
"license": "ISC",
"dependencies": {
"lru-cache": "^10.0.1"
},
"engines": {
"node": "^16.14.0 || >=18.0.0"
}
},
"node_modules/normalize-url": {
"version": "8.0.1",
"resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-8.0.1.tgz",
@@ -3624,9 +3664,9 @@
}
},
"node_modules/npm": {
"version": "10.8.2",
"resolved": "https://registry.npmjs.org/npm/-/npm-10.8.2.tgz",
"integrity": "sha512-x/AIjFIKRllrhcb48dqUNAAZl0ig9+qMuN91RpZo3Cb2+zuibfh+KISl6+kVVyktDz230JKc208UkQwwMqyB+w==",
"version": "10.8.3",
"resolved": "https://registry.npmjs.org/npm/-/npm-10.8.3.tgz",
"integrity": "sha512-0IQlyAYvVtQ7uOhDFYZCGK8kkut2nh8cpAdA9E6FvRSJaTgtZRZgNjlC5ZCct//L73ygrpY93CxXpRJDtNqPVg==",
"bundleDependencies": [
"@isaacs/string-locale-compare",
"@npmcli/arborist",
@@ -3719,13 +3759,13 @@
"@sigstore/tuf": "^2.3.4",
"abbrev": "^2.0.0",
"archy": "~1.0.0",
"cacache": "^18.0.3",
"cacache": "^18.0.4",
"chalk": "^5.3.0",
"ci-info": "^4.0.0",
"cli-columns": "^4.0.0",
"fastest-levenshtein": "^1.0.16",
"fs-minipass": "^3.0.3",
"glob": "^10.4.2",
"glob": "^10.4.5",
"graceful-fs": "^4.2.11",
"hosted-git-info": "^7.0.2",
"ini": "^4.1.3",
@@ -3734,7 +3774,7 @@
"json-parse-even-better-errors": "^3.0.2",
"libnpmaccess": "^8.0.6",
"libnpmdiff": "^6.1.4",
"libnpmexec": "^8.1.3",
"libnpmexec": "^8.1.4",
"libnpmfund": "^5.0.12",
"libnpmhook": "^10.0.5",
"libnpmorg": "^6.0.6",
@@ -3748,12 +3788,12 @@
"minipass": "^7.1.1",
"minipass-pipeline": "^1.2.4",
"ms": "^2.1.2",
"node-gyp": "^10.1.0",
"node-gyp": "^10.2.0",
"nopt": "^7.2.1",
"normalize-package-data": "^6.0.2",
"npm-audit-report": "^5.0.0",
"npm-install-checks": "^6.3.0",
"npm-package-arg": "^11.0.2",
"npm-package-arg": "^11.0.3",
"npm-pick-manifest": "^9.1.0",
"npm-profile": "^10.0.0",
"npm-registry-fetch": "^17.1.0",
@@ -3764,7 +3804,7 @@
"proc-log": "^4.2.0",
"qrcode-terminal": "^0.12.0",
"read": "^3.0.1",
"semver": "^7.6.2",
"semver": "^7.6.3",
"spdx-expression-parse": "^4.0.0",
"ssri": "^10.0.6",
"supports-color": "^9.4.0",
@@ -4335,7 +4375,7 @@
}
},
"node_modules/npm/node_modules/cacache": {
"version": "18.0.3",
"version": "18.0.4",
"dev": true,
"inBundle": true,
"license": "ISC",
@@ -4502,7 +4542,7 @@
}
},
"node_modules/npm/node_modules/debug": {
"version": "4.3.5",
"version": "4.3.6",
"dev": true,
"inBundle": true,
"license": "MIT",
@@ -4586,7 +4626,7 @@
}
},
"node_modules/npm/node_modules/foreground-child": {
"version": "3.2.1",
"version": "3.3.0",
"dev": true,
"inBundle": true,
"license": "ISC",
@@ -4614,7 +4654,7 @@
}
},
"node_modules/npm/node_modules/glob": {
"version": "10.4.2",
"version": "10.4.5",
"dev": true,
"inBundle": true,
"license": "ISC",
@@ -4629,9 +4669,6 @@
"bin": {
"glob": "dist/esm/bin.mjs"
},
"engines": {
"node": ">=16 || 14 >=14.18"
},
"funding": {
"url": "https://github.com/sponsors/isaacs"
}
@@ -4815,16 +4852,13 @@
"license": "ISC"
},
"node_modules/npm/node_modules/jackspeak": {
"version": "3.4.0",
"version": "3.4.3",
"dev": true,
"inBundle": true,
"license": "BlueOak-1.0.0",
"dependencies": {
"@isaacs/cliui": "^8.0.2"
},
"engines": {
"node": ">=14"
},
"funding": {
"url": "https://github.com/sponsors/isaacs"
},
@@ -4910,7 +4944,7 @@
}
},
"node_modules/npm/node_modules/libnpmexec": {
"version": "8.1.3",
"version": "8.1.4",
"dev": true,
"inBundle": true,
"license": "ISC",
@@ -5044,13 +5078,10 @@
}
},
"node_modules/npm/node_modules/lru-cache": {
"version": "10.2.2",
"version": "10.4.3",
"dev": true,
"inBundle": true,
"license": "ISC",
"engines": {
"node": "14 || >=16.14"
}
"license": "ISC"
},
"node_modules/npm/node_modules/make-fetch-happen": {
"version": "13.0.1",
@@ -5262,7 +5293,7 @@
}
},
"node_modules/npm/node_modules/node-gyp": {
"version": "10.1.0",
"version": "10.2.0",
"dev": true,
"inBundle": true,
"license": "MIT",
@@ -5273,9 +5304,9 @@
"graceful-fs": "^4.2.6",
"make-fetch-happen": "^13.0.0",
"nopt": "^7.0.0",
"proc-log": "^3.0.0",
"proc-log": "^4.1.0",
"semver": "^7.3.5",
"tar": "^6.1.2",
"tar": "^6.2.1",
"which": "^4.0.0"
},
"bin": {
@@ -5285,15 +5316,6 @@
"node": "^16.14.0 || >=18.0.0"
}
},
"node_modules/npm/node_modules/node-gyp/node_modules/proc-log": {
"version": "3.0.0",
"dev": true,
"inBundle": true,
"license": "ISC",
"engines": {
"node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
"node_modules/npm/node_modules/nopt": {
"version": "7.2.1",
"dev": true,
@@ -5366,7 +5388,7 @@
}
},
"node_modules/npm/node_modules/npm-package-arg": {
"version": "11.0.2",
"version": "11.0.3",
"dev": true,
"inBundle": true,
"license": "ISC",
@@ -5540,7 +5562,7 @@
}
},
"node_modules/npm/node_modules/postcss-selector-parser": {
"version": "6.1.0",
"version": "6.1.2",
"dev": true,
"inBundle": true,
"license": "MIT",
@@ -5678,7 +5700,7 @@
"optional": true
},
"node_modules/npm/node_modules/semver": {
"version": "7.6.2",
"version": "7.6.3",
"dev": true,
"inBundle": true,
"license": "ISC",
@@ -6437,9 +6459,9 @@
}
},
"node_modules/picocolors": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz",
"integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==",
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.0.tgz",
"integrity": "sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==",
"dev": true,
"license": "ISC"
},
@@ -6481,9 +6503,9 @@
}
},
"node_modules/pretty-ms": {
"version": "9.0.0",
"resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-9.0.0.tgz",
"integrity": "sha512-E9e9HJ9R9NasGOgPaPE8VMeiPKAyWR5jcFpNnwIejslIhWqdqOrb2wShBsncMPUb+BcCd2OPYfh7p2W6oemTng==",
"version": "9.1.0",
"resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-9.1.0.tgz",
"integrity": "sha512-o1piW0n3tgKIKCwk2vpM/vOV13zjJzvP37Ioze54YlTHE06m4tjEbzg9WsKkvTuyYln2DHjo5pY4qrZGI0otpw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -6738,15 +6760,15 @@
"license": "MIT"
},
"node_modules/semantic-release": {
"version": "24.0.0",
"resolved": "https://registry.npmjs.org/semantic-release/-/semantic-release-24.0.0.tgz",
"integrity": "sha512-v46CRPw+9eI3ZuYGF2oAjqPqsfbnfFTwLBgQsv/lch4goD09ytwOTESMN4QIrx/wPLxUGey60/NMx+ANQtWRsA==",
"version": "24.1.2",
"resolved": "https://registry.npmjs.org/semantic-release/-/semantic-release-24.1.2.tgz",
"integrity": "sha512-hvEJ7yI97pzJuLsDZCYzJgmRxF8kiEJvNZhf0oiZQcexw+Ycjy4wbdsn/sVMURgNCu8rwbAXJdBRyIxM4pe32g==",
"dev": true,
"license": "MIT",
"dependencies": {
"@semantic-release/commit-analyzer": "^13.0.0-beta.1",
"@semantic-release/error": "^4.0.0",
"@semantic-release/github": "^10.0.0",
"@semantic-release/github": "^11.0.0",
"@semantic-release/npm": "^12.0.0",
"@semantic-release/release-notes-generator": "^14.0.0-beta.1",
"aggregate-error": "^5.0.0",
@@ -6759,7 +6781,7 @@
"get-stream": "^6.0.0",
"git-log-parser": "^1.2.0",
"hook-std": "^3.0.0",
"hosted-git-info": "^7.0.0",
"hosted-git-info": "^8.0.0",
"import-from-esm": "^1.3.1",
"lodash-es": "^4.17.21",
"marked": "^12.0.0",
@@ -6851,9 +6873,9 @@
}
},
"node_modules/semantic-release/node_modules/execa": {
"version": "9.3.0",
"resolved": "https://registry.npmjs.org/execa/-/execa-9.3.0.tgz",
"integrity": "sha512-l6JFbqnHEadBoVAVpN5dl2yCyfX28WoBAGaoQcNmLLSedOxTxcn2Qa83s8I/PA5i56vWru2OHOtrwF7Om2vqlg==",
"version": "9.4.0",
"resolved": "https://registry.npmjs.org/execa/-/execa-9.4.0.tgz",
"integrity": "sha512-yKHlle2YGxZE842MERVIplWwNH5VYmqqcPFgtnlU//K8gxuFFXu0pwd/CrfXTumFpeEiufsP7+opT/bPJa1yVw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -6861,10 +6883,10 @@
"cross-spawn": "^7.0.3",
"figures": "^6.1.0",
"get-stream": "^9.0.0",
"human-signals": "^7.0.0",
"human-signals": "^8.0.0",
"is-plain-obj": "^4.1.0",
"is-stream": "^4.0.1",
"npm-run-path": "^5.2.0",
"npm-run-path": "^6.0.0",
"pretty-ms": "^9.0.0",
"signal-exit": "^4.1.0",
"strip-final-newline": "^4.0.0",
@@ -6895,9 +6917,9 @@
}
},
"node_modules/semantic-release/node_modules/human-signals": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/human-signals/-/human-signals-7.0.0.tgz",
"integrity": "sha512-74kytxOUSvNbjrT9KisAbaTZ/eJwD/LrbM/kh5j0IhPuJzwuA19dWvniFGwBzN9rVjg+O/e+F310PjObDXS+9Q==",
"version": "8.0.0",
"resolved": "https://registry.npmjs.org/human-signals/-/human-signals-8.0.0.tgz",
"integrity": "sha512-/1/GPCpDUCCYwlERiYjxoczfP0zfvZMU/OWgQPMya9AbAE24vseigFdhAMObpc8Q4lc/kjutPfUddDYyAmejnA==",
"dev": true,
"license": "Apache-2.0",
"engines": {
@@ -6931,16 +6953,17 @@
}
},
"node_modules/semantic-release/node_modules/npm-run-path": {
"version": "5.3.0",
"resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz",
"integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==",
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-6.0.0.tgz",
"integrity": "sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==",
"dev": true,
"license": "MIT",
"dependencies": {
"path-key": "^4.0.0"
"path-key": "^4.0.0",
"unicorn-magic": "^0.3.0"
},
"engines": {
"node": "^12.20.0 || ^14.13.1 || >=16.0.0"
"node": ">=18"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
@@ -6998,6 +7021,19 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/semantic-release/node_modules/unicorn-magic": {
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.3.0.tgz",
"integrity": "sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=18"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/semver": {
"version": "7.6.3",
"resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz",
@@ -7239,9 +7275,9 @@
}
},
"node_modules/spdx-license-ids": {
"version": "3.0.18",
"resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.18.tgz",
"integrity": "sha512-xxRs31BqRYHwiMzudOrpSiHtZ8i/GeionCBDSilhYRj+9gIcI8wCZTlXZKu9vZIVqViP3dcp9qE5G6AlIaD+TQ==",
"version": "3.0.20",
"resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.20.tgz",
"integrity": "sha512-jg25NiDV/1fLtSgEgyvVyDunvaNHbuwF9lfNV17gSmPFAlYzdfNBlLtLzXTevwkPj7DhGbmN9VnmJIgLnhvaBw==",
"dev": true,
"license": "CC0-1.0"
},
@@ -7365,9 +7401,9 @@
}
},
"node_modules/supports-hyperlinks": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-3.0.0.tgz",
"integrity": "sha512-QBDPHyPQDRTy9ku4URNGY5Lah8PAaXs6tAAwp55sL5WCsSW7GIfdf6W5ixfziW+t7wh3GVvHyHHyQ1ESsoRvaA==",
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-3.1.0.tgz",
"integrity": "sha512-2rn0BZ+/f7puLOHZm1HOJfwBggfaHXUpPUSSG/SWM4TWp5KCfmNYwnC3hruy2rZlMnmWZ+QAGpZfchu3f3695A==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -7376,6 +7412,9 @@
},
"engines": {
"node": ">=14.18"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/temp-dir": {
@@ -7530,9 +7569,9 @@
}
},
"node_modules/type-fest": {
"version": "4.22.1",
"resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.22.1.tgz",
"integrity": "sha512-9tHNEa0Ov81YOopiVkcCJVz5TM6AEQ+CHHjFIktqPnE3NV0AHIkx+gh9tiCl58m/66wWxkOC9eltpa75J4lQPA==",
"version": "4.26.1",
"resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.26.1.tgz",
"integrity": "sha512-yOGpmOAL7CkKe/91I5O3gPICmJNLJ1G4zFYVAsRHg7M64biSnPtRj0WNQt++bRkjYOqjWXrhnUw1utzmVErAdg==",
"dev": true,
"license": "(MIT OR CC0-1.0)",
"engines": {
@@ -7543,9 +7582,9 @@
}
},
"node_modules/uglify-js": {
"version": "3.19.0",
"resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.19.0.tgz",
"integrity": "sha512-wNKHUY2hYYkf6oSFfhwwiHo4WCHzHmzcXsqXYTN9ja3iApYIFbb2U6ics9hBcYLHcYGQoAlwnZlTrf3oF+BL/Q==",
"version": "3.19.3",
"resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.19.3.tgz",
"integrity": "sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==",
"dev": true,
"license": "BSD-2-Clause",
"optional": true,

View File

@@ -3,7 +3,7 @@
"@saithodev/semantic-release-backmerge": "^4.0.1",
"@semantic-release/changelog": "^6.0.3",
"@semantic-release/git": "^10.0.1",
"gradle-semantic-release-plugin": "^1.9.2",
"semantic-release": "^24.0.0"
"gradle-semantic-release-plugin": "^1.10.1",
"semantic-release": "^24.1.2"
}
}

View File

@@ -0,0 +1,33 @@
package app.revanced.patches.googlephotos.preferences
import app.revanced.patcher.data.BytecodeContext
import app.revanced.patcher.extensions.InstructionExtensions.addInstruction
import app.revanced.patcher.extensions.InstructionExtensions.getInstruction
import app.revanced.patcher.patch.BytecodePatch
import app.revanced.patcher.patch.annotation.CompatiblePackage
import app.revanced.patcher.patch.annotation.Patch
import app.revanced.patches.googlephotos.preferences.fingerprints.BackupPreferencesFingerprint
import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
@Patch(
name = "Restore hidden 'Back up while charging' toggle",
description = "Restores a hidden toggle to only run backups when the device is charging.",
compatiblePackages = [CompatiblePackage("com.google.android.apps.photos")],
)
@Suppress("unused")
object RestoreHiddenBackUpWhileChargingTogglePatch : BytecodePatch(
setOf(BackupPreferencesFingerprint),
) {
override fun execute(context: BytecodeContext) {
// Patches 'backup_prefs_had_backup_only_when_charging_enabled' to always be true.
BackupPreferencesFingerprint.result?.let {
val chargingPrefStringIndex = it.scanResult.stringsScanResult!!.matches.first().index
it.mutableMethod.apply {
// Get the register of move-result.
val resultRegister = getInstruction<OneRegisterInstruction>(chargingPrefStringIndex + 2).registerA
// Insert const after move-result to override register as true.
addInstruction(chargingPrefStringIndex + 3, "const/4 v$resultRegister, 0x1")
}
} ?: throw Exception("BackupPreferencesFingerprint result not found")
}
}

View File

@@ -0,0 +1,10 @@
package app.revanced.patches.googlephotos.preferences.fingerprints
import app.revanced.patcher.fingerprint.MethodFingerprint
internal object BackupPreferencesFingerprint : MethodFingerprint(
returnType = "Lcom/google/android/apps/photos/backup/data/BackupPreferences;",
strings = listOf(
"backup_prefs_had_backup_only_when_charging_enabled",
),
)

View File

@@ -9,6 +9,7 @@ import app.revanced.patches.shared.misc.settings.preference.IntentPreference
import app.revanced.util.ResourceGroup
import app.revanced.util.copyResources
import app.revanced.util.getNode
import app.revanced.util.insertFirst
import org.w3c.dom.Node
import java.io.Closeable
@@ -47,11 +48,7 @@ abstract class BaseSettingsResourcePatch(
// It may be necessary to ask for the desired resourceValue in the future.
AddResourcesPatch("values", resource)
}.let { preferenceNode ->
if (prepend && firstChild != null) {
insertBefore(preferenceNode, firstChild)
} else {
appendChild(preferenceNode)
}
insertFirst(preferenceNode)
}
}

View File

@@ -14,8 +14,4 @@ internal object InterceptFingerprint : MethodFingerprint(
Opcode.MOVE_RESULT_OBJECT
),
strings = listOf("SC-Mob-UserPlan", "Configuration"),
customFingerprint = { _, classDef ->
classDef.sourceFile == "ApiUserPlanInterceptor.java" ||
classDef.sourceFile == "ApiUserPlanInterceptor.kt"
},
)

View File

@@ -8,7 +8,4 @@ internal object UserConsumerPlanConstructorFingerprint : MethodFingerprint(
returnType = "V",
accessFlags = AccessFlags.PUBLIC or AccessFlags.CONSTRUCTOR,
parameters = listOf("Ljava/lang/String;", "Z", "Ljava/lang/String;", "Ljava/util/List;", "Ljava/lang/String;", "Ljava/lang/String;"),
customFingerprint = { _, classDef ->
classDef.sourceFile == "UserConsumerPlan.kt"
},
)

View File

@@ -7,6 +7,7 @@ internal object CreateTrackingApiFingerprint : MethodFingerprint(
returnType = "L",
accessFlags = AccessFlags.PUBLIC.value,
customFingerprint = { methodDef, classDef ->
classDef.sourceFile == "DefaultTrackingApiFactory.kt" && methodDef.name == "create"
methodDef.name == "create"
},
strings = listOf("backend", "boogaloo")
)

View File

@@ -15,7 +15,5 @@ internal object DownloadOperationsHeaderVerificationFingerprint : MethodFingerpr
Opcode.MOVE_RESULT_OBJECT,
Opcode.CONST_STRING
),
customFingerprint = { _, classDef ->
classDef.sourceFile == "DownloadOperations.kt"
}
strings = listOf("X-SC-Mime-Type", "X-SC-Preset", "X-SC-Quality")
)

View File

@@ -14,7 +14,4 @@ internal object DownloadOperationsURLBuilderFingerprint : MethodFingerprint(
Opcode.SGET_OBJECT,
Opcode.FILLED_NEW_ARRAY
),
customFingerprint = { _, classDef ->
classDef.sourceFile == "DownloadOperations.kt"
}
)

View File

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

View File

@@ -0,0 +1,28 @@
package app.revanced.patches.willhaben.ads
import app.revanced.patcher.data.BytecodeContext
import app.revanced.patcher.patch.BytecodePatch
import app.revanced.patcher.patch.annotation.CompatiblePackage
import app.revanced.patcher.patch.annotation.Patch
import app.revanced.patches.willhaben.ads.fingerprints.AdResolverFingerprint
import app.revanced.patches.willhaben.ads.fingerprints.WHAdViewInjectorFingerprint
import app.revanced.util.returnEarly
@Patch(
name = "Hide ads",
description = "Hides all in-app ads.",
compatiblePackages = [CompatiblePackage("at.willhaben")]
)
@Suppress("unused")
object HideAdsPatch : BytecodePatch(
fingerprints = setOf(
AdResolverFingerprint,
WHAdViewInjectorFingerprint
)
) {
override fun execute(context: BytecodeContext) {
arrayOf(AdResolverFingerprint, WHAdViewInjectorFingerprint).forEach {
it.returnEarly()
}
}
}

View File

@@ -0,0 +1,17 @@
package app.revanced.patches.willhaben.ads.fingerprints
import app.revanced.patcher.extensions.or
import app.revanced.patcher.fingerprint.MethodFingerprint
import com.android.tools.smali.dexlib2.AccessFlags
internal object AdResolverFingerprint : MethodFingerprint(
"L",
parameters = listOf("L", "L"),
accessFlags = AccessFlags.PUBLIC or AccessFlags.FINAL,
strings = listOf(
"Google Ad is invalid ",
"Google Native Ad is invalid ",
"Criteo Ad is invalid ",
"Amazon Ad is invalid "
)
)

View File

@@ -0,0 +1,15 @@
package app.revanced.patches.willhaben.ads.fingerprints
import app.revanced.patcher.extensions.or
import app.revanced.patcher.fingerprint.MethodFingerprint
import com.android.tools.smali.dexlib2.AccessFlags
internal object WHAdViewInjectorFingerprint : MethodFingerprint(
"V",
parameters = listOf("L", "L", "L", "Z"),
accessFlags = AccessFlags.PUBLIC or AccessFlags.FINAL,
strings = listOf("successfulAdView"),
customFingerprint = { _, classDef ->
classDef.type == "Lat/willhaben/advertising/WHAdView;"
}
)

View File

@@ -51,8 +51,8 @@ object CopyVideoUrlBytecodePatch : BytecodePatch(emptySet()) {
override fun execute(context: BytecodeContext) {
BUTTONS_DESCRIPTORS.forEach { descriptor ->
PlayerControlsBytecodePatch.initializeControl("$descriptor->initializeButton(Landroid/view/View;)V")
PlayerControlsBytecodePatch.injectVisibilityCheckCall("$descriptor->changeVisibility(Z)V")
PlayerControlsBytecodePatch.initializeBottomControl(descriptor)
PlayerControlsBytecodePatch.injectVisibilityCheckCall(descriptor)
}
}
}

View File

@@ -5,7 +5,7 @@ import app.revanced.patcher.patch.ResourcePatch
import app.revanced.patcher.patch.annotation.Patch
import app.revanced.patches.all.misc.resources.AddResourcesPatch
import app.revanced.patches.shared.misc.settings.preference.SwitchPreference
import app.revanced.patches.youtube.misc.playercontrols.BottomControlsResourcePatch
import app.revanced.patches.youtube.misc.playercontrols.PlayerControlsResourcePatch
import app.revanced.patches.youtube.misc.settings.SettingsPatch
import app.revanced.util.ResourceGroup
import app.revanced.util.copyResources
@@ -13,7 +13,7 @@ import app.revanced.util.copyResources
@Patch(
dependencies = [
SettingsPatch::class,
BottomControlsResourcePatch::class,
PlayerControlsResourcePatch::class,
AddResourcesPatch::class
]
)
@@ -34,6 +34,6 @@ internal object CopyVideoUrlResourcePatch : ResourcePatch() {
)
)
BottomControlsResourcePatch.addControls("copyvideourl")
PlayerControlsResourcePatch.addBottomControls("copyvideourl")
}
}

View File

@@ -58,8 +58,8 @@ object DownloadsPatch : BytecodePatch(
private const val BUTTON_DESCRIPTOR = "Lapp/revanced/integrations/youtube/videoplayer/ExternalDownloadButton;"
override fun execute(context: BytecodeContext) {
PlayerControlsBytecodePatch.initializeControl("$BUTTON_DESCRIPTOR->initializeButton(Landroid/view/View;)V")
PlayerControlsBytecodePatch.injectVisibilityCheckCall("$BUTTON_DESCRIPTOR->changeVisibility(Z)V")
PlayerControlsBytecodePatch.initializeBottomControl(BUTTON_DESCRIPTOR)
PlayerControlsBytecodePatch.injectVisibilityCheckCall(BUTTON_DESCRIPTOR)
// Main activity is used to launch downloader intent.
MainActivityFingerprint.resultOrThrow().mutableMethod.apply {

View File

@@ -9,14 +9,14 @@ import app.revanced.patches.shared.misc.settings.preference.PreferenceScreen
import app.revanced.patches.shared.misc.settings.preference.PreferenceScreen.Sorting
import app.revanced.patches.shared.misc.settings.preference.SwitchPreference
import app.revanced.patches.shared.misc.settings.preference.TextPreference
import app.revanced.patches.youtube.misc.playercontrols.BottomControlsResourcePatch
import app.revanced.patches.youtube.misc.playercontrols.PlayerControlsResourcePatch
import app.revanced.patches.youtube.misc.settings.SettingsPatch
import app.revanced.util.ResourceGroup
import app.revanced.util.copyResources
@Patch(
dependencies = [
BottomControlsResourcePatch::class,
PlayerControlsResourcePatch::class,
SettingsPatch::class,
AddResourcesPatch::class,
],
@@ -42,6 +42,6 @@ internal object DownloadsResourcePatch : ResourcePatch() {
ResourceGroup("drawable", "revanced_yt_download_button.xml"),
)
BottomControlsResourcePatch.addControls("downloads")
PlayerControlsResourcePatch.addBottomControls("downloads")
}
}

View File

@@ -1,18 +1,20 @@
package app.revanced.patches.youtube.interaction.seekbar
import app.revanced.patcher.data.BytecodeContext
import app.revanced.patcher.extensions.InstructionExtensions.addInstructionsWithLabels
import app.revanced.patcher.extensions.InstructionExtensions.getInstruction
import app.revanced.patcher.extensions.InstructionExtensions.replaceInstruction
import app.revanced.patcher.patch.BytecodePatch
import app.revanced.patcher.patch.annotation.CompatiblePackage
import app.revanced.patcher.patch.annotation.Patch
import app.revanced.patcher.util.smali.ExternalLabel
import app.revanced.patches.all.misc.resources.AddResourcesPatch
import app.revanced.patches.shared.misc.settings.preference.SwitchPreference
import app.revanced.patches.youtube.interaction.seekbar.fingerprints.IsSwipingUpFingerprint
import app.revanced.patches.youtube.interaction.seekbar.fingerprints.AllowSwipingUpGestureFingerprint
import app.revanced.patches.youtube.interaction.seekbar.fingerprints.ShowSwipingUpGuideFingerprint
import app.revanced.patches.youtube.interaction.seekbar.fingerprints.SwipingUpGestureParentFingerprint
import app.revanced.patches.youtube.misc.integrations.IntegrationsPatch
import app.revanced.patches.youtube.misc.settings.SettingsPatch
import app.revanced.util.exception
import com.android.tools.smali.dexlib2.iface.instruction.FiveRegisterInstruction
import app.revanced.util.alsoResolve
@Patch(
name = "Disable precise seeking gesture",
@@ -52,11 +54,10 @@ import com.android.tools.smali.dexlib2.iface.instruction.FiveRegisterInstruction
)
@Suppress("unused")
object DisablePreciseSeekingGesturePatch : BytecodePatch(
setOf(IsSwipingUpFingerprint)
setOf(SwipingUpGestureParentFingerprint)
) {
private const val INTEGRATIONS_METHOD_DESCRIPTOR =
"Lapp/revanced/integrations/youtube/patches/DisablePreciseSeekingGesturePatch;->" +
"disableGesture(Landroid/view/VelocityTracker;Landroid/view/MotionEvent;)V"
private const val INTEGRATIONS_CLASS_DESCRIPTOR =
"Lapp/revanced/integrations/youtube/patches/DisablePreciseSeekingGesturePatch;"
override fun execute(context: BytecodeContext) {
AddResourcesPatch(this::class)
@@ -65,19 +66,37 @@ object DisablePreciseSeekingGesturePatch : BytecodePatch(
SwitchPreference("revanced_disable_precise_seeking_gesture")
)
IsSwipingUpFingerprint.result?.let {
val addMovementIndex = it.scanResult.patternScanResult!!.startIndex - 1
AllowSwipingUpGestureFingerprint.alsoResolve(
context,
SwipingUpGestureParentFingerprint
).mutableMethod.apply {
addInstructionsWithLabels(
0,
"""
invoke-static { }, $INTEGRATIONS_CLASS_DESCRIPTOR->isGestureDisabled()Z
move-result v0
if-eqz v0, :disabled
return-void
""",
ExternalLabel("disabled", getInstruction(0))
)
}
it.mutableMethod.apply {
val addMovementInstruction = getInstruction<FiveRegisterInstruction>(addMovementIndex)
val trackerRegister = addMovementInstruction.registerC
val eventRegister = addMovementInstruction.registerD
replaceInstruction(
addMovementIndex,
"invoke-static {v$trackerRegister, v$eventRegister}, $INTEGRATIONS_METHOD_DESCRIPTOR"
)
}
} ?: throw IsSwipingUpFingerprint.exception
ShowSwipingUpGuideFingerprint.alsoResolve(
context,
SwipingUpGestureParentFingerprint
).mutableMethod.apply {
addInstructionsWithLabels(
0,
"""
invoke-static { }, $INTEGRATIONS_CLASS_DESCRIPTOR->isGestureDisabled()Z
move-result v0
if-eqz v0, :disabled
const/4 v0, 0x0
return v0
""",
ExternalLabel("disabled", getInstruction(0))
)
}
}
}

View File

@@ -0,0 +1,14 @@
package app.revanced.patches.youtube.interaction.seekbar.fingerprints
import app.revanced.patcher.extensions.or
import app.revanced.patcher.fingerprint.MethodFingerprint
import com.android.tools.smali.dexlib2.AccessFlags
/**
* Resolves using the class found in [SwipingUpGestureParentFingerprint].
*/
internal object AllowSwipingUpGestureFingerprint : MethodFingerprint(
accessFlags = AccessFlags.PUBLIC or AccessFlags.FINAL,
returnType = "V",
parameters = listOf("L"),
)

View File

@@ -1,13 +0,0 @@
package app.revanced.patches.youtube.interaction.seekbar.fingerprints
import app.revanced.patcher.fingerprint.MethodFingerprint
import com.android.tools.smali.dexlib2.Opcode
internal object IsSwipingUpFingerprint : MethodFingerprint(
returnType = "Z",
parameters = listOf("Landroid/view/MotionEvent;", "J"),
opcodes = listOf(
Opcode.SGET_OBJECT,
Opcode.IGET_OBJECT
)
)

View File

@@ -0,0 +1,14 @@
package app.revanced.patches.youtube.interaction.seekbar.fingerprints
import app.revanced.util.patch.LiteralValueFingerprint
import com.android.tools.smali.dexlib2.AccessFlags
/**
* Resolves using the class found in [SwipingUpGestureParentFingerprint].
*/
internal object ShowSwipingUpGuideFingerprint : LiteralValueFingerprint(
accessFlags = AccessFlags.FINAL.value,
returnType = "Z",
parameters = emptyList(),
literalSupplier = { 1L }
)

View File

@@ -0,0 +1,12 @@
package app.revanced.patches.youtube.interaction.seekbar.fingerprints
import app.revanced.patcher.extensions.or
import app.revanced.util.patch.LiteralValueFingerprint
import com.android.tools.smali.dexlib2.AccessFlags
internal object SwipingUpGestureParentFingerprint : LiteralValueFingerprint(
accessFlags = AccessFlags.PUBLIC or AccessFlags.FINAL,
returnType = "Z",
parameters = listOf(),
literalSupplier = { 45379021 }
)

View File

@@ -18,13 +18,18 @@ import app.revanced.patches.youtube.layout.hide.general.fingerprints.HideShowMor
import app.revanced.patches.youtube.layout.hide.general.fingerprints.ParseElementFromBufferFingerprint
import app.revanced.patches.youtube.layout.hide.general.fingerprints.PlayerOverlayFingerprint
import app.revanced.patches.youtube.layout.hide.general.fingerprints.ShowWatermarkFingerprint
import app.revanced.patches.youtube.layout.hide.general.fingerprints.YoodlesImageViewFingerprint
import app.revanced.patches.youtube.misc.litho.filter.LithoFilterPatch
import app.revanced.patches.youtube.misc.navigation.NavigationBarHookPatch
import app.revanced.patches.youtube.misc.settings.SettingsPatch
import app.revanced.util.findOpcodeIndicesReversed
import app.revanced.util.getReference
import app.revanced.util.resultOrThrow
import com.android.tools.smali.dexlib2.Opcode
import com.android.tools.smali.dexlib2.iface.instruction.FiveRegisterInstruction
import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
import com.android.tools.smali.dexlib2.iface.instruction.TwoRegisterInstruction
import com.android.tools.smali.dexlib2.iface.reference.MethodReference
@Patch(
name = "Hide layout components",
@@ -70,7 +75,12 @@ import com.android.tools.smali.dexlib2.iface.instruction.TwoRegisterInstruction
)
@Suppress("unused")
object HideLayoutComponentsPatch : BytecodePatch(
setOf(ParseElementFromBufferFingerprint, PlayerOverlayFingerprint, HideShowMoreButtonFingerprint),
setOf(
ParseElementFromBufferFingerprint,
PlayerOverlayFingerprint,
HideShowMoreButtonFingerprint,
YoodlesImageViewFingerprint,
),
) {
private const val LAYOUT_COMPONENTS_FILTER_CLASS_DESCRIPTOR =
"Lapp/revanced/integrations/youtube/patches/components/LayoutComponentsFilter;"
@@ -89,7 +99,6 @@ object HideLayoutComponentsPatch : BytecodePatch(
SwitchPreference("revanced_hide_channel_guidelines"),
SwitchPreference("revanced_hide_channel_member_shelf"),
SwitchPreference("revanced_hide_channel_watermark"),
SwitchPreference("revanced_hide_chips_shelf"),
SwitchPreference("revanced_hide_community_guidelines"),
PreferenceScreen(
key = "revanced_hide_description_components_screen",
@@ -129,6 +138,7 @@ object HideLayoutComponentsPatch : BytecodePatch(
SwitchPreference("revanced_hide_search_result_recommendations"),
SwitchPreference("revanced_hide_search_result_shelf_header"),
SwitchPreference("revanced_hide_show_more_button"),
SwitchPreference("revanced_hide_yoodles"),
PreferenceScreen(
key = "revanced_hide_keyword_content_screen",
sorting = Sorting.UNSORTED,
@@ -145,6 +155,7 @@ object HideLayoutComponentsPatch : BytecodePatch(
)
SettingsPatch.PreferenceScreen.GENERAL_LAYOUT.addPreferences(
SwitchPreference("revanced_hide_chips_shelf"),
SwitchPreference("revanced_hide_expandable_chip"),
SwitchPreference("revanced_hide_gray_separator"),
PreferenceScreen(
@@ -226,5 +237,28 @@ object HideLayoutComponentsPatch : BytecodePatch(
}
// endregion
// region 'Yoodles'
YoodlesImageViewFingerprint.resultOrThrow().mutableMethod.apply {
findOpcodeIndicesReversed{
opcode == Opcode.INVOKE_VIRTUAL
&& getReference<MethodReference>()?.name == "setImageDrawable"
}.forEach { insertIndex ->
val register = getInstruction<FiveRegisterInstruction>(insertIndex).registerD
addInstructionsWithLabels(
insertIndex,
"""
invoke-static { v$register }, $LAYOUT_COMPONENTS_FILTER_CLASS_DESCRIPTOR->hideYoodles(Landroid/graphics/drawable/Drawable;)Landroid/graphics/drawable/Drawable;
move-result-object v$register
if-eqz v$register, :hide
""",
ExternalLabel("hide", getInstruction(insertIndex + 1)),
)
}
}
// endregion
}
}

View File

@@ -17,10 +17,17 @@ import app.revanced.patches.youtube.misc.settings.SettingsPatch
internal object HideLayoutComponentsResourcePatch : ResourcePatch() {
internal var expandButtonDownId: Long = -1
var youTubeLogo = -1L
override fun execute(context: ResourceContext) {
expandButtonDownId = ResourceMappingPatch[
"layout",
"expand_button_down",
]
youTubeLogo = ResourceMappingPatch[
"id",
"youtube_logo"
]
}
}

View File

@@ -0,0 +1,13 @@
package app.revanced.patches.youtube.layout.hide.general.fingerprints
import app.revanced.patcher.extensions.or
import app.revanced.patches.youtube.layout.hide.general.HideLayoutComponentsResourcePatch
import app.revanced.util.patch.LiteralValueFingerprint
import com.android.tools.smali.dexlib2.AccessFlags
internal object YoodlesImageViewFingerprint : LiteralValueFingerprint(
accessFlags = AccessFlags.PUBLIC or AccessFlags.FINAL,
parameters = listOf("L", "L"),
returnType = "Landroid/view/View;",
literalSupplier = { HideLayoutComponentsResourcePatch.youTubeLogo }
)

View File

@@ -6,6 +6,7 @@ import app.revanced.patcher.extensions.InstructionExtensions.getInstruction
import app.revanced.patcher.patch.BytecodePatch
import app.revanced.patcher.patch.annotation.CompatiblePackage
import app.revanced.patcher.patch.annotation.Patch
import app.revanced.patcher.patch.options.PatchOption.PatchExtensions.booleanPatchOption
import app.revanced.patcher.util.proxy.mutableTypes.MutableMethod
import app.revanced.patches.shared.misc.mapping.ResourceMappingPatch
import app.revanced.patches.youtube.layout.hide.shorts.fingerprints.*
@@ -76,6 +77,20 @@ object HideShortsComponentsPatch : BytecodePatch(
) {
private const val FILTER_CLASS_DESCRIPTOR = "Lapp/revanced/integrations/youtube/patches/components/ShortsFilter;"
internal val hideShortsAppShortcut by booleanPatchOption(
key = "hideShortsAppShortcut",
default = false,
title = "Hide Shorts app shortcut",
description = "Permanently hides the shortcut to open Shorts when long pressing the app icon in your launcher."
)
internal val hideShortsWidget by booleanPatchOption(
key = "hideShortsWidget",
default = false,
title = "Hide Shorts widget",
description = "Permanently hides the launcher widget Shorts button."
)
override fun execute(context: BytecodeContext) {
// region Hide the Shorts shelf.

View File

@@ -6,7 +6,10 @@ import app.revanced.patcher.patch.annotation.Patch
import app.revanced.patches.all.misc.resources.AddResourcesPatch
import app.revanced.patches.shared.misc.mapping.ResourceMappingPatch
import app.revanced.patches.shared.misc.settings.preference.SwitchPreference
import app.revanced.patches.youtube.layout.hide.shorts.HideShortsComponentsPatch.hideShortsAppShortcut
import app.revanced.patches.youtube.layout.hide.shorts.HideShortsComponentsPatch.hideShortsWidget
import app.revanced.patches.youtube.misc.settings.SettingsPatch
import app.revanced.util.findElementByAttributeValueOrThrow
@Patch(dependencies = [SettingsPatch::class, ResourceMappingPatch::class, AddResourcesPatch::class])
object HideShortsComponentsResourcePatch : ResourcePatch() {
@@ -26,6 +29,7 @@ object HideShortsComponentsResourcePatch : ResourcePatch() {
// since this Setting menu currently uses the ordering used here.
// Vertical row of buttons on right side of the screen.
SwitchPreference("revanced_hide_shorts_like_fountain"),
SwitchPreference("revanced_hide_shorts_like_button"),
SwitchPreference("revanced_hide_shorts_dislike_button"),
SwitchPreference("revanced_hide_shorts_comments_button"),
@@ -38,9 +42,9 @@ object HideShortsComponentsResourcePatch : ResourcePatch() {
SwitchPreference("revanced_hide_shorts_subscribe_button"),
SwitchPreference("revanced_hide_shorts_paused_overlay_buttons"),
SwitchPreference("revanced_hide_shorts_save_sound_button"),
SwitchPreference("revanced_hide_shorts_use_this_sound_button"),
SwitchPreference("revanced_hide_shorts_shop_button"),
SwitchPreference("revanced_hide_shorts_tagged_products"),
SwitchPreference("revanced_hide_shorts_stickers"),
SwitchPreference("revanced_hide_shorts_search_suggestions"),
SwitchPreference("revanced_hide_shorts_super_thanks_button"),
SwitchPreference("revanced_hide_shorts_location_label"),
@@ -52,6 +56,28 @@ object HideShortsComponentsResourcePatch : ResourcePatch() {
SwitchPreference("revanced_hide_shorts_navigation_bar"),
)
if (hideShortsAppShortcut == true) {
context.xmlEditor["res/xml/main_shortcuts.xml"].use { editor ->
val shortsItem = editor.file.childNodes.findElementByAttributeValueOrThrow(
"android:shortcutId",
"shorts-shortcut",
)
shortsItem.parentNode.removeChild(shortsItem)
}
}
if (hideShortsWidget == true) {
context.xmlEditor["res/layout/appwidget_two_rows.xml"].use { editor ->
val shortsItem = editor.file.childNodes.findElementByAttributeValueOrThrow(
"android:id",
"@id/button_shorts_container",
)
shortsItem.parentNode.removeChild(shortsItem)
}
}
reelPlayerRightCellButtonHeight = ResourceMappingPatch[
"dimen",
"reel_player_right_cell_button_height",

View File

@@ -10,7 +10,6 @@ import app.revanced.patcher.patch.PatchException
import app.revanced.patcher.patch.annotation.CompatiblePackage
import app.revanced.patcher.patch.annotation.Patch
import app.revanced.patcher.util.proxy.mutableTypes.MutableMethod
import app.revanced.patches.shared.misc.mapping.ResourceMappingPatch
import app.revanced.patches.youtube.layout.sponsorblock.fingerprints.AppendTimeFingerprint
import app.revanced.patches.youtube.layout.sponsorblock.fingerprints.ControlsOverlayFingerprint
import app.revanced.patches.youtube.layout.sponsorblock.fingerprints.RectangleFieldInvalidatorFingerprint
@@ -26,7 +25,10 @@ import app.revanced.patches.youtube.video.information.VideoInformationPatch
import app.revanced.patches.youtube.video.videoid.VideoIdPatch
import app.revanced.util.exception
import com.android.tools.smali.dexlib2.Opcode
import com.android.tools.smali.dexlib2.iface.instruction.*
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.formats.Instruction35c
import com.android.tools.smali.dexlib2.iface.reference.FieldReference
import com.android.tools.smali.dexlib2.iface.reference.MethodReference
@@ -169,59 +171,14 @@ object SponsorBlockBytecodePatch : BytecodePatch(
break
}
/*
* Voting & Shield button
*/
val controlsMethodResult = PlayerControlsBytecodePatch.showPlayerControlsFingerprintResult
// Change visibility of the buttons.
PlayerControlsBytecodePatch.initializeTopControl(INTEGRATIONS_CREATE_SEGMENT_BUTTON_CONTROLLER_CLASS_DESCRIPTOR)
PlayerControlsBytecodePatch.injectVisibilityCheckCall(INTEGRATIONS_CREATE_SEGMENT_BUTTON_CONTROLLER_CLASS_DESCRIPTOR)
val controlsLayoutStubResourceId =
ResourceMappingPatch["id", "controls_layout_stub"]
val zoomOverlayResourceId =
ResourceMappingPatch["id", "video_zoom_overlay_stub"]
PlayerControlsBytecodePatch.initializeTopControl(INTEGRATIONS_VOTING_BUTTON_CONTROLLER_CLASS_DESCRIPTOR)
PlayerControlsBytecodePatch.injectVisibilityCheckCall(INTEGRATIONS_VOTING_BUTTON_CONTROLLER_CLASS_DESCRIPTOR)
methods@ for (method in controlsMethodResult.mutableClass.methods) {
val instructions = method.implementation?.instructions!!
instructions@ for ((index, instruction) in instructions.withIndex()) {
// search for method which inflates the controls layout view
if (instruction.opcode != Opcode.CONST) continue@instructions
when ((instruction as NarrowLiteralInstruction).wideLiteral) {
controlsLayoutStubResourceId -> {
// replace the view with the YouTubeControlsOverlay
val moveResultInstructionIndex = index + 5
val inflatedViewRegister =
(instructions[moveResultInstructionIndex] as OneRegisterInstruction).registerA
// initialize with the player overlay object
method.addInstructions(
moveResultInstructionIndex + 1, // insert right after moving the view to the register and use that register
"""
invoke-static {v$inflatedViewRegister}, $INTEGRATIONS_CREATE_SEGMENT_BUTTON_CONTROLLER_CLASS_DESCRIPTOR->initialize(Landroid/view/View;)V
invoke-static {v$inflatedViewRegister}, $INTEGRATIONS_VOTING_BUTTON_CONTROLLER_CLASS_DESCRIPTOR->initialize(Landroid/view/View;)V
""",
)
}
zoomOverlayResourceId -> {
val invertVisibilityMethod =
context.toMethodWalker(method).nextMethod(index - 6, true).getMethod() as MutableMethod
// change visibility of the buttons
invertVisibilityMethod.addInstructions(
0,
"""
invoke-static {p1}, $INTEGRATIONS_CREATE_SEGMENT_BUTTON_CONTROLLER_CLASS_DESCRIPTOR->changeVisibilityNegatedImmediate(Z)V
invoke-static {p1}, $INTEGRATIONS_VOTING_BUTTON_CONTROLLER_CLASS_DESCRIPTOR->changeVisibilityNegatedImmediate(Z)V
""".trimIndent(),
)
}
}
}
}
// change visibility of the buttons
PlayerControlsBytecodePatch.injectVisibilityCheckCall("$INTEGRATIONS_CREATE_SEGMENT_BUTTON_CONTROLLER_CLASS_DESCRIPTOR->changeVisibility(Z)V")
PlayerControlsBytecodePatch.injectVisibilityCheckCall("$INTEGRATIONS_VOTING_BUTTON_CONTROLLER_CLASS_DESCRIPTOR->changeVisibility(Z)V")
// append the new time to the player layout
// Append the new time to the player layout.
val appendTimeFingerprintResult = AppendTimeFingerprint.result!!
val appendTimePatternScanStartIndex = appendTimeFingerprintResult.scanResult.patternScanResult!!.startIndex
val targetRegister =

View File

@@ -1,18 +1,16 @@
package app.revanced.patches.youtube.layout.sponsorblock
import app.revanced.patcher.data.ResourceContext
import app.revanced.patcher.patch.PatchException
import app.revanced.patcher.patch.ResourcePatch
import app.revanced.patcher.patch.annotation.Patch
import app.revanced.patches.all.misc.resources.AddResourcesPatch
import app.revanced.patches.shared.misc.mapping.ResourceMappingPatch
import app.revanced.patches.shared.misc.settings.preference.IntentPreference
import app.revanced.patches.youtube.misc.playercontrols.PlayerControlsResourcePatch
import app.revanced.patches.youtube.misc.settings.SettingsPatch
import app.revanced.patches.youtube.misc.settings.SettingsResourcePatch
import app.revanced.util.ResourceGroup
import app.revanced.util.copyResources
import app.revanced.util.copyXmlNode
import app.revanced.util.inputStreamFromBundledResource
@Patch(
dependencies = [
@@ -60,49 +58,6 @@ internal object SponsorBlockResourcePatch : ResourcePatch() {
context.copyResources("sponsorblock", resourceGroup)
}
// copy nodes from host resources to their real xml files
val hostingResourceStream =
inputStreamFromBundledResource(
"sponsorblock",
"host/layout/youtube_controls_layout.xml",
)!!
var modifiedControlsLayout = false
val editor = context.xmlEditor["res/layout/youtube_controls_layout.xml"]
"RelativeLayout".copyXmlNode(
context.xmlEditor[hostingResourceStream],
editor,
).also {
val document = editor.file
val children = document.getElementsByTagName("RelativeLayout").item(0).childNodes
// Replace the startOf with the voting button view so that the button does not overlap
for (i in 1 until children.length) {
val view = children.item(i)
// Replace the attribute for a specific node only
if (!(
view.hasAttributes() &&
view.attributes.getNamedItem(
"android:id",
).nodeValue.endsWith("live_chat_overlay_button")
)
) {
continue
}
// voting button id from the voting button view from the youtube_controls_layout.xml host file
val votingButtonId = "@+id/revanced_sb_voting_button"
view.attributes.getNamedItem("android:layout_toStartOf").nodeValue = votingButtonId
modifiedControlsLayout = true
break
}
}.close()
if (!modifiedControlsLayout) throw PatchException("Could not modify controls layout")
PlayerControlsResourcePatch.addTopControls("sponsorblock")
}
}

View File

@@ -3,70 +3,18 @@ package app.revanced.patches.youtube.misc.playercontrols
import app.revanced.patcher.data.ResourceContext
import app.revanced.patcher.patch.ResourcePatch
import app.revanced.patcher.patch.annotation.Patch
import app.revanced.patcher.util.DomFileEditor
import app.revanced.patches.shared.misc.mapping.ResourceMappingPatch
import java.io.Closeable
@Patch(dependencies = [ResourceMappingPatch::class])
@Patch(
dependencies = [PlayerControlsBytecodePatch::class],
)
@Deprecated("Patch renamed to PlayerControlsResourcePatch", replaceWith = ReplaceWith("PlayerControlsBytecodePatch"))
object BottomControlsResourcePatch : ResourcePatch(), Closeable {
internal var bottomUiContainerResourceId: Long = -1
override fun execute(context: ResourceContext) {}
private const val TARGET_RESOURCE_NAME = "youtube_controls_bottom_ui_container.xml"
private const val TARGET_RESOURCE = "res/layout/$TARGET_RESOURCE_NAME"
// The element to the left of the element being added.
private var lastLeftOf = "fullscreen_button"
private lateinit var resourceContext: ResourceContext
private lateinit var targetDocumentEditor: DomFileEditor
override fun execute(context: ResourceContext) {
resourceContext = context
targetDocumentEditor = context.xmlEditor[TARGET_RESOURCE]
bottomUiContainerResourceId = ResourceMappingPatch["id", "bottom_ui_container_stub"]
}
/**
* Add new controls to the bottom of the YouTube player.
*
* @param resourceDirectoryName The name of the directory containing the hosting resource.
*/
fun addControls(resourceDirectoryName: String) {
val sourceDocumentEditor = resourceContext.xmlEditor[
this::class.java.classLoader.getResourceAsStream(
"$resourceDirectoryName/host/layout/$TARGET_RESOURCE_NAME",
)!!,
]
val sourceDocument = sourceDocumentEditor.file
val targetDocument = targetDocumentEditor.file
val targetElementTag = "android.support.constraint.ConstraintLayout"
val sourceElements = sourceDocument.getElementsByTagName(targetElementTag).item(0).childNodes
val targetElement = targetDocument.getElementsByTagName(targetElementTag).item(0)
for (index in 1 until sourceElements.length) {
val element = sourceElements.item(index).cloneNode(true)
// If the element has no attributes there's no point to adding it to the destination.
if (!element.hasAttributes()) continue
// Set the elements lastLeftOf attribute to the lastLeftOf value.
val namespace = "@+id"
element.attributes.getNamedItem("yt:layout_constraintRight_toLeftOf").nodeValue =
"$namespace/$lastLeftOf"
// Set lastLeftOf attribute to the current element.
val nameSpaceLength = 5
lastLeftOf = element.attributes.getNamedItem("android:id").nodeValue.substring(nameSpaceLength)
// Add the element.
targetDocument.adoptNode(element)
targetElement.appendChild(element)
}
sourceDocumentEditor.close()
PlayerControlsResourcePatch.addBottomControls(resourceDirectoryName)
}
override fun close() = targetDocumentEditor.close()
}
override fun close() {}
}

View File

@@ -1,65 +1,144 @@
package app.revanced.patches.youtube.misc.playercontrols
import app.revanced.util.exception
import app.revanced.patcher.data.BytecodeContext
import app.revanced.patcher.extensions.InstructionExtensions.addInstruction
import app.revanced.patcher.fingerprint.MethodFingerprintResult
import app.revanced.patcher.extensions.InstructionExtensions.getInstruction
import app.revanced.patcher.patch.BytecodePatch
import app.revanced.patcher.patch.annotation.Patch
import app.revanced.patches.youtube.shared.fingerprints.LayoutConstructorFingerprint
import app.revanced.patches.youtube.misc.playercontrols.fingerprints.BottomControlsInflateFingerprint
import app.revanced.patches.youtube.misc.playercontrols.fingerprints.PlayerControlsVisibilityFingerprint
import app.revanced.patcher.util.proxy.mutableTypes.MutableMethod
import app.revanced.patcher.util.proxy.mutableTypes.MutableMethod.Companion.toMutable
import app.revanced.patches.youtube.misc.playercontrols.fingerprints.ControlsOverlayVisibility
import app.revanced.patches.youtube.misc.playercontrols.fingerprints.OverlayViewInflateFingerprint
import app.revanced.patches.youtube.misc.playercontrols.fingerprints.PlayerBottomControlsInflateFingerprint
import app.revanced.patches.youtube.misc.playercontrols.fingerprints.PlayerControlsIntegrationHookFingerprint
import app.revanced.patches.youtube.misc.playercontrols.fingerprints.PlayerTopControlsInflateFingerprint
import app.revanced.util.alsoResolve
import app.revanced.util.getReference
import app.revanced.util.indexOfFirstInstructionOrThrow
import app.revanced.util.indexOfFirstWideLiteralInstructionValueReversedOrThrow
import app.revanced.util.resultOrThrow
import com.android.tools.smali.dexlib2.Opcode
import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
import com.android.tools.smali.dexlib2.iface.reference.MethodReference
import com.android.tools.smali.dexlib2.iface.reference.TypeReference
@Patch(
description = "Manages the code for the player controls of the YouTube player.",
dependencies = [BottomControlsResourcePatch::class],
dependencies = [PlayerControlsResourcePatch::class],
)
object PlayerControlsBytecodePatch : BytecodePatch(
setOf(LayoutConstructorFingerprint, BottomControlsInflateFingerprint)
setOf(
PlayerTopControlsInflateFingerprint,
PlayerBottomControlsInflateFingerprint,
OverlayViewInflateFingerprint,
PlayerControlsIntegrationHookFingerprint
)
) {
lateinit var showPlayerControlsFingerprintResult: MethodFingerprintResult
private const val INTEGRATIONS_CLASS_DESCRIPTOR =
"Lapp/revanced/integrations/youtube/patches/PlayerControlsPatch;"
private var moveToRegisterInstructionIndex: Int = 0
private var viewRegister: Int = 0
private lateinit var inflateFingerprintResult: MethodFingerprintResult
private lateinit var inflateTopControlMethod: MutableMethod
private var inflateTopControlInsertIndex: Int = -1
private var inflateTopControlRegister: Int = -1
private lateinit var inflateBottomControlMethod: MutableMethod
private var inflateBottomControlInsertIndex: Int = -1
private var inflateBottomControlRegister: Int = -1
private lateinit var visibilityMethod: MutableMethod
private var visibilityInsertIndex: Int = 0
private lateinit var visibilityImmediateMethod: MutableMethod
private var visibilityImmediateInsertIndex: Int = 0
override fun execute(context: BytecodeContext) {
LayoutConstructorFingerprint.result?.let {
if (!PlayerControlsVisibilityFingerprint.resolve(context, it.classDef))
throw LayoutConstructorFingerprint.exception
} ?: throw LayoutConstructorFingerprint.exception
fun MutableMethod.indexOfFirstViewInflateOrThrow() =
indexOfFirstInstructionOrThrow {
val reference = getReference<MethodReference>()
reference?.definingClass == "Landroid/view/ViewStub;" &&
reference.name == "inflate"
}
showPlayerControlsFingerprintResult = PlayerControlsVisibilityFingerprint.result!!
PlayerBottomControlsInflateFingerprint.resultOrThrow().mutableMethod.apply{
inflateBottomControlMethod = this
inflateFingerprintResult = BottomControlsInflateFingerprint.result!!.also {
moveToRegisterInstructionIndex = it.scanResult.patternScanResult!!.endIndex
viewRegister =
(it.mutableMethod.implementation!!.instructions[moveToRegisterInstructionIndex] as OneRegisterInstruction).registerA
val inflateReturnObjectIndex = indexOfFirstViewInflateOrThrow() + 1
inflateBottomControlRegister = getInstruction<OneRegisterInstruction>(inflateReturnObjectIndex).registerA
inflateBottomControlInsertIndex = inflateReturnObjectIndex + 1
}
PlayerTopControlsInflateFingerprint.resultOrThrow().mutableMethod.apply {
inflateTopControlMethod = this
val inflateReturnObjectIndex = indexOfFirstViewInflateOrThrow() + 1
inflateTopControlRegister = getInstruction<OneRegisterInstruction>(inflateReturnObjectIndex).registerA
inflateTopControlInsertIndex = inflateReturnObjectIndex + 1
}
ControlsOverlayVisibility.alsoResolve(
context, PlayerTopControlsInflateFingerprint
).mutableMethod.apply {
visibilityMethod = this
}
// Hook the fullscreen close button. Used to fix visibility
// when seeking and other situations.
OverlayViewInflateFingerprint.resultOrThrow().mutableMethod.apply {
val resourceIndex = indexOfFirstWideLiteralInstructionValueReversedOrThrow(
PlayerControlsResourcePatch.fullscreenButton
)
val index = indexOfFirstInstructionOrThrow(resourceIndex) {
opcode == Opcode.CHECK_CAST && getReference<TypeReference>()?.type ==
"Landroid/widget/ImageView;"
}
val register = getInstruction<OneRegisterInstruction>(index).registerA
addInstruction(index + 1, "invoke-static { v$register }, " +
"$INTEGRATIONS_CLASS_DESCRIPTOR->setFullscreenCloseButton(Landroid/widget/ImageView;)V")
}
visibilityImmediateMethod = PlayerControlsIntegrationHookFingerprint.resultOrThrow().mutableMethod
}
/**
* Injects the code to change the visibility of controls.
* Injects the code to initialize the controls.
* @param descriptor The descriptor of the method which should be called.
*/
fun injectVisibilityCheckCall(descriptor: String) {
showPlayerControlsFingerprintResult.mutableMethod.addInstruction(
0,
"""
invoke-static {p1}, $descriptor
"""
internal fun initializeTopControl(descriptor: String) {
inflateTopControlMethod.addInstruction(
inflateTopControlInsertIndex++,
"invoke-static { v$inflateTopControlRegister }, $descriptor->initialize(Landroid/view/View;)V"
)
}
/**
* Injects the code to initialize the controls.
* @param descriptor The descriptor of the method which should be calleed.
* @param descriptor The descriptor of the method which should be called.
*/
fun initializeControl(descriptor: String) {
inflateFingerprintResult.mutableMethod.addInstruction(
moveToRegisterInstructionIndex + 1,
"invoke-static {v$viewRegister}, $descriptor"
fun initializeBottomControl(descriptor: String) {
inflateBottomControlMethod.addInstruction(
inflateBottomControlInsertIndex++,
"invoke-static { v$inflateBottomControlRegister }, $descriptor->initializeButton(Landroid/view/View;)V"
)
}
/**
* Injects the code to change the visibility of controls.
* @param descriptor The descriptor of the method which should be called.
*/
fun injectVisibilityCheckCall(descriptor: String) {
visibilityMethod.addInstruction(
visibilityInsertIndex++,
"invoke-static { p1 , p2 }, $descriptor->changeVisibility(ZZ)V"
)
visibilityImmediateMethod.addInstruction(
visibilityImmediateInsertIndex++,
"invoke-static { p0 }, $descriptor->changeVisibilityImmediate(Z)V"
)
}
@Deprecated("Obsolete", replaceWith = ReplaceWith("initializeBottomControl"))
fun initializeControl(descriptor: String)= initializeBottomControl(descriptor)
}

View File

@@ -0,0 +1,133 @@
package app.revanced.patches.youtube.misc.playercontrols
import app.revanced.patcher.data.ResourceContext
import app.revanced.patcher.patch.ResourcePatch
import app.revanced.patcher.patch.annotation.Patch
import app.revanced.patcher.util.DomFileEditor
import app.revanced.patches.shared.misc.mapping.ResourceMappingPatch
import app.revanced.util.copyXmlNode
import app.revanced.util.findElementByAttributeValue
import app.revanced.util.findElementByAttributeValueOrThrow
import app.revanced.util.inputStreamFromBundledResource
import org.w3c.dom.Node
import java.io.Closeable
@Patch(dependencies = [ResourceMappingPatch::class])
object PlayerControlsResourcePatch : ResourcePatch(), Closeable {
private const val TARGET_RESOURCE_NAME = "youtube_controls_bottom_ui_container.xml"
private const val TARGET_RESOURCE = "res/layout/$TARGET_RESOURCE_NAME"
internal var bottomUiContainerResourceId: Long = -1L
internal var controlsLayoutStub: Long = -1L
internal var heatseekerViewstub = -1L
internal var fullscreenButton = -1L
private lateinit var resourceContext: ResourceContext
/**
* The element to the left of the element being added.
*/
private var bottomLastLeftOf = "@id/fullscreen_button"
private lateinit var bottomInsertBeforeNode: Node
private lateinit var bottomTargetDocumentEditor: DomFileEditor
private lateinit var bottomTargetElement : Node
override fun execute(context: ResourceContext) {
bottomUiContainerResourceId = ResourceMappingPatch["id", "bottom_ui_container_stub"]
controlsLayoutStub = ResourceMappingPatch["id", "controls_layout_stub"]
heatseekerViewstub = ResourceMappingPatch["id", "heatseeker_viewstub"]
fullscreenButton = ResourceMappingPatch["id", "fullscreen_button"]
resourceContext = context
bottomTargetDocumentEditor = context.xmlEditor[TARGET_RESOURCE]
val document = bottomTargetDocumentEditor.file
bottomTargetElement = document.getElementsByTagName(
"android.support.constraint.ConstraintLayout"
).item(0)
bottomInsertBeforeNode = document.childNodes.findElementByAttributeValue(
"android:inflatedId",
bottomLastLeftOf
) ?: document.childNodes.findElementByAttributeValueOrThrow(
"android:id", // Older targets use non inflated id.
bottomLastLeftOf
)
}
// Internal until this is modified to work with any patch (and not just SponsorBlock).
internal fun addTopControls(resourceDirectoryName: String) {
val hostingResourceStream = inputStreamFromBundledResource(
resourceDirectoryName,
"host/layout/youtube_controls_layout.xml",
)!!
val editor = resourceContext.xmlEditor["res/layout/youtube_controls_layout.xml"]
"RelativeLayout".copyXmlNode(
resourceContext.xmlEditor[hostingResourceStream],
editor,
).use {
val element = editor.file.childNodes.findElementByAttributeValueOrThrow(
"android:id",
"@id/player_video_heading"
)
// FIXME: This uses hard coded values that only works with SponsorBlock.
// If other top buttons are added by other patches, this code must be changed.
// voting button id from the voting button view from the youtube_controls_layout.xml host file
val votingButtonId = "@+id/revanced_sb_voting_button"
element.attributes.getNamedItem("android:layout_toStartOf").nodeValue = votingButtonId
}
}
/**
* Add new controls to the bottom of the YouTube player.
*
* @param resourceDirectoryName The name of the directory containing the hosting resource.
*/
fun addBottomControls(resourceDirectoryName: String) {
val sourceDocumentEditor = resourceContext.xmlEditor[
this::class.java.classLoader.getResourceAsStream(
"$resourceDirectoryName/host/layout/$TARGET_RESOURCE_NAME",
)!!,
]
val sourceElements = sourceDocumentEditor.file.getElementsByTagName(
"android.support.constraint.ConstraintLayout"
).item(0).childNodes
// Copy the patch layout xml into the target layout file.
for (index in 1 until sourceElements.length) {
val element = sourceElements.item(index).cloneNode(true)
// If the element has no attributes there's no point to adding it to the destination.
if (!element.hasAttributes()) continue
element.attributes.getNamedItem("yt:layout_constraintRight_toLeftOf").nodeValue = bottomLastLeftOf
bottomLastLeftOf = element.attributes.getNamedItem("android:id").nodeValue
bottomTargetDocumentEditor.file.adoptNode(element)
// Elements do not need to be added in the layout order since a layout constraint is used,
// but in order is easier to make sense of while debugging.
bottomTargetElement.insertBefore(element, bottomInsertBeforeNode)
bottomInsertBeforeNode = element
}
sourceDocumentEditor.close()
}
override fun close() {
arrayOf(
"@id/bottom_end_container",
"@id/multiview_button",
).forEach {
bottomTargetDocumentEditor.file.childNodes.findElementByAttributeValue(
"android:id",
it
)?.setAttribute("yt:layout_constraintRight_toLeftOf", bottomLastLeftOf)
}
bottomTargetDocumentEditor.close()
}
}

View File

@@ -1,19 +0,0 @@
package app.revanced.patches.youtube.misc.playercontrols.fingerprints
import app.revanced.patcher.extensions.or
import app.revanced.patches.youtube.misc.playercontrols.BottomControlsResourcePatch
import app.revanced.util.patch.LiteralValueFingerprint
import com.android.tools.smali.dexlib2.AccessFlags
import com.android.tools.smali.dexlib2.Opcode
internal object BottomControlsInflateFingerprint : LiteralValueFingerprint(
accessFlags = AccessFlags.PUBLIC or AccessFlags.FINAL or AccessFlags.SYNTHETIC,
returnType = "L",
parameters = listOf(),
opcodes = listOf(
Opcode.CHECK_CAST,
Opcode.INVOKE_VIRTUAL,
Opcode.MOVE_RESULT_OBJECT
),
literalSupplier = { BottomControlsResourcePatch.bottomUiContainerResourceId }
)

View File

@@ -4,7 +4,10 @@ import app.revanced.patcher.extensions.or
import app.revanced.patcher.fingerprint.MethodFingerprint
import com.android.tools.smali.dexlib2.AccessFlags
internal object PlayerControlsVisibilityFingerprint : MethodFingerprint(
/**
* Resolves to the class found in [PlayerTopControlsInflateFingerprint].
*/
internal object ControlsOverlayVisibility : MethodFingerprint(
accessFlags = AccessFlags.PRIVATE or AccessFlags.FINAL,
returnType = "V",
parameters = listOf("Z", "Z")

View File

@@ -0,0 +1,17 @@
package app.revanced.patches.youtube.misc.playercontrols.fingerprints
import app.revanced.patcher.extensions.or
import app.revanced.patcher.fingerprint.MethodFingerprint
import app.revanced.patches.youtube.misc.playercontrols.PlayerControlsResourcePatch
import app.revanced.util.containsWideLiteralInstructionValue
import com.android.tools.smali.dexlib2.AccessFlags
internal object OverlayViewInflateFingerprint : MethodFingerprint(
accessFlags = AccessFlags.PUBLIC or AccessFlags.FINAL,
returnType = "V",
parameters = listOf("Landroid/view/View;"),
customFingerprint = { methodDef, _ ->
methodDef.containsWideLiteralInstructionValue(PlayerControlsResourcePatch.fullscreenButton) &&
methodDef.containsWideLiteralInstructionValue(PlayerControlsResourcePatch.heatseekerViewstub)
}
)

View File

@@ -0,0 +1,10 @@
package app.revanced.patches.youtube.misc.playercontrols.fingerprints
import app.revanced.patches.youtube.misc.playercontrols.PlayerControlsResourcePatch
import app.revanced.util.patch.LiteralValueFingerprint
internal object PlayerBottomControlsInflateFingerprint : LiteralValueFingerprint(
returnType = "Ljava/lang/Object;",
parameters = listOf(),
literalSupplier = { PlayerControlsResourcePatch.bottomUiContainerResourceId }
)

View File

@@ -0,0 +1,15 @@
package app.revanced.patches.youtube.misc.playercontrols.fingerprints
import app.revanced.patcher.extensions.or
import app.revanced.patcher.fingerprint.MethodFingerprint
import com.android.tools.smali.dexlib2.AccessFlags
internal object PlayerControlsIntegrationHookFingerprint : MethodFingerprint(
accessFlags = AccessFlags.PUBLIC or AccessFlags.STATIC,
returnType = "V",
parameters = listOf("Z"),
customFingerprint = { methodDef, classDef ->
methodDef.name == "fullscreenButtonVisibilityChanged" &&
classDef.type == "Lapp/revanced/integrations/youtube/patches/PlayerControlsPatch;"
}
)

View File

@@ -0,0 +1,13 @@
package app.revanced.patches.youtube.misc.playercontrols.fingerprints
import app.revanced.patcher.extensions.or
import app.revanced.patches.youtube.misc.playercontrols.PlayerControlsResourcePatch
import app.revanced.util.patch.LiteralValueFingerprint
import com.android.tools.smali.dexlib2.AccessFlags
internal object PlayerTopControlsInflateFingerprint : LiteralValueFingerprint(
accessFlags = AccessFlags.PUBLIC or AccessFlags.FINAL,
returnType = "V",
parameters = listOf(),
literalSupplier = { PlayerControlsResourcePatch.controlsLayoutStub }
)

View File

@@ -32,7 +32,7 @@ object PlaybackSpeedButtonPatch : BytecodePatch(emptySet()) {
SwitchPreference("revanced_playback_speed_dialog_button"),
)
PlayerControlsBytecodePatch.initializeControl("$SPEED_BUTTON_CLASS_DESCRIPTOR->initializeButton(Landroid/view/View;)V")
PlayerControlsBytecodePatch.injectVisibilityCheckCall("$SPEED_BUTTON_CLASS_DESCRIPTOR->changeVisibility(Z)V")
PlayerControlsBytecodePatch.initializeBottomControl(SPEED_BUTTON_CLASS_DESCRIPTOR)
PlayerControlsBytecodePatch.injectVisibilityCheckCall(SPEED_BUTTON_CLASS_DESCRIPTOR)
}
}

View File

@@ -3,12 +3,12 @@ package app.revanced.patches.youtube.video.speed.button
import app.revanced.patcher.data.ResourceContext
import app.revanced.patcher.patch.ResourcePatch
import app.revanced.patcher.patch.annotation.Patch
import app.revanced.patches.youtube.misc.playercontrols.BottomControlsResourcePatch
import app.revanced.patches.youtube.misc.playercontrols.PlayerControlsResourcePatch
import app.revanced.util.ResourceGroup
import app.revanced.util.copyResources
@Patch(
dependencies = [BottomControlsResourcePatch::class],
dependencies = [PlayerControlsResourcePatch::class],
)
internal object PlaybackSpeedButtonResourcePatch : ResourcePatch() {
override fun execute(context: ResourceContext) {
@@ -20,6 +20,6 @@ internal object PlaybackSpeedButtonResourcePatch : ResourcePatch() {
),
)
BottomControlsResourcePatch.addControls("speedbutton")
PlayerControlsResourcePatch.addBottomControls("speedbutton")
}
}

View File

@@ -15,6 +15,7 @@ import com.android.tools.smali.dexlib2.iface.instruction.ReferenceInstruction
import com.android.tools.smali.dexlib2.iface.instruction.WideLiteralInstruction
import com.android.tools.smali.dexlib2.iface.reference.Reference
import com.android.tools.smali.dexlib2.util.MethodUtil
import org.stringtemplate.v4.compiler.Bytecode.instructions
fun MethodFingerprint.resultOrThrow() = result ?: throw exception
@@ -73,7 +74,7 @@ fun MutableMethod.injectHideViewCall(
* @param resourceName the name of the resource to find the id for.
* @return the index of the first instruction with the id of the given resource name, or -1 if not found.
* @throws PatchException if the resource cannot be found.
* @see [indexOfIdResourceOrThrow]
* @see [indexOfIdResourceOrThrow], [indexOfFirstWideLiteralInstructionValueReversed]
*/
fun Method.indexOfIdResource(resourceName: String): Int {
val resourceId = ResourceMappingPatch["id", resourceName]
@@ -86,6 +87,7 @@ fun Method.indexOfIdResource(resourceName: String): Int {
* Requires [ResourceMappingPatch] as a dependency.
*
* @throws [PatchException] if the resource is not found, or the method does not contain the resource id literal value.
* @see [indexOfIdResource], [indexOfFirstWideLiteralInstructionValueReversedOrThrow]
*/
fun Method.indexOfIdResourceOrThrow(resourceName: String): Int {
val index = indexOfIdResource(resourceName)
@@ -120,6 +122,30 @@ fun Method.indexOfFirstWideLiteralInstructionValueOrThrow(literal: Long): Int {
return index
}
/**
* Find the index of the last wide literal instruction with the given value.
*
* @return the last literal instruction with the value, or -1 if not found.
* @see indexOfFirstWideLiteralInstructionValueOrThrow
*/
fun Method.indexOfFirstWideLiteralInstructionValueReversed(literal: Long) = implementation?.let {
it.instructions.indexOfLast { instruction ->
(instruction as? WideLiteralInstruction)?.wideLiteral == literal
}
} ?: -1
/**
* Find the index of the last wide literal instruction with the given value,
* or throw an exception if not found.
*
* @return the last literal instruction with the value, or throws [PatchException] if not found.
*/
fun Method.indexOfFirstWideLiteralInstructionValueReversedOrThrow(literal: Long): Int {
val index = indexOfFirstWideLiteralInstructionValueReversed(literal)
if (index < 0) throw PatchException("Could not find literal value: $literal")
return index
}
/**
* Check if the method contains a literal with the given value.
*
@@ -198,18 +224,25 @@ fun Method.indexOfFirstInstructionOrThrow(startIndex: Int = 0, predicate: Instru
/**
* @return The list of indices of the opcode in reverse order.
*/
fun Method.findOpcodeIndicesReversed(opcode: Opcode): List<Int> {
fun Method.findOpcodeIndicesReversed(opcode: Opcode): List<Int> =
findOpcodeIndicesReversed { this.opcode == opcode }
/**
* @return The list of indices of the opcode in reverse order.
*/
fun Method.findOpcodeIndicesReversed(filter: Instruction.() -> Boolean): List<Int> {
val indexes = implementation!!.instructions
.withIndex()
.filter { (_, instruction) -> instruction.opcode == opcode }
.filter { (_, instruction) -> filter(instruction) }
.map { (index, _) -> index }
.reversed()
if (indexes.isEmpty()) throw PatchException("No ${opcode.name} instructions found in: $this")
if (indexes.isEmpty()) throw PatchException("No matching instructions found in: $this")
return indexes
}
/**
* Return the resolved method early.
*/

View File

@@ -1,8 +1,11 @@
package app.revanced.util
import app.revanced.patcher.data.ResourceContext
import app.revanced.patcher.patch.PatchException
import app.revanced.patcher.util.DomFileEditor
import app.revanced.util.resource.BaseResource
import org.w3c.dom.Attr
import org.w3c.dom.Element
import org.w3c.dom.Node
import org.w3c.dom.NodeList
import java.io.InputStream
@@ -39,6 +42,14 @@ fun Node.doRecursively(action: (Node) -> Unit) {
for (i in 0 until this.childNodes.length) this.childNodes.item(i).doRecursively(action)
}
fun Node.insertFirst(node: Node) {
if (hasChildNodes()) {
insertBefore(node, firstChild)
} else {
appendChild(node)
}
}
/**
* Copy resources from the current class loader to the resource directory.
*
@@ -49,7 +60,7 @@ fun ResourceContext.copyResources(
sourceResourceDirectory: String,
vararg resources: ResourceGroup,
) {
val targetResourceDirectory = this.get("res")
val targetResourceDirectory = this["res", false]
for (resourceGroup in resources) {
resourceGroup.resources.forEach { resource ->
@@ -164,3 +175,37 @@ internal fun Node.addResource(
}
internal fun org.w3c.dom.Document.getNode(tagName: String) = this.getElementsByTagName(tagName).item(0)
internal fun NodeList.findElementByAttributeValue(attributeName: String, value: String): Element? {
for (i in 0 until length) {
val node = item(i)
if (node.nodeType == Node.ELEMENT_NODE) {
val element = node as Element
if (element.getAttribute(attributeName) == value) {
return element
}
// Recursively search.
val found = element.childNodes.findElementByAttributeValue(attributeName, value)
if (found != null) {
return found
}
}
}
return null
}
internal fun NodeList.findElementByAttributeValueOrThrow(attributeName: String, value: String): Element {
return findElementByAttributeValue(attributeName, value) ?: throw PatchException("Could not find: $attributeName $value")
}
internal fun Element.copyAttributesFrom(oldContainer: Element) {
// Copy attributes from the old element to the new element
val attributes = oldContainer.attributes
for (i in 0 until attributes.length) {
val attr = attributes.item(i) as Attr
setAttribute(attr.name, attr.value)
}
}

View File

@@ -147,6 +147,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_channel_guidelines_title">إخفاء إرشادات القناة</string>
<string name="revanced_hide_channel_guidelines_summary_on">تم إخفاء إرشادات القناة</string>
<string name="revanced_hide_channel_guidelines_summary_off">يتم عرض إرشادات القناة</string>
<string name="revanced_hide_chips_shelf_title">إخفاء رف الشرائح</string>
<string name="revanced_hide_chips_shelf_summary_on">تم إخفاء رف الشرائح</string>
<string name="revanced_hide_chips_shelf_summary_off">يتم عرض رف الشرائح</string>
<string name="revanced_hide_expandable_chip_title">إخفاء الشريحة القابلة للتوسيع تحت مقاطع الفيديو</string>
<string name="revanced_hide_expandable_chip_summary_on">تم إخفاء الرقائق القابلة للتوسيع</string>
<string name="revanced_hide_expandable_chip_summary_off">يتم عرض الرقائق القابلة للتوسيع</string>
@@ -207,9 +210,6 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_artist_cards_title">إخفاء بطاقات الفنان</string>
<string name="revanced_hide_artist_cards_summary_on">تم إخفاء بطاقات الفنان</string>
<string name="revanced_hide_artist_cards_summary_off">يتم عرض بطاقات الفنان</string>
<string name="revanced_hide_chips_shelf_title">إخفاء رف الشرائح</string>
<string name="revanced_hide_chips_shelf_summary_on">تم إخفاء رف الشرائح</string>
<string name="revanced_hide_chips_shelf_summary_off">يتم عرض رف الشرائح</string>
<string name="revanced_hide_attributes_section_title">إخفاء قسم الصفات</string>
<string name="revanced_hide_attributes_section_summary_on">تم إخفاء \'الأماكن المميزة\'، أقسام الألعاب والموسيقى</string>
<string name="revanced_hide_attributes_section_summary_off">يتم عرض \'الأماكن المميزة\'، أقسام الألعاب والموسيقى</string>
@@ -627,15 +627,15 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_shorts_location_label_title">إخفاء تسمية الموقع</string>
<string name="revanced_hide_shorts_location_label_summary_on">تم إخفاء تسمية الموقع</string>
<string name="revanced_hide_shorts_location_label_summary_off">يتم عرض تسمية الموقع</string>
<string name="revanced_hide_shorts_save_sound_button_title">إخفاء حفظ الصوت إلى زر قائمة التشغيل</string>
<string name="revanced_hide_shorts_save_sound_button_summary_on">تم إخفاء حفظ الصوت في قائمة التشغيل</string>
<string name="revanced_hide_shorts_save_sound_button_summary_off">يتم عرض حفظ الصوت في قائمة التشغيل</string>
<string name="revanced_hide_shorts_use_this_sound_button_title">إخفاء زر استخدام هذا الصوت</string>
<string name="revanced_hide_shorts_use_this_sound_button_summary_on">تم إخفاء زر استخدام هذا الصوت</string>
<string name="revanced_hide_shorts_use_this_sound_button_summary_off">يتم عرض زر استخدام هذا الصوت</string>
<string name="revanced_hide_shorts_save_sound_button_title">إخفاء زر حفظ الموسيقى</string>
<string name="revanced_hide_shorts_save_sound_button_summary_on">تم إخفاء حفظ الموسيقى</string>
<string name="revanced_hide_shorts_save_sound_button_summary_off">يتم عرض حفظ الموسيقى</string>
<string name="revanced_hide_shorts_search_suggestions_title">إخفاء اقتراحات البحث</string>
<string name="revanced_hide_shorts_search_suggestions_summary_on">تم إخفاء اقتراحات البحث</string>
<string name="revanced_hide_shorts_search_suggestions_summary_off">يتم عرض اقتراحات البحث</string>
<string name="revanced_hide_shorts_stickers_title">إخفاء الملصقات</string>
<string name="revanced_hide_shorts_stickers_summary_on">تم إخفاء الملصقات</string>
<string name="revanced_hide_shorts_stickers_summary_off">يتم عرض الملصقات</string>
<string name="revanced_hide_shorts_like_button_title">إخفاء زر أعجبني</string>
<string name="revanced_hide_shorts_like_button_summary_on">تم إخفاء زر أعجبني</string>
<string name="revanced_hide_shorts_like_button_summary_off">يتم عرض زر أعجبني</string>

View File

@@ -147,6 +147,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_channel_guidelines_title">Kanal təlimatlarını gizlət</string>
<string name="revanced_hide_channel_guidelines_summary_on">Kanal təlimatları gizlidir</string>
<string name="revanced_hide_channel_guidelines_summary_off">Kanal təlimatları göstərilir</string>
<string name="revanced_hide_chips_shelf_title">Çip bölməsin gizlət</string>
<string name="revanced_hide_chips_shelf_summary_on">Çip bölməsi gizlidir</string>
<string name="revanced_hide_chips_shelf_summary_off">Çip bölməsi göstərilir</string>
<string name="revanced_hide_expandable_chip_title">Videoların altında genişlənən çipi gizlət</string>
<string name="revanced_hide_expandable_chip_summary_on">Genişlənən çiplər gizlidir</string>
<string name="revanced_hide_expandable_chip_summary_off">Genişlənən çiplər göstərilir</string>
@@ -207,9 +210,6 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_artist_cards_title">Sənətçi kartlarını gizlət</string>
<string name="revanced_hide_artist_cards_summary_on">Sənətçi kartları gizlidir</string>
<string name="revanced_hide_artist_cards_summary_off">Sənətçi kartları göstərilir</string>
<string name="revanced_hide_chips_shelf_title">Çip bölməsin gizlət</string>
<string name="revanced_hide_chips_shelf_summary_on">Çip bölməsi gizlidir</string>
<string name="revanced_hide_chips_shelf_summary_off">Çip bölməsi göstərilir</string>
<string name="revanced_hide_attributes_section_title">Atributlar bölməsini gizlət</string>
<string name="revanced_hide_attributes_section_summary_on">\"Seçilən məkanlar\", Oyunlar və Musiqi bölmələri gizlidir</string>
<string name="revanced_hide_attributes_section_summary_off">\"Seçilən məkanlar\", Oyunlar və Musiqi bölmələri göstərilir</string>
@@ -627,15 +627,15 @@ This is because Crowdin requires temporarily flattening this file and removing t
<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_save_sound_button_title">Səsi pleylistdə saxlama düyməsini gizlət</string>
<string name="revanced_hide_shorts_save_sound_button_summary_on">Səsi pleylistdə saxlama gizlidir</string>
<string name="revanced_hide_shorts_save_sound_button_summary_off">Səsi pleylistdə saxlama göstərilir</string>
<string name="revanced_hide_shorts_use_this_sound_button_title">\"Bu səsi istifadə et\" düyməsini gizlət</string>
<string name="revanced_hide_shorts_use_this_sound_button_summary_on">\"Bu səsi istifadə et\" düyməsi gizlidir</string>
<string name="revanced_hide_shorts_use_this_sound_button_summary_off">\"Bu səsi istifadə et\" düyməsi göstərilir</string>
<string name="revanced_hide_shorts_save_sound_button_title">\"Musiqini saxla\" düyməsini gizlət</string>
<string name="revanced_hide_shorts_save_sound_button_summary_on">\"Musiqini saxla\" gizlidir</string>
<string name="revanced_hide_shorts_save_sound_button_summary_off">\"Musiqini saxla\" göstərilir</string>
<string name="revanced_hide_shorts_search_suggestions_title">Axtarış təkliflərini gizlət</string>
<string name="revanced_hide_shorts_search_suggestions_summary_on">Axtarış təklifləri gizlədilib</string>
<string name="revanced_hide_shorts_search_suggestions_summary_off">Axtarış təklifləri göstərilir</string>
<string name="revanced_hide_shorts_stickers_title">Stikerləri gizlət</string>
<string name="revanced_hide_shorts_stickers_summary_on">Stikerlər gizlidir</string>
<string name="revanced_hide_shorts_stickers_summary_off">Stikerlər göstərilir</string>
<string name="revanced_hide_shorts_like_button_title">\"Bəyən\" düyməsini gizlət</string>
<string name="revanced_hide_shorts_like_button_summary_on">Bəyənmə düyməsi gizlidir</string>
<string name="revanced_hide_shorts_like_button_summary_off">Bəyənmə düyməsi göstərilir</string>

View File

@@ -137,6 +137,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_channel_guidelines_title">Схаваць рэкамендацыі канала</string>
<string name="revanced_hide_channel_guidelines_summary_on">Правілы канала схаваны</string>
<string name="revanced_hide_channel_guidelines_summary_off">Паказваюцца інструкцыі па каналах</string>
<string name="revanced_hide_chips_shelf_title">Схавайце паліцу для чыпсаў</string>
<string name="revanced_hide_chips_shelf_summary_on">Паліца для чыпсаў схаваная</string>
<string name="revanced_hide_chips_shelf_summary_off">Паказана паліца для чыпсаў</string>
<string name="revanced_hide_expandable_chip_title">Схаваць пашыраемы чып пад відэа</string>
<string name="revanced_hide_expandable_chip_summary_on">Чыпы, якія пашыраюцца, схаваныя</string>
<string name="revanced_hide_expandable_chip_summary_off">Паказаны чыпы, якія пашыраюцца</string>
@@ -197,9 +200,6 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_artist_cards_title">Схаваць карткі выканаўцаў</string>
<string name="revanced_hide_artist_cards_summary_on">Карткі выканаўцаў схаваныя</string>
<string name="revanced_hide_artist_cards_summary_off">Паказваюцца карткі выканаўцаў</string>
<string name="revanced_hide_chips_shelf_title">Схавайце паліцу для чыпсаў</string>
<string name="revanced_hide_chips_shelf_summary_on">Паліца для чыпсаў схаваная</string>
<string name="revanced_hide_chips_shelf_summary_off">Паказана паліца для чыпсаў</string>
<string name="revanced_hide_attributes_section_title">Схаваць раздзел атрыбутаў</string>
<string name="revanced_hide_attributes_section_summary_on">Раздзелы \"Выбраныя месцы\", гульні і музыка схаваны</string>
<string name="revanced_hide_attributes_section_summary_off">Паказваюцца раздзелы \"Выбраныя месцы\", Гульні і Музыка</string>
@@ -608,9 +608,6 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_shorts_location_label_title">Схаваць метку месцазнаходжання</string>
<string name="revanced_hide_shorts_location_label_summary_on">Метка месцазнаходжання схавана</string>
<string name="revanced_hide_shorts_location_label_summary_off">Паказана метка месцазнаходжання</string>
<string name="revanced_hide_shorts_save_sound_button_title">Схаваць кнопку захавання гуку ў спіс прайгравання</string>
<string name="revanced_hide_shorts_save_sound_button_summary_on">Захаваць гук у плэйліст схавана</string>
<string name="revanced_hide_shorts_save_sound_button_summary_off">Паказваецца Захаваць гук у спіс прайгравання</string>
<string name="revanced_hide_shorts_search_suggestions_title">Схаваць прапановы пошуку</string>
<string name="revanced_hide_shorts_search_suggestions_summary_on">Пошукавыя прапановы схаваны</string>
<string name="revanced_hide_shorts_search_suggestions_summary_off">Паказваюцца прапановы пошуку</string>

View File

@@ -147,6 +147,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_channel_guidelines_title">Скриване на насоките на канала</string>
<string name="revanced_hide_channel_guidelines_summary_on">Насоките на канала са скрити</string>
<string name="revanced_hide_channel_guidelines_summary_off">Насоките на канала са показани</string>
<string name="revanced_hide_chips_shelf_title">Скриване на рафта за чипове</string>
<string name="revanced_hide_chips_shelf_summary_on">Рафтът за чипове е скрит</string>
<string name="revanced_hide_chips_shelf_summary_off">Рафтът за чипове е показан</string>
<string name="revanced_hide_expandable_chip_title">Скриване на разширяемия чип под видеоклиповете</string>
<string name="revanced_hide_expandable_chip_summary_on">Разширяващите се чипове са скрити</string>
<string name="revanced_hide_expandable_chip_summary_off">Разширяващите се чипове са показани</string>
@@ -207,9 +210,6 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_artist_cards_title">Скриване на картите на артистите</string>
<string name="revanced_hide_artist_cards_summary_on">Картите на артистите са скрити</string>
<string name="revanced_hide_artist_cards_summary_off">Картите на артистите са показани</string>
<string name="revanced_hide_chips_shelf_title">Скриване на рафта за чипове</string>
<string name="revanced_hide_chips_shelf_summary_on">Рафтът за чипове е скрит</string>
<string name="revanced_hide_chips_shelf_summary_off">Рафтът за чипове е показан</string>
<string name="revanced_hide_attributes_section_title">Скриване на секцията с атрибути</string>
<string name="revanced_hide_attributes_section_summary_on">„Популярни места“, „Игри“ и „Музика“ под описанието са скрити</string>
<string name="revanced_hide_attributes_section_summary_off">„Популярни места“, „Игри“ и „Музика“ под описанието се показват</string>
@@ -627,9 +627,6 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_shorts_location_label_title">Етикет за местоположение</string>
<string name="revanced_hide_shorts_location_label_summary_on">Етикет за местоположение е скрит</string>
<string name="revanced_hide_shorts_location_label_summary_off">Етикет за местоположение се показва</string>
<string name="revanced_hide_shorts_save_sound_button_title">Бутон за запазване на аудиото в плейлиста</string>
<string name="revanced_hide_shorts_save_sound_button_summary_on">Бутонът за Запазване в плейлиста е скрит</string>
<string name="revanced_hide_shorts_save_sound_button_summary_off">Бутонът за Запазване в плейлиста се показва</string>
<string name="revanced_hide_shorts_search_suggestions_title">Скриване на предложенията за търсене</string>
<string name="revanced_hide_shorts_search_suggestions_summary_on">Предложенията за търсене са скрити</string>
<string name="revanced_hide_shorts_search_suggestions_summary_off">Предложенията за търсене се показват</string>
@@ -1131,10 +1128,22 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_slide_to_seek_summary_off">Слайд за превъртане е деактивиран</string>
</patch>
<patch id="misc.fix.playback.SpoofVideoStreamsPatch">
<string name="revanced_spoof_video_streams_screen_title">Подправяне на видео потоци</string>
<string name="revanced_spoof_video_streams_screen_summary">Подправете клиентските видео потоци, за да предотвратите проблеми с възпроизвеждането</string>
<string name="revanced_spoof_video_streams_title">Подправяне на видео потоци</string>
<string name="revanced_spoof_video_streams_summary_on">Видео потоците са подправени</string>
<string name="revanced_spoof_video_streams_summary_off">Видео потоците не са подправени\n\nВъзпроизвеждането на видео може да не работи</string>
<string name="revanced_spoof_video_streams_user_dialog_message">Деактивирането на тази настройка ще доведе до проблеми с възпроизвеждането на видео.</string>
<string name="revanced_spoof_video_streams_client_title">Клиент по подразбиране</string>
<string name="revanced_spoof_video_streams_ios_force_avc_title">Принудително AVC (H.264)</string>
<string name="revanced_spoof_video_streams_ios_force_avc_summary_on">Видеокодека е AVC (H.264)</string>
<string name="revanced_spoof_video_streams_ios_force_avc_summary_off">Видеокодека е VP9 или AV1</string>
<string name="revanced_spoof_video_streams_ios_force_avc_no_hardware_vp9_summary_on">Вашето устройство няма хардуерно VP9 декодиране и тази настройка винаги е активирана, когато е активно подправяне на клиента</string>
<string name="revanced_spoof_video_streams_ios_force_avc_user_dialog_message">Активирането на това може да подобри живота на батерията и да коригира прекъсванията при възпроизвеждане.\n\nAVC има максимална разделителна способност от 1080p и възпроизвеждането на видео ще използва повече интернет данни от VP9 или AV1.</string>
<string name="revanced_spoof_video_streams_about_ios_title">ранични ефекти от подмяната на iOS</string>
<string name="revanced_spoof_video_streams_about_ios_summary">• Филми или платени видеоклипове може да не се възпроизвеждат\n• Потоците на живо започват отначало\n• Видеоклиповете може да завършват 1 секунда по-рано\n• Няма аудиокодек Opus</string>
<string name="revanced_spoof_video_streams_about_android_vr_title">Странични ефекти от подправяне на Android VR</string>
<string name="revanced_spoof_video_streams_about_android_vr_summary">• Липсва менюто за избор аудио\n• Не е налична стабилна сила на звука</string>
</patch>
<!-- This patch is no longer used and these strings will soon be deleted. -->
<patch id="video.hdrbrightness.HDRBrightnessPatch">

View File

@@ -137,6 +137,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_channel_guidelines_title">চ্যানেল নির্দেশিকা লুকান</string>
<string name="revanced_hide_channel_guidelines_summary_on">চ্যানেল নির্দেশিকা লুকিয়ে রয়েছে</string>
<string name="revanced_hide_channel_guidelines_summary_off">চ্যানেল নির্দেশিকা প্রদর্শিত হয়েছে</string>
<string name="revanced_hide_chips_shelf_title">চিপ শেলপ লুকান</string>
<string name="revanced_hide_chips_shelf_summary_on">চিপ শেলপ লুকিয়ে রয়েছে</string>
<string name="revanced_hide_chips_shelf_summary_off">চিপ শেলপ প্রদর্শিত হয়েছে</string>
<string name="revanced_hide_expandable_chip_title">ভিডিওর নিচের সম্প্রসারণযোগ্য চিপস লুকান</string>
<string name="revanced_hide_expandable_chip_summary_on">সম্প্রসারণযোগ্য চিপস লুকিয়ে রয়েছে</string>
<string name="revanced_hide_expandable_chip_summary_off">সম্প্রসারণযোগ্য চিপস প্রদর্শিত হয়েছে</string>
@@ -197,9 +200,6 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_artist_cards_title">আর্টিস্ট কার্ড লুকান</string>
<string name="revanced_hide_artist_cards_summary_on">আর্টিস্ট কার্ড লুকিয়ে রয়েছে</string>
<string name="revanced_hide_artist_cards_summary_off">আর্টিস্ট কার্ড প্রদর্শিত হয়েছে</string>
<string name="revanced_hide_chips_shelf_title">চিপ শেলপ লুকান</string>
<string name="revanced_hide_chips_shelf_summary_on">চিপ শেলপ লুকিয়ে রয়েছে</string>
<string name="revanced_hide_chips_shelf_summary_off">চিপ শেলপ প্রদর্শিত হয়েছে</string>
<string name="revanced_hide_attributes_section_title">বৈশিষ্ট্য বিভাগ লুকান</string>
<string name="revanced_hide_attributes_section_summary_on">\'বৈশিষ্ট্যযুক্ত স্থান\', গেম এবং সঙ্গীত বিভাগগুলি লুকানো আছে</string>
<string name="revanced_hide_attributes_section_summary_off">\'বৈশিষ্ট্যযুক্ত স্থান\', গেম এবং সঙ্গীত বিভাগগুলি প্রদর্শিত হয়েছে</string>
@@ -535,9 +535,6 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_shorts_location_label_title">অবস্থান লেবেল লুকান</string>
<string name="revanced_hide_shorts_location_label_summary_on">অবস্থান লেবেল লুকিয়ে রয়েছে</string>
<string name="revanced_hide_shorts_location_label_summary_off">অবস্থান লেবেল প্রদর্শিত হয়েছে</string>
<string name="revanced_hide_shorts_save_sound_button_title">প্লেলিস্টে সাউন্ড সংরক্ষণ করুন বোতাম লুকান</string>
<string name="revanced_hide_shorts_save_sound_button_summary_on">প্লেলিস্টে সাউন্ড সংরক্ষণ করুন বোতাম লুকিয়ে রয়েছে</string>
<string name="revanced_hide_shorts_save_sound_button_summary_off">প্লেলিস্টে সাউন্ড সংরক্ষণ করুন বোতাম প্রদর্শিত হয়েছে</string>
<string name="revanced_hide_shorts_search_suggestions_title">অনুসন্ধান পরামর্শগুলি লুকান</string>
<string name="revanced_hide_shorts_search_suggestions_summary_on">অনুসন্ধান পরামর্শগুলি লুকিয়ে রয়েছে</string>
<string name="revanced_hide_shorts_search_suggestions_summary_off">অনুসন্ধান পরামর্শগুলি প্রদর্শিত হয়েছে</string>

View File

@@ -148,6 +148,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_channel_guidelines_title">Skrýt pokyny pro kanály</string>
<string name="revanced_hide_channel_guidelines_summary_on">Pokyny kanálu jsou skryty</string>
<string name="revanced_hide_channel_guidelines_summary_off">Jsou zobrazeny pokyny kanálu</string>
<string name="revanced_hide_chips_shelf_title">Skrýt čipy</string>
<string name="revanced_hide_chips_shelf_summary_on">Šipka je skrytá</string>
<string name="revanced_hide_chips_shelf_summary_off">Šipky jsou zobrazeny</string>
<string name="revanced_hide_expandable_chip_title">Skrýt rozšiřitelný čip pod videem</string>
<string name="revanced_hide_expandable_chip_summary_on">Rozšiřitelné čipy jsou skryty</string>
<string name="revanced_hide_expandable_chip_summary_off">Jsou zobrazeny rozšiřitelné čipy</string>
@@ -208,9 +211,6 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_artist_cards_title">Skrýt karty umělce</string>
<string name="revanced_hide_artist_cards_summary_on">Karty umělců jsou skryty</string>
<string name="revanced_hide_artist_cards_summary_off">Karty umělců jsou zobrazeny</string>
<string name="revanced_hide_chips_shelf_title">Skrýt čipy</string>
<string name="revanced_hide_chips_shelf_summary_on">Šipka je skrytá</string>
<string name="revanced_hide_chips_shelf_summary_off">Šipky jsou zobrazeny</string>
<string name="revanced_hide_attributes_section_title">Skrýt část atributů</string>
<string name="revanced_hide_attributes_section_summary_on">\'Doporučená místa\', sekce Hry a hudba jsou skryté</string>
<string name="revanced_hide_attributes_section_summary_off">\'Doporučená místa\', jsou zobrazeny sekce Hry a hudba</string>
@@ -628,15 +628,15 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_shorts_location_label_title">Skrýt štítek polohy</string>
<string name="revanced_hide_shorts_location_label_summary_on">Štítek polohy je skrytý</string>
<string name="revanced_hide_shorts_location_label_summary_off">Popisek umístění je zobrazen</string>
<string name="revanced_hide_shorts_save_sound_button_title">Skrýt zvuk do playlistu</string>
<string name="revanced_hide_shorts_save_sound_button_summary_on">Uložit zvuk do playlistu je skrytý</string>
<string name="revanced_hide_shorts_save_sound_button_summary_off">Ukládat zvuk do seznamu skladeb je zobrazen</string>
<string name="revanced_hide_shorts_use_this_sound_button_title">Skrýt toto tlačítko zvuku</string>
<string name="revanced_hide_shorts_use_this_sound_button_summary_on">Použít toto zvukové tlačítko je skryté</string>
<string name="revanced_hide_shorts_use_this_sound_button_summary_off">Použít toto zvukové tlačítko je zobrazeno</string>
<string name="revanced_hide_shorts_save_sound_button_title">Skrýt tlačítko uložit hudbu</string>
<string name="revanced_hide_shorts_save_sound_button_summary_on">Uložení hudby je skryté</string>
<string name="revanced_hide_shorts_save_sound_button_summary_off">Ukládání hudby je zobrazeno</string>
<string name="revanced_hide_shorts_search_suggestions_title">Skrýt návrhy hledání</string>
<string name="revanced_hide_shorts_search_suggestions_summary_on">Návrhy hledání jsou skryty</string>
<string name="revanced_hide_shorts_search_suggestions_summary_off">Návrhy hledání jsou zobrazeny</string>
<string name="revanced_hide_shorts_stickers_title">Skrýt nálepky</string>
<string name="revanced_hide_shorts_stickers_summary_on">Samolepky jsou skryté</string>
<string name="revanced_hide_shorts_stickers_summary_off">Samolepky jsou zobrazeny</string>
<string name="revanced_hide_shorts_like_button_title">Skrýt tlačítko „To se mi líbí“</string>
<string name="revanced_hide_shorts_like_button_summary_on">Tlačítko se mi líbí je skryté</string>
<string name="revanced_hide_shorts_like_button_summary_off">Tlačítko se mi líbí</string>

View File

@@ -148,6 +148,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_channel_guidelines_title">Skjul kanalretningslinjer</string>
<string name="revanced_hide_channel_guidelines_summary_on">Kanalretningslinjer er skjult</string>
<string name="revanced_hide_channel_guidelines_summary_off">Kanalretningslinjer er vist</string>
<string name="revanced_hide_chips_shelf_title">Skjul chips hylde</string>
<string name="revanced_hide_chips_shelf_summary_on">Chips hylde er skjult</string>
<string name="revanced_hide_chips_shelf_summary_off">Chips hylde er vist</string>
<string name="revanced_hide_expandable_chip_title">Skjul udvidelig chip under videoer</string>
<string name="revanced_hide_expandable_chip_summary_on">Kan udvides chips er skjult</string>
<string name="revanced_hide_expandable_chip_summary_off">Udvidede jetoner vises</string>
@@ -208,9 +211,6 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_artist_cards_title">Skjul kunstnerkort</string>
<string name="revanced_hide_artist_cards_summary_on">Kunstnerkort er skjult</string>
<string name="revanced_hide_artist_cards_summary_off">Kunstnerkort vises</string>
<string name="revanced_hide_chips_shelf_title">Skjul chips hylde</string>
<string name="revanced_hide_chips_shelf_summary_on">Chips hylde er skjult</string>
<string name="revanced_hide_chips_shelf_summary_off">Chips hylde er vist</string>
<string name="revanced_hide_attributes_section_title">Skjul attributter sektion</string>
<string name="revanced_hide_attributes_section_summary_on">\'Udvalgte steder\', Spil og Musik sektioner er skjult</string>
<string name="revanced_hide_attributes_section_summary_off">\'Udvalgte steder\', Spil og Musik sektioner er vist</string>
@@ -627,15 +627,15 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_shorts_location_label_title">Skjul placeringsetiket</string>
<string name="revanced_hide_shorts_location_label_summary_on">Placeringsetiket er skjult</string>
<string name="revanced_hide_shorts_location_label_summary_off">Placeringsetiket er vist</string>
<string name="revanced_hide_shorts_save_sound_button_title">Skjul gem lyd til afspilningslisteknappen</string>
<string name="revanced_hide_shorts_save_sound_button_summary_on">Gem lyd til afspilningslisten er skjult</string>
<string name="revanced_hide_shorts_save_sound_button_summary_off">Gem lyd til afspilningslisten vises</string>
<string name="revanced_hide_shorts_use_this_sound_button_title">Skjul brug denne lydknap</string>
<string name="revanced_hide_shorts_use_this_sound_button_summary_on">Brug denne lydknap er skjult</string>
<string name="revanced_hide_shorts_use_this_sound_button_summary_off">Brug denne lydknap vises</string>
<string name="revanced_hide_shorts_save_sound_button_title">Skjul gem musik knap</string>
<string name="revanced_hide_shorts_save_sound_button_summary_on">Gem musik er skjult</string>
<string name="revanced_hide_shorts_save_sound_button_summary_off">Gem musik er vist</string>
<string name="revanced_hide_shorts_search_suggestions_title">Skjul søgeforslag</string>
<string name="revanced_hide_shorts_search_suggestions_summary_on">Søgeforslag er skjult</string>
<string name="revanced_hide_shorts_search_suggestions_summary_off">Søgeforslag er vist</string>
<string name="revanced_hide_shorts_stickers_title">Skjul klistermærker</string>
<string name="revanced_hide_shorts_stickers_summary_on">Klistermærker er skjult</string>
<string name="revanced_hide_shorts_stickers_summary_off">Klistermærker vises</string>
<string name="revanced_hide_shorts_like_button_title">Skjul lignende knap</string>
<string name="revanced_hide_shorts_like_button_summary_on">Ligesom knappen er skjult</string>
<string name="revanced_hide_shorts_like_button_summary_off">Lideknap vises</string>

View File

@@ -39,6 +39,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_check_environment_not_same_patching_device">Auf einem anderen Gerät gepatcht</string>
<string name="revanced_check_environment_manager_not_expected_installer">Nicht von ReVanced Manager installiert</string>
<string name="revanced_check_environment_not_near_patch_time">Vor mehr als 10 Minuten gepatcht</string>
<string name="revanced_check_environment_not_near_patch_time_days">Vor %s Tagen gepatcht</string>
<string name="revanced_check_environment_not_near_patch_time_invalid">APK-Erstellungsdatum ist beschädigt</string>
</patch>
<patch id="misc.settings.BaseSettingsResourcePatch">
@@ -146,6 +147,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_channel_guidelines_title">Kanalrichtlinien ausblenden</string>
<string name="revanced_hide_channel_guidelines_summary_on">Kanal-Richtlinien sind ausgeblendet</string>
<string name="revanced_hide_channel_guidelines_summary_off">Kanalrichtlinien werden angezeigt</string>
<string name="revanced_hide_chips_shelf_title">Chips ausblenden</string>
<string name="revanced_hide_chips_shelf_summary_on">Chips sind ausgeblendet</string>
<string name="revanced_hide_chips_shelf_summary_off">Chips werden angezeigt</string>
<string name="revanced_hide_expandable_chip_title">Erweiterbaren Sektions-Chip unter Videos ausblenden</string>
<string name="revanced_hide_expandable_chip_summary_on">Erweiterbare Chips sind ausgeblendet</string>
<string name="revanced_hide_expandable_chip_summary_off">Erweiterbare Chips werden angezeigt</string>
@@ -206,9 +210,6 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_artist_cards_title">Interpretenkarten ausblenden</string>
<string name="revanced_hide_artist_cards_summary_on">Künstlerkarten sind ausgeblendet</string>
<string name="revanced_hide_artist_cards_summary_off">Interpretenkarten werden angezeigt</string>
<string name="revanced_hide_chips_shelf_title">Chips ausblenden</string>
<string name="revanced_hide_chips_shelf_summary_on">Chips sind ausgeblendet</string>
<string name="revanced_hide_chips_shelf_summary_off">Chips werden angezeigt</string>
<string name="revanced_hide_attributes_section_title">Attributbereich ausblenden</string>
<string name="revanced_hide_attributes_section_summary_on">\'Vorgestellte Orte\', Spiele und Musik Sektionen sind ausgeblendet</string>
<string name="revanced_hide_attributes_section_summary_off">\'Vorgestellte Orte\', Spiele- und Musiksektionen werden angezeigt</string>
@@ -626,15 +627,15 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_shorts_location_label_title">Standortbezeichnung ausblenden</string>
<string name="revanced_hide_shorts_location_label_summary_on">Ortsbezeichnung ist ausgeblendet</string>
<string name="revanced_hide_shorts_location_label_summary_off">Ortsbezeichnung wird angezeigt</string>
<string name="revanced_hide_shorts_save_sound_button_title">Speicherton in Wiedergabelisten-Button ausblenden</string>
<string name="revanced_hide_shorts_save_sound_button_summary_on">Ton in Wiedergabeliste speichern ist ausgeblendet</string>
<string name="revanced_hide_shorts_save_sound_button_summary_off">Ton in Wiedergabeliste speichern wird angezeigt</string>
<string name="revanced_hide_shorts_use_this_sound_button_title">Diese Sound-Taste ausblenden</string>
<string name="revanced_hide_shorts_use_this_sound_button_summary_on">Diese Sound-Taste ist ausgeblendet</string>
<string name="revanced_hide_shorts_use_this_sound_button_summary_off">Diese Sound-Taste wird angezeigt</string>
<string name="revanced_hide_shorts_save_sound_button_title">Musikspeichern-Button ausblenden</string>
<string name="revanced_hide_shorts_save_sound_button_summary_on">Musik speichern ist ausgeblendet</string>
<string name="revanced_hide_shorts_save_sound_button_summary_off">Musik speichern wird angezeigt</string>
<string name="revanced_hide_shorts_search_suggestions_title">Suchvorschläge ausblenden</string>
<string name="revanced_hide_shorts_search_suggestions_summary_on">Suchvorschläge sind ausgeblendet</string>
<string name="revanced_hide_shorts_search_suggestions_summary_off">Suchvorschläge werden angezeigt</string>
<string name="revanced_hide_shorts_stickers_title">Sticker ausblenden</string>
<string name="revanced_hide_shorts_stickers_summary_on">Sticker sind versteckt</string>
<string name="revanced_hide_shorts_stickers_summary_off">Sticker werden angezeigt</string>
<string name="revanced_hide_shorts_like_button_title">Verstecke \"Gefällt mir\" Button</string>
<string name="revanced_hide_shorts_like_button_summary_on">\"Gefällt mir\" Button ist ausgeblendet</string>
<string name="revanced_hide_shorts_like_button_summary_off">\"Gefällt mir\" Button wird angezeigt</string>
@@ -1146,6 +1147,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_spoof_video_streams_ios_force_avc_no_hardware_vp9_summary_on">Ihr Gerät hat keine VP9-Hardware-Dekodierung, und diese Einstellung ist immer aktiviert, wenn Client-Spoofing aktiviert ist</string>
<string name="revanced_spoof_video_streams_ios_force_avc_user_dialog_message">Das Aktivieren kann die Akkulaufzeit verbessern und die Wiedergabe-Stutting beheben.\n\nAVC hat eine maximale Auflösung von 1080p, und die Videowiedergabe wird mehr Internet-Daten als VP9 oder AV1 verwenden.</string>
<string name="revanced_spoof_video_streams_about_ios_title">iOS Spoofing Nebeneffekte</string>
<string name="revanced_spoof_video_streams_about_ios_summary">• Filme oder bezahlte Videos werden möglicherweise nicht abgespielt\n• Livestreams starten von Anfang an\n• Videos enden möglicherweise 1 Sekunde früher\n• kein Opus-Audiocodec</string>
<string name="revanced_spoof_video_streams_about_android_vr_title">Android VR Spoofing Nebeneffekte</string>
<string name="revanced_spoof_video_streams_about_android_vr_summary">• Audio Track Menü fehlt\n• Stabile Lautstärke ist nicht verfügbar</string>
</patch>

View File

@@ -147,6 +147,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_channel_guidelines_title">Οδηγίες καναλιού</string>
<string name="revanced_hide_channel_guidelines_summary_on">Κρυμμένες</string>
<string name="revanced_hide_channel_guidelines_summary_off">Εμφανίζονται</string>
<string name="revanced_hide_chips_shelf_title">Ενότητα σχετιζόμενων λέξεων</string>
<string name="revanced_hide_chips_shelf_summary_on">Κρυμμένη</string>
<string name="revanced_hide_chips_shelf_summary_off">Εμφανίζεται</string>
<string name="revanced_hide_expandable_chip_title">Επεκτάσιμα πλαίσια κάτω από τα βίντεο</string>
<string name="revanced_hide_expandable_chip_summary_on">Κρυμμένα</string>
<string name="revanced_hide_expandable_chip_summary_off">Εμφανίζονται</string>
@@ -207,9 +210,6 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_artist_cards_title">Κάρτες καλλιτεχνών</string>
<string name="revanced_hide_artist_cards_summary_on">Κρυμμένες</string>
<string name="revanced_hide_artist_cards_summary_off">Εμφανίζονται</string>
<string name="revanced_hide_chips_shelf_title">Ενότητα σχετιζόμενων λέξεων</string>
<string name="revanced_hide_chips_shelf_summary_on">Κρυμμένη</string>
<string name="revanced_hide_chips_shelf_summary_off">Εμφανίζεται</string>
<string name="revanced_hide_attributes_section_title">Ενότητα χαρακτηριστικών</string>
<string name="revanced_hide_attributes_section_summary_on">«Προτεινόμενα μέρη», Παιχνίδια και Μουσικές ενότητες είναι κρυμμένα</string>
<string name="revanced_hide_attributes_section_summary_off">«Προτεινόμενα μέρη», Παιχνίδια και Μουσικές ενότητες εμφανίζονται</string>
@@ -627,15 +627,15 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_shorts_location_label_title">Ετικέτα τοποθεσίας</string>
<string name="revanced_hide_shorts_location_label_summary_on">Κρυμμένη</string>
<string name="revanced_hide_shorts_location_label_summary_off">Εμφανίζεται</string>
<string name="revanced_hide_shorts_save_sound_button_title">Κουμπί αποθήκευσης ήχου σε λίστα αναπαραγωγής</string>
<string name="revanced_hide_shorts_save_sound_button_title">Κουμπί «Αποθήκευση μουσικής»</string>
<string name="revanced_hide_shorts_save_sound_button_summary_on">Κρυμμένο</string>
<string name="revanced_hide_shorts_save_sound_button_summary_off">Εμφανίζεται</string>
<string name="revanced_hide_shorts_use_this_sound_button_title">Κουμπί «Χρήση αυτού του ήχου»</string>
<string name="revanced_hide_shorts_use_this_sound_button_summary_on">Κρυμμένο</string>
<string name="revanced_hide_shorts_use_this_sound_button_summary_off">Εμφανίζεται</string>
<string name="revanced_hide_shorts_search_suggestions_title">Προτάσεις αναζήτησης</string>
<string name="revanced_hide_shorts_search_suggestions_summary_on">Κρυμμένες</string>
<string name="revanced_hide_shorts_search_suggestions_summary_off">Εμφανίζονται</string>
<string name="revanced_hide_shorts_stickers_title">Αυτοκόλλητα</string>
<string name="revanced_hide_shorts_stickers_summary_on">Κρυμμένα</string>
<string name="revanced_hide_shorts_stickers_summary_off">Εμφανίζονται</string>
<string name="revanced_hide_shorts_like_button_title">Κουμπί «Μου αρέσει»</string>
<string name="revanced_hide_shorts_like_button_summary_on">Κρυμμένο</string>
<string name="revanced_hide_shorts_like_button_summary_off">Εμφανίζεται</string>

View File

@@ -100,7 +100,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_debug_toast_on_error_title">Mostrar brindis en error ReVanced</string>
<string name="revanced_debug_toast_on_error_summary_on">Toast mostrado si ocurre un error</string>
<string name="revanced_debug_toast_on_error_summary_off">Toast no se muestra si ocurre un error</string>
<string name="revanced_debug_toast_on_error_user_dialog_message">Desactivar los brindis de errores oculta todas las notificaciones de error ReVanced\n\nNo se le notificará de ningún evento inesperado.</string>
<string name="revanced_debug_toast_on_error_user_dialog_message">Desactivar los avisos (toasts) de errores oculta todas las notificaciones de error ReVanced\n\nNo se le notificará de ningún evento inesperado.</string>
</patch>
<patch id="layout.hide.general.HideLayoutComponentsPatch">
<string name="revanced_disable_like_subscribe_glow_title">Desactivar el brillo del botón de like / suscripción</string>
@@ -147,6 +147,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_channel_guidelines_title">Ocultar pautas de canal</string>
<string name="revanced_hide_channel_guidelines_summary_on">Las pautas del canal están ocultas</string>
<string name="revanced_hide_channel_guidelines_summary_off">Se muestran las pautas del canal</string>
<string name="revanced_hide_chips_shelf_title">Ocultar estante de fichas</string>
<string name="revanced_hide_chips_shelf_summary_on">El estante de fichas está oculto</string>
<string name="revanced_hide_chips_shelf_summary_off">Se muestra el estante de fichas</string>
<string name="revanced_hide_expandable_chip_title">Ocultar ficha expandible en videos</string>
<string name="revanced_hide_expandable_chip_summary_on">Las fichas expandibles están ocultas</string>
<string name="revanced_hide_expandable_chip_summary_off">Se muestran fichas expandibles</string>
@@ -199,17 +202,14 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_image_shelf_summary_on">El estante de imágenes está oculto</string>
<string name="revanced_hide_image_shelf_summary_off">El estante de imágenes se muestra</string>
<string name="revanced_hide_latest_posts_ads_title">Ocultar últimos mensajes</string>
<string name="revanced_hide_latest_posts_ads_summary_on">Los últimos mensajes están ocultos</string>
<string name="revanced_hide_latest_posts_ads_summary_off">Se muestran los últimos mensajes</string>
<string name="revanced_hide_latest_posts_ads_summary_on">Las últimas publicaciones están ocultas</string>
<string name="revanced_hide_latest_posts_ads_summary_off">Se muestran las últimas publicaciones</string>
<string name="revanced_hide_mix_playlists_title">Ocultar listas de mezcla</string>
<string name="revanced_hide_mix_playlists_summary_on">Las listas de reproducción mixtas están ocultas</string>
<string name="revanced_hide_mix_playlists_summary_off">Mezclar listas de reproducción son mostradas</string>
<string name="revanced_hide_artist_cards_title">Ocultar tarjetas de artistas</string>
<string name="revanced_hide_artist_cards_summary_on">Las tarjetas de artistas están ocultas</string>
<string name="revanced_hide_artist_cards_summary_off">Se muestran las tarjetas del artista</string>
<string name="revanced_hide_chips_shelf_title">Ocultar estante de fichas</string>
<string name="revanced_hide_chips_shelf_summary_on">El estante de fichas está oculto</string>
<string name="revanced_hide_chips_shelf_summary_off">Se muestra el estante de fichas</string>
<string name="revanced_hide_attributes_section_title">Ocultar sección de atributos</string>
<string name="revanced_hide_attributes_section_summary_on">\'Lugares destacados\', Las secciones de juegos y música están ocultas</string>
<string name="revanced_hide_attributes_section_summary_off">\'Lugares destacados\', Se muestran las secciones de juegos y música</string>
@@ -258,11 +258,11 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_keyword_content_about_summary">Los resultados de inicio/suscripción/búsqueda se filtran para ocultar el contenido que coincide con las frases de palabras clave\n\nLimitaciones\n• Los cortos no se pueden ocultar con el nombre del canal\n• Algunos componentes de la interfaz pueden no estar ocultos\n• Buscar una palabra clave no puede mostrar resultados</string>
<string name="revanced_hide_keyword_content_about_whole_words_title">Coincidir palabras completas</string>
<!-- Translations _must_ use a localized example. For languages that do not use spaces between words (Chinese, Japanese, etc) the English AI example should be used since no localized examples exist. Or if using machine translations, or if nobody wants to think of a localized example, then the English 'ai' example should be left as-is. -->
<string name="revanced_hide_keyword_content_about_whole_words_summary">Rodear una palabra clave/frase con comillas dobles evitará las coincidencias parciales de títulos de vídeo y nombres de canales&lt;br&gt;&lt;br&gt;Por ejemplo,&lt;br&gt;&lt;b&gt;\"ia\"&lt;/b&gt; ocultará el vídeo: &lt;b&gt;¿Cómo funciona la IA?&lt;/b&gt;&lt;br&gt;pero no ocultará: &lt;b&gt;¿Qué significa uso justo?&lt;/b&gt;</string>
<string name="revanced_hide_keyword_content_about_whole_words_summary">Rodear una palabra clave/frase con comillas dobles evitará las coincidencias parciales de títulos de vídeo y nombres de canales&lt;br&gt;&lt;br&gt;Por ejemplo,&lt;br&gt;&lt;b&gt;\"ia\"&lt;/b&gt; ocultará el vídeo: &lt;b&gt;¿Cómo funciona la AI?&lt;/b&gt;&lt;br&gt;pero no ocultará: &lt;b&gt;¿Quieres aprender a bailar?&lt;/b&gt;</string>
<!-- Translations of this should not be longer than the original English text, otherwise the text can be clipped and not entirely shown. -->
<string name="revanced_hide_keyword_toast_invalid_common">No se puede usar la palabra clave: %s</string>
<string name="revanced_hide_keyword_toast_invalid_common_whole_word_required">Añadir comillas para usar palabra clave: %s</string>
<string name="revanced_hide_keyword_toast_invalid_conflicting">La palabra clave tiene declaraciones en conflicto: %s</string>
<string name="revanced_hide_keyword_toast_invalid_conflicting">La palabra clave tiene declaraciones conflictivas: %s</string>
<string name="revanced_hide_keyword_toast_invalid_length">La palabra clave es demasiado corta y requiere comillas: %s</string>
<string name="revanced_hide_keyword_toast_invalid_broad">Palabra clave ocultará todos los vídeos: %s</string>
</patch>
@@ -274,7 +274,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_fullscreen_ads_summary_on">Los anuncios a pantalla completa están ocultos\n\nEsta función solo está disponible para dispositivos más antiguos</string>
<string name="revanced_hide_fullscreen_ads_summary_off">Se muestran anuncios a pantalla completa</string>
<string name="revanced_hide_buttoned_ads_title">Ocultar anuncios botonados</string>
<string name="revanced_hide_buttoned_ads_summary_on">Los anuncios bloqueados están ocultos</string>
<string name="revanced_hide_buttoned_ads_summary_on">Los anuncios botonados están ocultos</string>
<string name="revanced_hide_buttoned_ads_summary_off">Se muestran anuncios botonados</string>
<string name="revanced_hide_paid_promotion_label_title">Ocultar etiqueta de promoción de pago</string>
<string name="revanced_hide_paid_promotion_label_summary_on">Etiqueta de promoción pagada está oculta</string>
@@ -307,7 +307,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_get_premium_summary_off">Se muestran las promociones de YouTube Premium en el reproductor de vídeo</string>
</patch>
<patch id="ad.video.VideoAdsPatch">
<string name="revanced_hide_video_ads_title">Ocultar video anuncios</string>
<string name="revanced_hide_video_ads_title">Ocultar anuncios de video</string>
<string name="revanced_hide_video_ads_summary_on">Los anuncios de vídeo están ocultos</string>
<string name="revanced_hide_video_ads_summary_off">Los anuncios de vídeo se muestran</string>
</patch>
@@ -328,7 +328,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_remove_viewer_discretion_dialog_user_dialog_message">Esto no pasa por alto la restricción de edad, sino que simplemente la acepta automáticamente.</string>
</patch>
<patch id="interaction.downloads.DownloadsResourcePatch">
<string name="revanced_external_downloader_screen_title">Descarga externa</string>
<string name="revanced_external_downloader_screen_title">Descargas externa</string>
<string name="revanced_external_downloader_screen_summary">Configuración para el uso de un descargador externo</string>
<string name="revanced_external_downloader_title">Mostrar botón externo de descarga</string>
<string name="revanced_external_downloader_summary_on">Botón de descarga mostrado en el reproductor</string>
@@ -442,8 +442,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_navigation_buttons_screen_summary">Ocultar o cambiar botones en la barra de navegación</string>
<!-- 'Home' should be translated using the same localized wording YouTube displays for the tab. -->
<string name="revanced_hide_home_button_title">Ocultar Principal</string>
<string name="revanced_hide_home_button_summary_on">El botón de principal está oculto</string>
<string name="revanced_hide_home_button_summary_off">Se muestra el botón de principal</string>
<string name="revanced_hide_home_button_summary_on">El botón de inicio está oculto</string>
<string name="revanced_hide_home_button_summary_off">El botón de inicio es visible</string>
<!-- 'Shorts' should be translated using the same localized wording YouTube displays the tab. -->
<string name="revanced_hide_shorts_button_title">Ocultar Shorts</string>
<string name="revanced_hide_shorts_button_summary_on">El botón de Shorts está oculto</string>
@@ -627,15 +627,15 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_shorts_location_label_title">Ocultar etiqueta de ubicación</string>
<string name="revanced_hide_shorts_location_label_summary_on">Etiqueta de ubicación oculta</string>
<string name="revanced_hide_shorts_location_label_summary_off">Etiqueta de ubicación mostrada</string>
<string name="revanced_hide_shorts_save_sound_button_title">Ocultar sonido guardado al botón de lista de reproducción</string>
<string name="revanced_hide_shorts_save_sound_button_summary_on">Guardar sonido en lista de reproducción está oculto</string>
<string name="revanced_hide_shorts_save_sound_button_summary_off">Guardar sonido en la lista de reproducción se muestra</string>
<string name="revanced_hide_shorts_use_this_sound_button_title">Ocultar usar este botón de sonido</string>
<string name="revanced_hide_shorts_use_this_sound_button_summary_on">Usar este botón de sonido está oculto</string>
<string name="revanced_hide_shorts_use_this_sound_button_summary_off">Usar este botón de sonido se muestra</string>
<string name="revanced_hide_shorts_save_sound_button_title">Ocultar botón de guardar música</string>
<string name="revanced_hide_shorts_save_sound_button_summary_on">Guardar música está oculta</string>
<string name="revanced_hide_shorts_save_sound_button_summary_off">Guardar música se muestra</string>
<string name="revanced_hide_shorts_search_suggestions_title">Ocultar sugerencias de búsqueda</string>
<string name="revanced_hide_shorts_search_suggestions_summary_on">Las sugerencias de búsqueda están ocultas</string>
<string name="revanced_hide_shorts_search_suggestions_summary_off">Se muestran sugerencias de búsqueda</string>
<string name="revanced_hide_shorts_stickers_title">Ocultar stickers</string>
<string name="revanced_hide_shorts_stickers_summary_on">Los pegatinas están ocultos</string>
<string name="revanced_hide_shorts_stickers_summary_off">Se muestran pegatinas</string>
<string name="revanced_hide_shorts_like_button_title">Ocultar botón me gusta</string>
<string name="revanced_hide_shorts_like_button_summary_on">El botón Me gusta está oculto</string>
<string name="revanced_hide_shorts_like_button_summary_off">Se muestra el botón Me Gusta</string>
@@ -928,7 +928,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_sb_reset_color">Reiniciar color</string>
<string name="revanced_sb_reset">Restablecer</string>
<string name="revanced_sb_about">Acerca de</string>
<string name="revanced_sb_about_api_sum">Los datos son proporcionados por la API de SponsorBlock. Pulsa aquí para aprender más y ver las descargas de otras plataformas</string>
<string name="revanced_sb_about_api_sum">Los datos son proporcionados por la API de SponsorBlock. Pulsa aquí para aprender más y ver las descargas para otras plataformas</string>
</patch>
<patch id="layout.spoofappversion.SpoofAppVersionPatch">
<string name="revanced_spoof_app_version_title">Versión de la aplicación Spoof</string>
@@ -1164,8 +1164,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_block_audio_ads_summary_off">Anuncios de audio desbloqueados</string>
</patch>
<patch id="ad.embedded.EmbeddedAdsPatch">
<string name="revanced_embedded_ads_service_unavailable">%s no está disponible. Los anuncios pueden mostrarse. Intenta cambiar a otro servicio de bloque de anuncios en la configuración.</string>
<string name="revanced_embedded_ads_service_failed">El servidor %s devolvió un error. Los anuncios pueden mostrar. Intente cambiar a otro servicio de bloque de anuncios en la configuración.</string>
<string name="revanced_embedded_ads_service_unavailable">%s no está disponible. Los anuncios pueden mostrarse. Intenta cambiar a otro servicio de bloqueo de anuncios en la configuración.</string>
<string name="revanced_embedded_ads_service_failed">El servidor %s devolvió un error. Los anuncios pueden mostrar. Intente cambiar a otro servicio de bloqueo de anuncios en la configuración.</string>
<string name="revanced_block_embedded_ads_title">Bloquear anuncios de vídeo incrustados</string>
<string name="revanced_block_embedded_ads_entry_1">Desactivado</string>
<string name="revanced_block_embedded_ads_entry_2">Proxy luminoso</string>

File diff suppressed because it is too large Load Diff

View File

@@ -134,6 +134,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_channel_guidelines_title">Itago ang mga alituntunin ng channel</string>
<string name="revanced_hide_channel_guidelines_summary_on">Nakatago ang mga alituntunin ng channel</string>
<string name="revanced_hide_channel_guidelines_summary_off">Ipinapakita ang mga alituntunin sa channel</string>
<string name="revanced_hide_chips_shelf_title">Itago ang shelf ng chips</string>
<string name="revanced_hide_chips_shelf_summary_on">Nakatago ang istante ng chips</string>
<string name="revanced_hide_chips_shelf_summary_off">Ipinapakita ang istante ng chips</string>
<string name="revanced_hide_expandable_chip_title">Itago ang napapalawak na chip sa ilalim ng mga video</string>
<string name="revanced_hide_expandable_chip_summary_on">Nakatago ang mga napapalawak na chip</string>
<string name="revanced_hide_expandable_chip_summary_off">Ipinapakita ang mga napapalawak na chip</string>
@@ -194,9 +197,6 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_artist_cards_title">Itago ang mga card ng artist</string>
<string name="revanced_hide_artist_cards_summary_on">Nakatago ang mga artist card</string>
<string name="revanced_hide_artist_cards_summary_off">Ipinapakita ang mga card ng artist</string>
<string name="revanced_hide_chips_shelf_title">Itago ang shelf ng chips</string>
<string name="revanced_hide_chips_shelf_summary_on">Nakatago ang istante ng chips</string>
<string name="revanced_hide_chips_shelf_summary_off">Ipinapakita ang istante ng chips</string>
<string name="revanced_hide_attributes_section_title">Itago ang seksyon ng mga katangian</string>
<string name="revanced_hide_attributes_section_summary_on">Ang \"Mga itinatampok na lugar\", Mga seksyon ng Laro at Musika ay nakatago</string>
<string name="revanced_hide_attributes_section_summary_off">Ipinapakita ang \"Mga itinatampok na lugar\", Mga seksyon ng Laro at Musika</string>
@@ -600,9 +600,6 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_shorts_location_label_title">Itago ang label ng lokasyon</string>
<string name="revanced_hide_shorts_location_label_summary_on">Nakatago ang label ng lokasyon</string>
<string name="revanced_hide_shorts_location_label_summary_off">Ipinapakita ang label ng lokasyon</string>
<string name="revanced_hide_shorts_save_sound_button_title">Itago ang save sound to playlist button</string>
<string name="revanced_hide_shorts_save_sound_button_summary_on">Nakatago ang pag-save ng tunog sa playlist</string>
<string name="revanced_hide_shorts_save_sound_button_summary_off">Ang pag-save ng tunog sa playlist ay ipinapakita</string>
<string name="revanced_hide_shorts_search_suggestions_title">Itago ang mga mungkahi sa paghahanap</string>
<string name="revanced_hide_shorts_search_suggestions_summary_on">Nakatago ang mga mungkahi sa paghahanap</string>
<string name="revanced_hide_shorts_search_suggestions_summary_off">Ipinapakita ang mga mungkahi sa paghahanap</string>

View File

@@ -146,6 +146,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_channel_guidelines_title">Masquer les règles de la chaîne</string>
<string name="revanced_hide_channel_guidelines_summary_on">Les règles de la chaîne sont masqués</string>
<string name="revanced_hide_channel_guidelines_summary_off">Les règles de la chaîne sont affichés</string>
<string name="revanced_hide_chips_shelf_title">Masquer l\'étagère des puces</string>
<string name="revanced_hide_chips_shelf_summary_on">L\'étagère des puces est masquée</string>
<string name="revanced_hide_chips_shelf_summary_off">L\'étagère des puces est affichée</string>
<string name="revanced_hide_expandable_chip_title">Masquer les options extensibles sous les vidéos</string>
<string name="revanced_hide_expandable_chip_summary_on">Les puces extensibles sont masquées</string>
<string name="revanced_hide_expandable_chip_summary_off">Les puces extensibles sont affichées</string>
@@ -206,9 +209,6 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_artist_cards_title">Masquer les cartes d\'artiste</string>
<string name="revanced_hide_artist_cards_summary_on">Les cartes d\'artiste sont masquées</string>
<string name="revanced_hide_artist_cards_summary_off">Les cartes d\'artiste sont affichées</string>
<string name="revanced_hide_chips_shelf_title">Masquer l\'étagère des puces</string>
<string name="revanced_hide_chips_shelf_summary_on">L\'étagère des puces est masquée</string>
<string name="revanced_hide_chips_shelf_summary_off">L\'étagère des puces est affichée</string>
<string name="revanced_hide_attributes_section_title">Masquer la section des attributs</string>
<string name="revanced_hide_attributes_section_summary_on">Les sections « Lieux en vedette », « Jeux » et « Musique » sont masquées</string>
<string name="revanced_hide_attributes_section_summary_off">Les sections « Lieux en vedette », « Jeux » et « Musique » sont affichées</string>
@@ -626,15 +626,15 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_shorts_location_label_title">Masquer le libellé de l\'emplacement</string>
<string name="revanced_hide_shorts_location_label_summary_on">Le libellé de l\'emplacement est masqué</string>
<string name="revanced_hide_shorts_location_label_summary_off">Le libellé de l\'emplacement est affiché</string>
<string name="revanced_hide_shorts_save_sound_button_title">Masquer le bouton Enregistrer le son dans la liste de lecture</string>
<string name="revanced_hide_shorts_save_sound_button_summary_on">Enregistrer le son dans la playlist est masqué</string>
<string name="revanced_hide_shorts_save_sound_button_summary_off">Enregistrer le son dans la playlist est affiché</string>
<string name="revanced_hide_shorts_use_this_sound_button_title">Masquer le bouton \"Utiliser ce son\"</string>
<string name="revanced_hide_shorts_use_this_sound_button_summary_on">Utiliser ce bouton de son est caché</string>
<string name="revanced_hide_shorts_use_this_sound_button_summary_off">Le bouton \"Utiliser ce son\" est affiché</string>
<string name="revanced_hide_shorts_save_sound_button_title">Masquer le bouton \"Enregistrer la musique\" </string>
<string name="revanced_hide_shorts_save_sound_button_summary_on">\"Enregistrer la musique\" est masqué </string>
<string name="revanced_hide_shorts_save_sound_button_summary_off">\"Enregistrer la musique\" est affiché </string>
<string name="revanced_hide_shorts_search_suggestions_title">Masquer les suggestions de recherche</string>
<string name="revanced_hide_shorts_search_suggestions_summary_on">Les suggestions de recherche sont masquées</string>
<string name="revanced_hide_shorts_search_suggestions_summary_off">Suggestions de recherche affichées</string>
<string name="revanced_hide_shorts_stickers_title">Masquer les stickers</string>
<string name="revanced_hide_shorts_stickers_summary_on">Les stickers sont masqués</string>
<string name="revanced_hide_shorts_stickers_summary_off">Les stickers sont affichés</string>
<string name="revanced_hide_shorts_like_button_title">Masquer le bouton \"J\'aime\"</string>
<string name="revanced_hide_shorts_like_button_summary_on">Le bouton J\'aime est caché</string>
<string name="revanced_hide_shorts_like_button_summary_off">Le bouton J\'aime est affiché</string>

View File

@@ -147,6 +147,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_channel_guidelines_title">Folaigh treoirlínte cainéal</string>
<string name="revanced_hide_channel_guidelines_summary_on">Tá treoirlínte cainéal i bhfolach</string>
<string name="revanced_hide_channel_guidelines_summary_off">Taispeántar treoirlínte cainéal</string>
<string name="revanced_hide_chips_shelf_title">Folaigh seilf sliseanna</string>
<string name="revanced_hide_chips_shelf_summary_on">Tá seilf sliseanna i bhfolach</string>
<string name="revanced_hide_chips_shelf_summary_off">Taispeántar seilf sliseanna</string>
<string name="revanced_hide_expandable_chip_title">Folaigh sliseanna inmhéadaithe faoi fhíseáin</string>
<string name="revanced_hide_expandable_chip_summary_on">Tá sceallóga leathnaithe i bhfolach</string>
<string name="revanced_hide_expandable_chip_summary_off">Taispeántar sceallóga leathnaithe</string>
@@ -207,9 +210,6 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_artist_cards_title">Folaigh cártaí ealaíontóirí</string>
<string name="revanced_hide_artist_cards_summary_on">Tá cártaí ealaíontóirí i bhfolach</string>
<string name="revanced_hide_artist_cards_summary_off">Taispeántar cártaí ealaíonta</string>
<string name="revanced_hide_chips_shelf_title">Folaigh seilf sliseanna</string>
<string name="revanced_hide_chips_shelf_summary_on">Tá seilf sliseanna i bhfolach</string>
<string name="revanced_hide_chips_shelf_summary_off">Taispeántar seilf sliseanna</string>
<string name="revanced_hide_attributes_section_title">Folaigh roinn tréithe</string>
<string name="revanced_hide_attributes_section_summary_on">Tá rannáin \'Áiteanna Réadmhaí\', Cluichí agus Ceol i bhfolach</string>
<string name="revanced_hide_attributes_section_summary_off">Taispeántar \'Áiteanna faoi Thrácht\', rannóga Cluichí agus Ceoil</string>
@@ -627,12 +627,6 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_shorts_location_label_title">Folaigh lipéad suímh</string>
<string name="revanced_hide_shorts_location_label_summary_on">Tá lipéad suímh i bhfolach</string>
<string name="revanced_hide_shorts_location_label_summary_off">Taispeántar lipéad suímh</string>
<string name="revanced_hide_shorts_save_sound_button_title">Folaigh fuaim a shábháil go cnaipe seinmliosta</string>
<string name="revanced_hide_shorts_save_sound_button_summary_on">Tá fuaim a shábháil go seinmliosta i bhfolach</string>
<string name="revanced_hide_shorts_save_sound_button_summary_off">Taispeántar fuaim a shábháil go seinmliosta</string>
<string name="revanced_hide_shorts_use_this_sound_button_title">Folaigh úsáid an cnaipe fuaime seo</string>
<string name="revanced_hide_shorts_use_this_sound_button_summary_on">Bain úsáid as an cnaipe fuaime seo i bhfolach</string>
<string name="revanced_hide_shorts_use_this_sound_button_summary_off">Taispeántar úsáid an cnaipe fuaime seo</string>
<string name="revanced_hide_shorts_search_suggestions_title">Folaigh moltaí cuardaigh</string>
<string name="revanced_hide_shorts_search_suggestions_summary_on">Tá moltaí cuardaigh i bhfolach</string>
<string name="revanced_hide_shorts_search_suggestions_summary_off">Taispeántar moltaí cuardaigh</string>
@@ -1146,7 +1140,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_spoof_video_streams_ios_force_avc_no_hardware_vp9_summary_on">Níl díchódú crua-earraí VP9 ar do ghléas, agus bíonn an socrú seo ar siúl i gcónaí nuair atá spoofing Cliant cumasaithe</string>
<string name="revanced_spoof_video_streams_ios_force_avc_user_dialog_message">Má dhéantar é seo a chumasú, d\'fhéadfadh sé go bhfeabhsófaí saol na gceallraí agus go n-athshocraigh sé stopáil athsheinm.\n\nTá uas-taifeach 1080p ag AVC, agus úsáidfidh athsheinm físe níos mó sonraí idirlín ná mar a úsáideann VP9 nó AV1.</string>
<string name="revanced_spoof_video_streams_about_ios_title">Fo-iarsmaí spoofing iOS</string>
<string name="revanced_spoof_video_streams_about_ios_summary">• Ní féidir le scannáin nó físeáin íoctha a sheinm\n• Tosaíonn sruthanna beo ón tús\n• Seans go gcríochnóidh físeáin 1 soicind go luath\n• Gan codec fuaime opus</string>
<string name="revanced_spoof_video_streams_about_android_vr_title">Fo-iarsmaí spoofing Android VR</string>
<string name="revanced_spoof_video_streams_about_android_vr_summary">• Tá roghchlár rian fuaime in easnamh\n• Níl an toirt cobhsaí ar fáil</string>
</patch>
<!-- This patch is no longer used and these strings will soon be deleted. -->
<patch id="video.hdrbrightness.HDRBrightnessPatch">

View File

@@ -147,6 +147,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_channel_guidelines_title">Csatornák irányelveinek elrejtése</string>
<string name="revanced_hide_channel_guidelines_summary_on">A csatorna irányelvei elrejtve</string>
<string name="revanced_hide_channel_guidelines_summary_off">A csatorna irányelvei megjelenítve</string>
<string name="revanced_hide_chips_shelf_title">Vágások polc elrejtése</string>
<string name="revanced_hide_chips_shelf_summary_on">A vágások polc el van rejtve</string>
<string name="revanced_hide_chips_shelf_summary_off">A vágások polc megjelenik</string>
<string name="revanced_hide_expandable_chip_title">Kiterjeszthető vágások elrejtése a videók alatt</string>
<string name="revanced_hide_expandable_chip_summary_on">A kiterjeszthető vágások el vannak rejtve</string>
<string name="revanced_hide_expandable_chip_summary_off">A kiterjeszthető vágások megjelennek</string>
@@ -207,9 +210,6 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_artist_cards_title">Előadó kártyák elrejtése</string>
<string name="revanced_hide_artist_cards_summary_on">Az előadó kártyák rejtve vannak</string>
<string name="revanced_hide_artist_cards_summary_off">A előadó kártyák láthatók</string>
<string name="revanced_hide_chips_shelf_title">Vágások polc elrejtése</string>
<string name="revanced_hide_chips_shelf_summary_on">A vágások polc el van rejtve</string>
<string name="revanced_hide_chips_shelf_summary_off">A vágások polc megjelenik</string>
<string name="revanced_hide_attributes_section_title">Az attribútumok szakasz elrejtése</string>
<string name="revanced_hide_attributes_section_summary_on">A „Kiemelt helyek”, a Játékok és a Zene szakaszok el vannak rejtve</string>
<string name="revanced_hide_attributes_section_summary_off">Megjelennek a „Kiemelt helyek”, a Játékok és a Zene szakaszok</string>
@@ -627,9 +627,6 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_shorts_location_label_title">Helycímke elrejtése</string>
<string name="revanced_hide_shorts_location_label_summary_on">A helycímke el van rejtve</string>
<string name="revanced_hide_shorts_location_label_summary_off">A helycímke megjelenik</string>
<string name="revanced_hide_shorts_save_sound_button_title">Hang mentése a lejátszási listára gomb elrejtése</string>
<string name="revanced_hide_shorts_save_sound_button_summary_on">A hang mentése a lejátszási listára gomb el van rejtve</string>
<string name="revanced_hide_shorts_save_sound_button_summary_off">A hang mentése a lejátszási listára gomb megjelenik</string>
<string name="revanced_hide_shorts_search_suggestions_title">Keresési javaslatok elrejtése</string>
<string name="revanced_hide_shorts_search_suggestions_summary_on">A keresési javaslatok el vannak rejtve</string>
<string name="revanced_hide_shorts_search_suggestions_summary_off">A keresési javaslatok megjelennek</string>
@@ -1131,10 +1128,22 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_slide_to_seek_summary_off">A csúsztatás a kereséshez nincs engedélyezve</string>
</patch>
<patch id="misc.fix.playback.SpoofVideoStreamsPatch">
<string name="revanced_spoof_video_streams_screen_title">Hamis videó stream</string>
<string name="revanced_spoof_video_streams_screen_summary">Hamisítsa meg az ügyfél videó streamet a lejátszási problémák elkerülése érdekében</string>
<string name="revanced_spoof_video_streams_title">Hamis videó stream</string>
<string name="revanced_spoof_video_streams_summary_on">A videó stream hamisítva</string>
<string name="revanced_spoof_video_streams_summary_off">A videó stream nincs hamisítva\n\nLehet, hogy a videólejátszás nem működik</string>
<string name="revanced_spoof_video_streams_user_dialog_message">A beállítás kikapcsolása videolejátszási problémákat okozhat.</string>
<string name="revanced_spoof_video_streams_client_title">Alapértelmezett kliens</string>
<string name="revanced_spoof_video_streams_ios_force_avc_title">AVC (H.264) kényszerítése</string>
<string name="revanced_spoof_video_streams_ios_force_avc_summary_on">A videokodek AVC (H.264)</string>
<string name="revanced_spoof_video_streams_ios_force_avc_summary_off">A videokodek VP9 vagy AV1</string>
<string name="revanced_spoof_video_streams_ios_force_avc_no_hardware_vp9_summary_on">Eszközén nincs VP9 hardveres dekódolás, és ez a beállítás mindig be van kapcsolva, ha az ügyfélhamisítás engedélyezve van</string>
<string name="revanced_spoof_video_streams_ios_force_avc_user_dialog_message">Ennek engedélyezése javíthatja az akkumulátor élettartamát, és kijavíthatja a lejátszás akadozását.\n\nAz AVC maximális felbontása 1080p, és a videolejátszás több internetadatot használ, mint a VP9 vagy az AV1.</string>
<string name="revanced_spoof_video_streams_about_ios_title">iOS hamisítási mellékhatások</string>
<string name="revanced_spoof_video_streams_about_ios_summary">• Előfordulhat, hogy a filmeket és a fizetős videókat nem lehet lejátszani\n• Az élő közvetítések elölről kezdődnek.\n• A videók 1 másodperccel korábban véget érhetnek\n• Nincs opus audiokodek</string>
<string name="revanced_spoof_video_streams_about_android_vr_title">Android VR-hamisítási mellékhatások</string>
<string name="revanced_spoof_video_streams_about_android_vr_summary">• Hiányzik a hangsáv menü\n• A stabil hangerő nem érhető el</string>
</patch>
<!-- This patch is no longer used and these strings will soon be deleted. -->
<patch id="video.hdrbrightness.HDRBrightnessPatch">

View File

@@ -87,7 +87,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
</patch>
<patch id="misc.debugging.DebuggingPatch">
<string name="revanced_debug_screen_title">Debugging</string>
<string name="revanced_debug_screen_summary">Mengaktifkan atau menonaktifkan opsi debugging</string>
<string name="revanced_debug_screen_summary">Menyalakan atau mematikan opsi debugging</string>
<string name="revanced_debug_title">Catatan debug</string>
<string name="revanced_debug_summary_on">Log debug diaktifkan</string>
<string name="revanced_debug_summary_off">Log debug dinonaktifkan</string>
@@ -109,7 +109,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_gray_separator_title">Sembunyikan pemisah abu-abu</string>
<string name="revanced_hide_gray_separator_summary_on">Pemisah abu-abu disembunyikan</string>
<string name="revanced_hide_gray_separator_summary_off">Pemisah abu-abu ditampilkan</string>
<string name="revanced_hide_channel_watermark_title">Sembunyikan watermark saluran</string>
<string name="revanced_hide_channel_watermark_title">Sembunyikan tanda air saluran</string>
<string name="revanced_hide_channel_watermark_summary_on">Tanda air disembunyikan</string>
<string name="revanced_hide_channel_watermark_summary_off">Tanda air ditampilkan</string>
<string name="revanced_hide_horizontal_shelves_title">Sembunyikan rak mendatar</string>
@@ -147,6 +147,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_channel_guidelines_title">Sembunyikan Panduan Saluran</string>
<string name="revanced_hide_channel_guidelines_summary_on">Panduan saluran disembunyikan</string>
<string name="revanced_hide_channel_guidelines_summary_off">Panduan saluran ditampilkan</string>
<string name="revanced_hide_chips_shelf_title">Sembunyikan rak chip</string>
<string name="revanced_hide_chips_shelf_summary_on">Rak opsi deret disembunyikan</string>
<string name="revanced_hide_chips_shelf_summary_off">Rak chip ditampilkan</string>
<string name="revanced_hide_expandable_chip_title">Sembunyikan opsi deret di bawah video</string>
<string name="revanced_hide_expandable_chip_summary_on">Opsi deret disembunyikan</string>
<string name="revanced_hide_expandable_chip_summary_off">Chip yang dapat diperluas ditampilkan</string>
@@ -207,9 +210,6 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_artist_cards_title">Sembunyikan kartu artis</string>
<string name="revanced_hide_artist_cards_summary_on">Kartu artis disembunyikan</string>
<string name="revanced_hide_artist_cards_summary_off">Kartu artis ditampilkan</string>
<string name="revanced_hide_chips_shelf_title">Sembunyikan rak chip</string>
<string name="revanced_hide_chips_shelf_summary_on">Rak opsi deret disembunyikan</string>
<string name="revanced_hide_chips_shelf_summary_off">Rak chip ditampilkan</string>
<string name="revanced_hide_attributes_section_title">Sembunyikan bagian atribut</string>
<string name="revanced_hide_attributes_section_summary_on">\'Tempat menonjol\', \'Permainan\', dan \'Musik\' disembunyikan</string>
<string name="revanced_hide_attributes_section_summary_off">\'Tempat menonjol\', \'Permainan\', dan \'Musik\' ditampilkan</string>
@@ -289,15 +289,15 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_shopping_links_summary_on">Tautan belanja disembunyikan</string>
<string name="revanced_hide_shopping_links_summary_off">Tautan belanja ditampilkan</string>
<!-- 'Visit store' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_visit_store_button_title">Sembunyikan \'Lihat toko\' di laman saluran</string>
<string name="revanced_hide_visit_store_button_title">Sembunyikan tombol \'Lihat toko\' di laman saluran</string>
<string name="revanced_hide_visit_store_button_summary_on">Tombol disembunyikan</string>
<string name="revanced_hide_visit_store_button_summary_off">Tombol ditampilkan</string>
<string name="revanced_hide_web_search_results_title">Sembunyikan hasil pencarian web</string>
<string name="revanced_hide_web_search_results_summary_on">Hasil pencarian web disembunyikan</string>
<string name="revanced_hide_web_search_results_summary_off">Hasil pencarian web ditampilkan</string>
<string name="revanced_hide_merchandise_banners_title">Sembunyikan banner merchandise</string>
<string name="revanced_hide_merchandise_banners_title">Sembunyikan spanduk barang dagangan</string>
<string name="revanced_hide_merchandise_banners_summary_on">Banner merchandise disembunyikan</string>
<string name="revanced_hide_merchandise_banners_summary_off">Banner merchandise ditampilkan</string>
<string name="revanced_hide_merchandise_banners_summary_off">Spanduk barang dagangan ditampilkan</string>
<!-- Translations of this should not be longer than the original English text, otherwise the text can be clipped and not entirely shown. -->
<string name="revanced_hide_fullscreen_ads_feature_not_available_toast">Sembunyikan iklan layar penuh hanya berfungsi pada perangkat lama</string>
</patch>
@@ -409,9 +409,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_download_button_summary_on">Tombol download disembunyikan</string>
<string name="revanced_hide_download_button_summary_off">Tombol download ditampilkan</string>
<!-- 'Thanks' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_thanks_button_title">Sembunyikan Thanks</string>
<string name="revanced_hide_thanks_button_summary_on">Tombol thanks disembunyikan</string>
<string name="revanced_hide_thanks_button_summary_off">Tombol thanks ditampilkan</string>
<string name="revanced_hide_thanks_button_title">Sembunyikan Terima kasih</string>
<string name="revanced_hide_thanks_button_summary_on">Tombol terima kasih disembunyikan</string>
<string name="revanced_hide_thanks_button_summary_off">Tombol terima kasih ditampilkan</string>
<!-- 'Clip' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_clip_button_title">Sembunyikan Klip</string>
<string name="revanced_hide_clip_button_summary_on">Tombol klip disembunyikan</string>
@@ -535,8 +535,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_comments_preview_comment_summary_on">Komentar pratinjau disembunyikan</string>
<string name="revanced_hide_comments_preview_comment_summary_off">Komentar pratinjau ditampilkan</string>
<string name="revanced_hide_comments_thanks_button_title">Sembunyikan \'terima kasih\'</string>
<string name="revanced_hide_comments_thanks_button_summary_on">Tmbl terima kasih disembunyikan</string>
<string name="revanced_hide_comments_thanks_button_summary_off">Tmbl terima kasih ditampilkan</string>
<string name="revanced_hide_comments_thanks_button_summary_on">Tombol terima kasih disembunyikan</string>
<string name="revanced_hide_comments_thanks_button_summary_off">Tombol terima kasih ditampilkan</string>
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_title">Sembunyikan timestamp dan tombol emoji</string>
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_summary_on">Tombol timestamp dan emoji disembunyikan</string>
<string name="revanced_hide_comments_timestamp_and_emoji_buttons_summary_off">Tombol timestamp dan emoji ditampilkan</string>
@@ -627,15 +627,15 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_shorts_location_label_title">Sembunyikan label lokasi</string>
<string name="revanced_hide_shorts_location_label_summary_on">Label lokasi disembunyikan</string>
<string name="revanced_hide_shorts_location_label_summary_off">Label lokasi ditampilkan</string>
<string name="revanced_hide_shorts_save_sound_button_title">Sembunyikan tombol simpan suara ke daftar putar</string>
<string name="revanced_hide_shorts_save_sound_button_summary_on">Simpan suara ke daftar putar disembunyikan</string>
<string name="revanced_hide_shorts_save_sound_button_summary_off">Simpan suara ke daftar putar ditampilkan</string>
<string name="revanced_hide_shorts_use_this_sound_button_title">Sembunyikan gunakan tombol suara ini</string>
<string name="revanced_hide_shorts_use_this_sound_button_summary_on">Gunakan tombol suara ini disembunyikan</string>
<string name="revanced_hide_shorts_use_this_sound_button_summary_off">Gunakan tombol suara ini ditampilkan</string>
<string name="revanced_hide_shorts_save_sound_button_title">Sembunyikan tombol simpan musik</string>
<string name="revanced_hide_shorts_save_sound_button_summary_on">Simpan musik disembunyikan</string>
<string name="revanced_hide_shorts_save_sound_button_summary_off">Simpan musik ditampilkan</string>
<string name="revanced_hide_shorts_search_suggestions_title">Sembunyikan saran penelusuran</string>
<string name="revanced_hide_shorts_search_suggestions_summary_on">Saran penelusuran disembunyikan</string>
<string name="revanced_hide_shorts_search_suggestions_summary_off">Saran penelusuran ditampilkan</string>
<string name="revanced_hide_shorts_stickers_title">Sembunyikan stiker</string>
<string name="revanced_hide_shorts_stickers_summary_on">Stiker disembunyikan</string>
<string name="revanced_hide_shorts_stickers_summary_off">Stiker ditampilkan</string>
<string name="revanced_hide_shorts_like_button_title">Sembunyikan tombol suka</string>
<string name="revanced_hide_shorts_like_button_summary_on">Tombol suka disembunyikan</string>
<string name="revanced_hide_shorts_like_button_summary_off">Tombol suka ditampilkan</string>
@@ -872,7 +872,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_sb_submit_failed_duplicate">Tidak dapat mengirim segmen.\nSudah ada</string>
<string name="revanced_sb_submit_succeeded">Segmen berhasil terkirim</string>
<!-- Toast shown if network connection times out. Translations of this should not be longer than the original English or the text can be clipped and not entirely shown. -->
<string name="revanced_sb_sponsorblock_connection_failure_timeout">SponsorBlock sementara tidak tersedia (API timed out).</string>
<string name="revanced_sb_sponsorblock_connection_failure_timeout">SponsorBlock tidak tersedia (API kehabisan waktu)</string>
<string name="revanced_sb_sponsorblock_connection_failure_status">SponsorBlock sementara tidak tersedia (status %d)</string>
<string name="revanced_sb_sponsorblock_connection_failure_generic">SponsorBlock sementara tidak tersedia</string>
<string name="revanced_sb_vote_failed_timeout">Tidak dapat memilih segmen (API timed out)</string>
@@ -894,7 +894,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_sb_new_segment_confirm_title">Apakah waktunya benar?</string>
<string name="revanced_sb_new_segment_confirm_content">Segmen dari\n\n%1$s\nke\n%2$s\n\n(%3$s)\n\nSiap dikirim?</string>
<string name="revanced_sb_new_segment_start_is_before_end">Awal harus sebelum akhir</string>
<string name="revanced_sb_new_segment_mark_locations_first">Tandai terlebih dahulu dua lokasi di kotak waktu</string>
<string name="revanced_sb_new_segment_mark_locations_first">Tandai dua lokasi pada bilah waktu terlebih dahulu</string>
<string name="revanced_sb_new_segment_preview_segment_first">Pratinjau segmen, dan memastikan segmen dilewati dengan lancar</string>
<string name="revanced_sb_new_segment_edit_by_hand_title">Atur pengaturan tempo segmen secara manual</string>
<string name="revanced_sb_new_segment_edit_by_hand_content">Apakah Anda ingin mengubah tempo untuk awal atau akhir dari segmen?</string>

View File

@@ -147,6 +147,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_channel_guidelines_title">Nascondi linee guida del canale</string>
<string name="revanced_hide_channel_guidelines_summary_on">Linee guida del canale nascoste</string>
<string name="revanced_hide_channel_guidelines_summary_off">Linee guida del canale visibili</string>
<string name="revanced_hide_chips_shelf_title">Nascondi scaffale chip</string>
<string name="revanced_hide_chips_shelf_summary_on">Lo scaffale di chip è nascosto</string>
<string name="revanced_hide_chips_shelf_summary_off">Lo scaffale delle fiches è mostrato</string>
<string name="revanced_hide_expandable_chip_title">Nascondi il frammento espandibile sotto i video</string>
<string name="revanced_hide_expandable_chip_summary_on">Frammenti espandibili nascosti</string>
<string name="revanced_hide_expandable_chip_summary_off">Frammenti espandibili visibili</string>
@@ -207,9 +210,6 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_artist_cards_title">Nascondi le carte artista</string>
<string name="revanced_hide_artist_cards_summary_on">Le carte dell\'artista sono nascoste</string>
<string name="revanced_hide_artist_cards_summary_off">Vengono mostrate le carte dell\'artista</string>
<string name="revanced_hide_chips_shelf_title">Nascondi scaffale chip</string>
<string name="revanced_hide_chips_shelf_summary_on">Lo scaffale di chip è nascosto</string>
<string name="revanced_hide_chips_shelf_summary_off">Lo scaffale delle fiches è mostrato</string>
<string name="revanced_hide_attributes_section_title">Nascondi la sezione attributi</string>
<string name="revanced_hide_attributes_section_summary_on">Le sezioni \'Luoghi in evidenza\', Giochi e Musica sono nascoste</string>
<string name="revanced_hide_attributes_section_summary_off">Le sezioni \'Luoghi in evidenza\', Giochi e Musica sono visibili</string>
@@ -627,15 +627,15 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_shorts_location_label_title">Nascondi etichetta posizione</string>
<string name="revanced_hide_shorts_location_label_summary_on">L\'etichetta di localizzazione è nascosta</string>
<string name="revanced_hide_shorts_location_label_summary_off">L\'etichetta di posizione è mostrata</string>
<string name="revanced_hide_shorts_save_sound_button_title">Nascondi il pulsante Salva suono nella playlist</string>
<string name="revanced_hide_shorts_save_sound_button_summary_on">Salva il suono nella scaletta è nascosto</string>
<string name="revanced_hide_shorts_save_sound_button_summary_off">Il suono di salvataggio nella scaletta è mostrato</string>
<string name="revanced_hide_shorts_use_this_sound_button_title">Nascondi il pulsante audio</string>
<string name="revanced_hide_shorts_use_this_sound_button_summary_on">Usa questo pulsante audio è nascosto</string>
<string name="revanced_hide_shorts_use_this_sound_button_summary_off">Usa questo pulsante audio è mostrato</string>
<string name="revanced_hide_shorts_save_sound_button_title">Nascondi il pulsante per salvare musica</string>
<string name="revanced_hide_shorts_save_sound_button_summary_on">Salva musica nascosta</string>
<string name="revanced_hide_shorts_save_sound_button_summary_off">Salva musica mostrata</string>
<string name="revanced_hide_shorts_search_suggestions_title">Nascondi suggerimenti di ricerca</string>
<string name="revanced_hide_shorts_search_suggestions_summary_on">I suggerimenti di ricerca sono nascosti</string>
<string name="revanced_hide_shorts_search_suggestions_summary_off">I suggerimenti di ricerca sono mostrati</string>
<string name="revanced_hide_shorts_stickers_title">Nascondi adesivi</string>
<string name="revanced_hide_shorts_stickers_summary_on">Gli adesivi sono nascosti</string>
<string name="revanced_hide_shorts_stickers_summary_off">Gli adesivi sono mostrati</string>
<string name="revanced_hide_shorts_like_button_title">Nascondi pulsante come</string>
<string name="revanced_hide_shorts_like_button_summary_on">Il pulsante simile è nascosto</string>
<string name="revanced_hide_shorts_like_button_summary_off">Il pulsante simile è mostrato</string>

View File

@@ -146,6 +146,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_channel_guidelines_title">チャンネルガイドラインを非表示</string>
<string name="revanced_hide_channel_guidelines_summary_on">チャンネルガイドラインは非表示です</string>
<string name="revanced_hide_channel_guidelines_summary_off">チャンネルガイドラインは表示されます</string>
<string name="revanced_hide_chips_shelf_title">チップ欄を隠す</string>
<string name="revanced_hide_chips_shelf_summary_on">チップ欄は非表示です</string>
<string name="revanced_hide_chips_shelf_summary_off">チップ欄が表示されています</string>
<string name="revanced_hide_expandable_chip_title">動画の下に表示される展開可能なチップを非表示</string>
<string name="revanced_hide_expandable_chip_summary_on">展開可能なチップは非表示です</string>
<string name="revanced_hide_expandable_chip_summary_off">展開可能なチップは表示されます</string>
@@ -206,9 +209,6 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_artist_cards_title">アーティストカードを隠す</string>
<string name="revanced_hide_artist_cards_summary_on">アーティストカードは非表示です</string>
<string name="revanced_hide_artist_cards_summary_off">アーティストカードが表示されます</string>
<string name="revanced_hide_chips_shelf_title">チップ欄を隠す</string>
<string name="revanced_hide_chips_shelf_summary_on">チップ欄は非表示です</string>
<string name="revanced_hide_chips_shelf_summary_off">チップ欄が表示されています</string>
<string name="revanced_hide_attributes_section_title">属性セクションを非表示</string>
<string name="revanced_hide_attributes_section_summary_on">「注目の場所」、ゲーム、音楽欄は非表示です</string>
<string name="revanced_hide_attributes_section_summary_off">「注目の場所」、ゲーム、音楽欄は表示されます</string>
@@ -624,15 +624,15 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_shorts_location_label_title">位置情報のラベルを隠す</string>
<string name="revanced_hide_shorts_location_label_summary_on">ロケーションラベルは非表示です</string>
<string name="revanced_hide_shorts_location_label_summary_off">位置情報ラベルが表示されます</string>
<string name="revanced_hide_shorts_save_sound_button_title">プレイリストに保存ボタンを隠す</string>
<string name="revanced_hide_shorts_save_sound_button_summary_on">プレイリストにサウンドを保存します。</string>
<string name="revanced_hide_shorts_save_sound_button_summary_off">プレイリストにサウンドを保存する</string>
<string name="revanced_hide_shorts_use_this_sound_button_title">このサウンドボタンを非表示にする</string>
<string name="revanced_hide_shorts_use_this_sound_button_summary_on">このサウンドボタンを非表示にする</string>
<string name="revanced_hide_shorts_use_this_sound_button_summary_off">このサウンドボタンを使用する</string>
<string name="revanced_hide_shorts_save_sound_button_title">保存ボタンを隠す</string>
<string name="revanced_hide_shorts_save_sound_button_summary_on">音楽を非表示にする</string>
<string name="revanced_hide_shorts_save_sound_button_summary_off">音楽を保存します。</string>
<string name="revanced_hide_shorts_search_suggestions_title">検索候補を非表示</string>
<string name="revanced_hide_shorts_search_suggestions_summary_on">検索候補が非表示になります</string>
<string name="revanced_hide_shorts_search_suggestions_summary_off">検索候補が表示されます</string>
<string name="revanced_hide_shorts_stickers_title">ステッカーを隠す</string>
<string name="revanced_hide_shorts_stickers_summary_on">ステッカーを非表示</string>
<string name="revanced_hide_shorts_stickers_summary_off">ステッカーを表示</string>
<string name="revanced_hide_shorts_like_button_title">「いいね」ボタンを隠す</string>
<string name="revanced_hide_shorts_like_button_summary_on">Like button is hidden</string>
<string name="revanced_hide_shorts_like_button_summary_off">いいねボタンが表示されます</string>

View File

@@ -35,8 +35,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
<patch id="misc.checks.BaseCheckEnvironmentPatch">
<string name="revanced_check_environment_failed_title">확인에 실패함</string>
<string name="revanced_check_environment_dialog_open_official_source_button">공식 홈페이지 열기</string>
<string name="revanced_check_environment_dialog_ignore_button">무시</string>
<string name="revanced_check_environment_failed_message">&lt;h5&gt;이 앱은 사용자가 패치하지 않은 것 같습니다.&lt;/h5&gt;&lt;br&gt;이 앱은 제대로 작동하지 않을 수 있으며, &lt;b&gt;사용 시 해롭거나 심지어 위험할 수도 있습니다&lt;/b&gt;.&lt;br&gt;&lt;br&gt;이러한 확인은 이 앱이 사전 패치되었거나 다른 사람에게서 얻은 것임을 의미합니다:&lt;br&gt;&lt;br&gt;&lt;small&gt;%1$s&lt;/small&gt;&lt;br&gt;검증되고 안전한 앱을 사용하고 있는지 확인하려면 &lt;b&gt;이 앱을 제거하고 직접 패치하는 것&lt;/b&gt;을 강력히 권장합니다.&lt;p&gt;&lt;br&gt;이 경고를 무시하면 두 번만 표시됩니다.</string>
<string name="revanced_check_environment_dialog_ignore_button">닫기</string>
<string name="revanced_check_environment_failed_message">&lt;h5&gt;이 앱은 사용자가 패치하지 않은 것 같습니다.&lt;/h5&gt;&lt;br&gt;이 앱은 제대로 작동하지 않을 수 있으며, &lt;b&gt;사용 시 해롭거나 심지어 위험할 수도 있습니다&lt;/b&gt;.&lt;br&gt;&lt;br&gt;이러한 확인은 이 앱이 사전 패치되었거나 다른 사람으로부터 받은 것임을 의미합니다:&lt;br&gt;&lt;br&gt;&lt;small&gt;%1$s&lt;/small&gt;&lt;br&gt;검증되고 안전한 앱을 사용하고 있는지 확인하려면 &lt;b&gt;이 앱을 제거하고 직접 패치하는 것&lt;/b&gt;을 강력히 권장합니다.&lt;p&gt;&lt;br&gt;이 경고 두 번만 표시됩니다.</string>
<string name="revanced_check_environment_not_same_patching_device">다른 기기에서 패치됨</string>
<string name="revanced_check_environment_manager_not_expected_installer">ReVanced Manager에 의해 설치되지 않음</string>
<string name="revanced_check_environment_not_near_patch_time">10분 이상 전에 패치됨</string>
@@ -148,6 +148,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_channel_guidelines_title">채널 가이드라인 숨기기</string>
<string name="revanced_hide_channel_guidelines_summary_on">채널 가이드라인이 숨겨집니다</string>
<string name="revanced_hide_channel_guidelines_summary_off">채널 가이드라인이 표시됩니다</string>
<string name="revanced_hide_chips_shelf_title">더 많은 주제 탐색 선반 숨기기</string>
<string name="revanced_hide_chips_shelf_summary_on">더 많은 주제 탐색 선반이 숨겨집니다</string>
<string name="revanced_hide_chips_shelf_summary_off">더 많은 주제 탐색 선반이 표시됩니다</string>
<string name="revanced_hide_expandable_chip_title">펼쳐볼 수 있는 정보 숨기기</string>
<string name="revanced_hide_expandable_chip_summary_on">썸네일 하단에서 다음 정보들이 숨겨집니다:\n동영상 설명, 챕터, 주요 순간, 스크립트,\n재생목록의 동영상, 이 동영상에 나온 제품</string>
<string name="revanced_hide_expandable_chip_summary_off">썸네일 하단에서 다음 정보들이 표시됩니다:\n동영상 설명, 챕터, 주요 순간, 스크립트,\n재생목록의 동영상, 이 동영상에 나온 제품</string>
@@ -208,9 +211,6 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_artist_cards_title">아티스트 카드 숨기기</string>
<string name="revanced_hide_artist_cards_summary_on">아티스트 카드가 숨겨집니다</string>
<string name="revanced_hide_artist_cards_summary_off">아티스트 카드가 표시됩니다</string>
<string name="revanced_hide_chips_shelf_title">더 많은 주제 탐색 선반 숨기기</string>
<string name="revanced_hide_chips_shelf_summary_on">더 많은 주제 탐색 선반이 숨겨집니다</string>
<string name="revanced_hide_chips_shelf_summary_off">더 많은 주제 탐색 선반이 표시됩니다</string>
<string name="revanced_hide_attributes_section_title">속성 섹션 숨기기</string>
<string name="revanced_hide_attributes_section_summary_on">게임 섹션, 음악 섹션 그리고 동영상 속 장소 섹션이 숨겨집니다</string>
<string name="revanced_hide_attributes_section_summary_off">게임 섹션, 음악 섹션 그리고 동영상 속 장소 섹션이 표시됩니다</string>
@@ -459,8 +459,8 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_subscriptions_button_summary_off">구독 버튼이 표시됩니다</string>
<!-- 'Notifications' should be translated using the same localized wording YouTube displays the tab. -->
<string name="revanced_switch_create_with_notifications_button_title">만들기 버튼과 알림 버튼 위치 교환하기</string>
<string name="revanced_switch_create_with_notifications_button_summary_on">만들기 버튼과 알림 버튼의 위치를 교환합니다\n\n알려진 문제점:\n• 이 설정을 비활성화하면 서버에서 광고 필터에 등록되지 않은 광고(Shorts 광고)가 로드됩니다\n• 이 설정을 활성화하면 일부 광고가 강제로 숨겨집니다 (동영상 광고, 일반 레이아웃 광고)\n• 광고 설정에 있는 일부 설정들을 비활성화하려면 이 설정도 비활성화해야 합니다</string>
<string name="revanced_switch_create_with_notifications_button_summary_off">만들기 버튼과 알림 버튼 위치를 교환하지 않습니다\n\n알려진 문제점:\n• 이 설정을 비활성화하면 서버에서 광고 필터에 등록되지 않은 광고(Shorts 광고)가 로드됩니다\n• 이 설정을 활성화하면 일부 광고가 강제로 숨겨집니다 (동영상 광고, 일반 레이아웃 광고)\n• 광고 설정에 있는 일부 설정들을 비활성화하려면 이 설정도 비활성화해야 합니다</string>
<string name="revanced_switch_create_with_notifications_button_summary_on">만들기 버튼과 알림 버튼의 위치를 교환합니다\n\n알려진 문제점:\n• 동영상 광고가 강제로 숨겨집니다</string>
<string name="revanced_switch_create_with_notifications_button_summary_off">만들기 버튼과 알림 버튼 위치를 교환하지 않습니다\n\n알려진 문제점:\n• 서버에서 더 많은 광고가 로드될 수 있습니다\n• Shorts 광고가 더 이상 숨겨지지 않습니다</string>
<string name="revanced_hide_navigation_button_labels_title">하단바 버튼 라벨 숨기기</string>
<string name="revanced_hide_navigation_button_labels_summary_on">라벨이 숨겨집니다</string>
<string name="revanced_hide_navigation_button_labels_summary_off">라벨이 표시됩니다</string>
@@ -628,15 +628,15 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_shorts_location_label_title">위치 라벨 숨기기</string>
<string name="revanced_hide_shorts_location_label_summary_on">위치 라벨이 숨겨집니다</string>
<string name="revanced_hide_shorts_location_label_summary_off">위치 라벨이 표시됩니다</string>
<string name="revanced_hide_shorts_save_sound_button_title">(재생목록에) 음악 저장 버튼 숨기기</string>
<string name="revanced_hide_shorts_save_sound_button_summary_on">(재생목록에) 음악 저장 버튼이 숨겨집니다</string>
<string name="revanced_hide_shorts_save_sound_button_summary_off">(재생목록에) 음악 저장 버튼이 표시됩니다</string>
<string name="revanced_hide_shorts_use_this_sound_button_title">\'이 사운드 사용\' 버튼 숨기기</string>
<string name="revanced_hide_shorts_use_this_sound_button_summary_on">\'이 사운드 사용\' 버튼이 숨겨집니다</string>
<string name="revanced_hide_shorts_use_this_sound_button_summary_off">\'이 사운드 사용\' 버튼이 표시됩니다</string>
<string name="revanced_hide_shorts_save_sound_button_title">음악 저장 버튼 숨기기</string>
<string name="revanced_hide_shorts_save_sound_button_summary_on">음악 저장 버튼이 숨겨집니다</string>
<string name="revanced_hide_shorts_save_sound_button_summary_off">음악 저장 버튼이 표시됩니다</string>
<string name="revanced_hide_shorts_search_suggestions_title">검색 추천 숨기기</string>
<string name="revanced_hide_shorts_search_suggestions_summary_on">검색 추천이 숨겨집니다</string>
<string name="revanced_hide_shorts_search_suggestions_summary_off">검색 추천이 표시됩니다</string>
<string name="revanced_hide_shorts_stickers_title">스티커 숨기기</string>
<string name="revanced_hide_shorts_stickers_summary_on">스티커가 숨겨집니다</string>
<string name="revanced_hide_shorts_stickers_summary_off">스티커가 표시됩니다</string>
<string name="revanced_hide_shorts_like_button_title">좋아요 버튼 숨기기</string>
<string name="revanced_hide_shorts_like_button_summary_on">좋아요 버튼이 숨겨집니다</string>
<string name="revanced_hide_shorts_like_button_summary_off">좋아요 버튼이 표시됩니다</string>

View File

@@ -146,6 +146,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_channel_guidelines_title">Skjul kanalretningslinjer</string>
<string name="revanced_hide_channel_guidelines_summary_on">Kanal retningslinjer er skjult</string>
<string name="revanced_hide_channel_guidelines_summary_off">Kanal retningslinjer er vist</string>
<string name="revanced_hide_chips_shelf_title">Skjul brikker hylle</string>
<string name="revanced_hide_chips_shelf_summary_on">Chips shelf er gjemt</string>
<string name="revanced_hide_chips_shelf_summary_off">Chips shelf er vist</string>
<string name="revanced_hide_expandable_chip_title">Skjul ekspanderbar chip under videoer</string>
<string name="revanced_hide_expandable_chip_summary_on">Utvidbare brikker er skjult</string>
<string name="revanced_hide_expandable_chip_summary_off">Utvidbare brikker vises</string>
@@ -206,9 +209,6 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_artist_cards_title">Skjul artistkort</string>
<string name="revanced_hide_artist_cards_summary_on">Kunstnerkort er skjult</string>
<string name="revanced_hide_artist_cards_summary_off">Artistkort vises</string>
<string name="revanced_hide_chips_shelf_title">Skjul brikker hylle</string>
<string name="revanced_hide_chips_shelf_summary_on">Chips shelf er gjemt</string>
<string name="revanced_hide_chips_shelf_summary_off">Chips shelf er vist</string>
<string name="revanced_hide_attributes_section_title">Skjul attributter del</string>
<string name="revanced_hide_attributes_section_summary_on">\'Utvalgte steder\', leker og musikkseksjoner er skjult</string>
<string name="revanced_hide_attributes_section_summary_off">\'Utvalgte steder\', spill og musikk seksjoner av spill blir vist</string>
@@ -623,15 +623,15 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_shorts_location_label_title">Skjul merkelapp for plassering</string>
<string name="revanced_hide_shorts_location_label_summary_on">Posisjonsetiketten er skjult</string>
<string name="revanced_hide_shorts_location_label_summary_off">Posisjonsetikett vises</string>
<string name="revanced_hide_shorts_save_sound_button_title">Skjul lyd fra spilleliste knapp</string>
<string name="revanced_hide_shorts_save_sound_button_summary_on">Lagre lyd i spillelisten er skjult</string>
<string name="revanced_hide_shorts_save_sound_button_summary_off">Lagre lyd i spilleliste vises</string>
<string name="revanced_hide_shorts_use_this_sound_button_title">Skjul bruk av denne lydknappen</string>
<string name="revanced_hide_shorts_use_this_sound_button_summary_on">Bruk denne lydknappen er skjult</string>
<string name="revanced_hide_shorts_use_this_sound_button_summary_off">Bruk denne lydknappen vises</string>
<string name="revanced_hide_shorts_save_sound_button_title">Skjul \"Lagre musikk\"-knapp</string>
<string name="revanced_hide_shorts_save_sound_button_summary_on">Lagre musikk er skjult</string>
<string name="revanced_hide_shorts_save_sound_button_summary_off">Lagre musikk vises</string>
<string name="revanced_hide_shorts_search_suggestions_title">Skjul søkeforslag</string>
<string name="revanced_hide_shorts_search_suggestions_summary_on">Søkeforslag er skjult</string>
<string name="revanced_hide_shorts_search_suggestions_summary_off">Søk forslag vises</string>
<string name="revanced_hide_shorts_stickers_title">Skjul klistremerker</string>
<string name="revanced_hide_shorts_stickers_summary_on">Klistremerker er skjult</string>
<string name="revanced_hide_shorts_stickers_summary_off">Klistremerker vises</string>
<string name="revanced_hide_shorts_like_button_title">Skjul som knappen</string>
<string name="revanced_hide_shorts_like_button_summary_on">Lik knappen er skjult</string>
<string name="revanced_hide_shorts_like_button_summary_off">Liker-knappen vises</string>

View File

@@ -148,6 +148,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_channel_guidelines_title">Kanaalrichtlijnen verbergen</string>
<string name="revanced_hide_channel_guidelines_summary_on">Kanaalrichtlijnen zijn verborgen</string>
<string name="revanced_hide_channel_guidelines_summary_off">Kanaalrichtlijnen worden getoond</string>
<string name="revanced_hide_chips_shelf_title">Verberg chips plank</string>
<string name="revanced_hide_chips_shelf_summary_on">Chips plank is verborgen</string>
<string name="revanced_hide_chips_shelf_summary_off">Chips plank wordt weergegeven</string>
<string name="revanced_hide_expandable_chip_title">Uitbreidbare chip verbergen onder video\'s</string>
<string name="revanced_hide_expandable_chip_summary_on">Uitklapbare chips zijn verborgen</string>
<string name="revanced_hide_expandable_chip_summary_off">Uitklapbare chips worden getoond</string>
@@ -208,9 +211,6 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_artist_cards_title">Verberg artiest kaarten</string>
<string name="revanced_hide_artist_cards_summary_on">Kunstenaartjes zijn verborgen</string>
<string name="revanced_hide_artist_cards_summary_off">Kunstenaarkaarten worden weergegeven</string>
<string name="revanced_hide_chips_shelf_title">Verberg chips plank</string>
<string name="revanced_hide_chips_shelf_summary_on">Chips plank is verborgen</string>
<string name="revanced_hide_chips_shelf_summary_off">Chips plank wordt weergegeven</string>
<string name="revanced_hide_attributes_section_title">Attributensectie verbergen</string>
<string name="revanced_hide_attributes_section_summary_on">\'Aanbevolen plaatsen\', Games en Muziek secties zijn verborgen</string>
<string name="revanced_hide_attributes_section_summary_off">\'Aanbevolen plaatsen\', spellen en Muziek secties worden weergegeven</string>
@@ -628,15 +628,15 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_shorts_location_label_title">Verberg locatie label</string>
<string name="revanced_hide_shorts_location_label_summary_on">Locatie label is verborgen</string>
<string name="revanced_hide_shorts_location_label_summary_off">Locatie label wordt weergegeven</string>
<string name="revanced_hide_shorts_save_sound_button_title">Geluid opslaan naar afspeellijst knop verbergen</string>
<string name="revanced_hide_shorts_save_sound_button_summary_on">Geluid opslaan in afspeellijst is verborgen</string>
<string name="revanced_hide_shorts_save_sound_button_summary_off">Geluid opslaan in de afspeellijst wordt weergegeven</string>
<string name="revanced_hide_shorts_use_this_sound_button_title">Gebruik deze geluidsknop verbergen</string>
<string name="revanced_hide_shorts_use_this_sound_button_summary_on">Gebruik van deze geluidsknop is verborgen</string>
<string name="revanced_hide_shorts_use_this_sound_button_summary_off">Gebruik deze geluidsknop wordt weergegeven</string>
<string name="revanced_hide_shorts_save_sound_button_title">Verberg bewaar muziek knop</string>
<string name="revanced_hide_shorts_save_sound_button_summary_on">Muziek opslaan is verborgen</string>
<string name="revanced_hide_shorts_save_sound_button_summary_off">Muziek opslaan wordt weergegeven</string>
<string name="revanced_hide_shorts_search_suggestions_title">Zoeksuggesties verbergen</string>
<string name="revanced_hide_shorts_search_suggestions_summary_on">Zoeksuggesties zijn verborgen</string>
<string name="revanced_hide_shorts_search_suggestions_summary_off">Zoeksuggesties worden getoond</string>
<string name="revanced_hide_shorts_stickers_title">Verberg stickers</string>
<string name="revanced_hide_shorts_stickers_summary_on">Stickers zijn verborgen</string>
<string name="revanced_hide_shorts_stickers_summary_off">Stickers worden getoond</string>
<string name="revanced_hide_shorts_like_button_title">Verberg leuk-knop</string>
<string name="revanced_hide_shorts_like_button_summary_on">Vind-ik-leuk-knop is verborgen</string>
<string name="revanced_hide_shorts_like_button_summary_off">Vind-ik-leuk-knop wordt weergegeven</string>

View File

@@ -148,6 +148,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_channel_guidelines_title">Ukryj wytyczne kanału</string>
<string name="revanced_hide_channel_guidelines_summary_on">Wytyczne kanału są ukryte</string>
<string name="revanced_hide_channel_guidelines_summary_off">Wytyczne kanału są wyświetlane</string>
<string name="revanced_hide_chips_shelf_title">Ukryj półkę chipów</string>
<string name="revanced_hide_chips_shelf_summary_on">Półka czipów jest ukryta</string>
<string name="revanced_hide_chips_shelf_summary_off">Półka na czipy jest pokazana</string>
<string name="revanced_hide_expandable_chip_title">Ukryj rozszerzalny chipy pod filmami</string>
<string name="revanced_hide_expandable_chip_summary_on">Rozwijalne chipy są ukryte</string>
<string name="revanced_hide_expandable_chip_summary_off">Rozwijalne chipy są wyświetlane</string>
@@ -208,9 +211,6 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_artist_cards_title">Ukryj karty artystów</string>
<string name="revanced_hide_artist_cards_summary_on">Karty wykonawcy są ukryte</string>
<string name="revanced_hide_artist_cards_summary_off">Karty artystów są wyświetlane</string>
<string name="revanced_hide_chips_shelf_title">Ukryj półkę chipów</string>
<string name="revanced_hide_chips_shelf_summary_on">Półka czipów jest ukryta</string>
<string name="revanced_hide_chips_shelf_summary_off">Półka na czipy jest pokazana</string>
<string name="revanced_hide_attributes_section_title">Ukryj sekcję atrybutów</string>
<string name="revanced_hide_attributes_section_summary_on">Sekcje \'Polecane miejsca\', gry i muzyka są ukryte</string>
<string name="revanced_hide_attributes_section_summary_off">Wyświetlane są sekcje \'Polecane miejsca\', gry i muzyka</string>
@@ -628,15 +628,15 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_shorts_location_label_title">Ukryj etykietę lokalizacji</string>
<string name="revanced_hide_shorts_location_label_summary_on">Etykieta lokalizacji jest ukryta</string>
<string name="revanced_hide_shorts_location_label_summary_off">Etykieta lokalizacji jest wyświetlana</string>
<string name="revanced_hide_shorts_save_sound_button_title">Ukryj dźwięk do przycisku playlisty</string>
<string name="revanced_hide_shorts_save_sound_button_summary_on">Zapisz dźwięk na liście odtwarzania jest ukryty</string>
<string name="revanced_hide_shorts_save_sound_button_summary_off">Zapisz dźwięk na liście odtwarzania</string>
<string name="revanced_hide_shorts_use_this_sound_button_title">Ukryj ten przycisk dźwięku</string>
<string name="revanced_hide_shorts_use_this_sound_button_summary_on">Użyj tego przycisku dźwięku jest ukryty</string>
<string name="revanced_hide_shorts_use_this_sound_button_summary_off">Użyj tego przycisku dźwięku jest pokazany</string>
<string name="revanced_hide_shorts_save_sound_button_title">Ukryj przycisk zapisu muzyki</string>
<string name="revanced_hide_shorts_save_sound_button_summary_on">Zapisz muzykę ukrytą</string>
<string name="revanced_hide_shorts_save_sound_button_summary_off">Zapisz muzykę</string>
<string name="revanced_hide_shorts_search_suggestions_title">Ukryj sugestie wyszukiwania</string>
<string name="revanced_hide_shorts_search_suggestions_summary_on">Sugestie wyszukiwania są ukryte</string>
<string name="revanced_hide_shorts_search_suggestions_summary_off">Sugestie wyszukiwania są wyświetlane</string>
<string name="revanced_hide_shorts_stickers_title">Ukryj naklejki</string>
<string name="revanced_hide_shorts_stickers_summary_on">Naklejki są ukryte</string>
<string name="revanced_hide_shorts_stickers_summary_off">Naklejki są wyświetlane</string>
<string name="revanced_hide_shorts_like_button_title">Ukryj przycisk polubień</string>
<string name="revanced_hide_shorts_like_button_summary_on">Przycisk polubienia jest ukryty</string>
<string name="revanced_hide_shorts_like_button_summary_off">Przycisk polubienia jest pokazany</string>

View File

@@ -148,6 +148,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_channel_guidelines_title">Ocultar diretrizes de canal</string>
<string name="revanced_hide_channel_guidelines_summary_on">Diretrizes de canal está oculto</string>
<string name="revanced_hide_channel_guidelines_summary_off">Diretrizes de canal não estão ocultos</string>
<string name="revanced_hide_chips_shelf_title">Ocultar prateleira de cartões</string>
<string name="revanced_hide_chips_shelf_summary_on">Prateleira de cartões estão ocultas</string>
<string name="revanced_hide_chips_shelf_summary_off">Prateleira de cartões não estão ocultas</string>
<string name="revanced_hide_expandable_chip_title">Ocultar cartão expansível em vídeos</string>
<string name="revanced_hide_expandable_chip_summary_on">Cartão expansível está oculto</string>
<string name="revanced_hide_expandable_chip_summary_off">Cartão expansível não está oculto</string>
@@ -208,9 +211,6 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_artist_cards_title">Ocultar cartões do artista</string>
<string name="revanced_hide_artist_cards_summary_on">Cartões do artista estão ocultas</string>
<string name="revanced_hide_artist_cards_summary_off">Cartões do artista não estão ocultas</string>
<string name="revanced_hide_chips_shelf_title">Ocultar prateleira de cartões</string>
<string name="revanced_hide_chips_shelf_summary_on">Prateleira de cartões estão ocultas</string>
<string name="revanced_hide_chips_shelf_summary_off">Prateleira de cartões não estão ocultas</string>
<string name="revanced_hide_attributes_section_title">Ocultar seção de atributos</string>
<string name="revanced_hide_attributes_section_summary_on">\'Locais em destaque\', Seções de Jogos e Músicas estão ocultas</string>
<string name="revanced_hide_attributes_section_summary_off">\'Locais em destaque\', Seções de Jogos e Músicas são mostrados</string>
@@ -628,15 +628,15 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_shorts_location_label_title">Ocultar rótulo de localização</string>
<string name="revanced_hide_shorts_location_label_summary_on">Rótulo de localização está oculto</string>
<string name="revanced_hide_shorts_location_label_summary_off">Rótulo de localização é mostrado</string>
<string name="revanced_hide_shorts_save_sound_button_title">Ocultar botão salvar música na lista de reprodução</string>
<string name="revanced_hide_shorts_save_sound_button_summary_on">Salvar música na lista de reprodução está oculta</string>
<string name="revanced_hide_shorts_save_sound_button_summary_off">Salvar música na lista de reprodução não está oculta</string>
<string name="revanced_hide_shorts_use_this_sound_button_title">Ocultar botão Usar este som</string>
<string name="revanced_hide_shorts_use_this_sound_button_summary_on">Botão Usar este som está oculto</string>
<string name="revanced_hide_shorts_use_this_sound_button_summary_off">Botão Usar este som não está oculto</string>
<string name="revanced_hide_shorts_save_sound_button_title">Ocultar o botão de salvar música</string>
<string name="revanced_hide_shorts_save_sound_button_summary_on">Salvar música está oculto</string>
<string name="revanced_hide_shorts_save_sound_button_summary_off">Salvar música está visível</string>
<string name="revanced_hide_shorts_search_suggestions_title">Ocultar sugestões de busca</string>
<string name="revanced_hide_shorts_search_suggestions_summary_on">Sugestões de pesquisa estão ocultas</string>
<string name="revanced_hide_shorts_search_suggestions_summary_off">Sugestões de pesquisa são mostradas</string>
<string name="revanced_hide_shorts_stickers_title">Ocultar adesivos</string>
<string name="revanced_hide_shorts_stickers_summary_on">Adesivos estão ocultos</string>
<string name="revanced_hide_shorts_stickers_summary_off">Adesivos estão visíveis</string>
<string name="revanced_hide_shorts_like_button_title">Ocultar botão gostei</string>
<string name="revanced_hide_shorts_like_button_summary_on">Botão gostei está oculto</string>
<string name="revanced_hide_shorts_like_button_summary_off">Botão gostei não está oculto</string>

View File

@@ -146,6 +146,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_channel_guidelines_title">Esconder diretrizes do canal</string>
<string name="revanced_hide_channel_guidelines_summary_on">Diretrizes do canal estão escondidas</string>
<string name="revanced_hide_channel_guidelines_summary_off">Diretrizes do canal são visíveis</string>
<string name="revanced_hide_chips_shelf_title">Esconder categoria de chips</string>
<string name="revanced_hide_chips_shelf_summary_on">Categoria de chips está escondida</string>
<string name="revanced_hide_chips_shelf_summary_off">Categoria de chips está visível</string>
<string name="revanced_hide_expandable_chip_title">Esconder chip expansível nos vídeos</string>
<string name="revanced_hide_expandable_chip_summary_on">Chips expansíveis estão escondidos</string>
<string name="revanced_hide_expandable_chip_summary_off">Chips expansíveis são visíveis</string>
@@ -206,9 +209,6 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_artist_cards_title">Esconder cartões de artista</string>
<string name="revanced_hide_artist_cards_summary_on">Cartões do artista estão escondidos</string>
<string name="revanced_hide_artist_cards_summary_off">Cartões do artista são visíveis</string>
<string name="revanced_hide_chips_shelf_title">Esconder categoria de chips</string>
<string name="revanced_hide_chips_shelf_summary_on">Categoria de chips está escondida</string>
<string name="revanced_hide_chips_shelf_summary_off">Categoria de chips está visível</string>
<string name="revanced_hide_attributes_section_title">Ocultar secção de atributos</string>
<string name="revanced_hide_attributes_section_summary_on">\'Lugares de destaque\', secções de Jogos e Músicas estão ocultas</string>
<string name="revanced_hide_attributes_section_summary_off">\'Lugares de destaque\', secções de Jogos e Músicas são mostrados</string>
@@ -625,15 +625,15 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_shorts_location_label_title">Ocultar rótulo de localização</string>
<string name="revanced_hide_shorts_location_label_summary_on">Rótulo de localização está oculto</string>
<string name="revanced_hide_shorts_location_label_summary_off">Rótulo de localização é mostrado</string>
<string name="revanced_hide_shorts_save_sound_button_title">Esconder o som no botão de playlist</string>
<string name="revanced_hide_shorts_save_sound_button_summary_on">Salvar som para playlist está escondida</string>
<string name="revanced_hide_shorts_save_sound_button_summary_off">Salvar som para lista de reprodução</string>
<string name="revanced_hide_shorts_use_this_sound_button_title">Ocultar usar este botão de som</string>
<string name="revanced_hide_shorts_use_this_sound_button_summary_on">Usar este botão de som está oculto</string>
<string name="revanced_hide_shorts_use_this_sound_button_summary_off">Usar este botão de som é mostrado</string>
<string name="revanced_hide_shorts_save_sound_button_title">Ocultar botão salvar música</string>
<string name="revanced_hide_shorts_save_sound_button_summary_on">Salvar música está oculta</string>
<string name="revanced_hide_shorts_save_sound_button_summary_off">Salvar música é mostrado</string>
<string name="revanced_hide_shorts_search_suggestions_title">Ocultar sugestões de busca</string>
<string name="revanced_hide_shorts_search_suggestions_summary_on">Sugestões de pesquisa estão ocultas</string>
<string name="revanced_hide_shorts_search_suggestions_summary_off">Sugestões de pesquisa são mostradas</string>
<string name="revanced_hide_shorts_stickers_title">Ocultar stickers</string>
<string name="revanced_hide_shorts_stickers_summary_on">Adesivos estão ocultos</string>
<string name="revanced_hide_shorts_stickers_summary_off">Stickers são mostrados</string>
<string name="revanced_hide_shorts_like_button_title">Esconder botão \"curtir\"</string>
<string name="revanced_hide_shorts_like_button_summary_on">O botão curtir está escondido</string>
<string name="revanced_hide_shorts_like_button_summary_off">O botão curtir está visível</string>

View File

@@ -147,6 +147,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_channel_guidelines_title">Ascunde ghidurile canalelor</string>
<string name="revanced_hide_channel_guidelines_summary_on">Regulile canalului sunt ascunse</string>
<string name="revanced_hide_channel_guidelines_summary_off">Ghidul canalului este afișat</string>
<string name="revanced_hide_chips_shelf_title">Ascunde raftul cipurilor</string>
<string name="revanced_hide_chips_shelf_summary_on">Raftul cipurilor este ascuns</string>
<string name="revanced_hide_chips_shelf_summary_off">Se afișează raftul cipurilor</string>
<string name="revanced_hide_expandable_chip_title">Ascunde cipul expandabil sub videoclipuri</string>
<string name="revanced_hide_expandable_chip_summary_on">Cipurile expandabile sunt ascunse</string>
<string name="revanced_hide_expandable_chip_summary_off">Cipurile expandabile sunt afișate</string>
@@ -207,9 +210,6 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_artist_cards_title">Ascunde cărțile artistului</string>
<string name="revanced_hide_artist_cards_summary_on">Cartonaşele artistice sunt ascunse</string>
<string name="revanced_hide_artist_cards_summary_off">Cardurile artistului sunt afișate</string>
<string name="revanced_hide_chips_shelf_title">Ascunde raftul cipurilor</string>
<string name="revanced_hide_chips_shelf_summary_on">Raftul cipurilor este ascuns</string>
<string name="revanced_hide_chips_shelf_summary_off">Se afișează raftul cipurilor</string>
<string name="revanced_hide_attributes_section_title">Ascunde secțiunea atributelor</string>
<string name="revanced_hide_attributes_section_summary_on">Secțiunile de jocuri și muzică sunt ascunse</string>
<string name="revanced_hide_attributes_section_summary_off">\'Locuri recomandate\', secțiunile de jocuri și muzică sunt afișate</string>
@@ -627,15 +627,15 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_shorts_location_label_title">Ascunde eticheta locației</string>
<string name="revanced_hide_shorts_location_label_summary_on">Eticheta locației este ascunsă</string>
<string name="revanced_hide_shorts_location_label_summary_off">Eticheta locației este afișată</string>
<string name="revanced_hide_shorts_save_sound_button_title">Ascunde sunetul de salvare în butonul de redare</string>
<string name="revanced_hide_shorts_save_sound_button_summary_on">Salvarea sunetului în lista de redare este ascunsă</string>
<string name="revanced_hide_shorts_save_sound_button_summary_off">Salvarea sunetului în lista de redare este afișată</string>
<string name="revanced_hide_shorts_use_this_sound_button_title">Ascunde butonul de sunet</string>
<string name="revanced_hide_shorts_use_this_sound_button_summary_on">Utilizaţi acest buton de sunet este ascuns</string>
<string name="revanced_hide_shorts_use_this_sound_button_summary_off">Utilizaţi acest buton de sunet este afișat</string>
<string name="revanced_hide_shorts_save_sound_button_title">Ascunde butonul de salvare a muzicii</string>
<string name="revanced_hide_shorts_save_sound_button_summary_on">Salvarea muzicii este ascunsă</string>
<string name="revanced_hide_shorts_save_sound_button_summary_off">Salvarea muzicii este afișată</string>
<string name="revanced_hide_shorts_search_suggestions_title">Ascunde sugestiile de căutare</string>
<string name="revanced_hide_shorts_search_suggestions_summary_on">Sugestiile de căutare sunt ascunse</string>
<string name="revanced_hide_shorts_search_suggestions_summary_off">Sugestiile de căutare sunt afișate</string>
<string name="revanced_hide_shorts_stickers_title">Ascunde autocolante</string>
<string name="revanced_hide_shorts_stickers_summary_on">Stickerele sunt ascunse</string>
<string name="revanced_hide_shorts_stickers_summary_off">Stickerele sunt afișate</string>
<string name="revanced_hide_shorts_like_button_title">Ascunde butonul similar</string>
<string name="revanced_hide_shorts_like_button_summary_on">Butonul Like este ascuns</string>
<string name="revanced_hide_shorts_like_button_summary_off">Butonul Like este afișat</string>

View File

@@ -148,6 +148,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_channel_guidelines_title">Правила канала</string>
<string name="revanced_hide_channel_guidelines_summary_on">Правила канала в комментариях скрыты</string>
<string name="revanced_hide_channel_guidelines_summary_off">Правила канала в комментариях отображены</string>
<string name="revanced_hide_chips_shelf_title">Секция тегов видео</string>
<string name="revanced_hide_chips_shelf_summary_on">Секция тегов похожих видео под плеером скрыта</string>
<string name="revanced_hide_chips_shelf_summary_off">Секция тегов похожих видео под плеером отображена</string>
<string name="revanced_hide_expandable_chip_title">Расширяемые фрагменты</string>
<string name="revanced_hide_expandable_chip_summary_on">Расширяемые фрагменты под видео скрыты</string>
<string name="revanced_hide_expandable_chip_summary_off">Расширяемые фрагменты под видео отображены</string>
@@ -208,9 +211,6 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_artist_cards_title">Карточки исполнителей</string>
<string name="revanced_hide_artist_cards_summary_on">Карточки исполнителей скрыты</string>
<string name="revanced_hide_artist_cards_summary_off">Карточки исполнителей отображены</string>
<string name="revanced_hide_chips_shelf_title">Секция тегов видео</string>
<string name="revanced_hide_chips_shelf_summary_on">Секция тегов похожих видео под плеером скрыта</string>
<string name="revanced_hide_chips_shelf_summary_off">Секция тегов похожих видео под плеером отображена</string>
<string name="revanced_hide_attributes_section_title">Разделы атрибутов</string>
<string name="revanced_hide_attributes_section_summary_on">Разделы \"Упомянутые или показанные места\", \"Игры\" и \"Музыка\" в описании видео скрыты</string>
<string name="revanced_hide_attributes_section_summary_off">Разделы \"Упомянутые или показанные места\", \"Игры\" и \"Музыка\" в описании видео отображены</string>
@@ -628,15 +628,15 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_shorts_location_label_title">Метка местоположения</string>
<string name="revanced_hide_shorts_location_label_summary_on">Метка местоположения в Shorts скрыта</string>
<string name="revanced_hide_shorts_location_label_summary_off">Метка местоположения в Shorts отображена</string>
<string name="revanced_hide_shorts_save_sound_button_title">Кнопка \"Сохранить звук в плейлист\"</string>
<string name="revanced_hide_shorts_save_sound_button_summary_on">Кнопка \"Сохранить звук в плейлист\" в Shorts скрыта</string>
<string name="revanced_hide_shorts_save_sound_button_summary_off">Кнопка \"Сохранить звук в плейлист\" в Shorts отображена</string>
<string name="revanced_hide_shorts_use_this_sound_button_title">Кнопка \"Использовать этот звук\"</string>
<string name="revanced_hide_shorts_use_this_sound_button_summary_on">Кнопка \"Использовать этот звук\" скрыта</string>
<string name="revanced_hide_shorts_use_this_sound_button_summary_off">Кнопка \"Использовать этот звук\" отображена</string>
<string name="revanced_hide_shorts_save_sound_button_title">Кнопка сохранения музыки</string>
<string name="revanced_hide_shorts_save_sound_button_summary_on">Кнопка сохранения музыки скрыта</string>
<string name="revanced_hide_shorts_save_sound_button_summary_off">Кнопка сохранения музыки отображена</string>
<string name="revanced_hide_shorts_search_suggestions_title">Поисковые подсказки</string>
<string name="revanced_hide_shorts_search_suggestions_summary_on">Поисковые подсказки скрыты</string>
<string name="revanced_hide_shorts_search_suggestions_summary_off">Поисковые подсказки отображены</string>
<string name="revanced_hide_shorts_stickers_title">Стикеры</string>
<string name="revanced_hide_shorts_stickers_summary_on">Стикеры скрыты</string>
<string name="revanced_hide_shorts_stickers_summary_off">Стикеры отображены</string>
<string name="revanced_hide_shorts_like_button_title">Кнопка \"Лайк\"</string>
<string name="revanced_hide_shorts_like_button_summary_on">Кнопка \"Лайк\" в Shorts скрыта</string>
<string name="revanced_hide_shorts_like_button_summary_off">Кнопка \"Лайк\" в Shorts отображена</string>
@@ -1147,9 +1147,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_spoof_video_streams_ios_force_avc_no_hardware_vp9_summary_on">На вашем устройстве нет аппаратного декодирования VP9, и эта настройка всегда включена при активной подмене клиента</string>
<string name="revanced_spoof_video_streams_ios_force_avc_user_dialog_message">Включение данной настройки может улучшить время работы батареи и исправить задержки воспроизведения.\n\nAVC имеет максимальное разрешение 1080p, воспроизведение видео будет использовать больше интернет данных в сравнении с VP9 или AV1.</string>
<string name="revanced_spoof_video_streams_about_ios_title">Побочные эффекты подмены на iOS</string>
<string name="revanced_spoof_video_streams_about_ios_summary">• Фильмы или платные видео не могут проигрывать\n• Livestreams начало с начала\n• Видео могут закончиться 1 секунду рано\n• Нет аудио кодека</string>
<string name="revanced_spoof_video_streams_about_ios_summary">• Фильмы или платные видео могут не воспроизводиться\n• Прямые трансляции начинаются с самого начала\n• Видео может закончиться на 1 секунду раньше\n• Отсутствует аудиокодек opus</string>
<string name="revanced_spoof_video_streams_about_android_vr_title">Побочные эффекты подмены на Android VR</string>
<string name="revanced_spoof_video_streams_about_android_vr_summary">Отсутствует меню аудио дорожки\n• Стабильная громкость недоступна</string>
<string name="revanced_spoof_video_streams_about_android_vr_summary">Пункт меню \"Звуковая дорожка\" отсутствует\n• Пункт меню \"Постоянный уровень громкости\" недоступен</string>
</patch>
<!-- This patch is no longer used and these strings will soon be deleted. -->
<patch id="video.hdrbrightness.HDRBrightnessPatch">

View File

@@ -134,6 +134,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_channel_guidelines_title">Skryť pokyny pre kanál</string>
<string name="revanced_hide_channel_guidelines_summary_on">Pokyny kanála sú skryté</string>
<string name="revanced_hide_channel_guidelines_summary_off">Zobrazia sa vodítka kanálov</string>
<string name="revanced_hide_chips_shelf_title">Skryť poličku na žetóny</string>
<string name="revanced_hide_chips_shelf_summary_on">Polica na žetóny je skrytá</string>
<string name="revanced_hide_chips_shelf_summary_off">Je zobrazená polica na hranolky</string>
<string name="revanced_hide_expandable_chip_title">Skryť rozšíriteľný čip pod videami</string>
<string name="revanced_hide_expandable_chip_summary_on">Rozšíriteľné čipy sú skryté</string>
<string name="revanced_hide_expandable_chip_summary_off">Zobrazujú sa rozšíriteľné čipy</string>
@@ -194,9 +197,6 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_artist_cards_title">Skryť karty umelcov</string>
<string name="revanced_hide_artist_cards_summary_on">Karty umelcov sú skryté</string>
<string name="revanced_hide_artist_cards_summary_off">Zobrazia sa karty umelcov</string>
<string name="revanced_hide_chips_shelf_title">Skryť poličku na žetóny</string>
<string name="revanced_hide_chips_shelf_summary_on">Polica na žetóny je skrytá</string>
<string name="revanced_hide_chips_shelf_summary_off">Je zobrazená polica na hranolky</string>
<string name="revanced_hide_attributes_section_title">Skryť sekciu atribútov</string>
<string name="revanced_hide_attributes_section_summary_on">Sekcie \"Odporúčané miesta\", Hry a Hudba sú skryté</string>
<string name="revanced_hide_attributes_section_summary_off">Zobrazia sa sekcie \"Odporúčané miesta\", Hry a Hudba</string>
@@ -601,9 +601,6 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_shorts_location_label_title">Skryť štítok polohy</string>
<string name="revanced_hide_shorts_location_label_summary_on">Štítok miesta je skrytý</string>
<string name="revanced_hide_shorts_location_label_summary_off">Zobrazí sa štítok s umiestnením</string>
<string name="revanced_hide_shorts_save_sound_button_title">Tlačidlo Skryť uloženie zvuku do zoznamu skladieb</string>
<string name="revanced_hide_shorts_save_sound_button_summary_on">Uloženie zvuku do zoznamu skladieb je skryté</string>
<string name="revanced_hide_shorts_save_sound_button_summary_off">Zobrazí sa Uložiť zvuk do zoznamu skladieb</string>
<string name="revanced_hide_shorts_search_suggestions_title">Skryť návrhy vyhľadávania</string>
<string name="revanced_hide_shorts_search_suggestions_summary_on">Návrhy vyhľadávania sú skryté</string>
<string name="revanced_hide_shorts_search_suggestions_summary_off">Zobrazia sa návrhy vyhľadávania</string>

View File

@@ -148,6 +148,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_channel_guidelines_title">Sakrij smernice kanala</string>
<string name="revanced_hide_channel_guidelines_summary_on">Smernice kanala su skrivene</string>
<string name="revanced_hide_channel_guidelines_summary_off">Smernice kanala su prikazane</string>
<string name="revanced_hide_chips_shelf_title">Sakrij policu oznaka sličnih videa</string>
<string name="revanced_hide_chips_shelf_summary_on">Polica oznaka sličnih videa je skrivena</string>
<string name="revanced_hide_chips_shelf_summary_off">Polica oznaka sličnih videa je prikazana</string>
<string name="revanced_hide_expandable_chip_title">Sakrij proširivi deo ispod videa</string>
<string name="revanced_hide_expandable_chip_summary_on">Proširivi delovi su skriveni</string>
<string name="revanced_hide_expandable_chip_summary_off">Proširivi delovi su prikazani</string>
@@ -208,9 +211,6 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_artist_cards_title">Sakrij kartice izvođača</string>
<string name="revanced_hide_artist_cards_summary_on">Kartice izvođača su skrivene</string>
<string name="revanced_hide_artist_cards_summary_off">Kartice izvođača su prikazane</string>
<string name="revanced_hide_chips_shelf_title">Sakrij policu oznaka sličnih videa</string>
<string name="revanced_hide_chips_shelf_summary_on">Polica oznaka sličnih videa je skrivena</string>
<string name="revanced_hide_chips_shelf_summary_off">Polica oznaka sličnih videa je prikazana</string>
<string name="revanced_hide_attributes_section_title">Sakrij odeljak sa atributima</string>
<string name="revanced_hide_attributes_section_summary_on"> Odeljci „Istaknuta mesta”, „Igre” i „Muzika” su skriveni</string>
<string name="revanced_hide_attributes_section_summary_off">Odeljci „Istaknuta mesta”, „Igre” i „Muzika” su prikazani</string>
@@ -628,12 +628,6 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_shorts_location_label_title">Sakrij oznaku lokacije</string>
<string name="revanced_hide_shorts_location_label_summary_on">Oznaka lokacije je skrivena</string>
<string name="revanced_hide_shorts_location_label_summary_off">Oznaka lokacije je prikazana</string>
<string name="revanced_hide_shorts_save_sound_button_title">Sakrij dugme „Sačuvaj zvuk na plejlistu”</string>
<string name="revanced_hide_shorts_save_sound_button_summary_on">Dugme „Sačuvaj zvuk na plejlistu” je skriveno</string>
<string name="revanced_hide_shorts_save_sound_button_summary_off">Dugme „Sačuvaj zvuk na plejlistu” je prikazano</string>
<string name="revanced_hide_shorts_use_this_sound_button_title">Sakrij dugme „Koristi ovaj zvuk”</string>
<string name="revanced_hide_shorts_use_this_sound_button_summary_on">Dugme „Koristi ovaj zvuk” je skriveno</string>
<string name="revanced_hide_shorts_use_this_sound_button_summary_off">Dugme „Koristi ovaj zvuk” je prikazano</string>
<string name="revanced_hide_shorts_search_suggestions_title">Sakrij predloge za pretragu</string>
<string name="revanced_hide_shorts_search_suggestions_summary_on">Predlozi za pretragu su skriveni</string>
<string name="revanced_hide_shorts_search_suggestions_summary_off">Predlozi za pretragu su prikazani</string>
@@ -669,9 +663,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_shorts_full_video_link_label_title">Sakrij oznaku linka Shorts videa</string>
<string name="revanced_hide_shorts_full_video_link_label_summary_on">Oznaka linka Shorts videa je skrivena</string>
<string name="revanced_hide_shorts_full_video_link_label_summary_off">Oznaka linka Shorts videa je prikazana</string>
<string name="revanced_hide_shorts_sound_button_title">Sakrij dugme za zvuk</string>
<string name="revanced_hide_shorts_sound_button_summary_on">Dugme za zvuk je skriveno</string>
<string name="revanced_hide_shorts_sound_button_summary_off">Dugme za zvuk je prikazano</string>
<string name="revanced_hide_shorts_sound_button_title">Sakrij dugme „Zvuk</string>
<string name="revanced_hide_shorts_sound_button_summary_on">Dugme „Zvuk je skriveno</string>
<string name="revanced_hide_shorts_sound_button_summary_off">Dugme „Zvuk je prikazano</string>
<string name="revanced_hide_shorts_navigation_bar_title">Sakrij traku za navigaciju</string>
<string name="revanced_hide_shorts_navigation_bar_summary_on">Traka za navigaciju je skrivena</string>
<string name="revanced_hide_shorts_navigation_bar_summary_off">Traka za navigaciju je prikazana</string>
@@ -1140,7 +1134,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_spoof_video_streams_title">Lažirani video strimovi</string>
<string name="revanced_spoof_video_streams_summary_on">Video strimovi su lažirani</string>
<string name="revanced_spoof_video_streams_summary_off">Video strimovi nisu lažirani\n\nReprodukcija videa možda neće raditi</string>
<string name="revanced_spoof_video_streams_user_dialog_message">Isključivanje ovog podešavanja možda će izazvati probleme sa reprodukcijom videa.</string>
<string name="revanced_spoof_video_streams_user_dialog_message">Isključivanje ove opcije će možda izazvati probleme sa reprodukcijom videa.</string>
<string name="revanced_spoof_video_streams_client_title">Podrazumevani klijent</string>
<string name="revanced_spoof_video_streams_ios_force_avc_title">Prisili AVC (H.264)</string>
<string name="revanced_spoof_video_streams_ios_force_avc_summary_on">Video kodek je AVC (H.264)</string>
@@ -1148,7 +1142,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_spoof_video_streams_ios_force_avc_no_hardware_vp9_summary_on">Vaš uređaj nema VP9 hardversko dekodiranje, i ova opcija je uvek uključena kada je omogućeno lažiranje klijenta</string>
<string name="revanced_spoof_video_streams_ios_force_avc_user_dialog_message">Ako ovo omogućite, možda će se produžiti trajanje baterije i popraviti zastoj pri reprodukciji.\n\nAVC ima maksimalnu rezoluciju od 1080p, a reprodukcija videa će koristiti više internet podataka nego VP9 ili AV1.</string>
<string name="revanced_spoof_video_streams_about_ios_title">Neželjeni efekti lažiranja na iOS</string>
<string name="revanced_spoof_video_streams_about_ios_summary">• Filmovi ili plaćeni videi se možda neće puštati\n• Strimovi uživo počinju od početka\n• Videi će se možda završiti 1 sekundu ranije\n• Nema audio kodeka opus</string>
<string name="revanced_spoof_video_streams_about_android_vr_title">Neželjeni efekti lažiranja na Android VR</string>
<string name="revanced_spoof_video_streams_about_android_vr_summary">• Meni „Audio snimak” nedostaje\n• Opcija „Ujednačena jačina zvuka” nije dostupna</string>
</patch>
<!-- This patch is no longer used and these strings will soon be deleted. -->
<patch id="video.hdrbrightness.HDRBrightnessPatch">

View File

@@ -148,6 +148,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_channel_guidelines_title">Сакриј смернице канала</string>
<string name="revanced_hide_channel_guidelines_summary_on">Смернице канала су скривене</string>
<string name="revanced_hide_channel_guidelines_summary_off">Смернице канала су приказане</string>
<string name="revanced_hide_chips_shelf_title">Сакриј полицу ознака сличних видеа</string>
<string name="revanced_hide_chips_shelf_summary_on">Полица ознака сличних видеа је скривена</string>
<string name="revanced_hide_chips_shelf_summary_off">Полица ознака сличних видеа је приказана</string>
<string name="revanced_hide_expandable_chip_title">Сакриј прошириви део испод видеа</string>
<string name="revanced_hide_expandable_chip_summary_on">Прошириви делови су скривени</string>
<string name="revanced_hide_expandable_chip_summary_off">Прошириви делови су приказани</string>
@@ -208,9 +211,6 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_artist_cards_title">Сакриј картице извођача</string>
<string name="revanced_hide_artist_cards_summary_on">Картице извођача су скривене</string>
<string name="revanced_hide_artist_cards_summary_off">Картице извођача су приказане</string>
<string name="revanced_hide_chips_shelf_title">Сакриј полицу ознака сличних видеа</string>
<string name="revanced_hide_chips_shelf_summary_on">Полица ознака сличних видеа је скривена</string>
<string name="revanced_hide_chips_shelf_summary_off">Полица ознака сличних видеа је приказана</string>
<string name="revanced_hide_attributes_section_title">Сакриј одељак са атрибутима</string>
<string name="revanced_hide_attributes_section_summary_on">Одељци „Истакнута места”, „Игре” и „Музика” су скривени</string>
<string name="revanced_hide_attributes_section_summary_off">Одељци „Истакнута места”, „Игре” и „Музика” су приказани</string>
@@ -628,12 +628,6 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_shorts_location_label_title">Сакриј ознаку локације</string>
<string name="revanced_hide_shorts_location_label_summary_on">Ознака локације је скривена</string>
<string name="revanced_hide_shorts_location_label_summary_off">Ознака локације је приказана</string>
<string name="revanced_hide_shorts_save_sound_button_title">Сакриј дугме „Сачувај звук на плејлисту”</string>
<string name="revanced_hide_shorts_save_sound_button_summary_on">Дугме „Сачувај звук на плејлисту” је скривено</string>
<string name="revanced_hide_shorts_save_sound_button_summary_off">Дугме „Сачувај звук на плејлисту” је приказано</string>
<string name="revanced_hide_shorts_use_this_sound_button_title">Сакриј дугме „Користи овај звук”</string>
<string name="revanced_hide_shorts_use_this_sound_button_summary_on">Дугме „Користи овај звук” је скривено</string>
<string name="revanced_hide_shorts_use_this_sound_button_summary_off">Дугме „Користи овај звук” је приказано</string>
<string name="revanced_hide_shorts_search_suggestions_title">Сакриј предлоге за претрагу</string>
<string name="revanced_hide_shorts_search_suggestions_summary_on">Предлози за претрагу су скривени</string>
<string name="revanced_hide_shorts_search_suggestions_summary_off">Предлози за претрагу су приказани</string>
@@ -669,9 +663,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_shorts_full_video_link_label_title">Сакриј ознаку линка Shorts видеа</string>
<string name="revanced_hide_shorts_full_video_link_label_summary_on">Ознака линка Shorts видеа је скривена</string>
<string name="revanced_hide_shorts_full_video_link_label_summary_off">Ознака линка Shorts видеа је приказана</string>
<string name="revanced_hide_shorts_sound_button_title">Сакриј дугме за звук</string>
<string name="revanced_hide_shorts_sound_button_summary_on">Дугме за звук је скривено</string>
<string name="revanced_hide_shorts_sound_button_summary_off">Дугме за звук је приказано</string>
<string name="revanced_hide_shorts_sound_button_title">Сакриј дугме „Звук</string>
<string name="revanced_hide_shorts_sound_button_summary_on">Дугме „Звук је скривено</string>
<string name="revanced_hide_shorts_sound_button_summary_off">Дугме „Звук је приказано</string>
<string name="revanced_hide_shorts_navigation_bar_title">Сакриј траку за навигацију</string>
<string name="revanced_hide_shorts_navigation_bar_summary_on">Трака за навигацију је скривена</string>
<string name="revanced_hide_shorts_navigation_bar_summary_off">Трака за навигацију је приказана</string>
@@ -1148,7 +1142,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_spoof_video_streams_ios_force_avc_no_hardware_vp9_summary_on">Ваш уређај нема VP9 хардверско декодирање, и ова опција је увек укључена када је омогућено лажирање клијента</string>
<string name="revanced_spoof_video_streams_ios_force_avc_user_dialog_message">Ако ово омогућите, можда ће се продужити трајање батерије и поправити застој при репродукцији.\n\nAVC има максималну резолуцију од 1080p, а репродукција видеа ће користити више интернет података него VP9 или AV1.</string>
<string name="revanced_spoof_video_streams_about_ios_title">Нежељени ефекти лажирања на iOS</string>
<string name="revanced_spoof_video_streams_about_ios_summary">• Филмови или плаћени видеи се можда неће пуштати\n• Стримови уживо почињу од почетка\n• Видеи ће се можда завршити 1 секунду раније\n• Нема аудио кодека opus</string>
<string name="revanced_spoof_video_streams_about_android_vr_title">Нежељени ефекти лажирања на Android VR</string>
<string name="revanced_spoof_video_streams_about_android_vr_summary">• Мени „Аудио снимак” недостаје\n• Опција „Уједначена јачина звука” није доступна</string>
</patch>
<!-- This patch is no longer used and these strings will soon be deleted. -->
<patch id="video.hdrbrightness.HDRBrightnessPatch">

View File

@@ -148,6 +148,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_channel_guidelines_title">Dölj kanalens riktlinjer</string>
<string name="revanced_hide_channel_guidelines_summary_on">Kanalriktlinjerna är dolda</string>
<string name="revanced_hide_channel_guidelines_summary_off">Kanalriktlinjer är synliga</string>
<string name="revanced_hide_chips_shelf_title">Dölj hylla för flis</string>
<string name="revanced_hide_chips_shelf_summary_on">Chips hylla är dold</string>
<string name="revanced_hide_chips_shelf_summary_off">Chipshyllan är synlig</string>
<string name="revanced_hide_expandable_chip_title">Dölj utökningsbart chip under videor</string>
<string name="revanced_hide_expandable_chip_summary_on">Utökningsbara marker är dolda</string>
<string name="revanced_hide_expandable_chip_summary_off">Expanderbara marker är synliga</string>
@@ -208,9 +211,6 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_artist_cards_title">Dölj artistkort</string>
<string name="revanced_hide_artist_cards_summary_on">Konstnärskort är dolda</string>
<string name="revanced_hide_artist_cards_summary_off">Artistkort är synliga</string>
<string name="revanced_hide_chips_shelf_title">Dölj hylla för flis</string>
<string name="revanced_hide_chips_shelf_summary_on">Chips hylla är dold</string>
<string name="revanced_hide_chips_shelf_summary_off">Chipshyllan är synlig</string>
<string name="revanced_hide_attributes_section_title">Dölj attributsektion</string>
<string name="revanced_hide_attributes_section_summary_on">\'Utvalda platser\', Spel- och musiksektioner är dolda</string>
<string name="revanced_hide_attributes_section_summary_off">\'Utvalda platser\', Spel- och musiksektioner visas</string>
@@ -628,15 +628,15 @@ This is because Crowdin requires temporarily flattening this file and removing t
<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">Platsetikett är synlig</string>
<string name="revanced_hide_shorts_save_sound_button_title">Dölj spara ljud till spellistknappen</string>
<string name="revanced_hide_shorts_save_sound_button_summary_on">Spara ljud till spellistan är dolt</string>
<string name="revanced_hide_shorts_save_sound_button_summary_off">Spara ljud till spellistan är synlig</string>
<string name="revanced_hide_shorts_use_this_sound_button_title">Dölj använda den här ljudknappen</string>
<string name="revanced_hide_shorts_use_this_sound_button_summary_on">Använd den här ljudknappen är dold</string>
<string name="revanced_hide_shorts_use_this_sound_button_summary_off">Använd den här ljudknappen visas</string>
<string name="revanced_hide_shorts_save_sound_button_title">Dölj spara musikknappen</string>
<string name="revanced_hide_shorts_save_sound_button_summary_on">Spara musik är dold</string>
<string name="revanced_hide_shorts_save_sound_button_summary_off">Spara musik visas</string>
<string name="revanced_hide_shorts_search_suggestions_title">Dölj sökförslag</string>
<string name="revanced_hide_shorts_search_suggestions_summary_on">Sökförslag är dolda</string>
<string name="revanced_hide_shorts_search_suggestions_summary_off">Sökförslag är synliga</string>
<string name="revanced_hide_shorts_stickers_title">Dölj klistermärken</string>
<string name="revanced_hide_shorts_stickers_summary_on">Klistermärken är dolda</string>
<string name="revanced_hide_shorts_stickers_summary_off">Klistermärken visas</string>
<string name="revanced_hide_shorts_like_button_title">Dölj knappen gilla</string>
<string name="revanced_hide_shorts_like_button_summary_on">Knappen gilla är dold</string>
<string name="revanced_hide_shorts_like_button_summary_off">Knappen gilla är synlig</string>

View File

@@ -147,6 +147,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_channel_guidelines_title">Kanal yönergelerini gizle</string>
<string name="revanced_hide_channel_guidelines_summary_on">Kanal yönergeleri gizleniyor </string>
<string name="revanced_hide_channel_guidelines_summary_off">Kanal yönergeleri gösteriliyor</string>
<string name="revanced_hide_chips_shelf_title">Çip rafını gizle</string>
<string name="revanced_hide_chips_shelf_summary_on">Çip rafı gizlendi</string>
<string name="revanced_hide_chips_shelf_summary_off">Çip rafı gösteriliyor</string>
<string name="revanced_hide_expandable_chip_title">Videoların altındaki genişletilebilir çentiği gizle</string>
<string name="revanced_hide_expandable_chip_summary_on">Genişletilebilir çentikler gizleniyor</string>
<string name="revanced_hide_expandable_chip_summary_off">Genişletilebilir çentikler gösteriliyor</string>
@@ -207,9 +210,6 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_artist_cards_title">Sanatçı kartlarını gizle</string>
<string name="revanced_hide_artist_cards_summary_on">Sanatçı kartları gizlendi</string>
<string name="revanced_hide_artist_cards_summary_off">Sanatçı kartları gösteriliyor</string>
<string name="revanced_hide_chips_shelf_title">Çip rafını gizle</string>
<string name="revanced_hide_chips_shelf_summary_on">Çip rafı gizlendi</string>
<string name="revanced_hide_chips_shelf_summary_off">Çip rafı gösteriliyor</string>
<string name="revanced_hide_attributes_section_title">Nitelikler bölümünü gizle</string>
<string name="revanced_hide_attributes_section_summary_on">Öne çıkan yerler, Oyunlar ve Müzik bölümleri gizli</string>
<string name="revanced_hide_attributes_section_summary_off">Öne çıkan yerler, Oyunlar ve Müzik bölümleri görünür</string>
@@ -627,15 +627,15 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_shorts_location_label_title">Konum etiketini gizle</string>
<string name="revanced_hide_shorts_location_label_summary_on">Konum etiketi gizli</string>
<string name="revanced_hide_shorts_location_label_summary_off">Konum etiketi görünür</string>
<string name="revanced_hide_shorts_save_sound_button_title">Sesi oynatma listesine kaydetme butonunu gizle</string>
<string name="revanced_hide_shorts_save_sound_button_summary_on">Sesi oynatma listesine kaydetme butonu gizleniyor</string>
<string name="revanced_hide_shorts_save_sound_button_summary_off">Sesi oynatma listesine kaydetme butonu gösteriliyor </string>
<string name="revanced_hide_shorts_use_this_sound_button_title">\"Bu sesi kullan\" düğmesini gizle</string>
<string name="revanced_hide_shorts_use_this_sound_button_summary_on">\"Bu sesi kullan\" düğmesi gizli</string>
<string name="revanced_hide_shorts_use_this_sound_button_summary_off">\"Bu sesi kullan\" düğmesi görünür</string>
<string name="revanced_hide_shorts_save_sound_button_title">Müziği kaydet düğmesini gizle</string>
<string name="revanced_hide_shorts_save_sound_button_summary_on">Müziği kaydet düğmesi gizli</string>
<string name="revanced_hide_shorts_save_sound_button_summary_off">Müziği kaydet düğmesi görünür</string>
<string name="revanced_hide_shorts_search_suggestions_title">Arama önerilerini gizle</string>
<string name="revanced_hide_shorts_search_suggestions_summary_on">Arama önerileri gizleniyor </string>
<string name="revanced_hide_shorts_search_suggestions_summary_off">Arama önerileri gösteriliyor </string>
<string name="revanced_hide_shorts_stickers_title">Çıkartmaları gizle</string>
<string name="revanced_hide_shorts_stickers_summary_on">Çıkartmalar gizli</string>
<string name="revanced_hide_shorts_stickers_summary_off">Çıkartmalar görünür</string>
<string name="revanced_hide_shorts_like_button_title">\"Beğen\" butonunu gizle</string>
<string name="revanced_hide_shorts_like_button_summary_on">\"Beğen\" butonu gizleniyor</string>
<string name="revanced_hide_shorts_like_button_summary_off">\"Beğen\" butonu gösteriliyor</string>

View File

@@ -147,6 +147,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_channel_guidelines_title">Приховати правила каналу</string>
<string name="revanced_hide_channel_guidelines_summary_on">Правила каналу приховано</string>
<string name="revanced_hide_channel_guidelines_summary_off">Правила каналу показуються</string>
<string name="revanced_hide_chips_shelf_title">Приховати полицю фішок</string>
<string name="revanced_hide_chips_shelf_summary_on">Полицю фішок приховано</string>
<string name="revanced_hide_chips_shelf_summary_off">Полиця фішок показується</string>
<string name="revanced_hide_expandable_chip_title">Приховати розширювану фішку</string>
<string name="revanced_hide_expandable_chip_summary_on">Розширювані фішки під відео приховано</string>
<string name="revanced_hide_expandable_chip_summary_off">Розширювані фішки під відео показуються</string>
@@ -207,9 +210,6 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_artist_cards_title">Приховати картки виконавця</string>
<string name="revanced_hide_artist_cards_summary_on">Картки виконавця приховано</string>
<string name="revanced_hide_artist_cards_summary_off">Картки виконавця показуються</string>
<string name="revanced_hide_chips_shelf_title">Приховати полицю фішок</string>
<string name="revanced_hide_chips_shelf_summary_on">Полицю фішок приховано</string>
<string name="revanced_hide_chips_shelf_summary_off">Полиця фішок показується</string>
<string name="revanced_hide_attributes_section_title">Приховати секції атрибутів</string>
<string name="revanced_hide_attributes_section_summary_on">Секції \"Місця на відео\", \"Ігри\" та \"Музика\" приховано</string>
<string name="revanced_hide_attributes_section_summary_off">Секції \"Місця на відео\", \"Ігри\" та \"Музика\" показуються</string>
@@ -630,12 +630,12 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_shorts_save_sound_button_title">Приховати \"Зберегти музику\"</string>
<string name="revanced_hide_shorts_save_sound_button_summary_on">Кнопку \"Зберегти музику\" приховано</string>
<string name="revanced_hide_shorts_save_sound_button_summary_off">Кнопка \"Зберегти музику\" показується</string>
<string name="revanced_hide_shorts_use_this_sound_button_title">Приховати \"Використати цю звукову доріжку\"</string>
<string name="revanced_hide_shorts_use_this_sound_button_summary_on">Кнопку \"Використати цю звукову доріжку\" приховано</string>
<string name="revanced_hide_shorts_use_this_sound_button_summary_off">Кнопка \"Використати цю звукову доріжку\" показується</string>
<string name="revanced_hide_shorts_search_suggestions_title">Приховати пропозиції пошуку</string>
<string name="revanced_hide_shorts_search_suggestions_summary_on">Пропозиції пошуку приховано</string>
<string name="revanced_hide_shorts_search_suggestions_summary_off">Пропозиції пошуку показуються</string>
<string name="revanced_hide_shorts_stickers_title">Приховати стікери</string>
<string name="revanced_hide_shorts_stickers_summary_on">Стікери приховано</string>
<string name="revanced_hide_shorts_stickers_summary_off">Стікери показуються</string>
<string name="revanced_hide_shorts_like_button_title">Приховати \"Подобається\"</string>
<string name="revanced_hide_shorts_like_button_summary_on">Кнопку \"Подобається\" приховано</string>
<string name="revanced_hide_shorts_like_button_summary_off">Кнопка \"Подобається\" показується</string>
@@ -1145,9 +1145,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_spoof_video_streams_ios_force_avc_summary_off">Примусово увімкнено відеокодек VP9 або AV1</string>
<string name="revanced_spoof_video_streams_ios_force_avc_no_hardware_vp9_summary_on">Ваш пристрій не має апаратного декодування VP9, ​​тому це налаштування завжди ввімкнено, коли ввімкнено підробку відеопотоків</string>
<string name="revanced_spoof_video_streams_ios_force_avc_user_dialog_message">Увімкнення цієї опції може збільшити час роботи від акумулятора та виправити затримки відтворення.\n\nAVC має максимальну роздільну здатність 1080p, а відтворення відео використовуватиме більше інтернет-даних, ніж на кодеках VP9 або AV1.</string>
<string name="revanced_spoof_video_streams_about_ios_title">Побічні ефекти підміни iOS:</string>
<string name="revanced_spoof_video_streams_about_ios_title">Побічні ефекти підробки iOS:</string>
<string name="revanced_spoof_video_streams_about_ios_summary">• Фільми чи платні відео можуть не відтворюватися\n• Прямі трансляції починаються з початку\n• Відео можуть закінчуватися на 1 секунду раніше\n• Відсутній аудіокодек Opus</string>
<string name="revanced_spoof_video_streams_about_android_vr_title">Побічні ефекти підміни Android VR:</string>
<string name="revanced_spoof_video_streams_about_android_vr_title">Побічні ефекти підробки Android VR:</string>
<string name="revanced_spoof_video_streams_about_android_vr_summary">• Меню звукової доріжки відсутнє\n• Меню стабілізації гучності недоступне</string>
</patch>
<!-- This patch is no longer used and these strings will soon be deleted. -->

View File

@@ -147,6 +147,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_channel_guidelines_title">Ẩn nguyên tắc của kênh</string>
<string name="revanced_hide_channel_guidelines_summary_on">Nguyên tắc của kênh được ẩn</string>
<string name="revanced_hide_channel_guidelines_summary_off">Nguyên tắc của kênh được hiện</string>
<string name="revanced_hide_chips_shelf_title">Ẩn kệ danh mục được đề xuất</string>
<string name="revanced_hide_chips_shelf_summary_on">Kệ danh mục được đề xuất được ẩn</string>
<string name="revanced_hide_chips_shelf_summary_off">Kệ danh mục được đề xuất được hiện</string>
<string name="revanced_hide_expandable_chip_title">Ẩn bảng mở rộng dưới video</string>
<string name="revanced_hide_expandable_chip_summary_on">Bảng mở rộng được ẩn</string>
<string name="revanced_hide_expandable_chip_summary_off">Bảng mở rộng được hiện</string>
@@ -207,9 +210,6 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_artist_cards_title">Ẩn thẻ nghệ sĩ</string>
<string name="revanced_hide_artist_cards_summary_on">Thẻ nghệ sĩ được ẩn</string>
<string name="revanced_hide_artist_cards_summary_off">Thẻ nghệ sĩ được hiện</string>
<string name="revanced_hide_chips_shelf_title">Ẩn kệ danh mục được đề xuất</string>
<string name="revanced_hide_chips_shelf_summary_on">Kệ danh mục được đề xuất được ẩn</string>
<string name="revanced_hide_chips_shelf_summary_off">Kệ danh mục được đề xuất được hiện</string>
<string name="revanced_hide_attributes_section_title">Ẩn phần thuộc tính</string>
<string name="revanced_hide_attributes_section_summary_on">Phần \'Địa điểm nổi bật\', Trò chơi và Âm nhạc được ẩn</string>
<string name="revanced_hide_attributes_section_summary_off">Phần \'Địa điểm nổi bật\', Trò chơi và Âm nhạc được hiện</string>
@@ -627,12 +627,6 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_shorts_location_label_title">Ẩn nhãn vị trí</string>
<string name="revanced_hide_shorts_location_label_summary_on">Nhãn vị trí được ẩn</string>
<string name="revanced_hide_shorts_location_label_summary_off">Nhãn vị trí được hiện</string>
<string name="revanced_hide_shorts_save_sound_button_title">Ẩn nút lưu âm thanh vào danh sách phát</string>
<string name="revanced_hide_shorts_save_sound_button_summary_on">Lưu âm thanh vào danh sách phát được ẩn</string>
<string name="revanced_hide_shorts_save_sound_button_summary_off">Lưu âm thanh vào danh sách phát được hiện</string>
<string name="revanced_hide_shorts_use_this_sound_button_title">Ẩn nút dùng bản âm thanh này</string>
<string name="revanced_hide_shorts_use_this_sound_button_summary_on">Nút dùng bản âm thanh này được ẩn</string>
<string name="revanced_hide_shorts_use_this_sound_button_summary_off">Nút dùng bản âm thanh này được hiện</string>
<string name="revanced_hide_shorts_search_suggestions_title">Ẩn đề xuất tìm kiếm</string>
<string name="revanced_hide_shorts_search_suggestions_summary_on">Đề xuất tìm kiếm được ẩn</string>
<string name="revanced_hide_shorts_search_suggestions_summary_off">Đề xuất tìm kiếm được hiện</string>

View File

@@ -146,6 +146,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_channel_guidelines_title">隐藏频道指南</string>
<string name="revanced_hide_channel_guidelines_summary_on">频道指南已隐藏</string>
<string name="revanced_hide_channel_guidelines_summary_off">频道指南已显示</string>
<string name="revanced_hide_chips_shelf_title">隐藏芯片收藏</string>
<string name="revanced_hide_chips_shelf_summary_on">Chips 书架已隐藏</string>
<string name="revanced_hide_chips_shelf_summary_off">Chips 书架已显示</string>
<string name="revanced_hide_expandable_chip_title">隐藏视频下方的扩展面板</string>
<string name="revanced_hide_expandable_chip_summary_on">扩展面板已隐藏</string>
<string name="revanced_hide_expandable_chip_summary_off">扩展面板已显示</string>
@@ -206,9 +209,6 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_artist_cards_title">隐藏艺术家卡片</string>
<string name="revanced_hide_artist_cards_summary_on">艺术家卡是隐藏的</string>
<string name="revanced_hide_artist_cards_summary_off">显示艺术家卡片</string>
<string name="revanced_hide_chips_shelf_title">隐藏芯片收藏</string>
<string name="revanced_hide_chips_shelf_summary_on">Chips 书架已隐藏</string>
<string name="revanced_hide_chips_shelf_summary_off">Chips 书架已显示</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>
@@ -626,15 +626,15 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_shorts_location_label_title">隐藏位置标签</string>
<string name="revanced_hide_shorts_location_label_summary_on">位置标签已隐藏</string>
<string name="revanced_hide_shorts_location_label_summary_off">显示位置标签</string>
<string name="revanced_hide_shorts_save_sound_button_title">隐藏保存声音到播放列表按钮</string>
<string name="revanced_hide_shorts_save_sound_button_summary_on">保存声音到播放列表是隐藏</string>
<string name="revanced_hide_shorts_save_sound_button_summary_off">将声音保存到播放列表显示</string>
<string name="revanced_hide_shorts_use_this_sound_button_title">隐藏使用此声音按钮</string>
<string name="revanced_hide_shorts_use_this_sound_button_summary_on">使用此声音按钮隐藏</string>
<string name="revanced_hide_shorts_use_this_sound_button_summary_off">使用此声音按钮显示</string>
<string name="revanced_hide_shorts_save_sound_button_title">隐藏保存音乐按钮</string>
<string name="revanced_hide_shorts_save_sound_button_summary_on">保存音乐已隐藏</string>
<string name="revanced_hide_shorts_save_sound_button_summary_off">保存音乐已显示</string>
<string name="revanced_hide_shorts_search_suggestions_title">隐藏搜索建议</string>
<string name="revanced_hide_shorts_search_suggestions_summary_on">搜索建议已隐藏</string>
<string name="revanced_hide_shorts_search_suggestions_summary_off">显示搜索建议</string>
<string name="revanced_hide_shorts_stickers_title">隐藏貼圖</string>
<string name="revanced_hide_shorts_stickers_summary_on">貼圖已隐藏</string>
<string name="revanced_hide_shorts_stickers_summary_off">显示貼圖</string>
<string name="revanced_hide_shorts_like_button_title">隐藏像按钮</string>
<string name="revanced_hide_shorts_like_button_summary_on">喜欢按钮已隐藏</string>
<string name="revanced_hide_shorts_like_button_summary_off">显示喜欢按钮</string>

View File

@@ -44,7 +44,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_check_environment_not_near_patch_time_invalid">APK 構建日期已損壞</string>
</patch>
<patch id="misc.settings.BaseSettingsResourcePatch">
<string name="revanced_settings_confirm_user_dialog_title">您想繼續嗎?</string>
<string name="revanced_settings_confirm_user_dialog_title">確定要繼續嗎</string>
<string name="revanced_settings_reset">重設</string>
<string name="revanced_settings_restart_title">套用並重新啟動</string>
<string name="revanced_settings_restart">重新啟動</string>
@@ -68,7 +68,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="gms_core_dialog_title">需要採取行動</string>
<string name="gms_core_dialog_not_whitelisted_not_allowed_in_background_message">MicroG GmsCore 沒有在背景執行的權限。\n\n請遵循適用於您手機的「Don\'t kill my app」嚮導並將這些說明套用到您的 MicroG 安裝中。\n\n這是讓應用程式執行所必需做的。</string>
<string name="gms_core_dialog_open_website_text">開啟網站</string>
<string name="gms_core_dialog_not_whitelisted_using_battery_optimizations_message">請務必停用 MicroG GmsCore 的最佳化電池以避免意外問題。\n\n點擊繼續按鈕並停用最佳化電池。</string>
<string name="gms_core_dialog_not_whitelisted_using_battery_optimizations_message">請務必停用 MicroG GmsCore 的最佳化電池以避免意外問題。\n\n輕觸 [繼續] 並停用最佳化電池。</string>
<string name="gms_core_dialog_continue_text">繼續</string>
</patch>
</app>
@@ -80,17 +80,17 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_settings_screen_03_feed_title">動態消息</string>
<string name="revanced_settings_screen_04_player_title">播放器</string>
<string name="revanced_settings_screen_05_general_title">通用版面</string>
<string name="revanced_settings_screen_07_seekbar_title">進度條</string>
<string name="revanced_settings_screen_07_seekbar_title">拖拽欄</string>
<string name="revanced_settings_screen_08_swipe_controls_title">滑動控制</string>
<string name="revanced_settings_screen_11_misc_title">其他</string>
<string name="revanced_settings_screen_12_video_title">影片</string>
</patch>
<patch id="misc.debugging.DebuggingPatch">
<string name="revanced_debug_screen_title"></string>
<string name="revanced_debug_screen_summary">啟用或停用錯選項</string>
<string name="revanced_debug_title">錯記錄檔</string>
<string name="revanced_debug_summary_on">已啟用錯記錄檔</string>
<string name="revanced_debug_summary_off">已停用錯記錄檔</string>
<string name="revanced_debug_screen_title"></string>
<string name="revanced_debug_screen_summary">啟用或停用錯選項</string>
<string name="revanced_debug_title">錯記錄檔</string>
<string name="revanced_debug_summary_on">已啟用錯記錄檔</string>
<string name="revanced_debug_summary_off">已停用錯記錄檔</string>
<string name="revanced_debug_protobuffer_title">記錄檔協議緩衝區</string>
<string name="revanced_debug_protobuffer_summary_on">除錯記錄檔會包含協議緩衝資訊</string>
<string name="revanced_debug_protobuffer_summary_off">除錯記錄檔不會包含協議緩衝資訊</string>
@@ -147,6 +147,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_channel_guidelines_title">隱藏頻道規範</string>
<string name="revanced_hide_channel_guidelines_summary_on">已隱藏頻道規範</string>
<string name="revanced_hide_channel_guidelines_summary_off">已顯示頻道規範</string>
<string name="revanced_hide_chips_shelf_title">隱藏章節櫃</string>
<string name="revanced_hide_chips_shelf_summary_on">已隱藏章節櫃</string>
<string name="revanced_hide_chips_shelf_summary_off">已顯示章節櫃</string>
<string name="revanced_hide_expandable_chip_title">隱藏影片下方的章節選擇欄</string>
<string name="revanced_hide_expandable_chip_summary_on">已隱藏影片下方的章節選擇欄</string>
<string name="revanced_hide_expandable_chip_summary_off">已顯示影片下方的章節選擇欄</string>
@@ -207,9 +210,6 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_artist_cards_title">隱藏藝人卡</string>
<string name="revanced_hide_artist_cards_summary_on">已隱藏藝人卡</string>
<string name="revanced_hide_artist_cards_summary_off">已顯示藝人卡</string>
<string name="revanced_hide_chips_shelf_title">隱藏章節櫃</string>
<string name="revanced_hide_chips_shelf_summary_on">已隱藏章節櫃</string>
<string name="revanced_hide_chips_shelf_summary_off">已顯示章節櫃</string>
<string name="revanced_hide_attributes_section_title">隱藏屬性區</string>
<string name="revanced_hide_attributes_section_summary_on">已隱藏「特色地點」、遊戲和音樂區</string>
<string name="revanced_hide_attributes_section_summary_off">已顯示「特色地點」、遊戲和音樂區</string>
@@ -627,15 +627,15 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_shorts_location_label_title">隱藏地區標籤</string>
<string name="revanced_hide_shorts_location_label_summary_on">已隱藏地區標籤</string>
<string name="revanced_hide_shorts_location_label_summary_off">已顯示地區標籤</string>
<string name="revanced_hide_shorts_save_sound_button_title">隱藏儲存音訊到播放清單按鈕</string>
<string name="revanced_hide_shorts_save_sound_button_summary_on">已隱藏儲存音訊到播放清單按鈕</string>
<string name="revanced_hide_shorts_save_sound_button_summary_off">已顯示儲存音訊到播放清單按鈕</string>
<string name="revanced_hide_shorts_use_this_sound_button_title">隱藏使用此聲音按鈕</string>
<string name="revanced_hide_shorts_use_this_sound_button_summary_on">已隱藏使用此聲音按鈕</string>
<string name="revanced_hide_shorts_use_this_sound_button_summary_off">已顯示使用此聲音按鈕</string>
<string name="revanced_hide_shorts_save_sound_button_title">隱藏 [儲存音樂] 按鈕</string>
<string name="revanced_hide_shorts_save_sound_button_summary_on">已隱藏 [儲存音樂] 按鈕</string>
<string name="revanced_hide_shorts_save_sound_button_summary_off">已顯示 [顯示音樂] 按鈕</string>
<string name="revanced_hide_shorts_search_suggestions_title">隱藏搜尋建議</string>
<string name="revanced_hide_shorts_search_suggestions_summary_on">已隱藏搜尋建議</string>
<string name="revanced_hide_shorts_search_suggestions_summary_off">已顯示搜尋建議</string>
<string name="revanced_hide_shorts_stickers_title">隱藏「Stickers」</string>
<string name="revanced_hide_shorts_stickers_summary_on">已隱藏「Stickers」</string>
<string name="revanced_hide_shorts_stickers_summary_off">已顯示「Stickers」</string>
<string name="revanced_hide_shorts_like_button_title">隱藏「喜歡」按鈕</string>
<string name="revanced_hide_shorts_like_button_summary_on">已隱藏「喜歡」按鈕</string>
<string name="revanced_hide_shorts_like_button_summary_off">已顯示「喜歡」按鈕</string>

View File

@@ -148,6 +148,9 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_channel_guidelines_title">Hide channel guidelines</string>
<string name="revanced_hide_channel_guidelines_summary_on">Channel guidelines are hidden</string>
<string name="revanced_hide_channel_guidelines_summary_off">Channel guidelines are shown</string>
<string name="revanced_hide_chips_shelf_title">Hide chips shelf</string>
<string name="revanced_hide_chips_shelf_summary_on">Chips shelf is hidden</string>
<string name="revanced_hide_chips_shelf_summary_off">Chips shelf is shown</string>
<string name="revanced_hide_expandable_chip_title">Hide expandable chip under videos</string>
<string name="revanced_hide_expandable_chip_summary_on">Expandable chips are hidden</string>
<string name="revanced_hide_expandable_chip_summary_off">Expandable chips are shown</string>
@@ -208,9 +211,6 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_artist_cards_title">Hide artist cards</string>
<string name="revanced_hide_artist_cards_summary_on">Artist cards are hidden</string>
<string name="revanced_hide_artist_cards_summary_off">Artist cards are shown</string>
<string name="revanced_hide_chips_shelf_title">Hide chips shelf</string>
<string name="revanced_hide_chips_shelf_summary_on">Chips shelf is hidden</string>
<string name="revanced_hide_chips_shelf_summary_off">Chips shelf is shown</string>
<string name="revanced_hide_attributes_section_title">Hide attributes section</string>
<string name="revanced_hide_attributes_section_summary_on">\'Featured places\', Games and Music sections are hidden</string>
<string name="revanced_hide_attributes_section_summary_off">\'Featured places\', Games and Music sections are shown</string>
@@ -231,6 +231,13 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_transcript_section_summary_off">Transcript section is shown</string>
<string name="revanced_hide_description_components_screen_title">Video description</string>
<string name="revanced_hide_description_components_screen_summary">Hide or show video description components</string>
<!-- Yes, YouTube gave this feature the goofy name of "Yoodles". https://logos.fandom.com/wiki/YouTube/Yoodles -->
<string name="revanced_hide_yoodles_title">Hide Yoodles (YouTube Doodles)</string>
<string name="revanced_hide_yoodles_summary_on">Search bar Yoodles are hidden</string>
<string name="revanced_hide_yoodles_summary_off">Search bar Yoodles will be periodically shown</string>
<string name="revanced_hide_yoodles_user_dialog_message">YouTube Yoodles show up a few days each year.\n\nIf a Yoodle is currently showing in your region and this hide setting is on, then the filter bar below the search bar will also be hidden.</string>
<string name="revanced_custom_filter_screen_title">Custom filter</string>
<string name="revanced_custom_filter_screen_summary">Hide components using custom filters</string>
<string name="revanced_custom_filter_title">Enable custom filter</string>
@@ -240,6 +247,7 @@ This is because Crowdin requires temporarily flattening this file and removing t
<!-- 'Component path builder strings' is the technical name for identifying the Litho UI layout items to hide. This is an advanced feature and most users will never use this. -->
<string name="revanced_custom_filter_strings_summary">List of component path builder strings to filter separated by new line</string>
<string name="revanced_custom_filter_toast_invalid_syntax">Invalid custom filter: %s</string>
<string name="revanced_hide_keyword_content_screen_title">Hide keyword content</string>
<string name="revanced_hide_keyword_content_screen_summary">Hide search and feed videos using keyword filters</string>
<string name="revanced_hide_keyword_content_home_title">Hide home videos by keywords</string>
@@ -628,15 +636,18 @@ This is because Crowdin requires temporarily flattening this file and removing t
<string name="revanced_hide_shorts_location_label_title">Hide location label</string>
<string name="revanced_hide_shorts_location_label_summary_on">Location label is hidden</string>
<string name="revanced_hide_shorts_location_label_summary_off">Location label is shown</string>
<string name="revanced_hide_shorts_save_sound_button_title">Hide save sound to playlist button</string>
<string name="revanced_hide_shorts_save_sound_button_summary_on">Save sound to playlist is hidden</string>
<string name="revanced_hide_shorts_save_sound_button_summary_off">Save sound to playlist is shown</string>
<string name="revanced_hide_shorts_use_this_sound_button_title">Hide use this sound button</string>
<string name="revanced_hide_shorts_use_this_sound_button_summary_on">Use this sound button is hidden</string>
<string name="revanced_hide_shorts_use_this_sound_button_summary_off">Use this sound button is shown</string>
<string name="revanced_hide_shorts_save_sound_button_title">Hide save music button</string>
<string name="revanced_hide_shorts_save_sound_button_summary_on">Save music is hidden</string>
<string name="revanced_hide_shorts_save_sound_button_summary_off">Save music is shown</string>
<string name="revanced_hide_shorts_search_suggestions_title">Hide search suggestions</string>
<string name="revanced_hide_shorts_search_suggestions_summary_on">Search suggestions are hidden</string>
<string name="revanced_hide_shorts_search_suggestions_summary_off">Search suggestions are shown</string>
<string name="revanced_hide_shorts_stickers_title">Hide stickers</string>
<string name="revanced_hide_shorts_stickers_summary_on">Stickers are hidden</string>
<string name="revanced_hide_shorts_stickers_summary_off">Stickers are shown</string>
<string name="revanced_hide_shorts_like_fountain_title">Hide like fountain</string>
<string name="revanced_hide_shorts_like_fountain_summary_on">Like button fountain animation is hidden</string>
<string name="revanced_hide_shorts_like_fountain_summary_off">Like button fountain animation is shown</string>
<string name="revanced_hide_shorts_like_button_title">Hide like button</string>
<string name="revanced_hide_shorts_like_button_summary_on">Like button is hidden</string>
<string name="revanced_hide_shorts_like_button_summary_off">Like button is shown</string>

View File

@@ -1,6 +1,6 @@
<!--
https://github.com/google/material-design-icons/blob/9beae745bb758f3ad56654fb377ea5cf62be4915/symbols/android/content_copy/materialsymbolsoutlined/content_copy_wght200gradN25_24px.xml
The icon has been resized
Changes made: Icon has been resized.
Copyright 2022 Google

View File

@@ -1,7 +1,7 @@
<!--
https://github.com/google/material-design-icons/blob/9beae745bb758f3ad56654fb377ea5cf62be4915/symbols/android/content_copy/materialsymbolsoutlined/content_copy_wght200gradN25_24px.xml
https://github.com/google/material-design-icons/blob/9beae745bb758f3ad56654fb377ea5cf62be4915/symbols/android/schedule/materialsymbolsoutlined/schedule_wght300_24px.xml
This icon is the result of a combination of "content copy" and "schedule" icons.
Changes made: This icon is the result of a combination of "content copy" and "schedule" icons.
Copyright 2022 Google

View File

@@ -1,5 +1,34 @@
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:yt="http://schemas.android.com/apk/res-auto" android:id="@+id/youtube_controls_bottom_ui_container" android:layout_width="match_parent" android:layout_height="wrap_content" android:layoutDirection="ltr">
<com.google.android.libraries.youtube.common.ui.TouchImageView android:id="@+id/revanced_copy_video_url_timestamp_button" android:paddingLeft="12dp" android:paddingTop="22dp" android:paddingRight="12dp" android:paddingBottom="16dp" android:longClickable="false" android:layout_width="60dp" android:layout_height="60dp" android:src="@drawable/revanced_yt_copy_timestamp" android:scaleType="center" yt:layout_constraintBottom_toTopOf="@+id/quick_actions_container" yt:layout_constraintRight_toLeftOf="@+id/fullscreen_button" style="@style/YouTubePlayerButton"/>
<com.google.android.libraries.youtube.common.ui.TouchImageView android:id="@+id/revanced_copy_video_url_button" android:paddingLeft="12dp" android:paddingTop="22dp" android:paddingRight="12dp" android:paddingBottom="16dp" android:longClickable="false" android:layout_width="60dp" android:layout_height="60dp" android:src="@drawable/revanced_yt_copy" android:scaleType="center" yt:layout_constraintBottom_toTopOf="@+id/quick_actions_container" yt:layout_constraintRight_toLeftOf="@+id/fullscreen_button" style="@style/YouTubePlayerButton"/>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:yt="http://schemas.android.com/apk/res-auto"
android:id="@+id/youtube_controls_bottom_ui_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layoutDirection="ltr">
<com.google.android.libraries.youtube.common.ui.TouchImageView
android:id="@+id/revanced_copy_video_url_timestamp_button"
style="@style/YouTubePlayerButton"
android:layout_width="48.0dip"
android:layout_height="60.0dip"
android:paddingTop="6.0dp"
android:paddingBottom="0dp"
android:longClickable="false"
android:scaleType="center"
android:src="@drawable/revanced_yt_copy_timestamp"
yt:layout_constraintBottom_toTopOf="@+id/quick_actions_container"
yt:layout_constraintRight_toLeftOf="@+id/fullscreen_button" />
<com.google.android.libraries.youtube.common.ui.TouchImageView
android:id="@+id/revanced_copy_video_url_button"
style="@style/YouTubePlayerButton"
android:layout_width="48.0dip"
android:layout_height="60.0dip"
android:paddingTop="6.0dp"
android:paddingBottom="0dp"
android:longClickable="false"
android:scaleType="center"
android:src="@drawable/revanced_yt_copy"
yt:layout_constraintBottom_toTopOf="@+id/quick_actions_container"
yt:layout_constraintRight_toLeftOf="@+id/fullscreen_button" />
</android.support.constraint.ConstraintLayout>

View File

@@ -1,6 +1,6 @@
<!--
https://github.com/google/material-design-icons/blob/9beae745bb758f3ad56654fb377ea5cf62be4915/symbols/android/download/materialsymbolsoutlined/download_wght200gradN25_24px.xml
The icon has been resized
Changes made: Icon has been resized.
Copyright 2022 Google

View File

@@ -1,4 +1,21 @@
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:yt="http://schemas.android.com/apk/res-auto" android:id="@+id/youtube_controls_bottom_ui_container" android:layout_width="match_parent" android:layout_height="wrap_content" android:layoutDirection="ltr">
<com.google.android.libraries.youtube.common.ui.TouchImageView android:id="@+id/revanced_external_download_button" android:paddingLeft="12dp" android:paddingTop="22dp" android:paddingRight="12dp" android:paddingBottom="16dp" android:longClickable="false" android:layout_width="60dp" android:layout_height="60dp" android:src="@drawable/revanced_yt_download_button" android:scaleType="center" yt:layout_constraintBottom_toTopOf="@+id/quick_actions_container" yt:layout_constraintRight_toLeftOf="@+id/fullscreen_button" style="@style/YouTubePlayerButton"/>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:yt="http://schemas.android.com/apk/res-auto"
android:id="@+id/youtube_controls_bottom_ui_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layoutDirection="ltr">
<com.google.android.libraries.youtube.common.ui.TouchImageView
android:id="@+id/revanced_external_download_button"
style="@style/YouTubePlayerButton"
android:layout_width="48.0dip"
android:layout_height="60.0dip"
android:paddingTop="6.5dp"
android:paddingBottom="0dp"
android:longClickable="false"
android:scaleType="center"
android:src="@drawable/revanced_yt_download_button"
yt:layout_constraintBottom_toTopOf="@+id/quick_actions_container"
yt:layout_constraintRight_toLeftOf="@+id/fullscreen_button" />
</android.support.constraint.ConstraintLayout>

View File

@@ -1,6 +1,6 @@
<!--
https://github.com/google/material-design-icons/blob/9beae745bb758f3ad56654fb377ea5cf62be4915/symbols/android/slow_motion_video/materialsymbolsoutlined/slow_motion_video_wght200gradN25_24px.xml
The icon has been resized
Changes made: Icon has been resized.
Copyright 2022 Google

View File

@@ -1,4 +1,21 @@
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:yt="http://schemas.android.com/apk/res-auto" android:id="@+id/youtube_controls_bottom_ui_container" android:layout_width="match_parent" android:layout_height="wrap_content" android:layoutDirection="ltr">
<com.google.android.libraries.youtube.common.ui.TouchImageView android:id="@+id/revanced_playback_speed_dialog_button" android:paddingLeft="12dp" android:paddingTop="22dp" android:paddingRight="12dp" android:paddingBottom="16dp" android:longClickable="false" android:layout_width="60dp" android:layout_height="60dp" android:src="@drawable/revanced_playback_speed_dialog_button" android:scaleType="center" yt:layout_constraintBottom_toTopOf="@+id/quick_actions_container" yt:layout_constraintRight_toLeftOf="@+id/fullscreen_button" style="@style/YouTubePlayerButton"/>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:yt="http://schemas.android.com/apk/res-auto"
android:id="@+id/youtube_controls_bottom_ui_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layoutDirection="ltr">
<com.google.android.libraries.youtube.common.ui.TouchImageView
android:id="@+id/revanced_playback_speed_dialog_button"
style="@style/YouTubePlayerButton"
android:layout_width="48.0dip"
android:layout_height="60.0dip"
android:paddingTop="6.0dp"
android:paddingBottom="0dp"
android:longClickable="false"
android:scaleType="center"
android:src="@drawable/revanced_playback_speed_dialog_button"
yt:layout_constraintBottom_toTopOf="@+id/quick_actions_container"
yt:layout_constraintRight_toLeftOf="@+id/fullscreen_button" />
</android.support.constraint.ConstraintLayout>

View File

@@ -1,6 +1,6 @@
<!--
https://github.com/google/material-design-icons/blob/9beae745bb758f3ad56654fb377ea5cf62be4915/symbols/android/adjust/materialsymbolsoutlined/adjust_wght200gradN25_24px.xml
The icon has been resized
Changes made: Icon has been resized.
Copyright 2022 Google

View File

@@ -1,6 +1,6 @@
<!--
https://github.com/google/material-design-icons/blob/9beae745bb758f3ad56654fb377ea5cf62be4915/symbols/android/fast_forward/materialsymbolsoutlined/fast_forward_wght200gradN25_24px.xml
The icon has been mirrored and resized
Changes made: The icon has been mirrored and resized
Copyright 2022 Google

View File

@@ -1,6 +1,6 @@
<!--
https://github.com/google/material-design-icons/blob/9beae745bb758f3ad56654fb377ea5cf62be4915/symbols/android/compare/materialsymbolsoutlined/compare_wght200gradN25_24px.xml
The icon has been resized
Changes made: Icon has been resized.
Copyright 2022 Google

View File

@@ -1,6 +1,6 @@
<!--
https://github.com/google/material-design-icons/blob/9beae745bb758f3ad56654fb377ea5cf62be4915/symbols/android/edit/materialsymbolsoutlined/edit_wght200gradN25_24px.xml
The icon has been resized
Changes made: Icon has been resized.
Copyright 2022 Google

View File

@@ -1,6 +1,6 @@
<!--
https://github.com/google/material-design-icons/blob/9beae745bb758f3ad56654fb377ea5cf62be4915/symbols/android/fast_forward/materialsymbolsoutlined/fast_forward_wght200gradN25_24px.xml
The icon has been resized
Changes made: Icon has been resized.
Copyright 2022 Google

View File

@@ -1,6 +1,6 @@
<!--
https://github.com/ajayyy/SponsorBlock/blob/e1d656f43f8b3cfb40e1c521e4103d61db756872/public/icons/PlayerStartIconSponsorBlocker.svg
The SponsorBlock logo was inverted
Changes made: The SponsorBlock logo was inverted.
Copyright 2021 Ajay Ramachandran <dev@ajay.app>

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