Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
dff35cbb43 | ||
|
|
245baff41d | ||
|
|
8062417cce | ||
|
|
21a960dff7 | ||
|
|
f6d81e3647 | ||
|
|
6ac142f6d0 | ||
|
|
68d88704d5 | ||
|
|
3373a75599 | ||
|
|
f0a6984c3f | ||
|
|
0540f6ca1b | ||
|
|
f1e1706fce | ||
|
|
d0f7d9521c | ||
|
|
05b7faff70 | ||
|
|
6876c2e572 | ||
|
|
08784c4819 | ||
|
|
afd9e6054b | ||
|
|
bcd9e54137 | ||
|
|
b3f4e9216a | ||
|
|
392330189e | ||
|
|
e8c23c0e8f | ||
|
|
d454fe1642 | ||
|
|
0206d55fef | ||
|
|
8c44277e7c | ||
|
|
753e1b480d | ||
|
|
b6b441103d | ||
|
|
d52e3b79c8 | ||
|
|
5862a73ac9 | ||
|
|
1bdc0e0e62 | ||
|
|
0755b5abbd | ||
|
|
887ba2fdbe | ||
|
|
2083ab7fbf | ||
|
|
83c53f9ede | ||
|
|
9bc4036a73 | ||
|
|
a16d978e7d | ||
|
|
f269dd4022 | ||
|
|
49b17ce2b0 | ||
|
|
06ed61a83a | ||
|
|
95fe3a9fb5 | ||
|
|
25dc28edc0 | ||
|
|
3100277916 | ||
|
|
f771693a0b | ||
|
|
ed468a8450 | ||
|
|
1c4e15167e | ||
|
|
ff28f0bf74 | ||
|
|
f1e699a5a1 | ||
|
|
f042d94791 | ||
|
|
766cbb2c66 | ||
|
|
aed0ae5307 | ||
|
|
0794199217 | ||
|
|
38e522d6f9 | ||
|
|
b913835551 | ||
|
|
a3e1fc3e91 | ||
|
|
092dd5ef9e | ||
|
|
69b6f81d34 | ||
|
|
886c40b15d | ||
|
|
b28fc7958f | ||
|
|
eb08caf6ea | ||
|
|
f17eeb54b5 | ||
|
|
0019a2e690 | ||
|
|
0a98d61920 | ||
|
|
4fa79b7f58 | ||
|
|
02253c2396 | ||
|
|
a10cb96afc | ||
|
|
0a506b266b | ||
|
|
75272395f6 |
@@ -5,7 +5,7 @@ endif
|
||||
DEBUG=0
|
||||
FINALPACKAGE=1
|
||||
ARCHS = arm64
|
||||
PACKAGE_VERSION = 2.0
|
||||
PACKAGE_VERSION = 2.4
|
||||
TARGET := iphone:clang:latest:11.0
|
||||
|
||||
include $(THEOS)/makefiles/common.mk
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
# YTLite
|
||||
Lightweight YouTube Enhancer
|
||||
|
||||
Advanced mode can be activated inside **Version cell**. Then simply reopen YTLite settings
|
||||
|
||||
# How to build it yourself
|
||||
Clone this repo and __[YouTubeHeader by PoomSmart](https://github.com/PoomSmart/YouTubeHeader/)__
|
||||
|
||||
cd YTLite folder and run
|
||||
|
||||
• '**make clean package**' to build deb for rootful device
|
||||
|
||||
• '**make clean package ROOTLESS=1**' to build deb for rootless device
|
||||
|
||||
|
||||
<p align="center">
|
||||
<img src=https://github-production-user-asset-6210df.s3.amazonaws.com/38832025/248051008-4cef3fb5-ab24-4d8c-bc7f-122b1df95996.png?raw=true) />
|
||||
</p>
|
||||
+88
-13
@@ -6,16 +6,10 @@
|
||||
|
||||
static const NSInteger YTLiteSection = 789;
|
||||
|
||||
static void resetYTLiteSettings() {
|
||||
NSString *prefsPath = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject] stringByAppendingPathComponent:@"YTLite.plist"];
|
||||
NSFileManager *fileManager = [NSFileManager defaultManager];
|
||||
[fileManager removeItemAtPath:prefsPath error:nil];
|
||||
}
|
||||
|
||||
NSBundle *YTLiteBundle() {
|
||||
static NSBundle *bundle = nil;
|
||||
static dispatch_once_t onceToken;
|
||||
dispatch_once(&onceToken, ^{
|
||||
dispatch_once(&onceToken, ^{
|
||||
NSString *tweakBundlePath = [[NSBundle mainBundle] pathForResource:@"YTLite" ofType:@"bundle"];
|
||||
if (tweakBundlePath)
|
||||
bundle = [NSBundle bundleWithPath:tweakBundlePath];
|
||||
@@ -119,7 +113,8 @@ static YTSettingsSectionItem *createSwitchItem(NSString *title, NSString *titleD
|
||||
NSArray <YTSettingsSectionItem *> *rows = @[
|
||||
createSwitchItem(LOC(@"RemoveCast"), LOC(@"RemoveCastDesc"), @"noCast", &kNoCast, selfObject),
|
||||
createSwitchItem(LOC(@"RemoveNotifications"), LOC(@"RemoveNotificationsDesc"), @"removeNotifsButton", &kNoNotifsButton, selfObject),
|
||||
createSwitchItem(LOC(@"RemoveSearch"), LOC(@"RemoveSearchDesc"), @"removeSearchButton", &kNoSearchButton, selfObject)
|
||||
createSwitchItem(LOC(@"RemoveSearch"), LOC(@"RemoveSearchDesc"), @"removeSearchButton", &kNoSearchButton, selfObject),
|
||||
createSwitchItem(LOC(@"RemoveVoiceSearch"), LOC(@"RemoveVoiceSearchDesc"), @"removeVoiceSearchButton", &kNoVoiceSearchButton, selfObject)
|
||||
];
|
||||
|
||||
if (kAdvancedMode) {
|
||||
@@ -153,7 +148,7 @@ static YTSettingsSectionItem *createSwitchItem(NSString *title, NSString *titleD
|
||||
createSwitchItem(LOC(@"HidePrevNext"), LOC(@"HidePrevNextDesc"), @"hidePrevNext", &kHidePrevNext, selfObject),
|
||||
createSwitchItem(LOC(@"ReplacePrevNext"), LOC(@"ReplacePrevNextDesc"), @"replacePrevNext", &kReplacePrevNext, selfObject),
|
||||
createSwitchItem(LOC(@"NoDarkBg"), LOC(@"NoDarkBgDesc"), @"noDarkBg", &kNoDarkBg, selfObject),
|
||||
createSwitchItem(LOC(@"NoEndScreenCards"), LOC(@"NoEndScreenCardsDesc"), @"noEndScreenCards", &kEndScreenCards, selfObject),
|
||||
createSwitchItem(LOC(@"NoEndScreenCards"), LOC(@"NoEndScreenCardsDesc"), @"endScreenCards", &kEndScreenCards, selfObject),
|
||||
createSwitchItem(LOC(@"NoFullscreenActions"), LOC(@"NoFullscreenActionsDesc"), @"noFullscreenActions", &kNoFullscreenActions, selfObject),
|
||||
createSwitchItem(LOC(@"NoRelatedVids"), LOC(@"NoRelatedVidsDesc"), @"noRelatedVids", &kNoRelatedVids, selfObject),
|
||||
createSwitchItem(LOC(@"NoPromotionCards"), LOC(@"NoPromotionCardsDesc"), @"noPromotionCards", &kNoPromotionCards, selfObject),
|
||||
@@ -174,13 +169,17 @@ static YTSettingsSectionItem *createSwitchItem(NSString *title, NSString *titleD
|
||||
selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
|
||||
NSArray <YTSettingsSectionItem *> *rows = @[
|
||||
createSwitchItem(LOC(@"Miniplayer"), LOC(@"MiniplayerDesc"), @"miniplayer", &kMiniplayer, selfObject),
|
||||
createSwitchItem(LOC(@"PortraitFullscreen"), LOC(@"PortraitFullscreenDesc"), @"portraitFullscreen", &kPortraitFullscreen, selfObject),
|
||||
createSwitchItem(LOC(@"CopyWithTimestamp"), LOC(@"CopyWithTimestampDesc"), @"copyWithTimestamp", &kCopyWithTimestamp, selfObject),
|
||||
createSwitchItem(LOC(@"DisableAutoplay"), LOC(@"DisableAutoplayDesc"), @"disableAutoplay", &kDisableAutoplay, selfObject),
|
||||
createSwitchItem(LOC(@"NoContentWarning"), LOC(@"NoContentWarningDesc"), @"noContentWarning", &kNoContentWarning, selfObject),
|
||||
createSwitchItem(LOC(@"ClassicQuality"), LOC(@"ClassicQualityDesc"), @"classicQuality", &kClassicQuality, selfObject),
|
||||
createSwitchItem(LOC(@"ExtraSpeedOptions"), LOC(@"ExtraSpeedOptionsDesc"), @"extraSpeedOptions", &kExtraSpeedOptions, selfObject),
|
||||
createSwitchItem(LOC(@"DontSnap2Chapter"), LOC(@"DontSnap2ChapterDesc"), @"dontSnapToChapter", &kDontSnapToChapter, selfObject),
|
||||
createSwitchItem(LOC(@"RedProgressBar"), LOC(@"RedProgressBarDesc"), @"redProgressBar", &kRedProgressBar, selfObject),
|
||||
createSwitchItem(LOC(@"NoHints"), LOC(@"NoHintsDesc"), @"noHints", &kNoHints, selfObject),
|
||||
createSwitchItem(LOC(@"NoFreeZoom"), LOC(@"NoFreeZoomDesc"), @"noFreeZoom", &kNoFreeZoom, selfObject),
|
||||
createSwitchItem(LOC(@"AutoFullscreen"), LOC(@"AutoFullscreenDesc"), @"autoFullscreen", &kAutoFullscreen, selfObject),
|
||||
createSwitchItem(LOC(@"ExitFullscreen"), LOC(@"ExitFullscreenDesc"), @"exitFullscreen", &kExitFullscreen, selfObject),
|
||||
createSwitchItem(LOC(@"NoDoubleTap2Seek"), LOC(@"NoDoubleTap2SeekDesc"), @"noDoubleTapToSeek", &kNoDoubleTapToSeek, selfObject)
|
||||
];
|
||||
@@ -215,7 +214,8 @@ static YTSettingsSectionItem *createSwitchItem(NSString *title, NSString *titleD
|
||||
createSwitchItem(LOC(@"HideShortsThanks"), LOC(@"HideShortsThanksDesc"), @"hideShortsThanks", &kHideShortsThanks, selfObject),
|
||||
createSwitchItem(LOC(@"HideShortsChannelName"), LOC(@"HideShortsChannelNameDesc"), @"hideShortsChannelName", &kHideShortsChannelName, selfObject),
|
||||
createSwitchItem(LOC(@"HideShortsDescription"), LOC(@"HideShortsDescriptionDesc"), @"hideShortsDescription", &kHideShortsDescription, selfObject),
|
||||
createSwitchItem(LOC(@"HideShortsAudioTrack"), LOC(@"HideShortsAudioTrackDesc"), @"hideShortsAudioTrack", &kHideShortsAudioTrack, selfObject)
|
||||
createSwitchItem(LOC(@"HideShortsAudioTrack"), LOC(@"HideShortsAudioTrackDesc"), @"hideShortsAudioTrack", &kHideShortsAudioTrack, selfObject),
|
||||
createSwitchItem(LOC(@"NoPromotionCards"), LOC(@"NoPromotionCardsDesc"), @"hideShortsPromoCards", &kHideShortsPromoCards, selfObject)
|
||||
];
|
||||
YTSettingsPickerViewController *picker = [[%c(YTSettingsPickerViewController) alloc] initWithNavTitle:LOC(@"Shorts") pickerSectionTitle:nil rows:rows selectedItemIndex:NSNotFound parentResponder:[self parentResponder]];
|
||||
[settingsViewController pushViewController:picker];
|
||||
@@ -232,6 +232,7 @@ static YTSettingsSectionItem *createSwitchItem(NSString *title, NSString *titleD
|
||||
selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
|
||||
NSArray <YTSettingsSectionItem *> *rows = @[
|
||||
createSwitchItem(LOC(@"RemoveLabels"), LOC(@"RemoveLabelsDesc"), @"removeLabels", &kRemoveLabels, selfObject),
|
||||
createSwitchItem(LOC(@"RemoveIndicators"), LOC(@"RemoveIndicatorsDesc"), @"removeIndicators", &kRemoveIndicators, selfObject),
|
||||
createSwitchItem(LOC(@"ReExplore"), LOC(@"ReExploreDesc"), @"reExplore", &kReExplore, selfObject),
|
||||
createSwitchItem(LOC(@"HideShortsTab"), LOC(@"HideShortsTabDesc"), @"removeShorts", &kRemoveShorts, selfObject),
|
||||
createSwitchItem(LOC(@"HideSubscriptionsTab"), LOC(@"HideSubscriptionsTabDesc"), @"removeSubscriptions", &kRemoveSubscriptions, selfObject),
|
||||
@@ -246,6 +247,29 @@ static YTSettingsSectionItem *createSwitchItem(NSString *title, NSString *titleD
|
||||
[sectionItems addObject:tabbar];
|
||||
|
||||
if (kAdvancedMode) {
|
||||
YTSettingsSectionItem *other = [YTSettingsSectionItemClass itemWithTitle:LOC(@"Other")
|
||||
accessibilityIdentifier:nil
|
||||
detailTextBlock:^NSString *() {
|
||||
return @"‣";
|
||||
}
|
||||
selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
|
||||
NSArray <YTSettingsSectionItem *> *rows = @[
|
||||
createSwitchItem(LOC(@"RemovePlayNext"), LOC(@"RemovePlayNextDesc"), @"removePlayNext", &kRemovePlayNext, selfObject),
|
||||
createSwitchItem(LOC(@"NoContinueWatching"), LOC(@"NoContinueWatchingDesc"), @"noContinueWatching", &kNoContinueWatching, selfObject),
|
||||
createSwitchItem(LOC(@"NoSearchHistory"), LOC(@"NoSearchHistoryDesc"), @"noSearchHistory", &kNoSearchHistory, selfObject),
|
||||
createSwitchItem(LOC(@"NoRelatedWatchNexts"), LOC(@"NoRelatedWatchNextsDesc"), @"noRelatedWatchNexts", &kNoRelatedWatchNexts, selfObject),
|
||||
createSwitchItem(LOC(@"StickSortComments"), LOC(@"StickSortCommentsDesc"), @"stickSortComments", &kStickSortComments, selfObject),
|
||||
createSwitchItem(LOC(@"HideSortComments"), LOC(@"HideSortCommentsDesc"), @"hideSortComments", &kHideSortComments, selfObject),
|
||||
createSwitchItem(LOC(@"PlaylistOldMinibar"), LOC(@"PlaylistOldMinibarDesc"), @"playlistOldMinibar", &kPlaylistOldMinibar, selfObject),
|
||||
createSwitchItem(LOC(@"DisableRTL"), LOC(@"DisableRTLDesc"), @"disableRTL", &kDisableRTL, selfObject)
|
||||
];
|
||||
|
||||
YTSettingsPickerViewController *picker = [[%c(YTSettingsPickerViewController) alloc] initWithNavTitle:LOC(@"Other") pickerSectionTitle:nil rows:rows selectedItemIndex:NSNotFound parentResponder:[self parentResponder]];
|
||||
[settingsViewController pushViewController:picker];
|
||||
return YES;
|
||||
}];
|
||||
[sectionItems addObject:other];
|
||||
|
||||
[sectionItems addObject:space];
|
||||
|
||||
YTSettingsSectionItem *startup = [YTSettingsSectionItemClass itemWithTitle:LOC(@"Startup")
|
||||
@@ -323,7 +347,7 @@ static YTSettingsSectionItem *createSwitchItem(NSString *title, NSString *titleD
|
||||
|
||||
[sectionItems addObject:space];
|
||||
|
||||
YTSettingsSectionItem *ps = [%c(YTSettingsSectionItem) itemWithTitle:@"PoomSmart" titleDescription:@"YouTube-X, YTNoPremium, YTClassicVideoQuality, YTShortsProgress, YTReExplore, SkipContentWarning, YouTubeHeaders" accessibilityIdentifier:nil detailTextBlock:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
|
||||
YTSettingsSectionItem *ps = [%c(YTSettingsSectionItem) itemWithTitle:@"PoomSmart" titleDescription:@"YouTube-X, YTNoPremium, YTClassicVideoQuality, YTShortsProgress, YTReExplore, SkipContentWarning, YTAutoFullscreen, YouTubeHeaders" accessibilityIdentifier:nil detailTextBlock:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
|
||||
return [%c(YTUIUtils) openURL:[NSURL URLWithString:@"https://github.com/PoomSmart/"]];
|
||||
}];
|
||||
|
||||
@@ -331,13 +355,41 @@ static YTSettingsSectionItem *createSwitchItem(NSString *title, NSString *titleD
|
||||
return [%c(YTUIUtils) openURL:[NSURL URLWithString:@"https://github.com/MiRO92/"]];
|
||||
}];
|
||||
|
||||
YTSettingsSectionItem *lillie = [%c(YTSettingsSectionItem) itemWithTitle:@"Lillie" titleDescription:@"ExtraSpeedOptions" accessibilityIdentifier:nil detailTextBlock:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
|
||||
return [%c(YTUIUtils) openURL:[NSURL URLWithString:@"https://github.com/LillieH1000"]];
|
||||
}];
|
||||
|
||||
YTSettingsSectionItem *stalker = [%c(YTSettingsSectionItem) itemWithTitle:@"Stalker" titleDescription:LOC(@"ChineseSimplified") accessibilityIdentifier:nil detailTextBlock:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
|
||||
return [%c(YTUIUtils) openURL:[NSURL URLWithString:@"https://github.com/xiangfeidexiaohuo"]];
|
||||
}];
|
||||
|
||||
YTSettingsSectionItem *clement = [%c(YTSettingsSectionItem) itemWithTitle:@"Clement" titleDescription:LOC(@"ChineseTraditional") accessibilityIdentifier:nil detailTextBlock:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
|
||||
return [%c(YTUIUtils) openURL:[NSURL URLWithString:@"https://twitter.com/a100900900"]];
|
||||
}];
|
||||
|
||||
YTSettingsSectionItem *balackburn = [%c(YTSettingsSectionItem) itemWithTitle:@"Balackburn" titleDescription:LOC(@"French") accessibilityIdentifier:nil detailTextBlock:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
|
||||
return [%c(YTUIUtils) openURL:[NSURL URLWithString:@"https://github.com/Balackburn"]];
|
||||
}];
|
||||
|
||||
YTSettingsSectionItem *decibelios = [%c(YTSettingsSectionItem) itemWithTitle:@"DeciBelioS" titleDescription:LOC(@"Spanish") accessibilityIdentifier:nil detailTextBlock:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
|
||||
return [%c(YTUIUtils) openURL:[NSURL URLWithString:@"https://github.com/Deci8BelioS"]];
|
||||
}];
|
||||
|
||||
YTSettingsSectionItem *skeids = [%c(YTSettingsSectionItem) itemWithTitle:@"SKEIDs" titleDescription:LOC(@"Japanese") accessibilityIdentifier:nil detailTextBlock:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
|
||||
return [%c(YTUIUtils) openURL:[NSURL URLWithString:@"https://github.com/SKEIDs"]];
|
||||
}];
|
||||
|
||||
YTSettingsSectionItem *dayanch96 = [%c(YTSettingsSectionItem) itemWithTitle:@"Dayanch96" titleDescription:LOC(@"Developer") accessibilityIdentifier:nil detailTextBlock:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
|
||||
return [%c(YTUIUtils) openURL:[NSURL URLWithString:@"https://github.com/Dayanch96/"]];
|
||||
}];
|
||||
|
||||
YTSettingsSectionItem *reset = [%c(YTSettingsSectionItem) itemWithTitle:LOC(@"ResetSettings") titleDescription:nil accessibilityIdentifier:nil detailTextBlock:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
|
||||
YTAlertView *alertView = [%c(YTAlertView) confirmationDialogWithAction:^{
|
||||
resetYTLiteSettings();
|
||||
NSString *prefsPath = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject] stringByAppendingPathComponent:@"YTLite.plist"];
|
||||
[[NSFileManager defaultManager] removeItemAtPath:prefsPath error:nil];
|
||||
|
||||
[[UIApplication sharedApplication] performSelector:@selector(suspend)];
|
||||
[NSThread sleepForTimeInterval:1.0];
|
||||
exit(0);
|
||||
}
|
||||
actionTitle:LOC(@"Yes")
|
||||
@@ -354,7 +406,7 @@ static YTSettingsSectionItem *createSwitchItem(NSString *title, NSString *titleD
|
||||
return @(OS_STRINGIFY(TWEAK_VERSION));
|
||||
}
|
||||
selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
|
||||
NSArray <YTSettingsSectionItem *> *rows = @[ps, miro, dayanch96, space, createSwitchItem(LOC(@"Advanced"), nil, @"advancedMode", &kAdvancedMode, selfObject), reset];
|
||||
NSArray <YTSettingsSectionItem *> *rows = @[ps, miro, lillie, dayanch96, stalker, clement, balackburn, decibelios, skeids, space, createSwitchItem(LOC(@"Advanced"), nil, @"advancedMode", &kAdvancedMode, selfObject), reset];
|
||||
|
||||
YTSettingsPickerViewController *picker = [[%c(YTSettingsPickerViewController) alloc] initWithNavTitle:LOC(@"About") pickerSectionTitle:LOC(@"Credits") rows:rows selectedItemIndex:NSNotFound parentResponder:[self parentResponder]];
|
||||
[settingsViewController pushViewController:picker];
|
||||
@@ -372,3 +424,26 @@ static YTSettingsSectionItem *createSwitchItem(NSString *title, NSString *titleD
|
||||
} %orig;
|
||||
}
|
||||
%end
|
||||
|
||||
%ctor {
|
||||
if (!kAdvancedModeReminder && !kAdvancedMode) {
|
||||
NSString *prefsPath = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject] stringByAppendingPathComponent:@"YTLite.plist"];
|
||||
NSMutableDictionary *prefs = [NSMutableDictionary dictionaryWithContentsOfFile:prefsPath];
|
||||
[prefs setObject:@(YES) forKey:@"advancedModeReminder"];
|
||||
[prefs writeToFile:prefsPath atomically:NO];
|
||||
CFNotificationCenterPostNotification(CFNotificationCenterGetDarwinNotifyCenter(), CFSTR("com.dvntm.ytlite.prefschanged"), NULL, NULL, YES);
|
||||
|
||||
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(3.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
|
||||
YTAlertView *alertView = [%c(YTAlertView) confirmationDialogWithAction:^{
|
||||
[prefs setObject:@(YES) forKey:@"advancedMode"];
|
||||
[prefs writeToFile:prefsPath atomically:NO];
|
||||
CFNotificationCenterPostNotification(CFNotificationCenterGetDarwinNotifyCenter(), CFSTR("com.dvntm.ytlite.prefschanged"), NULL, NULL, YES);
|
||||
}
|
||||
actionTitle:LOC(@"Yes")
|
||||
cancelTitle:LOC(@"No")];
|
||||
alertView.title = @"YTLite";
|
||||
alertView.subtitle = [NSString stringWithFormat:LOC(@"AdvancedModeReminder"), @"YTLite", LOC(@"Version"), LOC(@"Advanced")];
|
||||
[alertView show];
|
||||
});
|
||||
}
|
||||
}
|
||||
+2
-2
@@ -133,6 +133,6 @@ static NSString *accessGroupID() {
|
||||
%end
|
||||
|
||||
%ctor {
|
||||
NSString *embeddedMobileProvisionPath = [[NSBundle mainBundle] pathForResource:@"embedded" ofType:@"mobileprovision"];
|
||||
if ([[NSFileManager defaultManager] fileExistsAtPath:embeddedMobileProvisionPath]) %init(gSideloading);
|
||||
if ([[NSFileManager defaultManager] fileExistsAtPath:[[NSBundle mainBundle] pathForResource:@"embedded" ofType:@"mobileprovision"]])
|
||||
%init(gSideloading);
|
||||
}
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
#import "../YouTubeHeader/YTQTMButton.h"
|
||||
#import "../YouTubeHeader/YTVideoQualitySwitchOriginalController.h"
|
||||
#import "../YouTubeHeader/YTPlayerViewController.h"
|
||||
#import "../YouTubeHeader/YTWatchController.h"
|
||||
#import "../YouTubeHeader/YTPlayerOverlay.h"
|
||||
#import "../YouTubeHeader/YTPlayerOverlayProvider.h"
|
||||
#import "../YouTubeHeader/YTSettingsViewController.h"
|
||||
@@ -17,6 +18,7 @@
|
||||
#import "../YouTubeHeader/YTSettingsSectionItemManager.h"
|
||||
#import "../YouTubeHeader/YTSettingsPickerViewController.h"
|
||||
#import "../YouTubeHeader/YTUIUtils.h"
|
||||
#import "../YouTubeHeader/YTIMenuConditionalServiceItemRenderer.h"
|
||||
|
||||
extern NSBundle *YTLiteBundle();
|
||||
|
||||
@@ -30,6 +32,7 @@ BOOL kBackgroundPlayback;
|
||||
BOOL kNoCast;
|
||||
BOOL kNoNotifsButton;
|
||||
BOOL kNoSearchButton;
|
||||
BOOL kNoVoiceSearchButton;
|
||||
BOOL kStickyNavbar;
|
||||
BOOL kNoSubbar;
|
||||
BOOL kNoYTLogo;
|
||||
@@ -45,13 +48,17 @@ BOOL kNoRelatedVids;
|
||||
BOOL kNoPromotionCards;
|
||||
BOOL kNoWatermarks;
|
||||
BOOL kMiniplayer;
|
||||
BOOL kPortraitFullscreen;
|
||||
BOOL kCopyWithTimestamp;
|
||||
BOOL kDisableAutoplay;
|
||||
BOOL kNoContentWarning;
|
||||
BOOL kClassicQuality;
|
||||
BOOL kExtraSpeedOptions;
|
||||
BOOL kDontSnapToChapter;
|
||||
BOOL kRedProgressBar;
|
||||
BOOL kNoHints;
|
||||
BOOL kNoFreeZoom;
|
||||
BOOL kAutoFullscreen;
|
||||
BOOL kExitFullscreen;
|
||||
BOOL kNoDoubleTapToSeek;
|
||||
BOOL kHideShorts;
|
||||
@@ -72,13 +79,24 @@ BOOL kHideShortsThanks;
|
||||
BOOL kHideShortsChannelName;
|
||||
BOOL kHideShortsDescription;
|
||||
BOOL kHideShortsAudioTrack;
|
||||
BOOL kHideShortsPromoCards;
|
||||
BOOL kRemoveLabels;
|
||||
BOOL kRemoveIndicators;
|
||||
BOOL kReExplore;
|
||||
BOOL kRemoveShorts;
|
||||
BOOL kRemoveSubscriptions;
|
||||
BOOL kRemoveUploads;
|
||||
BOOL kRemoveLibrary;
|
||||
BOOL kRemovePlayNext;
|
||||
BOOL kNoContinueWatching;
|
||||
BOOL kNoSearchHistory;
|
||||
BOOL kNoRelatedWatchNexts;
|
||||
BOOL kStickSortComments;
|
||||
BOOL kHideSortComments;
|
||||
BOOL kPlaylistOldMinibar;
|
||||
BOOL kDisableRTL;
|
||||
BOOL kAdvancedMode;
|
||||
BOOL kAdvancedModeReminder;
|
||||
int kPivotIndex;
|
||||
|
||||
@interface YTSettingsSectionItemManager (Custom)
|
||||
@@ -103,9 +121,22 @@ int kPivotIndex;
|
||||
@property (nonatomic, strong) YTQTMButton *searchButton;
|
||||
@end
|
||||
|
||||
@interface YTSearchView : UIView
|
||||
@end
|
||||
|
||||
@interface YTSearchBarView : UIView
|
||||
@end
|
||||
|
||||
@interface YTNavigationBarTitleView : UIView
|
||||
@end
|
||||
|
||||
@interface YTChipCloudCell : UICollectionViewCell
|
||||
@end
|
||||
|
||||
@interface YTPlayerViewController (YTAFS)
|
||||
- (void)autoFullscreen;
|
||||
@end
|
||||
|
||||
@interface YTSegmentableInlinePlayerBarView
|
||||
@property (nonatomic, assign, readwrite) BOOL enableSnapToChapter;
|
||||
@end
|
||||
@@ -125,7 +156,7 @@ int kPivotIndex;
|
||||
@end
|
||||
|
||||
@interface YTAsyncCollectionView : UICollectionView
|
||||
- (void)removeShortsCellAtIndexPath:(NSIndexPath *)indexPath;
|
||||
- (void)removeCellsAtIndexPath:(NSIndexPath *)indexPath;
|
||||
@end
|
||||
|
||||
@interface YTReelWatchPlaybackOverlayView : UIView
|
||||
@@ -137,6 +168,29 @@ int kPivotIndex;
|
||||
@interface YTReelWatchHeaderView : UIView
|
||||
@end
|
||||
|
||||
@interface YTELMView : UIView
|
||||
@end
|
||||
|
||||
@interface _ASDisplayView : UIView
|
||||
@end
|
||||
|
||||
@interface MLHAMQueuePlayer : NSObject
|
||||
@property id playerEventCenter;
|
||||
-(void)setRate:(float)rate;
|
||||
@end
|
||||
|
||||
@interface YTVarispeedSwitchControllerOption : NSObject
|
||||
- (id)initWithTitle:(id)title rate:(float)rate;
|
||||
@end
|
||||
|
||||
@interface HAMPlayerInternal : NSObject
|
||||
- (void)setRate:(float)rate;
|
||||
@end
|
||||
|
||||
@interface MLPlayerEventCenter : NSObject
|
||||
- (void)broadcastRateChange:(float)rate;
|
||||
@end
|
||||
|
||||
@interface YTAlertView : UIView
|
||||
@property (nonatomic, copy, readwrite) NSString *title;
|
||||
@property (nonatomic, copy, readwrite) NSString *subtitle;
|
||||
@@ -144,3 +198,8 @@ int kPivotIndex;
|
||||
+ (instancetype)confirmationDialogWithAction:(void (^)(void))action actionTitle:(NSString *)actionTitle cancelTitle:(NSString *)cancelTitle;
|
||||
- (void)show;
|
||||
@end
|
||||
|
||||
@interface YTMainAppVideoPlayerOverlayViewController : UIViewController
|
||||
@property (readonly, nonatomic) CGFloat mediaTime;
|
||||
@property (readonly, nonatomic) NSString *videoID;
|
||||
@end
|
||||
@@ -28,17 +28,17 @@
|
||||
- (void)decorateContext:(id)context { if (!kNoAds) %orig; }
|
||||
%end
|
||||
|
||||
BOOL isAd(YTIElementRenderer *self) {
|
||||
if (self == nil) return NO;
|
||||
if (self.hasCompatibilityOptions && self.compatibilityOptions.hasAdLoggingData) return YES;
|
||||
%hook YTIElementRenderer
|
||||
- (NSData *)elementData {
|
||||
if (self.hasCompatibilityOptions && self.compatibilityOptions.hasAdLoggingData && kNoAds) return nil;
|
||||
|
||||
NSArray *adDescriptions = @[@"brand_promo", @"product_carousel", @"product_engagement_panel", @"product_item", @"text_search_ad", @"text_image_button_layout", @"carousel_headered_layout", @"carousel_footered_layout", @"square_image_layout", @"landscape_image_wide_button_layout", @"feed_ad_metadata"];
|
||||
NSString *description = [self description];
|
||||
if (([description containsString:@"brand_promo"]
|
||||
|| [description containsString:@"product_carousel"]
|
||||
|| [description containsString:@"product_engagement_panel"]
|
||||
|| [description containsString:@"product_item"]) && kNoAds)
|
||||
return YES;
|
||||
return NO;
|
||||
if (([adDescriptions containsObject:description] && kNoAds) || ([description containsString:@"inline_shorts"] && kHideShorts)) {
|
||||
return [NSData data];
|
||||
} return %orig;
|
||||
}
|
||||
%end
|
||||
|
||||
%hook YTSectionListViewController
|
||||
- (void)loadWithModel:(YTISectionListRenderer *)model {
|
||||
@@ -47,7 +47,7 @@ BOOL isAd(YTIElementRenderer *self) {
|
||||
NSIndexSet *removeIndexes = [contentsArray indexesOfObjectsPassingTest:^BOOL(YTISectionListSupportedRenderers *renderers, NSUInteger idx, BOOL *stop) {
|
||||
YTIItemSectionRenderer *sectionRenderer = renderers.itemSectionRenderer;
|
||||
YTIItemSectionSupportedRenderers *firstObject = [sectionRenderer.contentsArray firstObject];
|
||||
return firstObject.hasPromotedVideoRenderer || firstObject.hasCompactPromotedVideoRenderer || firstObject.hasPromotedVideoInlineMutedRenderer || isAd(firstObject.elementRenderer);
|
||||
return firstObject.hasPromotedVideoRenderer || firstObject.hasCompactPromotedVideoRenderer || firstObject.hasPromotedVideoInlineMutedRenderer;
|
||||
}];
|
||||
[contentsArray removeObjectsAtIndexes:removeIndexes];
|
||||
} %orig;
|
||||
@@ -89,15 +89,6 @@ BOOL isAd(YTIElementRenderer *self) {
|
||||
- (void)showSurveyWithRenderer:(id)arg1 surveyParentResponder:(id)arg2 {}
|
||||
%end
|
||||
|
||||
// Statement banner
|
||||
%hook YTPremiumSeasonCardCellController
|
||||
- (void)setCell:(id)arg1 { arg1 = NULL; %orig; }
|
||||
%end
|
||||
|
||||
%hook YTPremiumSeasonCardView
|
||||
- (long long)accessibilityElementCount { return 0; }
|
||||
%end
|
||||
|
||||
// Navbar Stuff
|
||||
// Disable Cast
|
||||
%hook MDXPlaybackRouteButtonController
|
||||
@@ -110,13 +101,53 @@ BOOL isAd(YTIElementRenderer *self) {
|
||||
- (void)setDisableMDXDeviceDiscovery:(BOOL)arg1 { %orig(kNoCast); }
|
||||
%end
|
||||
|
||||
// Hide Cast, Notifications and Search Buttons
|
||||
// Hide Navigation Bar Buttons
|
||||
%hook YTRightNavigationButtons
|
||||
- (void)layoutSubviews {
|
||||
%orig;
|
||||
if (kNoCast && self.subviews.count > 1 && [self.subviews[1].accessibilityIdentifier isEqualToString:@"id.mdx.playbackroute.button"]) self.subviews[1].hidden = YES; // Hide icon immediately
|
||||
if (kNoNotifsButton) self.notificationButton.hidden = YES;
|
||||
if (kNoSearchButton) self.searchButton.hidden = YES;
|
||||
|
||||
NSInteger moreButtonIndex = -1;
|
||||
for (NSInteger i = 0; i < self.subviews.count; i++) {
|
||||
UIView *subview = self.subviews[i];
|
||||
if ([subview.accessibilityIdentifier isEqualToString:@"id.settings.overflow.button"]) {
|
||||
moreButtonIndex = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (moreButtonIndex != -1 && moreButtonIndex < self.subviews.count - 1 && kNoVoiceSearchButton) {
|
||||
UIView *voiceButton = self.subviews[moreButtonIndex + 1];
|
||||
voiceButton.hidden = YES;
|
||||
}
|
||||
}
|
||||
%end
|
||||
|
||||
%hook YTSearchView
|
||||
- (void)layoutSubviews {
|
||||
%orig;
|
||||
// Hide Search History
|
||||
if (kNoSearchHistory && self.subviews.count > 1) self.subviews[1].hidden = YES;
|
||||
// Hide Voice Search Button
|
||||
if (kNoVoiceSearchButton && self.subviews.count > 0) {
|
||||
UIView *firstSubview = self.subviews.firstObject;
|
||||
for (UIView *subview in firstSubview.subviews) {
|
||||
if ([NSStringFromClass([subview class]) isEqualToString:@"UIView"]) {
|
||||
[subview setValue:@(1) forKey:@"hidden"];
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
%end
|
||||
|
||||
// Remove Videos Section Under Player
|
||||
%hook YTWatchNextResultsViewController
|
||||
- (void)setVisibleSections:(NSInteger)arg1 {
|
||||
arg1 = (kNoRelatedWatchNexts) ? 1 : arg1;
|
||||
%orig(arg1);
|
||||
}
|
||||
%end
|
||||
|
||||
@@ -137,10 +168,15 @@ BOOL isAd(YTIElementRenderer *self) {
|
||||
|
||||
%hook YTHeaderContentComboView
|
||||
- (void)enableSubheaderBarWithView:(id)arg1 { if (!kNoSubbar) %orig; }
|
||||
- (void)setFeedHeaderScrollMode:(int)arg1 { kNoSubbar ? %orig(0) : %orig; }
|
||||
%end
|
||||
|
||||
%hook YTHeaderContentComboView
|
||||
- (void)setFeedHeaderScrollMode:(int)arg1 { kNoSubbar ? %orig(0) : %orig; }
|
||||
%hook YTChipCloudCell
|
||||
- (void)layoutSubviews {
|
||||
if (self.superview && kNoSubbar) {
|
||||
[self removeFromSuperview];
|
||||
} %orig;
|
||||
}
|
||||
%end
|
||||
|
||||
// Hide Autoplay Switch and Subs Button
|
||||
@@ -157,24 +193,30 @@ BOOL isAd(YTIElementRenderer *self) {
|
||||
|
||||
%hook YTColdConfig
|
||||
// Hide Next & Previous buttons
|
||||
- (BOOL)removeNextPaddleForSingletonVideos { return kHidePrevNext ? YES : NO; }
|
||||
- (BOOL)removePreviousPaddleForSingletonVideos { return kHidePrevNext ? YES : NO; }
|
||||
- (BOOL)removeNextPaddleForSingletonVideos { return kHidePrevNext ? YES : %orig; }
|
||||
- (BOOL)removePreviousPaddleForSingletonVideos { return kHidePrevNext ? YES : %orig; }
|
||||
// Replace Next & Previous with Fast Forward & Rewind buttons
|
||||
- (BOOL)replaceNextPaddleWithFastForwardButtonForSingletonVods { return kReplacePrevNext ? YES : NO; }
|
||||
- (BOOL)replacePreviousPaddleWithRewindButtonForSingletonVods { return kReplacePrevNext ? YES : NO; }
|
||||
- (BOOL)replaceNextPaddleWithFastForwardButtonForSingletonVods { return kReplacePrevNext ? YES : %orig; }
|
||||
- (BOOL)replacePreviousPaddleWithRewindButtonForSingletonVods { return kReplacePrevNext ? YES : %orig; }
|
||||
// Disable Free Zoom
|
||||
- (BOOL)videoZoomFreeZoomEnabledGlobalConfig { return kNoFreeZoom ? NO : YES; }
|
||||
- (BOOL)videoZoomFreeZoomEnabledGlobalConfig { return kNoFreeZoom ? NO : %orig; }
|
||||
// Stick Sort Buttons in Comments Section
|
||||
- (BOOL)enableHideChipsInTheCommentsHeaderOnScrollIos { return kStickSortComments ? NO : %orig; }
|
||||
// Hide Sort Buttons in Comments Section
|
||||
- (BOOL)enableChipsInTheCommentsHeaderIos { return kHideSortComments ? NO : %orig; }
|
||||
// Use System Theme
|
||||
- (BOOL)shouldUseAppThemeSetting { return YES; }
|
||||
// Dismiss Panel By Swiping in Fullscreen Mode
|
||||
- (BOOL)isLandscapeEngagementPanelSwipeRightToDismissEnabled { return YES; }
|
||||
// Remove Video in Playlist By Swiping To The Right
|
||||
- (BOOL)enableSwipeToRemoveInPlaylistWatchEp { return YES; }
|
||||
// Enable Old-style Minibar For Playlist Panel
|
||||
- (BOOL)queueClientGlobalConfigEnableFloatingPlaylistMinibar { return kPlaylistOldMinibar ? NO : %orig; }
|
||||
%end
|
||||
|
||||
// Remove Dark Background in Overlay
|
||||
%hook YTMainAppVideoPlayerOverlayView
|
||||
- (void)setBackgroundVisible:(BOOL)arg1 { kNoDarkBg ? %orig(NO) : %orig; }
|
||||
- (void)setBackgroundVisible:(BOOL)arg1 isGradientBackground:(BOOL)arg2 { kNoDarkBg ? %orig(NO, arg2) : %orig; }
|
||||
%end
|
||||
|
||||
// No Endscreen Cards
|
||||
@@ -216,6 +258,11 @@ BOOL isAd(YTIElementRenderer *self) {
|
||||
- (void)updateMiniBarPlayerStateFromRenderer { if (!kMiniplayer) %orig; }
|
||||
%end
|
||||
|
||||
// Portrait Fullscreen
|
||||
%hook YTWatchViewController
|
||||
- (unsigned long long)allowedFullScreenOrientations { return kPortraitFullscreen ? UIInterfaceOrientationMaskAllButUpsideDown : %orig; }
|
||||
%end
|
||||
|
||||
// Disable Autoplay
|
||||
%hook YTPlaybackConfig
|
||||
- (void)setStartPlayback:(BOOL)arg1 { kDisableAutoplay ? %orig(NO) : %orig; }
|
||||
@@ -230,9 +277,71 @@ BOOL isAd(YTIElementRenderer *self) {
|
||||
%hook YTVideoQualitySwitchControllerFactory
|
||||
- (id)videoQualitySwitchControllerWithParentResponder:(id)responder {
|
||||
Class originalClass = %c(YTVideoQualitySwitchOriginalController);
|
||||
if (kClassicQuality) {
|
||||
return originalClass ? [[originalClass alloc] initWithParentResponder:responder] : %orig;
|
||||
} return %orig;
|
||||
if (kClassicQuality) return originalClass ? [[originalClass alloc] initWithParentResponder:responder] : %orig;
|
||||
return %orig;
|
||||
}
|
||||
%end
|
||||
|
||||
// Extra Speed Options (https://github.com/LillieH1000/YouTube-Reborn/blob/v4/Tweak.xm#L853) - Same code but for .x
|
||||
%hook YTVarispeedSwitchController
|
||||
- (void *)init {
|
||||
void *ret = (void *)%orig;
|
||||
if (kExtraSpeedOptions) {
|
||||
NSArray *speedOptions = @[@"0.1x", @"0.25x", @"0.5x", @"0.75x", @"1x", @"1.25x", @"1.5x", @"1.75x", @"2x", @"2.5x", @"3x", @"3.5x", @"4x", @"5x"];
|
||||
NSMutableArray *speedOptionsCopy = [NSMutableArray new];
|
||||
|
||||
for (NSString *title in speedOptions) {
|
||||
float rate = [title floatValue];
|
||||
[speedOptionsCopy addObject:[[objc_lookUpClass("YTVarispeedSwitchControllerOption") alloc] initWithTitle:title rate:rate]];
|
||||
}
|
||||
|
||||
Ivar optionsIvar = class_getInstanceVariable(object_getClass(self), "_options");
|
||||
object_setIvar(self, optionsIvar, [speedOptionsCopy copy]);
|
||||
|
||||
} return ret;
|
||||
}
|
||||
%end
|
||||
|
||||
%hook MLHAMQueuePlayer
|
||||
- (void)setRate:(float)rate {
|
||||
if (kExtraSpeedOptions) {
|
||||
Ivar rateIvar = class_getInstanceVariable([self class], "_rate");
|
||||
if (rateIvar) {
|
||||
float* ratePtr = (float *)((__bridge void *)self + ivar_getOffset(rateIvar));
|
||||
*ratePtr = rate;
|
||||
}
|
||||
|
||||
id ytPlayer = object_getIvar(self, class_getInstanceVariable([self class], "_player"));
|
||||
if ([ytPlayer respondsToSelector:@selector(setRate:)]) {
|
||||
[ytPlayer setRate:rate];
|
||||
}
|
||||
|
||||
[self.playerEventCenter broadcastRateChange:rate];
|
||||
} else {
|
||||
%orig(rate);
|
||||
}
|
||||
}
|
||||
%end
|
||||
|
||||
// Temprorary Fix For 'Classic Video Quality' and 'Extra Speed Options'
|
||||
%hook YTVersionUtils
|
||||
+ (NSString *)appVersion {
|
||||
NSString *originalVersion = %orig;
|
||||
NSString *fakeVersion = @"18.18.2";
|
||||
|
||||
return (!kClassicQuality && !kExtraSpeedOptions && [originalVersion compare:fakeVersion options:NSNumericSearch] == NSOrderedDescending) ? originalVersion : fakeVersion;
|
||||
}
|
||||
%end
|
||||
|
||||
// Show real version in YT Settings
|
||||
%hook YTSettingsCell
|
||||
- (void)setDetailText:(id)arg1 {
|
||||
NSDictionary *infoDictionary = [[NSBundle mainBundle] infoDictionary];
|
||||
NSString *appVersion = infoDictionary[@"CFBundleShortVersionString"];
|
||||
|
||||
if ([arg1 isEqualToString:@"18.18.2"]) {
|
||||
arg1 = appVersion;
|
||||
} %orig(arg1);
|
||||
}
|
||||
%end
|
||||
|
||||
@@ -247,7 +356,7 @@ BOOL isAd(YTIElementRenderer *self) {
|
||||
%end
|
||||
|
||||
%hook YTSegmentableInlinePlayerBarView
|
||||
- (void)setBufferedProgressBarColor:(id)arg1 { if (kNoRelatedVids) %orig([UIColor colorWithRed:0.65 green:0.65 blue:0.65 alpha:0.60]); }
|
||||
- (void)setBufferedProgressBarColor:(id)arg1 { if (kRedProgressBar) %orig([UIColor colorWithRed:0.65 green:0.65 blue:0.65 alpha:0.60]); }
|
||||
%end
|
||||
|
||||
// Disable Hints
|
||||
@@ -261,37 +370,107 @@ BOOL isAd(YTIElementRenderer *self) {
|
||||
- (void)setHintsDisabled:(BOOL)arg1 { kNoHints ? %orig(YES) : %orig; }
|
||||
%end
|
||||
|
||||
// Enter Fullscreen on Start (https://github.com/PoomSmart/YTAutoFullScreen)
|
||||
%hook YTPlayerViewController
|
||||
- (void)loadWithPlayerTransition:(id)arg1 playbackConfig:(id)arg2 {
|
||||
%orig;
|
||||
if (kAutoFullscreen) [NSTimer scheduledTimerWithTimeInterval:0.75 target:self selector:@selector(autoFullscreen) userInfo:nil repeats:NO];
|
||||
}
|
||||
|
||||
%new
|
||||
- (void)autoFullscreen {
|
||||
YTWatchController *watchController = [self valueForKey:@"_UIDelegate"];
|
||||
[watchController showFullScreen];
|
||||
}
|
||||
%end
|
||||
|
||||
// Exit Fullscreen on Finish
|
||||
%hook YTWatchFlowController
|
||||
- (BOOL)shouldExitFullScreenOnFinish { return kExitFullscreen ? YES : NO; }
|
||||
%end
|
||||
|
||||
%hook YTMainAppVideoPlayerOverlayViewController
|
||||
// Disable Double Tap To Seek
|
||||
%hook YTDoubleTapToSeekController
|
||||
- (void)enableDoubleTapToSeek:(BOOL)arg1 { kNoDoubleTapToSeek ? %orig(NO) : %orig; }
|
||||
- (BOOL)allowDoubleTapToSeekGestureRecognizer { return kNoDoubleTapToSeek ? NO : %orig; }
|
||||
|
||||
// Copy Timestamped Link by Pressing On Pause
|
||||
- (void)didPressPause:(id)arg1 {
|
||||
%orig;
|
||||
|
||||
if (kCopyWithTimestamp) {
|
||||
NSInteger mediaTimeInteger = (NSInteger)self.mediaTime;
|
||||
NSString *currentTimeLink = [NSString stringWithFormat:@"https://www.youtube.com/watch?v=%@&t=%lds", self.videoID, mediaTimeInteger];
|
||||
|
||||
UIPasteboard *pasteboard = [UIPasteboard generalPasteboard];
|
||||
pasteboard.string = currentTimeLink;
|
||||
}
|
||||
}
|
||||
%end
|
||||
|
||||
// Remove Shorts (https://github.com/MiRO92/YTNoShorts)
|
||||
// Fit 'Play All' Buttons Text For Localizations
|
||||
%hook YTQTMButton
|
||||
- (void)layoutSubviews {
|
||||
if ([self.accessibilityIdentifier isEqualToString:@"id.playlist.playall.button"]) {
|
||||
self.titleLabel.adjustsFontSizeToFitWidth = YES;
|
||||
} %orig;
|
||||
}
|
||||
%end
|
||||
|
||||
// Fit Shorts Button Labels For Localizations
|
||||
%hook YTReelPlayerButton
|
||||
- (void)layoutSubviews {
|
||||
%orig;
|
||||
|
||||
for (UIView *subview in self.subviews) {
|
||||
if ([subview isKindOfClass:[UILabel class]]) {
|
||||
UILabel *label = (UILabel *)subview;
|
||||
label.adjustsFontSizeToFitWidth = YES;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
%end
|
||||
|
||||
// Fix Playlist Mini-bar Height For Small Screens
|
||||
%hook YTPlaylistMiniBarView
|
||||
- (void)setFrame:(CGRect)frame {
|
||||
if (frame.size.height < 54.0) frame.size.height = 54.0;
|
||||
%orig(frame);
|
||||
}
|
||||
%end
|
||||
|
||||
// Remove "Play next in queue" from the menu @PoomSmart (https://github.com/qnblackcat/uYouPlus/issues/1138#issuecomment-1606415080)
|
||||
%hook YTMenuItemVisibilityHandler
|
||||
- (BOOL)shouldShowServiceItemRenderer:(YTIMenuConditionalServiceItemRenderer *)renderer {
|
||||
if (kRemovePlayNext && renderer.icon.iconType == 251) {
|
||||
return NO;
|
||||
} return %orig;
|
||||
}
|
||||
%end
|
||||
|
||||
// Remove Premium Pop-up, Horizontal Video Carousel and Shorts (https://github.com/MiRO92/YTNoShorts)
|
||||
%hook YTAsyncCollectionView
|
||||
- (id)cellForItemAtIndexPath:(NSIndexPath *)indexPath {
|
||||
if (kHideShorts) {
|
||||
UICollectionViewCell *cell = %orig;
|
||||
if ([cell isKindOfClass:NSClassFromString(@"_ASCollectionViewCell")]) {
|
||||
_ASCollectionViewCell *cell = %orig;
|
||||
if ([cell respondsToSelector:@selector(node)]) {
|
||||
if ([[[cell node] accessibilityIdentifier] isEqualToString:@"eml.shorts-shelf"]) {
|
||||
[self removeShortsCellAtIndexPath:indexPath];
|
||||
}
|
||||
UICollectionViewCell *cell = %orig;
|
||||
|
||||
if ([cell isKindOfClass:objc_lookUpClass("_ASCollectionViewCell")]) {
|
||||
_ASCollectionViewCell *cell = %orig;
|
||||
if ([cell respondsToSelector:@selector(node)]) {
|
||||
NSString *idToRemove = [[cell node] accessibilityIdentifier];
|
||||
if ([idToRemove isEqualToString:@"statement_banner.view"] ||
|
||||
(([idToRemove isEqualToString:@"eml.shorts-grid"] || [idToRemove isEqualToString:@"eml.shorts-shelf"] || [idToRemove isEqualToString:@"eml.inline_shorts"]) && kHideShorts)) {
|
||||
[self removeCellsAtIndexPath:indexPath];
|
||||
}
|
||||
} else if ([cell isKindOfClass:NSClassFromString(@"YTReelShelfCell")]) {
|
||||
[self removeShortsCellAtIndexPath:indexPath];
|
||||
} return %orig;
|
||||
}
|
||||
} else if (([cell isKindOfClass:objc_lookUpClass("YTReelShelfCell")] && kHideShorts) ||
|
||||
([cell isKindOfClass:objc_lookUpClass("YTHorizontalCardListCell")] && kNoContinueWatching)) {
|
||||
[self removeCellsAtIndexPath:indexPath];
|
||||
} return %orig;
|
||||
}
|
||||
|
||||
%new
|
||||
- (void)removeShortsCellAtIndexPath:(NSIndexPath *)indexPath {
|
||||
[self deleteItemsAtIndexPaths:[NSArray arrayWithObject:indexPath]];
|
||||
- (void)removeCellsAtIndexPath:(NSIndexPath *)indexPath {
|
||||
[self deleteItemsAtIndexPaths:@[indexPath]];
|
||||
}
|
||||
%end
|
||||
|
||||
@@ -362,9 +541,21 @@ BOOL isAd(YTIElementRenderer *self) {
|
||||
- (void)layoutSubviews {
|
||||
%orig;
|
||||
if (kHideShortsDescription && [self.subviews[2].accessibilityIdentifier isEqualToString:@"id.reels_smv_player_title_label"]) self.subviews[2].hidden = YES;
|
||||
if (kHideShortsThanks && [self.subviews[self.subviews.count - 3].accessibilityIdentifier isEqualToString:@"id.elements.components.suggested_action"]) self.subviews[self.subviews.count - 3].hidden = YES;
|
||||
if (kHideShortsChannelName) self.subviews[self.subviews.count - 2].hidden = YES;
|
||||
if (kHideShortsAudioTrack) self.subviews.lastObject.hidden = YES;
|
||||
for (UIView *subview in self.subviews) {
|
||||
if (kHideShortsPromoCards && [NSStringFromClass([subview class]) isEqualToString:@"YTBadge"]) {
|
||||
subview.hidden = YES;
|
||||
}
|
||||
}
|
||||
}
|
||||
%end
|
||||
|
||||
|
||||
%hook _ASDisplayView
|
||||
- (void)layoutSubviews {
|
||||
%orig;
|
||||
if (kHideShortsThanks && [self.accessibilityIdentifier isEqualToString:@"id.elements.components.suggested_action"]) self.hidden = YES;
|
||||
}
|
||||
%end
|
||||
|
||||
@@ -430,6 +621,12 @@ static void replaceTab(YTIGuideResponse *response) {
|
||||
}
|
||||
%end
|
||||
|
||||
// Hide Tab Bar Indicators
|
||||
%hook YTPivotBarIndicatorView
|
||||
- (void)setFillColor:(id)arg1 { %orig(kRemoveIndicators ? [UIColor clearColor] : arg1); }
|
||||
- (void)setBorderColor:(id)arg1 { %orig(kRemoveIndicators ? [UIColor clearColor] : arg1); }
|
||||
%end
|
||||
|
||||
// Hide Tab Labels
|
||||
BOOL hasHomeBar = NO;
|
||||
CGFloat pivotBarViewHeight;
|
||||
@@ -535,6 +732,12 @@ BOOL isTabSelected = NO;
|
||||
}
|
||||
%end
|
||||
|
||||
// Disable Right-To-Left Formatting
|
||||
%hook NSParagraphStyle
|
||||
+ (NSWritingDirection)defaultWritingDirectionForLanguage:(id)lang { return kDisableRTL ? NSWritingDirectionLeftToRight : %orig; }
|
||||
+ (NSWritingDirection)_defaultWritingDirection { return kDisableRTL ? NSWritingDirectionLeftToRight : %orig; }
|
||||
%end
|
||||
|
||||
static void reloadPrefs() {
|
||||
NSString *path = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES).firstObject stringByAppendingPathComponent:@"YTLite.plist"];
|
||||
NSDictionary *prefs = [NSDictionary dictionaryWithContentsOfFile:path];
|
||||
@@ -544,6 +747,7 @@ static void reloadPrefs() {
|
||||
kNoCast = [prefs[@"noCast"] boolValue] ?: NO;
|
||||
kNoNotifsButton = [prefs[@"removeNotifsButton"] boolValue] ?: NO;
|
||||
kNoSearchButton = [prefs[@"removeSearchButton"] boolValue] ?: NO;
|
||||
kNoVoiceSearchButton = [prefs[@"removeVoiceSearchButton"] boolValue] ?: NO;
|
||||
kStickyNavbar = [prefs[@"stickyNavbar"] boolValue] ?: NO;
|
||||
kNoSubbar = [prefs[@"noSubbar"] boolValue] ?: NO;
|
||||
kNoYTLogo = [prefs[@"noYTLogo"] boolValue] ?: NO;
|
||||
@@ -559,13 +763,17 @@ static void reloadPrefs() {
|
||||
kNoPromotionCards = [prefs[@"noPromotionCards"] boolValue] ?: NO;
|
||||
kNoWatermarks = [prefs[@"noWatermarks"] boolValue] ?: NO;
|
||||
kMiniplayer = [prefs[@"miniplayer"] boolValue] ?: NO;
|
||||
kPortraitFullscreen = [prefs[@"portraitFullscreen"] boolValue] ?: NO;
|
||||
kCopyWithTimestamp = [prefs[@"copyWithTimestamp"] boolValue] ?: NO;
|
||||
kDisableAutoplay = [prefs[@"disableAutoplay"] boolValue] ?: NO;
|
||||
kNoContentWarning = [prefs[@"noContentWarning"] boolValue] ?: NO;
|
||||
kClassicQuality = [prefs[@"classicQuality"] boolValue] ?: NO;
|
||||
kExtraSpeedOptions = [prefs[@"extraSpeedOptions"] boolValue] ?: NO;
|
||||
kDontSnapToChapter = [prefs[@"dontSnapToChapter"] boolValue] ?: NO;
|
||||
kRedProgressBar = [prefs[@"redProgressBar"] boolValue] ?: NO;
|
||||
kNoHints = [prefs[@"noHints"] boolValue] ?: NO;
|
||||
kNoFreeZoom = [prefs[@"noFreeZoom"] boolValue] ?: NO;
|
||||
kAutoFullscreen = [prefs[@"autoFullscreen"] boolValue] ?: NO;
|
||||
kExitFullscreen = [prefs[@"exitFullscreen"] boolValue] ?: NO;
|
||||
kNoDoubleTapToSeek = [prefs[@"noDoubleTapToSeek"] boolValue] ?: NO;
|
||||
kHideShorts = [prefs[@"hideShorts"] boolValue] ?: NO;
|
||||
@@ -586,14 +794,25 @@ static void reloadPrefs() {
|
||||
kHideShortsChannelName = [prefs[@"hideShortsChannelName"] boolValue] ?: NO;
|
||||
kHideShortsDescription = [prefs[@"hideShortsDescription"] boolValue] ?: NO;
|
||||
kHideShortsAudioTrack = [prefs[@"hideShortsAudioTrack"] boolValue] ?: NO;
|
||||
kHideShortsPromoCards = [prefs[@"hideShortsPromoCards"] boolValue] ?: NO;
|
||||
kRemoveLabels = [prefs[@"removeLabels"] boolValue] ?: NO;
|
||||
kRemoveIndicators = [prefs[@"removeIndicators"] boolValue] ?: NO;
|
||||
kReExplore = [prefs[@"reExplore"] boolValue] ?: NO;
|
||||
kRemoveShorts = [prefs[@"removeShorts"] boolValue] ?: NO;
|
||||
kRemoveSubscriptions = [prefs[@"removeSubscriptions"] boolValue] ?: NO;
|
||||
kRemoveUploads = (prefs[@"removeUploads"] != nil) ? [prefs[@"removeUploads"] boolValue] : YES;
|
||||
kRemoveLibrary = [prefs[@"removeLibrary"] boolValue] ?: NO;
|
||||
kRemovePlayNext = [prefs[@"removePlayNext"] boolValue] ?: NO;
|
||||
kNoContinueWatching = [prefs[@"noContinueWatching"] boolValue] ?: NO;
|
||||
kNoSearchHistory = [prefs[@"noSearchHistory"] boolValue] ?: NO;
|
||||
kNoRelatedWatchNexts = [prefs[@"noRelatedWatchNexts"] boolValue] ?: NO;
|
||||
kStickSortComments = [prefs[@"stickSortComments"] boolValue] ?: NO;
|
||||
kHideSortComments = [prefs[@"hideSortComments"] boolValue] ?: NO;
|
||||
kPlaylistOldMinibar = [prefs[@"playlistOldMinibar"] boolValue] ?: NO;
|
||||
kDisableRTL = [prefs[@"disableRTL"] boolValue] ?: NO;
|
||||
kPivotIndex = (prefs[@"pivotIndex"] != nil) ? [prefs[@"pivotIndex"] intValue] : 0;
|
||||
kAdvancedMode = [prefs[@"advancedMode"] boolValue] ?: NO;
|
||||
kAdvancedModeReminder = [prefs[@"advancedModeReminder"] boolValue] ?: NO;
|
||||
|
||||
NSDictionary *newSettings = @{
|
||||
@"noAds" : @(kNoAds),
|
||||
@@ -601,6 +820,7 @@ static void reloadPrefs() {
|
||||
@"noCast" : @(kNoCast),
|
||||
@"removeNotifsButton" : @(kNoNotifsButton),
|
||||
@"removeSearchButton" : @(kNoSearchButton),
|
||||
@"removeVoiceSearchButton" : @(kNoVoiceSearchButton),
|
||||
@"stickyNavbar" : @(kStickyNavbar),
|
||||
@"noSubbar" : @(kNoSubbar),
|
||||
@"noYTLogo" : @(kNoYTLogo),
|
||||
@@ -616,13 +836,17 @@ static void reloadPrefs() {
|
||||
@"noPromotionCards" : @(kNoPromotionCards),
|
||||
@"noWatermarks" : @(kNoWatermarks),
|
||||
@"miniplayer" : @(kMiniplayer),
|
||||
@"portraitFullscreen" : @(kPortraitFullscreen),
|
||||
@"copyWithTimestamp" : @(kCopyWithTimestamp),
|
||||
@"disableAutoplay" : @(kDisableAutoplay),
|
||||
@"noContentWarning" : @(kNoContentWarning),
|
||||
@"classicQuality" : @(kClassicQuality),
|
||||
@"extraSpeedOptions" : @(kExtraSpeedOptions),
|
||||
@"dontSnapToChapter" : @(kDontSnapToChapter),
|
||||
@"redProgressBar" : @(kRedProgressBar),
|
||||
@"noHints" : @(kNoHints),
|
||||
@"noFreeZoom" : @(kNoFreeZoom),
|
||||
@"autoFullscreen" : @(kAutoFullscreen),
|
||||
@"exitFullscreen" : @(kExitFullscreen),
|
||||
@"noDoubleTapToSeek" : @(kNoDoubleTapToSeek),
|
||||
@"hideShorts" : @(kHideShorts),
|
||||
@@ -643,14 +867,25 @@ static void reloadPrefs() {
|
||||
@"hideShortsChannelName" : @(kHideShortsChannelName),
|
||||
@"hideShortsDescription" : @(kHideShortsDescription),
|
||||
@"hideShortsAudioTrack" : @(kHideShortsAudioTrack),
|
||||
@"hideShortsPromoCards" : @(kHideShortsPromoCards),
|
||||
@"removeLabels" : @(kRemoveLabels),
|
||||
@"removeIndicators" : @(kRemoveIndicators),
|
||||
@"reExplore" : @(kReExplore),
|
||||
@"removeShorts" : @(kRemoveShorts),
|
||||
@"removeSubscriptions" : @(kRemoveSubscriptions),
|
||||
@"removeUploads" : @(kRemoveUploads),
|
||||
@"removeLibrary" : @(kRemoveLibrary),
|
||||
@"removePlayNext" : @(kRemovePlayNext),
|
||||
@"noContinueWatching" : @(kNoContinueWatching),
|
||||
@"noSearchHistory" : @(kNoSearchHistory),
|
||||
@"noRelatedWatchNexts" : @(kNoRelatedWatchNexts),
|
||||
@"stickSortComments" : @(kStickSortComments),
|
||||
@"hideSortComments" : @(kHideSortComments),
|
||||
@"playlistOldMinibar" : @(kPlaylistOldMinibar),
|
||||
@"disableRTL" : @(kDisableRTL),
|
||||
@"pivotIndex" : @(kPivotIndex),
|
||||
@"advancedMode" : @(kAdvancedMode)
|
||||
@"advancedMode" : @(kAdvancedMode),
|
||||
@"advancedModeReminder" : @(kAdvancedModeReminder)
|
||||
};
|
||||
|
||||
if (![newSettings isEqualToDictionary:prefs]) [newSettings writeToFile:path atomically:NO];
|
||||
|
||||
@@ -11,6 +11,8 @@
|
||||
"RemoveNotificationsDesc" = "Hides Notifications button from the Navigation bar.";
|
||||
"RemoveSearch" = "Hide Search button";
|
||||
"RemoveSearchDesc" = "Hides Search button from the Navigation bar.";
|
||||
"RemoveVoiceSearch" = "Hide Voice search button";
|
||||
"RemoveVoiceSearchDesc" = "Hides Voice search button from the Navigation bar.";
|
||||
"StickyNavbar" = "Sticky Navigation bar";
|
||||
"StickyNavbarDesc" = "Pins the Navigation bar so that it remains visible when scrolling down.";
|
||||
"NoSubbar" = "Hide Subbar";
|
||||
@@ -45,12 +47,18 @@
|
||||
"Player" = "Player";
|
||||
"Miniplayer" = "Enable mini player";
|
||||
"MiniplayerDesc" = "Enables the mini player for videos that were not originally designed for it, such as videos targeted for children.";
|
||||
"PortraitFullscreen" = "Portrait fullscreen mode";
|
||||
"PortraitFullscreenDesc" = "Enables portrait fullscreen mode support.";
|
||||
"CopyWithTimestamp" = "Copy timestamped links";
|
||||
"CopyWithTimestampDesc" = "Allows to copy timestamped link to the clipboard by pressing pause button.";
|
||||
"DisableAutoplay" = "Disable Autoplay videos";
|
||||
"DisableAutoplayDesc" = "Prevents video playback after opening.";
|
||||
"NoContentWarning" = "Skip content warning";
|
||||
"NoContentWarningDesc" = "Skips sensitive content warning message.";
|
||||
"ClassicQuality" = "Classic video quality";
|
||||
"ClassicQualityDesc" = "Brings back classic video quality selection menu.";
|
||||
"ExtraSpeedOptions" = "Extra speed options";
|
||||
"ExtraSpeedOptionsDesc" = "Adds more video playback speed options to the player menu.";
|
||||
"DontSnap2Chapter" = "Disable snap to chapter";
|
||||
"DontSnap2ChapterDesc" = "Disables skipping to the next episode by double-tap gesture.";
|
||||
"RedProgressBar" = "Red progress bar";
|
||||
@@ -59,6 +67,8 @@
|
||||
"NoHintsDesc" = "Disables hints by author which appears at the top-right corner during playback.";
|
||||
"NoFreeZoom" = "Disable free zoom gesture";
|
||||
"NoFreeZoomDesc" = "Disables new free zoom gestures.";
|
||||
"AutoFullscreen" = "Play videos in fullscreen";
|
||||
"AutoFullscreenDesc" = "Automatically plays videos in fullscreen mode.";
|
||||
"ExitFullscreen" = "Exit fullscreen mode on finish";
|
||||
"ExitFullscreenDesc" = "Exits fullscreen mode at the end of video playback.";
|
||||
"NoDoubleTap2Seek" = "Disable double tap to seek";
|
||||
@@ -67,6 +77,8 @@
|
||||
"Tabbar" = "Tab bar";
|
||||
"RemoveLabels" = "Remove labels";
|
||||
"RemoveLabelsDesc" = "Removes tab labels.";
|
||||
"RemoveIndicators" = "Remove indicators";
|
||||
"RemoveIndicatorsDesc" = "Removes tab indicators.";
|
||||
"ReExplore" = "Replace Shorts tab with Explore tab";
|
||||
"ReExploreDesc" = "Shows Explore tab instead of Shorts tab as on old YouTube versions.";
|
||||
"HideShortsTab" = "Hide Shorts tab";
|
||||
@@ -116,6 +128,24 @@
|
||||
"HideShortsAudioTrack" = "Hide AudioTrack";
|
||||
"HideShortsAudioTrackDesc" = "Hides AudioTrack under Shorts description.";
|
||||
|
||||
"Other" = "Other";
|
||||
"RemovePlayNext" = "Remove \"Play next in queue\"";
|
||||
"RemovePlayNextDesc" = "Removes \"Play next in queue\" option from menu.";
|
||||
"NoContinueWatching" = "Remove \"Continue watching\"";
|
||||
"NoContinueWatchingDesc" = "Removes the \"Continue watching\" section containing unfinished videos from the Home page.";
|
||||
"NoSearchHistory" = "Hide search history";
|
||||
"NoSearchHistoryDesc" = "Visually hides search history and suggestions. Note: Your search history will still be accessible in your other YouTube clients.";
|
||||
"NoRelatedWatchNexts" = "Hide all videos under player";
|
||||
"NoRelatedWatchNextsDesc" = "Hides all videos below the player, leaving only the video info and comments section.";
|
||||
"StickSortComments" = "Stick comments header";
|
||||
"StickSortCommentsDesc" = "Pins sort comments header (Top, Newest) so that it won't disappear while scrolling.";
|
||||
"HideSortComments" = "Hide comments header";
|
||||
"HideSortCommentsDesc" = "Hides sort comments header (Top, Newest) so it will never appear.";
|
||||
"PlaylistOldMinibar" = "Old playlist minibar";
|
||||
"PlaylistOldMinibarDesc" = "Replaces the new floating playlist panel with the old one.";
|
||||
"DisableRTL" = "Disable RTL formatting";
|
||||
"DisableRTLDesc" = "Forcefully displays text in left-to-right (LTR) format for languages that are initially displayed in right-to-left (RTL).";
|
||||
|
||||
"Startup" = "Startup page";
|
||||
"Home" = "Home";
|
||||
"Explore" = "Explore";
|
||||
@@ -129,7 +159,13 @@
|
||||
"About" = "About";
|
||||
"Credits" = "Credits";
|
||||
"Developer" = "YTLite developer";
|
||||
"ChineseSimplified" = "Chinese (Simplified) localization";
|
||||
"ChineseTraditional" = "Chinese (Traditional) localization";
|
||||
"French" = "French localization";
|
||||
"Spanish" = "Spanish localization";
|
||||
"Japanese" = "Japanese localization";
|
||||
"Advanced" = "Advanced mode";
|
||||
"AdvancedModeReminder" = "Would you like to activate Advanced mode for YTLite?\n\nThis mode provides more than 50 additional options to customize and optimize your YouTube experience. You can enable/disable it later from Settings → %@ → %@ → %@.";
|
||||
"ResetSettings" = "Reset YTLite settings";
|
||||
"ResetMessage" = "This option will reset YTLite settings to default and close YouTube.\n\nAre you sure you want to continue?";
|
||||
"Yes" = "Yes";
|
||||
|
||||
@@ -0,0 +1,172 @@
|
||||
"General" = "General";
|
||||
"RemoveAds" = "Eliminar anuncios";
|
||||
"RemoveAdsDesc" = "Elimina los anuncios dentro de la aplicación.";
|
||||
"BackgroundPlayback" = "Reproducción en segundo plano";
|
||||
"BackgroundPlaybackDesc" = "Permite la reproducción en segundo plano.";
|
||||
|
||||
"Navbar" = "Barra de navegación";
|
||||
"RemoveCast" = "Ocultar botón de Cast";
|
||||
"RemoveCastDesc" = "Oculta el botón de Cast de la barra de navegación.";
|
||||
"RemoveNotifications" = "Ocultar botón de Notificaciones";
|
||||
"RemoveNotificationsDesc" = "Oculta el botón de Notificaciones de la barra de navegación.";
|
||||
"RemoveSearch" = "Ocultar botón de Búsqueda";
|
||||
"RemoveSearchDesc" = "Oculta el botón de Búsqueda de la barra de navegación.";
|
||||
"RemoveVoiceSearch" = "Ocultar botón de Búsqueda por voz";
|
||||
"RemoveVoiceSearchDesc" = "Oculta el botón de Búsqueda por voz de la barra de navegación.";
|
||||
"StickyNavbar" = "Barra de navegación fija";
|
||||
"StickyNavbarDesc" = "Mantiene fija la barra de navegación para que permanezca visible al desplazarse hacia abajo.";
|
||||
"NoSubbar" = "Ocultar subbarra";
|
||||
"NoSubbarDesc" = "Oculta la subbarra (Todo, Novedades para ti, En directo, etc.) debajo de la barra de navegación.";
|
||||
"NoYTLogo" = "Eliminar el logo de YouTube";
|
||||
"NoYTLogoDesc" = "Elimina el logo de YouTube de la barra de navegación.";
|
||||
|
||||
"Overlay" = "Superposición";
|
||||
"HideAutoplay" = "Ocultar interruptor de reproducción automática";
|
||||
"HideAutoplayDesc" = "Oculta el interruptor de reproducción automática de la superposición.";
|
||||
"HideSubs" = "Ocultar botón de subtítulos";
|
||||
"HideSubsDesc" = "Oculta el botón de subtítulos de la superposición.";
|
||||
"NoHUDMsgs" = "Ocultar mensajes de HUD";
|
||||
"NoHUDMsgsDesc" = "Oculta todos los mensajes de funciones del reproductor. Ejemplo: CC está activado/desactivado, Repetir video está activado, etc.";
|
||||
"HidePrevNext" = "Ocultar botones Anterior y Siguiente";
|
||||
"HidePrevNextDesc" = "Oculta los botones de video Anterior y Siguiente de la superposición.";
|
||||
"ReplacePrevNext" = "Botones de Avance rápido y Rebobinado";
|
||||
"ReplacePrevNextDesc" = "Reemplaza los botones de video Anterior y Siguiente por botones de Avance rápido y Rebobinado en la superposición.";
|
||||
"NoDarkBg" = "Eliminar fondo oscuro";
|
||||
"NoDarkBgDesc" = "Elimina el fondo oscuro de la superposición.";
|
||||
"NoEndScreenCards" = "Ocultar tarjetas emergentes de fin de pantalla";
|
||||
"NoEndScreenCardsDesc" = "Oculta las tarjetas emergentes de fin de pantalla (miniaturas) al final de los vídeos.";
|
||||
"NoFullscreenActions" = "Desactivar acciones en pantalla completa";
|
||||
"NoFullscreenActionsDesc" = "Desactiva el panel de acciones en el modo de pantalla completa.";
|
||||
"NoRelatedVids" = "Sin vídeos relacionados en la superposición";
|
||||
"NoRelatedVidsDesc" = "Elimina los vídeos relacionados que se muestran en la superposición al deslizar hacia arriba.";
|
||||
"NoPromotionCards" = "Ocultar tarjetas de promoción pagada";
|
||||
"NoPromotionCardsDesc" = "Oculta la tarjeta \"Incluye promociones pagadas\" en los vídeos que incluyen promociones pagadas.";
|
||||
"NoWatermarks" = "Ocultar marcas de agua";
|
||||
"NoWatermarksDesc" = "Oculta las marcas de agua del canal del reproductor.";
|
||||
|
||||
"Player" = "Reproductor";
|
||||
"Miniplayer" = "Activar mini reproductor";
|
||||
"MiniplayerDesc" = "Activa el mini reproductor para vídeos que no fueron diseñados originalmente para ello, como los vídeos dirigidos a niños.";
|
||||
"PortraitFullscreen" = "Modo de pantalla completa vertical";
|
||||
"PortraitFullscreenDesc" = "Activa el modo de pantalla completa vertical.";
|
||||
"CopyWithTimestamp" = "Copy timestamped links";
|
||||
"CopyWithTimestampDesc" = "Allows to copy timestamped link to the clipboard by pressing pause button.";
|
||||
"DisableAutoplay" = "Desactivar reproducción automática";
|
||||
"DisableAutoplayDesc" = "Evita la reproducción automática de vídeos después de abrirlos.";
|
||||
"NoContentWarning" = "Omitir advertencia de contenido";
|
||||
"NoContentWarningDesc" = "Omite el mensaje de advertencia de contenido sensible.";
|
||||
"ClassicQuality" = "Calidad de vídeo clásica";
|
||||
"ClassicQualityDesc" = "Devuelve el menú clásico de selección de calidad de vídeo.";
|
||||
"ExtraSpeedOptions" = "Opciones adicionales de velocidad";
|
||||
"ExtraSpeedOptionsDesc" = "Agrega más opciones de velocidad de reproducción de vídeo al menú del reproductor.";
|
||||
"DontSnap2Chapter" = "Desactivar saltar al siguiente capítulo";
|
||||
"DontSnap2ChapterDesc" = "Desactiva el salto al siguiente episodio mediante el gesto de doble toque.";
|
||||
"RedProgressBar" = "Barra de progreso roja";
|
||||
"RedProgressBarDesc" = "Devuelve la barra de progreso roja.";
|
||||
"NoHints" = "Desactivar sugerencias";
|
||||
"NoHintsDesc" = "Desactiva las sugerencias del autor que aparecen en la esquina superior derecha durante la reproducción.";
|
||||
"NoFreeZoom" = "Desactivar gesto de zoom libre";
|
||||
"NoFreeZoomDesc" = "Desactiva los nuevos gestos de zoom libre.";
|
||||
"AutoFullscreen" = "Reproducir vídeos en pantalla completa";
|
||||
"AutoFullscreenDesc" = "Reproduce automáticamente los vídeos en modo de pantalla completa.";
|
||||
"ExitFullscreen" = "Salir del modo de pantalla completa al finalizar";
|
||||
"ExitFullscreenDesc" = "Sale del modo de pantalla completa al finalizar la reproducción del vídeo.";
|
||||
"NoDoubleTap2Seek" = "Desactivar doble toque para buscar";
|
||||
"NoDoubleTap2SeekDesc" = "Desactiva el gesto de doble toque para buscar.";
|
||||
|
||||
"Tabbar" = "Barra de pestañas";
|
||||
"RemoveLabels" = "Eliminar etiquetas";
|
||||
"RemoveLabelsDesc" = "Elimina las etiquetas de las pestañas.";
|
||||
"RemoveIndicators" = "Remove indicators";
|
||||
"RemoveIndicatorsDesc" = "Removes tab indicators.";
|
||||
"ReExplore" = "Reemplazar pestaña Shorts con pestaña Explorar";
|
||||
"ReExploreDesc" = "Muestra la pestaña Explorar en lugar de la pestaña Shorts como en versiones antiguas de YouTube.";
|
||||
"HideShortsTab" = "Ocultar pestaña Shorts";
|
||||
"HideShortsTabDesc" = "Oculta la pestaña Shorts de la barra de pestañas.";
|
||||
"HideSubscriptionsTab" = "Ocultar pestaña Suscripciones";
|
||||
"HideSubscriptionsTabDesc" = "Oculta la pestaña Suscripciones de la barra de pestañas.";
|
||||
"HideUploadButton" = "Ocultar botón Subir";
|
||||
"HideUploadButtonDesc" = "Oculta el botón Subir de la barra de pestañas.";
|
||||
"HideLibraryTab" = "Ocultar pestaña Biblioteca";
|
||||
"HideLibraryTabDesc" = "Oculta la pestaña Biblioteca de la barra de pestañas.";
|
||||
|
||||
"Shorts" = "Shorts";
|
||||
"HideShorts" = "Ocultar vídeos Shorts";
|
||||
"HideShortsDesc" = "Oculta los vídeos Shorts de la página de inicio, Recomendados, etc. (No se aplica al historial de reproducciones)";
|
||||
"ShortsProgress" = "Activar barra de progreso";
|
||||
"ShortsProgressDesc" = "Muestra una barra de progreso en la superposición de Shorts.";
|
||||
"ResumeShorts" = "No empezar desde la pestaña Shorts";
|
||||
"ResumeShortsDesc" = "Evita empezar desde los vídeos Shorts al abrir la aplicación, lo cual ocurre si YouTube se cerró mientras se veían Shorts.";
|
||||
"HideShortsLogo" = "Ocultar el logo de Shorts";
|
||||
"HideShortsLogoDesc" = "Oculta el logo de Shorts en la esquina superior izquierda.";
|
||||
"HideShortsSearch" = "Ocultar botón de búsqueda";
|
||||
"HideShortsSearchDesc" = "Oculta el botón de búsqueda en la superposición de Shorts.";
|
||||
"HideShortsCamera" = "Ocultar botón de cámara";
|
||||
"HideShortsCameraDesc" = "Oculta el botón de cámara en la superposición de Shorts.";
|
||||
"HideShortsMore" = "Ocultar botón Más (⋮)";
|
||||
"HideShortsMoreDesc" = "Oculta el botón Más (⋮) en la superposición de Shorts. También se puede acceder manteniendo presionada la pantalla.";
|
||||
"HideShortsSubscriptions" = "Ocultar botón de Suscripciones";
|
||||
"HideShortsSubscriptionsDesc" = "Oculta el botón de Suscripciones que aparece cuando se pausa un vídeo Shorts.";
|
||||
"HideShortsLike" = "Ocultar botón de Me gusta";
|
||||
"HideShortsLikeDesc" = "Oculta el botón de Me gusta en la superposición de Shorts.";
|
||||
"HideShortsDislike" = "Ocultar botón de No me gusta";
|
||||
"HideShortsDislikeDesc" = "Oculta el botón de No me gusta en la superposición de Shorts.";
|
||||
"HideShortsComments" = "Ocultar botón de Comentarios";
|
||||
"HideShortsCommentsDesc" = "Oculta el botón de Comentarios en la superposición de Shorts.";
|
||||
"HideShortsRemix" = "Ocultar botón de Remixer";
|
||||
"HideShortsRemixDesc" = "Oculta el botón de Remixer en la superposición de Shorts.";
|
||||
"HideShortsShare" = "Ocultar botón de Compartir";
|
||||
"HideShortsShareDesc" = "Oculta el botón de Compartir en la superposición de Shorts.";
|
||||
"HideShortsAvatars" = "Ocultar avatar de los canales";
|
||||
"HideShortsAvatarsDesc" = "Oculta la imagen de perfil en la esquina inferior derecha.";
|
||||
"HideShortsThanks" = "Ocultar botón de Supergracias";
|
||||
"HideShortsThanksDesc" = "Oculta el botón de Supergracias (Donar) en la superposición de Shorts.";
|
||||
"HideShortsChannelName" = "Ocultar nombre del canal";
|
||||
"HideShortsChannelNameDesc" = "Oculta el nombre del canal y el botón de Suscribirse en la superposición de Shorts.";
|
||||
"HideShortsDescription" = "Ocultar descripción";
|
||||
"HideShortsDescriptionDesc" = "Oculta la descripción de Shorts debajo del nombre del canal.";
|
||||
"HideShortsAudioTrack" = "Ocultar pista de audio";
|
||||
"HideShortsAudioTrackDesc" = "Oculta la pista de audio debajo de la descripción de Shorts.";
|
||||
|
||||
"Other" = "Otro";
|
||||
"RemovePlayNext" = "Eliminar \"Reproducir siguiente en cola\"";
|
||||
"RemovePlayNextDesc" = "Elimina la opción \"Reproducir siguiente en cola\" del menú.";
|
||||
"NoContinueWatching" = "Eliminar \"Continuar viendo\"";
|
||||
"NoContinueWatchingDesc" = "Elimina la sección \"Continuar viendo\" que contiene videos sin terminar de la página de inicio.";
|
||||
"NoSearchHistory" = "Ocultar el historial de búsqueda";
|
||||
"NoSearchHistoryDesc" = "Oculta visualmente el historial de búsqueda y las sugerencias. Nota: El historial de búsqueda seguirá siendo accesible en otros clientes de YouTube.";
|
||||
"NoRelatedWatchNexts" = "Ocultar todos los vídeos del reproductor";
|
||||
"NoRelatedWatchNextsDesc" = "Oculta todos los vídeos debajo del reproductor, dejando sólo la información del vídeo y la sección de comentarios.";
|
||||
"StickSortComments" = "Pegar cabecera de comentarios";
|
||||
"StickSortCommentsDesc" = "Los pines ordenan la cabecera de comentarios (Arriba, Más reciente) para que no desaparezca al desplazarse.";
|
||||
"HideSortComments" = "Ocultar cabecera de comentarios";
|
||||
"HideSortCommentsDesc" = "Oculta la cabecera de los comentarios de ordenación (Top, Newest) para que nunca aparezca.";
|
||||
"PlaylistOldMinibar" = "Lista de reproducción antigua minibar";
|
||||
"PlaylistOldMinibarDesc" = "Sustituye el nuevo panel flotante de listas de reproducción por el antiguo.";
|
||||
"DisableRTL" = "Desactivar el formato RTL";
|
||||
"DisableRTLDesc" = "Muestra forzosamente el texto en formato de izquierda a derecha (LTR) para los idiomas que se muestran inicialmente en formato de derecha a izquierda (RTL).";
|
||||
|
||||
"Startup" = "Página de inicio";
|
||||
"Home" = "Inicio";
|
||||
"Explore" = "Explorar";
|
||||
"ShortsTab" = "Shorts";
|
||||
"Subscriptions" = "Suscripciones";
|
||||
"Library" = "Biblioteca";
|
||||
"Warning" = "Advertencia";
|
||||
"TabIsHidden" = "No se puede seleccionar una pestaña oculta como página de inicio";
|
||||
|
||||
"Version" = "Versión";
|
||||
"About" = "Acerca de";
|
||||
"Credits" = "Créditos";
|
||||
"Developer" = "Desarrollador de YTLite";
|
||||
"ChineseSimplified" = "Traducción: Chino (Simplificado)";
|
||||
"ChineseTraditional" = "Traducción: Chino (Tradicional)";
|
||||
"French" = "Traducción: Frances";
|
||||
"Spanish" = "Traducción: Español";
|
||||
"Japanese" = "Traducción: Japonés";
|
||||
"Advanced" = "Modo avanzado";
|
||||
"AdvancedModeReminder" = "¿Desea activar el modo Avanzado para YTLite?\n\nEste modo ofrece más de 50 opciones adicionales para personalizar y optimizar tu experiencia en YouTube. Puedes activarlo/desactivarlo más tarde desde Ajustes → %@ → %@ → %@.";
|
||||
"ResetSettings" = "Restablecer configuración de YTLite";
|
||||
"ResetMessage" = "Esta opción restablecerá la configuración de YTLite a los valores predeterminados y cerrará YouTube.\n\n¿Estás seguro de que deseas continuar?";
|
||||
"Yes" = "Sí";
|
||||
"No" = "No";
|
||||
@@ -0,0 +1,172 @@
|
||||
"General" = "Général";
|
||||
"RemoveAds" = "Supprimer les publicités";
|
||||
"RemoveAdsDesc" = "Supprime les publicités intégrées.";
|
||||
"BackgroundPlayback" = "Lecture en arrière-plan";
|
||||
"BackgroundPlaybackDesc" = "Active la lecture en arrière-plan.";
|
||||
|
||||
"Navbar" = "Barre de navigation";
|
||||
"RemoveCast" = "Masquer le bouton Cast";
|
||||
"RemoveCastDesc" = "Masque le bouton Cast de la barre de navigation.";
|
||||
"RemoveNotifications" = "Masquer le bouton Notifications";
|
||||
"RemoveNotificationsDesc" = "Masque le bouton Notifications de la barre de navigation.";
|
||||
"RemoveSearch" = "Masquer le bouton Recherche";
|
||||
"RemoveSearchDesc" = "Masque le bouton Recherche de la barre de navigation.";
|
||||
"RemoveVoiceSearch" = "Masquer le bouton Recherche vocale";
|
||||
"RemoveVoiceSearchDesc" = "Masque le bouton Recherche vocale de la barre de navigation.";
|
||||
"StickyNavbar" = "Barre de navigation épinglée";
|
||||
"StickyNavbarDesc" = "Épingle la barre de navigation pour qu'elle reste visible lors du défilement vers le bas.";
|
||||
"NoSubbar" = "Masquer la sous-barre";
|
||||
"NoSubbarDesc" = "Masque la sous-barre (Tous, Nouveautés, En direct, etc.) sous la barre de navigation.";
|
||||
"NoYTLogo" = "Supprimer le logo YouTube";
|
||||
"NoYTLogoDesc" = "Supprime le logo YouTube dans la barre de navigation.";
|
||||
|
||||
"Overlay" = "Overlay";
|
||||
"HideAutoplay" = "Masquer le toggle de lecture automatique";
|
||||
"HideAutoplayDesc" = "Masque le toggle de lecture automatique de l'overlay.";
|
||||
"HideSubs" = "Masquer le bouton Sous-titres";
|
||||
"HideSubsDesc" = "Masque le bouton Sous-titres de l'overlay.";
|
||||
"NoHUDMsgs" = "Masquer les messages HUD";
|
||||
"NoHUDMsgsDesc" = "Masque tous les messages des fonctionnalités du lecteur. Exemple: les sous-titres sont activés/désactivés, la boucle vidéo est activée, etc.";
|
||||
"HidePrevNext" = "Masquer les boutons Précédent et Suivant";
|
||||
"HidePrevNextDesc" = "Masque les boutons vidéo Précédent et Suivant de l'overlay.";
|
||||
"ReplacePrevNext" = "Boutons Avance rapide et Retour rapide";
|
||||
"ReplacePrevNextDesc" = "Remplace les boutons vidéo Précédent et Suivant par des boutons Avance rapide et Retour rapide dans l'overlay.";
|
||||
"NoDarkBg" = "Supprimer l'arrière-plan sombre";
|
||||
"NoDarkBgDesc" = "Supprime l'arrière-plan sombre de l'overlay.";
|
||||
"NoEndScreenCards" = "Masquer les cartes de fin d'écran";
|
||||
"NoEndScreenCardsDesc" = "Masque les cartes de fin d'écran (vignettes) à la fin des vidéos.";
|
||||
"NoFullscreenActions" = "Désactiver les actions en plein écran";
|
||||
"NoFullscreenActionsDesc" = "Désactive le panneau d'actions en mode plein écran.";
|
||||
"NoRelatedVids" = "Pas de vidéos associées dans l'overlay";
|
||||
"NoRelatedVidsDesc" = "Supprime les vidéos associées affichées dans l'overlay en faisant glisser vers le haut.";
|
||||
"NoPromotionCards" = "Masquer les cartes de promotion payante";
|
||||
"NoPromotionCardsDesc" = "Masque la carte \"Comprend des promotions payantes\" dans les vidéos avec promotions incluses.";
|
||||
"NoWatermarks" = "Masquer les filigranes";
|
||||
"NoWatermarksDesc" = "Masque les filigranes de chaîne dans le lecteur.";
|
||||
|
||||
"Player" = "Lecteur";
|
||||
"Miniplayer" = "Activer le mini-lecteur";
|
||||
"MiniplayerDesc" = "Active le mini-lecteur pour les vidéos qui n'étaient pas initialement conçues pour cela, comme les vidéos destinées aux enfants.";
|
||||
"PortraitFullscreen" = "Mode plein écran en portrait";
|
||||
"PortraitFullscreenDesc" = "Active la prise en charge du mode plein écran en portrait.";
|
||||
"CopyWithTimestamp" = "Copy timestamped links";
|
||||
"CopyWithTimestampDesc" = "Allows to copy timestamped link to the clipboard by pressing pause button.";
|
||||
"DisableAutoplay" = "Désactiver la lecture automatique des vidéos";
|
||||
"DisableAutoplayDesc" = "Empêche la lecture des vidéos après ouverture.";
|
||||
"NoContentWarning" = "Passer l'avertissement de contenu";
|
||||
"NoContentWarningDesc" = "Ignore le message d'avertissement de contenu sensible.";
|
||||
"ClassicQuality" = "Qualité vidéo classique";
|
||||
"ClassicQualityDesc" = "Rétablit le menu de sélection de la qualité vidéo classique.";
|
||||
"ExtraSpeedOptions" = "Options de vitesse supplémentaires";
|
||||
"ExtraSpeedOptionsDesc" = "Ajoute des options de vitesse de lecture supplémentaires au menu de vitesse.";
|
||||
"DontSnap2Chapter" = "Désactiver la coupure au chapitre";
|
||||
"DontSnap2ChapterDesc" = "Désactive le passage à l'épisode suivant en double tapant.";
|
||||
"RedProgressBar" = "Barre de progression rouge";
|
||||
"RedProgressBarDesc" = "Ramène la barre de progression rouge.";
|
||||
"NoHints" = "Désactiver les indices";
|
||||
"NoHintsDesc" = "Désactive les indices de l'auteur qui apparaissent dans le coin supérieur droit pendant la lecture.";
|
||||
"NoFreeZoom" = "Désactiver le geste de zoom libre";
|
||||
"NoFreeZoomDesc" = "Désactive les nouveaux gestes de zoom libre.";
|
||||
"AutoFullscreen" = "Lire les vidéos en plein écran";
|
||||
"AutoFullscreenDesc" = "Lance automatiquement les vidéos en mode plein écran.";
|
||||
"ExitFullscreen" = "Quitter le mode plein écran à la fin";
|
||||
"ExitFullscreenDesc" = "Quitte le mode plein écran à la fin de la lecture de la vidéo.";
|
||||
"NoDoubleTap2Seek" = "Désactiver le double tap pour chercher";
|
||||
"NoDoubleTap2SeekDesc" = "Désactive le geste de double tap pour chercher.";
|
||||
|
||||
"Tabbar" = "Barre d'onglets";
|
||||
"RemoveLabels" = "Supprimer les sous-titres";
|
||||
"RemoveLabelsDesc" = "Supprime les sous-titres des onglets.";
|
||||
"RemoveIndicators" = "Remove indicators";
|
||||
"RemoveIndicatorsDesc" = "Removes tab indicators.";
|
||||
"ReExplore" = "Remplacer l'onglet Shorts par l'onglet Explorer";
|
||||
"ReExploreDesc" = "Affiche l'onglet Explorer à la place de l'onglet Shorts comme dans les anciennes versions de YouTube.";
|
||||
"HideShortsTab" = "Masquer l'onglet Shorts";
|
||||
"HideShortsTabDesc" = "Masque l'onglet Shorts de la barre d'onglets";
|
||||
"HideSubscriptionsTab" = "Masquer l'onglet Abonnements";
|
||||
"HideSubscriptionsTabDesc" = "Masque l'onglet Abonnements de la barre d'onglets";
|
||||
"HideUploadButton" = "Masquer le bouton de téléchargement";
|
||||
"HideUploadButtonDesc" = "Masque le bouton de téléchargement de la barre d'onglets";
|
||||
"HideLibraryTab" = "Masquer l'onglet Bibliothèque";
|
||||
"HideLibraryTabDesc" = "Masque l'onglet Bibliothèque de la barre d'onglets";
|
||||
|
||||
"Shorts" = "Shorts";
|
||||
"HideShorts" = "Masquer les vidéos Shorts";
|
||||
"HideShortsDesc" = "Masque les vidéos Shorts de la page d'accueil, des recommandations, etc. (Non appliqué à l'historique de visionnage)";
|
||||
"ShortsProgress" = "Activer la barre de progression";
|
||||
"ShortsProgressDesc" = "Affiche la barre de progression dans l'overlay Shorts.";
|
||||
"ResumeShorts" = "Ne pas démarrer depuis l'onglet Shorts";
|
||||
"ResumeShortsDesc" = "Empêche de démarrer depuis les vidéos Shorts lors de l'ouverture de l'application, ce qui se produit si YouTube était fermé pendant la lecture des Shorts.";
|
||||
"HideShortsLogo" = "Masquer le logo Shorts";
|
||||
"HideShortsLogoDesc" = "Masque le logo Shorts dans le coin supérieur gauche.";
|
||||
"HideShortsSearch" = "Masquer le bouton de recherche";
|
||||
"HideShortsSearchDesc" = "Masque le bouton de recherche de l'overlay Shorts.";
|
||||
"HideShortsCamera" = "Masquer le bouton de l'appareil photo";
|
||||
"HideShortsCameraDesc" = "Masque le bouton de l'appareil photo de l'overlay Shorts.";
|
||||
"HideShortsMore" = "Masquer le bouton Plus (⋮)";
|
||||
"HideShortsMoreDesc" = "Masque le bouton Plus (⋮) de l'overlay Shorts. Il est également accessible en appuyant longuement sur l'écran.";
|
||||
"HideShortsSubscriptions" = "Masquer le bouton Abonnements";
|
||||
"HideShortsSubscriptionsDesc" = "Masque le bouton Abonnements qui apparaît lorsque les Shorts sont en pause.";
|
||||
"HideShortsLike" = "Masquer le bouton J'aime";
|
||||
"HideShortsLikeDesc" = "Masque le bouton J'aime de l'overlay Shorts.";
|
||||
"HideShortsDislike" = "Masquer le bouton Je n'aime pas";
|
||||
"HideShortsDislikeDesc" = "Masque le bouton Je n'aime pas de l'overlay Shorts.";
|
||||
"HideShortsComments" = "Masquer le bouton Commentaires";
|
||||
"HideShortsCommentsDesc" = "Masque le bouton Commentaires de l'overlay Shorts.";
|
||||
"HideShortsRemix" = "Masquer le bouton Remix";
|
||||
"HideShortsRemixDesc" = "Masque le bouton Remix de l'overlay Shorts.";
|
||||
"HideShortsShare" = "Masquer le bouton Partager";
|
||||
"HideShortsShareDesc" = "Masque le bouton Partager de l'overlay Shorts.";
|
||||
"HideShortsAvatars" = "Masquer les avatars des chaînes";
|
||||
"HideShortsAvatarsDesc" = "Masque la photo de profil dans le coin inférieur droit.";
|
||||
"HideShortsThanks" = "Masquer le bouton Superthanks";
|
||||
"HideShortsThanksDesc" = "Masque le bouton Superthanks (Don) de l'overlay Shorts.";
|
||||
"HideShortsChannelName" = "Masquer le nom de la chaîne";
|
||||
"HideShortsChannelNameDesc" = "Masque le nom de la chaîne et le bouton S'abonner de l'overlay Shorts.";
|
||||
"HideShortsDescription" = "Masquer la description";
|
||||
"HideShortsDescriptionDesc" = "Masque la description des Shorts sous le nom de la chaîne.";
|
||||
"HideShortsAudioTrack" = "Masquer la piste audio";
|
||||
"HideShortsAudioTrackDesc" = "Masque la piste audio sous la description des Shorts.";
|
||||
|
||||
"Other" = "Autre";
|
||||
"RemovePlayNext" = "Supprimer \"Placer en première position dans la file d'attente\"";
|
||||
"RemovePlayNextDesc" = "Supprime l'option \"Placer en première position dans la file d'attente\" du menu.";
|
||||
"NoContinueWatching" = "Supprimer \"Continuer à regarder\"";
|
||||
"NoContinueWatchingDesc" = "Supprime la section \"Continuer à regarder\" contenant les vidéos inachevées de la page d'accueil.";
|
||||
"NoSearchHistory" = "Masquer l'historique de recherche";
|
||||
"NoSearchHistoryDesc" = "Masque visuellement l'historique de recherche et les suggestions. Note : Votre historique de recherche sera toujours accessible dans vos autres clients YouTube.";
|
||||
"NoRelatedWatchNexts" = "Masquer toutes les vidéos sous le lecteur";
|
||||
"NoRelatedWatchNextsDesc" = "Masque toutes les vidéos sous le lecteur, ne laissant que les informations sur la vidéo et la section des commentaires.";
|
||||
"StickSortComments" = "Épingler l'en-tête des commentaires";\
|
||||
"StickSortCommentsDesc" = "Épingle l'en-tête de tri des commentaires (Meilleurs, Plus récents) pour qu'il ne disparaisse pas pendant le défilement.";
|
||||
"HideSortComments" = "Masquer l'en-tête des commentaires";
|
||||
"HideSortCommentsDesc" = "Masque l'en-tête de tri des commentaires (Meilleurs, Plus récents) pour qu'il n'apparaisse jamais.";
|
||||
"PlaylistOldMinibar" = "Ancienne barre latérale de lecture";
|
||||
"PlaylistOldMinibarDesc" = "Remplace le nouveau panneau de lecture flottant par l'ancien.";
|
||||
"DisableRTL" = "Désactiver le formatage de droite à gauche";
|
||||
"DisableRTLDesc" = "Affiche le texte de force en format de gauche à droite (LTR) pour les langues qui sont initialement affichées de droite à gauche (RTL).";
|
||||
|
||||
"Startup" = "Page de démarrage";
|
||||
"Home" = "Accueil";
|
||||
"Explore" = "Explorer";
|
||||
"ShortsTab" = "Shorts";
|
||||
"Subscriptions" = "Abonnements";
|
||||
"Library" = "Bibliothèque";
|
||||
"Warning" = "Avertissement";
|
||||
"TabIsHidden" = "L'onglet masqué ne peut pas être sélectionné comme page de démarrage";
|
||||
|
||||
"Version" = "Version";
|
||||
"About" = "À propos";
|
||||
"Credits" = "Crédits";
|
||||
"Developer" = "Développeur YTLite";
|
||||
"ChineseSimplified" = "Localisation chinoise (simplifiée)";
|
||||
"ChineseTraditional" = "Localisation chinoise (traditionnelle)";
|
||||
"French" = "Localisation française";
|
||||
"Spanish" = "Localisation espagnole";
|
||||
"Japanese" = "Localisation japonaise";
|
||||
"Advanced" = "Mode avancé";
|
||||
"AdvancedModeReminder" = "Voulez-vous activer le mode avancé pour YTLite ?\n\nCe mode offre plus de 50 options supplémentaires pour personnaliser et optimiser votre expérience YouTube. Vous pouvez l'activer/désactiver ultérieurement depuis Paramètres → %@ → %@ → %@.";
|
||||
"ResetSettings" = "Réinitialiser les paramètres YTLite";
|
||||
"ResetMessage" = "Cette option réinitialisera les paramètres YTLite par défaut et fermera YouTube.\n\nÊtes-vous sûr de vouloir continuer ?";
|
||||
"Yes" = "Oui";
|
||||
"No" = "Non";
|
||||
@@ -0,0 +1,172 @@
|
||||
"General" = "一般";
|
||||
"RemoveAds" = "広告を削除";
|
||||
"RemoveAdsDesc" = "アプリ内の広告を削除します";
|
||||
"BackgroundPlayback" = "バックグラウンド再生";
|
||||
"BackgroundPlaybackDesc" = "バックグラウンドでの再生を有効にします";
|
||||
|
||||
"Navbar" = "ナビゲーションバー";
|
||||
"RemoveCast" = "キャストボタンを非表示";
|
||||
"RemoveCastDesc" = "ナビゲーションバーからキャストボタンを非表示にします";
|
||||
"RemoveNotifications" = "通知ボタンを非表示";
|
||||
"RemoveNotificationsDesc" = "ナビゲーションバーから通知ボタンを非表示にします";
|
||||
"RemoveSearch" = "検索ボタンを非表示";
|
||||
"RemoveSearchDesc" = "ナビゲーションバーから検索ボタンを非表示にします";
|
||||
"RemoveVoiceSearch" = "音声検索ボタンを非表示";
|
||||
"RemoveVoiceSearchDesc" = "ナビゲーションバーから音声検索ボタンを非表示にします";
|
||||
"StickyNavbar" = "固定ナビゲーションバー";
|
||||
"StickyNavbarDesc" = "スクロールしてもナビゲーションバーが表示されたままになるように固定します";
|
||||
"NoSubbar" = "サブバーを非表示";
|
||||
"NoSubbarDesc" = "ナビゲーションバーの下にあるサブバー(全て,音楽,ライブなど)を非表示にします";
|
||||
"NoYTLogo" = "YouTubeロゴを削除";
|
||||
"NoYTLogoDesc" = "ナビゲーションバーのYouTubeロゴを削除します";
|
||||
|
||||
"Overlay" = "オーバーレイ";
|
||||
"HideAutoplay" = "自動再生スイッチを非表示";
|
||||
"HideAutoplayDesc" = "オーバーレイから自動再生スイッチを非表示にします";
|
||||
"HideSubs" = "字幕ボタンを非表示";
|
||||
"HideSubsDesc" = "オーバーレイから字幕ボタンを非表示にします";
|
||||
"NoHUDMsgs" = "HUDメッセージを非表示";
|
||||
"NoHUDMsgsDesc" = "プレイヤーからすべての機能メッセージを非表示にします。例:CCをオン/オフにする,ビデオループがオンになっているなど";
|
||||
"HidePrevNext" = "前へ,次へボタンを非表示";
|
||||
"HidePrevNextDesc" = "オーバーレイから前へ、次へのビデオボタンを非表示にします";
|
||||
"ReplacePrevNext" = "早送り、巻き戻しボタンに置き換え";
|
||||
"ReplacePrevNextDesc" = "オーバーレイの前へ,次へのビデオボタンを早送り,巻き戻しボタンに置き換えます";
|
||||
"NoDarkBg" = "暗い背景を削除";
|
||||
"NoDarkBgDesc" = "オーバーレイの暗い背景を削除します";
|
||||
"NoEndScreenCards" = "エンドスクリーンのホバーカードを非表示";
|
||||
"NoEndScreenCardsDesc" = "動画の終わりに表示されるエンドスクリーン(サムネイル)を非表示にします";
|
||||
"NoFullscreenActions" = "フルスクリーンアクションを無効化";
|
||||
"NoFullscreenActionsDesc" = "フルスクリーンモードでのアクションパネルを無効にします";
|
||||
"NoRelatedVids" = "オーバーレイの関連動画を非表示";
|
||||
"NoRelatedVidsDesc" = "スワイプアップでオーバーレイに表示される関連動画を非表示にします";
|
||||
"NoPromotionCards" = "有料プロモーションカードを非表示";
|
||||
"NoPromotionCardsDesc" = "プロモーションが含まれている動画の\"有料プロモーションを含む\"カードを非表示にします";
|
||||
"NoWatermarks" = "ウォーターマークを非表示";
|
||||
"NoWatermarksDesc" = "プレイヤーからチャンネルの透かしを非表示にします";
|
||||
|
||||
"Player" = "プレイヤー";
|
||||
"Miniplayer" = "ミニプレイヤーを有効化";
|
||||
"MiniplayerDesc" = "ミニプレイヤーに対応していない動画(子供向けの動画など)でもミニプレイヤーを有効にします";
|
||||
"PortraitFullscreen" = "縦画面フルスクリーンモード";
|
||||
"PortraitFullscreenDesc" = "縦画面フルスクリーンモードをサポートします";
|
||||
"CopyWithTimestamp" = "Copy timestamped links";
|
||||
"CopyWithTimestampDesc" = "Allows to copy timestamped link to the clipboard by pressing pause button.";
|
||||
"DisableAutoplay" = "自動再生を無効化";
|
||||
"DisableAutoplayDesc" = "アプリを開いた後に動画の自動再生を防止します";
|
||||
"NoContentWarning" = "コンテンツ警告をスキップ";
|
||||
"NoContentWarningDesc" = "不適切なコンテンツの警告メッセージをスキップします";
|
||||
"ClassicQuality" = "クラシックなビデオ品質";
|
||||
"ClassicQualityDesc" = "クラシックなビデオ品質選択メニューを復元します";
|
||||
"ExtraSpeedOptions" = "追加の再生速度オプション";
|
||||
"ExtraSpeedOptionsDesc" = "プレイヤーメニューに追加の再生速度オプションを追加します";
|
||||
"DontSnap2Chapter" = "チャプターへのスナップを無効化";
|
||||
"DontSnap2ChapterDesc" = "ダブルタップジェスチャーで次のエピソードへスキップするのを無効にします";
|
||||
"RedProgressBar" = "赤いプログレスバー";
|
||||
"RedProgressBarDesc" = "赤いプログレスバーバーを復元します";
|
||||
"NoHints" = "ヒントを無効化";
|
||||
"NoHintsDesc" = "プレイバック中に作者によるヒントを右上隅に表示するのを無効にします";
|
||||
"NoFreeZoom" = "フリーズームジェスチャーを無効化";
|
||||
"NoFreeZoomDesc" = "新しいフリーズームジェスチャーを無効にします";
|
||||
"AutoFullscreen" = "動画をフルスクリーンで再生";
|
||||
"AutoFullscreenDesc" = "動画を自動的にフルスクリーンモードで再生します";
|
||||
"ExitFullscreen" = "再生終了時にフルスクリーンモードを終了";
|
||||
"ExitFullscreenDesc" = "動画再生が終了したときにフルスクリーンモードを終了します";
|
||||
"NoDoubleTap2Seek" = "ダブルタップでのシークを無効化";
|
||||
"NoDoubleTap2SeekDesc" = "ダブルタップでのシークジェスチャーを無効にします";
|
||||
|
||||
"Tabbar" = "タブバー";
|
||||
"RemoveLabels" = "ラベルを削除";
|
||||
"RemoveLabelsDesc" = "タブラベルを削除します";
|
||||
"RemoveIndicators" = "Remove indicators";
|
||||
"RemoveIndicatorsDesc" = "Removes tab indicators.";
|
||||
"ReExplore" = "ショートタブを探索タブに置き換え";
|
||||
"ReExploreDesc" = "古いYouTubeバージョンのように、ショートタブの代わりに探索タブを表示します";
|
||||
"HideShortsTab" = "ショートタブを非表示";
|
||||
"HideShortsTabDesc" = "タブバーからショートタブを非表示にします";
|
||||
"HideSubscriptionsTab" = "登録チャンネルタブを非表示";
|
||||
"HideSubscriptionsTabDesc" = "タブバーから登録チャンネルタブを非表示にします";
|
||||
"HideUploadButton" = "アップロードボタンを非表示";
|
||||
"HideUploadButtonDesc" = "タブバーからアップロードボタンを非表示にします";
|
||||
"HideLibraryTab" = "ライブラリタブを非表示";
|
||||
"HideLibraryTabDesc" = "タブバーからライブラリタブを非表示にします";
|
||||
|
||||
"Shorts" = "ショート";
|
||||
"HideShorts" = "ショート動画を非表示";
|
||||
"HideShortsDesc" = "ホームページ、おすすめなどからショート動画を非表示にします(視聴履歴には適用されません)";
|
||||
"ShortsProgress" = "プログレスバーを有効化";
|
||||
"ShortsProgressDesc" = "ショートオーバーレイに進行バーを表示します";
|
||||
"ResumeShorts" = "ショートタブからの再開を防止";
|
||||
"ResumeShortsDesc" = "YouTubeがショートを視聴中にアプリを閉じた場合でも、ショート動画からの再開を防止します";
|
||||
"HideShortsLogo" = "ショートロゴを非表示";
|
||||
"HideShortsLogoDesc" = "左上隅のショートロゴを非表示にします";
|
||||
"HideShortsSearch" = "検索ボタンを非表示";
|
||||
"HideShortsSearchDesc" = "ショートオーバーレイから検索ボタンを非表示にします";
|
||||
"HideShortsCamera" = "カメラボタンを非表示";
|
||||
"HideShortsCameraDesc" = "ショートオーバーレイからカメラボタンを非表示にします";
|
||||
"HideShortsMore" = "その他(⋮)ボタンを非表示";
|
||||
"HideShortsMoreDesc" = "ショートオーバーレイからその他(⋮)ボタンを非表示にします。画面の長押しでアクセスも可能です";
|
||||
"HideShortsSubscriptions" = "サブスクリプションボタンを非表示";
|
||||
"HideShortsSubscriptionsDesc" = "ショートが一時停止されたときに表示されるサブスクリプションボタンを非表示にします";
|
||||
"HideShortsLike" = "いいねボタンを非表示";
|
||||
"HideShortsLikeDesc" = "ショートオーバーレイからいいねボタンを非表示にします";
|
||||
"HideShortsDislike" = "低評価ボタンを非表示";
|
||||
"HideShortsDislikeDesc" = "ショートオーバーレイから低評価ボタンを非表示にします";
|
||||
"HideShortsComments" = "コメントボタンを非表示";
|
||||
"HideShortsCommentsDesc" = "ショートオーバーレイからコメントボタンを非表示にします";
|
||||
"HideShortsRemix" = "リミックスボタンを非表示";
|
||||
"HideShortsRemixDesc" = "ショートオーバーレイからリミックスボタンを非表示にします";
|
||||
"HideShortsShare" = "共有ボタンを非表示";
|
||||
"HideShortsShareDesc" = "ショートオーバーレイから共有ボタンを非表示にします";
|
||||
"HideShortsAvatars" = "チャンネルのアバターを非表示";
|
||||
"HideShortsAvatarsDesc" = "右下隅のプロフィール画像を非表示にします";
|
||||
"HideShortsThanks" = "スーパーサンクスボタンを非表示";
|
||||
"HideShortsThanksDesc" = "ショートオーバーレイからスーパーサンクス(寄付)ボタンを非表示にします";
|
||||
"HideShortsChannelName" = "チャンネル名を非表示";
|
||||
"HideShortsChannelNameDesc" = "ショートオーバーレイからチャンネル名とサブスクリプションボタンを非表示にします";
|
||||
"HideShortsDescription" = "説明を非表示";
|
||||
"HideShortsDescriptionDesc" = "チャンネル名の下に表示されるショートの説明を非表示にします";
|
||||
"HideShortsAudioTrack" = "オーディオトラックを非表示";
|
||||
"HideShortsAudioTrackDesc" = "ショートの説明の下に表示されるオーディオトラックを非表示にします";
|
||||
|
||||
"Other" = "その他";
|
||||
"RemovePlayNext" = "\"次に再生\"を削除";
|
||||
"RemovePlayNextDesc" = "メニューから\"次に再生\"オプションを削除します";
|
||||
"NoContinueWatching" = "\"続きを見る\"を削除";
|
||||
"NoContinueWatchingDesc" = "ホームページに未完成の動画を含む\"続きを見る\"セクションを削除します";
|
||||
"NoSearchHistory" = "検索履歴を非表示";
|
||||
"NoSearchHistoryDesc" = "検索履歴とサジェストを視覚的に非表示にします。注意:検索履歴は他のYouTubeクライアントからアクセス可能です";
|
||||
"NoRelatedWatchNexts" = "プレイヤー下のすべての動画を非表示";
|
||||
"NoRelatedWatchNextsDesc" = "プレイヤー下に表示されるすべての動画を非表示にし、ビデオ情報とコメントセクションのみにします";
|
||||
"StickSortComments" = "コメントヘッダーを固定";
|
||||
"StickSortCommentsDesc" = "コメントのソートヘッダー(トップ,最新)をスクロールしても消えないように固定します";
|
||||
"HideSortComments" = "コメントヘッダーを非表示";
|
||||
"HideSortCommentsDesc" = "コメントのソートヘッダー(トップ,最新)を表示しないようにします";
|
||||
"PlaylistOldMinibar" = "古いプレイリストミニバー";
|
||||
"PlaylistOldMinibarDesc" = "新しいフローティングプレイリストパネルを古いものに置き換えます";
|
||||
"DisableRTL" = "RTLフォーマットを無効化";
|
||||
"DisableRTLDesc" = "RTLで表示される言語を左から右(LTR)の形式で表示するように強制します";
|
||||
|
||||
"Startup" = "スタートアップページ";
|
||||
"Home" = "ホーム";
|
||||
"Explore" = "探索";
|
||||
"ShortsTab" = "ショート";
|
||||
"Subscriptions" = "サブスクリプション";
|
||||
"Library" = "ライブラリ";
|
||||
"Warning" = "警告";
|
||||
"TabIsHidden" = "非表示のタブはスタートアップページとして選択できません";
|
||||
|
||||
"Version" = "バージョン";
|
||||
"About" = "About";
|
||||
"Credits" = "クレジット";
|
||||
"Developer" = "YTLiteの開発者";
|
||||
"ChineseSimplified" = "中国語(簡体字)翻訳";
|
||||
"ChineseTraditional" = "中国語(繁体字)翻訳";
|
||||
"French" = "フランス語翻訳";
|
||||
"Spanish" = "スペイン語翻訳";
|
||||
"Japanese" = "日本語翻訳";
|
||||
"Advanced" = "アドバンスモード";
|
||||
"AdvancedModeReminder" = "YTLiteでアドバンスモードを有効にしますか?\n\nこのモードでは50以上の追加オプションを使用してYouTubeのカスタマイズと最適化が可能です。後で、設定 → %@ → %@ → %@から変更できます";
|
||||
"ResetSettings" = "YTLiteの設定をリセット";
|
||||
"ResetMessage" = "このオプションを選択するとYTLiteの設定がデフォルトにリセットされ、YouTubeが終了します。\n\n続行してもよろしいですか?";
|
||||
"Yes" = "はい";
|
||||
"No" = "いいえ";
|
||||
@@ -10,7 +10,9 @@
|
||||
"RemoveNotifications" = "Скрыть «Уведомления»";
|
||||
"RemoveNotificationsDesc" = "Скрывает кнопку уведомлений с панели навигации.";
|
||||
"RemoveSearch" = "Скрыть «Поиск»";
|
||||
"RemoveSearchDesc" = "Скрвыает кнопку поиска с панели навигации.";
|
||||
"RemoveSearchDesc" = "Скрывает кнопку поиска с панели навигации.";
|
||||
"RemoveVoiceSearch" = "Скрыть «Голосовой поиск»";
|
||||
"RemoveVoiceSearchDesc" = "Скрывает кнопку голосового поиска с панели навигации.";
|
||||
"StickyNavbar" = "Закрепить панель навигации";
|
||||
"StickyNavbarDesc" = "Закрепляет панель навигации в верхней части экрана, запрещая ему скрываться во время скролла страницы вниз.";
|
||||
"NoSubbar" = "Скрыть наклейки";
|
||||
@@ -45,12 +47,18 @@
|
||||
"Player" = "Настройки плеера";
|
||||
"Miniplayer" = "Разрешить миниплеер";
|
||||
"MiniplayerDesc" = "Принудительно активирует миниплеер для видео, в которых изначально не был предназначен (например, видеоролики для детей).";
|
||||
"PortraitFullscreen" = "Портретный полноэкранный режим";
|
||||
"PortraitFullscreenDesc" = "Активирует поддержку портретного полноэкранного режима.";
|
||||
"CopyWithTimestamp" = "Ссылки с временной отметкой";
|
||||
"CopyWithTimestampDesc" = "Позволяет скопировать ссылку на видео с временной отметкой в буфер обмена нажатием на кнопку паузы.";
|
||||
"DisableAutoplay" = "Запретить автовоспроизведение";
|
||||
"DisableAutoplayDesc" = "Принудительно запрещает автовоспроизведение видео при его открытии.";
|
||||
"NoContentWarning" = "Пропускать предупреждения";
|
||||
"NoContentWarningDesc" = "Пропускает предупреждения, всплывающие перед воспроизведением некоторого контента.";
|
||||
"ClassicQuality" = "Классический выбор качества";
|
||||
"ClassicQualityDesc" = "Возвращает классическое меню выбора качества в меню плеера.";
|
||||
"ExtraSpeedOptions" = "Больше скоростей воспроизведения";
|
||||
"ExtraSpeedOptionsDesc" = "Добавляет больше опций скорости воспроизведения в выпадающее меню плеера.";
|
||||
"DontSnap2Chapter" = "Не перематывать эпизоды";
|
||||
"DontSnap2ChapterDesc" = "Отключает жест перемотки к следующему эпизоду двойным нажатием.";
|
||||
"RedProgressBar" = "Красный прогресс-бар";
|
||||
@@ -59,6 +67,8 @@
|
||||
"NoHintsDesc" = "Скрывает подсказки от авторов видео, появляющиеся в правом верхнем углу.";
|
||||
"NoFreeZoom" = "Отключить жесты для зума";
|
||||
"NoFreeZoomDesc" = "Отключает жесты приближения для нового зума.";
|
||||
"AutoFullscreen" = "Открывать в полноэкранном режиме";
|
||||
"AutoFullscreenDesc" = "Автоматически воспроизводит ролики в полноэкранном режиме.";
|
||||
"ExitFullscreen" = "Автовыход из полноэкранного режима";
|
||||
"ExitFullscreenDesc" = "Выходит из полноэкранного режима по окончанию воспроизведения.";
|
||||
"NoDoubleTap2Seek" = "Отключить перемотку двойным тапом";
|
||||
@@ -67,6 +77,8 @@
|
||||
"Tabbar" = "Панель вкладок";
|
||||
"RemoveLabels" = "Скрыть названия";
|
||||
"RemoveLabelsDesc" = "Скрывает названия вкладок.";
|
||||
"RemoveIndicators" = "Скрыть индикаторы";
|
||||
"RemoveIndicatorsDesc" = "Скрывает индикаторы вкладок.";
|
||||
"ReExplore" = "Вкладка «Навигация» вместо «Shorts»";
|
||||
"ReExploreDesc" = "Заменяет вкладку «Shorts» на привычную нам «Навигацию».";
|
||||
"HideShortsTab" = "Скрыть «Shorts»";
|
||||
@@ -116,6 +128,24 @@
|
||||
"HideShortsAudioTrack" = "Скрыть аудиодорожку";
|
||||
"HideShortsAudioTrackDesc" = "Скрывает информацию об аудиодорожке в нижней части плеера.";
|
||||
|
||||
"Other" = "Другие настройки";
|
||||
"RemovePlayNext" = "Убрать «Добавить в начало очереди»";
|
||||
"RemovePlayNextDesc" = "Убирает опцию «Добавить в начало очереди» из меню видео.";
|
||||
"NoContinueWatching" = "Отключить «Продолжить просмотр»";
|
||||
"NoContinueWatchingDesc" = "Удаляет блок «Продолжить просмотр» содержащий недосмотренные видео с Главной страницы.";
|
||||
"NoSearchHistory" = "Скрыть историю поиска";
|
||||
"NoSearchHistoryDesc" = "Визуально скрывает историю поиска и подсказок. Данная опция не отменяет трекинг вашей истории поиска.";
|
||||
"NoRelatedWatchNexts" = "Скрыть все видео под плеером";
|
||||
"NoRelatedWatchNextsDesc" = "Скрывает все видео под плеером, оставляя только информацию о видео и раздел комментариев.";
|
||||
"StickSortComments" = "Закрепить панель комментариев";
|
||||
"StickSortCommentsDesc" = "Закрепляет панель сортировки комментариев, чтобы она не терялись при прокрутке.";
|
||||
"HideSortComments" = "Скрыть панель комментариев";
|
||||
"HideSortCommentsDesc" = "Скрывает панель сортировки комментариев.";
|
||||
"PlaylistOldMinibar" = "Отображать старую панель плейлистов";
|
||||
"PlaylistOldMinibarDesc" = "Заменяет новую, плавающую панель плейлистов, на старую.";
|
||||
"DisableRTL" = "Запретить формат «справа налево»";
|
||||
"DisableRTLDesc" = "Принудительно отображает текст в формате слева направо для языков, изначально отображающихся в формате справа налево.";
|
||||
|
||||
"Startup" = "Начальная страница";
|
||||
"Home" = "Главная";
|
||||
"Explore" = "Навигация";
|
||||
@@ -129,7 +159,13 @@
|
||||
"About" = "О твике";
|
||||
"Credits" = "Авторы";
|
||||
"Developer" = "Разработчик твика";
|
||||
"ChineseSimplified" = "Китайская (упрощенная) локализация";
|
||||
"ChineseTraditional" = "Китайская (традиционная) локализация";
|
||||
"French" = "Французская локализация";
|
||||
"Spanish" = "Испанская локализация";
|
||||
"Japanese" = "Японская локализация";
|
||||
"Advanced" = "Расширенный режим";
|
||||
"AdvancedModeReminder" = "Хотите ли вы активировать расширенный режим настроек YTLite?\n\nДанный режим добавляет более 50 опций для тонкой настройки YouTube. Вы всегда сможете включить/отключить расширенный режим перейдя в Настройки → %@ → %@ → %@.";
|
||||
"ResetSettings" = "Сбросить настройки твика";
|
||||
"ResetMessage" = "Данное действие сбросит настройки YTLite к значениям по умолчанию и закроет YouTube.\n\nУверены, что хотите продолжить?";
|
||||
"Yes" = "Да";
|
||||
|
||||
+148
-112
@@ -1,136 +1,172 @@
|
||||
"General" = "常规";
|
||||
"RemoveAds" = "移除广告";
|
||||
"RemoveAdsDesc" = "删除程序内的广告";
|
||||
"RemoveAdsDesc" = "删除程序内的广告。";
|
||||
"BackgroundPlayback" = "后台播放";
|
||||
"BackgroundPlaybackDesc" = "启用后台播放";
|
||||
"BackgroundPlaybackDesc" = "启用后台播放。";
|
||||
|
||||
"Navbar" = "导航栏";
|
||||
"RemoveCast" = "隐藏投射按钮";
|
||||
"RemoveCastDesc" = "从导航栏中隐藏投射按钮";
|
||||
"RemoveCastDesc" = "从导航栏中隐藏投射按钮。";
|
||||
"RemoveNotifications" = "隐藏通知按钮";
|
||||
"RemoveNotificationsDesc" = "从导航栏中隐藏通知按钮";
|
||||
"RemoveNotificationsDesc" = "从导航栏中隐藏通知按钮。";
|
||||
"RemoveSearch" = "隐藏搜索按钮";
|
||||
"RemoveSearchDesc" = "从导航栏中隐藏搜索按钮";
|
||||
"StickyNavbar" = "Sticky Navigation bar";
|
||||
"StickyNavbarDesc" = "Pins the Navigation bar so that it remains visible when scrolling down.";
|
||||
"NoSubbar" = "Hide Subbar";
|
||||
"NoSubbarDesc" = "Hides Subbar (All, New to you, Live etc.) under the Navigation bar.";
|
||||
"NoYTLogo" = "Remove YouTube logo";
|
||||
"NoYTLogoDesc" = "Removes YouTube logo in the Navigation bar.";
|
||||
"RemoveSearchDesc" = "从导航栏中隐藏搜索按钮。";
|
||||
"RemoveVoiceSearch" = "隐藏语音搜索按钮";
|
||||
"RemoveVoiceSearchDesc" = "从导航栏中隐藏语音搜索按钮。";
|
||||
"StickyNavbar" = "固定导航栏";
|
||||
"StickyNavbarDesc" = "固定导航栏,使其在向下滚动时保持可见。";
|
||||
"NoSubbar" = "隐藏子栏";
|
||||
"NoSubbarDesc" = "隐藏导航栏下的子栏(全部、新内容、实时等)。";
|
||||
"NoYTLogo" = "删除 YouTube Logo";
|
||||
"NoYTLogoDesc" = "删除导航栏中的 YouTube Logo。";
|
||||
|
||||
"Overlay" = "Overlay";
|
||||
"HideAutoplay" = "Hide Autoplay switch";
|
||||
"HideAutoplayDesc" = "Hides Autoplay switch from the overlay.";
|
||||
"HideSubs" = "Hide Subtitles button";
|
||||
"HideSubsDesc" = "Hides Subtitles button from the overlay.";
|
||||
"NoHUDMsgs" = "Hide HUD Messages";
|
||||
"NoHUDMsgsDesc" = "Hides all feature messages from the player. Example: CC is turned on/off, Video loop is on, etc.";
|
||||
"HidePrevNext" = "Hide Previous and Next buttons";
|
||||
"HidePrevNextDesc" = "Hides Previous and Next video buttons from overlay.";
|
||||
"ReplacePrevNext" = "Fast forward and Rewind buttons";
|
||||
"ReplacePrevNextDesc" = "Replaces Previous and Next video buttons to Fast forward and Rewind buttons in overlay.";
|
||||
"NoDarkBg" = "Remove dark background";
|
||||
"NoDarkBgDesc" = "Removes overlay dark background.";
|
||||
"NoEndScreenCards" = "Hide End screens hover cards";
|
||||
"NoEndScreenCardsDesc" = "Hides End screens (thumbnails) at the end of videos.";
|
||||
"NoFullscreenActions" = "Disable fullscreen actions";
|
||||
"NoFullscreenActionsDesc" = "Disables actions panel in fullscreen mode.";
|
||||
"NoRelatedVids" = "No related videos in overlay";
|
||||
"NoRelatedVidsDesc" = "Removes related videos displayed in the overlay by swiping up.";
|
||||
"NoPromotionCards" = "Hide Paid Promotion cards";
|
||||
"NoPromotionCardsDesc" = "Hides \"Includes Paid Promotions\" card in promotions included videos.";
|
||||
"NoWatermarks" = "Hide Watermarks";
|
||||
"NoWatermarksDesc" = "Hides channel watermarks from the player.";
|
||||
"Overlay" = "播放界面";
|
||||
"HideAutoplay" = "隐藏自动播放开关";
|
||||
"HideAutoplayDesc" = "从播放界面隐藏自动播放开关。";
|
||||
"HideSubs" = "隐藏字幕按钮";
|
||||
"HideSubsDesc" = "从播放界面隐藏字幕按钮。";
|
||||
"NoHUDMsgs" = "隐藏屏显信息";
|
||||
"NoHUDMsgsDesc" = "隐藏播放界面的所有功能信息。示例:CC按钮打开/关闭、视频循环等。";
|
||||
"HidePrevNext" = "隐藏上一个和下一个按钮";
|
||||
"HidePrevNextDesc" = "从播放界面中隐藏上一个和下一个视频按钮。";
|
||||
"ReplacePrevNext" = "快进和快退按钮";
|
||||
"ReplacePrevNextDesc" = "将上一个和下一个视频按钮替换为快进和快退按钮。";
|
||||
"NoDarkBg" = "删除深色背景";
|
||||
"NoDarkBgDesc" = "删除播放界面的深色背景。";
|
||||
"NoEndScreenCards" = "隐藏片尾画面";
|
||||
"NoEndScreenCardsDesc" = "隐藏视频结尾处的片尾屏幕(缩略图)。";
|
||||
"NoFullscreenActions" = "禁用全屏操作";
|
||||
"NoFullscreenActionsDesc" = "在全屏模式下禁用操作面板。";
|
||||
"NoRelatedVids" = "没有相关视频";
|
||||
"NoRelatedVidsDesc" = "通过向上滑动删除播放界面中显示的相关视频。";
|
||||
"NoPromotionCards" = "隐藏付费";
|
||||
"NoPromotionCardsDesc" = "在付费视频中隐藏“付费内容”。";
|
||||
"NoWatermarks" = "隐藏水印";
|
||||
"NoWatermarksDesc" = "隐藏播放器的频道水印。";
|
||||
|
||||
"Player" = "Player";
|
||||
"Miniplayer" = "Enable mini player";
|
||||
"MiniplayerDesc" = "Enables the mini player for videos that were not originally designed for it, such as videos targeted for children.";
|
||||
"DisableAutoplay" = "Disable Autoplay videos";
|
||||
"DisableAutoplayDesc" = "Prevents video playback after opening.";
|
||||
"NoContentWarning" = "Skip content warning";
|
||||
"NoContentWarningDesc" = "Skips sensitive content warning message.";
|
||||
"ClassicQuality" = "Classic video quality";
|
||||
"ClassicQualityDesc" = "Brings back classic video quality selection menu.";
|
||||
"DontSnap2Chapter" = "Disable snap to chapter";
|
||||
"DontSnap2ChapterDesc" = "Disables skipping to the next episode by double-tap gesture.";
|
||||
"RedProgressBar" = "Red progress bar";
|
||||
"RedProgressBarDesc" = "Brings back red progress bar.";
|
||||
"NoHints" = "Disable hints";
|
||||
"NoHintsDesc" = "Disables hints by author which appears at the top-right corner during playback.";
|
||||
"NoFreeZoom" = "Disable free zoom gesture";
|
||||
"NoFreeZoomDesc" = "Disables new free zoom gestures.";
|
||||
"ExitFullscreen" = "Exit fullscreen mode on finish";
|
||||
"ExitFullscreenDesc" = "Exits fullscreen mode at the end of video playback.";
|
||||
"NoDoubleTap2Seek" = "Disable double tap to seek";
|
||||
"NoDoubleTap2SeekDesc" = "Disables double tap to seek gesture.";
|
||||
"Player" = "播放器";
|
||||
"Miniplayer" = "启用迷你播放器";
|
||||
"MiniplayerDesc" = "启用迷你播放器来播放最初不是为其设计的视频,例如针对儿童的视频。";
|
||||
"PortraitFullscreen" = "竖屏全屏模式";
|
||||
"PortraitFullscreenDesc" = "启用竖屏全屏模式支持。";
|
||||
"CopyWithTimestamp" = "Copy timestamped links";
|
||||
"CopyWithTimestampDesc" = "Allows to copy timestamped link to the clipboard by pressing pause button.";
|
||||
"DisableAutoplay" = "禁用自动播放视频";
|
||||
"DisableAutoplayDesc" = "打开后防止视频自动播放。";
|
||||
"NoContentWarning" = "跳过内容警告";
|
||||
"NoContentWarningDesc" = "跳过敏感内容警告消息。";
|
||||
"ClassicQuality" = "经典视频质量";
|
||||
"ClassicQualityDesc" = "加回经典的视频质量选择菜单。";
|
||||
"ExtraSpeedOptions" = "扩展速度选项";
|
||||
"ExtraSpeedOptionsDesc" = "在播放器菜单中添加更多视频播放速度的选项。";
|
||||
"DontSnap2Chapter" = "禁用双击跳转";
|
||||
"DontSnap2ChapterDesc" = "禁用通过双击手势跳到下一集。";
|
||||
"RedProgressBar" = "红色进度条";
|
||||
"RedProgressBarDesc" = "加回红色进度条。";
|
||||
"NoHints" = "禁用提示";
|
||||
"NoHintsDesc" = "禁用播放期间出现在右上角的作者提示。";
|
||||
"NoFreeZoom" = "禁用自由缩放手势";
|
||||
"NoFreeZoomDesc" = "禁用新的自由缩放手势。";
|
||||
"AutoFullscreen" = "全屏模式";
|
||||
"AutoFullscreenDesc" = "自动以全屏模式播放视频。";
|
||||
"ExitFullscreen" = "完成后退出全屏模式";
|
||||
"ExitFullscreenDesc" = "在视频播放结束时退出全屏模式。";
|
||||
"NoDoubleTap2Seek" = "禁用双击搜索";
|
||||
"NoDoubleTap2SeekDesc" = "禁用双击搜索手势。";
|
||||
|
||||
"Tabbar" = "选项卡栏";
|
||||
"RemoveLabels" = "移除标签";
|
||||
"RemoveLabelsDesc" = "删除选项卡标签";
|
||||
"ReExplore" = "Replace Shorts tab with Explore tab";
|
||||
"ReExploreDesc" = "Shows Explore tab instead of Shorts tab as on old YouTube versions.";
|
||||
"RemoveLabelsDesc" = "删除选项卡标签。";
|
||||
"RemoveIndicators" = "Remove indicators";
|
||||
"RemoveIndicatorsDesc" = "Removes tab indicators.";
|
||||
"ReExplore" = "“短视频”替换为“探索”";
|
||||
"ReExploreDesc" = "在旧版本 YouTube 中将“短视频”选项卡替换为“探索”。";
|
||||
"HideShortsTab" = "隐藏短视频";
|
||||
"HideShortsTabDesc" = "从选项卡栏中隐藏短视频";
|
||||
"HideShortsTabDesc" = "从选项卡栏中隐藏短视频。";
|
||||
"HideSubscriptionsTab" = "隐藏订阅内容";
|
||||
"HideSubscriptionsTabDesc" = "从选项卡栏中隐藏订阅内容";
|
||||
"HideSubscriptionsTabDesc" = "从选项卡栏中隐藏订阅内容。";
|
||||
"HideUploadButton" = "隐藏上传按钮";
|
||||
"HideUploadButtonDesc" = "从选项卡栏中隐藏上传按钮";
|
||||
"HideUploadButtonDesc" = "从选项卡栏中隐藏上传按钮。";
|
||||
"HideLibraryTab" = "隐藏媒体库";
|
||||
"HideLibraryTabDesc" = "从选项卡栏中隐藏媒体库";
|
||||
"HideLibraryTabDesc" = "从选项卡栏中隐藏媒体库。";
|
||||
|
||||
"Shorts" = "Shorts";
|
||||
"HideShorts" = "Hide Shorts videos";
|
||||
"HideShortsDesc" = "Hides Shorts videos from Homepage, Recommended etc. (Not applied to Watch history)";
|
||||
"ShortsProgress" = "Enable progress bar";
|
||||
"ShortsProgressDesc" = "Displays progress bar in the Shorts overlay.";
|
||||
"ResumeShorts" = "Don't start from Shorts tab";
|
||||
"ResumeShortsDesc" = "Prevents starting from Shorts videos at the opening app, which happens if YouTube was closed while watching Shorts.";
|
||||
"HideShortsLogo" = "Hide Shorts logo";
|
||||
"HideShortsLogoDesc" = "Hides Shorts logo in the top left corner.";
|
||||
"HideShortsSearch" = "Hide Search button";
|
||||
"HideShortsSearchDesc" = "Hides Search button from the Shorts overlay.";
|
||||
"HideShortsCamera" = "Hide Camera button";
|
||||
"HideShortsCameraDesc" = "Hides Camera button from the Shorts overlay.";
|
||||
"HideShortsMore" = "Hide More (⋮) button";
|
||||
"HideShortsMoreDesc" = "Hides More (⋮) button from the Shorts overlay. It's also accessible by long-pressing the screen.";
|
||||
"HideShortsSubscriptions" = "Hide Subscriptions button";
|
||||
"HideShortsSubscriptionsDesc" = "Hides Subscriptions button which appears when Shorts paused.";
|
||||
"HideShortsLike" = "Hide Like button";
|
||||
"HideShortsLikeDesc" = "Hides Like button from the Shorts overlay.";
|
||||
"HideShortsDislike" = "Hide Dislike button";
|
||||
"HideShortsDislikeDesc" = "Hides Dislike button from the Shorts overlay.";
|
||||
"HideShortsComments" = "Hide Comments button";
|
||||
"HideShortsCommentsDesc" = "Hides Comments button from the Shorts overlay.";
|
||||
"HideShortsRemix" = "Hide Remix button";
|
||||
"HideShortsRemixDesc" = "Hides Remix button from the Shorts overlay.";
|
||||
"HideShortsShare" = "Hide Share button";
|
||||
"HideShortsShareDesc" = "Hides Share button from the Shorts overlay.";
|
||||
"HideShortsAvatars" = "Hide channels avatar";
|
||||
"HideShortsAvatarsDesc" = "Hides profile picture in the bottom right corner.";
|
||||
"HideShortsThanks" = "Hide Superthanks button";
|
||||
"HideShortsThanksDesc" = "Hides Superthanks (Donate) button from the Shorts overlay.";
|
||||
"HideShortsChannelName" = "Hide Channel name";
|
||||
"HideShortsChannelNameDesc" = "Hides Channel name and Subscribe button from the Shorts overlay.";
|
||||
"HideShortsDescription" = "Hide Description";
|
||||
"HideShortsDescriptionDesc" = "Hides Shorts description under channel name.";
|
||||
"HideShortsAudioTrack" = "Hide AudioTrack";
|
||||
"HideShortsAudioTrackDesc" = "Hides AudioTrack under Shorts description.";
|
||||
"Shorts" = "短视频";
|
||||
"HideShorts" = "隐藏短视频";
|
||||
"HideShortsDesc" = "从首页、推荐等隐藏短视频(不适用于观看历史记录)。";
|
||||
"ShortsProgress" = "启用进度条";
|
||||
"ShortsProgressDesc" = "在短视频播放器中显示进度条。";
|
||||
"ResumeShorts" = "不要从短视频开始";
|
||||
"ResumeShortsDesc" = "防止在打开应用程序时首先启动短视频,如果在观看短视频时关闭,就会发生这种情况。";
|
||||
"HideShortsLogo" = "隐藏短视频Logo";
|
||||
"HideShortsLogoDesc" = "隐藏左上角的短视频Logo。";
|
||||
"HideShortsSearch" = "隐藏搜索按钮";
|
||||
"HideShortsSearchDesc" = "从短视频播放器中隐藏搜索按钮。";
|
||||
"HideShortsCamera" = "隐藏相机按钮";
|
||||
"HideShortsCameraDesc" = "从短视频播放器中隐藏相机按钮。";
|
||||
"HideShortsMore" = "隐藏更多 (⋮) 按钮";
|
||||
"HideShortsMoreDesc" = "从短视频播放器中隐藏更多 (⋮) 按钮 。也可以通过长按屏幕来访问它。";
|
||||
"HideShortsSubscriptions" = "隐藏订阅按钮";
|
||||
"HideShortsSubscriptionsDesc" = "隐藏短视频暂停时显示的订阅按钮。";
|
||||
"HideShortsLike" = "隐藏喜欢按钮";
|
||||
"HideShortsLikeDesc" = "从短视频播放器中隐藏喜欢按钮。";
|
||||
"HideShortsDislike" = "隐藏不喜欢按钮";
|
||||
"HideShortsDislikeDesc" = "从短视频播放器中隐藏不喜欢按钮。";
|
||||
"HideShortsComments" = "隐藏评论按钮";
|
||||
"HideShortsCommentsDesc" = "从短视频播放器中隐藏评论按钮。";
|
||||
"HideShortsRemix" = "隐藏混剪按钮";
|
||||
"HideShortsRemixDesc" = "从短视频播放器中隐藏混剪按钮。";
|
||||
"HideShortsShare" = "隐藏分享按钮";
|
||||
"HideShortsShareDesc" = "从短视频播放器中隐藏分享按钮。";
|
||||
"HideShortsAvatars" = "隐藏发布者头像";
|
||||
"HideShortsAvatarsDesc" = "隐藏右下角的发布者个人资料头像。";
|
||||
"HideShortsThanks" = "隐藏捐赠按钮";
|
||||
"HideShortsThanksDesc" = "从短视频播放器中隐藏捐赠按钮。";
|
||||
"HideShortsChannelName" = "隐藏发布者名称";
|
||||
"HideShortsChannelNameDesc" = "从短视频播放器中隐藏发布者名称和订阅按钮。";
|
||||
"HideShortsDescription" = "隐藏文案";
|
||||
"HideShortsDescriptionDesc" = "隐藏短视频下方的视频文案。";
|
||||
"HideShortsAudioTrack" = "隐藏音轨";
|
||||
"HideShortsAudioTrackDesc" = "隐藏短视频文案下方的音轨。";
|
||||
|
||||
"Startup" = "Startup page";
|
||||
"Home" = "Home";
|
||||
"Explore" = "Explore";
|
||||
"ShortsTab" = "Shorts";
|
||||
"Subscriptions" = "Subscriptions";
|
||||
"Library" = "Library";
|
||||
"Warning" = "Warning";
|
||||
"TabIsHidden" = "Hidden tab cannot be selected as startup page";
|
||||
"Other" = "其他";
|
||||
"RemovePlayNext" = "删除“播放队列中的下一个”";
|
||||
"RemovePlayNextDesc" = "从菜单中删除“播放队列中的下一个”选项。";
|
||||
"NoContinueWatching" = "删除“继续观看”";
|
||||
"NoContinueWatchingDesc" = "从首页中删除包含未完成视频的“继续观看”部分。";
|
||||
"NoSearchHistory" = "隐藏搜索历史记录";
|
||||
"NoSearchHistoryDesc" = "直观地隐藏搜索历史记录和建议。注意:搜索历史记录仍然可以在其他YouTube客户端中访问。";
|
||||
"NoRelatedWatchNexts" = "隐藏播放器下的所有视频";
|
||||
"NoRelatedWatchNextsDesc" = "隐藏播放器下方的所有视频,仅保留视频信息和评论部分。";
|
||||
"StickSortComments" = "固定评论排序";
|
||||
"StickSortCommentsDesc" = "固定评论顶部排序功能按钮(热门、时间),滚动时不会消失。";
|
||||
"HideSortComments" = "隐藏评论排序";
|
||||
"HideSortCommentsDesc" = "隐藏评论排序功能,使它永远不会出现。";
|
||||
"PlaylistOldMinibar" = "旧播放列表";
|
||||
"PlaylistOldMinibarDesc" = "将新的浮动播放列表面板替换为旧的浮动播放列表面板。";
|
||||
"DisableRTL" = "禁用 RTL 格式";
|
||||
"DisableRTLDesc" = "对于最初以从右到左 (RTL) 显示的语言,强制以从左到右 (LTR) 格式显示文本。";
|
||||
|
||||
"Startup" = "启动页";
|
||||
"Home" = "首页";
|
||||
"Explore" = "探索";
|
||||
"ShortsTab" = "短视频";
|
||||
"Subscriptions" = "订阅";
|
||||
"Library" = "媒体库";
|
||||
"Warning" = "警告";
|
||||
"TabIsHidden" = "无法选择隐藏选项卡作为启动页。";
|
||||
|
||||
"Version" = "版本";
|
||||
"About" = "关于";
|
||||
"Credits" = "信息";
|
||||
"Developer" = "YTLite开发者";
|
||||
"Advanced" = "Advanced mode";
|
||||
"ResetSettings" = "Reset YTLite settings";
|
||||
"ResetMessage" = "This option will reset YTLite settings to default and close YouTube.\n\nAre you sure you want to continue?";
|
||||
"Yes" = "Yes";
|
||||
"No" = "No";
|
||||
"ChineseSimplified" = "中文(简体)本地化";
|
||||
"ChineseTraditional" = "中文(繁体)本地化";
|
||||
"French" = "法语本地化";
|
||||
"Spanish" = "西班牙语本地化";
|
||||
"Japanese" = "日语本地化";
|
||||
"Advanced" = "高级模式";
|
||||
"AdvancedModeReminder" = "想为YTLite激活高级模式吗?\n\n此模式提供了50多个额外的选项来自定义和优化您的YouTube体验。\n可以稍后从设置中启用/禁用它 → %@ → %@ → %@。";
|
||||
"ResetSettings" = "重置YTLite设置";
|
||||
"ResetMessage" = "此选项会将YTLite设置重置为默认值并关闭YouTube。\n\n确定要继续吗?";
|
||||
"Yes" = "是";
|
||||
"No" = "不";
|
||||
|
||||
@@ -0,0 +1,172 @@
|
||||
"General" = "一般功能";
|
||||
"RemoveAds" = "移除廣告";
|
||||
"RemoveAdsDesc" = "移除應用程式內的廣告";
|
||||
"BackgroundPlayback" = "背景播放";
|
||||
"BackgroundPlaybackDesc" = "啟用背景播放";
|
||||
|
||||
"Navbar" = "頂部導覽列";
|
||||
"RemoveCast" = "隱藏投放按鈕";
|
||||
"RemoveCastDesc" = "從導覽列隱藏投放按鈕";
|
||||
"RemoveNotifications" = "隱藏通知按鈕";
|
||||
"RemoveNotificationsDesc" = "從導覽列隱藏通知按鈕";
|
||||
"RemoveSearch" = "隱藏搜尋按鈕";
|
||||
"RemoveSearchDesc" = "從導覽列隱藏搜尋按鈕";
|
||||
"RemoveVoiceSearch" = "隱藏語音搜尋按鈕";
|
||||
"RemoveVoiceSearchDesc" = "從導覽列隱藏語音搜尋按鈕";
|
||||
"StickyNavbar" = "固定導覽列";
|
||||
"StickyNavbarDesc" = "向下滑動時保持可見狀態";
|
||||
"NoSubbar" = "隱藏子導覽列";
|
||||
"NoSubbarDesc" = "隱藏導覽列下的子導覽列(全部、讓你耳目一新的影片、直播中...等)";
|
||||
"NoYTLogo" = "移除YouTube圖示";
|
||||
"NoYTLogoDesc" = "移除在左上方導覽列的YouTube圖示";
|
||||
|
||||
"Overlay" = "播放介面";
|
||||
"HideAutoplay" = "隱藏自動播放開關";
|
||||
"HideAutoplayDesc" = "隱藏播放器中的自動播放開關";
|
||||
"HideSubs" = "隱藏字幕按鈕";
|
||||
"HideSubsDesc" = "隱藏播放器中的字幕按鈕";
|
||||
"NoHUDMsgs" = "隱藏HUD訊息";
|
||||
"NoHUDMsgsDesc" = "隱藏播放器中的所有功能。例如:開啟/關閉 CC、開啟循環播放...等";
|
||||
"HidePrevNext" = "隱藏上一部和下一部按鈕";
|
||||
"HidePrevNextDesc" = "隱藏播放器中上一部和下一部影片按鈕";
|
||||
"ReplacePrevNext" = "取代快轉和倒轉按鈕";
|
||||
"ReplacePrevNextDesc" = "將播放器中的上一部和下一部影片按鈕取代為快轉和倒轉按鈕";
|
||||
"NoDarkBg" = "移除深色背景";
|
||||
"NoDarkBgDesc" = "移除播放器中的深色背景";
|
||||
"NoEndScreenCards" = "隱藏片尾懸停影片";
|
||||
"NoEndScreenCardsDesc" = "隱藏當影片結束時的懸停影片(縮圖)";
|
||||
"NoFullscreenActions" = "停用全螢幕操作";
|
||||
"NoFullscreenActionsDesc" = "在全螢幕模式下停用操作面板";
|
||||
"NoRelatedVids" = "隱藏相關影片";
|
||||
"NoRelatedVidsDesc" = "移除全螢幕模式向上滑動時所出現的相關影片";
|
||||
"NoPromotionCards" = "隱藏付費推廣";
|
||||
"NoPromotionCardsDesc" = "在付費推廣的影片中隱藏「付費推廣」";
|
||||
"NoWatermarks" = "隱藏浮水印";
|
||||
"NoWatermarksDesc" = "在播放器中隱藏頻道浮水印";
|
||||
|
||||
"Player" = "播放器";
|
||||
"Miniplayer" = "啟用迷你播放器";
|
||||
"MiniplayerDesc" = "對於原本不支援迷你播放器的影片(例如針對兒童的影片),啟用迷你播放器";
|
||||
"PortraitFullscreen" = "直向全螢幕模式";
|
||||
"PortraitFullscreenDesc" = "啟用直向全螢幕模式";
|
||||
"CopyWithTimestamp" = "Copy timestamped links";
|
||||
"CopyWithTimestampDesc" = "Allows to copy timestamped link to the clipboard by pressing pause button.";
|
||||
"DisableAutoplay" = "停用自動播放";
|
||||
"DisableAutoplayDesc" = "在打開應用程式後防止自動播放影片";
|
||||
"NoContentWarning" = "略過內容警告";
|
||||
"NoContentWarningDesc" = "略過敏感內容警告訊息";
|
||||
"ClassicQuality" = "舊版本影片畫質";
|
||||
"ClassicQualityDesc" = "恢復舊版本選擇影片畫質的方式";
|
||||
"ExtraSpeedOptions" = "額外的播放速度選項";
|
||||
"ExtraSpeedOptionsDesc" = "在播放速度選單中添加更多選項";
|
||||
"DontSnap2Chapter" = "停用跳轉到章節";
|
||||
"DontSnap2ChapterDesc" = "停用點兩下手勢跳轉到下一集";
|
||||
"RedProgressBar" = "紅色進度欄";
|
||||
"RedProgressBarDesc" = "恢復紅色的進度欄";
|
||||
"NoHints" = "停用提示";
|
||||
"NoHintsDesc" = "在播放過程中出現在右上角的作者提示";
|
||||
"NoFreeZoom" = "停用自由縮放手勢";
|
||||
"NoFreeZoomDesc" = "停用新的自由缩放手势";
|
||||
"AutoFullscreen" = "全螢幕模式";
|
||||
"AutoFullscreenDesc" = "自動以全螢幕模式播放影片";
|
||||
"ExitFullscreen" = "結束時退出全螢幕模式";
|
||||
"ExitFullscreenDesc" = "影片播放結束時退出全螢幕模式";
|
||||
"NoDoubleTap2Seek" = "停用點兩下快轉功能";
|
||||
"NoDoubleTap2SeekDesc" = "停用點兩下手勢進行快轉";
|
||||
|
||||
"Tabbar" = "下方標籤欄";
|
||||
"RemoveLabels" = "移除標籤文字";
|
||||
"RemoveLabelsDesc" = "移除標籤文字";
|
||||
"RemoveIndicators" = "Remove indicators";
|
||||
"RemoveIndicatorsDesc" = "Removes tab indicators.";
|
||||
"ReExplore" = "用探索取代Shorts分頁";
|
||||
"ReExploreDesc" = "如同舊版YouTube一樣顯示「探索」而非「Shorts」";
|
||||
"HideShortsTab" = "隱藏Shorts";
|
||||
"HideShortsTabDesc" = "從標籤欄中隱藏Shorts標籤";
|
||||
"HideSubscriptionsTab" = "隱藏訂閱內容";
|
||||
"HideSubscriptionsTabDesc" = "從標籤欄中隱藏訂閱內容";
|
||||
"HideUploadButton" = "隱藏+";
|
||||
"HideUploadButtonDesc" = "從標籤欄中隱藏+標籤";
|
||||
"HideLibraryTab" = "隱藏媒體庫";
|
||||
"HideLibraryTabDesc" = "從標籤欄中隱藏媒體庫標籤";
|
||||
|
||||
"Shorts" = "Shorts";
|
||||
"HideShorts" = "隱藏Shorts影片";
|
||||
"HideShortsDesc" = "從首頁、推薦...等,隱藏Shorts影片(不適用於觀看紀錄)";
|
||||
"ShortsProgress" = "啟用時間進度條";
|
||||
"ShortsProgressDesc" = "在Shorts底部顯示進度條";
|
||||
"ResumeShorts" = "不要從Shorts開始";
|
||||
"ResumeShortsDesc" = "防止重新開啟應用程式時從Shorts開始播放,如果在觀看Shorts時關閉,就會發生這種情況";
|
||||
"HideShortsLogo" = "隱藏Shorts圖示";
|
||||
"HideShortsLogoDesc" = "左上角Shorts圖示";
|
||||
"HideShortsSearch" = "隱藏搜尋按鈕";
|
||||
"HideShortsSearchDesc" = "從Shorts中隱藏搜尋按鈕";
|
||||
"HideShortsCamera" = "隱藏相機按鈕";
|
||||
"HideShortsCameraDesc" = "從Shorts中隱藏相機按鈕";
|
||||
"HideShortsMore" = "隱藏更多 (⋮) 按鈕";
|
||||
"HideShortsMoreDesc" = "從Shorts中隱藏更多 (⋮) 按鈕,也可以透過長按螢幕來完成";
|
||||
"HideShortsSubscriptions" = "隱藏訂閱按鈕";
|
||||
"HideShortsSubscriptionsDesc" = "隱藏當Shorts暫停時顯示的訂閱按鈕";
|
||||
"HideShortsLike" = "隱藏喜歡按鈕";
|
||||
"HideShortsLikeDesc" = "從Shorts中隱藏喜歡按鈕";
|
||||
"HideShortsDislike" = "隱藏不喜歡按鈕";
|
||||
"HideShortsDislikeDesc" = "從Shorts中隱藏不喜歡按鈕";
|
||||
"HideShortsComments" = "隱藏評論按鈕";
|
||||
"HideShortsCommentsDesc" = "從Shorts中隱藏評論按鈕";
|
||||
"HideShortsRemix" = "隱藏Remix按鈕";
|
||||
"HideShortsRemixDesc" = "從Shorts中隱藏Remix按鈕";
|
||||
"HideShortsShare" = "隱藏分享按鈕";
|
||||
"HideShortsShareDesc" = "從Shorts中隱藏分享按鈕";
|
||||
"HideShortsAvatars" = "隱藏頻道頭像";
|
||||
"HideShortsAvatarsDesc" = "隱藏右下角的頻道圖片";
|
||||
"HideShortsThanks" = "隱藏超級感謝按鈕";
|
||||
"HideShortsThanksDesc" = "從Shorts中隱藏超級感謝 (贊助) 按鈕";
|
||||
"HideShortsChannelName" = "隱藏頻道名稱";
|
||||
"HideShortsChannelNameDesc" = "從Shorts中隱藏頻道名稱和訂閱按鈕";
|
||||
"HideShortsDescription" = "隱藏描述";
|
||||
"HideShortsDescriptionDesc" = "隱藏頻道名稱下的Shorts描述";
|
||||
"HideShortsAudioTrack" = "隱藏原始音效";
|
||||
"HideShortsAudioTrackDesc" = "隱藏Shorts描述下的原始音效";
|
||||
|
||||
"Other" = "其它";
|
||||
"RemovePlayNext" = "移除「播放下一個」";
|
||||
"RemovePlayNextDesc" = "從選單移除「播放下一個」";
|
||||
"NoContinueWatching" = "移除「繼續觀看」";
|
||||
"NoContinueWatchingDesc" = "從首頁中移除包含未完成影片的「繼續觀看」部分";
|
||||
"NoSearchHistory" = "隱藏搜尋記錄";
|
||||
"NoSearchHistoryDesc" = "視覺上隱藏搜尋歷史紀錄和建議。注意:您的搜尋紀錄仍然可在其它 YouTube 客戶端中存取";
|
||||
"NoRelatedWatchNexts" = "隱藏播放器下的所有影片";
|
||||
"NoRelatedWatchNextsDesc" = "只留下影片資訊和留言區域";
|
||||
"StickSortComments" = "固定留言排序";
|
||||
"StickSortCommentsDesc" = "將留言排序(熱門、最新)功能固定,這樣在滾動時就不會消失";
|
||||
"HideSortComments" = "隱藏留言排序";
|
||||
"HideSortCommentsDesc" = "隱藏留言排序(熱門、最新)功能,將永不顯示";
|
||||
"PlaylistOldMinibar" = "舊版播放清單";
|
||||
"PlaylistOldMinibarDesc" = "將新版的浮動播放清單面板替換為舊版";
|
||||
"DisableRTL" = "停用RTL格式";
|
||||
"DisableRTLDesc" = "強制將初始顯示從右到左(RTL)格式的語言,改為從左到右(LTR)顯示";
|
||||
|
||||
"Startup" = "啟動頁面";
|
||||
"Home" = "首頁";
|
||||
"Explore" = "探索";
|
||||
"ShortsTab" = "Shorts";
|
||||
"Subscriptions" = "訂閱內容";
|
||||
"Library" = "媒體庫";
|
||||
"Warning" = "警告";
|
||||
"TabIsHidden" = "無法將隱藏的標籤選為啟動頁面";
|
||||
|
||||
"Version" = "版本";
|
||||
"About" = "關於";
|
||||
"Credits" = "貢獻";
|
||||
"Developer" = "YTLite開發者";
|
||||
"ChineseSimplified" = "簡體中文在地化";
|
||||
"ChineseTraditional" = "繁體中文在地化";
|
||||
"French" = "法文在地化";
|
||||
"Spanish" = "西班牙文在地化";
|
||||
"Japanese" = "日本語本地化";
|
||||
"Advanced" = "進階模式";
|
||||
"AdvancedModeReminder" = "您是否想啟用YTLite的進階模式?\n\n這個模式提供了50多個額外的選項,可以自訂義和優化您的YouTube使用體驗。您稍後可以在「設定」中 → %@ → %@ → %@ 啟用或停用它。";
|
||||
"ResetSettings" = "重置YTLite設定";
|
||||
"ResetMessage" = "這個選項會將YTLite重置為預設值,並關閉Youtube\n\n您確定要繼續嗎?";
|
||||
"Yes" = "是";
|
||||
"No" = "否";
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Reference in New Issue
Block a user