more options and improvements
This commit is contained in:
@@ -5,7 +5,7 @@ endif
|
||||
DEBUG=0
|
||||
FINALPACKAGE=1
|
||||
ARCHS = arm64
|
||||
PACKAGE_VERSION = 2.2.1
|
||||
PACKAGE_VERSION = 2.3
|
||||
TARGET := iphone:clang:latest:11.0
|
||||
|
||||
include $(THEOS)/makefiles/common.mk
|
||||
|
||||
+9
-2
@@ -18,7 +18,7 @@ static void resetYTLiteSettings() {
|
||||
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];
|
||||
@@ -178,6 +178,7 @@ 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(@"DisableAutoplay"), LOC(@"DisableAutoplayDesc"), @"disableAutoplay", &kDisableAutoplay, selfObject),
|
||||
createSwitchItem(LOC(@"NoContentWarning"), LOC(@"NoContentWarningDesc"), @"noContentWarning", &kNoContentWarning, selfObject),
|
||||
createSwitchItem(LOC(@"ClassicQuality"), LOC(@"ClassicQualityDesc"), @"classicQuality", &kClassicQuality, selfObject),
|
||||
@@ -261,7 +262,13 @@ static YTSettingsSectionItem *createSwitchItem(NSString *title, NSString *titleD
|
||||
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(@"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]];
|
||||
|
||||
@@ -87,6 +87,12 @@ 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;
|
||||
|
||||
@@ -30,16 +30,13 @@
|
||||
|
||||
%hook YTIElementRenderer
|
||||
- (NSData *)elementData {
|
||||
if (self.hasCompatibilityOptions && self.compatibilityOptions.hasAdLoggingData && kNoAds)
|
||||
return nil;
|
||||
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", @"square_image_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)
|
||||
|| ([description containsString:@"inline_shorts"] && kHideShorts))
|
||||
if (([adDescriptions containsObject:description] && kNoAds) || ([description containsString:@"inline_shorts"] && kHideShorts)) {
|
||||
return [NSData data];
|
||||
return %orig;
|
||||
} return %orig;
|
||||
}
|
||||
%end
|
||||
|
||||
@@ -104,40 +101,53 @@
|
||||
- (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;
|
||||
if (kNoVoiceSearchButton && self.subviews.count >= 4 && [self.subviews[2].accessibilityIdentifier isEqualToString:@"id.settings.overflow.button"]) self.subviews[3].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;
|
||||
if (firstSubview.subviews.count > 1) {
|
||||
UIView *subview1 = firstSubview.subviews[1];
|
||||
[subview1 setValue:@(1) forKey:@"hidden"];
|
||||
for (UIView *subview in firstSubview.subviews) {
|
||||
if ([NSStringFromClass([subview class]) isEqualToString:@"UIView"]) {
|
||||
[subview setValue:@(1) forKey:@"hidden"];
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
%end
|
||||
|
||||
%hook YTSearchBarView
|
||||
- (void)layoutSubviews {
|
||||
%orig;
|
||||
|
||||
if (kNoVoiceSearchButton && ![self.superview isKindOfClass:objc_lookUpClass("YTNavigationBarTitleView")]) {
|
||||
CGRect frame = self.frame;
|
||||
frame.size.width += 20;
|
||||
self.frame = frame;
|
||||
}
|
||||
// Remove Videos Section Under Player
|
||||
%hook YTWatchNextResultsViewController
|
||||
- (void)setVisibleSections:(NSInteger)arg1 {
|
||||
arg1 = (kNoRelatedWatchNexts) ? 1 : arg1;
|
||||
%orig(arg1);
|
||||
}
|
||||
%end
|
||||
|
||||
@@ -183,19 +193,25 @@
|
||||
|
||||
%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
|
||||
@@ -685,6 +701,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];
|
||||
@@ -749,6 +771,12 @@ static void reloadPrefs() {
|
||||
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;
|
||||
@@ -814,6 +842,12 @@ static void reloadPrefs() {
|
||||
@"removeLibrary" : @(kRemoveLibrary),
|
||||
@"removePlayNext" : @(kRemovePlayNext),
|
||||
@"noContinueWatching" : @(kNoContinueWatching),
|
||||
@"noSearchHistory" : @(kNoSearchHistory),
|
||||
@"noRelatedWatchNexts" : @(kNoRelatedWatchNexts),
|
||||
@"stickSortComments" : @(kStickSortComments),
|
||||
@"hideSortComments" : @(kHideSortComments),
|
||||
@"playlistOldMinibar" : @(kPlaylistOldMinibar),
|
||||
@"disableRTL" : @(kDisableRTL),
|
||||
@"pivotIndex" : @(kPivotIndex),
|
||||
@"advancedMode" : @(kAdvancedMode),
|
||||
@"advancedModeReminder" : @(kAdvancedModeReminder)
|
||||
|
||||
@@ -129,6 +129,18 @@
|
||||
"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";
|
||||
|
||||
@@ -129,6 +129,18 @@
|
||||
"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" = "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" = "Página de inicio";
|
||||
"Home" = "Inicio";
|
||||
|
||||
@@ -131,6 +131,18 @@
|
||||
"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" = "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" = "Page de démarrage";
|
||||
"Home" = "Accueil";
|
||||
|
||||
@@ -65,7 +65,7 @@
|
||||
"NoHintsDesc" = "Скрывает подсказки от авторов видео, появляющиеся в правом верхнем углу.";
|
||||
"NoFreeZoom" = "Отключить жесты для зума";
|
||||
"NoFreeZoomDesc" = "Отключает жесты приближения для нового зума.";
|
||||
"AutoFullscreen" = "Воспроизводить в полноэкранном режиме";
|
||||
"AutoFullscreen" = "Открывать в полноэкранном режиме";
|
||||
"AutoFullscreenDesc" = "Автоматически воспроизводит ролики в полноэкранном режиме.";
|
||||
"ExitFullscreen" = "Автовыход из полноэкранного режима";
|
||||
"ExitFullscreenDesc" = "Выходит из полноэкранного режима по окончанию воспроизведения.";
|
||||
@@ -129,6 +129,18 @@
|
||||
"RemovePlayNextDesc" = "Убирает опцию «Добавить в начало очереди» из меню видео.";
|
||||
"NoContinueWatching" = "Отключить «Продолжить просмотр»";
|
||||
"NoContinueWatchingDesc" = "Удаляет блок «Продолжить просмотр» содержащий недосмотренные видео с Главной страницы.";
|
||||
"NoSearchHistory" = "Скрыть историю поиска";
|
||||
"NoSearchHistoryDesc" = "Визуально скрывает историю поиска и подсказок. Данная опция не отменяет трекинг вашей истории поиска.";
|
||||
"NoRelatedWatchNexts" = "Скрыть все видео под плеером";
|
||||
"NoRelatedWatchNextsDesc" = "Скрывает все видео под плеером, оставляя только информацию о видео и раздел комментариев.";
|
||||
"StickSortComments" = "Закрепить панель комментариев";
|
||||
"StickSortCommentsDesc" = "Закрепляет панель сортировки комментариев, чтобы она не терялись при прокрутке.";
|
||||
"HideSortComments" = "Скрыть панель комментариев";
|
||||
"HideSortCommentsDesc" = "Скрывает панель сортировки комментариев.";
|
||||
"PlaylistOldMinibar" = "Отображать старую панель плейлистов";
|
||||
"PlaylistOldMinibarDesc" = "Заменяет новую, плавающую панель плейлистов, на старую.";
|
||||
"DisableRTL" = "Запретить формат «справа налево»";
|
||||
"DisableRTLDesc" = "Принудительно отображает текст в формате слева направо для языков, изначально отображающихся в формате справа налево.";
|
||||
|
||||
"Startup" = "Начальная страница";
|
||||
"Home" = "Главная";
|
||||
|
||||
+23
-11
@@ -47,8 +47,8 @@
|
||||
"Player" = "播放器";
|
||||
"Miniplayer" = "启用迷你播放器";
|
||||
"MiniplayerDesc" = "启用迷你播放器来播放最初不是为其设计的视频,例如针对儿童的视频。";
|
||||
"PortraitFullscreen" = "Portrait fullscreen mode";
|
||||
"PortraitFullscreenDesc" = "Enables portrait fullscreen mode support.";
|
||||
"PortraitFullscreen" = "竖屏全屏模式";
|
||||
"PortraitFullscreenDesc" = "启用竖屏全屏模式支持。";
|
||||
"DisableAutoplay" = "禁用自动播放视频";
|
||||
"DisableAutoplayDesc" = "打开后防止视频自动播放。";
|
||||
"NoContentWarning" = "跳过内容警告";
|
||||
@@ -119,16 +119,28 @@
|
||||
"HideShortsThanksDesc" = "从短视频播放器中隐藏捐赠按钮。";
|
||||
"HideShortsChannelName" = "隐藏发布者名称";
|
||||
"HideShortsChannelNameDesc" = "从短视频播放器中隐藏发布者名称和订阅按钮。";
|
||||
"HideShortsDescription" = "隐藏说明";
|
||||
"HideShortsDescriptionDesc" = "在频道名称下隐藏短视频描述。";
|
||||
"HideShortsAudioTrack" = "隐藏音频音轨";
|
||||
"HideShortsAudioTrackDesc" = "从短视频描述下隐藏音频音轨。";
|
||||
"HideShortsDescription" = "隐藏文案";
|
||||
"HideShortsDescriptionDesc" = "隐藏短视频下方的视频文案。";
|
||||
"HideShortsAudioTrack" = "隐藏音轨";
|
||||
"HideShortsAudioTrackDesc" = "隐藏短视频文案下方的音轨。";
|
||||
|
||||
"Other" = "其他";
|
||||
"RemovePlayNext" = "删除“播放队列中的下一个”";
|
||||
"RemovePlayNextDesc" = "从菜单中删除“播放队列中的下一个”选项。";
|
||||
"NoContinueWatching" = "删除“继续观看”";
|
||||
"NoContinueWatchingDesc" = "从首页中删除包含未完成视频的“继续观看”部分。";
|
||||
"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" = "启动页";
|
||||
"Home" = "首页";
|
||||
@@ -143,12 +155,12 @@
|
||||
"About" = "关于";
|
||||
"Credits" = "信息";
|
||||
"Developer" = "YTLite开发者";
|
||||
"ChineseSimplified" = "Chinese (Simplified) localization";
|
||||
"ChineseTraditional" = "Chinese (Traditional) localization";
|
||||
"French" = "French localization";
|
||||
"Spanish" = "Spanish localization";
|
||||
"ChineseSimplified" = "中文(简体)本地化";
|
||||
"ChineseTraditional" = "中文(繁体)本地化";
|
||||
"French" = "法语本地化";
|
||||
"Spanish" = "西班牙语本地化";
|
||||
"Advanced" = "高级模式";
|
||||
"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 → %@ → %@ → %@.";
|
||||
"AdvancedModeReminder" = "想为YTLite激活高级模式吗?\n\n此模式提供了50多个额外的选项来自定义和优化您的YouTube体验。\n可以稍后从设置中启用/禁用它 → %@ → %@ → %@。";
|
||||
"ResetSettings" = "重置YTLite设置";
|
||||
"ResetMessage" = "此选项会将YTLite设置重置为默认值并关闭YouTube。\n\n确定要继续吗?";
|
||||
"Yes" = "是";
|
||||
|
||||
@@ -129,6 +129,18 @@
|
||||
"RemovePlayNextDesc" = "從選單移除「播放下一個」";
|
||||
"NoContinueWatching" = "移除「繼續觀看」";
|
||||
"NoContinueWatchingDesc" = "從首頁中移除包含未完成影片的「繼續觀看」部分";
|
||||
"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" = "啟動頁面";
|
||||
"Home" = "首頁";
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Reference in New Issue
Block a user