more options and improvements

This commit is contained in:
dayanch96
2023-07-15 20:11:03 +03:00
parent 887ba2fdbe
commit 5862a73ac9
12 changed files with 162 additions and 43 deletions
+1 -1
View File
@@ -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
View File
@@ -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]];
+6
View File
@@ -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;
+62 -28
View File
@@ -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" = "Главная";
@@ -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.