Compare commits

...

25 Commits

Author SHA1 Message Date
semantic-release-bot
6e60ac6963 chore: Release v5.33.0-dev.6 [skip ci]
# [5.33.0-dev.6](https://github.com/ReVanced/revanced-patches/compare/v5.33.0-dev.5...v5.33.0-dev.6) (2025-07-31)

### Bug Fixes

* **YouTube - Video quality:** Use 1080p enhanced bitrate for Premium users ([#5565](https://github.com/ReVanced/revanced-patches/issues/5565)) ([1adbd56](1adbd563b2))
2025-07-31 18:30:03 +00:00
LisoUseInAIKyrios
1adbd563b2 fix(YouTube - Video quality): Use 1080p enhanced bitrate for Premium users (#5565) 2025-07-31 14:27:17 -04:00
github-actions[bot]
9ccf13b680 chore: Sync translations (#5567) 2025-07-31 14:27:05 -04:00
semantic-release-bot
7b8ca9c018 chore: Release v5.33.0-dev.5 [skip ci]
# [5.33.0-dev.5](https://github.com/ReVanced/revanced-patches/compare/v5.33.0-dev.4...v5.33.0-dev.5) (2025-07-31)

### Bug Fixes

* **YouTube - Litho filter:** Correctly filter identifier of older YouTube targets ([b1d164b](b1d164b446))
2025-07-31 10:35:51 +00:00
github-actions[bot]
ae6dd23d08 chore: Sync translations (#5564) 2025-07-31 06:33:31 -04:00
LisoUseInAIKyrios
b1d164b446 fix(YouTube - Litho filter): Correctly filter identifier of older YouTube targets 2025-07-31 06:33:12 -04:00
dependabot[bot]
87c39dd485 chore(deps-dev): Bump semantic-release from 24.2.6 to 24.2.7 (#5545) 2025-07-30 10:31:08 -04:00
semantic-release-bot
1549ac12aa chore: Release v5.33.0-dev.4 [skip ci]
# [5.33.0-dev.4](https://github.com/ReVanced/revanced-patches/compare/v5.33.0-dev.3...v5.33.0-dev.4) (2025-07-30)

### Performance Improvements

* **YouTube:** Filter identifier callback only on root component creation ([#5558](https://github.com/ReVanced/revanced-patches/issues/5558)) ([5d08fdd](5d08fdddb8))
2025-07-30 13:21:43 +00:00
LisoUseInAIKyrios
5d08fdddb8 perf(YouTube): Filter identifier callback only on root component creation (#5558) 2025-07-30 09:18:20 -04:00
semantic-release-bot
98114e5bde chore: Release v5.33.0-dev.3 [skip ci]
# [5.33.0-dev.3](https://github.com/ReVanced/revanced-patches/compare/v5.33.0-dev.2...v5.33.0-dev.3) (2025-07-30)

### Bug Fixes

* **YouTube - Playback speed:** Use old speed menu for player button if enabled ([a4817df](a4817dfdd0))
2025-07-30 10:06:04 +00:00
LisoUseInAIKyrios
a4817dfdd0 fix(YouTube - Playback speed): Use old speed menu for player button if enabled 2025-07-30 06:03:21 -04:00
semantic-release-bot
d4f05351e1 chore: Release v5.33.0-dev.2 [skip ci]
# [5.33.0-dev.2](https://github.com/ReVanced/revanced-patches/compare/v5.33.0-dev.1...v5.33.0-dev.2) (2025-07-29)

### Features

* **ORF ON:** Add `Remove root detection` patch ([#5551](https://github.com/ReVanced/revanced-patches/issues/5551)) ([d92362b](d92362b0d9))
2025-07-29 08:33:08 +00:00
abichinger
d92362b0d9 feat(ORF ON): Add Remove root detection patch (#5551) 2025-07-29 04:30:43 -04:00
github-actions[bot]
afc7c75df1 chore: Sync translations (#5555) 2025-07-29 04:29:42 -04:00
semantic-release-bot
f0d4e9bfb4 chore: Release v5.33.0-dev.1 [skip ci]
# [5.33.0-dev.1](https://github.com/ReVanced/revanced-patches/compare/v5.32.0...v5.33.0-dev.1) (2025-07-28)

### Features

* **YouTube - Playback speed:** Add "Restore old playback speed menu" option ([#5552](https://github.com/ReVanced/revanced-patches/issues/5552)) ([e9e4cf3](e9e4cf39b6))
2025-07-28 18:47:44 +00:00
LisoUseInAIKyrios
e9e4cf39b6 feat(YouTube - Playback speed): Add "Restore old playback speed menu" option (#5552) 2025-07-28 22:44:18 +04:00
semantic-release-bot
0579a9f760 chore: Release v5.32.0 [skip ci]
# [5.32.0](https://github.com/ReVanced/revanced-patches/compare/v5.31.2...v5.32.0) (2025-07-27)

### Bug Fixes

* **Messenger - Hide inbox ads:** Support the latest app version ([8ec857a](8ec857a175))
* **YouTube  - Hide layout components:** Fix "Hide ticket shelf" ([#5516](https://github.com/ReVanced/revanced-patches/issues/5516)) ([9ddb3ac](9ddb3ac39d))
* **YouTube - GmsCore support:** Fix search suggestions when logged out by using correct search provider ([#5483](https://github.com/ReVanced/revanced-patches/issues/5483)) ([e4e81b8](e4e81b89ea))

### Features

* **Prime Video:** Add `Playback speed` patch ([#5444](https://github.com/ReVanced/revanced-patches/issues/5444)) ([f46dbcd](f46dbcd084))
* **YouTube - External downloads:** Improve the selection of the external downloader package ([#5504](https://github.com/ReVanced/revanced-patches/issues/5504)) ([cfd7780](cfd77800d6))
* **YT Music:** Support latest versions ([#5524](https://github.com/ReVanced/revanced-patches/issues/5524)) ([1258555](125855540b))
2025-07-27 13:17:58 +00:00
LisoUseInAIKyrios
1c0acef3f3 chore: Merge branch dev to main (#5479) 2025-07-27 17:14:36 +04:00
github-actions[bot]
2419adb77b chore: Sync translations (#5544) 2025-07-27 17:14:11 +04:00
semantic-release-bot
9e4113555b chore: Release v5.32.0-dev.5 [skip ci]
# [5.32.0-dev.5](https://github.com/ReVanced/revanced-patches/compare/v5.32.0-dev.4...v5.32.0-dev.5) (2025-07-26)

### Features

* **YT Music:** Support latest versions ([#5524](https://github.com/ReVanced/revanced-patches/issues/5524)) ([1258555](125855540b))
2025-07-26 06:30:30 +00:00
netceil
125855540b feat(YT Music): Support latest versions (#5524) 2025-07-26 10:27:47 +04:00
github-actions[bot]
a8eee825e6 chore: Sync translations (#5538) 2025-07-26 10:27:17 +04:00
semantic-release-bot
63859f0ef9 chore: Release v5.32.0-dev.4 [skip ci]
# [5.32.0-dev.4](https://github.com/ReVanced/revanced-patches/compare/v5.32.0-dev.3...v5.32.0-dev.4) (2025-07-25)

### Bug Fixes

* **Messenger - Hide inbox ads:** Support the latest app version ([8ec857a](8ec857a175))
2025-07-25 06:53:39 +00:00
github-actions[bot]
1c9000dbda chore: Sync translations (#5531) 2025-07-25 10:51:05 +04:00
LisoUseInAIKyrios
8ec857a175 fix(Messenger - Hide inbox ads): Support the latest app version 2025-07-25 10:46:10 +04:00
93 changed files with 1307 additions and 522 deletions

View File

@@ -1,3 +1,75 @@
# [5.33.0-dev.6](https://github.com/ReVanced/revanced-patches/compare/v5.33.0-dev.5...v5.33.0-dev.6) (2025-07-31)
### Bug Fixes
* **YouTube - Video quality:** Use 1080p enhanced bitrate for Premium users ([#5565](https://github.com/ReVanced/revanced-patches/issues/5565)) ([bd3ace0](https://github.com/ReVanced/revanced-patches/commit/bd3ace0bd04ccd0369adb49d63aa0cf986402346))
# [5.33.0-dev.5](https://github.com/ReVanced/revanced-patches/compare/v5.33.0-dev.4...v5.33.0-dev.5) (2025-07-31)
### Bug Fixes
* **YouTube - Litho filter:** Correctly filter identifier of older YouTube targets ([bf29d69](https://github.com/ReVanced/revanced-patches/commit/bf29d6909e389819bad878ad3b94bbc90d823cc9))
# [5.33.0-dev.4](https://github.com/ReVanced/revanced-patches/compare/v5.33.0-dev.3...v5.33.0-dev.4) (2025-07-30)
### Performance Improvements
* **YouTube:** Filter identifier callback only on root component creation ([#5558](https://github.com/ReVanced/revanced-patches/issues/5558)) ([ccac46e](https://github.com/ReVanced/revanced-patches/commit/ccac46eebc2e14b094454e37ef4461d48a62c53f))
# [5.33.0-dev.3](https://github.com/ReVanced/revanced-patches/compare/v5.33.0-dev.2...v5.33.0-dev.3) (2025-07-30)
### Bug Fixes
* **YouTube - Playback speed:** Use old speed menu for player button if enabled ([1e8f436](https://github.com/ReVanced/revanced-patches/commit/1e8f4368e117f4b278c24709231cb32546e46dc0))
# [5.33.0-dev.2](https://github.com/ReVanced/revanced-patches/compare/v5.33.0-dev.1...v5.33.0-dev.2) (2025-07-29)
### Features
* **ORF ON:** Add `Remove root detection` patch ([#5551](https://github.com/ReVanced/revanced-patches/issues/5551)) ([6c6aa35](https://github.com/ReVanced/revanced-patches/commit/6c6aa35411a139dddc3a15dd757fbeded5d1a0a3))
# [5.33.0-dev.1](https://github.com/ReVanced/revanced-patches/compare/v5.32.0...v5.33.0-dev.1) (2025-07-28)
### Features
* **YouTube - Playback speed:** Add "Restore old playback speed menu" option ([#5552](https://github.com/ReVanced/revanced-patches/issues/5552)) ([b01f15b](https://github.com/ReVanced/revanced-patches/commit/b01f15b9acb0427aed99b0141ae271831b7936bf))
# [5.32.0](https://github.com/ReVanced/revanced-patches/compare/v5.31.2...v5.32.0) (2025-07-27)
### Bug Fixes
* **Messenger - Hide inbox ads:** Support the latest app version ([2959c02](https://github.com/ReVanced/revanced-patches/commit/2959c0214dfa703ee623ef1f89bded7f78c9d252))
* **YouTube - Hide layout components:** Fix "Hide ticket shelf" ([#5516](https://github.com/ReVanced/revanced-patches/issues/5516)) ([3b85c71](https://github.com/ReVanced/revanced-patches/commit/3b85c71433325fff49e01c77c7b9ff8ddd0a7068))
* **YouTube - GmsCore support:** Fix search suggestions when logged out by using correct search provider ([#5483](https://github.com/ReVanced/revanced-patches/issues/5483)) ([e86fdc8](https://github.com/ReVanced/revanced-patches/commit/e86fdc86b161a6077960b85149e83bacbac664e7))
### Features
* **Prime Video:** Add `Playback speed` patch ([#5444](https://github.com/ReVanced/revanced-patches/issues/5444)) ([22cf313](https://github.com/ReVanced/revanced-patches/commit/22cf313a7b99b69e17b9d488c514802043a5dc10))
* **YouTube - External downloads:** Improve the selection of the external downloader package ([#5504](https://github.com/ReVanced/revanced-patches/issues/5504)) ([5de9aa9](https://github.com/ReVanced/revanced-patches/commit/5de9aa9fad4f24186da045fb188f8718d6f63d7a))
* **YT Music:** Support latest versions ([#5524](https://github.com/ReVanced/revanced-patches/issues/5524)) ([551dcf0](https://github.com/ReVanced/revanced-patches/commit/551dcf01ca9c489a779196b49c8744727d79d6bc))
# [5.32.0-dev.5](https://github.com/ReVanced/revanced-patches/compare/v5.32.0-dev.4...v5.32.0-dev.5) (2025-07-26)
### Features
* **YT Music:** Support latest versions ([#5524](https://github.com/ReVanced/revanced-patches/issues/5524)) ([551dcf0](https://github.com/ReVanced/revanced-patches/commit/551dcf01ca9c489a779196b49c8744727d79d6bc))
# [5.32.0-dev.4](https://github.com/ReVanced/revanced-patches/compare/v5.32.0-dev.3...v5.32.0-dev.4) (2025-07-25)
### Bug Fixes
* **Messenger - Hide inbox ads:** Support the latest app version ([2959c02](https://github.com/ReVanced/revanced-patches/commit/2959c0214dfa703ee623ef1f89bded7f78c9d252))
# [5.32.0-dev.3](https://github.com/ReVanced/revanced-patches/compare/v5.32.0-dev.2...v5.32.0-dev.3) (2025-07-24)

View File

@@ -16,7 +16,7 @@ import java.util.Objects;
import app.revanced.extension.shared.Logger;
import app.revanced.extension.shared.Utils;
import app.revanced.extension.youtube.patches.components.ReturnYouTubeDislikeFilterPatch;
import app.revanced.extension.youtube.patches.components.ReturnYouTubeDislikeFilter;
import app.revanced.extension.youtube.returnyoutubedislike.ReturnYouTubeDislike;
import app.revanced.extension.youtube.settings.Settings;
import app.revanced.extension.youtube.shared.PlayerType;
@@ -55,7 +55,7 @@ public class ReturnYouTubeDislikePatch {
private static volatile ReturnYouTubeDislike lastLithoShortsVideoData;
/**
* Because litho Shorts spans are created offscreen after {@link ReturnYouTubeDislikeFilterPatch}
* Because litho Shorts spans are created offscreen after {@link ReturnYouTubeDislikeFilter}
* detects the video ids, but the current Short can arbitrarily reload the same span,
* then use the {@link #lastLithoShortsVideoData} if this value is greater than zero.
*/

View File

@@ -6,8 +6,6 @@ import android.app.Instrumentation;
import android.view.KeyEvent;
import android.view.View;
import androidx.annotation.Nullable;
import java.util.List;
import app.revanced.extension.shared.Logger;
@@ -155,10 +153,10 @@ public final class AdsFilter extends Filter {
}
@Override
boolean isFiltered(@Nullable String identifier, String path, byte[] protobufBufferArray,
boolean isFiltered(String identifier, String path, byte[] buffer,
StringFilterGroup matchedGroup, FilterContentType contentType, int contentIndex) {
if (matchedGroup == playerShoppingShelf) {
return contentIndex == 0 && playerShoppingShelfBuffer.check(protobufBufferArray).isFiltered();
return contentIndex == 0 && playerShoppingShelfBuffer.check(buffer).isFiltered();
}
if (exceptions.matches(path)) {

View File

@@ -1,7 +1,5 @@
package app.revanced.extension.youtube.patches.components;
import androidx.annotation.Nullable;
import app.revanced.extension.youtube.patches.playback.quality.AdvancedVideoQualityMenuPatch;
import app.revanced.extension.youtube.settings.Settings;
@@ -21,7 +19,7 @@ public final class AdvancedVideoQualityMenuFilter extends Filter {
}
@Override
boolean isFiltered(@Nullable String identifier, String path, byte[] protobufBufferArray,
boolean isFiltered(String identifier, String path, byte[] buffer,
StringFilterGroup matchedGroup, FilterContentType contentType, int contentIndex) {
isVideoQualityMenuVisible = true;

View File

@@ -1,7 +1,5 @@
package app.revanced.extension.youtube.patches.components;
import androidx.annotation.Nullable;
import app.revanced.extension.youtube.settings.Settings;
@SuppressWarnings("unused")
@@ -100,7 +98,7 @@ final class ButtonsFilter extends Filter {
}
@Override
boolean isFiltered(@Nullable String identifier, String path, byte[] protobufBufferArray,
boolean isFiltered(String identifier, String path, byte[] buffer,
StringFilterGroup matchedGroup, FilterContentType contentType, int contentIndex) {
if (matchedGroup == likeSubscribeGlow) {
return (path.startsWith(VIDEO_ACTION_BAR_PATH_PREFIX) || path.startsWith(COMPACT_CHANNEL_BAR_PATH_PREFIX))
@@ -117,7 +115,7 @@ final class ButtonsFilter extends Filter {
// Make sure the current path is the right one
// to avoid false positives.
return path.startsWith(VIDEO_ACTION_BAR_PATH)
&& bufferButtonsGroupList.check(protobufBufferArray).isFiltered();
&& bufferButtonsGroupList.check(buffer).isFiltered();
}
return true;

View File

@@ -1,7 +1,5 @@
package app.revanced.extension.youtube.patches.components;
import androidx.annotation.Nullable;
import app.revanced.extension.youtube.settings.Settings;
import app.revanced.extension.youtube.shared.PlayerType;
@@ -87,12 +85,12 @@ final class CommentsFilter extends Filter {
}
@Override
boolean isFiltered(@Nullable String identifier, String path, byte[] protobufBufferArray,
boolean isFiltered(String identifier, String path, byte[] buffer,
StringFilterGroup matchedGroup, FilterContentType contentType, int contentIndex) {
if (matchedGroup == chipBar) {
// Playlist sort button uses same components and must only filter if the player is opened.
return PlayerType.getCurrent().isMaximizedOrFullscreen()
&& aiCommentsSummary.check(protobufBufferArray).isFiltered();
&& aiCommentsSummary.check(buffer).isFiltered();
}
return true;

View File

@@ -3,7 +3,6 @@ package app.revanced.extension.youtube.patches.components;
import static app.revanced.extension.shared.StringRef.str;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import java.util.Arrays;
import java.util.Collection;
@@ -146,7 +145,7 @@ final class CustomFilter extends Filter {
}
@Override
boolean isFiltered(@Nullable String identifier, String path, byte[] protobufBufferArray,
boolean isFiltered(String identifier, String path, byte[] buffer,
StringFilterGroup matchedGroup, FilterContentType contentType, int contentIndex) {
// All callbacks are custom filter groups.
CustomFilterGroup custom = (CustomFilterGroup) matchedGroup;
@@ -158,6 +157,6 @@ final class CustomFilter extends Filter {
return true; // No buffer filter, only path filtering.
}
return custom.bufferSearch.matches(protobufBufferArray);
return custom.bufferSearch.matches(buffer);
}
}

View File

@@ -1,7 +1,5 @@
package app.revanced.extension.youtube.patches.components;
import androidx.annotation.Nullable;
import app.revanced.extension.youtube.StringTrieSearch;
import app.revanced.extension.youtube.settings.Settings;
import app.revanced.extension.youtube.shared.PlayerType;
@@ -105,7 +103,7 @@ final class DescriptionComponentsFilter extends Filter {
}
@Override
boolean isFiltered(@Nullable String identifier, String path, byte[] protobufBufferArray,
boolean isFiltered(String identifier, String path, byte[] buffer,
StringFilterGroup matchedGroup, FilterContentType contentType, int contentIndex) {
if (matchedGroup == aiGeneratedVideoSummarySection) {
@@ -116,11 +114,11 @@ final class DescriptionComponentsFilter extends Filter {
if (exceptions.matches(path)) return false;
if (matchedGroup == macroMarkersCarousel) {
return contentIndex == 0 && macroMarkersCarouselGroupList.check(protobufBufferArray).isFiltered();
return contentIndex == 0 && macroMarkersCarouselGroupList.check(buffer).isFiltered();
}
if (matchedGroup == horizontalShelf) {
return cellVideoAttribute.check(protobufBufferArray).isFiltered();
return cellVideoAttribute.check(buffer).isFiltered();
}
return true;

View File

@@ -1,7 +1,5 @@
package app.revanced.extension.youtube.patches.components;
import androidx.annotation.Nullable;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
@@ -42,6 +40,7 @@ abstract class Filter {
/**
* Adds callbacks to {@link #isFiltered(String, String, byte[], StringFilterGroup, FilterContentType, int)}
* if any of the groups are found.
* <p>
*/
protected final void addIdentifierCallbacks(StringFilterGroup... groups) {
identifierCallbacks.addAll(Arrays.asList(groups));
@@ -68,7 +67,7 @@ abstract class Filter {
* @param contentIndex Matched index of the identifier or path.
* @return True if the litho component should be filtered out.
*/
boolean isFiltered(@Nullable String identifier, String path, byte[] protobufBufferArray,
boolean isFiltered(String identifier, String path, byte[] buffer,
StringFilterGroup matchedGroup, FilterContentType contentType, int contentIndex) {
return true;
}

View File

@@ -3,9 +3,9 @@ package app.revanced.extension.youtube.patches.components;
import app.revanced.extension.youtube.settings.Settings;
@SuppressWarnings("unused")
public final class HideInfoCardsFilterPatch extends Filter {
public final class HideInfoCardsFilter extends Filter {
public HideInfoCardsFilterPatch() {
public HideInfoCardsFilter() {
addIdentifierCallbacks(
new StringFilterGroup(
Settings.HIDE_INFO_CARDS,

View File

@@ -554,7 +554,7 @@ final class KeywordContentFilter extends Filter {
}
@Override
boolean isFiltered(@Nullable String identifier, String path, byte[] protobufBufferArray,
boolean isFiltered(String identifier, String path, byte[] buffer,
StringFilterGroup matchedGroup, FilterContentType contentType, int contentIndex) {
if (contentIndex != 0 && matchedGroup == startsWithFilter) {
return false;
@@ -574,7 +574,7 @@ final class KeywordContentFilter extends Filter {
}
MutableReference<String> matchRef = new MutableReference<>();
if (bufferSearch.matches(protobufBufferArray, matchRef)) {
if (bufferSearch.matches(buffer, matchRef)) {
updateStats(true, matchRef.value);
return true;
}

View File

@@ -304,7 +304,7 @@ public final class LayoutComponentsFilter extends Filter {
}
@Override
boolean isFiltered(@Nullable String identifier, String path, byte[] protobufBufferArray,
boolean isFiltered(String identifier, String path, byte[] buffer,
StringFilterGroup matchedGroup, FilterContentType contentType, int contentIndex) {
// This identifier is used not only in players but also in search results:
// https://github.com/ReVanced/revanced-patches/issues/3245
@@ -322,7 +322,7 @@ public final class LayoutComponentsFilter extends Filter {
}
if (matchedGroup == channelProfile) {
return channelProfileBuffer.check(protobufBufferArray).isFiltered();
return channelProfileBuffer.check(buffer).isFiltered();
}
if (exceptions.matches(path)) return false; // Exceptions are not filtered.
@@ -331,11 +331,11 @@ public final class LayoutComponentsFilter extends Filter {
return compactChannelBarInnerButton.check(path).isFiltered()
// The filter may be broad, but in the context of a compactChannelBarInnerButton,
// it's safe to assume that the button is the only thing that should be hidden.
&& joinMembershipButton.check(protobufBufferArray).isFiltered();
&& joinMembershipButton.check(buffer).isFiltered();
}
if (matchedGroup == horizontalShelves) {
return contentIndex == 0 && (hideShelves() || ticketShelf.check(protobufBufferArray).isFiltered());
return contentIndex == 0 && (hideShelves() || ticketShelf.check(buffer).isFiltered());
}
if (matchedGroup == chipBar) {

View File

@@ -17,29 +17,28 @@ public final class LithoFilterPatch {
* Simple wrapper to pass the litho parameters through the prefix search.
*/
private static final class LithoFilterParameters {
@Nullable
final String identifier;
final String path;
final byte[] protoBuffer;
final byte[] buffer;
LithoFilterParameters(@Nullable String lithoIdentifier, String lithoPath, byte[] protoBuffer) {
LithoFilterParameters(String lithoIdentifier, String lithoPath, byte[] buffer) {
this.identifier = lithoIdentifier;
this.path = lithoPath;
this.protoBuffer = protoBuffer;
this.buffer = buffer;
}
@NonNull
@Override
public String toString() {
// Estimate the percentage of the buffer that are Strings.
StringBuilder builder = new StringBuilder(Math.max(100, protoBuffer.length / 2));
StringBuilder builder = new StringBuilder(Math.max(100, buffer.length / 2));
builder.append( "ID: ");
builder.append(identifier);
builder.append(" Path: ");
builder.append(path);
if (Settings.DEBUG_PROTOBUFFER.get()) {
builder.append(" BufferStrings: ");
findAsciiStrings(builder, protoBuffer);
findAsciiStrings(builder, buffer);
}
return builder.toString();
@@ -128,21 +127,21 @@ public final class LithoFilterPatch {
private static void filterUsingCallbacks(StringTrieSearch pathSearchTree,
Filter filter, List<StringFilterGroup> groups,
Filter.FilterContentType type) {
String filterSimpleName = filter.getClass().getSimpleName();
for (StringFilterGroup group : groups) {
if (!group.includeInSearch()) {
continue;
}
for (String pattern : group.filters) {
String filterSimpleName = filter.getClass().getSimpleName();
pathSearchTree.addPattern(pattern, (textSearched, matchedStartIndex,
matchedLength, callbackParameter) -> {
if (!group.isEnabled()) return false;
LithoFilterParameters parameters = (LithoFilterParameters) callbackParameter;
final boolean isFiltered = filter.isFiltered(parameters.identifier,
parameters.path, parameters.protoBuffer, group, type, matchedStartIndex);
parameters.path, parameters.buffer, group, type, matchedStartIndex);
if (isFiltered && BaseSettings.DEBUG.get()) {
if (type == Filter.FilterContentType.IDENTIFIER) {
@@ -163,6 +162,7 @@ public final class LithoFilterPatch {
/**
* Injection point. Called off the main thread.
* Targets 20.22+
*/
public static void setProtoBuffer(byte[] buffer) {
// Set the buffer to a thread local. The buffer will remain in memory, even after the call to #filter completes.
@@ -193,9 +193,9 @@ public final class LithoFilterPatch {
/**
* Injection point.
*/
public static boolean shouldFilter(@Nullable String lithoIdentifier, StringBuilder pathBuilder) {
public static boolean isFiltered(String lithoIdentifier, StringBuilder pathBuilder) {
try {
if (pathBuilder.length() == 0) {
if (lithoIdentifier.isEmpty() && pathBuilder.length() == 0) {
return false;
}
@@ -210,7 +210,7 @@ public final class LithoFilterPatch {
lithoIdentifier, pathBuilder.toString(), buffer);
Logger.printDebug(() -> "Searching " + parameter);
if (parameter.identifier != null && identifierSearchTree.matches(parameter.identifier, parameter)) {
if (identifierSearchTree.matches(parameter.identifier, parameter)) {
return true;
}
@@ -218,7 +218,7 @@ public final class LithoFilterPatch {
return true;
}
} catch (Exception ex) {
Logger.printException(() -> "Litho filter failure", ex);
Logger.printException(() -> "isFiltered failure", ex);
}
return false;

View File

@@ -0,0 +1,49 @@
package app.revanced.extension.youtube.patches.components;
import app.revanced.extension.youtube.patches.playback.speed.CustomPlaybackSpeedPatch;
import app.revanced.extension.youtube.settings.Settings;
/**
* Abuse LithoFilter for {@link CustomPlaybackSpeedPatch}.
*/
public final class PlaybackSpeedMenuFilter extends Filter {
/**
* Old litho based speed selection menu.
*/
public static volatile boolean isOldPlaybackSpeedMenuVisible;
/**
* 0.05x speed selection menu.
*/
public static volatile boolean isPlaybackRateSelectorMenuVisible;
private final StringFilterGroup oldPlaybackMenuGroup;
public PlaybackSpeedMenuFilter() {
// 0.05x litho speed menu.
var playbackRateSelectorGroup = new StringFilterGroup(
Settings.CUSTOM_SPEED_MENU,
"playback_rate_selector_menu_sheet.eml-js"
);
// Old litho based speed menu.
oldPlaybackMenuGroup = new StringFilterGroup(
Settings.CUSTOM_SPEED_MENU,
"playback_speed_sheet_content.eml-js");
addPathCallbacks(playbackRateSelectorGroup, oldPlaybackMenuGroup);
}
@Override
boolean isFiltered(String identifier, String path, byte[] buffer,
StringFilterGroup matchedGroup, FilterContentType contentType, int contentIndex) {
if (matchedGroup == oldPlaybackMenuGroup) {
isOldPlaybackSpeedMenuVisible = true;
} else {
isPlaybackRateSelectorMenuVisible = true;
}
return false;
}
}

View File

@@ -1,35 +0,0 @@
package app.revanced.extension.youtube.patches.components;
import androidx.annotation.Nullable;
import app.revanced.extension.youtube.patches.playback.speed.CustomPlaybackSpeedPatch;
import app.revanced.extension.youtube.settings.Settings;
/**
* Abuse LithoFilter for {@link CustomPlaybackSpeedPatch}.
*/
public final class PlaybackSpeedMenuFilterPatch extends Filter {
/**
* 0.05x speed selection menu.
*/
public static volatile boolean isPlaybackRateSelectorMenuVisible;
public PlaybackSpeedMenuFilterPatch() {
// 0.05x litho speed menu.
var playbackRateSelectorGroup = new StringFilterGroup(
Settings.CUSTOM_SPEED_MENU,
"playback_rate_selector_menu_sheet.eml-js"
);
addPathCallbacks(playbackRateSelectorGroup);
}
@Override
boolean isFiltered(@Nullable String identifier, String path, byte[] protobufBufferArray,
StringFilterGroup matchedGroup, FilterContentType contentType, int contentIndex) {
isPlaybackRateSelectorMenuVisible = true;
return false;
}
}

View File

@@ -1,7 +1,5 @@
package app.revanced.extension.youtube.patches.components;
import androidx.annotation.Nullable;
import app.revanced.extension.shared.settings.Setting;
import app.revanced.extension.shared.spoof.SpoofVideoStreamsPatch;
import app.revanced.extension.youtube.settings.Settings;
@@ -96,7 +94,7 @@ public class PlayerFlyoutMenuItemsFilter extends Filter {
}
@Override
boolean isFiltered(@Nullable String identifier, String path, byte[] protobufBufferArray,
boolean isFiltered(String identifier, String path, byte[] buffer,
StringFilterGroup matchedGroup, FilterContentType contentType, int contentIndex) {
if (matchedGroup == videoQualityMenuFooter) {
return true;
@@ -107,10 +105,10 @@ public class PlayerFlyoutMenuItemsFilter extends Filter {
}
// Shorts also use this player flyout panel
if (PlayerType.getCurrent().isNoneOrHidden() || exception.check(protobufBufferArray).isFiltered()) {
if (PlayerType.getCurrent().isNoneOrHidden() || exception.check(buffer).isFiltered()) {
return false;
}
return flyoutFilterGroupList.check(protobufBufferArray).isFiltered();
return flyoutFilterGroupList.check(buffer).isFiltered();
}
}

View File

@@ -26,7 +26,7 @@ import app.revanced.extension.youtube.TrieSearch;
*
* Once a way to asynchronously update litho text is found, this strategy will no longer be needed.
*/
public final class ReturnYouTubeDislikeFilterPatch extends Filter {
public final class ReturnYouTubeDislikeFilter extends Filter {
/**
* Last unique video id's loaded. Value is ignored and Map is treated as a Set.
@@ -67,7 +67,7 @@ public final class ReturnYouTubeDislikeFilterPatch extends Filter {
private final ByteArrayFilterGroupList videoIdFilterGroup = new ByteArrayFilterGroupList();
public ReturnYouTubeDislikeFilterPatch() {
public ReturnYouTubeDislikeFilter() {
// When a new Short is opened, the like buttons always seem to load before the dislike.
// But if swiping back to a previous video and liking/disliking, then only that single button reloads.
// So must check for both buttons.
@@ -84,15 +84,15 @@ public final class ReturnYouTubeDislikeFilterPatch extends Filter {
}
@Override
boolean isFiltered(@Nullable String identifier, String path, byte[] protobufBufferArray,
boolean isFiltered(String identifier, String path, byte[] buffer,
StringFilterGroup matchedGroup, FilterContentType contentType, int contentIndex) {
if (!Settings.RYD_ENABLED.get() || !Settings.RYD_SHORTS.get()) {
return false;
}
FilterGroup.FilterGroupResult result = videoIdFilterGroup.check(protobufBufferArray);
FilterGroup.FilterGroupResult result = videoIdFilterGroup.check(buffer);
if (result.isFiltered()) {
String matchedVideoId = findVideoId(protobufBufferArray);
String matchedVideoId = findVideoId(buffer);
// Matched video will be null if in incognito mode.
// Must pass a null id to correctly clear out the current video data.
// Otherwise if a Short is opened in non-incognito, then incognito is enabled and another Short is opened,

View File

@@ -4,8 +4,6 @@ import static app.revanced.extension.youtube.shared.NavigationBar.NavigationButt
import android.view.View;
import androidx.annotation.Nullable;
import com.google.android.libraries.youtube.rendering.ui.pivotbar.PivotBar;
import java.lang.ref.WeakReference;
@@ -13,7 +11,6 @@ import java.util.Arrays;
import java.util.List;
import app.revanced.extension.shared.Logger;
import app.revanced.extension.shared.Utils;
import app.revanced.extension.youtube.settings.Settings;
import app.revanced.extension.youtube.shared.NavigationBar;
import app.revanced.extension.youtube.shared.PlayerType;
@@ -321,7 +318,7 @@ public final class ShortsFilter extends Filter {
}
@Override
boolean isFiltered(@Nullable String identifier, String path, byte[] protobufBufferArray,
boolean isFiltered(String identifier, String path, byte[] buffer,
StringFilterGroup matchedGroup, FilterContentType contentType, int contentIndex) {
if (contentType == FilterContentType.PATH) {
if (matchedGroup == subscribeButton || matchedGroup == joinButton || matchedGroup == paidPromotionButton) {
@@ -330,22 +327,22 @@ public final class ShortsFilter extends Filter {
}
if (matchedGroup == useSoundButton) {
return useSoundButtonBuffer.check(protobufBufferArray).isFiltered();
return useSoundButtonBuffer.check(buffer).isFiltered();
}
if (matchedGroup == useTemplateButton) {
return useTemplateButtonBuffer.check(protobufBufferArray).isFiltered();
return useTemplateButtonBuffer.check(buffer).isFiltered();
}
if (matchedGroup == shortsCompactFeedVideo) {
return shouldHideShortsFeedItems() && shortsCompactFeedVideoBuffer.check(protobufBufferArray).isFiltered();
return shouldHideShortsFeedItems() && shortsCompactFeedVideoBuffer.check(buffer).isFiltered();
}
// Video action buttons (comment, share, remix) have the same path.
// Like and dislike are separate path filters and don't require buffer searching.
if (matchedGroup == shortsActionBar) {
return videoActionButton.check(path).isFiltered()
&& videoActionButtonBuffer.check(protobufBufferArray).isFiltered();
&& videoActionButtonBuffer.check(buffer).isFiltered();
}
if (matchedGroup == suggestedAction) {
@@ -356,7 +353,7 @@ public final class ShortsFilter extends Filter {
return true;
}
return suggestedActionsBuffer.check(protobufBufferArray).isFiltered();
return suggestedActionsBuffer.check(buffer).isFiltered();
}
return true;

View File

@@ -5,9 +5,9 @@ import static app.revanced.extension.shared.Utils.NetworkType;
import androidx.annotation.Nullable;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.ArrayList;
import com.google.android.libraries.youtube.innertube.model.media.VideoQuality;
import java.util.Arrays;
import java.util.List;
import app.revanced.extension.shared.Logger;
@@ -20,6 +20,14 @@ import app.revanced.extension.youtube.shared.ShortsPlayerState;
@SuppressWarnings("unused")
public class RememberVideoQualityPatch {
/**
* Interface to use obfuscated methods.
*/
public interface VideoQualityMenuInterface {
void patch_setMenuIndexFromQuality(VideoQuality quality);
}
private static final int AUTOMATIC_VIDEO_QUALITY_VALUE = -2;
private static final IntegerSetting videoQualityWifi = Settings.VIDEO_QUALITY_DEFAULT_WIFI;
private static final IntegerSetting videoQualityMobile = Settings.VIDEO_QUALITY_DEFAULT_MOBILE;
@@ -30,7 +38,8 @@ public class RememberVideoQualityPatch {
/**
* If the user selected a new quality from the flyout menu,
* and {@link Settings#REMEMBER_VIDEO_QUALITY_LAST_SELECTED} is enabled.
* and {@link Settings#REMEMBER_VIDEO_QUALITY_LAST_SELECTED}
* or {@link Settings#REMEMBER_SHORTS_QUALITY_LAST_SELECTED} is enabled.
*/
private static boolean userChangedDefaultQuality;
@@ -40,10 +49,10 @@ public class RememberVideoQualityPatch {
private static int userSelectedQualityIndex;
/**
* The available qualities of the current video in human readable form: [1080, 720, 480]
* The available qualities of the current video.
*/
@Nullable
private static List<Integer> videoQualities;
private static List<VideoQuality> videoQualities;
private static boolean shouldRememberVideoQuality() {
BooleanSetting preference = ShortsPlayerState.isOpen() ?
@@ -52,23 +61,27 @@ public class RememberVideoQualityPatch {
return preference.get();
}
private static void changeDefaultQuality(int defaultQuality) {
private static void changeDefaultQuality(int qualityResolution) {
final boolean shortPlayerOpen = ShortsPlayerState.isOpen();
String networkTypeMessage;
boolean useShortsPreference = ShortsPlayerState.isOpen();
IntegerSetting qualitySetting;
if (Utils.getNetworkType() == NetworkType.MOBILE) {
if (useShortsPreference) shortsQualityMobile.save(defaultQuality);
else videoQualityMobile.save(defaultQuality);
networkTypeMessage = str("revanced_remember_video_quality_mobile");
qualitySetting = shortPlayerOpen ? shortsQualityMobile : videoQualityMobile;
} else {
if (useShortsPreference) shortsQualityWifi.save(defaultQuality);
else videoQualityWifi.save(defaultQuality);
networkTypeMessage = str("revanced_remember_video_quality_wifi");
qualitySetting = shortPlayerOpen ? shortsQualityWifi : videoQualityWifi;
}
qualitySetting.save(qualityResolution);
if (Settings.REMEMBER_VIDEO_QUALITY_LAST_SELECTED_TOAST.get())
Utils.showToastShort(str(
useShortsPreference ? "revanced_remember_video_quality_toast_shorts" : "revanced_remember_video_quality_toast",
networkTypeMessage, (defaultQuality + "p")
));
shortPlayerOpen
? "revanced_remember_video_quality_toast_shorts"
: "revanced_remember_video_quality_toast",
networkTypeMessage,
(qualityResolution + "p"))
);
}
/**
@@ -77,9 +90,11 @@ public class RememberVideoQualityPatch {
* @param qualities Video qualities available, ordered from largest to smallest, with index 0 being the 'automatic' value of -2
* @param originalQualityIndex quality index to use, as chosen by YouTube
*/
public static int setVideoQuality(Object[] qualities, final int originalQualityIndex, Object qInterface, String qIndexMethod) {
public static int setVideoQuality(VideoQuality[] qualities, VideoQualityMenuInterface menu, int originalQualityIndex) {
try {
boolean useShortsPreference = ShortsPlayerState.isOpen();
Utils.verifyOnMainThread();
final boolean useShortsPreference = ShortsPlayerState.isOpen();
final int preferredQuality = Utils.getNetworkType() == NetworkType.MOBILE
? (useShortsPreference ? shortsQualityMobile : videoQualityMobile).get()
: (useShortsPreference ? shortsQualityWifi : videoQualityWifi).get();
@@ -89,16 +104,8 @@ public class RememberVideoQualityPatch {
}
if (videoQualities == null || videoQualities.size() != qualities.length) {
videoQualities = new ArrayList<>(qualities.length);
for (Object streamQuality : qualities) {
for (Field field : streamQuality.getClass().getFields()) {
if (field.getType().isAssignableFrom(Integer.TYPE)
&& field.getName().length() <= 2) {
videoQualities.add(field.getInt(streamQuality));
}
}
}
videoQualities = Arrays.asList(qualities);
// After changing videos the qualities can initially be for the prior video.
// So if the qualities have changed an update is needed.
qualityNeedsUpdating = true;
@@ -107,9 +114,9 @@ public class RememberVideoQualityPatch {
if (userChangedDefaultQuality) {
userChangedDefaultQuality = false;
final int quality = videoQualities.get(userSelectedQualityIndex);
VideoQuality quality = videoQualities.get(userSelectedQualityIndex);
Logger.printDebug(() -> "User changed default quality to: " + quality);
changeDefaultQuality(quality);
changeDefaultQuality(quality.patch_getResolution());
return userSelectedQualityIndex;
}
@@ -119,65 +126,86 @@ public class RememberVideoQualityPatch {
qualityNeedsUpdating = false;
// Find the highest quality that is equal to or less than the preferred.
int qualityToUse = videoQualities.get(0); // first element is automatic mode
VideoQuality qualityToUse = videoQualities.get(0); // First element is automatic mode.
int qualityIndexToUse = 0;
int i = 0;
for (Integer quality : videoQualities) {
if (quality <= preferredQuality && qualityToUse < quality) {
for (VideoQuality quality : videoQualities) {
final int qualityResolution = quality.patch_getResolution();
if (qualityResolution > qualityToUse.patch_getResolution() && qualityResolution <= preferredQuality) {
qualityToUse = quality;
qualityIndexToUse = i;
break;
}
i++;
}
// If the desired quality index is equal to the original index,
// then the video is already set to the desired default quality.
final int qualityToUseFinal = qualityToUse;
String qualityToUseName = qualityToUse.patch_getQualityName();
if (qualityIndexToUse == originalQualityIndex) {
// On first load of a new video, if the UI video quality flyout menu
// is not updated then it will still show 'Auto' (ie: Auto (480p)),
// even though it's already set to the desired resolution.
//
// To prevent confusion, set the video index anyways (even if it matches the existing index)
// as that will force the UI picker to not display "Auto".
Logger.printDebug(() -> "Video is already preferred quality: " + qualityToUseFinal);
Logger.printDebug(() -> "Video is already preferred quality: " + qualityToUseName);
} else {
Logger.printDebug(() -> "Changing video quality from: "
+ videoQualities.get(originalQualityIndex) + " to: " + qualityToUseFinal);
+ videoQualities.get(originalQualityIndex).patch_getQualityName()
+ " to: " + qualityToUseName);
}
Method m = qInterface.getClass().getMethod(qIndexMethod, Integer.TYPE);
m.invoke(qInterface, qualityToUse);
// On first load of a new video, if the video is already the desired quality
// then the quality flyout will show 'Auto' (ie: Auto (720p)).
//
// To prevent user confusion, set the video index even if the
// quality is already correct so the UI picker will not display "Auto".
menu.patch_setMenuIndexFromQuality(qualities[qualityIndexToUse]);
return qualityIndexToUse;
} catch (Exception ex) {
Logger.printException(() -> "Failed to set quality", ex);
Logger.printException(() -> "setVideoQuality failure", ex);
return originalQualityIndex;
}
}
/**
* Injection point. Old quality menu.
* Injection point. Fixes bad data used by YouTube.
*/
public static void userChangedQuality(int selectedQualityIndex) {
public static int fixVideoQualityResolution(String name, int quality) {
final int correctQuality = 480;
if (name.equals("480p") && quality != correctQuality) {
Logger.printDebug(() -> "Fixing bad data of " + name + " from: " + quality
+ " to: " + correctQuality);
return correctQuality;
}
return quality;
}
/**
* Injection point.
* @param qualityIndex Element index of {@link #videoQualities}.
*/
public static void userChangedQuality(int qualityIndex) {
if (shouldRememberVideoQuality()) {
userSelectedQualityIndex = selectedQualityIndex;
userSelectedQualityIndex = qualityIndex;
userChangedDefaultQuality = true;
}
}
/**
* Injection point. New quality menu.
* Injection point.
* @param videoResolution Human readable resolution: 480, 720, 1080.
*/
public static void userChangedQualityInNewFlyout(int selectedQuality) {
public static void userChangedQualityInFlyout(int videoResolution) {
Utils.verifyOnMainThread();
if (!shouldRememberVideoQuality()) return;
changeDefaultQuality(selectedQuality); // Quality is human readable resolution (ie: 1080).
changeDefaultQuality(videoResolution);
}
/**
* Injection point.
*/
public static void newVideoStarted(VideoInformation.PlaybackController ignoredPlayerController) {
Utils.verifyOnMainThread();
Logger.printDebug(() -> "newVideoStarted");
qualityNeedsUpdating = true;
videoQualities = null;

View File

@@ -23,7 +23,6 @@ import android.view.Gravity;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewParent;
import android.view.Window;
import android.view.WindowManager;
import android.view.animation.Animation;
@@ -42,7 +41,7 @@ import java.util.function.Function;
import app.revanced.extension.shared.Logger;
import app.revanced.extension.shared.Utils;
import app.revanced.extension.youtube.patches.VideoInformation;
import app.revanced.extension.youtube.patches.components.PlaybackSpeedMenuFilterPatch;
import app.revanced.extension.youtube.patches.components.PlaybackSpeedMenuFilter;
import app.revanced.extension.youtube.settings.Settings;
import app.revanced.extension.youtube.shared.PlayerType;
import kotlin.Unit;
@@ -80,6 +79,16 @@ public class CustomPlaybackSpeedPatch {
*/
public static final float[] customPlaybackSpeeds;
/**
* Minimum and maximum custom playback speeds of {@link #customPlaybackSpeeds}.
*/
private static final float customPlaybackSpeedsMin, customPlaybackSpeedsMax;
/**
* The last time the old playback menu was forcefully called.
*/
private static volatile long lastTimeOldPlaybackMenuInvoked;
/**
* Formats speeds to UI strings.
*/
@@ -90,11 +99,6 @@ public class CustomPlaybackSpeedPatch {
*/
private static WeakReference<Dialog> currentDialog = new WeakReference<>(null);
/**
* Minimum and maximum custom playback speeds of {@link #customPlaybackSpeeds}.
*/
private static final float customPlaybackSpeedsMin, customPlaybackSpeedsMax;
static {
// Cap at 2 decimals (rounds automatically).
speedFormatter.setMaximumFractionDigits(2);
@@ -174,25 +178,33 @@ public class CustomPlaybackSpeedPatch {
public static void onFlyoutMenuCreate(RecyclerView recyclerView) {
recyclerView.getViewTreeObserver().addOnDrawListener(() -> {
try {
if (PlaybackSpeedMenuFilterPatch.isPlaybackRateSelectorMenuVisible) {
if (hideLithoMenuAndShowCustomSpeedMenu(recyclerView, 5)) {
PlaybackSpeedMenuFilterPatch.isPlaybackRateSelectorMenuVisible = false;
if (PlaybackSpeedMenuFilter.isPlaybackRateSelectorMenuVisible) {
if (hideLithoMenuAndShowSpeedMenu(recyclerView, 5)) {
PlaybackSpeedMenuFilter.isPlaybackRateSelectorMenuVisible = false;
}
}
} catch (Exception ex) {
Logger.printException(() -> "onFlyoutMenuCreate failure", ex);
Logger.printException(() -> "isPlaybackRateSelectorMenuVisible failure", ex);
}
try {
if (PlaybackSpeedMenuFilter.isOldPlaybackSpeedMenuVisible) {
if (hideLithoMenuAndShowSpeedMenu(recyclerView, 8)) {
PlaybackSpeedMenuFilter.isOldPlaybackSpeedMenuVisible = false;
}
}
} catch (Exception ex) {
Logger.printException(() -> "isOldPlaybackSpeedMenuVisible failure", ex);
}
});
}
@SuppressWarnings("SameParameterValue")
private static boolean hideLithoMenuAndShowCustomSpeedMenu(RecyclerView recyclerView, int expectedChildCount) {
private static boolean hideLithoMenuAndShowSpeedMenu(RecyclerView recyclerView, int expectedChildCount) {
if (recyclerView.getChildCount() == 0) {
return false;
}
View firstChild = recyclerView.getChildAt(0);
if (!(firstChild instanceof ViewGroup playbackSpeedParentView)) {
if (!(recyclerView.getChildAt(0) instanceof ViewGroup playbackSpeedParentView)) {
return false;
}
@@ -200,33 +212,49 @@ public class CustomPlaybackSpeedPatch {
return false;
}
ViewParent parentView3rd = Utils.getParentView(recyclerView, 3);
if (!(parentView3rd instanceof ViewGroup)) {
return true;
if (!(Utils.getParentView(recyclerView, 3) instanceof ViewGroup parentView3rd)) {
return false;
}
ViewParent parentView4th = parentView3rd.getParent();
if (!(parentView4th instanceof ViewGroup)) {
return true;
if (!(parentView3rd.getParent() instanceof ViewGroup parentView4th)) {
return false;
}
// Dismiss View [R.id.touch_outside] is the 1st ChildView of the 4th ParentView.
// This only shows in phone layout.
final var touchInsidedView = ((ViewGroup) parentView4th).getChildAt(0);
var touchInsidedView = parentView4th.getChildAt(0);
touchInsidedView.setSoundEffectsEnabled(false);
touchInsidedView.performClick();
// In tablet layout there is no Dismiss View, instead we just hide all two parent views.
((ViewGroup) parentView3rd).setVisibility(View.GONE);
((ViewGroup) parentView4th).setVisibility(View.GONE);
parentView3rd.setVisibility(View.GONE);
parentView4th.setVisibility(View.GONE);
// Close the litho speed menu and show the modern custom speed dialog.
showModernCustomPlaybackSpeedDialog(recyclerView.getContext());
Logger.printDebug(() -> "Modern playback speed dialog shown");
// Close the litho speed menu and show the custom speeds.
if (Settings.RESTORE_OLD_SPEED_MENU.get()) {
showOldPlaybackSpeedMenu();
Logger.printDebug(() -> "Old playback speed dialog shown");
} else {
showModernCustomPlaybackSpeedDialog(recyclerView.getContext());
Logger.printDebug(() -> "Modern playback speed dialog shown");
}
return true;
}
public static void showOldPlaybackSpeedMenu() {
// This method is sometimes used multiple times.
// To prevent this, ignore method reuse within 1 second.
final long now = System.currentTimeMillis();
if (now - lastTimeOldPlaybackMenuInvoked < 1000) {
Logger.printDebug(() -> "Ignoring call to showOldPlaybackSpeedMenu");
return;
}
lastTimeOldPlaybackMenuInvoked = now;
// Rest of the implementation added by patch.
}
/**
* Displays a modern custom dialog for adjusting video playback speed.
* <p>

View File

@@ -68,8 +68,9 @@ public class Settings extends BaseSettings {
public static final BooleanSetting REMEMBER_PLAYBACK_SPEED_LAST_SELECTED = new BooleanSetting("revanced_remember_playback_speed_last_selected", FALSE);
public static final BooleanSetting REMEMBER_PLAYBACK_SPEED_LAST_SELECTED_TOAST = new BooleanSetting("revanced_remember_playback_speed_last_selected_toast", TRUE, false,
parent(REMEMBER_PLAYBACK_SPEED_LAST_SELECTED));
public static final BooleanSetting CUSTOM_SPEED_MENU = new BooleanSetting("revanced_custom_speed_menu", TRUE);
public static final FloatSetting PLAYBACK_SPEED_DEFAULT = new FloatSetting("revanced_playback_speed_default", -2.0f);
public static final BooleanSetting CUSTOM_SPEED_MENU = new BooleanSetting("revanced_custom_speed_menu", TRUE);
public static final BooleanSetting RESTORE_OLD_SPEED_MENU = new BooleanSetting("revanced_restore_old_speed_menu", FALSE, parent(CUSTOM_SPEED_MENU));
public static final StringSetting CUSTOM_PLAYBACK_SPEEDS = new StringSetting("revanced_custom_playback_speeds",
"0.25\n0.5\n0.75\n1.0\n1.25\n1.5\n1.75\n2.0\n2.5\n3.0\n4.0\n5.0\n6.0\n7.0\n8.0", true);

View File

@@ -9,9 +9,6 @@ import app.revanced.extension.youtube.patches.VideoInformation;
import app.revanced.extension.youtube.patches.playback.speed.CustomPlaybackSpeedPatch;
import app.revanced.extension.youtube.settings.Settings;
import static app.revanced.extension.shared.StringRef.str;
import static app.revanced.extension.shared.Utils.showToastShort;
@SuppressWarnings("unused")
public class PlaybackSpeedDialogButton {
@Nullable
@@ -29,7 +26,11 @@ public class PlaybackSpeedDialogButton {
Settings.PLAYBACK_SPEED_DIALOG_BUTTON::get,
view -> {
try {
CustomPlaybackSpeedPatch.showModernCustomPlaybackSpeedDialog(view.getContext());
if (Settings.RESTORE_OLD_SPEED_MENU.get()) {
CustomPlaybackSpeedPatch.showOldPlaybackSpeedMenu();
} else {
CustomPlaybackSpeedPatch.showModernCustomPlaybackSpeedDialog(view.getContext());
}
} catch (Exception ex) {
Logger.printException(() -> "speed button onClick failure", ex);
}

View File

@@ -0,0 +1,12 @@
package com.google.android.libraries.youtube.innertube.model.media;
public class VideoQuality {
public final String patch_getQualityName() {
throw new UnsupportedOperationException("Stub");
}
public final int patch_getResolution() {
throw new UnsupportedOperationException("Stub");
}
}

View File

@@ -3,4 +3,4 @@ org.gradle.jvmargs = -Xms512M -Xmx2048M
org.gradle.parallel = true
android.useAndroidX = true
kotlin.code.style = official
version = 5.32.0-dev.3
version = 5.33.0-dev.6

9
package-lock.json generated
View File

@@ -9,7 +9,7 @@
"@semantic-release/changelog": "^6.0.3",
"@semantic-release/git": "^10.0.1",
"gradle-semantic-release-plugin": "^1.10.1",
"semantic-release": "^24.2.6"
"semantic-release": "^24.2.7"
}
},
"node_modules/@babel/code-frame": {
@@ -6889,10 +6889,11 @@
"license": "MIT"
},
"node_modules/semantic-release": {
"version": "24.2.6",
"resolved": "https://registry.npmjs.org/semantic-release/-/semantic-release-24.2.6.tgz",
"integrity": "sha512-D0cwjlO5RZzHHxAcsoF1HxiRLfC3ehw+ay+zntzFs6PNX6aV0JzKNG15mpxPipBYa/l4fHly88dHvgDyqwb1Ww==",
"version": "24.2.7",
"resolved": "https://registry.npmjs.org/semantic-release/-/semantic-release-24.2.7.tgz",
"integrity": "sha512-g7RssbTAbir1k/S7uSwSVZFfFXwpomUB9Oas0+xi9KStSCmeDXcA7rNhiskjLqvUe/Evhx8fVCT16OSa34eM5g==",
"dev": true,
"license": "MIT",
"dependencies": {
"@semantic-release/commit-analyzer": "^13.0.0-beta.1",
"@semantic-release/error": "^4.0.0",

View File

@@ -4,6 +4,6 @@
"@semantic-release/changelog": "^6.0.3",
"@semantic-release/git": "^10.0.1",
"gradle-semantic-release-plugin": "^1.10.1",
"semantic-release": "^24.2.6"
"semantic-release": "^24.2.7"
}
}

View File

@@ -424,6 +424,10 @@ public final class app/revanced/patches/openinghours/misc/fix/crash/FixCrashPatc
public static final fun getFixCrashPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
}
public final class app/revanced/patches/orfon/detection/root/RemoveRootDetectionPatchKt {
public static final fun getRemoveRootDetectionPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
}
public final class app/revanced/patches/pandora/ads/DisableAudioAdsPatchKt {
public static final fun getDisableAudioAdsPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
}

View File

@@ -23,7 +23,6 @@ internal val createInboxSubTabsFingerprint = fingerprint {
}
internal val loadInboxAdsFingerprint = fingerprint {
accessFlags(AccessFlags.PUBLIC, AccessFlags.STATIC)
returns("V")
strings(
"ads_load_begin",

View File

@@ -8,12 +8,7 @@ val hideVideoAdsPatch = bytecodePatch(
name = "Hide music video ads",
description = "Hides ads that appear while listening to or streaming music videos, podcasts, or songs.",
) {
compatibleWith(
"com.google.android.apps.youtube.music"(
"7.16.53",
"8.05.51"
)
)
compatibleWith("com.google.android.apps.youtube.music")
execute {
navigate(showVideoAdsParentFingerprint.originalMethod)

View File

@@ -8,12 +8,7 @@ val enableExclusiveAudioPlaybackPatch = bytecodePatch(
name = "Enable exclusive audio playback",
description = "Enables the option to play audio without video.",
) {
compatibleWith(
"com.google.android.apps.youtube.music"(
"7.16.53",
"8.05.51"
)
)
compatibleWith("com.google.android.apps.youtube.music")
execute {
allowExclusiveAudioPlaybackFingerprint.method.returnEarly(true)

View File

@@ -11,12 +11,7 @@ val permanentRepeatPatch = bytecodePatch(
description = "Permanently remember your repeating preference even if the playlist ends or another track is played.",
use = false,
) {
compatibleWith(
"com.google.android.apps.youtube.music"(
"7.16.53",
"8.05.51"
)
)
compatibleWith("com.google.android.apps.youtube.music")
execute {
val startIndex = repeatTrackFingerprint.patternMatch!!.endIndex

View File

@@ -7,18 +7,9 @@ import app.revanced.patcher.patch.bytecodePatch
@Suppress("unused")
val permanentShufflePatch = bytecodePatch(
description = "Permanently remember your shuffle preference " +
"even if the playlist ends or another track is played.",
use = false,
"even if the playlist ends or another track is played."
) {
compatibleWith(
"com.google.android.apps.youtube.music"(
"6.45.54",
"6.51.53",
"7.01.53",
"7.02.52",
"7.03.52",
),
)
compatibleWith("com.google.android.apps.youtube.music")
execute {
disableShuffleFingerprint.method.addInstruction(0, "return-void")

View File

@@ -11,12 +11,7 @@ val hideCategoryBar = bytecodePatch(
description = "Hides the category bar at the top of the homepage.",
use = false,
) {
compatibleWith(
"com.google.android.apps.youtube.music"(
"7.16.53",
"8.05.51"
)
)
compatibleWith("com.google.android.apps.youtube.music")
execute {
constructCategoryBarFingerprint.method.apply {

View File

@@ -11,12 +11,7 @@ val hideGetPremiumPatch = bytecodePatch(
name = "Hide 'Get Music Premium' label",
description = "Hides the \"Get Music Premium\" label from the account menu and settings.",
) {
compatibleWith(
"com.google.android.apps.youtube.music"(
"7.16.53",
"8.05.51"
)
)
compatibleWith("com.google.android.apps.youtube.music")
execute {
hideGetPremiumFingerprint.method.apply {

View File

@@ -18,12 +18,7 @@ val removeUpgradeButtonPatch = bytecodePatch(
name = "Remove upgrade button",
description = "Removes the upgrade tab from the pivot bar.",
) {
compatibleWith(
"com.google.android.apps.youtube.music"(
"7.16.53",
"8.05.51"
)
)
compatibleWith("com.google.android.apps.youtube.music")
execute {
pivotBarConstructorFingerprint.method.apply {

View File

@@ -8,12 +8,7 @@ val bypassCertificateChecksPatch = bytecodePatch(
name = "Bypass certificate checks",
description = "Bypasses certificate checks which prevent YouTube Music from working on Android Auto.",
) {
compatibleWith(
"com.google.android.apps.youtube.music"(
"7.16.53",
"8.05.51"
)
)
compatibleWith("com.google.android.apps.youtube.music")
execute {
checkCertificateFingerprint.method.returnEarly(true)

View File

@@ -8,12 +8,7 @@ val backgroundPlaybackPatch = bytecodePatch(
name = "Remove background playback restrictions",
description = "Removes restrictions on background playback, including playing kids videos in the background.",
) {
compatibleWith(
"com.google.android.apps.youtube.music"(
"7.16.53",
"8.05.51"
)
)
compatibleWith("com.google.android.apps.youtube.music")
execute {
kidsBackgroundPlaybackPolicyControllerFingerprint.method.addInstruction(

View File

@@ -25,12 +25,7 @@ val spoofClientPatch = bytecodePatch(
name = "Spoof client",
description = "Spoofs the client to fix playback.",
) {
compatibleWith(
"com.google.android.apps.youtube.music"(
"7.16.53",
"8.05.51"
)
)
compatibleWith("com.google.android.apps.youtube.music")
dependsOn(
sharedExtensionPatch,

View File

@@ -0,0 +1,13 @@
package app.revanced.patches.orfon.detection.root
import app.revanced.patcher.fingerprint
import com.android.tools.smali.dexlib2.AccessFlags
internal val isDeviceRootedFingeprint = fingerprint {
accessFlags(AccessFlags.PUBLIC)
returns("Z")
custom { method, classDef ->
method.name == "isDeviceRooted" &&
classDef.endsWith("/RootChecker;")
}
}

View File

@@ -0,0 +1,16 @@
package app.revanced.patches.orfon.detection.root
import app.revanced.patcher.patch.bytecodePatch
import app.revanced.util.returnEarly
@Suppress("unused")
val removeRootDetectionPatch = bytecodePatch(
name = "Remove root detection",
description = "Removes the check for root permissions.",
) {
compatibleWith("com.nousguide.android.orftvthek")
execute {
isDeviceRootedFingeprint.method.returnEarly(false)
}
}

View File

@@ -99,7 +99,7 @@ val hideInfoCardsPatch = bytecodePatch(
)
// Info cards can also appear as Litho components.
val filterClassDescriptor = "Lapp/revanced/extension/youtube/patches/components/HideInfoCardsFilterPatch;"
val filterClassDescriptor = "Lapp/revanced/extension/youtube/patches/components/HideInfoCardsFilter;"
addLithoFilter(filterClassDescriptor)
}
}

View File

@@ -43,7 +43,7 @@ private const val EXTENSION_CLASS_DESCRIPTOR =
"Lapp/revanced/extension/youtube/patches/ReturnYouTubeDislikePatch;"
private const val FILTER_CLASS_DESCRIPTOR =
"Lapp/revanced/extension/youtube/patches/components/ReturnYouTubeDislikeFilterPatch;"
"Lapp/revanced/extension/youtube/patches/components/ReturnYouTubeDislikeFilter;"
val returnYouTubeDislikePatch = bytecodePatch(
name = "Return YouTube Dislike",

View File

@@ -156,7 +156,7 @@ val lithoFilterPatch = bytecodePatch(
move-object/from16 v$freeRegister, p2
iget-object v$identifierRegister, v$freeRegister, $conversionContextIdentifierField
iget-object v$pathRegister, v$freeRegister, $conversionContextPathBuilderField
invoke-static { v$identifierRegister, v$pathRegister }, $EXTENSION_CLASS_DESCRIPTOR->shouldFilter(Ljava/lang/String;Ljava/lang/StringBuilder;)Z
invoke-static { v$identifierRegister, v$pathRegister }, $EXTENSION_CLASS_DESCRIPTOR->isFiltered(Ljava/lang/String;Ljava/lang/StringBuilder;)Z
move-result v$freeRegister
if-eqz v$freeRegister, :unfiltered

View File

@@ -121,7 +121,7 @@ internal val subtitleButtonControllerFingerprint = fingerprint {
)
}
internal val newVideoQualityChangedFingerprint = fingerprint {
internal val videoQualityChangedFingerprint = fingerprint {
accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL)
returns("L")
parameters("L")

View File

@@ -1,7 +1,7 @@
package app.revanced.patches.youtube.video.information
import app.revanced.patcher.fingerprint
import app.revanced.patches.youtube.shared.newVideoQualityChangedFingerprint
import app.revanced.patches.youtube.shared.videoQualityChangedFingerprint
import app.revanced.util.getReference
import com.android.tools.smali.dexlib2.AccessFlags
import com.android.tools.smali.dexlib2.Opcode
@@ -110,7 +110,7 @@ internal val seekRelativeFingerprint = fingerprint {
}
/**
* Resolves with the class found in [newVideoQualityChangedFingerprint].
* Resolves with the class found in [videoQualityChangedFingerprint].
*/
internal val playbackSpeedMenuSpeedChangedFingerprint = fingerprint {
accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL)

View File

@@ -9,7 +9,7 @@ import app.revanced.patcher.util.proxy.mutableTypes.MutableMethod
import app.revanced.patcher.util.proxy.mutableTypes.MutableMethod.Companion.toMutable
import app.revanced.patcher.util.smali.toInstructions
import app.revanced.patches.youtube.misc.extension.sharedExtensionPatch
import app.revanced.patches.youtube.shared.newVideoQualityChangedFingerprint
import app.revanced.patches.youtube.shared.videoQualityChangedFingerprint
import app.revanced.patches.youtube.video.playerresponse.Hook
import app.revanced.patches.youtube.video.playerresponse.addPlayerResponseMethodHook
import app.revanced.patches.youtube.video.playerresponse.playerResponseMethodHookPatch
@@ -263,7 +263,7 @@ val videoInformationPatch = bytecodePatch(
// Handle new playback speed menu.
playbackSpeedMenuSpeedChangedFingerprint.match(
newVideoQualityChangedFingerprint.originalClassDef,
videoQualityChangedFingerprint.originalClassDef,
).method.apply {
val index = indexOfFirstInstructionOrThrow(Opcode.IGET)

View File

@@ -5,6 +5,21 @@ import app.revanced.util.literal
import com.android.tools.smali.dexlib2.AccessFlags
import com.android.tools.smali.dexlib2.Opcode
internal const val YOUTUBE_VIDEO_QUALITY_CLASS_TYPE = "Lcom/google/android/libraries/youtube/innertube/model/media/VideoQuality;"
internal val videoQualityFingerprint = fingerprint {
accessFlags(AccessFlags.PUBLIC, AccessFlags.CONSTRUCTOR)
parameters(
"I", // Resolution.
"Ljava/lang/String;", // Human readable resolution: "480p", "1080p Premium", etc
"Z",
"L"
)
custom { _, classDef ->
classDef.type == YOUTUBE_VIDEO_QUALITY_CLASS_TYPE
}
}
/**
* Matches with the class found in [videoQualitySetterFingerprint].
*/
@@ -23,6 +38,22 @@ internal val videoQualityItemOnClickParentFingerprint = fingerprint {
strings("VIDEO_QUALITIES_MENU_BOTTOM_SHEET_FRAGMENT")
}
/**
* Resolves to class found in [videoQualityItemOnClickFingerprint].
*/
internal val videoQualityItemOnClickFingerprint = fingerprint {
returns("V")
parameters(
"Landroid/widget/AdapterView;",
"Landroid/view/View;",
"I",
"J"
)
custom { method, _ ->
method.name == "onItemClick"
}
}
internal val videoQualitySetterFingerprint = fingerprint {
accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL)
returns("V")
@@ -37,7 +68,6 @@ internal val videoQualitySetterFingerprint = fingerprint {
strings("menu_item_video_quality")
}
internal val videoQualityMenuOptionsFingerprint = fingerprint {
accessFlags(AccessFlags.STATIC)
returns("[L")

View File

@@ -3,8 +3,8 @@ package app.revanced.patches.youtube.video.quality
import app.revanced.patcher.extensions.InstructionExtensions.addInstruction
import app.revanced.patcher.extensions.InstructionExtensions.addInstructions
import app.revanced.patcher.extensions.InstructionExtensions.getInstruction
import app.revanced.patcher.patch.PatchException
import app.revanced.patcher.patch.bytecodePatch
import app.revanced.patcher.util.proxy.mutableTypes.MutableMethod.Companion.toMutable
import app.revanced.patches.all.misc.resources.addResources
import app.revanced.patches.all.misc.resources.addResourcesPatch
import app.revanced.patches.shared.misc.settings.preference.ListPreference
@@ -12,15 +12,21 @@ import app.revanced.patches.shared.misc.settings.preference.SwitchPreference
import app.revanced.patches.youtube.misc.extension.sharedExtensionPatch
import app.revanced.patches.youtube.misc.playertype.playerTypeHookPatch
import app.revanced.patches.youtube.misc.settings.settingsPatch
import app.revanced.patches.youtube.shared.newVideoQualityChangedFingerprint
import app.revanced.patches.youtube.shared.videoQualityChangedFingerprint
import app.revanced.patches.youtube.video.information.onCreateHook
import app.revanced.patches.youtube.video.information.videoInformationPatch
import com.android.tools.smali.dexlib2.AccessFlags
import com.android.tools.smali.dexlib2.builder.MutableMethodImplementation
import com.android.tools.smali.dexlib2.iface.instruction.ReferenceInstruction
import com.android.tools.smali.dexlib2.iface.instruction.TwoRegisterInstruction
import com.android.tools.smali.dexlib2.iface.reference.FieldReference
import com.android.tools.smali.dexlib2.immutable.ImmutableMethod
import com.android.tools.smali.dexlib2.immutable.ImmutableMethodParameter
private const val EXTENSION_CLASS_DESCRIPTOR =
"Lapp/revanced/extension/youtube/patches/playback/quality/RememberVideoQualityPatch;"
private const val EXTENSION_VIDEO_QUALITY_MENU_INTERFACE =
"Lapp/revanced/extension/youtube/patches/playback/quality/RememberVideoQualityPatch\$VideoQualityMenuInterface;"
val rememberVideoQualityPatch = bytecodePatch {
dependsOn(
@@ -70,72 +76,151 @@ val rememberVideoQualityPatch = bytecodePatch {
*/
onCreateHook(EXTENSION_CLASS_DESCRIPTOR, "newVideoStarted")
videoQualityFingerprint.let {
// Fix bad data used by YouTube.
it.method.addInstructions(
0,
"""
invoke-static { p2, p1 }, $EXTENSION_CLASS_DESCRIPTOR->fixVideoQualityResolution(Ljava/lang/String;I)I
move-result p1
"""
)
// Add methods to access obfuscated quality fields.
it.classDef.apply {
methods.add(
ImmutableMethod(
type,
"patch_getQualityName",
listOf(),
"Ljava/lang/String;",
AccessFlags.PUBLIC.value or AccessFlags.FINAL.value,
null,
null,
MutableMethodImplementation(2),
).toMutable().apply {
// Only one string field.
val qualityNameField = fields.single { field ->
field.type == "Ljava/lang/String;"
}
addInstructions(
0,
"""
iget-object v0, p0, $qualityNameField
return-object v0
"""
)
}
)
methods.add(
ImmutableMethod(
type,
"patch_getResolution",
listOf(),
"I",
AccessFlags.PUBLIC.value or AccessFlags.FINAL.value,
null,
null,
MutableMethodImplementation(2),
).toMutable().apply {
val resolutionField = fields.single { field ->
field.type == "I"
}
addInstructions(
0,
"""
iget v0, p0, $resolutionField
return v0
"""
)
}
)
}
}
// Inject a call to set the remembered quality once a video loads.
setQualityByIndexMethodClassFieldReferenceFingerprint.match(
videoQualitySetterFingerprint.originalClassDef,
videoQualitySetterFingerprint.originalClassDef
).let { match ->
// This instruction refers to the field with the type that contains the setQualityByIndex method.
val instructions = match.method.implementation!!.instructions
val getOnItemClickListenerClassReference =
val onItemClickListenerClassReference =
(instructions.elementAt(0) as ReferenceInstruction).reference
val getSetQualityByIndexMethodClassFieldReference =
(instructions.elementAt(1) as ReferenceInstruction).reference
val setQualityFieldReference =
((instructions.elementAt(1) as ReferenceInstruction).reference) as FieldReference
val setQualityByIndexMethodClassFieldReference =
getSetQualityByIndexMethodClassFieldReference as FieldReference
proxy(
classes.find { classDef ->
classDef.type == setQualityFieldReference.type
}!!
).mutableClass.apply {
// Add interface and helper methods to allow extension code to call obfuscated methods.
interfaces.add(EXTENSION_VIDEO_QUALITY_MENU_INTERFACE)
val setQualityByIndexMethodClass = classes
.find { classDef -> classDef.type == setQualityByIndexMethodClassFieldReference.type }!!
// Get the name of the setQualityByIndex method.
val setQualityMenuIndexMethod = methods.single {
method -> method.parameterTypes.firstOrNull() == YOUTUBE_VIDEO_QUALITY_CLASS_TYPE
}
// Get the name of the setQualityByIndex method.
val setQualityByIndexMethod = setQualityByIndexMethodClass.methods
.find { method -> method.parameterTypes.first() == "I" }
?: throw PatchException("Could not find setQualityByIndex method")
methods.add(
ImmutableMethod(
type,
"patch_setMenuIndexFromQuality",
listOf(
ImmutableMethodParameter(YOUTUBE_VIDEO_QUALITY_CLASS_TYPE, null, null)
),
"V",
AccessFlags.PUBLIC.value or AccessFlags.FINAL.value,
null,
null,
MutableMethodImplementation(2),
).toMutable().apply {
addInstructions(
0,
"""
invoke-virtual { p0, p1 }, $setQualityMenuIndexMethod
return-void
"""
)
}
)
}
videoQualitySetterFingerprint.method.addInstructions(
0,
"""
# Get the object instance to invoke the setQualityByIndex method on.
iget-object v0, p0, $getOnItemClickListenerClassReference
iget-object v0, v0, $getSetQualityByIndexMethodClassFieldReference
iget-object v0, p0, $onItemClickListenerClassReference
iget-object v0, v0, $setQualityFieldReference
# Get the method name.
const-string v1, "${setQualityByIndexMethod.name}"
# Set the quality.
# The first parameter is the array list of video qualities.
# The second parameter is the index of the selected quality.
# The register v0 stores the object instance to invoke the setQualityByIndex method on.
# The register v1 stores the name of the setQualityByIndex method.
invoke-static { p1, p2, v0, v1 }, $EXTENSION_CLASS_DESCRIPTOR->setVideoQuality([Ljava/lang/Object;ILjava/lang/Object;Ljava/lang/String;)I
invoke-static { p1, v0, p2 }, $EXTENSION_CLASS_DESCRIPTOR->setVideoQuality([$YOUTUBE_VIDEO_QUALITY_CLASS_TYPE${EXTENSION_VIDEO_QUALITY_MENU_INTERFACE}I)I
move-result p2
""",
"""
)
}
// Inject a call to remember the selected quality.
videoQualityItemOnClickParentFingerprint.classDef.methods.find { it.name == "onItemClick" }
?.apply {
val listItemIndexParameter = 3
videoQualityItemOnClickFingerprint.match(
videoQualityItemOnClickParentFingerprint.classDef
).method.addInstruction(
0,
"invoke-static { p3 }, $EXTENSION_CLASS_DESCRIPTOR->userChangedQuality(I)V"
)
// Inject a call to remember the user selected quality.
videoQualityChangedFingerprint.let {
it.method.apply {
val index = it.patternMatch!!.startIndex
val register = getInstruction<TwoRegisterInstruction>(index).registerA
addInstruction(
0,
"invoke-static { p$listItemIndexParameter }, " +
"$EXTENSION_CLASS_DESCRIPTOR->userChangedQuality(I)V",
index + 1,
"invoke-static { v$register }, $EXTENSION_CLASS_DESCRIPTOR->userChangedQualityInFlyout(I)V",
)
} ?: throw PatchException("Failed to find onItemClick method")
// Remember video quality if not using old layout menu.
newVideoQualityChangedFingerprint.method.apply {
val index = newVideoQualityChangedFingerprint.patternMatch!!.startIndex
val qualityRegister = getInstruction<TwoRegisterInstruction>(index).registerA
addInstruction(
index + 1,
"invoke-static { v$qualityRegister }, " +
"$EXTENSION_CLASS_DESCRIPTOR->userChangedQualityInNewFlyout(I)V",
)
}
}
}
}

View File

@@ -1,11 +1,19 @@
package app.revanced.patches.youtube.video.speed.custom
import app.revanced.patcher.extensions.InstructionExtensions.addInstruction
import app.revanced.patcher.extensions.InstructionExtensions.addInstructions
import app.revanced.patcher.extensions.InstructionExtensions.addInstructionsWithLabels
import app.revanced.patcher.extensions.InstructionExtensions.getInstruction
import app.revanced.patcher.extensions.InstructionExtensions.instructions
import app.revanced.patcher.extensions.InstructionExtensions.replaceInstruction
import app.revanced.patcher.patch.bytecodePatch
import app.revanced.patcher.patch.resourcePatch
import app.revanced.patcher.util.proxy.mutableTypes.MutableField.Companion.toMutable
import app.revanced.patches.all.misc.resources.addResources
import app.revanced.patches.all.misc.resources.addResourcesPatch
import app.revanced.patches.shared.misc.mapping.get
import app.revanced.patches.shared.misc.mapping.resourceMappingPatch
import app.revanced.patches.shared.misc.mapping.resourceMappings
import app.revanced.patches.shared.misc.settings.preference.InputType
import app.revanced.patches.shared.misc.settings.preference.SwitchPreference
import app.revanced.patches.shared.misc.settings.preference.TextPreference
@@ -18,18 +26,34 @@ import app.revanced.patches.youtube.misc.recyclerviewtree.hook.addRecyclerViewTr
import app.revanced.patches.youtube.misc.recyclerviewtree.hook.recyclerViewTreeHookPatch
import app.revanced.patches.youtube.misc.settings.settingsPatch
import app.revanced.patches.youtube.video.speed.settingsMenuVideoSpeedGroup
import app.revanced.util.getReference
import app.revanced.util.indexOfFirstInstructionOrThrow
import app.revanced.util.indexOfFirstLiteralInstruction
import app.revanced.util.indexOfFirstLiteralInstructionOrThrow
import com.android.tools.smali.dexlib2.AccessFlags
import com.android.tools.smali.dexlib2.iface.instruction.NarrowLiteralInstruction
import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
import com.android.tools.smali.dexlib2.iface.reference.FieldReference
import com.android.tools.smali.dexlib2.iface.reference.MethodReference
import com.android.tools.smali.dexlib2.immutable.ImmutableField
private const val FILTER_CLASS_DESCRIPTOR =
"Lapp/revanced/extension/youtube/patches/components/PlaybackSpeedMenuFilterPatch;"
"Lapp/revanced/extension/youtube/patches/components/PlaybackSpeedMenuFilter;"
private const val EXTENSION_CLASS_DESCRIPTOR =
internal const val EXTENSION_CLASS_DESCRIPTOR =
"Lapp/revanced/extension/youtube/patches/playback/speed/CustomPlaybackSpeedPatch;"
internal var speedUnavailableId = -1L
private set
private val customPlaybackSpeedResourcePatch = resourcePatch {
dependsOn(resourceMappingPatch)
execute {
speedUnavailableId = resourceMappings["string", "varispeed_unavailable_message"]
}
}
internal val customPlaybackSpeedPatch = bytecodePatch(
description = "Adds custom playback speed options.",
) {
@@ -39,7 +63,8 @@ internal val customPlaybackSpeedPatch = bytecodePatch(
addResourcesPatch,
lithoFilterPatch,
versionCheckPatch,
recyclerViewTreeHookPatch
recyclerViewTreeHookPatch,
customPlaybackSpeedResourcePatch
)
execute {
@@ -48,6 +73,7 @@ internal val customPlaybackSpeedPatch = bytecodePatch(
settingsMenuVideoSpeedGroup.addAll(
listOf(
SwitchPreference("revanced_custom_speed_menu"),
SwitchPreference("revanced_restore_old_speed_menu"),
TextPreference(
"revanced_custom_playback_speeds",
inputType = InputType.TEXT_MULTI_LINE
@@ -77,15 +103,88 @@ internal val customPlaybackSpeedPatch = bytecodePatch(
replaceInstruction(limitMaxIndex, "const/high16 v$limitMaxRegister, 8.0f")
}
// Replace the speeds float array with custom speeds.
// These speeds are used if the speed menu is immediately opened after a video is opened.
speedArrayGeneratorFingerprint.method.apply {
val sizeCallIndex = indexOfFirstInstructionOrThrow { getReference<MethodReference>()?.name == "size" }
val sizeCallResultRegister = getInstruction<OneRegisterInstruction>(sizeCallIndex + 1).registerA
replaceInstruction(sizeCallIndex + 1, "const/4 v$sizeCallResultRegister, 0x0")
val arrayLengthConstIndex = indexOfFirstLiteralInstructionOrThrow(7)
val arrayLengthConstDestination = getInstruction<OneRegisterInstruction>(arrayLengthConstIndex).registerA
val playbackSpeedsArrayType = "$EXTENSION_CLASS_DESCRIPTOR->customPlaybackSpeeds:[F"
addInstructions(
arrayLengthConstIndex + 1,
"""
sget-object v$arrayLengthConstDestination, $playbackSpeedsArrayType
array-length v$arrayLengthConstDestination, v$arrayLengthConstDestination
""",
)
val originalArrayFetchIndex = indexOfFirstInstructionOrThrow {
val reference = getReference<FieldReference>()
reference?.type == "[F" && reference.definingClass.endsWith("/PlayerConfigModel;")
}
val originalArrayFetchDestination =
getInstruction<OneRegisterInstruction>(originalArrayFetchIndex).registerA
replaceInstruction(
originalArrayFetchIndex,
"sget-object v$originalArrayFetchDestination, $playbackSpeedsArrayType",
)
}
// region Force old video quality menu.
// Add a static INSTANCE field to the class.
// This is later used to call "showOldPlaybackSpeedMenu" on the instance.
val instanceField = ImmutableField(
getOldPlaybackSpeedsFingerprint.originalClassDef.type,
"INSTANCE",
getOldPlaybackSpeedsFingerprint.originalClassDef.type,
AccessFlags.PUBLIC.value or AccessFlags.STATIC.value,
null,
null,
null,
).toMutable()
getOldPlaybackSpeedsFingerprint.classDef.staticFields.add(instanceField)
// Set the INSTANCE field to the instance of the class.
// In order to prevent a conflict with another patch, add the instruction at index 1.
getOldPlaybackSpeedsFingerprint.method.addInstruction(1, "sput-object p0, $instanceField")
// Get the "showOldPlaybackSpeedMenu" method.
// This is later called on the field INSTANCE.
val showOldPlaybackSpeedMenuMethod = showOldPlaybackSpeedMenuFingerprint.match(
getOldPlaybackSpeedsFingerprint.classDef,
).method
// Insert the call to the "showOldPlaybackSpeedMenu" method on the field INSTANCE.
showOldPlaybackSpeedMenuExtensionFingerprint.method.apply {
addInstructionsWithLabels(
instructions.lastIndex,
"""
sget-object v0, $instanceField
if-nez v0, :not_null
return-void
:not_null
invoke-virtual { v0 }, $showOldPlaybackSpeedMenuMethod
"""
)
}
// endregion
// Close the unpatched playback dialog and show the modern custom dialog.
addRecyclerViewTreeHook(EXTENSION_CLASS_DESCRIPTOR)
// Required to check if the playback speed menu is currently shown.
addLithoFilter(FILTER_CLASS_DESCRIPTOR)
// endregion
// region Custom tap and hold 2x speed.
if (is_19_25_or_greater) {

View File

@@ -3,10 +3,33 @@ package app.revanced.patches.youtube.video.speed.custom
import app.revanced.patcher.fingerprint
import app.revanced.util.getReference
import app.revanced.util.indexOfFirstInstruction
import app.revanced.util.literal
import com.android.tools.smali.dexlib2.AccessFlags
import com.android.tools.smali.dexlib2.Opcode
import com.android.tools.smali.dexlib2.iface.reference.StringReference
internal val getOldPlaybackSpeedsFingerprint = fingerprint {
parameters("[L", "I")
strings("menu_item_playback_speed")
}
internal val showOldPlaybackSpeedMenuFingerprint = fingerprint {
literal { speedUnavailableId }
}
internal val showOldPlaybackSpeedMenuExtensionFingerprint = fingerprint {
custom { method, classDef ->
method.name == "showOldPlaybackSpeedMenu" && classDef.type == EXTENSION_CLASS_DESCRIPTOR
}
}
internal val speedArrayGeneratorFingerprint = fingerprint {
accessFlags(AccessFlags.PUBLIC, AccessFlags.STATIC)
returns("[L")
parameters("Lcom/google/android/libraries/youtube/innertube/model/player/PlayerResponseModel;")
strings("0.0#")
}
internal val speedLimiterFingerprint = fingerprint {
accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL)
returns("V")

View File

@@ -468,8 +468,15 @@ Second \"item\" text"</string>
<string name="revanced_external_downloader_action_button_summary_on">يفتح زر التنزيل أداة التنزيل الخارجية</string>
<string name="revanced_external_downloader_action_button_summary_off">يفتح زر التنزيل أداة التنزيل الأصلية داخل التطبيق</string>
<string name="revanced_external_downloader_name_title">اسم حزمة أداة التنزيل</string>
<string name="revanced_external_downloader_name_summary">اسم الحزمة لتطبيق التنزيل الخارجي المثبت لديك، مثل NewPipe أو Seal</string>
<string name="revanced_external_downloader_name_summary">اسم حزمة تطبيق التنزيل الخارجي المثبت لديك</string>
<string name="revanced_external_downloader_other_item_hint">أدخل اسم الحزمة</string>
<string name="revanced_external_downloader_other_item">أخرى</string>
<string name="revanced_external_downloader_not_found_title">التطبيق غير مثبت</string>
<string name="revanced_external_downloader_not_installed_warning">لم يتم تثبيت %s . الرجاء تثبيته.</string>
<string name="revanced_external_downloader_package_not_found_warning">"تعذر العثور على التطبيق المثبت باسم الحزمة: %s
تأكد من أن اسم الحزمة صحيح وأن التطبيق مثبت"</string>
<string name="revanced_external_downloader_empty_warning">لا يمكن أن يكون اسم الحزمة فارغًا</string>
</patch>
<patch id="interaction.seekbar.disablePreciseSeekingGesturePatch">
<string name="revanced_disable_precise_seeking_gesture_title">تعطيل إيماءة التمرير الدقيقة</string>
@@ -1462,6 +1469,9 @@ Second \"item\" text"</string>
<string name="revanced_custom_speed_menu_title">قائمة سرعة التشغيل المخصصة</string>
<string name="revanced_custom_speed_menu_summary_on">يتم عرض قائمة سرعة التشغيل المخصصة</string>
<string name="revanced_custom_speed_menu_summary_off">لا يتم عرض قائمة سرعة التشغيل المخصصة</string>
<string name="revanced_restore_old_speed_menu_title">استعادة قائمة سرعة التشغيل القديمة</string>
<string name="revanced_restore_old_speed_menu_summary_on">قائمة السرعة القديمة معروضة</string>
<string name="revanced_restore_old_speed_menu_summary_off">قائمة السرعة الحديثة معروضة</string>
<string name="revanced_custom_playback_speeds_title">سرعة التشغيل المخصصة</string>
<string name="revanced_custom_playback_speeds_summary">إضافة أو تغيير سرعة التشغيل المخصصة</string>
<string name="revanced_custom_playback_speeds_invalid">يجب أن تكون سرعات التشغيل المخصصة أقل من %s</string>

View File

@@ -137,6 +137,7 @@ Gözlənilməz hallardan xəbərdar olmayacaqsınız."</string>
<string name="revanced_debug_logs_disabled">Sazlama qeydi qapalıdır</string>
<string name="revanced_debug_logs_none_found">Qeydlər tapılmadı</string>
<string name="revanced_debug_logs_copied_to_clipboard">Qeydlər köçürüldü</string>
<string name="revanced_debug_logs_failed_to_export">Qeydləri ixrac etmək alınmadı: %s</string>
<string name="revanced_debug_logs_clear_buffer_title">Sazlama qeydlərini təmizlə</string>
<string name="revanced_debug_logs_clear_buffer_summary">Saxlanılan bütün ReVanced sazlama qeydlərini təmizləyir</string>
<string name="revanced_debug_logs_clear_toast">Qeydlər silindi</string>
@@ -467,8 +468,15 @@ Bu xüsusiyyət yalnız köhnə cihazlar üçün mövcuddur"</string>
<string name="revanced_external_downloader_action_button_summary_on">Yükləmə düyməsi, xarici yükləyicinizi açır</string>
<string name="revanced_external_downloader_action_button_summary_off">Yükləmə düyməsi tətbiqə xas yükləyicini açır</string>
<string name="revanced_external_downloader_name_title">Yükləyici paketi adı</string>
<string name="revanced_external_downloader_name_summary">NewPipe və ya Seal kimi quraşdırılan xarici yüklə tətbiqinizin paket adı</string>
<string name="revanced_external_downloader_name_summary">Quraşdırılan xarici yükləyici tətbiqinizin paket adı</string>
<string name="revanced_external_downloader_other_item_hint">Paket adını yerləşdir</string>
<string name="revanced_external_downloader_other_item">Digər</string>
<string name="revanced_external_downloader_not_found_title">Tətbiq quraşdırılmayıb</string>
<string name="revanced_external_downloader_not_installed_warning">%s quraşdırılmayıb. Lütfən, bunu quraşdır.</string>
<string name="revanced_external_downloader_package_not_found_warning">"Paket adı ilə quraşdırılan tətbiq tapılmadı: %s
Paket adının düzgün olduğun yoxla və tətbiqi quraşdırın"</string>
<string name="revanced_external_downloader_empty_warning">Paket adı boş ola bilməz</string>
</patch>
<patch id="interaction.seekbar.disablePreciseSeekingGesturePatch">
<string name="revanced_disable_precise_seeking_gesture_title">Dəqiq axtarış jestini qapadın</string>
@@ -1460,6 +1468,9 @@ Bunu aktivləşdirmə daha yüksək video keyfiyyətləri əngəlin silə bilər
<string name="revanced_custom_speed_menu_title">Fərdi oynatma sürəti siyahısı</string>
<string name="revanced_custom_speed_menu_summary_on">Fərdi sürət siyahısı göstərilir</string>
<string name="revanced_custom_speed_menu_summary_off">Fərdi sürət siyahısı göstərilmir</string>
<string name="revanced_restore_old_speed_menu_title">Köhnə oynatma sürəti menyusunu bərpa et</string>
<string name="revanced_restore_old_speed_menu_summary_on">Köhnə sürət menyusu göstərilir</string>
<string name="revanced_restore_old_speed_menu_summary_off">Müasir sürət menyusu göstərilir</string>
<string name="revanced_custom_playback_speeds_title">Fərdi oynatma sürəti</string>
<string name="revanced_custom_playback_speeds_summary">Fərdi oynatma sürətlərini əlavə et və ya dəyiş</string>
<string name="revanced_custom_playback_speeds_invalid">Fərdi sürətlər %s dəyərindən az olmalıdır</string>

View File

@@ -468,8 +468,15 @@ Second \"item\" text"</string>
<string name="revanced_external_downloader_action_button_summary_on">Кнопка \"Спампаваць\" адкрывае ваш знешні загрузнік</string>
<string name="revanced_external_downloader_action_button_summary_off">Кнопка \"Спампаваць\" адкрывае ўласную праграму загрузкі ў праграме</string>
<string name="revanced_external_downloader_name_title">Назва пакета загрузніка</string>
<string name="revanced_external_downloader_name_summary">Імя пакета ўсталяванай знешняй праграмы загрузкі, напрыклад NewPipe або Seal</string>
<string name="revanced_external_downloader_name_summary">Назва пакета вашага ўсталяванага знешняга спампоўшчыка праграмы</string>
<string name="revanced_external_downloader_other_item_hint">Увядзіце назву пакета</string>
<string name="revanced_external_downloader_other_item">Іншае</string>
<string name="revanced_external_downloader_not_found_title">Праграма не ўстаноўлена</string>
<string name="revanced_external_downloader_not_installed_warning">%s не ўсталяваны. Калі ласка, усталюйце яго.</string>
<string name="revanced_external_downloader_package_not_found_warning">"Не ўдалося знайсці ўстаноўленую праграму з назвай пакета: %s
Праверце, ці правільная назва пакета і ці ўстаноўлена праграма"</string>
<string name="revanced_external_downloader_empty_warning">Назва пакета не можа быць пустой</string>
</patch>
<patch id="interaction.seekbar.disablePreciseSeekingGesturePatch">
<string name="revanced_disable_precise_seeking_gesture_title">Адключыць жэст дакладнага пошуку</string>
@@ -1463,6 +1470,9 @@ Second \"item\" text"</string>
<string name="revanced_custom_speed_menu_title">Меню пользовательской скорости воспроизведения</string>
<string name="revanced_custom_speed_menu_summary_on">Меню пользовательской скорости отображается</string>
<string name="revanced_custom_speed_menu_summary_off">Меню пользовательской скорости не отображается</string>
<string name="revanced_restore_old_speed_menu_title">Аднавіць старое меню хуткасці прайгравання</string>
<string name="revanced_restore_old_speed_menu_summary_on">Паказана старое меню хуткасці</string>
<string name="revanced_restore_old_speed_menu_summary_off">Паказана сучаснае меню хуткасці</string>
<string name="revanced_custom_playback_speeds_title">Карыстальніцкія хуткасці прайгравання</string>
<string name="revanced_custom_playback_speeds_summary">Добавьте или измените пользовательскую скорость воспроизведения</string>
<string name="revanced_custom_playback_speeds_invalid">Нестандартныя хуткасці павінны быць менш за %s</string>

View File

@@ -468,8 +468,15 @@ Second \"item\" text"</string>
<string name="revanced_external_downloader_action_button_summary_on">Бутонът за изтегляне отваря избраното от Вас външно приложение за изтегляне</string>
<string name="revanced_external_downloader_action_button_summary_off">Бутонът за изтегляне отваря вграденото приложение за изтегляне</string>
<string name="revanced_external_downloader_name_title">Име на пакета на изтеглящото приложение</string>
<string name="revanced_external_downloader_name_summary">Име на пакета на приложението за изтегляне, като NewPipe или Seal</string>
<string name="revanced_external_downloader_name_summary">Име на пакета на вашето инсталирано външно приложение за изтегляне</string>
<string name="revanced_external_downloader_other_item_hint">Въведете името на пакета</string>
<string name="revanced_external_downloader_other_item">Други</string>
<string name="revanced_external_downloader_not_found_title">Приложението не е инсталирано</string>
<string name="revanced_external_downloader_not_installed_warning">%s не е инсталиран. Инсталирайте го.</string>
<string name="revanced_external_downloader_package_not_found_warning">"Не може да бъде намерено инсталирано приложение с име на пакет: %s
Проверете дали името на пакета е правилно и приложението е инсталирано"</string>
<string name="revanced_external_downloader_empty_warning">Името на пакета не може да бъде празно</string>
</patch>
<patch id="interaction.seekbar.disablePreciseSeekingGesturePatch">
<string name="revanced_disable_precise_seeking_gesture_title">Деактивиране на жеста за точно търсене</string>
@@ -1462,6 +1469,9 @@ Second \"item\" text"</string>
<string name="revanced_custom_speed_menu_title">Менюто за потребителска скорост</string>
<string name="revanced_custom_speed_menu_summary_on">Менюто за потребителска скорост се показва</string>
<string name="revanced_custom_speed_menu_summary_off">Менюто за потребителска скорост не се показва</string>
<string name="revanced_restore_old_speed_menu_title">Възстановяване на старото меню за скорост на възпроизвеждане</string>
<string name="revanced_restore_old_speed_menu_summary_on">Показва се старото меню за скорост</string>
<string name="revanced_restore_old_speed_menu_summary_off">Показва се модерното меню за скорост</string>
<string name="revanced_custom_playback_speeds_title">Персонализирани скорости на възпроизвеждане</string>
<string name="revanced_custom_playback_speeds_summary">Добавете или променете скоростa на възпроизвеждане</string>
<string name="revanced_custom_playback_speeds_invalid">Персонализираните скорости трябва да са по-малки от %s</string>

View File

@@ -464,8 +464,15 @@ MicroG-এর জন্য ব্যাটারি অপ্টিমাইজ
<string name="revanced_external_downloader_action_button_summary_on">ডাউনলোড বোতামটি আপনার বাহিরের ডাউনলোডার খুলবে</string>
<string name="revanced_external_downloader_action_button_summary_off">ডাউনলোড বোতামটি নেটিভ ইন-অ্যাপ ডাউনলোডার খুলবে</string>
<string name="revanced_external_downloader_name_title">ডাউনলোডারের প্যাকেজ নাম</string>
<string name="revanced_external_downloader_name_summary">আপনার ইনস্টল করা বাইরের ডাউনলোডার অ্যাপের প্যাকেজ নাম, যেমন NewPipe বা Seal</string>
<string name="revanced_external_downloader_name_summary">আপনার ইনস্টল করা বাহ্যিক ডাউনলোডার অ্যাপের প্যাকেজের নাম</string>
<string name="revanced_external_downloader_other_item_hint">প্যাকেজের নাম লিখুন</string>
<string name="revanced_external_downloader_other_item">অন্যান্য</string>
<string name="revanced_external_downloader_not_found_title">অ্যাপ ইনস্টল করা নেই</string>
<string name="revanced_external_downloader_not_installed_warning">%s ইনস্টল করা নেই, ইনস্টল করুন।</string>
<string name="revanced_external_downloader_package_not_found_warning">"প্যাকেজের নাম: %s সহ ইনস্টল করা অ্যাপটি খুঁজে পাওয়া যায়নি
প্যাকেজের নামটি সঠিক এবং অ্যাপটি ইনস্টল করা আছে কিনা তা যাচাই করুন"</string>
<string name="revanced_external_downloader_empty_warning">প্যাকেজের নাম খালি রাখা যাবে না</string>
</patch>
<patch id="interaction.seekbar.disablePreciseSeekingGesturePatch">
<string name="revanced_disable_precise_seeking_gesture_title">ভিডিওর নির্দিষ্ট অংশে যাওয়ার অঙ্গভঙ্গি নিষ্ক্রিয় করুন</string>
@@ -1458,6 +1465,9 @@ DeArrow সম্পর্কে আরও জানতে এখানে ট
<string name="revanced_custom_speed_menu_title">কাস্টম প্লেব্যাক গতি মেনু</string>
<string name="revanced_custom_speed_menu_summary_on">কাস্টম স্পিড মেনু দেখানো হচ্ছে</string>
<string name="revanced_custom_speed_menu_summary_off">কাস্টম স্পিড মেনু দেখানো হচ্ছে না</string>
<string name="revanced_restore_old_speed_menu_title">পুরানো প্লেব্যাক গতি মেনু পুনরুদ্ধার করুন</string>
<string name="revanced_restore_old_speed_menu_summary_on">পুরানো গতির মেনু দেখানো হয়েছে</string>
<string name="revanced_restore_old_speed_menu_summary_off">আধুনিক গতির মেনু দেখানো হয়েছে</string>
<string name="revanced_custom_playback_speeds_title">নিজস্ব প্লেব্যাক স্পিড</string>
<string name="revanced_custom_playback_speeds_summary">কাস্টম প্লেব্যাক গতি যোগ করুন অথবা পরিবর্তন করুন</string>
<string name="revanced_custom_playback_speeds_invalid">কাস্টম গতি %s এর চেয়ে কম হতে হবে</string>

View File

@@ -468,8 +468,15 @@ Tato funkce je dostupná pouze pro starší zařízení"</string>
<string name="revanced_external_downloader_action_button_summary_on">Tlačítko pro stahování otevře váš externí stahovač</string>
<string name="revanced_external_downloader_action_button_summary_off">Tlačítko pro stahování otevře nativní stahovač v aplikaci</string>
<string name="revanced_external_downloader_name_title">Název balíčku stahovače</string>
<string name="revanced_external_downloader_name_summary">Název balíčku vaší nainstalované externí aplikace pro stahování, například NewPipe nebo Seal</string>
<string name="revanced_external_downloader_name_summary">Název balíčku vaší nainstalované externí aplikace pro stahování</string>
<string name="revanced_external_downloader_other_item_hint">Zadejte název balíčku</string>
<string name="revanced_external_downloader_other_item">Jiné</string>
<string name="revanced_external_downloader_not_found_title">Aplikace není nainstalována</string>
<string name="revanced_external_downloader_not_installed_warning">%s není nainstalováno. Prosím, nainstalujte.</string>
<string name="revanced_external_downloader_package_not_found_warning">"Nepodařilo se najít nainstalovanou aplikaci s názvem balíčku: %s
Zkontrolujte, zda je název balíčku správný a aplikace je nainstalována"</string>
<string name="revanced_external_downloader_empty_warning">Název balíčku nemůže být prázdný</string>
</patch>
<patch id="interaction.seekbar.disablePreciseSeekingGesturePatch">
<string name="revanced_disable_precise_seeking_gesture_title">Zakázat gesto pro přesné hledání</string>
@@ -1462,6 +1469,9 @@ Povolením této funkce lze odemknout vyšší kvality videa"</string>
<string name="revanced_custom_speed_menu_title">Menu vlastní rychlosti přehrávání</string>
<string name="revanced_custom_speed_menu_summary_on">Menu vlastní rychlosti se zobrazuje</string>
<string name="revanced_custom_speed_menu_summary_off">Menu vlastní rychlosti se nezobrazuje</string>
<string name="revanced_restore_old_speed_menu_title">Obnovit staré menu rychlosti přehrávání</string>
<string name="revanced_restore_old_speed_menu_summary_on">Zobrazeno staré menu rychlosti</string>
<string name="revanced_restore_old_speed_menu_summary_off">Zobrazeno moderní menu rychlosti</string>
<string name="revanced_custom_playback_speeds_title">Vlastní rychlosti přehrávání</string>
<string name="revanced_custom_playback_speeds_summary">Přidat nebo změnit vlastní rychlosti přehrávání</string>
<string name="revanced_custom_playback_speeds_invalid">Vlastní rychlosti musí být menší než %s</string>

View File

@@ -468,8 +468,15 @@ Denne funktion er kun tilgængelig for ældre enheder"</string>
<string name="revanced_external_downloader_action_button_summary_on">Download-knappen åbner din eksterne downloader</string>
<string name="revanced_external_downloader_action_button_summary_off">Download-knappen åbner den indfødte in-app downloader</string>
<string name="revanced_external_downloader_name_title">Downloader pakkenavn</string>
<string name="revanced_external_downloader_name_summary">Pakkenavn på din installerede eksterne downloader-app, såsom NewPipe eller Seal</string>
<string name="revanced_external_downloader_name_summary">Pakkenavn på din installerede eksterne download-app</string>
<string name="revanced_external_downloader_other_item_hint">Indtast pakkenavnet</string>
<string name="revanced_external_downloader_other_item">Andet</string>
<string name="revanced_external_downloader_not_found_title">Appen er ikke installeret</string>
<string name="revanced_external_downloader_not_installed_warning">%s er ikke installeret. Installér den.</string>
<string name="revanced_external_downloader_package_not_found_warning">"Kunne ikke finde installeret app med pakkenavn: %s
Kontrollér, at pakkenavnet er korrekt, og at appen er installeret"</string>
<string name="revanced_external_downloader_empty_warning">Pakkenavnet må ikke være tomt</string>
</patch>
<patch id="interaction.seekbar.disablePreciseSeekingGesturePatch">
<string name="revanced_disable_precise_seeking_gesture_title">Deaktivér præcis søgemåde</string>
@@ -1464,6 +1471,9 @@ Aktivering af dette kan låse op for højere videokvalitet"</string>
<string name="revanced_custom_speed_menu_title">Tilpasset afspilningshastighed menu</string>
<string name="revanced_custom_speed_menu_summary_on">Tilpasset hastighed menu er vist</string>
<string name="revanced_custom_speed_menu_summary_off">Brugerdefineret hastighedsmenu vises ikke</string>
<string name="revanced_restore_old_speed_menu_title">Gendan gammel afspilningshastighedsmenu</string>
<string name="revanced_restore_old_speed_menu_summary_on">Gammel hastighedsmenu vises</string>
<string name="revanced_restore_old_speed_menu_summary_off">Moderne hastighedsmenu vises</string>
<string name="revanced_custom_playback_speeds_title">Tilpasset afspilningshastighed</string>
<string name="revanced_custom_playback_speeds_summary">Tilføj eller ændr den brugerdefinerede afspilningshastighed</string>
<string name="revanced_custom_playback_speeds_invalid">Brugerdefinerede hastigheder skal være mindre end %s</string>

View File

@@ -465,8 +465,15 @@ Diese Funktion ist nur für ältere Geräte verfügbar"</string>
<string name="revanced_external_downloader_action_button_summary_on">Download-Button öffnet den externen Downloader</string>
<string name="revanced_external_downloader_action_button_summary_off">Download-Button öffnet den nativen In-App-Downloader</string>
<string name="revanced_external_downloader_name_title">Paketname des Downloaders</string>
<string name="revanced_external_downloader_name_summary">Paketname deiner installierten externen Downloader-App wie NewPipe oder Siegel</string>
<string name="revanced_external_downloader_name_summary">Paketname Ihrer installierten externen Downloader-App</string>
<string name="revanced_external_downloader_other_item_hint">Paketnamen eingeben</string>
<string name="revanced_external_downloader_other_item">Andere</string>
<string name="revanced_external_downloader_not_found_title">App nicht installiert</string>
<string name="revanced_external_downloader_not_installed_warning">%s ist nicht installiert. Installier es.</string>
<string name="revanced_external_downloader_package_not_found_warning">"Installierte App mit Paketnamen nicht gefunden: %s
Stellen Sie sicher, dass der Paketname korrekt ist und die App installiert ist"</string>
<string name="revanced_external_downloader_empty_warning">Der Paketname darf nicht leer sein</string>
</patch>
<patch id="interaction.seekbar.disablePreciseSeekingGesturePatch">
<string name="revanced_disable_precise_seeking_gesture_title">Genaue Suchgeste deaktivieren</string>
@@ -1457,6 +1464,9 @@ Durch Aktivieren dieser Option können höhere Videoqualitäten freigeschaltet w
<string name="revanced_custom_speed_menu_title">Benutzerdefiniertes Wiedergabegeschwindigkeitsmenü</string>
<string name="revanced_custom_speed_menu_summary_on">Benutzerdefiniertes Geschwindigkeitsmenü wird angezeigt</string>
<string name="revanced_custom_speed_menu_summary_off">Benutzerdefiniertes Geschwindigkeitsmenü wird nicht angezeigt</string>
<string name="revanced_restore_old_speed_menu_title">Altes Wiedergabegeschwindigkeitsmenü wiederherstellen</string>
<string name="revanced_restore_old_speed_menu_summary_on">Altes Geschwindigkeitsmenü wird angezeigt</string>
<string name="revanced_restore_old_speed_menu_summary_off">Modernes Geschwindigkeitsmenü wird angezeigt</string>
<string name="revanced_custom_playback_speeds_title">Benutzerdefinierte Wiedergabegeschwindigkeiten</string>
<string name="revanced_custom_playback_speeds_summary">Hinzufügen oder Ändern der benutzerdefinierten Wiedergabegeschwindigkeit</string>
<string name="revanced_custom_playback_speeds_invalid">Benutzerdefinierte Geschwindigkeiten müssen kleiner als %s sein</string>

View File

@@ -461,17 +461,24 @@ Second \"item\" text"</string>
</patch>
<patch id="interaction.downloads.downloadsResourcePatch">
<string name="revanced_external_downloader_screen_title">Εξωτερικές λήψεις</string>
<string name="revanced_external_downloader_screen_summary">Ρυθμίσεις για χρήση εξωτερικού προγράμματος λήψης</string>
<string name="revanced_external_downloader_screen_summary">Ρυθμίσεις για χρήση εξωτερικής εφαρμογής λήψης</string>
<string name="revanced_external_downloader_title">Εμφάνιση κουμπιού εξωτερικής λήψης</string>
<string name="revanced_external_downloader_summary_on">Το κουμπί λήψης εμφανίζεται στην οθόνη αναπαραγωγής</string>
<string name="revanced_external_downloader_summary_off">Το κουμπί λήψης δεν εμφανίζεται στην οθόνη αναπαραγωγής</string>
<string name="revanced_external_downloader_summary_on">Το κουμπί λήψης εμφανίζεται στην οθόνη αναπαραγωγής</string>
<string name="revanced_external_downloader_summary_off">Το κουμπί λήψης δεν εμφανίζεται στην οθόνη αναπαραγωγής</string>
<!-- 'Download action button' should be translated using the same wording as the translation of 'revanced_hide_download_button_title'. -->
<string name="revanced_external_downloader_action_button_title">Μετατροπή κουμπιού ενέργειας «Λήψη»</string>
<string name="revanced_external_downloader_action_button_summary_on">Το κουμπί «Λήψη» θα ανοίγει το εξωτερικό πρόγραμμα λήψης σας</string>
<string name="revanced_external_downloader_action_button_summary_off">Το κουμπί «Λήψη» θα ανοίγει το ενσωματωμένο πρόγραμμα λήψης του YouTube</string>
<string name="revanced_external_downloader_name_title">Όνομα πακέτου προγράμματος λήψης</string>
<string name="revanced_external_downloader_name_summary">Το όνομα πακέτου της εγκατεστημένης σας εξωτερικής εφαρμογής λήψης όπως το NewPipe ή το Seal</string>
<string name="revanced_external_downloader_action_button_title">Αλλαγή λειτουργίας κουμπιού ενέργειας «Λήψη»</string>
<string name="revanced_external_downloader_action_button_summary_on">Το κουμπί «Λήψη» ανοίγει την εξωτερική εφαρμογή λήψης σας</string>
<string name="revanced_external_downloader_action_button_summary_off">Το κουμπί «Λήψη» ανοίγει το ενσωματωμένο πρόγραμμα λήψης του YouTube</string>
<string name="revanced_external_downloader_name_title">Όνομα πακέτου εφαρμογής λήψης</string>
<string name="revanced_external_downloader_name_summary">Το όνομα πακέτου της εγκατεστημένης σας εξωτερικής εφαρμογής λήψης</string>
<string name="revanced_external_downloader_other_item_hint">Εισάγετε το όνομα πακέτου</string>
<string name="revanced_external_downloader_other_item">Άλλο</string>
<string name="revanced_external_downloader_not_found_title">Η εφαρμογή δεν έχει εγκατασταθεί</string>
<string name="revanced_external_downloader_not_installed_warning">Το %s δεν είναι εγκατεστημένο. Παρακαλούμε εγκαταστήστε το.</string>
<string name="revanced_external_downloader_package_not_found_warning">"Δεν ήταν δυνατή η εύρεση εγκατεστημένης εφαρμογής με όνομα πακέτου: %s
Επιβεβαιώστε ότι το όνομα πακέτου είναι σωστό και ότι η εφαρμογή είναι εγκατεστημένη"</string>
<string name="revanced_external_downloader_empty_warning">Το όνομα πακέτου δεν μπορεί να είναι κενό</string>
</patch>
<patch id="interaction.seekbar.disablePreciseSeekingGesturePatch">
<string name="revanced_disable_precise_seeking_gesture_title">Απενεργοποίηση ακριβής αναζήτησης</string>
@@ -1461,6 +1468,9 @@ Second \"item\" text"</string>
<string name="revanced_custom_speed_menu_title">Μενού προσαρμοσμένης ταχύτητας αναπαραγωγής</string>
<string name="revanced_custom_speed_menu_summary_on">Το μενού προσαρμοσμένης ταχύτητας αναπαραγωγής εμφανίζεται</string>
<string name="revanced_custom_speed_menu_summary_off">Το μενού προσαρμοσμένης ταχύτητας αναπαραγωγής δεν εμφανίζεται</string>
<string name="revanced_restore_old_speed_menu_title">Επαναφορά παλιού μενού ταχύτητας αναπαραγωγής</string>
<string name="revanced_restore_old_speed_menu_summary_on">Το παλιό μενού ταχύτητας εμφανίζεται</string>
<string name="revanced_restore_old_speed_menu_summary_off">Το σύγχρονο μενού ταχύτητας εμφανίζεται</string>
<string name="revanced_custom_playback_speeds_title">Προσαρμοσμένες ταχύτητες αναπαραγωγής</string>
<string name="revanced_custom_playback_speeds_summary">Προσθέστε ή αλλάξτε τις προσαρμοσμένες ταχύτητες αναπαραγωγής</string>
<string name="revanced_custom_playback_speeds_invalid">Οι ταχύτητες πρέπει να είναι μικρότερες από %sx</string>

View File

@@ -468,8 +468,15 @@ Esta función solo está disponible para dispositivos antiguos"</string>
<string name="revanced_external_downloader_action_button_summary_on">El botón de descarga abre su descarga externa</string>
<string name="revanced_external_downloader_action_button_summary_off">El botón de descarga abre el descargador nativo en la aplicación</string>
<string name="revanced_external_downloader_name_title">Nombre del paquete del descargado</string>
<string name="revanced_external_downloader_name_summary">Nombre del paquete de su aplicación de descarga externa instalada, como NewPipe o Seal</string>
<string name="revanced_external_downloader_name_summary">Nombre del paquete de tu aplicación de descarga externa instalada</string>
<string name="revanced_external_downloader_other_item_hint">Introduce el nombre del paquete</string>
<string name="revanced_external_downloader_other_item">Otro</string>
<string name="revanced_external_downloader_not_found_title">Aplicación no instalada</string>
<string name="revanced_external_downloader_not_installed_warning">%s no está instalado. Por favor, instálelo.</string>
<string name="revanced_external_downloader_package_not_found_warning">"No se pudo encontrar la aplicación instalada con el nombre de paquete: %s
Verifica que el nombre del paquete sea correcto y que la aplicación esté instalada"</string>
<string name="revanced_external_downloader_empty_warning">El nombre del paquete no puede estar vacío</string>
</patch>
<patch id="interaction.seekbar.disablePreciseSeekingGesturePatch">
<string name="revanced_disable_precise_seeking_gesture_title">Desactivar gesto de búsqueda preciso</string>
@@ -1453,6 +1460,9 @@ Habilitar esto puede desbloquear calidades de vídeo más altas"</string>
<string name="revanced_custom_speed_menu_title">Menú de velocidad de reproducción personalizada</string>
<string name="revanced_custom_speed_menu_summary_on">Menú de velocidad personalizado se muestra</string>
<string name="revanced_custom_speed_menu_summary_off">Menú de velocidad personalizado no se muestra</string>
<string name="revanced_restore_old_speed_menu_title">Restaurar el menú de velocidad de reproducción antiguo</string>
<string name="revanced_restore_old_speed_menu_summary_on">Se muestra el menú de velocidad antiguo</string>
<string name="revanced_restore_old_speed_menu_summary_off">Se muestra el menú de velocidad moderno</string>
<string name="revanced_custom_playback_speeds_title">Velocidades de reproducción personalizadas</string>
<string name="revanced_custom_playback_speeds_summary">Añadir o cambiar las velocidades de reproducción personalizadas</string>
<string name="revanced_custom_playback_speeds_invalid">Las velocidades personalizadas deben ser menores que %s</string>

View File

@@ -468,8 +468,15 @@ See funktsioon on saadaval ainult vanemates seadmetes"</string>
<string name="revanced_external_downloader_action_button_summary_on">Allalaadimise nupp avab teie välise allalaadija</string>
<string name="revanced_external_downloader_action_button_summary_off">Allalaadimise nupp avab seadme sisseehitatud allalaadija</string>
<string name="revanced_external_downloader_name_title">Allalaadija paketi nimi</string>
<string name="revanced_external_downloader_name_summary">Teie installitud välise allalaadija rakenduse paketi nimi, näiteks NewPipe või Seal</string>
<string name="revanced_external_downloader_name_summary">Paigaldatud välise allalaadimisrakenduse paketi nimi</string>
<string name="revanced_external_downloader_other_item_hint">Sisesta paketi nimi</string>
<string name="revanced_external_downloader_other_item">Muu</string>
<string name="revanced_external_downloader_not_found_title">Rakendus pole installitud</string>
<string name="revanced_external_downloader_not_installed_warning">%s ei ole installitud. Palun installige see.</string>
<string name="revanced_external_downloader_package_not_found_warning">"Installitud rakendust ei leitud paketi nimega: %s
Veendu, et paketi nimi on õige ja rakendus on installitud"</string>
<string name="revanced_external_downloader_empty_warning">Paketi nimi ei tohi olla tühi</string>
</patch>
<patch id="interaction.seekbar.disablePreciseSeekingGesturePatch">
<string name="revanced_disable_precise_seeking_gesture_title">Keela täpne otsingu žest</string>
@@ -1462,6 +1469,9 @@ Selle lubamine võib avada kõrgema video kvaliteedi"</string>
<string name="revanced_custom_speed_menu_title">Kohandatud taasesituse kiiruse menüü</string>
<string name="revanced_custom_speed_menu_summary_on">Kohandatud kiiruse menüü kuvatakse</string>
<string name="revanced_custom_speed_menu_summary_off">Kohandatud kiiruse menüüd ei kuvata</string>
<string name="revanced_restore_old_speed_menu_title">Taasta vana taasesituse kiiruse menüü</string>
<string name="revanced_restore_old_speed_menu_summary_on">Kuvatakse vana kiiruse menüü</string>
<string name="revanced_restore_old_speed_menu_summary_off">Kuvatakse kaasaegne kiiruse menüü</string>
<string name="revanced_custom_playback_speeds_title">Kohandatud taasesituse kiirused</string>
<string name="revanced_custom_playback_speeds_summary">Lisa või muuda kohandatud taasesituse kiirusi</string>
<string name="revanced_custom_playback_speeds_invalid">Kohandatud kiirused peavad olema alla %s</string>

View File

@@ -168,6 +168,13 @@ Et saa ilmoituksia odottamattomista tapahtumista."</string>
<string name="revanced_hide_floating_microphone_button_summary_on">Kelluva mikrofonipainike on piilotettu haussa</string>
<string name="revanced_hide_floating_microphone_button_summary_off">Kelluva mikrofonipainike näytetään haussa</string>
<string name="revanced_hide_horizontal_shelves_title">Piilota vaakasuuntaiset hyllyt</string>
<string name="revanced_hide_horizontal_shelves_summary_on">"Vaakahyllyt on piilotettu, kuten:
• Tuoreimmat uutiset
• Jatka katselua
• Tutustu useampiin kanaviin
• Olennaisimmat
• Ostokset
• Katso uudelleen"</string>
<string name="revanced_hide_horizontal_shelves_summary_off">Vaakasuuntaiset hyllyt näytetään</string>
<string name="revanced_hide_image_shelf_title">Piilota kuvahylly</string>
<string name="revanced_hide_image_shelf_summary_on">Kuvahylly on piilotettu hakutuloksissa</string>
@@ -202,6 +209,8 @@ Et saa ilmoituksia odottamattomista tapahtumista."</string>
<string name="revanced_hide_ticket_shelf_summary_off">Lippuhylly näytetään</string>
<!-- 'People also watched' and 'You might also like' should be translated using the same localized wording YouTube displays. -->
<string name="revanced_hide_video_recommendation_labels_title">Piilota videosuositusten tunnisteet</string>
<string name="revanced_hide_video_recommendation_labels_summary_on">\'Ihmiset katsoivat myös\' ja \'Saatat myös pitää\' -merkinnät hakutuloksissa ovat piilotettuna</string>
<string name="revanced_hide_video_recommendation_labels_summary_off">\"Ihmiset katsoivat myös\" ja \"Saatat myös pitää\" -otsikot näkyvät hakutuloksissa</string>
<!-- https://logos.fandom.com/wiki/YouTube/Yoodles -->
<string name="revanced_hide_doodles_title">Piilota YouTube Doodlet</string>
<string name="revanced_hide_doodles_summary_on">Logon YouTube Doodles -animaatio on piilotettu</string>
@@ -459,8 +468,15 @@ Tämä ominaisuus on käytettävissä vain vanhemmilla laitteilla"</string>
<string name="revanced_external_downloader_action_button_summary_on">Lataa-painike avaa ulkoisen lataajan</string>
<string name="revanced_external_downloader_action_button_summary_off">Lataa-painike avaa sovelluksen sisäisen lataajan</string>
<string name="revanced_external_downloader_name_title">Lataajan paketin nimi</string>
<string name="revanced_external_downloader_name_summary">Asentamasi ulkoisen lataussovelluksen, kuten NewPipen tai Sealin, paketin nimi</string>
<string name="revanced_external_downloader_name_summary">Asennetun ulkoisen lataussovelluksen paketin nimi</string>
<string name="revanced_external_downloader_other_item_hint">Anna paketin nimi</string>
<string name="revanced_external_downloader_other_item">Muu</string>
<string name="revanced_external_downloader_not_found_title">Sovellusta ei ole asennettu</string>
<string name="revanced_external_downloader_not_installed_warning">%s ei ole asennettu. Asenna se.</string>
<string name="revanced_external_downloader_package_not_found_warning">"Ei löytynyt asennettua sovellusta paketin nimellä: %s
Tarkista, että paketin nimi on oikein ja sovellus on asennettu"</string>
<string name="revanced_external_downloader_empty_warning">Paketin nimi ei voi olla tyhjä</string>
</patch>
<patch id="interaction.seekbar.disablePreciseSeekingGesturePatch">
<string name="revanced_disable_precise_seeking_gesture_title">Poista tarkka etsintäele käytöstä</string>
@@ -1453,6 +1469,9 @@ Tämä voi avata korkealaatuisemmat videot"</string>
<string name="revanced_custom_speed_menu_title">Mukautettu toistonopeusvalikko</string>
<string name="revanced_custom_speed_menu_summary_on">Mukautettu nopeusvalikko näytetään</string>
<string name="revanced_custom_speed_menu_summary_off">Mukautettua nopeusvalikkoa ei näytetä</string>
<string name="revanced_restore_old_speed_menu_title">Palauta vanha toistonopeusvalikko</string>
<string name="revanced_restore_old_speed_menu_summary_on">Vanha nopeusvalikko näytetään</string>
<string name="revanced_restore_old_speed_menu_summary_off">Moderni nopeusvalikko näytetään</string>
<string name="revanced_custom_playback_speeds_title">Mukautetut toistonopeudet</string>
<string name="revanced_custom_playback_speeds_summary">Lisää tai muuta mukautettuja toistonopeuksia</string>
<string name="revanced_custom_playback_speeds_invalid">Mukautettujen nopeuksien tulee olla alle %s</string>

View File

@@ -468,8 +468,15 @@ Ang tampok na ito ay magagamit lamang para sa mga mas lumang device"</string>
<string name="revanced_external_downloader_action_button_summary_on">Binubuksan ng button sa pag-download ang iyong external na downloader</string>
<string name="revanced_external_downloader_action_button_summary_off">Binubuksan ng button sa pag-download ang native na in-app na downloader</string>
<string name="revanced_external_downloader_name_title">Pangalan ng package ng downloader</string>
<string name="revanced_external_downloader_name_summary">Pangalan ng package ng iyong naka-install na external na downloader app, gaya ng NewPipe o Seal</string>
<string name="revanced_external_downloader_name_summary">Pangalan ng package ng iyong naka-install na panlabas na downloader app</string>
<string name="revanced_external_downloader_other_item_hint">Ilagay ang pangalan ng package</string>
<string name="revanced_external_downloader_other_item">Iba pa</string>
<string name="revanced_external_downloader_not_found_title">Hindi naka-install ang app</string>
<string name="revanced_external_downloader_not_installed_warning">Hindi naka-install ang %s. Mangyaring i-install ito.</string>
<string name="revanced_external_downloader_package_not_found_warning">"Hindi makita ang naka-install na app na may pangalan ng package: %s
Suriin kung tama ang pangalan ng package at kung naka-install ang app"</string>
<string name="revanced_external_downloader_empty_warning">Hindi maaaring walang laman ang pangalan ng package</string>
</patch>
<patch id="interaction.seekbar.disablePreciseSeekingGesturePatch">
<string name="revanced_disable_precise_seeking_gesture_title">Huwag paganahin ang tumpak na kilos sa paghahanap</string>
@@ -1460,6 +1467,9 @@ Ang pagpapagana nito ay maaaring magbukas ng mas mataas na kalidad ng video"</st
<string name="revanced_custom_speed_menu_title">Menu ng pasadyang bilis ng pag-playback</string>
<string name="revanced_custom_speed_menu_summary_on">Ipinapakita ang menu ng pasadyang bilis</string>
<string name="revanced_custom_speed_menu_summary_off">Hindi ipinapakita ang menu ng pasadyang bilis</string>
<string name="revanced_restore_old_speed_menu_title">Ibalik ang lumang menu ng bilis ng pag-playback</string>
<string name="revanced_restore_old_speed_menu_summary_on">Ipinapakita ang lumang menu ng bilis</string>
<string name="revanced_restore_old_speed_menu_summary_off">Ipinapakita ang modernong menu ng bilis</string>
<string name="revanced_custom_playback_speeds_title">Mga custom na bilis ng pag-playback</string>
<string name="revanced_custom_playback_speeds_summary">Magdagdag o baguhin ang mga pasadyang bilis ng pag-playback</string>
<string name="revanced_custom_playback_speeds_invalid">Ang mga custom na bilis ay dapat na mas mababa sa %s</string>

View File

@@ -468,8 +468,15 @@ Cette fonctionnalité est disponible uniquement pour les appareils anciens"</str
<string name="revanced_external_downloader_action_button_summary_on">Le bouton de téléchargement ouvre votre outil externe</string>
<string name="revanced_external_downloader_action_button_summary_off">Le bouton de téléchargement ouvre l\'outil intégré à l\'application</string>
<string name="revanced_external_downloader_name_title">Nom de paquet de l\'outil de téléchargement</string>
<string name="revanced_external_downloader_name_summary">Nom de paquet de l\'appli de téléchargement externe que vous avez installée, telle que NewPipe ou Seal</string>
<string name="revanced_external_downloader_name_summary">Nom de paquet de votre application de téléchargement externe installée</string>
<string name="revanced_external_downloader_other_item_hint">Saisir le nom du paquet</string>
<string name="revanced_external_downloader_other_item">Autre</string>
<string name="revanced_external_downloader_not_found_title">Application non installée</string>
<string name="revanced_external_downloader_not_installed_warning">%s n\'est pas installé. Veuillez l\'installer.</string>
<string name="revanced_external_downloader_package_not_found_warning">"Impossible de trouver une application installée ayant pour nom de paquet : %s
Vérifiez que le nom de paquet est correct et que l'application est installée."</string>
<string name="revanced_external_downloader_empty_warning">Le nom du paquet ne peut pas être vide</string>
</patch>
<patch id="interaction.seekbar.disablePreciseSeekingGesturePatch">
<string name="revanced_disable_precise_seeking_gesture_title">Désactiver le geste de recherche précise</string>
@@ -1463,6 +1470,9 @@ Activer cette option peut déverrouiller des qualités vidéo supérieures"</str
<string name="revanced_custom_speed_menu_title">Menu de vitesse de lecture personnalisée</string>
<string name="revanced_custom_speed_menu_summary_on">Le menu de vitesse personnalisée est affiché</string>
<string name="revanced_custom_speed_menu_summary_off">Le menu de vitesse personnalisée n\'est pas affiché</string>
<string name="revanced_restore_old_speed_menu_title">Restaurer l\'ancien menu de vitesse de lecture</string>
<string name="revanced_restore_old_speed_menu_summary_on">L\'ancien menu de vitesse est affiché</string>
<string name="revanced_restore_old_speed_menu_summary_off">Le menu de vitesse moderne est affiché</string>
<string name="revanced_custom_playback_speeds_title">Vitesses de lecture personnalisées</string>
<string name="revanced_custom_playback_speeds_summary">Ajouter ou modifier les vitesses de lecture personnalisées</string>
<string name="revanced_custom_playback_speeds_invalid">Il doit y avoir moins de %s vitesses personnalisées</string>

View File

@@ -468,8 +468,15 @@ Níl an ghné seo ar fáil ach do ghléasanna níos sine"</string>
<string name="revanced_external_downloader_action_button_summary_on">Osclaíonn an cnaipe íoslódála do íoslódálaí seachtrach</string>
<string name="revanced_external_downloader_action_button_summary_off">Osclaíonn an cnaipe íoslódála an t-íoslódálaí dúchais in-app</string>
<string name="revanced_external_downloader_name_title">Ainm pacáiste íoslódáil</string>
<string name="revanced_external_downloader_name_summary">Ainm pacáiste d\'aip íoslódála seachtrach suiteáilte, mar shampla NewPipe nó Seal</string>
<string name="revanced_external_downloader_name_summary">Ainm an phacáiste de d\'aip íoslódálaí seachtrach suiteáilte</string>
<string name="revanced_external_downloader_other_item_hint">Iontráil ainm an phacáiste</string>
<string name="revanced_external_downloader_other_item">Eile</string>
<string name="revanced_external_downloader_not_found_title">Níl an aip suiteáilte</string>
<string name="revanced_external_downloader_not_installed_warning">Níl %s suiteáilte. Suiteáil é le do thoil.</string>
<string name="revanced_external_downloader_package_not_found_warning">"Níorbh fhéidir an aip suiteáilte a aimsiú le hainm an phacáiste: %s
Deimhnigh go bhfuil ainm an phacáiste ceart agus go bhfuil an aip suiteáilte"</string>
<string name="revanced_external_downloader_empty_warning">Ní féidir le hainm an phacáiste a bheith folamh</string>
</patch>
<patch id="interaction.seekbar.disablePreciseSeekingGesturePatch">
<string name="revanced_disable_precise_seeking_gesture_title">Díchumasaigh comhartha cuardaigh beacht</string>
@@ -1462,6 +1469,9 @@ Is féidir le seo caighdeáin físeáin níos airde a dhíghlasáil"</string>
<string name="revanced_custom_speed_menu_title">Roghchlár luas athsheinm saincheaptha</string>
<string name="revanced_custom_speed_menu_summary_on">Taispeántar roghchlár luais saincheaptha</string>
<string name="revanced_custom_speed_menu_summary_off">Ní thaispeántar roghchlár luais saincheaptha</string>
<string name="revanced_restore_old_speed_menu_title">Athchóirigh an seanchalafort luais athsheinm</string>
<string name="revanced_restore_old_speed_menu_summary_on">Tá an seanchalafort luais taispeánta</string>
<string name="revanced_restore_old_speed_menu_summary_off">Tá an calafort luais nua-aimseartha taispeánta</string>
<string name="revanced_custom_playback_speeds_title">Luas athsheinm saincheaptha</string>
<string name="revanced_custom_playback_speeds_summary">Cuir leis nó athraigh na luasanna athsheinm saincheaptha</string>
<string name="revanced_custom_playback_speeds_invalid">Ní mór luas saincheaptha a bheith níos lú ná %s</string>

View File

@@ -468,8 +468,15 @@ Ez a funkció csak régebbi eszközökön érhető el"</string>
<string name="revanced_external_downloader_action_button_summary_on">A letöltés gomb a külső letöltőt nyitja meg</string>
<string name="revanced_external_downloader_action_button_summary_off">A letöltés gomb az alkalmazáson belüli letöltőt használja</string>
<string name="revanced_external_downloader_name_title">Letöltő csomag neve</string>
<string name="revanced_external_downloader_name_summary">A telepített külső letöltő alkalmazás csomagneve, például NewPipe vagy Seal</string>
<string name="revanced_external_downloader_name_summary">A telepített külső letöltő alkalmazásod csomagneve</string>
<string name="revanced_external_downloader_other_item_hint">Adja meg a csomagnevet</string>
<string name="revanced_external_downloader_other_item">Egyéb</string>
<string name="revanced_external_downloader_not_found_title">Az alkalmazás nincs telepítve</string>
<string name="revanced_external_downloader_not_installed_warning">%s nincs telepítve. Kérjük telepítse.</string>
<string name="revanced_external_downloader_package_not_found_warning">"Nem található telepített alkalmazás a(z) %s csomagnévvel
Ellenőrizze, hogy a csomagnév helyes-e és az alkalmazás telepítve van-e"</string>
<string name="revanced_external_downloader_empty_warning">A csomagnév nem lehet üres</string>
</patch>
<patch id="interaction.seekbar.disablePreciseSeekingGesturePatch">
<string name="revanced_disable_precise_seeking_gesture_title">Pontos keresési kézmozdulat letiltása</string>
@@ -1459,6 +1466,9 @@ Ez a beállítás lehetővé teszi a magasabb videóminőségek feloldását"</s
<string name="revanced_custom_speed_menu_title">Egyedi lejátszási sebesség menü</string>
<string name="revanced_custom_speed_menu_summary_on">Megjelenik az egyéni sebesség menü</string>
<string name="revanced_custom_speed_menu_summary_off">Az egyéni sebesség menü nem jelenik meg</string>
<string name="revanced_restore_old_speed_menu_title">Régi lejátszási sebesség menü visszaállítása</string>
<string name="revanced_restore_old_speed_menu_summary_on">A régi sebességmenü megjelenik</string>
<string name="revanced_restore_old_speed_menu_summary_off">A modern sebességmenü megjelenik</string>
<string name="revanced_custom_playback_speeds_title">Egyedi lejátszási sebesség</string>
<string name="revanced_custom_playback_speeds_summary">Egyéni lejátszási sebesség hozzáadása vagy módosítása</string>
<string name="revanced_custom_playback_speeds_invalid">Az egyéni sebességeknek kevesebbnek kell lenniük, mint %s</string>

View File

@@ -468,8 +468,15 @@ MicroG-ի համար մարտկոցի օպտիմալացումը անջատել
<string name="revanced_external_downloader_action_button_summary_on">Ներբեռնման կոճակը բացում է ձեր արտաքին ներբեռնողը</string>
<string name="revanced_external_downloader_action_button_summary_off">Ներբեռնման կոճակը բացում է ներկառուցված ներբեռնողը</string>
<string name="revanced_external_downloader_name_title">Ներբեռնողի փաթեթի անունը</string>
<string name="revanced_external_downloader_name_summary">Ձեր տեղադրված արտաքին ներբեռնողի ծրագրի փաթեթի անունը, օրինակ՝ NewPipe կամ Seal</string>
<string name="revanced_external_downloader_name_summary">Ձեր տեղադրված արտաքին ներբեռնիչ հավելվածի փաթեթի անունը</string>
<string name="revanced_external_downloader_other_item_hint">Մուտքագրեք փաթեթի անունը</string>
<string name="revanced_external_downloader_other_item">Այլ</string>
<string name="revanced_external_downloader_not_found_title">Հավելվածը տեղադրված չէ</string>
<string name="revanced_external_downloader_not_installed_warning">%s չի տեղադրված։ Խնդրում ենք տեղադրել այն։</string>
<string name="revanced_external_downloader_package_not_found_warning">"Չհաջողվեց գտնել տեղադրված հավելվածը` փաթեթի անվանմամբ՝ %s
Ստուգեք, որ փաթեթի անունը ճիշտ է և հավելվածը տեղադրված է"</string>
<string name="revanced_external_downloader_empty_warning">Փաթեթի անունը չի կարող դատարկ լինել</string>
</patch>
<patch id="interaction.seekbar.disablePreciseSeekingGesturePatch">
<string name="revanced_disable_precise_seeking_gesture_title">Անջատել ճշգրիտ փնտրման ժեստը</string>
@@ -1463,6 +1470,9 @@ Mini-player-ը կարող է գրավվել էկրանից դուրս՝ դեպի
<string name="revanced_custom_speed_menu_title">Տեսանյութի արագության հարմարեցված մենյու</string>
<string name="revanced_custom_speed_menu_summary_on">Հարմարեցված արագության մենյուը ցուցադրվում է</string>
<string name="revanced_custom_speed_menu_summary_off">Հարմարեցված արագության մենյուը չի ցուցադրվում</string>
<string name="revanced_restore_old_speed_menu_title">Վերականգնել հին նվագարկման արագության ընտրացանկը</string>
<string name="revanced_restore_old_speed_menu_summary_on">Ցուցադրվում է հին արագության ընտրացանկը</string>
<string name="revanced_restore_old_speed_menu_summary_off">Ցուցադրվում է ժամանակակից արագության ընտրացանկը</string>
<string name="revanced_custom_playback_speeds_title">Տեսանյութի վերարտադրման հարմարեցված արագություններ</string>
<string name="revanced_custom_playback_speeds_summary">Ավելացնել կամ փոփոխել տեսանյութի վերարտադրման հարմարեցված արագությունները</string>
<string name="revanced_custom_playback_speeds_invalid">Պատրաստված արագությունները պետք է լինեն ավելի քիչ քան %s</string>

View File

@@ -116,16 +116,16 @@ Ketuk tombol lanjutkan dan izinkan perubahan pengoptimalan."</string>
<string name="revanced_debug_summary_on">Pencatatan debug diaktifkan</string>
<string name="revanced_debug_summary_off">Pencatatan debug dinonaktifkan</string>
<string name="revanced_debug_protobuffer_title">Buffer protokol log</string>
<string name="revanced_debug_protobuffer_summary_on">Log debug termasuk buffer proto</string>
<string name="revanced_debug_protobuffer_summary_off">Log debug tidak menyertakan buffer proto</string>
<string name="revanced_debug_protobuffer_summary_on">Pencatatan debug termasuk buffer proto</string>
<string name="revanced_debug_protobuffer_summary_off">Pencatatan debug tidak menyertakan buffer proto</string>
<string name="revanced_debug_protobuffer_user_dialog_message">"Mengaktifkan setelan ini akan mencatat data tata letak tambahan, termasuk teks pada layar untuk beberapa komponen UI.
Ini dapat membantu mengidentifikasi komponen saat membuat filter khusus.
Namun, mengaktifkan ini juga akan mencatat beberapa data pengguna seperti alamat IP Anda."</string>
<string name="revanced_debug_stacktrace_title">Jejak log stack</string>
<string name="revanced_debug_stacktrace_summary_on">Log debug menyertakan jejak stack</string>
<string name="revanced_debug_stacktrace_summary_off">Log debug tidak menyertakan jejak stack</string>
<string name="revanced_debug_stacktrace_title">Jejak catatan stack</string>
<string name="revanced_debug_stacktrace_summary_on">Pencatatan debug menyertakan jejak stack</string>
<string name="revanced_debug_stacktrace_summary_off">Pencatatan debug tidak menyertakan jejak stack</string>
<string name="revanced_debug_toast_on_error_title">Tampilkan pesan timbul pada kesalahan ReVanced</string>
<string name="revanced_debug_toast_on_error_summary_on">Pesan timbul ditampilkan jika terjadi kesalahan</string>
<string name="revanced_debug_toast_on_error_summary_off">Pesan timbul tidak ditampilkan jika terjadi kesalahan</string>
@@ -137,7 +137,7 @@ Anda tidak akan diberi tahu tentang kejadian yang tidak terduga."</string>
<string name="revanced_debug_logs_disabled">Pencatatan debug dinonaktifkan</string>
<string name="revanced_debug_logs_none_found">Tidak ditemukan catatan</string>
<string name="revanced_debug_logs_copied_to_clipboard">Catatan disalin</string>
<string name="revanced_debug_logs_failed_to_export">Gagal mengekspor log: %s</string>
<string name="revanced_debug_logs_failed_to_export">Gagal mengekspor catatan: %s</string>
<string name="revanced_debug_logs_clear_buffer_title">Bersihkan catatan debug</string>
<string name="revanced_debug_logs_clear_buffer_summary">Menghapus semua catatan debug ReVanced yang tersimpan</string>
<string name="revanced_debug_logs_clear_toast">Catatan dibersihkan</string>
@@ -468,8 +468,15 @@ Fitur ini hanya tersedia untuk perangkat yang lebih lama"</string>
<string name="revanced_external_downloader_action_button_summary_on">Tombol unduh membuka pengunduh eksternal Anda</string>
<string name="revanced_external_downloader_action_button_summary_off">Tombol unduh membuka pengunduh asli di dalam aplikasi</string>
<string name="revanced_external_downloader_name_title">Nama paket pengunduh</string>
<string name="revanced_external_downloader_name_summary">Nama paket aplikasi pengunduh eksternal yang Anda pasang, seperti NewPipe atau Seal</string>
<string name="revanced_external_downloader_name_summary">Nama paket aplikasi pengunduh eksternal yang telah Anda pasang</string>
<string name="revanced_external_downloader_other_item_hint">Masukkan nama paket</string>
<string name="revanced_external_downloader_other_item">Lainnya</string>
<string name="revanced_external_downloader_not_found_title">Aplikasi tidak terpasang</string>
<string name="revanced_external_downloader_not_installed_warning">%s belum terpasang. Silahkan pasang.</string>
<string name="revanced_external_downloader_package_not_found_warning">"Tidak dapat menemukan aplikasi terpasang dengan nama paket: %s
Verifikasi nama paket sudah benar dan aplikasi sudah terpasang"</string>
<string name="revanced_external_downloader_empty_warning">Nama paket tidak boleh kosong</string>
</patch>
<patch id="interaction.seekbar.disablePreciseSeekingGesturePatch">
<string name="revanced_disable_precise_seeking_gesture_title">Matikan gerakan pencarian presisi</string>
@@ -1461,6 +1468,9 @@ Mengaktifkan ini dapat membuka kualitas video yang lebih tinggi"</string>
<string name="revanced_custom_speed_menu_title">Menu kecepatan pemutaran khusus</string>
<string name="revanced_custom_speed_menu_summary_on">Menu kecepatan khusus ditampilkan</string>
<string name="revanced_custom_speed_menu_summary_off">Menu kecepatan khusus tidak ditampilkan</string>
<string name="revanced_restore_old_speed_menu_title">Pulihkan menu kecepatan pemutaran lama</string>
<string name="revanced_restore_old_speed_menu_summary_on">Menu kecepatan lama ditampilkan</string>
<string name="revanced_restore_old_speed_menu_summary_off">Menu kecepatan modern ditampilkan</string>
<string name="revanced_custom_playback_speeds_title">Kecepatan pemutaran khusus</string>
<string name="revanced_custom_playback_speeds_summary">Tambah atau ubah kecepatan pemutaran khusus</string>
<string name="revanced_custom_playback_speeds_invalid">Kecepatan khusus harus kurang dari %s</string>
@@ -1578,8 +1588,8 @@ AVC memiliki resolusi maksimum 1080p, codec audio Opus tidak tersedia, dan pemut
<string name="revanced_client_ads_category_title">Iklan sisi klien</string>
<string name="revanced_surestream_ads_category_title">Iklan surestream di sisi server</string>
<string name="revanced_twitch_debug_title">Pencatatan debug</string>
<string name="revanced_twitch_debug_summary_on">Log debug diaktifkan</string>
<string name="revanced_twitch_debug_summary_off">Log debug dinonaktifkan</string>
<string name="revanced_twitch_debug_summary_on">Pencatatan debug diaktifkan</string>
<string name="revanced_twitch_debug_summary_off">Pencatatan debug dinonaktifkan</string>
</patch>
</app>
</resources>

View File

@@ -468,8 +468,15 @@ Questa funzione è disponibile solo per i dispositivi più vecchi"</string>
<string name="revanced_external_downloader_action_button_summary_on">Il pulsante Scarica apre il tuo downloader esterno</string>
<string name="revanced_external_downloader_action_button_summary_off">Il pulsante Scarica apre il nativo in-app downloader</string>
<string name="revanced_external_downloader_name_title">Nome pacchetto downloader</string>
<string name="revanced_external_downloader_name_summary">Nome del pacchetto dell\'applicazione esterna di download installata, come NewPipe o Seal</string>
<string name="revanced_external_downloader_name_summary">Nome del pacchetto della tua app di downloader esterno installata</string>
<string name="revanced_external_downloader_other_item_hint">Inserisci il nome del pacchetto</string>
<string name="revanced_external_downloader_other_item">Altro</string>
<string name="revanced_external_downloader_not_found_title">App non installata</string>
<string name="revanced_external_downloader_not_installed_warning">%s non è installato. Installalo.</string>
<string name="revanced_external_downloader_package_not_found_warning">"Impossibile trovare l'app installata con il nome del pacchetto: %s
Verifica che il nome del pacchetto sia corretto e che l'app sia installata"</string>
<string name="revanced_external_downloader_empty_warning">Il nome del pacchetto non può essere vuoto</string>
</patch>
<patch id="interaction.seekbar.disablePreciseSeekingGesturePatch">
<string name="revanced_disable_precise_seeking_gesture_title">Disabilita il gesto di ricerca preciso</string>
@@ -1461,6 +1468,9 @@ Abilitare questa opzione può sbloccare qualità video più elevate"</string>
<string name="revanced_custom_speed_menu_title">Menu di velocità di riproduzione personalizzato</string>
<string name="revanced_custom_speed_menu_summary_on">Il menu di velocità personalizzato è visibile</string>
<string name="revanced_custom_speed_menu_summary_off">Il menu di velocità personalizzato non è visibile</string>
<string name="revanced_restore_old_speed_menu_title">Ripristina il vecchio menu della velocità di riproduzione</string>
<string name="revanced_restore_old_speed_menu_summary_on">Il vecchio menu della velocità è mostrato</string>
<string name="revanced_restore_old_speed_menu_summary_off">Il menu della velocità moderno è mostrato</string>
<string name="revanced_custom_playback_speeds_title">Velocità di riproduzione personalizzate</string>
<string name="revanced_custom_playback_speeds_summary">Aggiungi o modifica la velocità di riproduzione personalizzata</string>
<string name="revanced_custom_playback_speeds_invalid">Le velocità personalizzate devono essere inferiori a %s</string>

View File

@@ -468,8 +468,15 @@ Second \"item\" text"</string>
<string name="revanced_external_downloader_action_button_summary_on">לחצן ההורדה פותח את המוריד החיצוני שלך</string>
<string name="revanced_external_downloader_action_button_summary_off">לחצן ההורדה פותח את המוריד המקומי בתוך היישום</string>
<string name="revanced_external_downloader_name_title">שם חבילת מוריד</string>
<string name="revanced_external_downloader_name_summary">שם החבילה של המוריד החיצוני המותקן שלך, כגון NewPipe או Seal</string>
<string name="revanced_external_downloader_name_summary">שם חבילה של אפליקציית ההורדה החיצונית המותקנת שלך</string>
<string name="revanced_external_downloader_other_item_hint">הזן את שם החבילה</string>
<string name="revanced_external_downloader_other_item">אחר</string>
<string name="revanced_external_downloader_not_found_title">האפליקציה לא מותקנת</string>
<string name="revanced_external_downloader_not_installed_warning">%s אינו מותקן. נא להתקין אותו.</string>
<string name="revanced_external_downloader_package_not_found_warning">"לא ניתן למצוא אפליקציה מותקנת עם שם החבילה: %s
ודא/י ששם החבילה נכון ושהאפליקציה מותקנת"</string>
<string name="revanced_external_downloader_empty_warning">שם החבילה אינו יכול להיות ריק</string>
</patch>
<patch id="interaction.seekbar.disablePreciseSeekingGesturePatch">
<string name="revanced_disable_precise_seeking_gesture_title">השבת מחוות דילוג מדויקת</string>
@@ -1464,6 +1471,9 @@ Second \"item\" text"</string>
<string name="revanced_custom_speed_menu_title">תפריט מהירות הפעלה מותאם אישית</string>
<string name="revanced_custom_speed_menu_summary_on">תפריט מהירות מותאם אישית מוצג</string>
<string name="revanced_custom_speed_menu_summary_off">תפריט מהירות מותאם אישית אינו מוצג</string>
<string name="revanced_restore_old_speed_menu_title">שחזר תפריט מהירות השמעה ישן</string>
<string name="revanced_restore_old_speed_menu_summary_on">תפריט מהירות ישן מוצג</string>
<string name="revanced_restore_old_speed_menu_summary_off">תפריט מהירות מודרני מוצג</string>
<string name="revanced_custom_playback_speeds_title">מהירויות הפעלה מותאמות אישית</string>
<string name="revanced_custom_playback_speeds_summary">הוסף או שנה את המהירויות הפעלה המותאמות אישית</string>
<string name="revanced_custom_playback_speeds_invalid">מהירויות מותאמות אישית חייבות להיות קטנות מ-%s</string>

View File

@@ -470,8 +470,15 @@ GmsCore の電池の最適化を無効にしても、バッテリーの使用に
<string name="revanced_external_downloader_action_button_summary_on">オフライン ボタンは外部ダウンローダーを呼び出します</string>
<string name="revanced_external_downloader_action_button_summary_off">オフライン ボタンはアプリ内のダウンローダーを呼び出します</string>
<string name="revanced_external_downloader_name_title">外部ダウンローダーのパッケージ名</string>
<string name="revanced_external_downloader_name_summary">NewPipe や Seal など、インストール済みのダウンロー アプリのパッケージ名を入力します</string>
<string name="revanced_external_downloader_name_summary">インストールされている外部ダウンローダー アプリのパッケージ名</string>
<string name="revanced_external_downloader_other_item_hint">パッケージ名を入力してください</string>
<string name="revanced_external_downloader_other_item">その他</string>
<string name="revanced_external_downloader_not_found_title">アプリがインストールされていません</string>
<string name="revanced_external_downloader_not_installed_warning">%s はインストールされていません。インストールしてください。</string>
<string name="revanced_external_downloader_package_not_found_warning">"パッケージ名 %s のインストール済みアプリが見つかりませんでした
パッケージ名が正しいこと、およびアプリがインストールされていることを確認してください"</string>
<string name="revanced_external_downloader_empty_warning">パッケージ名は空欄にはできません</string>
</patch>
<patch id="interaction.seekbar.disablePreciseSeekingGesturePatch">
<string name="revanced_disable_precise_seeking_gesture_title">精密シークモードを無効にする</string>
@@ -958,7 +965,7 @@ GmsCore の電池の最適化を無効にしても、バッテリーの使用に
シークバー サムネイルは、動画の再生中の画質と同じ画質になります。
この機能は、非常に高速なインターネット接続を使用して 720P 以下の画質で動画を視聴する場合に最適です。"</string>
<string name="revanced_restore_old_seekbar_thumbnails_title">シーク中のサムネイルを旧バージョンに戻す</string>
<string name="revanced_restore_old_seekbar_thumbnails_title">古いシークバー サムネイルを復元</string>
<string name="revanced_restore_old_seekbar_thumbnails_summary_on">シーク中のサムネイルはシークバーの上に表示されます</string>
<string name="revanced_restore_old_seekbar_thumbnails_summary_off">シーク中のサムネイルはプレーヤー画面全体に表示されます</string>
</patch>
@@ -1192,8 +1199,8 @@ Automotive レイアウト
再び無効にする場合には、UI のバグを防ぐためにアプリデータを消去することをお勧めします。"</string>
<string name="revanced_spoof_app_version_target_title">アプリバージョン</string>
<string name="revanced_spoof_app_version_target_entry_1">19.35.36 - ショート動画プレーヤーのアイコンが旧バージョン</string>
<string name="revanced_spoof_app_version_target_entry_2">19.01.34 - ナビゲーション アイコンが旧バージョン</string>
<string name="revanced_spoof_app_version_target_entry_1">19.35.36 - 古いショート プレーヤーのアイコンを復元</string>
<string name="revanced_spoof_app_version_target_entry_2">19.01.34 - 古いナビゲーション アイコンを復元</string>
</patch>
<patch id="layout.startpage.changeStartPagePatch">
<string name="revanced_change_start_page_title">スタート画面を変更</string>
@@ -1459,13 +1466,16 @@ Automotive レイアウト
<string name="revanced_playback_speed_dialog_button_summary_off">ボタンはオーバーレイに表示されません</string>
</patch>
<patch id="video.speed.custom.customPlaybackSpeedPatch">
<string name="revanced_custom_speed_menu_title">カスタムした再生速度リストを使用する</string>
<string name="revanced_custom_speed_menu_summary_on">カスタムした再生速度リストが表示されます</string>
<string name="revanced_custom_speed_menu_summary_off">デフォルトの再生速度リストが表示されます</string>
<string name="revanced_custom_speed_menu_title">カスタム再生速度メニュー</string>
<string name="revanced_custom_speed_menu_summary_on">カスタム再生速度リストが再生速度メニューに表示されます</string>
<string name="revanced_custom_speed_menu_summary_off">デフォルトの再生速度リストが再生速度メニューに表示されます</string>
<string name="revanced_restore_old_speed_menu_title">古い再生速度メニューを復元</string>
<string name="revanced_restore_old_speed_menu_summary_on">古いスタイルの再生速度メニューが表示されます</string>
<string name="revanced_restore_old_speed_menu_summary_off">新しいスタイルの再生速度メニューが表示されます</string>
<string name="revanced_custom_playback_speeds_title">カスタム再生速度リスト</string>
<string name="revanced_custom_playback_speeds_summary">カスタム再生速度リストを編集します</string>
<string name="revanced_custom_playback_speeds_summary">カスタム再生速度を追加または変更します</string>
<string name="revanced_custom_playback_speeds_invalid">再生速度は %s 未満である必要があります</string>
<string name="revanced_custom_playback_speeds_parse_exception">カスタム再生速度リストが無効です</string>
<string name="revanced_custom_playback_speeds_parse_exception">カスタム再生速度が無効です</string>
<string name="revanced_custom_playback_speeds_auto">自動</string>
<string name="revanced_speed_tap_and_hold_title">長押し倍速再生の速度</string>
<string name="revanced_speed_tap_and_hold_summary">再生速度の範囲は 0-8 で、0 および 8 は含まれません</string>
@@ -1486,9 +1496,9 @@ Automotive レイアウト
<string name="revanced_disable_hdr_video_summary_off">HDR 動画は有効です</string>
</patch>
<patch id="video.quality.advancedVideoQualityMenuPatch">
<string name="revanced_advanced_video_quality_menu_title">画質の詳細設定メニューを使用する</string>
<string name="revanced_advanced_video_quality_menu_summary_on">画質設定メニューとして詳細設定メニューが表示されます</string>
<string name="revanced_advanced_video_quality_menu_summary_off">通常の画質設定メニューが表示されます</string>
<string name="revanced_advanced_video_quality_menu_title">画質の詳細設定メニューを表示</string>
<string name="revanced_advanced_video_quality_menu_summary_on">画質メニューとして詳細設定メニューが表示されます</string>
<string name="revanced_advanced_video_quality_menu_summary_off">通常の画質メニューが表示されます</string>
</patch>
<patch id="interaction.seekbar.enableSlideToSeekPatch">
<string name="revanced_slide_to_seek_title">スライドしてシークする機能を有効にする</string>

View File

@@ -207,9 +207,9 @@ MicroG 앱 배터리 최적화를 비활성화(제한 없음)하더라도, 배
<string name="revanced_hide_surveys_title">설문 조사 숨기기</string>
<string name="revanced_hide_surveys_summary_on">설문 조사가 숨겨집니다</string>
<string name="revanced_hide_surveys_summary_off">설문 조사가 표시됩니다</string>
<string name="revanced_hide_ticket_shelf_title">콘서트 선반 숨기기</string>
<string name="revanced_hide_ticket_shelf_summary_on">콘서트 선반이 숨겨집니다</string>
<string name="revanced_hide_ticket_shelf_summary_off">콘서트 선반이 표시됩니다</string>
<string name="revanced_hide_ticket_shelf_title">콘서트 티켓 선반 숨기기</string>
<string name="revanced_hide_ticket_shelf_summary_on">콘서트 티켓 선반이 숨겨집니다</string>
<string name="revanced_hide_ticket_shelf_summary_off">콘서트 티켓 선반이 표시됩니다</string>
<!-- 'People also watched' and 'You might also like' should be translated using the same localized wording YouTube displays. -->
<string name="revanced_hide_video_recommendation_labels_title">동영상 추천 라벨 숨기기</string>
<string name="revanced_hide_video_recommendation_labels_summary_on">검색 결과에서 다음 라벨이 숨겨집니다:\n• 시청자가 이 동영상도 시청함\n• 내가 좋아할 만한 동영상</string>
@@ -378,7 +378,7 @@ MicroG 앱 배터리 최적화를 비활성화(제한 없음)하더라도, 배
<string name="revanced_hide_keyword_content_about_title">키워드 필터링 정보</string>
<string name="revanced_hide_keyword_content_about_summary">"홈 / 구독 / 검색 결과가 필터링되어 키워드 구문과 일치하는 콘텐츠가 숨겨집니다
알려진 문제점:
제한 사항:
• 채널 이름으로 Shorts는 숨길 수 없습니다
• 일부 화면 구성요소는 숨겨지지 않을 수 있습니다
• 필터링 키워드를 검색하면 검색 결과가 표시되지 않을 수 있습니다"</string>
@@ -470,8 +470,15 @@ MicroG 앱 배터리 최적화를 비활성화(제한 없음)하더라도, 배
<string name="revanced_external_downloader_action_button_summary_on">오프라인 저장 버튼으로 외부 다운로더를 실행할 수 있습니다</string>
<string name="revanced_external_downloader_action_button_summary_off">오프라인 저장 버튼으로 기본 다운로더를 실행할 수 있습니다</string>
<string name="revanced_external_downloader_name_title">외부 다운로더 앱 패키지명</string>
<string name="revanced_external_downloader_name_summary">NewPipe 또는 Seal와 같은 설치된 외부 다운로더 앱 패키지명입니다</string>
<string name="revanced_external_downloader_name_summary">설치된 외부 다운로더 앱 패키지명을 설정하세요</string>
<string name="revanced_external_downloader_other_item_hint">앱 패키지명을 입력하세요</string>
<string name="revanced_external_downloader_other_item">기타</string>
<string name="revanced_external_downloader_not_found_title">앱이 설치되지 않습니다</string>
<string name="revanced_external_downloader_not_installed_warning">%s 는 설치되어 있지 않습니다. 설치하세요</string>
<string name="revanced_external_downloader_package_not_found_warning">"패키지 이름이 '%s'인 설치된 앱을 찾을 수 없습니다
패키지 이름이 올바르고 앱이 설치되어 있는지 확인하세요"</string>
<string name="revanced_external_downloader_empty_warning">패키지명은 비워둘 수 없습니다</string>
</patch>
<patch id="interaction.seekbar.disablePreciseSeekingGesturePatch">
<string name="revanced_disable_precise_seeking_gesture_title">세밀한 탐색 제스처 비활성화하기</string>
@@ -905,7 +912,7 @@ MicroG 앱 배터리 최적화를 비활성화(제한 없음)하더라도, 배
<string name="revanced_ryd_shorts_title">Shorts에서 싫어요 수 표시하기</string>
<string name="revanced_ryd_shorts_summary_on">"Shorts에서 싫어요 수를 표시합니다
알려진 문제점:
제한 사항:
• 사용자가 로그인을 하지 않았거나 시크릿 모드에서는 싫어요 수가 표시되지 않을 수 있습니다"</string>
<string name="revanced_ryd_shorts_summary_off">Shorts에서 싫어요 수를 표시하지 않습니다</string>
<string name="revanced_ryd_dislike_percentage_title">싫어요 수를 퍼센트로 표시하기</string>
@@ -1224,7 +1231,7 @@ MicroG 앱 배터리 최적화를 비활성화(제한 없음)하더라도, 배
<string name="revanced_change_start_page_always_title">앱 시작 페이지 항상 변경하기</string>
<string name="revanced_change_start_page_always_summary_on">"앱 시작 페이지를 항상 변경합니다
알려진 문제점:
제한 사항:
• 툴바에서 '뒤로 가기' 버튼이 작동하지 않을 수 있습니다"</string>
<string name="revanced_change_start_page_always_summary_off">앱 시작 페이지를 앱 시작 시에만 변경합니다</string>
</patch>
@@ -1469,6 +1476,9 @@ DeArrow에 대해 자세히 알아보려면 여기를 누르세요"</string>
<string name="revanced_custom_speed_menu_title">사용자 정의 동영상 재생 속도 활성화하기</string>
<string name="revanced_custom_speed_menu_summary_on">사용자 정의 동영상 재생 속도를 활성화합니다</string>
<string name="revanced_custom_speed_menu_summary_off">사용자 정의 동영상 재생 속도를 비활성화합니다</string>
<string name="revanced_restore_old_speed_menu_title">이전 재생 속도 메뉴 복원하기</string>
<string name="revanced_restore_old_speed_menu_summary_on">이전 재생 속도 메뉴가 표시됩니다</string>
<string name="revanced_restore_old_speed_menu_summary_off">모던 재생 속도 메뉴가 표시됩니다</string>
<string name="revanced_custom_playback_speeds_title">사용자 정의 동영상 재생 속도 편집하기</string>
<string name="revanced_custom_playback_speeds_summary">동영상 재생 속도 값을 추가 또는 변경할 수 있습니다</string>
<string name="revanced_custom_playback_speeds_invalid">재생 속도 값은 %s배속보다 작아야 합니다</string>

View File

@@ -468,8 +468,15 @@ Apribojimai
<string name="revanced_external_downloader_action_button_summary_on">Atsisiuntimo mygtukas atidaro jūsų išorinį atsisiuntimo įrankį</string>
<string name="revanced_external_downloader_action_button_summary_off">Atsisiuntimo mygtukas atidaro gimtąjį programėlės atsisiuntimo įrankį</string>
<string name="revanced_external_downloader_name_title">Atsisiuntimo įrankio paketo pavadinimas</string>
<string name="revanced_external_downloader_name_summary">Jūsų įdiegtos išorinės atsisiuntimo programėlės paketo pavadinimas, pvz., NewPipe arba Seal</string>
<string name="revanced_external_downloader_name_summary">Įdiegtos išorinės atsisiuntimo programos paketo pavadinimas</string>
<string name="revanced_external_downloader_other_item_hint">Įveskite paketo pavadinimą</string>
<string name="revanced_external_downloader_other_item">Kita</string>
<string name="revanced_external_downloader_not_found_title">Programa neįdiegta</string>
<string name="revanced_external_downloader_not_installed_warning">%s nėra įdiegtas. Prašome įdiegti.</string>
<string name="revanced_external_downloader_package_not_found_warning">"Nepavyko rasti įdiegtos programos, turinčios paketo pavadinimą: %s
Patikrinkite, ar paketo pavadinimas yra teisingas ir programa įdiegta"</string>
<string name="revanced_external_downloader_empty_warning">Paketo pavadinimas negali būti tuščias</string>
</patch>
<patch id="interaction.seekbar.disablePreciseSeekingGesturePatch">
<string name="revanced_disable_precise_seeking_gesture_title">Išjungti tikslų slinkties gestą</string>
@@ -1461,6 +1468,9 @@ Gali būti atrakinta aukštesnės vaizdo įrašų kokybės, bet galite patirti v
<string name="revanced_custom_speed_menu_title">Tinkintas atkūrimo greičio meniu</string>
<string name="revanced_custom_speed_menu_summary_on">Tinkintas greičio meniu rodomas</string>
<string name="revanced_custom_speed_menu_summary_off">Tinkintas greičio meniu nerodomas</string>
<string name="revanced_restore_old_speed_menu_title">Atkurti seną atkūrimo greičio meniu</string>
<string name="revanced_restore_old_speed_menu_summary_on">Rodomas senas greičio meniu</string>
<string name="revanced_restore_old_speed_menu_summary_off">Rodomas modernus greičio meniu</string>
<string name="revanced_custom_playback_speeds_title">Tinkintas atkūrimo greitis</string>
<string name="revanced_custom_playback_speeds_summary">Pridėti arba pakeisti tinkintą atkūrimo greitį</string>
<string name="revanced_custom_playback_speeds_invalid">Pasirinktinis greitis turi būti mažesnis nei %s</string>

View File

@@ -468,8 +468,15 @@ Ierobežojumi
<string name="revanced_external_downloader_action_button_summary_on">Lejupielādēšanas poga atver jūsu ārējo lejupielādētāju</string>
<string name="revanced_external_downloader_action_button_summary_off">Lejupielādēšanas poga atver vietējo iebūvēto lejupielādētāju</string>
<string name="revanced_external_downloader_name_title">Lejupielādētāja pakotnes nosaukums</string>
<string name="revanced_external_downloader_name_summary">Instalētā ārējā lejupielādētāja lietotnes pakotnes nosaukums, piemēram, NewPipe vai Seal</string>
<string name="revanced_external_downloader_name_summary">Jūsu instalētās ārējās lejupielādētāja lietotnes pakotnes nosaukums</string>
<string name="revanced_external_downloader_other_item_hint">Ievadiet pakotnes nosaukumu</string>
<string name="revanced_external_downloader_other_item">Cits</string>
<string name="revanced_external_downloader_not_found_title">Lietotne nav instalēta</string>
<string name="revanced_external_downloader_not_installed_warning">%s nav instalēts. Lūdzu, instalējiet to.</string>
<string name="revanced_external_downloader_package_not_found_warning">"Nevarēja atrast instalēto lietotni ar pakotnes nosaukumu: %s
Pārbaudiet, vai pakotnes nosaukums ir pareizs un lietotne ir instalēta"</string>
<string name="revanced_external_downloader_empty_warning">Pakotnes nosaukums nevar būt tukšs</string>
</patch>
<patch id="interaction.seekbar.disablePreciseSeekingGesturePatch">
<string name="revanced_disable_precise_seeking_gesture_title">Atslēgt precīzu meklēšanas žestu</string>
@@ -1463,6 +1470,9 @@ Var tikt atbloķētas augstākas video kvalitātes, taču var rasties video atsk
<string name="revanced_custom_speed_menu_title">Pielāgotas atskaņošanas ātruma izvēlne</string>
<string name="revanced_custom_speed_menu_summary_on">Pielāgotas ātruma izvēlne tiek rādīta</string>
<string name="revanced_custom_speed_menu_summary_off">Pielāgotas ātruma izvēlne netiek rādīta</string>
<string name="revanced_restore_old_speed_menu_title">Atjaunot veco atskaņošanas ātruma izvēlni</string>
<string name="revanced_restore_old_speed_menu_summary_on">Tiek rādīta vecā ātruma izvēlne</string>
<string name="revanced_restore_old_speed_menu_summary_off">Tiek rādīta modernā ātruma izvēlne</string>
<string name="revanced_custom_playback_speeds_title">Pielāgotie atskaņošanas ātrumi</string>
<string name="revanced_custom_playback_speeds_summary">Pievienojiet vai mainiet pielāgotos atskaņošanas ātrumus</string>
<string name="revanced_custom_playback_speeds_invalid">Pielāgoti ātrumi ir jābūt mazākiem par %s</string>

View File

@@ -468,8 +468,15 @@ Deze functie is alleen beschikbaar voor oudere apparaten"</string>
<string name="revanced_external_downloader_action_button_summary_on">Downloadknop opent je externe downloader</string>
<string name="revanced_external_downloader_action_button_summary_off">Downloadknop opent de native in-app downloader</string>
<string name="revanced_external_downloader_name_title">Downloader pakketnaam</string>
<string name="revanced_external_downloader_name_summary">Pakketnaam van je geïnstalleerde externe downloader-app, zoals NewPipe of Seal</string>
<string name="revanced_external_downloader_name_summary">Pakketnaam van uw geïnstalleerde externe downloader-app</string>
<string name="revanced_external_downloader_other_item_hint">Voer de pakketnaam in</string>
<string name="revanced_external_downloader_other_item">Overige</string>
<string name="revanced_external_downloader_not_found_title">App niet geïnstalleerd</string>
<string name="revanced_external_downloader_not_installed_warning">%s is niet geïnstalleerd. Installeer het.</string>
<string name="revanced_external_downloader_package_not_found_warning">"Kon geïnstalleerde app met pakketnaam niet vinden: %s
Controleer of de pakketnaam correct is en de app is geïnstalleerd"</string>
<string name="revanced_external_downloader_empty_warning">De pakketnaam kan niet leeg zijn</string>
</patch>
<patch id="interaction.seekbar.disablePreciseSeekingGesturePatch">
<string name="revanced_disable_precise_seeking_gesture_title">Precisie-zoekbeweging uitschakelen</string>
@@ -1460,6 +1467,9 @@ Het inschakelen hiervan kan hogere videokwaliteiten ontgrendelen"</string>
<string name="revanced_custom_speed_menu_title">Menu voor aangepaste afspeelsnelheid</string>
<string name="revanced_custom_speed_menu_summary_on">Menu voor aangepaste snelheid wordt weergegeven</string>
<string name="revanced_custom_speed_menu_summary_off">Menu voor aangepaste snelheid wordt niet weergegeven</string>
<string name="revanced_restore_old_speed_menu_title">Oud afspeelsnelheidsmenu herstellen</string>
<string name="revanced_restore_old_speed_menu_summary_on">Oud snelheidsmenu wordt getoond</string>
<string name="revanced_restore_old_speed_menu_summary_off">Modern snelheidsmenu wordt getoond</string>
<string name="revanced_custom_playback_speeds_title">Aangepaste afspeelsnelheden</string>
<string name="revanced_custom_playback_speeds_summary">Voeg aangepaste afspeelsnelheden toe of wijzig ze</string>
<string name="revanced_custom_playback_speeds_invalid">Aangepaste snelheden moeten lager zijn dan %s</string>

View File

@@ -464,8 +464,15 @@ Ta funkcja jest dostępna tylko dla starszych urządzeń"</string>
<string name="revanced_external_downloader_action_button_summary_on">Przycisk pobierania otwiera zewnętrzną aplikację</string>
<string name="revanced_external_downloader_action_button_summary_off">Przycisk pobierania otwiera natywne pobieranie w aplikacji</string>
<string name="revanced_external_downloader_name_title">Nazwa pakietu aplikacji od pobierania</string>
<string name="revanced_external_downloader_name_summary">Nazwa pakietu zainstalowanej zewnętrznej aplikacji od pobierania, takiej jak NewPipe lub Seal</string>
<string name="revanced_external_downloader_name_summary">Nazwa pakietu zainstalowanej zewnętrznej aplikacji do pobierania</string>
<string name="revanced_external_downloader_other_item_hint">Wprowadź nazwę pakietu</string>
<string name="revanced_external_downloader_other_item">Inne</string>
<string name="revanced_external_downloader_not_found_title">Aplikacja nie jest zainstalowana</string>
<string name="revanced_external_downloader_not_installed_warning">%s nie jest zainstalowany, zainstaluj.</string>
<string name="revanced_external_downloader_package_not_found_warning">"Nie znaleziono zainstalowanej aplikacji o nazwie pakietu: %s
Sprawdź, czy nazwa pakietu jest prawidłowa i czy aplikacja jest zainstalowana"</string>
<string name="revanced_external_downloader_empty_warning">Nazwa pakietu nie może być pusta</string>
</patch>
<patch id="interaction.seekbar.disablePreciseSeekingGesturePatch">
<string name="revanced_disable_precise_seeking_gesture_title">Gest precyzyjnego przewijania</string>
@@ -1458,6 +1465,9 @@ Włączenie tego może odblokować wyższe jakości wideo"</string>
<string name="revanced_custom_speed_menu_title">Niestandardowe menu prędkości odtwarzania</string>
<string name="revanced_custom_speed_menu_summary_on">Niestandardowe menu prędkości jest widoczne</string>
<string name="revanced_custom_speed_menu_summary_off">Niestandardowe menu prędkości nie jest widoczne</string>
<string name="revanced_restore_old_speed_menu_title">Przywróć stare menu prędkości odtwarzania</string>
<string name="revanced_restore_old_speed_menu_summary_on">Pokazane jest stare menu prędkości</string>
<string name="revanced_restore_old_speed_menu_summary_off">Pokazane jest nowoczesne menu prędkości</string>
<string name="revanced_custom_playback_speeds_title">Niestandardowe prędkości odtwarzania</string>
<string name="revanced_custom_playback_speeds_summary">Dodaj lub zmień niestandardowe prędkości odtwarzania</string>
<string name="revanced_custom_playback_speeds_invalid">Prędkości niestandardowe muszą być mniejsze niż %s</string>

View File

@@ -468,8 +468,15 @@ Este recurso está disponível apenas para dispositivos mais antigos"</string>
<string name="revanced_external_downloader_action_button_summary_on">Botão de download abre seu app de download externo</string>
<string name="revanced_external_downloader_action_button_summary_off">Botão de download abre o download nativo</string>
<string name="revanced_external_downloader_name_title">Nome do pacote do app de download</string>
<string name="revanced_external_downloader_name_summary">Nome do pacote do seu app de baixar externo instalado, como NewPipe ou Seal</string>
<string name="revanced_external_downloader_name_summary">Nome do pacote do seu aplicativo de download externo instalado</string>
<string name="revanced_external_downloader_other_item_hint">Insira o nome do pacote</string>
<string name="revanced_external_downloader_other_item">Outro</string>
<string name="revanced_external_downloader_not_found_title">Aplicativo não instalado</string>
<string name="revanced_external_downloader_not_installed_warning">%s não está instalado. Por favor, instale.</string>
<string name="revanced_external_downloader_package_not_found_warning">"Não foi possível encontrar o aplicativo instalado com o nome do pacote: %s
Verifique se o nome do pacote está correto e se o aplicativo está instalado"</string>
<string name="revanced_external_downloader_empty_warning">O nome do pacote não pode estar vazio</string>
</patch>
<patch id="interaction.seekbar.disablePreciseSeekingGesturePatch">
<string name="revanced_disable_precise_seeking_gesture_title">Desativar gesto de busca precisa</string>
@@ -1461,6 +1468,9 @@ Habilitar isso pode desbloquear qualidades de vídeo mais altas"</string>
<string name="revanced_custom_speed_menu_title">Menu de velocidade de reprodução personalizado</string>
<string name="revanced_custom_speed_menu_summary_on">O menu de velocidade personalizado é mostrado</string>
<string name="revanced_custom_speed_menu_summary_off">O menu de velocidade personalizado não é mostrado</string>
<string name="revanced_restore_old_speed_menu_title">Restaurar menu antigo de velocidade de reprodução</string>
<string name="revanced_restore_old_speed_menu_summary_on">Menu antigo de velocidade de reprodução é exibido</string>
<string name="revanced_restore_old_speed_menu_summary_off">Menu moderno de velocidade de reprodução é exibido</string>
<string name="revanced_custom_playback_speeds_title">Velocidade de reprodução personalizada</string>
<string name="revanced_custom_playback_speeds_summary">Adicionar ou mudar as velocidades de reprodução personalizadas</string>
<string name="revanced_custom_playback_speeds_invalid">Velocidades personalizadas devem ser menores que %s</string>

View File

@@ -468,8 +468,15 @@ Tính năng này chỉ khả dụng cho các thiết bị cũ"</string>
<string name="revanced_external_downloader_action_button_summary_on">Botão de transferir abre seu downloader externo</string>
<string name="revanced_external_downloader_action_button_summary_off">O botão de transferir abre o downloader nativo</string>
<string name="revanced_external_downloader_name_title">Nome do pacote do downloader</string>
<string name="revanced_external_downloader_name_summary">Nome do pacote da sua aplicação de downloader instalado, como NewPipe ou Seal</string>
<string name="revanced_external_downloader_name_summary">Nome do pacote do seu aplicativo de download externo instalado</string>
<string name="revanced_external_downloader_other_item_hint">Insira o nome do pacote</string>
<string name="revanced_external_downloader_other_item">Outro</string>
<string name="revanced_external_downloader_not_found_title">Aplicativo não instalado</string>
<string name="revanced_external_downloader_not_installed_warning">%s não está instalado. Por favor, instale-o.</string>
<string name="revanced_external_downloader_package_not_found_warning">"Não foi possível encontrar o aplicativo instalado com o nome do pacote: %s
Verifique se o nome do pacote está correto e se o aplicativo está instalado"</string>
<string name="revanced_external_downloader_empty_warning">O nome do pacote não pode estar vazio</string>
</patch>
<patch id="interaction.seekbar.disablePreciseSeekingGesturePatch">
<string name="revanced_disable_precise_seeking_gesture_title">Desativar gesto de pesquisa precisa</string>
@@ -1462,6 +1469,9 @@ Bật tính năng này có thể mở khóa chất lượng video cao hơn"</str
<string name="revanced_custom_speed_menu_title">Menu personalizado de velocidade de reprodução</string>
<string name="revanced_custom_speed_menu_summary_on">O menu de velocidade personalizado é exibido</string>
<string name="revanced_custom_speed_menu_summary_off">O menu de velocidade personalizado não é mostrado</string>
<string name="revanced_restore_old_speed_menu_title">Restaurar menu antigo de velocidade de reprodução</string>
<string name="revanced_restore_old_speed_menu_summary_on">Menu antigo de velocidade é exibido</string>
<string name="revanced_restore_old_speed_menu_summary_off">Menu moderno de velocidade é exibido</string>
<string name="revanced_custom_playback_speeds_title">Velocidade de reprodução personalizada</string>
<string name="revanced_custom_playback_speeds_summary">Adicionar ou alterar as velocidades de reprodução personalizadas</string>
<string name="revanced_custom_playback_speeds_invalid">Tốc độ tùy chỉnh phải nhỏ hơn %s</string>

View File

@@ -468,8 +468,15 @@ Această funcție este disponibilă numai pentru dispozitivele mai vechi"</strin
<string name="revanced_external_downloader_action_button_summary_on">Butonul de Descărcare deschide downloader extern</string>
<string name="revanced_external_downloader_action_button_summary_off">Butonul de descărcare deschide downloader nativ în aplicație</string>
<string name="revanced_external_downloader_name_title">Descărcător nume pachet</string>
<string name="revanced_external_downloader_name_summary">Numele pachetului aplicaţiei externe downloader instalate, cum ar fi NewPipe sau Seal</string>
<string name="revanced_external_downloader_name_summary">Numele pachetului aplicației dvs. de descărcare externă instalate</string>
<string name="revanced_external_downloader_other_item_hint">Introduceți numele pachetului</string>
<string name="revanced_external_downloader_other_item">Altele</string>
<string name="revanced_external_downloader_not_found_title">Aplicația nu este instalată</string>
<string name="revanced_external_downloader_not_installed_warning">%s nu este instalat. Vă rugăm să-l instalaţi.</string>
<string name="revanced_external_downloader_package_not_found_warning">"Nu s-a găsit aplicația instalată cu numele pachetului: %s
Verificați dacă numele pachetului este corect și dacă aplicația este instalată"</string>
<string name="revanced_external_downloader_empty_warning">Numele pachetului nu poate fi gol</string>
</patch>
<patch id="interaction.seekbar.disablePreciseSeekingGesturePatch">
<string name="revanced_disable_precise_seeking_gesture_title">Dezactivează gestul de căutare precis</string>
@@ -1461,6 +1468,9 @@ Activarea acestei opțiuni poate debloca calități video mai mari"</string>
<string name="revanced_custom_speed_menu_title">Meniu de redare personalizat</string>
<string name="revanced_custom_speed_menu_summary_on">Meniul de viteză personalizat este afișat</string>
<string name="revanced_custom_speed_menu_summary_off">Meniul de viteză personalizat nu este afișat</string>
<string name="revanced_restore_old_speed_menu_title">Restaurare meniu vechi de viteză de redare</string>
<string name="revanced_restore_old_speed_menu_summary_on">Meniul vechi de viteză este afișat</string>
<string name="revanced_restore_old_speed_menu_summary_off">Meniul modern de viteză este afișat</string>
<string name="revanced_custom_playback_speeds_title">Viteze de redare personalizate</string>
<string name="revanced_custom_playback_speeds_summary">Adaugă sau modifică vitezele de redare personalizate</string>
<string name="revanced_custom_playback_speeds_invalid">Vitezele personalizate trebuie să fie mai mici de %s</string>

View File

@@ -468,8 +468,15 @@ Second \"item\" text"</string>
<string name="revanced_external_downloader_action_button_summary_on">Кнопка \"Скачать\" запускает внешний загрузчик</string>
<string name="revanced_external_downloader_action_button_summary_off">Кнопка \"Скачать\" запускает собственный загрузчик</string>
<string name="revanced_external_downloader_name_title">Имя пакета загрузчика</string>
<string name="revanced_external_downloader_name_summary">Имя пакета установленного Вами приложения внешнего загрузчика, такого как NewPipe или Seal</string>
<string name="revanced_external_downloader_name_summary">Имя пакета установленного Вами приложения внешнего загрузчика</string>
<string name="revanced_external_downloader_other_item_hint">Введите имя пакета</string>
<string name="revanced_external_downloader_other_item">Другое</string>
<string name="revanced_external_downloader_not_found_title">Приложение не установлено</string>
<string name="revanced_external_downloader_not_installed_warning">%s не установлен. Пожалуйста, установите его.</string>
<string name="revanced_external_downloader_package_not_found_warning">"Не удалось найти установленное приложение с именем пакета: %s
Убедитесь, что имя пакета указано правильно и приложение установлено"</string>
<string name="revanced_external_downloader_empty_warning">Имя пакета не может быть пустым</string>
</patch>
<patch id="interaction.seekbar.disablePreciseSeekingGesturePatch">
<string name="revanced_disable_precise_seeking_gesture_title">Отключить жест покадровой перемотки</string>
@@ -1469,6 +1476,9 @@ Second \"item\" text"</string>
<string name="revanced_custom_speed_menu_title">Показать кастомное меню скорости</string>
<string name="revanced_custom_speed_menu_summary_on">Кастомное меню скорости воспроизведения показано</string>
<string name="revanced_custom_speed_menu_summary_off">Кастомное меню скорости воспроизведения скрыто</string>
<string name="revanced_restore_old_speed_menu_title">Восстановить старое меню скорости воспроизведения</string>
<string name="revanced_restore_old_speed_menu_summary_on">Старое меню скорости показано</string>
<string name="revanced_restore_old_speed_menu_summary_off">Современное меню скорости показано</string>
<string name="revanced_custom_playback_speeds_title">Кастомные скорости воспроизведения</string>
<string name="revanced_custom_playback_speeds_summary">Добавить или изменить кастомные скорости воспроизведения</string>
<string name="revanced_custom_playback_speeds_invalid">Кастомные скорости должны быть меньше, чем %s</string>

View File

@@ -466,8 +466,15 @@ Táto funkcia je dostupná len pre staršie zariadenia"</string>
<string name="revanced_external_downloader_action_button_summary_on">Tlačidlo Stiahnuť otvorí váš externý downloader</string>
<string name="revanced_external_downloader_action_button_summary_off">Tlačidlo Stiahnuť otvorí natívny nástroj na sťahovanie v aplikácii</string>
<string name="revanced_external_downloader_name_title">Názov balíka sťahovania</string>
<string name="revanced_external_downloader_name_summary">Názov balíka nainštalovanej externej aplikácie na sťahovanie, napríklad NewPipe alebo Seal</string>
<string name="revanced_external_downloader_name_summary">Názov balíka vašej nainštalovanej externej aplikácie na sťahovanie</string>
<string name="revanced_external_downloader_other_item_hint">Zadajte názov balíka</string>
<string name="revanced_external_downloader_other_item">Iné</string>
<string name="revanced_external_downloader_not_found_title">Aplikácia nie je nainštalovaná</string>
<string name="revanced_external_downloader_not_installed_warning">%s nie je nainštalovaný. Nainštalujte si ho.</string>
<string name="revanced_external_downloader_package_not_found_warning">"Nepodarilo sa nájsť nainštalovanú aplikáciu s názvom balíka: %s
Overte, či je názov balíka správny a aplikácia je nainštalovaná"</string>
<string name="revanced_external_downloader_empty_warning">Názov balíka nemôže byť prázdny</string>
</patch>
<patch id="interaction.seekbar.disablePreciseSeekingGesturePatch">
<string name="revanced_disable_precise_seeking_gesture_title">Zakázať gesto presného vyhľadávania</string>
@@ -1455,6 +1462,9 @@ Povolením tejto možnosti môžete odomknúť vyššie kvality videa"</string>
<string name="revanced_custom_speed_menu_title">Menu vlastnej rýchlosti prehrávania</string>
<string name="revanced_custom_speed_menu_summary_on">Menu vlastnej rýchlosti sa zobrazuje</string>
<string name="revanced_custom_speed_menu_summary_off">Menu vlastnej rýchlosti sa nezobrazuje</string>
<string name="revanced_restore_old_speed_menu_title">Obnoviť staré menu rýchlosti prehrávania</string>
<string name="revanced_restore_old_speed_menu_summary_on">Zobrazuje sa staré menu rýchlosti</string>
<string name="revanced_restore_old_speed_menu_summary_off">Zobrazuje sa moderné menu rýchlosti</string>
<string name="revanced_custom_playback_speeds_title">Vlastné rýchlosti prehrávania</string>
<string name="revanced_custom_playback_speeds_summary">Pridať alebo zmeň vlastné rýchlosti prehrávania</string>
<string name="revanced_custom_playback_speeds_invalid">Vlastné rýchlosti musia byť menšie ako %s</string>

View File

@@ -468,8 +468,15 @@ Ta funkcija je na voljo samo za starejše naprave"</string>
<string name="revanced_external_downloader_action_button_summary_on">Gumb za prenos odpre vaš zunanji prenašalnik</string>
<string name="revanced_external_downloader_action_button_summary_off">Gumb za prenos odpre vgrajeni prenašalnik v aplikaciji</string>
<string name="revanced_external_downloader_name_title">Ime paketa prenašalnika</string>
<string name="revanced_external_downloader_name_summary">Ime paketa vaše nameščene zunanje aplikacije za prenašanje, kot sta NewPipe ali Seal</string>
<string name="revanced_external_downloader_name_summary">Ime paketa vaše nameščene zunanje aplikacije za prenos</string>
<string name="revanced_external_downloader_other_item_hint">Vnesite ime paketa</string>
<string name="revanced_external_downloader_other_item">Drugo</string>
<string name="revanced_external_downloader_not_found_title">Aplikacija ni nameščena</string>
<string name="revanced_external_downloader_not_installed_warning">%s ni nameščen. Prosimo, namestite ga.</string>
<string name="revanced_external_downloader_package_not_found_warning">"Ni bilo mogoče najti nameščene aplikacije z imenom paketa: %s
Preverite, ali je ime paketa pravilno in ali je aplikacija nameščena"</string>
<string name="revanced_external_downloader_empty_warning">Ime paketa ne sme biti prazno</string>
</patch>
<patch id="interaction.seekbar.disablePreciseSeekingGesturePatch">
<string name="revanced_disable_precise_seeking_gesture_title">Onemogoči natančno kretnjo iskanja</string>
@@ -1462,6 +1469,9 @@ Omogočanje tega lahko odklene višje kakovosti videa"</string>
<string name="revanced_custom_speed_menu_title">Meni za nastavitev hitrosti predvajanja</string>
<string name="revanced_custom_speed_menu_summary_on">Meni za nastavitev hitrosti je prikazan</string>
<string name="revanced_custom_speed_menu_summary_off">Meni za nastavitev hitrosti ni prikazan</string>
<string name="revanced_restore_old_speed_menu_title">Obnovi stari meni hitrosti predvajanja</string>
<string name="revanced_restore_old_speed_menu_summary_on">Prikazan je stari meni hitrosti</string>
<string name="revanced_restore_old_speed_menu_summary_off">Prikazan je sodoben meni hitrosti</string>
<string name="revanced_custom_playback_speeds_title">Nastavitev hitrosti predvajanja po meri</string>
<string name="revanced_custom_playback_speeds_summary">Dodajte ali spremenite hitrosti predvajanja po meri</string>
<string name="revanced_custom_playback_speeds_invalid">Hitrosti predvajanja po meri morajo biti manjše od %s</string>

View File

@@ -468,8 +468,15 @@ Kjo veçori është e disponueshme vetëm për pajisje më të vjetra"</string>
<string name="revanced_external_downloader_action_button_summary_on">Butoni \"Shkarko\" hap shkarkuesin tuaj të jashtëm</string>
<string name="revanced_external_downloader_action_button_summary_off">Butoni \"Shkarko\" hap shkarkuesin e integruar në aplikacion</string>
<string name="revanced_external_downloader_name_title">Emri i paketave të shkarkuesit</string>
<string name="revanced_external_downloader_name_summary">Emri i paketave të aplikacionit tuaj të shkarkuesit të jashtëm të instaluar, siç janë NewPipe ose Seal</string>
<string name="revanced_external_downloader_name_summary">Emri i paketës së aplikacionit tuaj të instaluar të shkarkuesit të jashtëm</string>
<string name="revanced_external_downloader_other_item_hint">Shkruani emrin e paketës</string>
<string name="revanced_external_downloader_other_item">Tjetër</string>
<string name="revanced_external_downloader_not_found_title">Aplikacioni nuk është instaluar</string>
<string name="revanced_external_downloader_not_installed_warning">%s nuk është instaluar. Ju lutemi instaloni atë.</string>
<string name="revanced_external_downloader_package_not_found_warning">"Nuk u gjet asnjë aplikacion i instaluar me emrin e paketës: %s
Verifikoni që emri i paketës është i saktë dhe aplikacioni është instaluar"</string>
<string name="revanced_external_downloader_empty_warning">Emri i paketës nuk mund të jetë bosh</string>
</patch>
<patch id="interaction.seekbar.disablePreciseSeekingGesturePatch">
<string name="revanced_disable_precise_seeking_gesture_title">Çaktivizo lëvizjen e saktë të kërkimit</string>
@@ -1460,6 +1467,9 @@ Aktivizimi i kësaj mund të zhbllokojë cilësi më të larta video"</string>
<string name="revanced_custom_speed_menu_title">Menyja e shpejtësisë së përsëritjes së përshtatshme</string>
<string name="revanced_custom_speed_menu_summary_on">Menyja e shpejtësisë së përshtatshme shfaqet</string>
<string name="revanced_custom_speed_menu_summary_off">Menyja e shpejtësisë së përshtatshme nuk shfaqet</string>
<string name="revanced_restore_old_speed_menu_title">Rivendos menunë e vjetër të shpejtësisë së riprodhimit</string>
<string name="revanced_restore_old_speed_menu_summary_on">Menyja e vjetër e shpejtësisë shfaqet</string>
<string name="revanced_restore_old_speed_menu_summary_off">Menyja moderne e shpejtësisë shfaqet</string>
<string name="revanced_custom_playback_speeds_title">Shpejtësi të përsëritjes së përshtatshme</string>
<string name="revanced_custom_playback_speeds_summary">Shtoni ose ndryshoni shpejtësitë e përsëritjes së përshtatshme</string>
<string name="revanced_custom_playback_speeds_invalid">Shpejtësitë e personalizuara duhet të jenë më të vogla se %s</string>

View File

@@ -468,8 +468,15 @@ Ova funkcija je dostupna samo za starije uređaje"</string>
<string name="revanced_external_downloader_action_button_summary_on">Dugme „Preuzmi” otvara spoljni program za preuzimanje</string>
<string name="revanced_external_downloader_action_button_summary_off">Dugme „Preuzmi” otvara izvorni program za preuzimanje u aplikaciji</string>
<string name="revanced_external_downloader_name_title">Naziv paketa programa za preuzimanje</string>
<string name="revanced_external_downloader_name_summary">Naziv paketa instaliranog spoljnog programa za preuzimanje, kao što je NewPipe ili Seal</string>
<string name="revanced_external_downloader_name_summary">Naziv paketa vašeg instaliranog spoljnog programa za preuzimanje</string>
<string name="revanced_external_downloader_other_item_hint">Unesite naziv paketa</string>
<string name="revanced_external_downloader_other_item">Ostalo</string>
<string name="revanced_external_downloader_not_found_title">Aplikacija nije instalirana</string>
<string name="revanced_external_downloader_not_installed_warning">%s nije instaliran. Instalirajte ga.</string>
<string name="revanced_external_downloader_package_not_found_warning">"Nije pronađena instalirana aplikacija sa nazivom paketa: %s
Proverite da li je naziv paketa ispravan i da li je aplikacija instalirana"</string>
<string name="revanced_external_downloader_empty_warning">Naziv paketa ne može biti prazan</string>
</patch>
<patch id="interaction.seekbar.disablePreciseSeekingGesturePatch">
<string name="revanced_disable_precise_seeking_gesture_title">Onemogući pokret preciznog premotavanja</string>
@@ -1461,6 +1468,9 @@ Ako ovo omogućite, mogu biti otključani viši kvaliteti videa"</string>
<string name="revanced_custom_speed_menu_title">Meni prilagođene brzine reprodukcije</string>
<string name="revanced_custom_speed_menu_summary_on">Meni prilagođene brzine reprodukcije je prikazan</string>
<string name="revanced_custom_speed_menu_summary_off">Meni prilagođene brzine reprodukcije nije prikazan</string>
<string name="revanced_restore_old_speed_menu_title">Vrati stari meni za brzinu reprodukcije</string>
<string name="revanced_restore_old_speed_menu_summary_on">Prikazan je stari meni brzine reprodukcije</string>
<string name="revanced_restore_old_speed_menu_summary_off">Prikazan je moderni meni brzine reprodukcije</string>
<string name="revanced_custom_playback_speeds_title">Prilagođene brzine reprodukcije</string>
<string name="revanced_custom_playback_speeds_summary">Dodajte ili promenite prilagođene brzine reprodukcije</string>
<string name="revanced_custom_playback_speeds_invalid">Prilagođene brzine moraju biti manje od %s</string>

View File

@@ -468,8 +468,15 @@ Second \"item\" text"</string>
<string name="revanced_external_downloader_action_button_summary_on">Дугме „Преузми” отвара спољни програм за преузимање</string>
<string name="revanced_external_downloader_action_button_summary_off">Дугме „Преузми” отвара изворни програм за преузимање у апликацији</string>
<string name="revanced_external_downloader_name_title">Назив пакета програма за преузимање</string>
<string name="revanced_external_downloader_name_summary">Назив пакета инсталираног спољног програма за преузимање, као што је NewPipe или Seal</string>
<string name="revanced_external_downloader_name_summary">Назив пакета вашег инсталираног спољног програма за преузимање</string>
<string name="revanced_external_downloader_other_item_hint">Унесите назив пакета</string>
<string name="revanced_external_downloader_other_item">Остало</string>
<string name="revanced_external_downloader_not_found_title">Апликација није инсталирана</string>
<string name="revanced_external_downloader_not_installed_warning">%s није инсталиран. Инсталирајте га.</string>
<string name="revanced_external_downloader_package_not_found_warning">"Није пронађена инсталирана апликација са називом пакета: %s
Проверите да ли је назив пакета исправан и да ли је апликација инсталирана"</string>
<string name="revanced_external_downloader_empty_warning">Назив пакета не може бити празан</string>
</patch>
<patch id="interaction.seekbar.disablePreciseSeekingGesturePatch">
<string name="revanced_disable_precise_seeking_gesture_title">Онемогући покрет прецизног премотавања</string>
@@ -1464,6 +1471,9 @@ Second \"item\" text"</string>
<string name="revanced_custom_speed_menu_title">Мени прилагођене брзине репродукције</string>
<string name="revanced_custom_speed_menu_summary_on">Мени прилагођене брзине репродукције је приказан</string>
<string name="revanced_custom_speed_menu_summary_off">Мени прилагођене брзине репродукције није приказан</string>
<string name="revanced_restore_old_speed_menu_title">Врати стари мени брзине репродукције</string>
<string name="revanced_restore_old_speed_menu_summary_on">Приказан је стари мени брзине репродукције</string>
<string name="revanced_restore_old_speed_menu_summary_off">Приказан је модерни мени брзине репродукције</string>
<string name="revanced_custom_playback_speeds_title">Прилагођене брзине репродукције</string>
<string name="revanced_custom_playback_speeds_summary">Додајте или промените прилагођене брзине репродукције</string>
<string name="revanced_custom_playback_speeds_invalid">Прилагођене брзине морају бити мање од %s</string>

View File

@@ -468,8 +468,15 @@ Den här funktionen är endast tillgänglig för äldre enheter"</string>
<string name="revanced_external_downloader_action_button_summary_on">Knappen Ladda ned öppnar din externa nerladdare</string>
<string name="revanced_external_downloader_action_button_summary_off">Knappen Ladda ned öppnar den inbyggda nedladdaren i appen</string>
<string name="revanced_external_downloader_name_title">Nedladdarens paketnamn</string>
<string name="revanced_external_downloader_name_summary">Paketnamn på din installerade externa nedladdningsapp, till exempel NewPipe eller Seal</string>
<string name="revanced_external_downloader_name_summary">Paketnamn på din installerade externa nedladdningsapp</string>
<string name="revanced_external_downloader_other_item_hint">Ange paketnamnet</string>
<string name="revanced_external_downloader_other_item">Annat</string>
<string name="revanced_external_downloader_not_found_title">Appen är inte installerad</string>
<string name="revanced_external_downloader_not_installed_warning">%s är inte installerat. Installera det.</string>
<string name="revanced_external_downloader_package_not_found_warning">"Kunde inte hitta installerad app med paketnamn: %s
Kontrollera att paketnamnet är korrekt och att appen är installerad"</string>
<string name="revanced_external_downloader_empty_warning">Paketnamnet får inte vara tomt</string>
</patch>
<patch id="interaction.seekbar.disablePreciseSeekingGesturePatch">
<string name="revanced_disable_precise_seeking_gesture_title">Inaktivera gest för exakt sökning</string>
@@ -1461,6 +1468,9 @@ Om du aktiverar detta kan högre videokvaliteter låsas upp"</string>
<string name="revanced_custom_speed_menu_title">Anpassad meny för uppspelningshastighet</string>
<string name="revanced_custom_speed_menu_summary_on">Anpassad hastighetsmeny visas</string>
<string name="revanced_custom_speed_menu_summary_off">Anpassad hastighetsmeny visas inte</string>
<string name="revanced_restore_old_speed_menu_title">Återställ gammal uppspelningshastighetsmeny</string>
<string name="revanced_restore_old_speed_menu_summary_on">Den gamla hastighetsmenyn visas</string>
<string name="revanced_restore_old_speed_menu_summary_off">Den moderna hastighetsmenyn visas</string>
<string name="revanced_custom_playback_speeds_title">Anpassade uppspelningshastigheter</string>
<string name="revanced_custom_playback_speeds_summary">Lägg till eller ändra de anpassade uppspelningshastigheterna</string>
<string name="revanced_custom_playback_speeds_invalid">Anpassade hastigheter måste vara mindre än %s</string>

View File

@@ -468,8 +468,15 @@ Second \"item\" text"</string>
<string name="revanced_external_downloader_action_button_summary_on">ปุ่มดาวน์โหลดเปิดโปรแกรมดาวน์โหลดภายนอกของคุณ</string>
<string name="revanced_external_downloader_action_button_summary_off">ปุ่มดาวน์โหลดเปิดโปรแกรมดาวน์โหลดในแอปแบบเนทีฟ</string>
<string name="revanced_external_downloader_name_title">ชื่อแพ็คเกจโปรแกรมดาวน์โหลด</string>
<string name="revanced_external_downloader_name_summary">ชื่อแพ็เกจของโปรแกรมดาวน์โหลดภายนอกที่ติดตั้งของคุณ เช่น NewPipe หรือ Seal</string>
<string name="revanced_external_downloader_name_summary">ชื่อแพ็เกจของแอปดาวน์โหลดภายนอกที่คุณติดตั้ง</string>
<string name="revanced_external_downloader_other_item_hint">ป้อนชื่อแพ็กเกจ</string>
<string name="revanced_external_downloader_other_item">อื่น ๆ</string>
<string name="revanced_external_downloader_not_found_title">ไม่ได้ติดตั้งแอป</string>
<string name="revanced_external_downloader_not_installed_warning">%s ไม่ได้ติดตั้ง โปรดติดตั้ง</string>
<string name="revanced_external_downloader_package_not_found_warning">"ไม่พบแอปที่ติดตั้งด้วยชื่อแพ็กเกจ: %s
ตรวจสอบว่าชื่อแพ็กเกจถูกต้องและติดตั้งแอปแล้ว"</string>
<string name="revanced_external_downloader_empty_warning">ชื่อแพ็กเกจต้องไม่ว่างเปล่า</string>
</patch>
<patch id="interaction.seekbar.disablePreciseSeekingGesturePatch">
<string name="revanced_disable_precise_seeking_gesture_title">ปิดใช้งานท่าทางการค้นหาแบบแม่นยำ</string>
@@ -1464,6 +1471,9 @@ User id ของคุณเหมือนกับรหัสผ่าน
<string name="revanced_custom_speed_menu_title">เมนูกำหนดความเร็วในการเล่นแบบกำหนดเอง</string>
<string name="revanced_custom_speed_menu_summary_on">แสดงเมนูกำหนดความเร็ว</string>
<string name="revanced_custom_speed_menu_summary_off">ไม่แสดงเมนูกำหนดความเร็ว</string>
<string name="revanced_restore_old_speed_menu_title">คืนค่าเมนูความเร็วในการเล่นแบบเก่า</string>
<string name="revanced_restore_old_speed_menu_summary_on">แสดงเมนูความเร็วแบบเก่า</string>
<string name="revanced_restore_old_speed_menu_summary_off">แสดงเมนูความเร็วแบบใหม่</string>
<string name="revanced_custom_playback_speeds_title">ความเร็วในการเล่นแบบกำหนดเอง</string>
<string name="revanced_custom_playback_speeds_summary">เพิ่มหรือเปลี่ยนความเร็วในการเล่นแบบกำหนดเอง</string>
<string name="revanced_custom_playback_speeds_invalid">ความเร็วที่กําหนดเองต้องน้อยกว่า %s</string>

View File

@@ -165,10 +165,10 @@ Beklenmedik olaylar hakkında bilgilendirilmeyeceksiniz."</string>
<string name="revanced_hide_expandable_card_summary_on">Videoların altındaki genişletilebilir kart gizli</string>
<string name="revanced_hide_expandable_card_summary_off">Videoların altındaki genişletilebilir kart görünür</string>
<string name="revanced_hide_floating_microphone_button_title">Alttaki mikrofon düğmesini gizle</string>
<string name="revanced_hide_floating_microphone_button_summary_on">Aramadaki hareketli mikrofon düğmesi gizli</string>
<string name="revanced_hide_floating_microphone_button_summary_off">Aramada yüzen mikrofon düğmesi gösteriliyor</string>
<string name="revanced_hide_floating_microphone_button_summary_on">Aramadaki yüzen mikrofon düğmesi gizli</string>
<string name="revanced_hide_floating_microphone_button_summary_off">Aramadaki yüzen mikrofon düğmesi görünür</string>
<string name="revanced_hide_horizontal_shelves_title">Yatay rafları gizle</string>
<string name="revanced_hide_horizontal_shelves_summary_on">"Yatay raflar gizlenir, örneğin:
<string name="revanced_hide_horizontal_shelves_summary_on">"Şunlar gibi yatay raflar gizlenir:
• Son dakika haberleri
• İzlemeye devam et
• Daha fazla kanal keşfet
@@ -191,8 +191,8 @@ Beklenmedik olaylar hakkında bilgilendirilmeyeceksiniz."</string>
<!-- 'Notify me' should be translated using the same localized wording YouTube displays.
This item appear in the Subscriptions feed for future livestreams or unreleased videos. -->
<string name="revanced_hide_notify_me_button_title">\'Hatırlatma oluştur\' düğmesini gizle</string>
<string name="revanced_hide_notify_me_button_summary_on">Bana bildir düğmesi gizli</string>
<string name="revanced_hide_notify_me_button_summary_off">Bana bildir düğmesi görünür</string>
<string name="revanced_hide_notify_me_button_summary_on">Hatırlatma oluştur düğmesi gizli</string>
<string name="revanced_hide_notify_me_button_summary_off">Hatırlatma oluştur düğmesi görünür</string>
<string name="revanced_hide_playables_title">Hazır Oyunlar\'ı gizle</string>
<string name="revanced_hide_playables_summary_on">Hazır Oyunlar gizli</string>
<string name="revanced_hide_playables_summary_off">Hazır Oyunlar görünür</string>
@@ -209,12 +209,12 @@ Beklenmedik olaylar hakkında bilgilendirilmeyeceksiniz."</string>
<string name="revanced_hide_ticket_shelf_summary_off">Bilet rafı görünür</string>
<!-- 'People also watched' and 'You might also like' should be translated using the same localized wording YouTube displays. -->
<string name="revanced_hide_video_recommendation_labels_title">Video öneri etiketlerini gizle</string>
<string name="revanced_hide_video_recommendation_labels_summary_on">\"İnsanların İzlediği Diğer Videolar\" ve \"Şunlar da Hoşunuza Gidebilir\" etiketleri arama sonuçlarında gizli</string>
<string name="revanced_hide_video_recommendation_labels_summary_off">\"İnsanların İzlediği Diğer Videolar\" ve \"Şunlar da Hoşunuza Gidebilir\" etiketleri arama sonuçlarında görünür</string>
<string name="revanced_hide_video_recommendation_labels_summary_on">Arama sonuçlarındaki \'İnsanların izlediği diğer videolar\' ve \'Şunlar da hoşunuza gidebilir\' etiketleri gizli</string>
<string name="revanced_hide_video_recommendation_labels_summary_off">Arama sonuçlarındaki \'İnsanların izlediği diğer videolar\' ve \'Şunlar da hoşunuza gidebilir\' etiketleri görünür</string>
<!-- https://logos.fandom.com/wiki/YouTube/Yoodles -->
<string name="revanced_hide_doodles_title">YouTube Doodle\'larını gizle</string>
<string name="revanced_hide_doodles_summary_on">Logodaki YouTube Doodles animasyonu gizli</string>
<string name="revanced_hide_doodles_summary_off">Logodaki YouTube Doodles animasyonu gösteriliyor</string>
<string name="revanced_hide_doodles_summary_off">Logodaki YouTube Doodles animasyonu görünür</string>
<string name="revanced_hide_doodles_user_dialog_message">"YouTube Doodles, her yıl birkaç gün gösterilir.
Bir Doodle şu anda bölgenizde gösteriliyorsa ve bu gizleme ayarııksa, arama çubuğunun altındaki filtre çubuğu da gizlenecektir."</string>
@@ -299,28 +299,28 @@ Bir Doodle şu anda bölgenizde gösteriliyorsa ve bu gizleme ayarııksa, a
<string name="revanced_hide_for_you_shelf_title">\'Sizin için\' rafını gizle</string>
<string name="revanced_hide_for_you_shelf_summary_on">Sizin İçin rafı gizli</string>
<string name="revanced_hide_for_you_shelf_summary_off">Sizin İçin rafı görünür</string>
<string name="revanced_hide_links_preview_title">Bağlantı önizlemesini gizle</string>
<string name="revanced_hide_links_preview_summary_on">Bağlantı önizlemesi gizli</string>
<string name="revanced_hide_links_preview_summary_off">Bağlantı önizlemesi görünür</string>
<string name="revanced_hide_links_preview_title">Bağlantı ön izlemesini gizle</string>
<string name="revanced_hide_links_preview_summary_on">Bağlantı ön izlemesi gizli</string>
<string name="revanced_hide_links_preview_summary_off">Bağlantı ön izlemesi görünür</string>
<string name="revanced_hide_members_shelf_title">Üyeler rafını gizle</string>
<string name="revanced_hide_members_shelf_summary_on">Üyeler rafı gizli</string>
<string name="revanced_hide_members_shelf_summary_off">Üyeler rafısteriliyor</string>
<string name="revanced_hide_members_shelf_summary_off">Üyeler rafırünür</string>
<!-- 'Visit Community' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_visit_community_button_title">\'Topluluğu Ziyaret Et\' düğmesini gizle</string>
<string name="revanced_hide_visit_community_button_summary_on">Topluluğu Ziyaret Et düğmesi gizli</string>
<string name="revanced_hide_visit_community_button_summary_off">Topluluğu Ziyaret Et düğmesi görünür</string>
<!-- 'Visit store' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_visit_store_button_title">Kanal sayfalarındaki \'Mağazayı ziyaret et\' düğmesini gizle</string>
<string name="revanced_hide_visit_store_button_summary_on">Mağazayı Ziyaret Et düğmesi gizli</string>
<string name="revanced_hide_visit_store_button_summary_off">Mağazayı Ziyaret Et düğmesi görünür</string>
<string name="revanced_hide_visit_store_button_title">\'Mağazayı ziyaret et\' düğmesini gizle</string>
<string name="revanced_hide_visit_store_button_summary_on">Mağazayı ziyaret et düğmesi gizli</string>
<string name="revanced_hide_visit_store_button_summary_off">Mağazayı ziyaret et düğmesi görünür</string>
<string name="revanced_comments_screen_title">Yorumlar</string>
<string name="revanced_comments_screen_summary">Yorumlar kısmı bileşenlerini gizle veya göster</string>
<string name="revanced_hide_comments_ai_chat_summary_title">Yapay zeka sohbet özetini gizle</string>
<string name="revanced_hide_comments_ai_chat_summary_summary_on">Yapay zeka sohbet özeti gizli</string>
<string name="revanced_hide_comments_ai_chat_summary_summary_off">Yapay zeka sohbet özeti gösteriliyor</string>
<string name="revanced_hide_comments_ai_summary_title">Yapay zeka yorumlar özetini gizle</string>
<string name="revanced_hide_comments_ai_summary_summary_on">Yapay zeka yorum özeti gizli</string>
<string name="revanced_hide_comments_ai_summary_summary_off">Yapay zeka yorum özeti gösteriliyor</string>
<string name="revanced_hide_comments_ai_chat_summary_summary_off">Yapay zeka sohbet özeti görünür</string>
<string name="revanced_hide_comments_ai_summary_title">Yapay zeka yorumların özetini gizle</string>
<string name="revanced_hide_comments_ai_summary_summary_on">Yapay zeka yorumların özeti gizli</string>
<string name="revanced_hide_comments_ai_summary_summary_off">Yapay zeka yorumların özeti görünür</string>
<string name="revanced_hide_comments_channel_guidelines_title">Kanal yönergelerini gizle</string>
<string name="revanced_hide_comments_channel_guidelines_summary_on">Kanal yönergeleri gizli</string>
<string name="revanced_hide_comments_channel_guidelines_summary_off">Kanal yönergeleri görünür</string>
@@ -342,7 +342,7 @@ Bir Doodle şu anda bölgenizde gösteriliyorsa ve bu gizleme ayarııksa, a
<string name="revanced_hide_comments_thanks_button_title">Teşekkürler düğmesini gizle</string>
<string name="revanced_hide_comments_thanks_button_summary_on">Teşekkürler düğmesi gizli</string>
<string name="revanced_hide_comments_thanks_button_summary_off">Teşekkürler düğmesi görünür</string>
<string name="revanced_hide_comments_timestamp_button_title">Zaman Damgası düğmesini gizle</string>
<string name="revanced_hide_comments_timestamp_button_title">Zaman damgası düğmesini gizle</string>
<string name="revanced_hide_comments_timestamp_button_summary_on">Zaman damgası düğmesi gizli</string>
<string name="revanced_hide_comments_timestamp_button_summary_off">Zaman damgası düğmesi görünür</string>
<string name="revanced_custom_filter_screen_title">Özel filtre</string>
@@ -418,10 +418,10 @@ Bu özellik yalnızca eski cihazlarda kullanılabilir"</string>
<string name="revanced_hide_self_sponsor_ads_summary_off">Kendine sponsor kartlar görünür</string>
<string name="revanced_hide_shopping_links_title">Alışveriş bağlantılarını gizle</string>
<string name="revanced_hide_shopping_links_summary_on">Video açıklamasındaki alışveriş bağlantıları gizli</string>
<string name="revanced_hide_shopping_links_summary_off">Video açıklamasındaki alışveriş bağlantılarısteriliyor</string>
<string name="revanced_hide_view_products_banner_title">\"Ürünleri görüntüle\" afişini gizle</string>
<string name="revanced_hide_view_products_banner_summary_on">Video bindirmesindeki ürünleri görüntüle afişi gizli</string>
<string name="revanced_hide_view_products_banner_summary_off">Video bindirmesindeki ürünleri görüntüle afişi görünür</string>
<string name="revanced_hide_shopping_links_summary_off">Video açıklamasındaki alışveriş bağlantılarırünür</string>
<string name="revanced_hide_view_products_banner_title">\'Ürünleri görüntüle\' afişini gizle</string>
<string name="revanced_hide_view_products_banner_summary_on">Video katmanındaki ürünleri görüntüle afişi gizli</string>
<string name="revanced_hide_view_products_banner_summary_off">Video katmanındaki ürünleri görüntüle afişi görünür</string>
<string name="revanced_hide_web_search_results_title">Web arama sonuçlarını gizle</string>
<string name="revanced_hide_web_search_results_summary_on">Web arama sonuçları gizli</string>
<string name="revanced_hide_web_search_results_summary_off">Web arama sonuçları görünür</string>
@@ -440,10 +440,10 @@ Bu özellik yalnızca eski cihazlarda kullanılabilir"</string>
<string name="revanced_share_copy_url_success">URL panoya kopyalandı</string>
<string name="revanced_share_copy_url_timestamp_success">Zaman damgalı URL kopyalandı</string>
<string name="revanced_copy_video_url_title">Video URL\'sini kopyalama düğmesini göster</string>
<string name="revanced_copy_video_url_summary_on">Düğme gösteriliyor. Video URL\'sini kopyalamak için dokunun. Zaman damgasıyla kopyalamak için dokunup basılı tutun</string>
<string name="revanced_copy_video_url_summary_on">Düğme gösterilir. Video URL\'sini kopyalamak için dokunun. Zaman damgasıyla kopyalamak için dokunup basılı tutun</string>
<string name="revanced_copy_video_url_summary_off">Düğme gösterilmez</string>
<string name="revanced_copy_video_url_timestamp_title">Zaman damgalı URL\'yi kopyalama düğmesini göster</string>
<string name="revanced_copy_video_url_timestamp_summary_on">Düğme gösteriliyor. Zaman damgalı video URL\'sini kopyalamak için dokunun. Zaman damgası olmadan kopyalamak için dokunup basılı tutun</string>
<string name="revanced_copy_video_url_timestamp_summary_on">Düğme gösterilir. Zaman damgalı video URL\'sini kopyalamak için dokunun. Zaman damgası olmadan kopyalamak için dokunup basılı tutun</string>
<string name="revanced_copy_video_url_timestamp_summary_off">Düğme gösterilmez</string>
</patch>
<patch id="interaction.dialog.removeViewerDiscretionDialogPatch">
@@ -461,20 +461,27 @@ Bu özellik yalnızca eski cihazlarda kullanılabilir"</string>
<string name="revanced_external_downloader_screen_title">Harici indirmeler</string>
<string name="revanced_external_downloader_screen_summary">Harici indirici kullanımı için ayarlar</string>
<string name="revanced_external_downloader_title">Harici indirme düğmesini göster</string>
<string name="revanced_external_downloader_summary_on">Oynatıcıdaki indirme düğmesi gösteriliyor</string>
<string name="revanced_external_downloader_summary_off">Oynatıcıdaki indirme düğmesi gösterilmiyor</string>
<string name="revanced_external_downloader_summary_on">Oynatıcıda indirme düğmesi gösterilir</string>
<string name="revanced_external_downloader_summary_off">Oynatıcıda indirme düğmesi gösterilmez</string>
<!-- 'Download action button' should be translated using the same wording as the translation of 'revanced_hide_download_button_title'. -->
<string name="revanced_external_downloader_action_button_title">İndirme eylem düğmesini kullan</string>
<string name="revanced_external_downloader_action_button_summary_on">İndirme düğmesi harici indiricinizi açar</string>
<string name="revanced_external_downloader_action_button_summary_off">İndirme düğmesi yerel uygulama içi indiriciyi açar</string>
<string name="revanced_external_downloader_name_title">İndirici paket adı</string>
<string name="revanced_external_downloader_name_summary">NewPipe veya Seal gibi yüklü olan harici indirici uygulamanızın paket adı</string>
<string name="revanced_external_downloader_name_summary">Yüklü harici indirme uygulamanızın paket adı</string>
<string name="revanced_external_downloader_other_item_hint">Paket adını girin</string>
<string name="revanced_external_downloader_other_item">Diğer</string>
<string name="revanced_external_downloader_not_found_title">Uygulama yüklü değil</string>
<string name="revanced_external_downloader_not_installed_warning">%s yüklü değil. Lütfen yükleyin.</string>
<string name="revanced_external_downloader_package_not_found_warning">"%s paket adıyla yüklü uygulama bulunamadı
Paket adının doğru olduğunu ve uygulamanın yüklü olduğunu doğrulayın"</string>
<string name="revanced_external_downloader_empty_warning">Paket adı boş olamaz</string>
</patch>
<patch id="interaction.seekbar.disablePreciseSeekingGesturePatch">
<string name="revanced_disable_precise_seeking_gesture_title">Hassas sarma hareketini devre dışı bırak</string>
<string name="revanced_disable_precise_seeking_gesture_summary_on">Hareket devre dışı</string>
<string name="revanced_disable_precise_seeking_gesture_summary_off">Hareket etkin</string>
<string name="revanced_disable_precise_seeking_gesture_title">Hassas sardırma hareketini devre dışı bırak</string>
<string name="revanced_disable_precise_seeking_gesture_summary_on">Hassas sardırma hareketi devre dışı</string>
<string name="revanced_disable_precise_seeking_gesture_summary_off">Hassas sardırma hareketi etkin</string>
</patch>
<patch id="interaction.seekbar.enableSeekbarTappingPatch">
<string name="revanced_seekbar_tapping_title">Dokunarak sardırmayı etkinleştir</string>
@@ -548,43 +555,43 @@ Ekranın sağ tarafında dikey olarak kaydırarak sesi ayarlayın"</string>
<string name="revanced_hide_like_dislike_button_summary_on">Beğenme ve Beğenmeme düğmeleri gizli</string>
<string name="revanced_hide_like_dislike_button_summary_off">Beğenme ve Beğenmeme düğmeleri görünür</string>
<!-- 'Share' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_share_button_title">Paylaşmayı gizle</string>
<string name="revanced_hide_share_button_summary_on">Paylaşma düğmesi gizli</string>
<string name="revanced_hide_share_button_summary_off">Paylaşma düğmesi görünür</string>
<string name="revanced_hide_share_button_title">Paylaş\'ı gizle</string>
<string name="revanced_hide_share_button_summary_on">Paylaş düğmesi gizli</string>
<string name="revanced_hide_share_button_summary_off">Paylaş düğmesi görünür</string>
<!-- 'Stop ads' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_stop_ads_button_title">Reklamları Durdur\'u Gizle</string>
<string name="revanced_hide_stop_ads_button_summary_on">Reklamları durdur düğmesi gizlendi</string>
<string name="revanced_hide_stop_ads_button_summary_off">Reklamları durdur düğmesi gösterildi</string>
<string name="revanced_hide_stop_ads_button_title">Reklamları durdur\'u Gizle</string>
<string name="revanced_hide_stop_ads_button_summary_on">Reklamları durdur düğmesi gizli</string>
<string name="revanced_hide_stop_ads_button_summary_off">Reklamları durdur düğmesi görünür</string>
<!-- 'Report' should be translated with the same localized wording that YouTube displays.
This button usually appears only on live streams. -->
<string name="revanced_hide_report_button_title">Bildirmeyi gizle</string>
<string name="revanced_hide_report_button_summary_on">Bildirme düğmesi gizli</string>
<string name="revanced_hide_report_button_summary_off">Bildirme düğmesi görünür</string>
<string name="revanced_hide_report_button_title">Bildir\'i gizle</string>
<string name="revanced_hide_report_button_summary_on">Bildir düğmesi gizli</string>
<string name="revanced_hide_report_button_summary_off">Bildir düğmesi görünür</string>
<!-- 'Remix' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_remix_button_title">Remix düğmesini gizle</string>
<string name="revanced_hide_remix_button_title">Remix\'i gizle</string>
<string name="revanced_hide_remix_button_summary_on">Remix düğmesi gizli</string>
<string name="revanced_hide_remix_button_summary_off">Remix düğmesi görünür</string>
<!-- 'Download' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_download_button_title">İndirmeyi gizle</string>
<string name="revanced_hide_download_button_summary_on">İndirme düğmesi gizli</string>
<string name="revanced_hide_download_button_summary_off">İndirme düğmesi görünür</string>
<string name="revanced_hide_download_button_title">İndir\'i gizle</string>
<string name="revanced_hide_download_button_summary_on">İndir düğmesi gizli</string>
<string name="revanced_hide_download_button_summary_off">İndir düğmesi görünür</string>
<!-- 'Thanks' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_thanks_button_title">Teşekkürler düğmesini gizle</string>
<string name="revanced_hide_thanks_button_title">Teşekkürler\'i gizle</string>
<string name="revanced_hide_thanks_button_summary_on">Teşekkürler düğmesi gizli</string>
<string name="revanced_hide_thanks_button_summary_off">Teşekkürler düğmesi görünür</string>
<!-- 'Ask' should be translated with the same localized wording that YouTube displays.
This button only shows up if the user ip is from specific region such as the USA or EU. -->
<string name="revanced_hide_ask_button_title">\'Sor\'u gizle</string>
<string name="revanced_hide_ask_button_title">Sor\'u gizle</string>
<string name="revanced_hide_ask_button_summary_on">Sor düğmesi gizli</string>
<string name="revanced_hide_ask_button_summary_off">Sor düğmesi görünür</string>
<!-- 'Clip' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_clip_button_title">Klip düğmesini gizle</string>
<string name="revanced_hide_clip_button_title">Klip\'i gizle</string>
<string name="revanced_hide_clip_button_summary_on">Klip düğmesi gizli</string>
<string name="revanced_hide_clip_button_summary_off">Klip düğmesi görünür</string>
<!-- 'Save' should be translated with the same localized wording that YouTube displays. -->
<string name="revanced_hide_save_button_title">Kaydet\'i Gizle</string>
<string name="revanced_hide_save_button_summary_on">Kaydet düğmesi gizlendi</string>
<string name="revanced_hide_save_button_summary_off">Kaydet düğmesi gösterildi</string>
<string name="revanced_hide_save_button_summary_on">Kaydet düğmesi gizli</string>
<string name="revanced_hide_save_button_summary_off">Kaydet düğmesi görünür</string>
</patch>
<patch id="layout.buttons.navigation.navigationButtonsPatch">
<string name="revanced_navigation_buttons_screen_title">Gezinme düğmeleri</string>
@@ -675,15 +682,15 @@ Bu ayarı değiştirmek etkili olmazsa, Gizli moda geçmeyi deneyin."</string>
<string name="revanced_hide_player_flyout_lock_screen_summary_on">Ekranı kilitle menüsü gizli</string>
<string name="revanced_hide_player_flyout_lock_screen_summary_off">Ekranı kilitle menüsü görünür</string>
<!-- 'Audio track' should be translated using the same localized wording YouTube displays for the menu item. -->
<string name="revanced_hide_player_flyout_audio_track_title">Ses parçası\'nı gizle</string>
<string name="revanced_hide_player_flyout_audio_track_title">Ses parçasını gizle</string>
<string name="revanced_hide_player_flyout_audio_track_summary_on">Ses parçası menüsü gizli</string>
<string name="revanced_hide_player_flyout_audio_track_summary_off">Ses parçası menüsü görünür</string>
<!-- 'Spoof video streams' should be the same translation used for 'revanced_spoof_video_streams_screen_title'. -->
<string name="revanced_hide_player_flyout_audio_track_not_available">"Ses parçası menüsü gizli
Ses parçası menüsünü göstermek için \"Video akışlarını taklit et\" ayarını iOS TV olarak değiştirin"</string>
Ses parçası menüsünü göstermek için 'Video akışlarını taklit et' ayarını iOS TV olarak değiştirin"</string>
<!-- 'Watch in VR' should be translated using the same localized wording YouTube displays for the menu item. -->
<string name="revanced_hide_player_flyout_watch_in_vr_title">VR modunda izle\'yi gizle</string>
<string name="revanced_hide_player_flyout_watch_in_vr_title">VR modunda izlemeyi gizle</string>
<string name="revanced_hide_player_flyout_watch_in_vr_summary_on">VR modunda izle menüsü gizli</string>
<string name="revanced_hide_player_flyout_watch_in_vr_summary_off">VR modunda izle menüsü görünür</string>
<string name="revanced_hide_player_flyout_video_quality_footer_title">Video kalite menüsü alt bilgisini gizle</string>
@@ -703,10 +710,10 @@ Ses parçası menüsünü göstermek için \"Video akışlarını taklit et\" ay
<string name="revanced_hide_cast_button_summary_off">Yayınla düğmesi görünür</string>
<string name="revanced_hide_player_control_buttons_background_title">Oynatıcı kontrolleri arka planını gizle</string>
<string name="revanced_hide_player_control_buttons_background_summary_on">Oynatıcı kontrolleri arka planı gizli</string>
<string name="revanced_hide_player_control_buttons_background_summary_off">Oynatıcı kontrolleri arka planısteriliyor</string>
<string name="revanced_hide_player_control_buttons_background_summary_off">Oynatıcı kontrolleri arka planırünür</string>
<string name="revanced_hide_player_previous_next_buttons_title">Önceki &amp; Sonraki düğmelerini gizle</string>
<string name="revanced_hide_player_previous_next_buttons_summary_on">Düğmeler gizli</string>
<string name="revanced_hide_player_previous_next_buttons_summary_off">Düğmeler görünür</string>
<string name="revanced_hide_player_previous_next_buttons_summary_on">Önceki &amp; Sonraki düğmeleri gizli</string>
<string name="revanced_hide_player_previous_next_buttons_summary_off">Önceki &amp; Sonraki düğmeleri görünür</string>
</patch>
<patch id="layout.hide.endscreencards.hideEndscreenCardsResourcePatch">
<string name="revanced_hide_endscreen_cards_title">Bitiş ekranı kartlarını gizle</string>
@@ -715,8 +722,8 @@ Ses parçası menüsünü göstermek için \"Video akışlarını taklit et\" ay
</patch>
<patch id="layout.hide.fullscreenambientmode.disableFullscreenAmbientModePatch">
<string name="revanced_disable_fullscreen_ambient_mode_title">Tam ekranda ambiyans modunu devre dışı bırak</string>
<string name="revanced_disable_fullscreen_ambient_mode_summary_on">Tam ekranda ambiyans modu devre dışı</string>
<string name="revanced_disable_fullscreen_ambient_mode_summary_off">Tam ekranda ambiyans modu etkin</string>
<string name="revanced_disable_fullscreen_ambient_mode_summary_on">Ambiyans modu devre dışı</string>
<string name="revanced_disable_fullscreen_ambient_mode_summary_off">Ambiyans modu etkin</string>
</patch>
<patch id="layout.hide.infocards.hideInfocardsResourcePatch">
<string name="revanced_hide_info_cards_title">Bilgi kartlarını gizle</string>
@@ -729,13 +736,13 @@ Ses parçası menüsünü göstermek için \"Video akışlarını taklit et\" ay
<string name="revanced_disable_rolling_number_animations_summary_off">Kayan sayı animasyonları etkin</string>
</patch>
<patch id="layout.hide.seekbar.hideSeekbarPatch">
<string name="revanced_hide_seekbar_title">Video oynatıcı kaydırma çubuğunu gizle</string>
<string name="revanced_hide_seekbar_summary_on">Video oynatıcısındaki zaman çubuğu gizli</string>
<string name="revanced_hide_seekbar_summary_off">Video oynatıcısındaki zaman çubuğu görünür</string>
<string name="revanced_hide_seekbar_title">Video oynatıcısı zaman çubuğunu gizle</string>
<string name="revanced_hide_seekbar_summary_on">Video oynatıcısı zaman çubuğu gizli</string>
<string name="revanced_hide_seekbar_summary_off">Video oynatıcısı zaman çubuğu görünür</string>
<!-- Seekbar shown inside video thumbnails found the home/feed/search/history. The seekbar shows the prior watch progress when the video was last open. -->
<string name="revanced_hide_seekbar_thumbnail_title">Video küçük resimleri kaydırma çubuğunu gizle</string>
<string name="revanced_hide_seekbar_thumbnail_summary_on">Video küçük resimleri kaydırma çubuğu gizli</string>
<string name="revanced_hide_seekbar_thumbnail_summary_off">Video küçük resimleri kaydırma çubuğu gösteriliyor</string>
<string name="revanced_hide_seekbar_thumbnail_title">Video kapak fotoğrafı zaman çubuğunu gizle</string>
<string name="revanced_hide_seekbar_thumbnail_summary_on">Video kapak fotoğrafı zaman çubuğu gizli</string>
<string name="revanced_hide_seekbar_thumbnail_summary_off">Video kapak fotoğrafı zaman çubuğu gösteriliyor</string>
</patch>
<patch id="layout.hide.shorts.hideShortsComponentsResourcePatch">
<string name="revanced_shorts_player_screen_title">Shorts oynatıcı</string>
@@ -744,22 +751,22 @@ Ses parçası menüsünü göstermek için \"Video akışlarını taklit et\" ay
<string name="revanced_hide_shorts_home_title">Ana Sayfa akışında Shorts\'u gizle</string>
<string name="revanced_hide_shorts_home_summary_on">Ana Sayfa akışında ve ilgili videolarda gizli</string>
<string name="revanced_hide_shorts_home_summary_off">Ana Sayfa akışında ve ilgili videolarda görünür</string>
<string name="revanced_hide_shorts_search_title">Arama sonuçlarında Shorts videolarını gizle</string>
<string name="revanced_hide_shorts_search_title">Arama sonuçlarında Shorts\'u gizle</string>
<string name="revanced_hide_shorts_search_summary_on">Arama sonuçlarında gizli</string>
<string name="revanced_hide_shorts_search_summary_off">Arama sonuçlarında görünür</string>
<!-- 'Subscriptions' should be translated using the same localized wording YouTube displays for the Subscriptions tab. -->
<string name="revanced_hide_shorts_subscriptions_title">Abonelikler akışında Shorts\'u gizle</string>
<string name="revanced_hide_shorts_subscriptions_summary_on">Abonelikler akışında gizli</string>
<string name="revanced_hide_shorts_subscriptions_summary_off">Abonelikler akışında görünür</string>
<string name="revanced_hide_shorts_history_title">Shorts\'u izleme geçmişinde gizle</string>
<string name="revanced_hide_shorts_history_title">İzleme geçmişinde Shorts\'u gizle</string>
<string name="revanced_hide_shorts_history_summary_on">İzleme geçmişinde gizli</string>
<string name="revanced_hide_shorts_history_summary_off">İzleme geçmişinde görünür</string>
<string name="revanced_hide_shorts_super_thanks_button_title">Süper Teşekkürler düğmesini gizle</string>
<string name="revanced_hide_shorts_super_thanks_button_summary_on">Süper Teşekkürler satın al düğmesi gizli</string>
<string name="revanced_hide_shorts_super_thanks_button_summary_off">Süper Teşekkürler satın al düğmesi görünür</string>
<string name="revanced_hide_shorts_super_thanks_button_summary_on">Süper Teşekkürler düğmesi gizli</string>
<string name="revanced_hide_shorts_super_thanks_button_summary_off">Süper Teşekkürler düğmesi görünür</string>
<string name="revanced_hide_shorts_effect_button_title">Efekt düğmesini gizle</string>
<string name="revanced_hide_shorts_effect_button_summary_on">Efekt düğmesi gizli</string>
<string name="revanced_hide_shorts_effect_button_summary_off">Efekt düğmesi gösteriliyor</string>
<string name="revanced_hide_shorts_effect_button_summary_off">Efekt düğmesi görünür</string>
<string name="revanced_hide_shorts_green_screen_button_title">Yeşil ekran düğmesini gizle</string>
<string name="revanced_hide_shorts_green_screen_button_summary_on">Yeşil ekran düğmesi gizli</string>
<string name="revanced_hide_shorts_green_screen_button_summary_off">Yeşil ekran düğmesi görünür</string>
@@ -808,12 +815,12 @@ Ses parçası menüsünü göstermek için \"Video akışlarını taklit et\" ay
<string name="revanced_hide_shorts_use_sound_button_summary_off">Bu sesi kullan düğmesi gösteriliyor</string>
<string name="revanced_hide_shorts_use_template_button_title">Bu şablonu kullan düğmesini gizle</string>
<string name="revanced_hide_shorts_use_template_button_summary_on">Bu şablonu kullan düğmesi gizli</string>
<string name="revanced_hide_shorts_use_template_button_summary_off">Bu şablonu kullan düğmesi gösteriliyor</string>
<string name="revanced_hide_shorts_use_template_button_summary_off">Bu şablonu kullan düğmesi görünür</string>
<string name="revanced_hide_shorts_like_fountain_title">Beğeni düğmesi çeşme animasyonunu gizle</string>
<string name="revanced_hide_shorts_like_fountain_summary_on">Beğeni düğmesi çeşme animasyonu gizli</string>
<string name="revanced_hide_shorts_like_fountain_summary_off">Beğeni düğmesi çeşme animasyonu görünür</string>
<string name="revanced_hide_shorts_like_button_title">Beğen düğmesini gizle</string>
<string name="revanced_hide_shorts_like_button_summary_on">Beğenme düğmesi gizli</string>
<string name="revanced_hide_shorts_like_button_summary_on">Beğen düğmesi gizli</string>
<string name="revanced_hide_shorts_like_button_summary_off">Beğen düğmesi görünür</string>
<string name="revanced_hide_shorts_dislike_button_title">Beğenmeme düğmesini gizle</string>
<string name="revanced_hide_shorts_dislike_button_summary_on">Beğenmeme düğmesi gizli</string>
@@ -842,9 +849,9 @@ Ses parçası menüsünü göstermek için \"Video akışlarını taklit et\" ay
<string name="revanced_hide_shorts_video_title_summary_on">Video başlığı gizli</string>
<string name="revanced_hide_shorts_video_title_summary_off">Video başlığı görünür</string>
<string name="revanced_hide_shorts_sound_metadata_label_title">Ses bilgisi etiketini gizle</string>
<string name="revanced_hide_shorts_sound_metadata_label_summary_on">Ses meta veri etiketi gizli</string>
<string name="revanced_hide_shorts_sound_metadata_label_summary_off">Ses meta veri etiketi görünür</string>
<string name="revanced_hide_shorts_full_video_link_label_title">Video bağlantı etiketini gizle</string>
<string name="revanced_hide_shorts_sound_metadata_label_summary_on">Ses bilgisi etiketi gizli</string>
<string name="revanced_hide_shorts_sound_metadata_label_summary_off">Ses bilgisi etiketi görünür</string>
<string name="revanced_hide_shorts_full_video_link_label_title">Video bağlantısı etiketini gizle</string>
<string name="revanced_hide_shorts_full_video_link_label_summary_on">Video bağlantısı etiketi gizli</string>
<string name="revanced_hide_shorts_full_video_link_label_summary_off">Video bağlantısı etiketi görünür</string>
<string name="revanced_hide_shorts_navigation_bar_title">Gezinme çubuğunu gizle</string>
@@ -857,12 +864,12 @@ Ses parçası menüsünü göstermek için \"Video akışlarını taklit et\" ay
Otomatik oynatma YouTube ayarlarından değiştirilebilir:
Ayarlar → Oynatma → Sonraki videoyu otomatik oynat"</string>
<string name="revanced_end_screen_suggested_video_summary_off">Bitiş ekranı önerilen videosu gösteriliyor</string>
<string name="revanced_end_screen_suggested_video_summary_off">Bitiş ekranı önerilen videosu görünür</string>
</patch>
<patch id="layout.hide.relatedvideooverlay.hideRelatedVideoOverlayPatch">
<string name="revanced_hide_related_videos_overlay_title">İlgili videolar bindirmesini gizle</string>
<string name="revanced_hide_related_videos_overlay_summary_on">Tam ekrandaki ilgili videolar bindirmesi gizli</string>
<string name="revanced_hide_related_videos_overlay_summary_off">Tam ekrandaki ilgili videolar bindirmesi görünür</string>
<string name="revanced_hide_related_videos_overlay_title">İlgili videolar katmanını gizle</string>
<string name="revanced_hide_related_videos_overlay_summary_on">Tam ekrandaki ilgili videolar katmanı gizli</string>
<string name="revanced_hide_related_videos_overlay_summary_off">Tam ekrandaki ilgili videolar katmanı görünür</string>
</patch>
<patch id="layout.hide.time.hideTimestampPatch">
<string name="revanced_hide_timestamp_title">Video zaman damgasını gizle</string>
@@ -887,7 +894,7 @@ Ayarlar → Oynatma → Sonraki videoyu otomatik oynat"</string>
<string name="revanced_open_videos_fullscreen_portrait_summary_off">Videolar tam ekranda açılmaz</string>
</patch>
<patch id="layout.player.overlay.customPlayerOverlayOpacityResourcePatch">
<string name="revanced_player_overlay_opacity_title">Oynatıcı paneli opaklığı</string>
<string name="revanced_player_overlay_opacity_title">Oynatıcı katmanı opaklığı</string>
<string name="revanced_player_overlay_opacity_summary">0-100 arasında opaklık değeri, 0 şeffaftır</string>
<string name="revanced_player_overlay_opacity_invalid_toast">Oynatıcı katmanı opaklığı 0-100 arasında olmalıdır</string>
</patch>
@@ -958,7 +965,7 @@ Zaman çubuğu küçük resimleri, mevcut video ile aynı kaliteyi kullanacaktı
Bu özellik, 720p veya daha düşük video kalitesi ve çok hızlı bir internet bağlantısı kullanıldığında en iyi şekilde çalışır."</string>
<string name="revanced_restore_old_seekbar_thumbnails_title">Eski zaman çubuğu küçük resimlerini geri getir</string>
<string name="revanced_restore_old_seekbar_thumbnails_summary_on">Zaman çubuğu küçük resimleri zaman çubuğunun üzerinde görünecek</string>
<string name="revanced_restore_old_seekbar_thumbnails_summary_off">Zaman çubuğu küçük resimleri tam ekranda gösterilecek</string>
<string name="revanced_restore_old_seekbar_thumbnails_summary_off">Zaman çubuğu küçük resimleri tam ekranda görünecek</string>
</patch>
<patch id="layout.sponsorblock.sponsorBlockResourcePatch">
<string name="revanced_sb_enable_sb">SponsorBlock\'u etkinleştir</string>
@@ -977,13 +984,13 @@ Bu özellik, 720p veya daha düşük video kalitesi ve çok hızlı bir internet
<string name="revanced_sb_enable_auto_hide_skip_segment_button">Atlama düğmesini otomatik olarak gizle</string>
<string name="revanced_sb_enable_auto_hide_skip_segment_button_sum_on">Atlama düğmesi birkaç saniye sonra gizlenir</string>
<string name="revanced_sb_enable_auto_hide_skip_segment_button_sum_off">Atlama düğmesi bütün kısım boyunca gösterilir</string>
<string name="revanced_sb_auto_hide_skip_button_duration">Atla düğmesi süresi</string>
<string name="revanced_sb_auto_hide_skip_button_duration_sum">Atla ve öne çıkanlara atla düğmelerini otomatik olarak gizlemeden önce ne kadar süreyle göster</string>
<string name="revanced_sb_auto_hide_skip_button_duration">Atlama düğmesi süresi</string>
<string name="revanced_sb_auto_hide_skip_button_duration_sum">Atla ve vurguya atla düğmelerinin otomatik olarak gizlenmeden önce ne kadar süre gösterileceği</string>
<string name="revanced_sb_general_skiptoast">Atlamayı geri al bildirimini göster</string>
<string name="revanced_sb_general_skiptoast_sum_on">Bildirim, bir segment otomatik olarak atlandığında gösterilir. Atlamayı geri almak için bildirimine dokunun</string>
<string name="revanced_sb_general_skiptoast_sum_off">Toast gösterilmiyor</string>
<string name="revanced_sb_toast_on_skip_duration">Atlama toast süresi</string>
<string name="revanced_sb_toast_on_skip_duration_sum">Geri al atla bildirimini ne kadar süreyle göster</string>
<string name="revanced_sb_general_skiptoast_sum_on">Bir kısım otomatik olarak atlandığında bildirim gösterilir. Atlamayı geri almak için bildirime dokunun</string>
<string name="revanced_sb_general_skiptoast_sum_off">Bildirim gösterilmez</string>
<string name="revanced_sb_toast_on_skip_duration">Atlama bildirimi süresi</string>
<string name="revanced_sb_toast_on_skip_duration_sum">Atlamayı geri alma bildiriminin ne kadar süre gösterileceği</string>
<string name="revanced_sb_duration_1s">1 saniye</string>
<string name="revanced_sb_duration_2s">2 saniye</string>
<string name="revanced_sb_duration_3s">3 saniye</string>
@@ -994,14 +1001,14 @@ Bu özellik, 720p veya daha düşük video kalitesi ve çok hızlı bir internet
<string name="revanced_sb_duration_8s">8 saniye</string>
<string name="revanced_sb_duration_9s">9 saniye</string>
<string name="revanced_sb_duration_10s">10 saniye</string>
<string name="revanced_sb_general_time_without">Kısımlar çıkarıldığında kalan video süresini göster</string>
<string name="revanced_sb_general_time_without_sum_on">Tüm segmentler çıkarıldıktan sonra video uzunluğu arama çubuğunda gösterilir</string>
<string name="revanced_sb_general_time_without_sum_off">Tam video uzunluğu gösterilir</string>
<string name="revanced_sb_general_time_without">Kısımlar olmadan video süresini göster</string>
<string name="revanced_sb_general_time_without_sum_on">Video süresi eksi bütün kısımların süresi zaman çubuğunda görünür</string>
<string name="revanced_sb_general_time_without_sum_off">Tam video süresi görünür</string>
<string name="revanced_sb_create_segment_category">Yeni kısım oluşturma</string>
<string name="revanced_sb_enable_create_segment">Yeni kısım oluşturma düğmesini göster</string>
<string name="revanced_sb_enable_create_segment_sum_on">Yeni kısım oluşturma düğmesi gösterilir</string>
<string name="revanced_sb_enable_create_segment_sum_off">Yeni kısım oluşturma düğmesi gösterilmez</string>
<string name="revanced_sb_general_adjusting">Yeni kısım oluştururken atlama süresi</string>
<string name="revanced_sb_general_adjusting">Yeni kısım oluştururkenki atlama süresi</string>
<string name="revanced_sb_general_adjusting_sum">Yeni bölüm oluştururkenki atlama düğmelerinin atlayacağı milisaniye miktarı</string>
<string name="revanced_sb_general_adjusting_invalid">Değer pozitif bir sayı olmalıdır</string>
<string name="revanced_sb_guidelines_preference_title">Yönergeleri görüntüle</string>
@@ -1011,10 +1018,10 @@ Bu özellik, 720p veya daha düşük video kalitesi ve çok hızlı bir internet
<string name="revanced_sb_guidelines_popup_already_read">Okudum</string>
<string name="revanced_sb_guidelines_popup_open">Göster</string>
<string name="revanced_sb_general">Genel</string>
<string name="revanced_sb_toast_on_connection_error_title">API kullanılamadığında bir tost bildirimi göster</string>
<string name="revanced_sb_toast_on_connection_error_summary_on">SponsorBlock kullanılamadığında tost bildirimi gösterilir</string>
<string name="revanced_sb_toast_on_connection_error_summary_off">SponsorBlock kullanılamadığında tost bildirimi gösterilmez</string>
<string name="revanced_sb_general_skipcount">Atlama sayısı izlemeyi etkinleştir</string>
<string name="revanced_sb_toast_on_connection_error_title">API kullanılamadığında bir bildirim göster</string>
<string name="revanced_sb_toast_on_connection_error_summary_on">SponsorBlock kullanılamadığında bir bildirim gösterilir</string>
<string name="revanced_sb_toast_on_connection_error_summary_off">SponsorBlock kullanılamadığında bildirim gösterilmez</string>
<string name="revanced_sb_general_skipcount">Atlama sayısı takibini etkinleştir</string>
<string name="revanced_sb_general_skipcount_sum_on">SponsorBlock liderlik tablosunun ne kadar zaman kazanıldığını bilmesini sağlar. Her bir kısım atlandığında liderlik tablosuna bir mesaj gönderilir</string>
<string name="revanced_sb_general_skipcount_sum_off">Atlama sayısı izleme etkin değil</string>
<string name="revanced_sb_general_min_duration">En az kısım süresi</string>
@@ -1022,7 +1029,7 @@ Bu özellik, 720p veya daha düşük video kalitesi ve çok hızlı bir internet
<string name="revanced_sb_general_min_duration_invalid">Geçersiz süre</string>
<string name="revanced_sb_general_uuid">Özel kullanıcı kimliğiniz</string>
<string name="revanced_sb_general_uuid_sum">Bu gizli tutulmalıdır. Bu bir şifreye benzer ve başkalarıyla paylaşılmaması gerekir. Birinin eline geçerse, sizi taklit edebilirler</string>
<string name="revanced_sb_general_uuid_invalid">Özel kullanıcı kimliğiniz en az 30 karakter olmalıdır</string>
<string name="revanced_sb_general_uuid_invalid">Özel kullanıcı kimliği en az 30 karakter olmalıdır</string>
<string name="revanced_sb_general_api_url">API URL\'sini değiştir</string>
<string name="revanced_sb_general_api_url_sum">SponsorBlock\'un sunucuya çağrı yapmak için kullandığı adres</string>
<string name="revanced_sb_api_url_reset">API URL\'si sıfırlandı</string>
@@ -1035,28 +1042,28 @@ Bu özellik, 720p veya daha düşük video kalitesi ve çok hızlı bir internet
<string name="revanced_sb_settings_import_successful">Ayarlar başarıyla içe aktarıldı</string>
<string name="revanced_sb_settings_import_failed">İçe aktarılamadı: %s</string>
<string name="revanced_sb_settings_export_failed">Dışa aktarılamadı: %s</string>
<string name="revanced_sb_settings_revanced_export_user_id_warning">"Ayarlarınızda özel bir SponsorBlock kullanıcı kimliği var.
<string name="revanced_sb_settings_revanced_export_user_id_warning">"Ayarlarınız özel bir SponsorBlock kullanıcı kimliği içeriyor.
Kullanıcı kimliğiniz bir şifre gibidir ve asla paylaşılmamalıdır.
Kullanıcı kimliğiniz bir parola gibidir ve asla paylaşılmamalıdır.
"</string>
<string name="revanced_sb_settings_revanced_export_user_id_warning_dismiss">Bir daha gösterme</string>
<string name="revanced_sb_diff_segments">Kısım davranışını değiştir</string>
<string name="revanced_sb_segments_sponsor">Sponsor</string>
<string name="revanced_sb_segments_sponsor_sum">Ücretli tanıtım, ücretli yönlendirmeler ve doğrudan reklamlar. Kendi reklamı veya beğendiği amaçlara/üreticilere/sitelere/ürünlere atıfta bulunmalar için değil</string>
<string name="revanced_sb_segments_selfpromo">Karşılıksız/Kendi Reklamı</string>
<string name="revanced_sb_segments_selfpromo_sum">Ücretsiz veya kendi reklamı olması dışında Sponsor\'a benzer. Ürünler, bağışlar veya kimlerle birlikte çalıştıkları hakkında kısımlar içerir</string>
<string name="revanced_sb_segments_selfpromo">Karşılıksız / Kendi Reklamı</string>
<string name="revanced_sb_segments_selfpromo_sum">Ücretsiz veya kendi reklamı olması dışında Sponsor\'a benzer. Ürünler, bağışlar veya kimlerle birlikte çalıştıkları hakkında kısımları içerir</string>
<string name="revanced_sb_segments_interaction">Etkileşim Hatırlatıcısı (Abone Ol)</string>
<string name="revanced_sb_segments_interaction_sum">İçeriğin ortasında beğenme, abone olma veya takip etme için kısa hatırlatmalar. Eğer uzunsa veya belirli birşey hakkındaysa kendi reklamı kategorisinde olmalıdır</string>
<string name="revanced_sb_segments_highlight">Vurgu</string>
<string name="revanced_sb_segments_highlight_sum">Videonun çoğu kişinin aradığı bölümü</string>
<string name="revanced_sb_segments_intro">Ara/Giriş Animasyonu</string>
<string name="revanced_sb_segments_intro">Ara / Giriş Animasyonu</string>
<string name="revanced_sb_segments_intro_sum">Gerçek içerik barındırmayan aralıklar. Duraklama, sabit kare veya tekrar eden bir animasyon olabilir. Bilgi içeren geçişleri içermez</string>
<string name="revanced_sb_segments_outro">Bitiş Ekranı / Jenerik</string>
<string name="revanced_sb_segments_outro_sum">Jenerik veya YouTube bitiş kartlarının göründüğü zaman. Bilgi içeren çıkarımlar için değil</string>
<string name="revanced_sb_segments_preview">Ön İzleme/Özet/İma</string>
<string name="revanced_sb_segments_preview">Önizleme / Özet / İma</string>
<string name="revanced_sb_segments_preview_sum">Videoda veya bir dizinin diğer videolarında neler olduğunu ve nelerin geleceğini gösteren, tüm bilgilerin başka bir yerde tekrarlandığı klip koleksiyonu</string>
<string name="revanced_sb_segments_filler">Konuyla Alakasız/Şaka</string>
<string name="revanced_sb_segments_filler_sum">Videonun içeriğini anlamak için gerekli olmayan, sadece videoyu doldurmak veya mizah için eklenen alakasız sahneler. İçerik veya arka plan detaylarını içeren kısımları içermez</string>
<string name="revanced_sb_segments_filler">Konuyla Alakasız / Şakalar</string>
<string name="revanced_sb_segments_filler_sum">Videonun ana içeriğini anlamak için gerekli olmayan, sadece videoyu doldurmak veya mizah için eklenen alakasız sahneler. İçerik veya arka plan detaylarını içeren kısımları içermez</string>
<string name="revanced_sb_segments_nomusic">Müzik: Müzik Olmayan Kısım</string>
<string name="revanced_sb_segments_nomusic_sum">Yalnızca müzik videolarında kullanım içindir. Müzik videolarının başka bir kategorinin kapsamadığı müziksiz bölümleri</string>
<string name="revanced_sb_skip_button_compact">Atla</string>
@@ -1096,7 +1103,7 @@ Kullanıcı kimliğiniz bir şifre gibidir ve asla paylaşılmamalıdır.
<string name="revanced_sb_skip_seekbaronly">Zaman çubuğunda göster</string>
<string name="revanced_sb_skip_ignore">Devre dışı bırak</string>
<string name="revanced_sb_submit_failed_invalid">Kısım gönderilemedi: %s</string>
<string name="revanced_sb_submit_failed_timeout">SponsorBlock geçici olarak kullanılamıyor</string>
<string name="revanced_sb_submit_failed_timeout">SponsorBlock geçici olarak kapalı</string>
<string name="revanced_sb_submit_failed_unknown_error">Kısım gönderilemedi (durum: %1$d %2$s)</string>
<string name="revanced_sb_submit_failed_rate_limit">Kısım gönderilemiyor. Kullanıcı veya IP\'den çok fazla istek</string>
<string name="revanced_sb_submit_failed_forbidden">Kısım gönderilemiyor: %s</string>
@@ -1113,7 +1120,7 @@ Aynısı mevcut"</string>
<string name="revanced_sb_vote_upvote">Olumlu oy</string>
<string name="revanced_sb_vote_downvote">Olumsuz oy</string>
<string name="revanced_sb_vote_category">Kategori değiştir</string>
<string name="revanced_sb_vote_no_segments">Oylanılacak bir kısım yok</string>
<string name="revanced_sb_vote_no_segments">Oylanılacak kısım bulunmuyor</string>
<!-- A segment start and end time, such as "02:10 to 03:40". -->
<string name="revanced_sb_vote_segment_time_to_from">%1$s - %2$s</string>
<string name="revanced_sb_new_segment_choose_category">Kısım kategorisini seçin</string>
@@ -1211,7 +1218,7 @@ Daha sonra kapatılırsa, arayüz hatalarını önlemek için uygulama verilerin
<string name="revanced_change_start_page_entry_live">Canlı yayın</string>
<string name="revanced_change_start_page_entry_movies">Filmler</string>
<string name="revanced_change_start_page_entry_music">Müzik</string>
<string name="revanced_change_start_page_entry_news">Habercilik</string>
<string name="revanced_change_start_page_entry_news">Haberler</string>
<string name="revanced_change_start_page_entry_notifications">Bildirimler</string>
<string name="revanced_change_start_page_entry_playlists">Oynatma listeleri</string>
<string name="revanced_change_start_page_entry_search">Arama</string>
@@ -1221,7 +1228,7 @@ Daha sonra kapatılırsa, arayüz hatalarını önlemek için uygulama verilerin
<string name="revanced_change_start_page_entry_trending">Trendler</string>
<string name="revanced_change_start_page_entry_virtual_reality">Sanal Gerçeklik</string>
<string name="revanced_change_start_page_entry_watch_later">Daha sonra izle</string>
<string name="revanced_change_start_page_entry_your_clips">Sizin klipleriniz</string>
<string name="revanced_change_start_page_entry_your_clips">Klipleriniz</string>
<string name="revanced_change_start_page_always_title">Başlangıç sayfasını her zaman değiştir</string>
<string name="revanced_change_start_page_always_summary_on">"Başlangıç sayfası her zaman değiştirilir
@@ -1241,8 +1248,8 @@ Kısıtlama: Araç çubuğundaki geri düğmesini kullanmak işe yaramayabilir"<
</patch>
<patch id="layout.shortsautoplay.shortsAutoplayPatch">
<string name="revanced_shorts_autoplay_title">Shorts\'u otomatik oynat</string>
<string name="revanced_shorts_autoplay_summary_on">Sıradaki Shorts videosu otomatik olarak oynatılacak</string>
<string name="revanced_shorts_autoplay_summary_off">Aynı Shorts videosu sürekli döngü yapacak</string>
<string name="revanced_shorts_autoplay_summary_on">Shorts otomatik oynatılacak</string>
<string name="revanced_shorts_autoplay_summary_off">Aynı Shorts videosu sürekli yeniden oynayacak</string>
<string name="revanced_shorts_autoplay_background_title">Arka planda Shorts\'u otomatik oynat</string>
<string name="revanced_shorts_autoplay_background_summary_on">Shorts arka planda otomatik oynatılacak</string>
<string name="revanced_shorts_autoplay_background_summary_off">Shorts arka planda döngüde olacak</string>
@@ -1297,7 +1304,7 @@ Genişletmek veya kapatmak için kaydırın"</string>
<string name="revanced_miniplayer_width_dip_invalid_toast">Piksel boyutu %1$s ve %2$s arasında olmalıdır</string>
<string name="revanced_miniplayer_opacity_title">Katman opaklığı</string>
<string name="revanced_miniplayer_opacity_summary">0-100 arasında opaklık değeri, 0 şeffaftır</string>
<string name="revanced_miniplayer_opacity_invalid_toast">Katman opaklığı 0-100 arasında olmalıdır</string>
<string name="revanced_miniplayer_opacity_invalid_toast">Mini oynatıcı katman opaklığı 0-100 arasında olmalıdır</string>
</patch>
<patch id="layout.theme.themePatch">
<string name="revanced_gradient_loading_screen_title">Gradyan yükleme ekranını etkinleştir</string>
@@ -1305,7 +1312,7 @@ Genişletmek veya kapatmak için kaydırın"</string>
<string name="revanced_gradient_loading_screen_summary_off">Yükleme ekranı tek renk bir arka plana sahip olacak</string>
<string name="revanced_splash_screen_animation_style_title">ılış ekranı stili</string>
<string name="revanced_splash_screen_animation_style_entry_1">Renk</string>
<string name="revanced_splash_screen_animation_style_entry_2">Siyah ve beyaz</string>
<string name="revanced_splash_screen_animation_style_entry_2">Siyah beyaz</string>
<string name="revanced_seekbar_custom_color_title">Özel zaman çubuğu rengini etkinleştir</string>
<string name="revanced_seekbar_custom_color_summary_on">Özel zaman çubuğu rengi gösterilir</string>
<string name="revanced_seekbar_custom_color_summary_off">Orijinal zaman çubuğu rengi gösterilir</string>
@@ -1405,8 +1412,8 @@ Bunu etkinleştirmek daha yüksek video kalitelerini açabilir"</string>
<string name="revanced_disable_haptic_feedback_chapters_summary_on">Bölümler titreşimi devre dışı</string>
<string name="revanced_disable_haptic_feedback_chapters_summary_off">Bölümler titreşimi etkin</string>
<string name="revanced_disable_haptic_feedback_precise_seeking_title">Hassas sarma titreşimini devre dışı bırak</string>
<string name="revanced_disable_haptic_feedback_precise_seeking_summary_on">Hassas sarma titreşimi devre dışı</string>
<string name="revanced_disable_haptic_feedback_precise_seeking_summary_off">Hassas sarma titreşimi etkin</string>
<string name="revanced_disable_haptic_feedback_precise_seeking_summary_on">Hassas sardırma titreşimi devre dışı</string>
<string name="revanced_disable_haptic_feedback_precise_seeking_summary_off">Hassas sardırma titreşimi etkin</string>
<string name="revanced_disable_haptic_feedback_seek_undo_title">Sardırmayı geri alma titreşimini devre dışı bırak</string>
<string name="revanced_disable_haptic_feedback_seek_undo_summary_on">Sardırmayı geri alma titreşimi devre dışı</string>
<string name="revanced_disable_haptic_feedback_seek_undo_summary_off">Sardırmayı geri alma titreşimi etkin</string>
@@ -1469,6 +1476,9 @@ Bunu etkinleştirmek daha yüksek video kalitelerini açabilir"</string>
<string name="revanced_custom_speed_menu_title">Özel oynatma hızı menüsü</string>
<string name="revanced_custom_speed_menu_summary_on">Özel oynatma hızı menüsü gösterilir</string>
<string name="revanced_custom_speed_menu_summary_off">Özel oynatma hızı menüsü gösterilmez</string>
<string name="revanced_restore_old_speed_menu_title">Eski oynatma hızı menüsünü geri getir</string>
<string name="revanced_restore_old_speed_menu_summary_on">Eski hız menüsü gösterilir</string>
<string name="revanced_restore_old_speed_menu_summary_off">Modern hız menüsü gösterilir</string>
<string name="revanced_custom_playback_speeds_title">Özel oynatma hızları</string>
<string name="revanced_custom_playback_speeds_summary">Özel oynatma hızları ekle veya değiştir</string>
<string name="revanced_custom_playback_speeds_invalid">Özel hızlar %s\'den az olmalıdır</string>
@@ -1480,10 +1490,10 @@ Bunu etkinleştirmek daha yüksek video kalitelerini açabilir"</string>
<patch id="video.speed.remember.rememberPlaybackSpeedPatch">
<string name="revanced_remember_playback_speed_last_selected_title">Oynatma hızı değişikliklerini hatırla</string>
<string name="revanced_remember_playback_speed_last_selected_summary_on">Oynatma hızı değişiklikleri tüm videolara uygulanır</string>
<string name="revanced_remember_playback_speed_last_selected_summary_off">Oynatma hızı değişiklikleri yalnızca geçerli videoya uygulanır</string>
<string name="revanced_remember_playback_speed_last_selected_summary_off">Oynatma hızı değişiklikleri yalnızca mevcut videoya uygulanır</string>
<string name="revanced_remember_playback_speed_last_selected_toast_title">Oynatma hızı değişikliklerinde bildirim göster</string>
<string name="revanced_remember_playback_speed_last_selected_toast_summary_on">Varsayılan oynatma hızı değiştirildiğinde bir bildirim gösterilir</string>
<string name="revanced_remember_playback_speed_last_selected_toast_summary_off">Varsayılan oynatma hızı değiştirildiğinde bir bildirim gösterilmez.</string>
<string name="revanced_remember_playback_speed_last_selected_toast_summary_off">Varsayılan oynatma hızı değiştirildiğinde bir bildirim gösterilmez</string>
<string name="revanced_playback_speed_default_title">Varsayılan oynatma hızı</string>
<string name="revanced_remember_playback_speed_toast">Varsayılan hız %s olarak ayarlandı</string>
</patch>

View File

@@ -468,8 +468,15 @@ Second \"item\" text"</string>
<string name="revanced_external_downloader_action_button_summary_on">Кнопка \"Завантажити\" запускає зовнішній завантажувач</string>
<string name="revanced_external_downloader_action_button_summary_off">Кнопка \"Завантажити\" запускає власний завантажувач</string>
<string name="revanced_external_downloader_name_title">Ім\'я пакета завантажувача</string>
<string name="revanced_external_downloader_name_summary">Ім\'я пакета встановленого Вами додатку зовнішнього завантажувача, такого як NewPipe чи YTDLnis</string>
<string name="revanced_external_downloader_name_summary">Ім\'я пакета встановленого Вами застосунку зовнішнього завантажувача</string>
<string name="revanced_external_downloader_other_item_hint">Введіть ім\'я пакета</string>
<string name="revanced_external_downloader_other_item">Вказати інший</string>
<string name="revanced_external_downloader_not_found_title">Застосунок не встановлено</string>
<string name="revanced_external_downloader_not_installed_warning">%s не встановлено. Встановіть його.</string>
<string name="revanced_external_downloader_package_not_found_warning">"Не вдалося знайти встановлений застосунок з ім'ям пакета: %s
Перевірте, чи правильне ім'я пакета та чи встановлено застосунок"</string>
<string name="revanced_external_downloader_empty_warning">Ім\'я пакета не може бути порожнім</string>
</patch>
<patch id="interaction.seekbar.disablePreciseSeekingGesturePatch">
<string name="revanced_disable_precise_seeking_gesture_title">Вимкнути жест точного перемотування</string>
@@ -1461,6 +1468,9 @@ Second \"item\" text"</string>
<string name="revanced_custom_speed_menu_title">Користувацьке меню швидкості відтворення</string>
<string name="revanced_custom_speed_menu_summary_on">Користувацьке меню швидкості відтворення показується</string>
<string name="revanced_custom_speed_menu_summary_off">Користувацьке меню швидкості відтворення не показується</string>
<string name="revanced_restore_old_speed_menu_title">Відновити старе меню швидкості відтворення</string>
<string name="revanced_restore_old_speed_menu_summary_on">Показується старе меню швидкості</string>
<string name="revanced_restore_old_speed_menu_summary_off">Показується сучасне меню швидкості</string>
<string name="revanced_custom_playback_speeds_title">Користувацькі швидкості відтворення</string>
<string name="revanced_custom_playback_speeds_summary">Додавання або зміна користувацьких швидкостей відтворення</string>
<string name="revanced_custom_playback_speeds_invalid">Користувацькі швидкості повинні бути менші ніж %s</string>

View File

@@ -70,7 +70,7 @@ Second \"item\" text"</string>
<patch id="misc.gms.gmsCoreSupportResourcePatch">
<!-- Translations of this should not be longer than the original English text, otherwise the text can be clipped and not entirely shown. -->
<string name="gms_core_toast_not_installed_message">MicroG GmsCore chưa được cài đặt. Hãy cài đặt ngay.</string>
<string name="gms_core_dialog_title">Hành động cần thiết</string>
<string name="gms_core_dialog_title">Cần thực hiện</string>
<string name="gms_core_dialog_not_whitelisted_not_allowed_in_background_message">"MicroG GmsCore không có quyền chạy nền.
Hãy làm theo hướng dẫn \"Don't kill my app\" dành cho điện thoại của bạn và áp dụng các bước đó để cài đặt MicroG.
@@ -90,7 +90,7 @@ Nhấn nút tiếp tục và cho phép thay đổi lựa chọn tối ưu hóa."
<string name="revanced_settings_screen_00_about_title">Giới thiệu</string>
<string name="revanced_settings_screen_01_ads_title">Quảng cáo</string>
<string name="revanced_settings_screen_02_alt_thumbnails_title">Hình thu nhỏ thay thế</string>
<string name="revanced_settings_screen_03_feed_title">Bảng tin</string>
<string name="revanced_settings_screen_03_feed_title">Trang video</string>
<string name="revanced_settings_screen_04_general_title">Chung</string>
<string name="revanced_settings_screen_05_player_title">Trình phát</string>
<string name="revanced_settings_screen_07_seekbar_title">Thanh tiến trình</string>
@@ -281,9 +281,9 @@ Nếu cài đặt này được bật và Doodle đang hiển thị tại khu v
<string name="revanced_hide_description_components_screen_summary">Ẩn hoặc hiện các thành phần mô tả video</string>
<string name="revanced_hide_filter_bar_screen_title">Thanh bộ lọc</string>
<string name="revanced_hide_filter_bar_screen_summary">Ẩn hoặc hiện thanh bộ lọc trong trang video, video liên quan, kết quả tìm kiếm và nhật ký xem</string>
<string name="revanced_hide_filter_bar_feed_in_feed_title">Ẩn trong bảng tin</string>
<string name="revanced_hide_filter_bar_feed_in_feed_summary_on">Đã ẩn trong bảng tin</string>
<string name="revanced_hide_filter_bar_feed_in_feed_summary_off">Đã hiển thị trong bảng tin</string>
<string name="revanced_hide_filter_bar_feed_in_feed_title">Ẩn trong các trang video</string>
<string name="revanced_hide_filter_bar_feed_in_feed_summary_on">Đã ẩn trong trang video</string>
<string name="revanced_hide_filter_bar_feed_in_feed_summary_off">Đã hiển thị trong trang video</string>
<string name="revanced_hide_filter_bar_feed_in_related_videos_title">Ẩn trong video liên quan</string>
<string name="revanced_hide_filter_bar_feed_in_related_videos_summary_on">Đã ẩn trong video liên quan</string>
<string name="revanced_hide_filter_bar_feed_in_related_videos_summary_off">Đã hiển thị trong video liên quan</string>
@@ -355,10 +355,10 @@ Nếu cài đặt này được bật và Doodle đang hiển thị tại khu v
<string name="revanced_custom_filter_strings_summary">Danh sách các chuỗi dựng đường dẫn thành phần để lọc được ngăn cách bởi dòng mới</string>
<string name="revanced_custom_filter_toast_invalid_syntax">Bộ lọc tuỳ chỉnh không hợp lệ: %s</string>
<string name="revanced_hide_keyword_content_screen_title">Ẩn nội dung từ khóa</string>
<string name="revanced_hide_keyword_content_screen_summary">Ẩn video trong tìm kiếm và bảng tin bằng bộ lọc từ khóa</string>
<string name="revanced_hide_keyword_content_home_title">Ẩn video trang chủ bằng từ khóa</string>
<string name="revanced_hide_keyword_content_home_summary_on">Video thẻ trang chủ đã được lọc bằng từ khóa</string>
<string name="revanced_hide_keyword_content_home_summary_off">Video thẻ trang chủ không được lọc bằng từ khóa</string>
<string name="revanced_hide_keyword_content_screen_summary">Ẩn video trong trang video và tìm kiếm bằng bộ lọc từ khóa</string>
<string name="revanced_hide_keyword_content_home_title">Ẩn video Trang chủ theo từ khóa</string>
<string name="revanced_hide_keyword_content_home_summary_on">Video trong thẻ Trang chủ được lọc theo từ khóa</string>
<string name="revanced_hide_keyword_content_home_summary_off">Video trong thẻ Trang chủ không được lọc theo từ khóa</string>
<string name="revanced_hide_keyword_content_search_title">Ẩn kết quả tìm kiếm bằng từ khóa</string>
<string name="revanced_hide_keyword_content_search_summary_on">Kết quả tìm kiếm đã được lọc bằng từ khóa</string>
<string name="revanced_hide_keyword_content_search_summary_off">Kết quả tìm kiếm không được lọc bằng từ khóa</string>
@@ -374,7 +374,7 @@ Từ khóa có thể là tên kênh hoặc bất kỳ văn bản nào hiển th
Từ có chữ in hoa ở giữa phải được nhập cùng với chữ viết hoa (ví dụ: iPhone, TikTok, LeBlanc)"</string>
<string name="revanced_hide_keyword_content_about_title">Giới thiệu về bộ lọc từ khóa</string>
<string name="revanced_hide_keyword_content_about_summary">"Trang chủ/Đăng ký/Kết quả tìm kiếm được lọc để ẩn nội dung khớp với cụm từ khóa
<string name="revanced_hide_keyword_content_about_summary">"Trang chủ/Kênh đăng ký/Kết quả tìm kiếm được lọc để ẩn nội dung khớp với cụm từ khóa
Hạn chế
• Video ngắn không thể bị ẩn theo tên kênh
@@ -468,8 +468,15 @@ Tính năng này chỉ khả dụng trên các thiết bị cũ"</string>
<string name="revanced_external_downloader_action_button_summary_on">Nút tải xuống mở trình tải xuống bên ngoài của bạn</string>
<string name="revanced_external_downloader_action_button_summary_off">Nút tải xuống mở trình tải xuống trong ứng dụng gốc</string>
<string name="revanced_external_downloader_name_title">Tên gói trình tải xuống</string>
<string name="revanced_external_downloader_name_summary">Tên gói ứng dụng trình tải xuống bên ngoài đã cài đặt của bạn, chẳng hạn như NewPipe hoặc Seal</string>
<string name="revanced_external_downloader_name_summary">Tên gói ứng dụng trình tải xuống bên ngoài đã cài đặt của bạn</string>
<string name="revanced_external_downloader_other_item_hint">Nhập tên gói</string>
<string name="revanced_external_downloader_other_item">Khác</string>
<string name="revanced_external_downloader_not_found_title">Ứng dụng chưa được cài đặt</string>
<string name="revanced_external_downloader_not_installed_warning">%s chưa được cài đặt. Vui lòng cài đặt ứng dụng.</string>
<string name="revanced_external_downloader_package_not_found_warning">"Không tìm thấy ứng dụng đã cài với tên gói: %s
Vui lòng kiểm tra lại tên gói và đảm bảo ứng dụng đã được cài trên thiết bị"</string>
<string name="revanced_external_downloader_empty_warning">Tên gói không được để trống</string>
</patch>
<patch id="interaction.seekbar.disablePreciseSeekingGesturePatch">
<string name="revanced_disable_precise_seeking_gesture_title">Tắt cử chỉ tua chính xác</string>
@@ -745,7 +752,7 @@ Nếu thay đổi cài đặt này không có hiệu lực, hãy thử chuyển
<string name="revanced_hide_shorts_home_summary_on">Đã ẩn trong thẻ Trang chủ và video liên quan</string>
<string name="revanced_hide_shorts_home_summary_off">Đã hiển thị trong thẻ Trang chủ và video liên quan</string>
<string name="revanced_hide_shorts_search_title">Ẩn Shorts trong kết quả tìm kiếm</string>
<string name="revanced_hide_shorts_search_summary_on">Bị ẩn trong kết quả tìm kiếm</string>
<string name="revanced_hide_shorts_search_summary_on">Đã ẩn trong kết quả tìm kiếm</string>
<string name="revanced_hide_shorts_search_summary_off">Được hiển thị trong kết quả tìm kiếm</string>
<!-- 'Subscriptions' should be translated using the same localized wording YouTube displays for the Subscriptions tab. -->
<string name="revanced_hide_shorts_subscriptions_title">Ẩn Shorts trong thẻ Kênh đăng ký</string>
@@ -900,7 +907,7 @@ Cài đặt → Phát → Tự động phát video tiếp theo"</string>
<!-- Toast shown if the user enables RYD while a video is opened, and then tries to vote for the video. -->
<string name="revanced_ryd_failure_ryd_enabled_while_playing_video_then_user_voted">Tải lại video để bình chọn bằng Return YouTube Dislike</string>
<!-- Video likes have been set to hidden by the video uploader. -->
<string name="revanced_ryd_video_likes_hidden_by_video_owner">Bị ẩn bởi chủ sở hữu</string>
<string name="revanced_ryd_video_likes_hidden_by_video_owner">Đã ẩn bởi chủ sở hữu</string>
<string name="revanced_ryd_enabled_summary_on">Số lượt không thích được hiển thị</string>
<string name="revanced_ryd_enabled_summary_off">Số lượt không thích không được hiển thị</string>
<string name="revanced_ryd_shorts_title">Hiện số lượt không thích trong Shorts</string>
@@ -1092,7 +1099,7 @@ ID người dùng của bạn giống như mật khẩu và không bao giờ đ
<string name="revanced_sb_skip_automatically">Tự động bỏ qua</string>
<string name="revanced_sb_skip_automatically_once">Tự động bỏ qua một lần</string>
<string name="revanced_sb_skip_showbutton">Hiện nút Bỏ qua</string>
<string name="revanced_sb_skip_seekbaronly">Hiển thị trên thanh tiến trình</string>
<string name="revanced_sb_skip_seekbaronly">Đã hiển thị trên thanh tiến trình</string>
<string name="revanced_sb_skip_ignore">Tắt</string>
<string name="revanced_sb_submit_failed_invalid">Không thể gửi phân đoạn: %s</string>
<string name="revanced_sb_submit_failed_timeout">SponsorBlock bị sập tạm thời</string>
@@ -1198,7 +1205,7 @@ Nếu tắt đi sau đó, bạn nên xóa dữ liệu ứng dụng để tránh
<patch id="layout.startpage.changeStartPagePatch">
<string name="revanced_change_start_page_title">Thay đổi trang bắt đầu</string>
<string name="revanced_change_start_page_entry_default">Mặc định</string>
<string name="revanced_change_start_page_entry_all_subscriptions">Tất cả đăng ký</string>
<string name="revanced_change_start_page_entry_all_subscriptions">Tất cả kênh đăng ký</string>
<string name="revanced_change_start_page_entry_browse">Duyệt kênh</string>
<string name="revanced_change_start_page_entry_courses">Khóa học / Học tập</string>
<string name="revanced_change_start_page_entry_explore">Khám phá</string>
@@ -1216,7 +1223,7 @@ Nếu tắt đi sau đó, bạn nên xóa dữ liệu ứng dụng để tránh
<string name="revanced_change_start_page_entry_search">Tìm kiếm</string>
<string name="revanced_change_start_page_entry_shopping">Mua sắm</string>
<string name="revanced_change_start_page_entry_sports">Thể thao</string>
<string name="revanced_change_start_page_entry_subscriptions">Đăng ký</string>
<string name="revanced_change_start_page_entry_subscriptions">Kênh đăng ký</string>
<string name="revanced_change_start_page_entry_trending">Xu hướng</string>
<string name="revanced_change_start_page_entry_virtual_reality">Thực tế ảo</string>
<string name="revanced_change_start_page_entry_watch_later">Xem sau</string>
@@ -1262,11 +1269,11 @@ Hạn chế: Nút quay lại trên thanh công cụ có thể không hoạt đ
<string name="revanced_miniplayer_rounded_corners_summary_on">Góc được bo tròn</string>
<string name="revanced_miniplayer_rounded_corners_summary_off">Góc vuông</string>
<string name="revanced_miniplayer_double_tap_action_title">Bật chạm hai lần và chụm để thay đổi kích thước</string>
<string name="revanced_miniplayer_double_tap_action_summary_on">"Đã bật thao tác chạm hai lần và chụm để thay đổi kích thước
<string name="revanced_miniplayer_double_tap_action_summary_on">"Thao tác chạm hai lần và chụm để thay đổi kích thước đã bật
• Chạm hai lần để tăng kích thước trình phát thu nhỏ
• Chạm hai lần nữa để khôi phục kích thước ban đầu"</string>
<string name="revanced_miniplayer_double_tap_action_summary_off">Đã tắt thao tác chạm hai lần và chụm để thay đổi kích thước</string>
<string name="revanced_miniplayer_double_tap_action_summary_off">Thao tác chạm hai lần và chụm để thay đổi kích thước đã tắt</string>
<string name="revanced_miniplayer_drag_and_drop_title">Bật kéo và thả</string>
<string name="revanced_miniplayer_drag_and_drop_summary_on">"Kéo và thả đã được bật
@@ -1468,6 +1475,9 @@ Bật tính năng này có thể mở khóa chất lượng video cao hơn"</str
<string name="revanced_custom_speed_menu_title">Trình đơn tốc độ phát tùy chỉnh</string>
<string name="revanced_custom_speed_menu_summary_on">Trình đơn tốc độ phát tùy chỉnh được hiển thị</string>
<string name="revanced_custom_speed_menu_summary_off">Trình đơn tốc độ phát tùy chỉnh không được hiển thị</string>
<string name="revanced_restore_old_speed_menu_title">Khôi phục trình đơn tốc độ phát cũ</string>
<string name="revanced_restore_old_speed_menu_summary_on">Trình đơn tốc độ cũ được hiển thị</string>
<string name="revanced_restore_old_speed_menu_summary_off">Trình đơn tốc độ hiện đại được hiển thị</string>
<string name="revanced_custom_playback_speeds_title">Tốc độ phát tùy chỉnh</string>
<string name="revanced_custom_playback_speeds_summary">Thêm hoặc thay đổi tốc độ phát tùy chỉnh</string>
<string name="revanced_custom_playback_speeds_invalid">Tốc độ tùy chỉnh phải nhỏ hơn %s</string>

View File

@@ -468,8 +468,15 @@ Second \"item\" text"</string>
<string name="revanced_external_downloader_action_button_summary_on">下载按钮打开你的外部下载工具</string>
<string name="revanced_external_downloader_action_button_summary_off">下载按钮打开主要的在服务程序下载工具</string>
<string name="revanced_external_downloader_name_title">下载器的应用包名</string>
<string name="revanced_external_downloader_name_summary">已安装外部下载器程序的软件包名称,例如 NewPipe 或 Seal</string>
<string name="revanced_external_downloader_name_summary">已安装外部下载器应用的包名</string>
<string name="revanced_external_downloader_other_item_hint">输入包名</string>
<string name="revanced_external_downloader_other_item">其他</string>
<string name="revanced_external_downloader_not_found_title">应用未安装</string>
<string name="revanced_external_downloader_not_installed_warning">%s 未安装,请安装。</string>
<string name="revanced_external_downloader_package_not_found_warning">"找不到包名为 %s 的已安装应用
请验证包名是否正确且应用已安装"</string>
<string name="revanced_external_downloader_empty_warning">包名不能为空</string>
</patch>
<patch id="interaction.seekbar.disablePreciseSeekingGesturePatch">
<string name="revanced_disable_precise_seeking_gesture_title">禁用上滑精确定位进度手势</string>
@@ -1467,6 +1474,9 @@ Second \"item\" text"</string>
<string name="revanced_custom_speed_menu_title">自定义播放速度菜单</string>
<string name="revanced_custom_speed_menu_summary_on">显示自定义速度菜单</string>
<string name="revanced_custom_speed_menu_summary_off">不显示自定义速度菜单</string>
<string name="revanced_restore_old_speed_menu_title">恢复旧版播放速度菜单</string>
<string name="revanced_restore_old_speed_menu_summary_on">显示旧版速度菜单</string>
<string name="revanced_restore_old_speed_menu_summary_off">显示新版速度菜单</string>
<string name="revanced_custom_playback_speeds_title">自定义播放速度</string>
<string name="revanced_custom_playback_speeds_summary">添加或更改自定义播放速度</string>
<string name="revanced_custom_playback_speeds_invalid">自定义速度必须小于 %s</string>

View File

@@ -468,8 +468,15 @@ Second \"item\" text"</string>
<string name="revanced_external_downloader_action_button_summary_on">下載按鈕會開啟你的外部下載器</string>
<string name="revanced_external_downloader_action_button_summary_off">下載按鈕會開啟內建應用程式下載器</string>
<string name="revanced_external_downloader_name_title">下載器套件名稱</string>
<string name="revanced_external_downloader_name_summary">已安裝的外部下載器應用程式的套件名稱,例如 NewPipe 或 Seal</string>
<string name="revanced_external_downloader_name_summary">已安裝的外部下載器應用程式的套件名稱</string>
<string name="revanced_external_downloader_other_item_hint">輸入套件名稱</string>
<string name="revanced_external_downloader_other_item">其他</string>
<string name="revanced_external_downloader_not_found_title">應用程式未安裝</string>
<string name="revanced_external_downloader_not_installed_warning">未安裝 %s。請前往安裝。</string>
<string name="revanced_external_downloader_package_not_found_warning">"無法找到已安裝的應用程式,套件名稱為:%s
請驗證套件名稱是否正確以及應用程式是否已安裝"</string>
<string name="revanced_external_downloader_empty_warning">套件名稱不能為空</string>
</patch>
<patch id="interaction.seekbar.disablePreciseSeekingGesturePatch">
<string name="revanced_disable_precise_seeking_gesture_title">停用精準跳轉手勢</string>

View File

@@ -1547,6 +1547,9 @@ Enabling this can unlock higher video qualities"</string>
<string name="revanced_custom_speed_menu_title">Custom playback speed menu</string>
<string name="revanced_custom_speed_menu_summary_on">Custom speed menu is shown</string>
<string name="revanced_custom_speed_menu_summary_off">Custom speed menu is not shown</string>
<string name="revanced_restore_old_speed_menu_title">Restore old playback speed menu</string>
<string name="revanced_restore_old_speed_menu_summary_on">Old speed menu is shown</string>
<string name="revanced_restore_old_speed_menu_summary_off">Modern speed menu is shown</string>
<string name="revanced_custom_playback_speeds_title">Custom playback speeds</string>
<string name="revanced_custom_playback_speeds_summary">Add or change the custom playback speeds</string>
<string name="revanced_custom_playback_speeds_invalid">Custom speeds must be less than %s</string>