Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
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
|
DEBUG=0
|
||||||
FINALPACKAGE=1
|
FINALPACKAGE=1
|
||||||
ARCHS = arm64
|
ARCHS = arm64
|
||||||
PACKAGE_VERSION = 2.0
|
PACKAGE_VERSION = 2.2.1
|
||||||
TARGET := iphone:clang:latest:11.0
|
TARGET := iphone:clang:latest:11.0
|
||||||
|
|
||||||
include $(THEOS)/makefiles/common.mk
|
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>
|
||||||
+74
-8
@@ -8,8 +8,11 @@ static const NSInteger YTLiteSection = 789;
|
|||||||
|
|
||||||
static void resetYTLiteSettings() {
|
static void resetYTLiteSettings() {
|
||||||
NSString *prefsPath = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject] stringByAppendingPathComponent:@"YTLite.plist"];
|
NSString *prefsPath = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject] stringByAppendingPathComponent:@"YTLite.plist"];
|
||||||
NSFileManager *fileManager = [NSFileManager defaultManager];
|
[[NSFileManager defaultManager] removeItemAtPath:prefsPath error:nil];
|
||||||
[fileManager removeItemAtPath:prefsPath error:nil];
|
|
||||||
|
[[UIApplication sharedApplication] performSelector:@selector(suspend)];
|
||||||
|
[NSThread sleepForTimeInterval:1.0];
|
||||||
|
exit(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
NSBundle *YTLiteBundle() {
|
NSBundle *YTLiteBundle() {
|
||||||
@@ -119,7 +122,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 +157,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),
|
||||||
@@ -177,10 +181,12 @@ static YTSettingsSectionItem *createSwitchItem(NSString *title, NSString *titleD
|
|||||||
createSwitchItem(LOC(@"DisableAutoplay"), LOC(@"DisableAutoplayDesc"), @"disableAutoplay", &kDisableAutoplay, selfObject),
|
createSwitchItem(LOC(@"DisableAutoplay"), LOC(@"DisableAutoplayDesc"), @"disableAutoplay", &kDisableAutoplay, selfObject),
|
||||||
createSwitchItem(LOC(@"NoContentWarning"), LOC(@"NoContentWarningDesc"), @"noContentWarning", &kNoContentWarning, selfObject),
|
createSwitchItem(LOC(@"NoContentWarning"), LOC(@"NoContentWarningDesc"), @"noContentWarning", &kNoContentWarning, selfObject),
|
||||||
createSwitchItem(LOC(@"ClassicQuality"), LOC(@"ClassicQualityDesc"), @"classicQuality", &kClassicQuality, 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(@"DontSnap2Chapter"), LOC(@"DontSnap2ChapterDesc"), @"dontSnapToChapter", &kDontSnapToChapter, selfObject),
|
||||||
createSwitchItem(LOC(@"RedProgressBar"), LOC(@"RedProgressBarDesc"), @"redProgressBar", &kRedProgressBar, selfObject),
|
createSwitchItem(LOC(@"RedProgressBar"), LOC(@"RedProgressBarDesc"), @"redProgressBar", &kRedProgressBar, selfObject),
|
||||||
createSwitchItem(LOC(@"NoHints"), LOC(@"NoHintsDesc"), @"noHints", &kNoHints, selfObject),
|
createSwitchItem(LOC(@"NoHints"), LOC(@"NoHintsDesc"), @"noHints", &kNoHints, selfObject),
|
||||||
createSwitchItem(LOC(@"NoFreeZoom"), LOC(@"NoFreeZoomDesc"), @"noFreeZoom", &kNoFreeZoom, 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(@"ExitFullscreen"), LOC(@"ExitFullscreenDesc"), @"exitFullscreen", &kExitFullscreen, selfObject),
|
||||||
createSwitchItem(LOC(@"NoDoubleTap2Seek"), LOC(@"NoDoubleTap2SeekDesc"), @"noDoubleTapToSeek", &kNoDoubleTapToSeek, selfObject)
|
createSwitchItem(LOC(@"NoDoubleTap2Seek"), LOC(@"NoDoubleTap2SeekDesc"), @"noDoubleTapToSeek", &kNoDoubleTapToSeek, selfObject)
|
||||||
];
|
];
|
||||||
@@ -215,7 +221,8 @@ static YTSettingsSectionItem *createSwitchItem(NSString *title, NSString *titleD
|
|||||||
createSwitchItem(LOC(@"HideShortsThanks"), LOC(@"HideShortsThanksDesc"), @"hideShortsThanks", &kHideShortsThanks, selfObject),
|
createSwitchItem(LOC(@"HideShortsThanks"), LOC(@"HideShortsThanksDesc"), @"hideShortsThanks", &kHideShortsThanks, selfObject),
|
||||||
createSwitchItem(LOC(@"HideShortsChannelName"), LOC(@"HideShortsChannelNameDesc"), @"hideShortsChannelName", &kHideShortsChannelName, selfObject),
|
createSwitchItem(LOC(@"HideShortsChannelName"), LOC(@"HideShortsChannelNameDesc"), @"hideShortsChannelName", &kHideShortsChannelName, selfObject),
|
||||||
createSwitchItem(LOC(@"HideShortsDescription"), LOC(@"HideShortsDescriptionDesc"), @"hideShortsDescription", &kHideShortsDescription, 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]];
|
YTSettingsPickerViewController *picker = [[%c(YTSettingsPickerViewController) alloc] initWithNavTitle:LOC(@"Shorts") pickerSectionTitle:nil rows:rows selectedItemIndex:NSNotFound parentResponder:[self parentResponder]];
|
||||||
[settingsViewController pushViewController:picker];
|
[settingsViewController pushViewController:picker];
|
||||||
@@ -246,6 +253,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")
|
||||||
@@ -323,7 +347,7 @@ static YTSettingsSectionItem *createSwitchItem(NSString *title, NSString *titleD
|
|||||||
|
|
||||||
[sectionItems addObject:space];
|
[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/"]];
|
return [%c(YTUIUtils) openURL:[NSURL URLWithString:@"https://github.com/PoomSmart/"]];
|
||||||
}];
|
}];
|
||||||
|
|
||||||
@@ -331,6 +355,26 @@ static YTSettingsSectionItem *createSwitchItem(NSString *title, NSString *titleD
|
|||||||
return [%c(YTUIUtils) openURL:[NSURL URLWithString:@"https://github.com/MiRO92/"]];
|
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 *dayanch96 = [%c(YTSettingsSectionItem) itemWithTitle:@"Dayanch96" titleDescription:LOC(@"Developer") accessibilityIdentifier:nil detailTextBlock:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
|
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/"]];
|
return [%c(YTUIUtils) openURL:[NSURL URLWithString:@"https://github.com/Dayanch96/"]];
|
||||||
}];
|
}];
|
||||||
@@ -338,7 +382,6 @@ static YTSettingsSectionItem *createSwitchItem(NSString *title, NSString *titleD
|
|||||||
YTSettingsSectionItem *reset = [%c(YTSettingsSectionItem) itemWithTitle:LOC(@"ResetSettings") titleDescription:nil accessibilityIdentifier:nil detailTextBlock:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
|
YTSettingsSectionItem *reset = [%c(YTSettingsSectionItem) itemWithTitle:LOC(@"ResetSettings") titleDescription:nil accessibilityIdentifier:nil detailTextBlock:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
|
||||||
YTAlertView *alertView = [%c(YTAlertView) confirmationDialogWithAction:^{
|
YTAlertView *alertView = [%c(YTAlertView) confirmationDialogWithAction:^{
|
||||||
resetYTLiteSettings();
|
resetYTLiteSettings();
|
||||||
exit(0);
|
|
||||||
}
|
}
|
||||||
actionTitle:LOC(@"Yes")
|
actionTitle:LOC(@"Yes")
|
||||||
cancelTitle:LOC(@"No")];
|
cancelTitle:LOC(@"No")];
|
||||||
@@ -354,7 +397,7 @@ static YTSettingsSectionItem *createSwitchItem(NSString *title, NSString *titleD
|
|||||||
return @(OS_STRINGIFY(TWEAK_VERSION));
|
return @(OS_STRINGIFY(TWEAK_VERSION));
|
||||||
}
|
}
|
||||||
selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
|
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, 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]];
|
YTSettingsPickerViewController *picker = [[%c(YTSettingsPickerViewController) alloc] initWithNavTitle:LOC(@"About") pickerSectionTitle:LOC(@"Credits") rows:rows selectedItemIndex:NSNotFound parentResponder:[self parentResponder]];
|
||||||
[settingsViewController pushViewController:picker];
|
[settingsViewController pushViewController:picker];
|
||||||
@@ -372,3 +415,26 @@ static YTSettingsSectionItem *createSwitchItem(NSString *title, NSString *titleD
|
|||||||
} %orig;
|
} %orig;
|
||||||
}
|
}
|
||||||
%end
|
%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];
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -10,6 +10,7 @@
|
|||||||
#import "../YouTubeHeader/YTQTMButton.h"
|
#import "../YouTubeHeader/YTQTMButton.h"
|
||||||
#import "../YouTubeHeader/YTVideoQualitySwitchOriginalController.h"
|
#import "../YouTubeHeader/YTVideoQualitySwitchOriginalController.h"
|
||||||
#import "../YouTubeHeader/YTPlayerViewController.h"
|
#import "../YouTubeHeader/YTPlayerViewController.h"
|
||||||
|
#import "../YouTubeHeader/YTWatchController.h"
|
||||||
#import "../YouTubeHeader/YTPlayerOverlay.h"
|
#import "../YouTubeHeader/YTPlayerOverlay.h"
|
||||||
#import "../YouTubeHeader/YTPlayerOverlayProvider.h"
|
#import "../YouTubeHeader/YTPlayerOverlayProvider.h"
|
||||||
#import "../YouTubeHeader/YTSettingsViewController.h"
|
#import "../YouTubeHeader/YTSettingsViewController.h"
|
||||||
@@ -17,6 +18,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 +32,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;
|
||||||
@@ -48,10 +51,12 @@ BOOL kMiniplayer;
|
|||||||
BOOL kDisableAutoplay;
|
BOOL kDisableAutoplay;
|
||||||
BOOL kNoContentWarning;
|
BOOL kNoContentWarning;
|
||||||
BOOL kClassicQuality;
|
BOOL kClassicQuality;
|
||||||
|
BOOL kExtraSpeedOptions;
|
||||||
BOOL kDontSnapToChapter;
|
BOOL kDontSnapToChapter;
|
||||||
BOOL kRedProgressBar;
|
BOOL kRedProgressBar;
|
||||||
BOOL kNoHints;
|
BOOL kNoHints;
|
||||||
BOOL kNoFreeZoom;
|
BOOL kNoFreeZoom;
|
||||||
|
BOOL kAutoFullscreen;
|
||||||
BOOL kExitFullscreen;
|
BOOL kExitFullscreen;
|
||||||
BOOL kNoDoubleTapToSeek;
|
BOOL kNoDoubleTapToSeek;
|
||||||
BOOL kHideShorts;
|
BOOL kHideShorts;
|
||||||
@@ -72,13 +77,17 @@ BOOL kHideShortsThanks;
|
|||||||
BOOL kHideShortsChannelName;
|
BOOL kHideShortsChannelName;
|
||||||
BOOL kHideShortsDescription;
|
BOOL kHideShortsDescription;
|
||||||
BOOL kHideShortsAudioTrack;
|
BOOL kHideShortsAudioTrack;
|
||||||
|
BOOL kHideShortsPromoCards;
|
||||||
BOOL kRemoveLabels;
|
BOOL kRemoveLabels;
|
||||||
BOOL kReExplore;
|
BOOL kReExplore;
|
||||||
BOOL kRemoveShorts;
|
BOOL kRemoveShorts;
|
||||||
BOOL kRemoveSubscriptions;
|
BOOL kRemoveSubscriptions;
|
||||||
BOOL kRemoveUploads;
|
BOOL kRemoveUploads;
|
||||||
BOOL kRemoveLibrary;
|
BOOL kRemoveLibrary;
|
||||||
|
BOOL kRemovePlayNext;
|
||||||
|
BOOL kNoContinueWatching;
|
||||||
BOOL kAdvancedMode;
|
BOOL kAdvancedMode;
|
||||||
|
BOOL kAdvancedModeReminder;
|
||||||
int kPivotIndex;
|
int kPivotIndex;
|
||||||
|
|
||||||
@interface YTSettingsSectionItemManager (Custom)
|
@interface YTSettingsSectionItemManager (Custom)
|
||||||
@@ -103,9 +112,22 @@ int kPivotIndex;
|
|||||||
@property (nonatomic, strong) YTQTMButton *searchButton;
|
@property (nonatomic, strong) YTQTMButton *searchButton;
|
||||||
@end
|
@end
|
||||||
|
|
||||||
|
@interface YTSearchView : UIView
|
||||||
|
@end
|
||||||
|
|
||||||
|
@interface YTSearchBarView : UIView
|
||||||
|
@end
|
||||||
|
|
||||||
@interface YTNavigationBarTitleView : UIView
|
@interface YTNavigationBarTitleView : UIView
|
||||||
@end
|
@end
|
||||||
|
|
||||||
|
@interface YTChipCloudCell : UICollectionViewCell
|
||||||
|
@end
|
||||||
|
|
||||||
|
@interface YTPlayerViewController (YTAFS)
|
||||||
|
- (void)autoFullscreen;
|
||||||
|
@end
|
||||||
|
|
||||||
@interface YTSegmentableInlinePlayerBarView
|
@interface YTSegmentableInlinePlayerBarView
|
||||||
@property (nonatomic, assign, readwrite) BOOL enableSnapToChapter;
|
@property (nonatomic, assign, readwrite) BOOL enableSnapToChapter;
|
||||||
@end
|
@end
|
||||||
@@ -125,7 +147,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
|
||||||
@@ -137,6 +159,26 @@ int kPivotIndex;
|
|||||||
@interface YTReelWatchHeaderView : UIView
|
@interface YTReelWatchHeaderView : UIView
|
||||||
@end
|
@end
|
||||||
|
|
||||||
|
@interface YTELMView : 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
|
@interface YTAlertView : UIView
|
||||||
@property (nonatomic, copy, readwrite) NSString *title;
|
@property (nonatomic, copy, readwrite) NSString *title;
|
||||||
@property (nonatomic, copy, readwrite) NSString *subtitle;
|
@property (nonatomic, copy, readwrite) NSString *subtitle;
|
||||||
|
|||||||
@@ -28,17 +28,20 @@
|
|||||||
- (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 && kNoAds)
|
||||||
|
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;
|
|| ([description containsString:@"inline_shorts"] && kHideShorts))
|
||||||
return NO;
|
return [NSData data];
|
||||||
|
return %orig;
|
||||||
}
|
}
|
||||||
|
%end
|
||||||
|
|
||||||
%hook YTSectionListViewController
|
%hook YTSectionListViewController
|
||||||
- (void)loadWithModel:(YTISectionListRenderer *)model {
|
- (void)loadWithModel:(YTISectionListRenderer *)model {
|
||||||
@@ -47,7 +50,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 +92,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 +111,33 @@ 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
|
||||||
|
|
||||||
|
%hook YTSearchView
|
||||||
|
- (void)layoutSubviews {
|
||||||
|
%orig;
|
||||||
|
|
||||||
|
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"];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
%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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
%end
|
%end
|
||||||
|
|
||||||
@@ -137,10 +158,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
|
||||||
@@ -230,9 +256,59 @@ BOOL isAd(YTIElementRenderer *self) {
|
|||||||
%hook YTVideoQualitySwitchControllerFactory
|
%hook YTVideoQualitySwitchControllerFactory
|
||||||
- (id)videoQualitySwitchControllerWithParentResponder:(id)responder {
|
- (id)videoQualitySwitchControllerWithParentResponder:(id)responder {
|
||||||
Class originalClass = %c(YTVideoQualitySwitchOriginalController);
|
Class originalClass = %c(YTVideoQualitySwitchOriginalController);
|
||||||
if (kClassicQuality) {
|
if (kClassicQuality) return originalClass ? [[originalClass alloc] initWithParentResponder:responder] : %orig;
|
||||||
return originalClass ? [[originalClass alloc] initWithParentResponder:responder] : %orig;
|
return %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
|
%end
|
||||||
|
|
||||||
@@ -247,7 +323,7 @@ BOOL isAd(YTIElementRenderer *self) {
|
|||||||
%end
|
%end
|
||||||
|
|
||||||
%hook YTSegmentableInlinePlayerBarView
|
%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
|
%end
|
||||||
|
|
||||||
// Disable Hints
|
// Disable Hints
|
||||||
@@ -261,37 +337,94 @@ BOOL isAd(YTIElementRenderer *self) {
|
|||||||
- (void)setHintsDisabled:(BOOL)arg1 { kNoHints ? %orig(YES) : %orig; }
|
- (void)setHintsDisabled:(BOOL)arg1 { kNoHints ? %orig(YES) : %orig; }
|
||||||
%end
|
%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
|
// Exit Fullscreen on Finish
|
||||||
%hook YTWatchFlowController
|
%hook YTWatchFlowController
|
||||||
- (BOOL)shouldExitFullScreenOnFinish { return kExitFullscreen ? YES : NO; }
|
- (BOOL)shouldExitFullScreenOnFinish { return kExitFullscreen ? YES : NO; }
|
||||||
%end
|
%end
|
||||||
|
|
||||||
// Disable Double Tap To Seek
|
// Disable Double Tap To Seek
|
||||||
%hook YTDoubleTapToSeekController
|
%hook YTMainAppVideoPlayerOverlayViewController
|
||||||
- (void)enableDoubleTapToSeek:(BOOL)arg1 { kNoDoubleTapToSeek ? %orig(NO) : %orig; }
|
- (BOOL)allowDoubleTapToSeekGestureRecognizer { return kNoDoubleTapToSeek ? 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
|
||||||
|
|
||||||
|
// 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
|
%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"] || [idToRemove isEqualToString:@"eml.inline_shorts"]) && kHideShorts)) {
|
||||||
|
[self removeCellsAtIndexPath:indexPath];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if ([cell isKindOfClass:NSClassFromString(@"YTReelShelfCell")]) {
|
} else if (([cell isKindOfClass:objc_lookUpClass("YTReelShelfCell")] && kHideShorts) ||
|
||||||
[self removeShortsCellAtIndexPath:indexPath];
|
([cell isKindOfClass:objc_lookUpClass("YTHorizontalCardListCell")] && kNoContinueWatching)) {
|
||||||
} return %orig;
|
[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
|
||||||
|
|
||||||
@@ -362,9 +495,21 @@ BOOL isAd(YTIElementRenderer *self) {
|
|||||||
- (void)layoutSubviews {
|
- (void)layoutSubviews {
|
||||||
%orig;
|
%orig;
|
||||||
if (kHideShortsDescription && [self.subviews[2].accessibilityIdentifier isEqualToString:@"id.reels_smv_player_title_label"]) self.subviews[2].hidden = YES;
|
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 (kHideShortsThanks && [self.subviews[self.subviews.count - 3].accessibilityIdentifier isEqualToString:@"id.elements.components.suggested_action"]) self.subviews[self.subviews.count - 3].hidden = YES; // Might be useful for older versions
|
||||||
if (kHideShortsChannelName) self.subviews[self.subviews.count - 2].hidden = YES;
|
if (kHideShortsChannelName) self.subviews[self.subviews.count - 2].hidden = YES;
|
||||||
if (kHideShortsAudioTrack) self.subviews.lastObject.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 YTELMView
|
||||||
|
- (void)layoutSubviews {
|
||||||
|
%orig;
|
||||||
|
if (kHideShortsThanks && [self.subviews.firstObject.accessibilityIdentifier isEqualToString:@"id.elements.components.suggested_action"]) self.subviews.firstObject.hidden = YES;
|
||||||
}
|
}
|
||||||
%end
|
%end
|
||||||
|
|
||||||
@@ -544,6 +689,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;
|
||||||
@@ -562,10 +708,12 @@ static void reloadPrefs() {
|
|||||||
kDisableAutoplay = [prefs[@"disableAutoplay"] boolValue] ?: NO;
|
kDisableAutoplay = [prefs[@"disableAutoplay"] boolValue] ?: NO;
|
||||||
kNoContentWarning = [prefs[@"noContentWarning"] boolValue] ?: NO;
|
kNoContentWarning = [prefs[@"noContentWarning"] boolValue] ?: NO;
|
||||||
kClassicQuality = [prefs[@"classicQuality"] boolValue] ?: NO;
|
kClassicQuality = [prefs[@"classicQuality"] boolValue] ?: NO;
|
||||||
|
kExtraSpeedOptions = [prefs[@"extraSpeedOptions"] boolValue] ?: NO;
|
||||||
kDontSnapToChapter = [prefs[@"dontSnapToChapter"] boolValue] ?: NO;
|
kDontSnapToChapter = [prefs[@"dontSnapToChapter"] boolValue] ?: NO;
|
||||||
kRedProgressBar = [prefs[@"redProgressBar"] boolValue] ?: NO;
|
kRedProgressBar = [prefs[@"redProgressBar"] boolValue] ?: NO;
|
||||||
kNoHints = [prefs[@"noHints"] boolValue] ?: NO;
|
kNoHints = [prefs[@"noHints"] boolValue] ?: NO;
|
||||||
kNoFreeZoom = [prefs[@"noFreeZoom"] boolValue] ?: NO;
|
kNoFreeZoom = [prefs[@"noFreeZoom"] boolValue] ?: NO;
|
||||||
|
kAutoFullscreen = [prefs[@"autoFullscreen"] boolValue] ?: NO;
|
||||||
kExitFullscreen = [prefs[@"exitFullscreen"] boolValue] ?: NO;
|
kExitFullscreen = [prefs[@"exitFullscreen"] boolValue] ?: NO;
|
||||||
kNoDoubleTapToSeek = [prefs[@"noDoubleTapToSeek"] boolValue] ?: NO;
|
kNoDoubleTapToSeek = [prefs[@"noDoubleTapToSeek"] boolValue] ?: NO;
|
||||||
kHideShorts = [prefs[@"hideShorts"] boolValue] ?: NO;
|
kHideShorts = [prefs[@"hideShorts"] boolValue] ?: NO;
|
||||||
@@ -586,14 +734,18 @@ static void reloadPrefs() {
|
|||||||
kHideShortsChannelName = [prefs[@"hideShortsChannelName"] boolValue] ?: NO;
|
kHideShortsChannelName = [prefs[@"hideShortsChannelName"] boolValue] ?: NO;
|
||||||
kHideShortsDescription = [prefs[@"hideShortsDescription"] boolValue] ?: NO;
|
kHideShortsDescription = [prefs[@"hideShortsDescription"] boolValue] ?: NO;
|
||||||
kHideShortsAudioTrack = [prefs[@"hideShortsAudioTrack"] boolValue] ?: NO;
|
kHideShortsAudioTrack = [prefs[@"hideShortsAudioTrack"] boolValue] ?: NO;
|
||||||
|
kHideShortsPromoCards = [prefs[@"hideShortsPromoCards"] boolValue] ?: NO;
|
||||||
kRemoveLabels = [prefs[@"removeLabels"] boolValue] ?: NO;
|
kRemoveLabels = [prefs[@"removeLabels"] boolValue] ?: NO;
|
||||||
kReExplore = [prefs[@"reExplore"] boolValue] ?: NO;
|
kReExplore = [prefs[@"reExplore"] boolValue] ?: NO;
|
||||||
kRemoveShorts = [prefs[@"removeShorts"] boolValue] ?: NO;
|
kRemoveShorts = [prefs[@"removeShorts"] boolValue] ?: NO;
|
||||||
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;
|
||||||
|
kAdvancedModeReminder = [prefs[@"advancedModeReminder"] boolValue] ?: NO;
|
||||||
|
|
||||||
NSDictionary *newSettings = @{
|
NSDictionary *newSettings = @{
|
||||||
@"noAds" : @(kNoAds),
|
@"noAds" : @(kNoAds),
|
||||||
@@ -601,6 +753,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),
|
||||||
@@ -619,10 +772,12 @@ static void reloadPrefs() {
|
|||||||
@"disableAutoplay" : @(kDisableAutoplay),
|
@"disableAutoplay" : @(kDisableAutoplay),
|
||||||
@"noContentWarning" : @(kNoContentWarning),
|
@"noContentWarning" : @(kNoContentWarning),
|
||||||
@"classicQuality" : @(kClassicQuality),
|
@"classicQuality" : @(kClassicQuality),
|
||||||
|
@"extraSpeedOptions" : @(kExtraSpeedOptions),
|
||||||
@"dontSnapToChapter" : @(kDontSnapToChapter),
|
@"dontSnapToChapter" : @(kDontSnapToChapter),
|
||||||
@"redProgressBar" : @(kRedProgressBar),
|
@"redProgressBar" : @(kRedProgressBar),
|
||||||
@"noHints" : @(kNoHints),
|
@"noHints" : @(kNoHints),
|
||||||
@"noFreeZoom" : @(kNoFreeZoom),
|
@"noFreeZoom" : @(kNoFreeZoom),
|
||||||
|
@"autoFullscreen" : @(kAutoFullscreen),
|
||||||
@"exitFullscreen" : @(kExitFullscreen),
|
@"exitFullscreen" : @(kExitFullscreen),
|
||||||
@"noDoubleTapToSeek" : @(kNoDoubleTapToSeek),
|
@"noDoubleTapToSeek" : @(kNoDoubleTapToSeek),
|
||||||
@"hideShorts" : @(kHideShorts),
|
@"hideShorts" : @(kHideShorts),
|
||||||
@@ -643,14 +798,18 @@ static void reloadPrefs() {
|
|||||||
@"hideShortsChannelName" : @(kHideShortsChannelName),
|
@"hideShortsChannelName" : @(kHideShortsChannelName),
|
||||||
@"hideShortsDescription" : @(kHideShortsDescription),
|
@"hideShortsDescription" : @(kHideShortsDescription),
|
||||||
@"hideShortsAudioTrack" : @(kHideShortsAudioTrack),
|
@"hideShortsAudioTrack" : @(kHideShortsAudioTrack),
|
||||||
|
@"hideShortsPromoCards" : @(kHideShortsPromoCards),
|
||||||
@"removeLabels" : @(kRemoveLabels),
|
@"removeLabels" : @(kRemoveLabels),
|
||||||
@"reExplore" : @(kReExplore),
|
@"reExplore" : @(kReExplore),
|
||||||
@"removeShorts" : @(kRemoveShorts),
|
@"removeShorts" : @(kRemoveShorts),
|
||||||
@"removeSubscriptions" : @(kRemoveSubscriptions),
|
@"removeSubscriptions" : @(kRemoveSubscriptions),
|
||||||
@"removeUploads" : @(kRemoveUploads),
|
@"removeUploads" : @(kRemoveUploads),
|
||||||
@"removeLibrary" : @(kRemoveLibrary),
|
@"removeLibrary" : @(kRemoveLibrary),
|
||||||
|
@"removePlayNext" : @(kRemovePlayNext),
|
||||||
|
@"noContinueWatching" : @(kNoContinueWatching),
|
||||||
@"pivotIndex" : @(kPivotIndex),
|
@"pivotIndex" : @(kPivotIndex),
|
||||||
@"advancedMode" : @(kAdvancedMode)
|
@"advancedMode" : @(kAdvancedMode),
|
||||||
|
@"advancedModeReminder" : @(kAdvancedModeReminder)
|
||||||
};
|
};
|
||||||
|
|
||||||
if (![newSettings isEqualToDictionary:prefs]) [newSettings writeToFile:path atomically:NO];
|
if (![newSettings isEqualToDictionary:prefs]) [newSettings writeToFile:path atomically:NO];
|
||||||
|
|||||||
@@ -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";
|
||||||
@@ -51,6 +53,8 @@
|
|||||||
"NoContentWarningDesc" = "Skips sensitive content warning message.";
|
"NoContentWarningDesc" = "Skips sensitive content warning message.";
|
||||||
"ClassicQuality" = "Classic video quality";
|
"ClassicQuality" = "Classic video quality";
|
||||||
"ClassicQualityDesc" = "Brings back classic video quality selection menu.";
|
"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";
|
"DontSnap2Chapter" = "Disable snap to chapter";
|
||||||
"DontSnap2ChapterDesc" = "Disables skipping to the next episode by double-tap gesture.";
|
"DontSnap2ChapterDesc" = "Disables skipping to the next episode by double-tap gesture.";
|
||||||
"RedProgressBar" = "Red progress bar";
|
"RedProgressBar" = "Red progress bar";
|
||||||
@@ -59,6 +63,8 @@
|
|||||||
"NoHintsDesc" = "Disables hints by author which appears at the top-right corner during playback.";
|
"NoHintsDesc" = "Disables hints by author which appears at the top-right corner during playback.";
|
||||||
"NoFreeZoom" = "Disable free zoom gesture";
|
"NoFreeZoom" = "Disable free zoom gesture";
|
||||||
"NoFreeZoomDesc" = "Disables new free zoom gestures.";
|
"NoFreeZoomDesc" = "Disables new free zoom gestures.";
|
||||||
|
"AutoFullscreen" = "Play videos in fullscreen";
|
||||||
|
"AutoFullscreenDesc" = "Automatically plays videos in fullscreen mode.";
|
||||||
"ExitFullscreen" = "Exit fullscreen mode on finish";
|
"ExitFullscreen" = "Exit fullscreen mode on finish";
|
||||||
"ExitFullscreenDesc" = "Exits fullscreen mode at the end of video playback.";
|
"ExitFullscreenDesc" = "Exits fullscreen mode at the end of video playback.";
|
||||||
"NoDoubleTap2Seek" = "Disable double tap to seek";
|
"NoDoubleTap2Seek" = "Disable double tap to seek";
|
||||||
@@ -116,6 +122,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";
|
||||||
@@ -129,7 +141,12 @@
|
|||||||
"About" = "About";
|
"About" = "About";
|
||||||
"Credits" = "Credits";
|
"Credits" = "Credits";
|
||||||
"Developer" = "YTLite developer";
|
"Developer" = "YTLite developer";
|
||||||
|
"ChineseSimplified" = "Chinese (Simplified) localization";
|
||||||
|
"ChineseTraditional" = "Chinese (Traditional) localization";
|
||||||
|
"French" = "French localization";
|
||||||
|
"Spanish" = "Spanish localization";
|
||||||
"Advanced" = "Advanced mode";
|
"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";
|
"ResetSettings" = "Reset YTLite settings";
|
||||||
"ResetMessage" = "This option will reset YTLite settings to default and close YouTube.\n\nAre you sure you want to continue?";
|
"ResetMessage" = "This option will reset YTLite settings to default and close YouTube.\n\nAre you sure you want to continue?";
|
||||||
"Yes" = "Yes";
|
"Yes" = "Yes";
|
||||||
|
|||||||
@@ -0,0 +1,153 @@
|
|||||||
|
"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.";
|
||||||
|
"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.";
|
||||||
|
"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.";
|
||||||
|
|
||||||
|
"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" = "Chinese (Simplified) localization";
|
||||||
|
"ChineseTraditional" = "Chinese (Traditional) localization";
|
||||||
|
"French" = "French localization";
|
||||||
|
"Spanish" = "Spanish localization";
|
||||||
|
"Advanced" = "Modo avanzado";
|
||||||
|
"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" = "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,155 @@
|
|||||||
|
"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 l'interrupteur de lecture automatique";
|
||||||
|
"HideAutoplayDesc" = "Masque l'interrupteur 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.";
|
||||||
|
"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" = "Disable snap to chapter";
|
||||||
|
"DontSnap2ChapterDesc" = "Disables skipping to the next episode by double-tap gesture.";
|
||||||
|
"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.";
|
||||||
|
"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.";
|
||||||
|
"HideShortortsComments" = "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.";
|
||||||
|
|
||||||
|
"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" = "Chinese (Simplified) localization";
|
||||||
|
"ChineseTraditional" = "Chinese (Traditional) localization";
|
||||||
|
"French" = "French localization";
|
||||||
|
"Spanish" = "Spanish localization";
|
||||||
|
"Advanced" = "Mode avancé";
|
||||||
|
"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" = "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";
|
||||||
@@ -10,7 +10,9 @@
|
|||||||
"RemoveNotifications" = "Скрыть «Уведомления»";
|
"RemoveNotifications" = "Скрыть «Уведомления»";
|
||||||
"RemoveNotificationsDesc" = "Скрывает кнопку уведомлений с панели навигации.";
|
"RemoveNotificationsDesc" = "Скрывает кнопку уведомлений с панели навигации.";
|
||||||
"RemoveSearch" = "Скрыть «Поиск»";
|
"RemoveSearch" = "Скрыть «Поиск»";
|
||||||
"RemoveSearchDesc" = "Скрвыает кнопку поиска с панели навигации.";
|
"RemoveSearchDesc" = "Скрывает кнопку поиска с панели навигации.";
|
||||||
|
"RemoveVoiceSearch" = "Скрыть «Голосовой поиск»";
|
||||||
|
"RemoveVoiceSearchDesc" = "Скрывает кнопку голосового поиска с панели навигации.";
|
||||||
"StickyNavbar" = "Закрепить панель навигации";
|
"StickyNavbar" = "Закрепить панель навигации";
|
||||||
"StickyNavbarDesc" = "Закрепляет панель навигации в верхней части экрана, запрещая ему скрываться во время скролла страницы вниз.";
|
"StickyNavbarDesc" = "Закрепляет панель навигации в верхней части экрана, запрещая ему скрываться во время скролла страницы вниз.";
|
||||||
"NoSubbar" = "Скрыть наклейки";
|
"NoSubbar" = "Скрыть наклейки";
|
||||||
@@ -51,6 +53,8 @@
|
|||||||
"NoContentWarningDesc" = "Пропускает предупреждения, всплывающие перед воспроизведением некоторого контента.";
|
"NoContentWarningDesc" = "Пропускает предупреждения, всплывающие перед воспроизведением некоторого контента.";
|
||||||
"ClassicQuality" = "Классический выбор качества";
|
"ClassicQuality" = "Классический выбор качества";
|
||||||
"ClassicQualityDesc" = "Возвращает классическое меню выбора качества в меню плеера.";
|
"ClassicQualityDesc" = "Возвращает классическое меню выбора качества в меню плеера.";
|
||||||
|
"ExtraSpeedOptions" = "Больше скоростей воспроизведения";
|
||||||
|
"ExtraSpeedOptionsDesc" = "Добавляет больше опций скорости воспроизведения в выпадающее меню плеера.";
|
||||||
"DontSnap2Chapter" = "Не перематывать эпизоды";
|
"DontSnap2Chapter" = "Не перематывать эпизоды";
|
||||||
"DontSnap2ChapterDesc" = "Отключает жест перемотки к следующему эпизоду двойным нажатием.";
|
"DontSnap2ChapterDesc" = "Отключает жест перемотки к следующему эпизоду двойным нажатием.";
|
||||||
"RedProgressBar" = "Красный прогресс-бар";
|
"RedProgressBar" = "Красный прогресс-бар";
|
||||||
@@ -59,6 +63,8 @@
|
|||||||
"NoHintsDesc" = "Скрывает подсказки от авторов видео, появляющиеся в правом верхнем углу.";
|
"NoHintsDesc" = "Скрывает подсказки от авторов видео, появляющиеся в правом верхнем углу.";
|
||||||
"NoFreeZoom" = "Отключить жесты для зума";
|
"NoFreeZoom" = "Отключить жесты для зума";
|
||||||
"NoFreeZoomDesc" = "Отключает жесты приближения для нового зума.";
|
"NoFreeZoomDesc" = "Отключает жесты приближения для нового зума.";
|
||||||
|
"AutoFullscreen" = "Воспроизводить в полноэкранном режиме";
|
||||||
|
"AutoFullscreenDesc" = "Автоматически воспроизводит ролики в полноэкранном режиме.";
|
||||||
"ExitFullscreen" = "Автовыход из полноэкранного режима";
|
"ExitFullscreen" = "Автовыход из полноэкранного режима";
|
||||||
"ExitFullscreenDesc" = "Выходит из полноэкранного режима по окончанию воспроизведения.";
|
"ExitFullscreenDesc" = "Выходит из полноэкранного режима по окончанию воспроизведения.";
|
||||||
"NoDoubleTap2Seek" = "Отключить перемотку двойным тапом";
|
"NoDoubleTap2Seek" = "Отключить перемотку двойным тапом";
|
||||||
@@ -116,6 +122,12 @@
|
|||||||
"HideShortsAudioTrack" = "Скрыть аудиодорожку";
|
"HideShortsAudioTrack" = "Скрыть аудиодорожку";
|
||||||
"HideShortsAudioTrackDesc" = "Скрывает информацию об аудиодорожке в нижней части плеера.";
|
"HideShortsAudioTrackDesc" = "Скрывает информацию об аудиодорожке в нижней части плеера.";
|
||||||
|
|
||||||
|
"Other" = "Другие настройки";
|
||||||
|
"RemovePlayNext" = "Убрать «Добавить в начало очереди»";
|
||||||
|
"RemovePlayNextDesc" = "Убирает опцию «Добавить в начало очереди» из меню видео.";
|
||||||
|
"NoContinueWatching" = "Отключить «Продолжить просмотр»";
|
||||||
|
"NoContinueWatchingDesc" = "Удаляет блок «Продолжить просмотр» содержащий недосмотренные видео с Главной страницы.";
|
||||||
|
|
||||||
"Startup" = "Начальная страница";
|
"Startup" = "Начальная страница";
|
||||||
"Home" = "Главная";
|
"Home" = "Главная";
|
||||||
"Explore" = "Навигация";
|
"Explore" = "Навигация";
|
||||||
@@ -129,7 +141,12 @@
|
|||||||
"About" = "О твике";
|
"About" = "О твике";
|
||||||
"Credits" = "Авторы";
|
"Credits" = "Авторы";
|
||||||
"Developer" = "Разработчик твика";
|
"Developer" = "Разработчик твика";
|
||||||
|
"ChineseSimplified" = "Китайская (упрощенная) локализация";
|
||||||
|
"ChineseTraditional" = "Китайская (традиционная) локализация";
|
||||||
|
"French" = "Французская локализация";
|
||||||
|
"Spanish" = "Испанская локализация";
|
||||||
"Advanced" = "Расширенный режим";
|
"Advanced" = "Расширенный режим";
|
||||||
|
"AdvancedModeReminder" = "Хотите ли вы активировать расширенный режим настроек YTLite?\n\nДанный режим добавляет более 50 опций для тонкой настройки YouTube. Вы всегда сможете включить/отключить расширенный режим перейдя в Настройки → %@ → %@ → %@.";
|
||||||
"ResetSettings" = "Сбросить настройки твика";
|
"ResetSettings" = "Сбросить настройки твика";
|
||||||
"ResetMessage" = "Данное действие сбросит настройки YTLite к значениям по умолчанию и закроет YouTube.\n\nУверены, что хотите продолжить?";
|
"ResetMessage" = "Данное действие сбросит настройки YTLite к значениям по умолчанию и закроет YouTube.\n\nУверены, что хотите продолжить?";
|
||||||
"Yes" = "Да";
|
"Yes" = "Да";
|
||||||
|
|||||||
+129
-112
@@ -1,136 +1,153 @@
|
|||||||
"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";
|
"RemoveVoiceSearch" = "隐藏语音搜索按钮";
|
||||||
"StickyNavbarDesc" = "Pins the Navigation bar so that it remains visible when scrolling down.";
|
"RemoveVoiceSearchDesc" = "从导航栏中隐藏语音搜索按钮。";
|
||||||
"NoSubbar" = "Hide Subbar";
|
"StickyNavbar" = "固定导航栏";
|
||||||
"NoSubbarDesc" = "Hides Subbar (All, New to you, Live etc.) under the Navigation bar.";
|
"StickyNavbarDesc" = "固定导航栏,使其在向下滚动时保持可见。";
|
||||||
"NoYTLogo" = "Remove YouTube logo";
|
"NoSubbar" = "隐藏子栏";
|
||||||
"NoYTLogoDesc" = "Removes YouTube logo in the Navigation bar.";
|
"NoSubbarDesc" = "隐藏导航栏下的子栏(全部、新内容、实时等)。";
|
||||||
|
"NoYTLogo" = "删除 YouTube Logo";
|
||||||
|
"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";
|
"ExtraSpeedOptions" = "扩展速度选项";
|
||||||
"DontSnap2ChapterDesc" = "Disables skipping to the next episode by double-tap gesture.";
|
"ExtraSpeedOptionsDesc" = "在播放器菜单中添加更多视频播放速度的选项。";
|
||||||
"RedProgressBar" = "Red progress bar";
|
"DontSnap2Chapter" = "禁用双击跳转";
|
||||||
"RedProgressBarDesc" = "Brings back red progress bar.";
|
"DontSnap2ChapterDesc" = "禁用通过双击手势跳到下一集。";
|
||||||
"NoHints" = "Disable hints";
|
"RedProgressBar" = "红色进度条";
|
||||||
"NoHintsDesc" = "Disables hints by author which appears at the top-right corner during playback.";
|
"RedProgressBarDesc" = "加回红色进度条。";
|
||||||
"NoFreeZoom" = "Disable free zoom gesture";
|
"NoHints" = "禁用提示";
|
||||||
"NoFreeZoomDesc" = "Disables new free zoom gestures.";
|
"NoHintsDesc" = "禁用播放期间出现在右上角的作者提示。";
|
||||||
"ExitFullscreen" = "Exit fullscreen mode on finish";
|
"NoFreeZoom" = "禁用自由缩放手势";
|
||||||
"ExitFullscreenDesc" = "Exits fullscreen mode at the end of video playback.";
|
"NoFreeZoomDesc" = "禁用新的自由缩放手势。";
|
||||||
"NoDoubleTap2Seek" = "Disable double tap to seek";
|
"AutoFullscreen" = "全屏模式";
|
||||||
"NoDoubleTap2SeekDesc" = "Disables double tap to seek gesture.";
|
"AutoFullscreenDesc" = "自动以全屏模式播放视频。";
|
||||||
|
"ExitFullscreen" = "完成后退出全屏模式";
|
||||||
|
"ExitFullscreenDesc" = "在视频播放结束时退出全屏模式。";
|
||||||
|
"NoDoubleTap2Seek" = "禁用双击搜索";
|
||||||
|
"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" = "在旧版本 YouTube 中将“短视频”选项卡替换为“探索”。";
|
||||||
"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";
|
"Other" = "其他";
|
||||||
"Home" = "Home";
|
"RemovePlayNext" = "删除“播放队列中的下一个”";
|
||||||
"Explore" = "Explore";
|
"RemovePlayNextDesc" = "从菜单中删除“播放队列中的下一个”选项。";
|
||||||
"ShortsTab" = "Shorts";
|
"NoContinueWatching" = "删除“继续观看”";
|
||||||
"Subscriptions" = "Subscriptions";
|
"NoContinueWatchingDesc" = "从首页中删除包含未完成视频的“继续观看”部分。";
|
||||||
"Library" = "Library";
|
|
||||||
"Warning" = "Warning";
|
"Startup" = "启动页";
|
||||||
"TabIsHidden" = "Hidden tab cannot be selected as startup page";
|
"Home" = "首页";
|
||||||
|
"Explore" = "探索";
|
||||||
|
"ShortsTab" = "短视频";
|
||||||
|
"Subscriptions" = "订阅";
|
||||||
|
"Library" = "媒体库";
|
||||||
|
"Warning" = "警告";
|
||||||
|
"TabIsHidden" = "无法选择隐藏选项卡作为启动页。";
|
||||||
|
|
||||||
"Version" = "版本";
|
"Version" = "版本";
|
||||||
"About" = "关于";
|
"About" = "关于";
|
||||||
"Credits" = "信息";
|
"Credits" = "信息";
|
||||||
"Developer" = "YTLite开发者";
|
"Developer" = "YTLite开发者";
|
||||||
"Advanced" = "Advanced mode";
|
"ChineseSimplified" = "Chinese (Simplified) localization";
|
||||||
"ResetSettings" = "Reset YTLite settings";
|
"ChineseTraditional" = "Chinese (Traditional) localization";
|
||||||
"ResetMessage" = "This option will reset YTLite settings to default and close YouTube.\n\nAre you sure you want to continue?";
|
"French" = "French localization";
|
||||||
"Yes" = "Yes";
|
"Spanish" = "Spanish localization";
|
||||||
"No" = "No";
|
"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 → %@ → %@ → %@.";
|
||||||
|
"ResetSettings" = "重置YTLite设置";
|
||||||
|
"ResetMessage" = "此选项会将YTLite设置重置为默认值并关闭YouTube。\n\n确定要继续吗?";
|
||||||
|
"Yes" = "是";
|
||||||
|
"No" = "不";
|
||||||
@@ -0,0 +1,153 @@
|
|||||||
|
"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" = "對於原本不支援迷你播放器的影片(例如針對兒童的影片),啟用迷你播放器";
|
||||||
|
"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" = "將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" = "從首頁中移除包含未完成影片的「繼續觀看」部分";
|
||||||
|
|
||||||
|
"Startup" = "啟動頁面";
|
||||||
|
"Home" = "首頁";
|
||||||
|
"Explore" = "探索";
|
||||||
|
"ShortsTab" = "Shorts";
|
||||||
|
"Subscriptions" = "訂閱內容";
|
||||||
|
"Library" = "媒體庫";
|
||||||
|
"Warning" = "警告";
|
||||||
|
"TabIsHidden" = "無法將隱藏的標籤選為啟動頁面";
|
||||||
|
|
||||||
|
"Version" = "版本";
|
||||||
|
"About" = "關於";
|
||||||
|
"Credits" = "貢獻";
|
||||||
|
"Developer" = "YTLite開發者";
|
||||||
|
"ChineseSimplified" = "Chinese (Simplified) localization";
|
||||||
|
"ChineseTraditional" = "Chinese (Traditional) localization";
|
||||||
|
"French" = "French localization";
|
||||||
|
"Spanish" = "Spanish localization";
|
||||||
|
"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 → %@ → %@ → %@.";
|
||||||
|
"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.
Reference in New Issue
Block a user