mirror of
https://github.com/ReVanced/revanced-patches.git
synced 2026-01-15 15:33:13 +00:00
Compare commits
25 Commits
v5.32.0-de
...
v5.33.0-de
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6e60ac6963 | ||
|
|
1adbd563b2 | ||
|
|
9ccf13b680 | ||
|
|
7b8ca9c018 | ||
|
|
ae6dd23d08 | ||
|
|
b1d164b446 | ||
|
|
87c39dd485 | ||
|
|
1549ac12aa | ||
|
|
5d08fdddb8 | ||
|
|
98114e5bde | ||
|
|
a4817dfdd0 | ||
|
|
d4f05351e1 | ||
|
|
d92362b0d9 | ||
|
|
afc7c75df1 | ||
|
|
f0d4e9bfb4 | ||
|
|
e9e4cf39b6 | ||
|
|
0579a9f760 | ||
|
|
1c0acef3f3 | ||
|
|
2419adb77b | ||
|
|
9e4113555b | ||
|
|
125855540b | ||
|
|
a8eee825e6 | ||
|
|
63859f0ef9 | ||
|
|
1c9000dbda | ||
|
|
8ec857a175 |
72
CHANGELOG.md
72
CHANGELOG.md
@@ -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)
|
||||
|
||||
|
||||
|
||||
@@ -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.
|
||||
*/
|
||||
|
||||
@@ -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)) {
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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,
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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,
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
9
package-lock.json
generated
@@ -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",
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -23,7 +23,6 @@ internal val createInboxSubTabsFingerprint = fingerprint {
|
||||
}
|
||||
|
||||
internal val loadInboxAdsFingerprint = fingerprint {
|
||||
accessFlags(AccessFlags.PUBLIC, AccessFlags.STATIC)
|
||||
returns("V")
|
||||
strings(
|
||||
"ads_load_begin",
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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")
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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(
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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;")
|
||||
}
|
||||
}
|
||||
@@ -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)
|
||||
}
|
||||
}
|
||||
@@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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")
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -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")
|
||||
|
||||
@@ -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",
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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")
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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əmə 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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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ı açı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ı açı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ı gösteriliyor</string>
|
||||
<string name="revanced_hide_members_shelf_summary_off">Üyeler rafı gö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ı açı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ı gö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ı gö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ı gösteriliyor</string>
|
||||
<string name="revanced_hide_player_control_buttons_background_summary_off">Oynatıcı kontrolleri arka planı görünür</string>
|
||||
<string name="revanced_hide_player_previous_next_buttons_title">Önceki & 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 & Sonraki düğmeleri gizli</string>
|
||||
<string name="revanced_hide_player_previous_next_buttons_summary_off">Önceki & 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">Açı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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
Reference in New Issue
Block a user