mirror of
https://github.com/SoPat712/YTLitePlus.git
synced 2025-08-21 18:48:45 -04:00
updated YTLite to 2.1
This commit is contained in:
@@ -5,7 +5,7 @@ endif
|
|||||||
DEBUG=0
|
DEBUG=0
|
||||||
FINALPACKAGE=1
|
FINALPACKAGE=1
|
||||||
ARCHS = arm64
|
ARCHS = arm64
|
||||||
PACKAGE_VERSION = 2.0
|
PACKAGE_VERSION = 2.1
|
||||||
TARGET := iphone:clang:latest:11.0
|
TARGET := iphone:clang:latest:11.0
|
||||||
|
|
||||||
include $(THEOS)/makefiles/common.mk
|
include $(THEOS)/makefiles/common.mk
|
||||||
|
@@ -119,7 +119,8 @@ static YTSettingsSectionItem *createSwitchItem(NSString *title, NSString *titleD
|
|||||||
NSArray <YTSettingsSectionItem *> *rows = @[
|
NSArray <YTSettingsSectionItem *> *rows = @[
|
||||||
createSwitchItem(LOC(@"RemoveCast"), LOC(@"RemoveCastDesc"), @"noCast", &kNoCast, selfObject),
|
createSwitchItem(LOC(@"RemoveCast"), LOC(@"RemoveCastDesc"), @"noCast", &kNoCast, selfObject),
|
||||||
createSwitchItem(LOC(@"RemoveNotifications"), LOC(@"RemoveNotificationsDesc"), @"removeNotifsButton", &kNoNotifsButton, 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) {
|
if (kAdvancedMode) {
|
||||||
@@ -153,7 +154,7 @@ static YTSettingsSectionItem *createSwitchItem(NSString *title, NSString *titleD
|
|||||||
createSwitchItem(LOC(@"HidePrevNext"), LOC(@"HidePrevNextDesc"), @"hidePrevNext", &kHidePrevNext, selfObject),
|
createSwitchItem(LOC(@"HidePrevNext"), LOC(@"HidePrevNextDesc"), @"hidePrevNext", &kHidePrevNext, selfObject),
|
||||||
createSwitchItem(LOC(@"ReplacePrevNext"), LOC(@"ReplacePrevNextDesc"), @"replacePrevNext", &kReplacePrevNext, selfObject),
|
createSwitchItem(LOC(@"ReplacePrevNext"), LOC(@"ReplacePrevNextDesc"), @"replacePrevNext", &kReplacePrevNext, selfObject),
|
||||||
createSwitchItem(LOC(@"NoDarkBg"), LOC(@"NoDarkBgDesc"), @"noDarkBg", &kNoDarkBg, 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(@"NoFullscreenActions"), LOC(@"NoFullscreenActionsDesc"), @"noFullscreenActions", &kNoFullscreenActions, selfObject),
|
||||||
createSwitchItem(LOC(@"NoRelatedVids"), LOC(@"NoRelatedVidsDesc"), @"noRelatedVids", &kNoRelatedVids, selfObject),
|
createSwitchItem(LOC(@"NoRelatedVids"), LOC(@"NoRelatedVidsDesc"), @"noRelatedVids", &kNoRelatedVids, selfObject),
|
||||||
createSwitchItem(LOC(@"NoPromotionCards"), LOC(@"NoPromotionCardsDesc"), @"noPromotionCards", &kNoPromotionCards, selfObject),
|
createSwitchItem(LOC(@"NoPromotionCards"), LOC(@"NoPromotionCardsDesc"), @"noPromotionCards", &kNoPromotionCards, selfObject),
|
||||||
@@ -246,6 +247,23 @@ static YTSettingsSectionItem *createSwitchItem(NSString *title, NSString *titleD
|
|||||||
[sectionItems addObject:tabbar];
|
[sectionItems addObject:tabbar];
|
||||||
|
|
||||||
if (kAdvancedMode) {
|
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)
|
||||||
|
];
|
||||||
|
|
||||||
|
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];
|
[sectionItems addObject:space];
|
||||||
|
|
||||||
YTSettingsSectionItem *startup = [YTSettingsSectionItemClass itemWithTitle:LOC(@"Startup")
|
YTSettingsSectionItem *startup = [YTSettingsSectionItemClass itemWithTitle:LOC(@"Startup")
|
||||||
|
@@ -17,6 +17,7 @@
|
|||||||
#import "../YouTubeHeader/YTSettingsSectionItemManager.h"
|
#import "../YouTubeHeader/YTSettingsSectionItemManager.h"
|
||||||
#import "../YouTubeHeader/YTSettingsPickerViewController.h"
|
#import "../YouTubeHeader/YTSettingsPickerViewController.h"
|
||||||
#import "../YouTubeHeader/YTUIUtils.h"
|
#import "../YouTubeHeader/YTUIUtils.h"
|
||||||
|
#import "../YouTubeHeader/YTIMenuConditionalServiceItemRenderer.h"
|
||||||
|
|
||||||
extern NSBundle *YTLiteBundle();
|
extern NSBundle *YTLiteBundle();
|
||||||
|
|
||||||
@@ -30,6 +31,7 @@ BOOL kBackgroundPlayback;
|
|||||||
BOOL kNoCast;
|
BOOL kNoCast;
|
||||||
BOOL kNoNotifsButton;
|
BOOL kNoNotifsButton;
|
||||||
BOOL kNoSearchButton;
|
BOOL kNoSearchButton;
|
||||||
|
BOOL kNoVoiceSearchButton;
|
||||||
BOOL kStickyNavbar;
|
BOOL kStickyNavbar;
|
||||||
BOOL kNoSubbar;
|
BOOL kNoSubbar;
|
||||||
BOOL kNoYTLogo;
|
BOOL kNoYTLogo;
|
||||||
@@ -78,6 +80,8 @@ BOOL kRemoveShorts;
|
|||||||
BOOL kRemoveSubscriptions;
|
BOOL kRemoveSubscriptions;
|
||||||
BOOL kRemoveUploads;
|
BOOL kRemoveUploads;
|
||||||
BOOL kRemoveLibrary;
|
BOOL kRemoveLibrary;
|
||||||
|
BOOL kRemovePlayNext;
|
||||||
|
BOOL kNoContinueWatching;
|
||||||
BOOL kAdvancedMode;
|
BOOL kAdvancedMode;
|
||||||
int kPivotIndex;
|
int kPivotIndex;
|
||||||
|
|
||||||
@@ -106,6 +110,9 @@ int kPivotIndex;
|
|||||||
@interface YTNavigationBarTitleView : UIView
|
@interface YTNavigationBarTitleView : UIView
|
||||||
@end
|
@end
|
||||||
|
|
||||||
|
@interface YTChipCloudCell : UICollectionViewCell
|
||||||
|
@end
|
||||||
|
|
||||||
@interface YTSegmentableInlinePlayerBarView
|
@interface YTSegmentableInlinePlayerBarView
|
||||||
@property (nonatomic, assign, readwrite) BOOL enableSnapToChapter;
|
@property (nonatomic, assign, readwrite) BOOL enableSnapToChapter;
|
||||||
@end
|
@end
|
||||||
@@ -125,7 +132,7 @@ int kPivotIndex;
|
|||||||
@end
|
@end
|
||||||
|
|
||||||
@interface YTAsyncCollectionView : UICollectionView
|
@interface YTAsyncCollectionView : UICollectionView
|
||||||
- (void)removeShortsCellAtIndexPath:(NSIndexPath *)indexPath;
|
- (void)removeCellsAtIndexPath:(NSIndexPath *)indexPath;
|
||||||
@end
|
@end
|
||||||
|
|
||||||
@interface YTReelWatchPlaybackOverlayView : UIView
|
@interface YTReelWatchPlaybackOverlayView : UIView
|
||||||
|
@@ -28,17 +28,19 @@
|
|||||||
- (void)decorateContext:(id)context { if (!kNoAds) %orig; }
|
- (void)decorateContext:(id)context { if (!kNoAds) %orig; }
|
||||||
%end
|
%end
|
||||||
|
|
||||||
BOOL isAd(YTIElementRenderer *self) {
|
%hook YTIElementRenderer
|
||||||
if (self == nil) return NO;
|
- (NSData *)elementData {
|
||||||
if (self.hasCompatibilityOptions && self.compatibilityOptions.hasAdLoggingData) return YES;
|
if (self.hasCompatibilityOptions && self.compatibilityOptions.hasAdLoggingData)
|
||||||
|
return nil;
|
||||||
NSString *description = [self description];
|
NSString *description = [self description];
|
||||||
if (([description containsString:@"brand_promo"]
|
if (([description containsString:@"brand_promo"]
|
||||||
|| [description containsString:@"product_carousel"]
|
|| [description containsString:@"product_carousel"]
|
||||||
|| [description containsString:@"product_engagement_panel"]
|
|| [description containsString:@"product_engagement_panel"]
|
||||||
|| [description containsString:@"product_item"]) && kNoAds)
|
|| [description containsString:@"product_item"]) && kNoAds)
|
||||||
return YES;
|
return [NSData data];
|
||||||
return NO;
|
return %orig;
|
||||||
}
|
}
|
||||||
|
%end
|
||||||
|
|
||||||
%hook YTSectionListViewController
|
%hook YTSectionListViewController
|
||||||
- (void)loadWithModel:(YTISectionListRenderer *)model {
|
- (void)loadWithModel:(YTISectionListRenderer *)model {
|
||||||
@@ -47,7 +49,7 @@ BOOL isAd(YTIElementRenderer *self) {
|
|||||||
NSIndexSet *removeIndexes = [contentsArray indexesOfObjectsPassingTest:^BOOL(YTISectionListSupportedRenderers *renderers, NSUInteger idx, BOOL *stop) {
|
NSIndexSet *removeIndexes = [contentsArray indexesOfObjectsPassingTest:^BOOL(YTISectionListSupportedRenderers *renderers, NSUInteger idx, BOOL *stop) {
|
||||||
YTIItemSectionRenderer *sectionRenderer = renderers.itemSectionRenderer;
|
YTIItemSectionRenderer *sectionRenderer = renderers.itemSectionRenderer;
|
||||||
YTIItemSectionSupportedRenderers *firstObject = [sectionRenderer.contentsArray firstObject];
|
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];
|
[contentsArray removeObjectsAtIndexes:removeIndexes];
|
||||||
} %orig;
|
} %orig;
|
||||||
@@ -89,15 +91,6 @@ BOOL isAd(YTIElementRenderer *self) {
|
|||||||
- (void)showSurveyWithRenderer:(id)arg1 surveyParentResponder:(id)arg2 {}
|
- (void)showSurveyWithRenderer:(id)arg1 surveyParentResponder:(id)arg2 {}
|
||||||
%end
|
%end
|
||||||
|
|
||||||
// Statement banner
|
|
||||||
%hook YTPremiumSeasonCardCellController
|
|
||||||
- (void)setCell:(id)arg1 { arg1 = NULL; %orig; }
|
|
||||||
%end
|
|
||||||
|
|
||||||
%hook YTPremiumSeasonCardView
|
|
||||||
- (long long)accessibilityElementCount { return 0; }
|
|
||||||
%end
|
|
||||||
|
|
||||||
// Navbar Stuff
|
// Navbar Stuff
|
||||||
// Disable Cast
|
// Disable Cast
|
||||||
%hook MDXPlaybackRouteButtonController
|
%hook MDXPlaybackRouteButtonController
|
||||||
@@ -117,6 +110,7 @@ BOOL isAd(YTIElementRenderer *self) {
|
|||||||
if (kNoCast && self.subviews.count > 1 && [self.subviews[1].accessibilityIdentifier isEqualToString:@"id.mdx.playbackroute.button"]) self.subviews[1].hidden = YES; // Hide icon immediately
|
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 (kNoNotifsButton) self.notificationButton.hidden = YES;
|
||||||
if (kNoSearchButton) self.searchButton.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;
|
||||||
}
|
}
|
||||||
%end
|
%end
|
||||||
|
|
||||||
@@ -137,10 +131,15 @@ BOOL isAd(YTIElementRenderer *self) {
|
|||||||
|
|
||||||
%hook YTHeaderContentComboView
|
%hook YTHeaderContentComboView
|
||||||
- (void)enableSubheaderBarWithView:(id)arg1 { if (!kNoSubbar) %orig; }
|
- (void)enableSubheaderBarWithView:(id)arg1 { if (!kNoSubbar) %orig; }
|
||||||
|
- (void)setFeedHeaderScrollMode:(int)arg1 { kNoSubbar ? %orig(0) : %orig; }
|
||||||
%end
|
%end
|
||||||
|
|
||||||
%hook YTHeaderContentComboView
|
%hook YTChipCloudCell
|
||||||
- (void)setFeedHeaderScrollMode:(int)arg1 { kNoSubbar ? %orig(0) : %orig; }
|
- (void)layoutSubviews {
|
||||||
|
if (self.superview && kNoSubbar) {
|
||||||
|
[self removeFromSuperview];
|
||||||
|
} %orig;
|
||||||
|
}
|
||||||
%end
|
%end
|
||||||
|
|
||||||
// Hide Autoplay Switch and Subs Button
|
// Hide Autoplay Switch and Subs Button
|
||||||
@@ -271,27 +270,55 @@ BOOL isAd(YTIElementRenderer *self) {
|
|||||||
- (void)enableDoubleTapToSeek:(BOOL)arg1 { kNoDoubleTapToSeek ? %orig(NO) : %orig; }
|
- (void)enableDoubleTapToSeek:(BOOL)arg1 { kNoDoubleTapToSeek ? %orig(NO) : %orig; }
|
||||||
%end
|
%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
|
||||||
|
|
||||||
|
// 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
|
%hook YTAsyncCollectionView
|
||||||
- (id)cellForItemAtIndexPath:(NSIndexPath *)indexPath {
|
- (id)cellForItemAtIndexPath:(NSIndexPath *)indexPath {
|
||||||
if (kHideShorts) {
|
UICollectionViewCell *cell = %orig;
|
||||||
UICollectionViewCell *cell = %orig;
|
|
||||||
if ([cell isKindOfClass:NSClassFromString(@"_ASCollectionViewCell")]) {
|
if ([cell isKindOfClass:objc_lookUpClass("_ASCollectionViewCell")]) {
|
||||||
_ASCollectionViewCell *cell = %orig;
|
_ASCollectionViewCell *cell = %orig;
|
||||||
if ([cell respondsToSelector:@selector(node)]) {
|
if ([cell respondsToSelector:@selector(node)]) {
|
||||||
if ([[[cell node] accessibilityIdentifier] isEqualToString:@"eml.shorts-shelf"]) {
|
NSString *idToRemove = [[cell node] accessibilityIdentifier];
|
||||||
[self removeShortsCellAtIndexPath:indexPath];
|
if ([idToRemove isEqualToString:@"statement_banner.view"] ||
|
||||||
}
|
(([idToRemove isEqualToString:@"eml.shorts-grid"] || [idToRemove isEqualToString:@"eml.shorts-shelf"]) && kHideShorts)) {
|
||||||
|
[self removeCellsAtIndexPath:indexPath];
|
||||||
}
|
}
|
||||||
} else if ([cell isKindOfClass:NSClassFromString(@"YTReelShelfCell")]) {
|
}
|
||||||
[self removeShortsCellAtIndexPath:indexPath];
|
} else if (([cell isKindOfClass:objc_lookUpClass("YTReelShelfCell")] && kHideShorts) ||
|
||||||
} return %orig;
|
([cell isKindOfClass:objc_lookUpClass("YTHorizontalCardListCell")] && kNoContinueWatching)) {
|
||||||
|
[self removeCellsAtIndexPath:indexPath];
|
||||||
} return %orig;
|
} return %orig;
|
||||||
}
|
}
|
||||||
|
|
||||||
%new
|
%new
|
||||||
- (void)removeShortsCellAtIndexPath:(NSIndexPath *)indexPath {
|
- (void)removeCellsAtIndexPath:(NSIndexPath *)indexPath {
|
||||||
[self deleteItemsAtIndexPaths:[NSArray arrayWithObject:indexPath]];
|
[self deleteItemsAtIndexPaths:@[indexPath]];
|
||||||
}
|
}
|
||||||
%end
|
%end
|
||||||
|
|
||||||
@@ -544,6 +571,7 @@ static void reloadPrefs() {
|
|||||||
kNoCast = [prefs[@"noCast"] boolValue] ?: NO;
|
kNoCast = [prefs[@"noCast"] boolValue] ?: NO;
|
||||||
kNoNotifsButton = [prefs[@"removeNotifsButton"] boolValue] ?: NO;
|
kNoNotifsButton = [prefs[@"removeNotifsButton"] boolValue] ?: NO;
|
||||||
kNoSearchButton = [prefs[@"removeSearchButton"] boolValue] ?: NO;
|
kNoSearchButton = [prefs[@"removeSearchButton"] boolValue] ?: NO;
|
||||||
|
kNoVoiceSearchButton = [prefs[@"removeVoiceSearchButton"] boolValue] ?: NO;
|
||||||
kStickyNavbar = [prefs[@"stickyNavbar"] boolValue] ?: NO;
|
kStickyNavbar = [prefs[@"stickyNavbar"] boolValue] ?: NO;
|
||||||
kNoSubbar = [prefs[@"noSubbar"] boolValue] ?: NO;
|
kNoSubbar = [prefs[@"noSubbar"] boolValue] ?: NO;
|
||||||
kNoYTLogo = [prefs[@"noYTLogo"] boolValue] ?: NO;
|
kNoYTLogo = [prefs[@"noYTLogo"] boolValue] ?: NO;
|
||||||
@@ -592,6 +620,8 @@ static void reloadPrefs() {
|
|||||||
kRemoveSubscriptions = [prefs[@"removeSubscriptions"] boolValue] ?: NO;
|
kRemoveSubscriptions = [prefs[@"removeSubscriptions"] boolValue] ?: NO;
|
||||||
kRemoveUploads = (prefs[@"removeUploads"] != nil) ? [prefs[@"removeUploads"] boolValue] : YES;
|
kRemoveUploads = (prefs[@"removeUploads"] != nil) ? [prefs[@"removeUploads"] boolValue] : YES;
|
||||||
kRemoveLibrary = [prefs[@"removeLibrary"] boolValue] ?: NO;
|
kRemoveLibrary = [prefs[@"removeLibrary"] boolValue] ?: NO;
|
||||||
|
kRemovePlayNext = [prefs[@"removePlayNext"] boolValue] ?: NO;
|
||||||
|
kNoContinueWatching = [prefs[@"noContinueWatching"] boolValue] ?: NO;
|
||||||
kPivotIndex = (prefs[@"pivotIndex"] != nil) ? [prefs[@"pivotIndex"] intValue] : 0;
|
kPivotIndex = (prefs[@"pivotIndex"] != nil) ? [prefs[@"pivotIndex"] intValue] : 0;
|
||||||
kAdvancedMode = [prefs[@"advancedMode"] boolValue] ?: NO;
|
kAdvancedMode = [prefs[@"advancedMode"] boolValue] ?: NO;
|
||||||
|
|
||||||
@@ -601,6 +631,7 @@ static void reloadPrefs() {
|
|||||||
@"noCast" : @(kNoCast),
|
@"noCast" : @(kNoCast),
|
||||||
@"removeNotifsButton" : @(kNoNotifsButton),
|
@"removeNotifsButton" : @(kNoNotifsButton),
|
||||||
@"removeSearchButton" : @(kNoSearchButton),
|
@"removeSearchButton" : @(kNoSearchButton),
|
||||||
|
@"removeVoiceSearchButton" : @(kNoVoiceSearchButton),
|
||||||
@"stickyNavbar" : @(kStickyNavbar),
|
@"stickyNavbar" : @(kStickyNavbar),
|
||||||
@"noSubbar" : @(kNoSubbar),
|
@"noSubbar" : @(kNoSubbar),
|
||||||
@"noYTLogo" : @(kNoYTLogo),
|
@"noYTLogo" : @(kNoYTLogo),
|
||||||
@@ -649,6 +680,8 @@ static void reloadPrefs() {
|
|||||||
@"removeSubscriptions" : @(kRemoveSubscriptions),
|
@"removeSubscriptions" : @(kRemoveSubscriptions),
|
||||||
@"removeUploads" : @(kRemoveUploads),
|
@"removeUploads" : @(kRemoveUploads),
|
||||||
@"removeLibrary" : @(kRemoveLibrary),
|
@"removeLibrary" : @(kRemoveLibrary),
|
||||||
|
@"removePlayNext" : @(kRemovePlayNext),
|
||||||
|
@"noContinueWatching" : @(kNoContinueWatching),
|
||||||
@"pivotIndex" : @(kPivotIndex),
|
@"pivotIndex" : @(kPivotIndex),
|
||||||
@"advancedMode" : @(kAdvancedMode)
|
@"advancedMode" : @(kAdvancedMode)
|
||||||
};
|
};
|
||||||
|
@@ -11,6 +11,8 @@
|
|||||||
"RemoveNotificationsDesc" = "Hides Notifications button from the Navigation bar.";
|
"RemoveNotificationsDesc" = "Hides Notifications button from the Navigation bar.";
|
||||||
"RemoveSearch" = "Hide Search button";
|
"RemoveSearch" = "Hide Search button";
|
||||||
"RemoveSearchDesc" = "Hides Search button from the Navigation bar.";
|
"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";
|
"StickyNavbar" = "Sticky Navigation bar";
|
||||||
"StickyNavbarDesc" = "Pins the Navigation bar so that it remains visible when scrolling down.";
|
"StickyNavbarDesc" = "Pins the Navigation bar so that it remains visible when scrolling down.";
|
||||||
"NoSubbar" = "Hide Subbar";
|
"NoSubbar" = "Hide Subbar";
|
||||||
@@ -116,6 +118,12 @@
|
|||||||
"HideShortsAudioTrack" = "Hide AudioTrack";
|
"HideShortsAudioTrack" = "Hide AudioTrack";
|
||||||
"HideShortsAudioTrackDesc" = "Hides AudioTrack under Shorts description.";
|
"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.";
|
||||||
|
|
||||||
"Startup" = "Startup page";
|
"Startup" = "Startup page";
|
||||||
"Home" = "Home";
|
"Home" = "Home";
|
||||||
"Explore" = "Explore";
|
"Explore" = "Explore";
|
||||||
|
@@ -10,7 +10,9 @@
|
|||||||
"RemoveNotifications" = "Скрыть «Уведомления»";
|
"RemoveNotifications" = "Скрыть «Уведомления»";
|
||||||
"RemoveNotificationsDesc" = "Скрывает кнопку уведомлений с панели навигации.";
|
"RemoveNotificationsDesc" = "Скрывает кнопку уведомлений с панели навигации.";
|
||||||
"RemoveSearch" = "Скрыть «Поиск»";
|
"RemoveSearch" = "Скрыть «Поиск»";
|
||||||
"RemoveSearchDesc" = "Скрвыает кнопку поиска с панели навигации.";
|
"RemoveSearchDesc" = "Скрывает кнопку поиска с панели навигации.";
|
||||||
|
"RemoveVoiceSearch" = "Скрыть «Голосовой поиск»";
|
||||||
|
"RemoveVoiceSearchDesc" = "Скрывает кнопку голосового поиска с панели навигации.";
|
||||||
"StickyNavbar" = "Закрепить панель навигации";
|
"StickyNavbar" = "Закрепить панель навигации";
|
||||||
"StickyNavbarDesc" = "Закрепляет панель навигации в верхней части экрана, запрещая ему скрываться во время скролла страницы вниз.";
|
"StickyNavbarDesc" = "Закрепляет панель навигации в верхней части экрана, запрещая ему скрываться во время скролла страницы вниз.";
|
||||||
"NoSubbar" = "Скрыть наклейки";
|
"NoSubbar" = "Скрыть наклейки";
|
||||||
@@ -116,6 +118,12 @@
|
|||||||
"HideShortsAudioTrack" = "Скрыть аудиодорожку";
|
"HideShortsAudioTrack" = "Скрыть аудиодорожку";
|
||||||
"HideShortsAudioTrackDesc" = "Скрывает информацию об аудиодорожке в нижней части плеера.";
|
"HideShortsAudioTrackDesc" = "Скрывает информацию об аудиодорожке в нижней части плеера.";
|
||||||
|
|
||||||
|
"Other" = "Другие настройки";
|
||||||
|
"RemovePlayNext" = "Убрать «Добавить в начало очереди»";
|
||||||
|
"RemovePlayNextDesc" = "Убирает опцию «Добавить в начало очереди» из меню видео.";
|
||||||
|
"NoContinueWatching" = "Отключить «Продолжить просмотр»";
|
||||||
|
"NoContinueWatchingDesc" = "Удаляет блок «Продолжить просмотр» содержащий недосмотренные видео с Главной страницы.";
|
||||||
|
|
||||||
"Startup" = "Начальная страница";
|
"Startup" = "Начальная страница";
|
||||||
"Home" = "Главная";
|
"Home" = "Главная";
|
||||||
"Explore" = "Навигация";
|
"Explore" = "Навигация";
|
||||||
|
@@ -1,136 +1,136 @@
|
|||||||
"General" = "常规";
|
"General" = "常规";
|
||||||
"RemoveAds" = "移除广告";
|
"RemoveAds" = "移除广告";
|
||||||
"RemoveAdsDesc" = "删除程序内的广告";
|
"RemoveAdsDesc" = "删除程序内的广告。";
|
||||||
"BackgroundPlayback" = "后台播放";
|
"BackgroundPlayback" = "后台播放";
|
||||||
"BackgroundPlaybackDesc" = "启用后台播放";
|
"BackgroundPlaybackDesc" = "启用后台播放。";
|
||||||
|
|
||||||
"Navbar" = "导航栏";
|
"Navbar" = "导航栏";
|
||||||
"RemoveCast" = "隐藏投射按钮";
|
"RemoveCast" = "隐藏投射按钮";
|
||||||
"RemoveCastDesc" = "从导航栏中隐藏投射按钮";
|
"RemoveCastDesc" = "从导航栏中隐藏投射按钮。";
|
||||||
"RemoveNotifications" = "隐藏通知按钮";
|
"RemoveNotifications" = "隐藏通知按钮";
|
||||||
"RemoveNotificationsDesc" = "从导航栏中隐藏通知按钮";
|
"RemoveNotificationsDesc" = "从导航栏中隐藏通知按钮。";
|
||||||
"RemoveSearch" = "隐藏搜索按钮";
|
"RemoveSearch" = "隐藏搜索按钮";
|
||||||
"RemoveSearchDesc" = "从导航栏中隐藏搜索按钮";
|
"RemoveSearchDesc" = "从导航栏中隐藏搜索按钮。";
|
||||||
"StickyNavbar" = "Sticky Navigation bar";
|
"StickyNavbar" = "固定导航栏";
|
||||||
"StickyNavbarDesc" = "Pins the Navigation bar so that it remains visible when scrolling down.";
|
"StickyNavbarDesc" = "固定导航栏,使其在向下滚动时保持可见。";
|
||||||
"NoSubbar" = "Hide Subbar";
|
"NoSubbar" = "隐藏子栏";
|
||||||
"NoSubbarDesc" = "Hides Subbar (All, New to you, Live etc.) under the Navigation bar.";
|
"NoSubbarDesc" = "隐藏导航栏下的子栏(全部、新内容、实时等)。";
|
||||||
"NoYTLogo" = "Remove YouTube logo";
|
"NoYTLogo" = "删除 YouTube Logo";
|
||||||
"NoYTLogoDesc" = "Removes YouTube logo in the Navigation bar.";
|
"NoYTLogoDesc" = "删除导航栏中的 YouTube Logo。";
|
||||||
|
|
||||||
"Overlay" = "Overlay";
|
"Overlay" = "播放界面";
|
||||||
"HideAutoplay" = "Hide Autoplay switch";
|
"HideAutoplay" = "隐藏自动播放开关";
|
||||||
"HideAutoplayDesc" = "Hides Autoplay switch from the overlay.";
|
"HideAutoplayDesc" = "从播放界面隐藏自动播放开关。";
|
||||||
"HideSubs" = "Hide Subtitles button";
|
"HideSubs" = "隐藏字幕按钮";
|
||||||
"HideSubsDesc" = "Hides Subtitles button from the overlay.";
|
"HideSubsDesc" = "从播放界面隐藏字幕按钮。";
|
||||||
"NoHUDMsgs" = "Hide HUD Messages";
|
"NoHUDMsgs" = "隐藏屏显信息";
|
||||||
"NoHUDMsgsDesc" = "Hides all feature messages from the player. Example: CC is turned on/off, Video loop is on, etc.";
|
"NoHUDMsgsDesc" = "隐藏播放界面的所有功能信息。示例:CC按钮打开/关闭、视频循环等。";
|
||||||
"HidePrevNext" = "Hide Previous and Next buttons";
|
"HidePrevNext" = "隐藏上一个和下一个按钮";
|
||||||
"HidePrevNextDesc" = "Hides Previous and Next video buttons from overlay.";
|
"HidePrevNextDesc" = "从播放界面中隐藏上一个和下一个视频按钮。";
|
||||||
"ReplacePrevNext" = "Fast forward and Rewind buttons";
|
"ReplacePrevNext" = "快进和快退按钮";
|
||||||
"ReplacePrevNextDesc" = "Replaces Previous and Next video buttons to Fast forward and Rewind buttons in overlay.";
|
"ReplacePrevNextDesc" = "将上一个和下一个视频按钮替换为快进和快退按钮。";
|
||||||
"NoDarkBg" = "Remove dark background";
|
"NoDarkBg" = "删除深色背景";
|
||||||
"NoDarkBgDesc" = "Removes overlay dark background.";
|
"NoDarkBgDesc" = "删除播放界面的深色背景。";
|
||||||
"NoEndScreenCards" = "Hide End screens hover cards";
|
"NoEndScreenCards" = "隐藏片尾画面";
|
||||||
"NoEndScreenCardsDesc" = "Hides End screens (thumbnails) at the end of videos.";
|
"NoEndScreenCardsDesc" = "隐藏视频结尾处的片尾屏幕(缩略图)。";
|
||||||
"NoFullscreenActions" = "Disable fullscreen actions";
|
"NoFullscreenActions" = "禁用全屏操作";
|
||||||
"NoFullscreenActionsDesc" = "Disables actions panel in fullscreen mode.";
|
"NoFullscreenActionsDesc" = "在全屏模式下禁用操作面板。";
|
||||||
"NoRelatedVids" = "No related videos in overlay";
|
"NoRelatedVids" = "没有相关视频";
|
||||||
"NoRelatedVidsDesc" = "Removes related videos displayed in the overlay by swiping up.";
|
"NoRelatedVidsDesc" = "通过向上滑动删除播放界面中显示的相关视频。";
|
||||||
"NoPromotionCards" = "Hide Paid Promotion cards";
|
"NoPromotionCards" = "隐藏付费";
|
||||||
"NoPromotionCardsDesc" = "Hides \"Includes Paid Promotions\" card in promotions included videos.";
|
"NoPromotionCardsDesc" = "在付费视频中隐藏“付费内容”。";
|
||||||
"NoWatermarks" = "Hide Watermarks";
|
"NoWatermarks" = "隐藏水印";
|
||||||
"NoWatermarksDesc" = "Hides channel watermarks from the player.";
|
"NoWatermarksDesc" = "隐藏播放器的频道水印。";
|
||||||
|
|
||||||
"Player" = "Player";
|
"Player" = "播放器";
|
||||||
"Miniplayer" = "Enable mini player";
|
"Miniplayer" = "启用迷你播放器";
|
||||||
"MiniplayerDesc" = "Enables the mini player for videos that were not originally designed for it, such as videos targeted for children.";
|
"MiniplayerDesc" = "启用迷你播放器来播放最初不是为其设计的视频,例如针对儿童的视频。";
|
||||||
"DisableAutoplay" = "Disable Autoplay videos";
|
"DisableAutoplay" = "禁用自动播放视频";
|
||||||
"DisableAutoplayDesc" = "Prevents video playback after opening.";
|
"DisableAutoplayDesc" = "打开后防止视频自动播放。";
|
||||||
"NoContentWarning" = "Skip content warning";
|
"NoContentWarning" = "跳过内容警告";
|
||||||
"NoContentWarningDesc" = "Skips sensitive content warning message.";
|
"NoContentWarningDesc" = "跳过敏感内容警告消息。";
|
||||||
"ClassicQuality" = "Classic video quality";
|
"ClassicQuality" = "经典视频质量";
|
||||||
"ClassicQualityDesc" = "Brings back classic video quality selection menu.";
|
"ClassicQualityDesc" = "加回经典的视频质量选择菜单。";
|
||||||
"DontSnap2Chapter" = "Disable snap to chapter";
|
"DontSnap2Chapter" = "禁用双击跳转";
|
||||||
"DontSnap2ChapterDesc" = "Disables skipping to the next episode by double-tap gesture.";
|
"DontSnap2ChapterDesc" = "禁用通过双击手势跳到下一集。";
|
||||||
"RedProgressBar" = "Red progress bar";
|
"RedProgressBar" = "红色进度条";
|
||||||
"RedProgressBarDesc" = "Brings back red progress bar.";
|
"RedProgressBarDesc" = "加回红色进度条。";
|
||||||
"NoHints" = "Disable hints";
|
"NoHints" = "禁用提示";
|
||||||
"NoHintsDesc" = "Disables hints by author which appears at the top-right corner during playback.";
|
"NoHintsDesc" = "禁用播放期间出现在右上角的作者提示。";
|
||||||
"NoFreeZoom" = "Disable free zoom gesture";
|
"NoFreeZoom" = "禁用自由缩放手势";
|
||||||
"NoFreeZoomDesc" = "Disables new free zoom gestures.";
|
"NoFreeZoomDesc" = "禁用新的自由缩放手势。";
|
||||||
"ExitFullscreen" = "Exit fullscreen mode on finish";
|
"ExitFullscreen" = "完成后退出全屏模式";
|
||||||
"ExitFullscreenDesc" = "Exits fullscreen mode at the end of video playback.";
|
"ExitFullscreenDesc" = "在视频播放结束时退出全屏模式。";
|
||||||
"NoDoubleTap2Seek" = "Disable double tap to seek";
|
"NoDoubleTap2Seek" = "禁用双击搜索";
|
||||||
"NoDoubleTap2SeekDesc" = "Disables double tap to seek gesture.";
|
"NoDoubleTap2SeekDesc" = "禁用双击搜索手势。";
|
||||||
|
|
||||||
"Tabbar" = "选项卡栏";
|
"Tabbar" = "选项卡栏";
|
||||||
"RemoveLabels" = "移除标签";
|
"RemoveLabels" = "移除标签";
|
||||||
"RemoveLabelsDesc" = "删除选项卡标签";
|
"RemoveLabelsDesc" = "删除选项卡标签。";
|
||||||
"ReExplore" = "Replace Shorts tab with Explore tab";
|
"ReExplore" = "将短视频选项卡替换为“探索”选项卡";
|
||||||
"ReExploreDesc" = "Shows Explore tab instead of Shorts tab as on old YouTube versions.";
|
"ReExploreDesc" = "显示“探索”选项卡,而不是旧版 本中的“短视频”选项卡。";
|
||||||
"HideShortsTab" = "隐藏短视频";
|
"HideShortsTab" = "隐藏短视频";
|
||||||
"HideShortsTabDesc" = "从选项卡栏中隐藏短视频";
|
"HideShortsTabDesc" = "从选项卡栏中隐藏短视频。";
|
||||||
"HideSubscriptionsTab" = "隐藏订阅内容";
|
"HideSubscriptionsTab" = "隐藏订阅内容";
|
||||||
"HideSubscriptionsTabDesc" = "从选项卡栏中隐藏订阅内容";
|
"HideSubscriptionsTabDesc" = "从选项卡栏中隐藏订阅内容。";
|
||||||
"HideUploadButton" = "隐藏上传按钮";
|
"HideUploadButton" = "隐藏上传按钮";
|
||||||
"HideUploadButtonDesc" = "从选项卡栏中隐藏上传按钮";
|
"HideUploadButtonDesc" = "从选项卡栏中隐藏上传按钮。";
|
||||||
"HideLibraryTab" = "隐藏媒体库";
|
"HideLibraryTab" = "隐藏媒体库";
|
||||||
"HideLibraryTabDesc" = "从选项卡栏中隐藏媒体库";
|
"HideLibraryTabDesc" = "从选项卡栏中隐藏媒体库。";
|
||||||
|
|
||||||
"Shorts" = "Shorts";
|
"Shorts" = "短视频";
|
||||||
"HideShorts" = "Hide Shorts videos";
|
"HideShorts" = "隐藏短视频";
|
||||||
"HideShortsDesc" = "Hides Shorts videos from Homepage, Recommended etc. (Not applied to Watch history)";
|
"HideShortsDesc" = "从首页、推荐等隐藏短视频(不适用于观看历史记录)。";
|
||||||
"ShortsProgress" = "Enable progress bar";
|
"ShortsProgress" = "启用进度条";
|
||||||
"ShortsProgressDesc" = "Displays progress bar in the Shorts overlay.";
|
"ShortsProgressDesc" = "在短视频播放器中显示进度条。";
|
||||||
"ResumeShorts" = "Don't start from Shorts tab";
|
"ResumeShorts" = "不要从短视频开始";
|
||||||
"ResumeShortsDesc" = "Prevents starting from Shorts videos at the opening app, which happens if YouTube was closed while watching Shorts.";
|
"ResumeShortsDesc" = "防止在打开应用程序时首先启动短视频,如果在观看短视频时关闭,就会发生这种情况。";
|
||||||
"HideShortsLogo" = "Hide Shorts logo";
|
"HideShortsLogo" = "隐藏短视频Logo";
|
||||||
"HideShortsLogoDesc" = "Hides Shorts logo in the top left corner.";
|
"HideShortsLogoDesc" = "隐藏左上角的短视频Logo。";
|
||||||
"HideShortsSearch" = "Hide Search button";
|
"HideShortsSearch" = "隐藏搜索按钮";
|
||||||
"HideShortsSearchDesc" = "Hides Search button from the Shorts overlay.";
|
"HideShortsSearchDesc" = "从短视频播放器中隐藏搜索按钮。";
|
||||||
"HideShortsCamera" = "Hide Camera button";
|
"HideShortsCamera" = "隐藏相机按钮";
|
||||||
"HideShortsCameraDesc" = "Hides Camera button from the Shorts overlay.";
|
"HideShortsCameraDesc" = "从短视频播放器中隐藏相机按钮。";
|
||||||
"HideShortsMore" = "Hide More (⋮) button";
|
"HideShortsMore" = "隐藏更多 (⋮) 按钮";
|
||||||
"HideShortsMoreDesc" = "Hides More (⋮) button from the Shorts overlay. It's also accessible by long-pressing the screen.";
|
"HideShortsMoreDesc" = "从短视频播放器中隐藏更多 (⋮) 按钮 。也可以通过长按屏幕来访问它。";
|
||||||
"HideShortsSubscriptions" = "Hide Subscriptions button";
|
"HideShortsSubscriptions" = "隐藏订阅按钮";
|
||||||
"HideShortsSubscriptionsDesc" = "Hides Subscriptions button which appears when Shorts paused.";
|
"HideShortsSubscriptionsDesc" = "隐藏短视频暂停时显示的订阅按钮。";
|
||||||
"HideShortsLike" = "Hide Like button";
|
"HideShortsLike" = "隐藏喜欢按钮";
|
||||||
"HideShortsLikeDesc" = "Hides Like button from the Shorts overlay.";
|
"HideShortsLikeDesc" = "从短视频播放器中隐藏喜欢按钮。";
|
||||||
"HideShortsDislike" = "Hide Dislike button";
|
"HideShortsDislike" = "隐藏不喜欢按钮";
|
||||||
"HideShortsDislikeDesc" = "Hides Dislike button from the Shorts overlay.";
|
"HideShortsDislikeDesc" = "从短视频播放器中隐藏不喜欢按钮。";
|
||||||
"HideShortsComments" = "Hide Comments button";
|
"HideShortsComments" = "隐藏评论按钮";
|
||||||
"HideShortsCommentsDesc" = "Hides Comments button from the Shorts overlay.";
|
"HideShortsCommentsDesc" = "从短视频播放器中隐藏评论按钮。";
|
||||||
"HideShortsRemix" = "Hide Remix button";
|
"HideShortsRemix" = "隐藏混剪按钮";
|
||||||
"HideShortsRemixDesc" = "Hides Remix button from the Shorts overlay.";
|
"HideShortsRemixDesc" = "从短视频播放器中隐藏混剪按钮。";
|
||||||
"HideShortsShare" = "Hide Share button";
|
"HideShortsShare" = "隐藏分享按钮";
|
||||||
"HideShortsShareDesc" = "Hides Share button from the Shorts overlay.";
|
"HideShortsShareDesc" = "从短视频播放器中隐藏分享按钮。";
|
||||||
"HideShortsAvatars" = "Hide channels avatar";
|
"HideShortsAvatars" = "隐藏发布者头像";
|
||||||
"HideShortsAvatarsDesc" = "Hides profile picture in the bottom right corner.";
|
"HideShortsAvatarsDesc" = "隐藏右下角的发布者个人资料头像。";
|
||||||
"HideShortsThanks" = "Hide Superthanks button";
|
"HideShortsThanks" = "隐藏捐赠按钮";
|
||||||
"HideShortsThanksDesc" = "Hides Superthanks (Donate) button from the Shorts overlay.";
|
"HideShortsThanksDesc" = "从短视频播放器中隐藏捐赠按钮。";
|
||||||
"HideShortsChannelName" = "Hide Channel name";
|
"HideShortsChannelName" = "隐藏发布者名称";
|
||||||
"HideShortsChannelNameDesc" = "Hides Channel name and Subscribe button from the Shorts overlay.";
|
"HideShortsChannelNameDesc" = "从短视频播放器中隐藏发布者名称和订阅按钮。";
|
||||||
"HideShortsDescription" = "Hide Description";
|
"HideShortsDescription" = "隐藏说明";
|
||||||
"HideShortsDescriptionDesc" = "Hides Shorts description under channel name.";
|
"HideShortsDescriptionDesc" = "在频道名称下隐藏短视频描述。";
|
||||||
"HideShortsAudioTrack" = "Hide AudioTrack";
|
"HideShortsAudioTrack" = "隐藏音频音轨";
|
||||||
"HideShortsAudioTrackDesc" = "Hides AudioTrack under Shorts description.";
|
"HideShortsAudioTrackDesc" = "从短视频描述下隐藏音频音轨。";
|
||||||
|
|
||||||
"Startup" = "Startup page";
|
"Startup" = "启动页";
|
||||||
"Home" = "Home";
|
"Home" = "首页";
|
||||||
"Explore" = "Explore";
|
"Explore" = "探索";
|
||||||
"ShortsTab" = "Shorts";
|
"ShortsTab" = "短视频";
|
||||||
"Subscriptions" = "Subscriptions";
|
"Subscriptions" = "订阅";
|
||||||
"Library" = "Library";
|
"Library" = "媒体库";
|
||||||
"Warning" = "Warning";
|
"Warning" = "警告";
|
||||||
"TabIsHidden" = "Hidden tab cannot be selected as startup page";
|
"TabIsHidden" = "无法选择隐藏选项卡作为启动页。";
|
||||||
|
|
||||||
"Version" = "版本";
|
"Version" = "版本";
|
||||||
"About" = "关于";
|
"About" = "关于";
|
||||||
"Credits" = "信息";
|
"Credits" = "信息";
|
||||||
"Developer" = "YTLite开发者";
|
"Developer" = "YTLite开发者";
|
||||||
"Advanced" = "Advanced mode";
|
"Advanced" = "高级模式";
|
||||||
"ResetSettings" = "Reset YTLite settings";
|
"ResetSettings" = "重置YTLite设置";
|
||||||
"ResetMessage" = "This option will reset YTLite settings to default and close YouTube.\n\nAre you sure you want to continue?";
|
"ResetMessage" = "此选项会将YTLite设置重置为默认值并关闭YouTube。\n\n确定要继续吗?";
|
||||||
"Yes" = "Yes";
|
"Yes" = "是";
|
||||||
"No" = "No";
|
"No" = "不";
|
||||||
|
Reference in New Issue
Block a user