Compare commits

...
12 Commits
Author SHA1 Message Date
dayanch96 d52e3b79c8 Merge branch 'main' of https://github.com/dayanch96/YTLite 2023-07-15 20:11:05 +03:00
dayanch96 5862a73ac9 more options and improvements 2023-07-15 20:11:03 +03:00
Dan 1bdc0e0e62 Merge pull request #15 from xiangfeidexiaohuo/main
Update Simplified Chinese
2023-07-13 14:01:38 +03:00
xiangfeidexiaohuo 0755b5abbd Update Simplified Chinese
Signed-off-by: xiangfeidexiaohuo <jsjson@163.com>
2023-07-12 16:06:08 +08:00
Dan 887ba2fdbe Merge pull request #13 from Balackburn/main
updated fr.lproj
2023-07-11 16:16:10 +03:00
Balackburn 2083ab7fbf translated lines 50, 51 2023-07-11 15:13:15 +02:00
Balackburn 83c53f9ede Merge branch 'dayanch96:main' into main 2023-07-11 15:12:12 +02:00
Dan 9bc4036a73 Merge pull request #14 from mumuisdog/main
Update zh-Hant Localizable
2023-07-11 15:19:39 +03:00
mumuisdog a16d978e7d Update Localizable.strings 2023-07-11 18:21:58 +08:00
Balackburn f269dd4022 updated fr.lproj 2023-07-11 03:41:30 +02:00
dayanch96 49b17ce2b0 Update Spanish translate @Deci8BelioS 2023-07-11 01:04:37 +03:00
dayanch96 06ed61a83a portrait fullscreen mode 2023-07-11 00:24:08 +03:00
14 changed files with 198 additions and 59 deletions
+1 -1
View File
@@ -5,7 +5,7 @@ endif
DEBUG=0
FINALPACKAGE=1
ARCHS = arm64
PACKAGE_VERSION = 2.2.1
PACKAGE_VERSION = 2.3
TARGET := iphone:clang:latest:11.0
include $(THEOS)/makefiles/common.mk
+9 -2
View File
@@ -18,7 +18,7 @@ static void resetYTLiteSettings() {
NSBundle *YTLiteBundle() {
static NSBundle *bundle = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
dispatch_once(&onceToken, ^{
NSString *tweakBundlePath = [[NSBundle mainBundle] pathForResource:@"YTLite" ofType:@"bundle"];
if (tweakBundlePath)
bundle = [NSBundle bundleWithPath:tweakBundlePath];
@@ -178,6 +178,7 @@ static YTSettingsSectionItem *createSwitchItem(NSString *title, NSString *titleD
selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
NSArray <YTSettingsSectionItem *> *rows = @[
createSwitchItem(LOC(@"Miniplayer"), LOC(@"MiniplayerDesc"), @"miniplayer", &kMiniplayer, selfObject),
createSwitchItem(LOC(@"PortraitFullscreen"), LOC(@"PortraitFullscreenDesc"), @"portraitFullscreen", &kPortraitFullscreen, selfObject),
createSwitchItem(LOC(@"DisableAutoplay"), LOC(@"DisableAutoplayDesc"), @"disableAutoplay", &kDisableAutoplay, selfObject),
createSwitchItem(LOC(@"NoContentWarning"), LOC(@"NoContentWarningDesc"), @"noContentWarning", &kNoContentWarning, selfObject),
createSwitchItem(LOC(@"ClassicQuality"), LOC(@"ClassicQualityDesc"), @"classicQuality", &kClassicQuality, selfObject),
@@ -261,7 +262,13 @@ static YTSettingsSectionItem *createSwitchItem(NSString *title, NSString *titleD
selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
NSArray <YTSettingsSectionItem *> *rows = @[
createSwitchItem(LOC(@"RemovePlayNext"), LOC(@"RemovePlayNextDesc"), @"removePlayNext", &kRemovePlayNext, selfObject),
createSwitchItem(LOC(@"NoContinueWatching"), LOC(@"NoContinueWatchingDesc"), @"noContinueWatching", &kNoContinueWatching, selfObject)
createSwitchItem(LOC(@"NoContinueWatching"), LOC(@"NoContinueWatchingDesc"), @"noContinueWatching", &kNoContinueWatching, selfObject),
createSwitchItem(LOC(@"NoSearchHistory"), LOC(@"NoSearchHistoryDesc"), @"noSearchHistory", &kNoSearchHistory, selfObject),
createSwitchItem(LOC(@"NoRelatedWatchNexts"), LOC(@"NoRelatedWatchNextsDesc"), @"noRelatedWatchNexts", &kNoRelatedWatchNexts, selfObject),
createSwitchItem(LOC(@"StickSortComments"), LOC(@"StickSortCommentsDesc"), @"stickSortComments", &kStickSortComments, selfObject),
createSwitchItem(LOC(@"HideSortComments"), LOC(@"HideSortCommentsDesc"), @"hideSortComments", &kHideSortComments, selfObject),
createSwitchItem(LOC(@"PlaylistOldMinibar"), LOC(@"PlaylistOldMinibarDesc"), @"playlistOldMinibar", &kPlaylistOldMinibar, selfObject),
createSwitchItem(LOC(@"DisableRTL"), LOC(@"DisableRTLDesc"), @"disableRTL", &kDisableRTL, selfObject)
];
YTSettingsPickerViewController *picker = [[%c(YTSettingsPickerViewController) alloc] initWithNavTitle:LOC(@"Other") pickerSectionTitle:nil rows:rows selectedItemIndex:NSNotFound parentResponder:[self parentResponder]];
+7
View File
@@ -48,6 +48,7 @@ BOOL kNoRelatedVids;
BOOL kNoPromotionCards;
BOOL kNoWatermarks;
BOOL kMiniplayer;
BOOL kPortraitFullscreen;
BOOL kDisableAutoplay;
BOOL kNoContentWarning;
BOOL kClassicQuality;
@@ -86,6 +87,12 @@ BOOL kRemoveUploads;
BOOL kRemoveLibrary;
BOOL kRemovePlayNext;
BOOL kNoContinueWatching;
BOOL kNoSearchHistory;
BOOL kNoRelatedWatchNexts;
BOOL kStickSortComments;
BOOL kHideSortComments;
BOOL kPlaylistOldMinibar;
BOOL kDisableRTL;
BOOL kAdvancedMode;
BOOL kAdvancedModeReminder;
int kPivotIndex;
+69 -28
View File
@@ -30,16 +30,13 @@
%hook YTIElementRenderer
- (NSData *)elementData {
if (self.hasCompatibilityOptions && self.compatibilityOptions.hasAdLoggingData && kNoAds)
return nil;
if (self.hasCompatibilityOptions && self.compatibilityOptions.hasAdLoggingData && kNoAds) return nil;
NSArray *adDescriptions = @[@"brand_promo", @"product_carousel", @"product_engagement_panel", @"product_item", @"text_search_ad", @"text_image_button_layout", @"carousel_headered_layout", @"square_image_layout", @"feed_ad_metadata"];
NSString *description = [self description];
if ((([description containsString:@"brand_promo"]
|| [description containsString:@"product_carousel"]
|| [description containsString:@"product_engagement_panel"]
|| [description containsString:@"product_item"]) && kNoAds)
|| ([description containsString:@"inline_shorts"] && kHideShorts))
if (([adDescriptions containsObject:description] && kNoAds) || ([description containsString:@"inline_shorts"] && kHideShorts)) {
return [NSData data];
return %orig;
} return %orig;
}
%end
@@ -104,40 +101,53 @@
- (void)setDisableMDXDeviceDiscovery:(BOOL)arg1 { %orig(kNoCast); }
%end
// Hide Cast, Notifications and Search Buttons
// Hide Navigation Bar Buttons
%hook YTRightNavigationButtons
- (void)layoutSubviews {
%orig;
if (kNoCast && self.subviews.count > 1 && [self.subviews[1].accessibilityIdentifier isEqualToString:@"id.mdx.playbackroute.button"]) self.subviews[1].hidden = YES; // Hide icon immediately
if (kNoNotifsButton) self.notificationButton.hidden = YES;
if (kNoSearchButton) self.searchButton.hidden = YES;
if (kNoVoiceSearchButton && self.subviews.count >= 4 && [self.subviews[2].accessibilityIdentifier isEqualToString:@"id.settings.overflow.button"]) self.subviews[3].hidden = YES;
NSInteger moreButtonIndex = -1;
for (NSInteger i = 0; i < self.subviews.count; i++) {
UIView *subview = self.subviews[i];
if ([subview.accessibilityIdentifier isEqualToString:@"id.settings.overflow.button"]) {
moreButtonIndex = i;
break;
}
}
if (moreButtonIndex != -1 && moreButtonIndex < self.subviews.count - 1 && kNoVoiceSearchButton) {
UIView *voiceButton = self.subviews[moreButtonIndex + 1];
voiceButton.hidden = YES;
}
}
%end
%hook YTSearchView
- (void)layoutSubviews {
%orig;
// Hide Search History
if (kNoSearchHistory && self.subviews.count > 1) self.subviews[1].hidden = YES;
// Hide Voice Search Button
if (kNoVoiceSearchButton && self.subviews.count > 0) {
UIView *firstSubview = self.subviews.firstObject;
if (firstSubview.subviews.count > 1) {
UIView *subview1 = firstSubview.subviews[1];
[subview1 setValue:@(1) forKey:@"hidden"];
for (UIView *subview in firstSubview.subviews) {
if ([NSStringFromClass([subview class]) isEqualToString:@"UIView"]) {
[subview setValue:@(1) forKey:@"hidden"];
break;
}
}
}
}
%end
%hook YTSearchBarView
- (void)layoutSubviews {
%orig;
if (kNoVoiceSearchButton && ![self.superview isKindOfClass:objc_lookUpClass("YTNavigationBarTitleView")]) {
CGRect frame = self.frame;
frame.size.width += 20;
self.frame = frame;
}
// Remove Videos Section Under Player
%hook YTWatchNextResultsViewController
- (void)setVisibleSections:(NSInteger)arg1 {
arg1 = (kNoRelatedWatchNexts) ? 1 : arg1;
%orig(arg1);
}
%end
@@ -183,19 +193,25 @@
%hook YTColdConfig
// Hide Next & Previous buttons
- (BOOL)removeNextPaddleForSingletonVideos { return kHidePrevNext ? YES : NO; }
- (BOOL)removePreviousPaddleForSingletonVideos { return kHidePrevNext ? YES : NO; }
- (BOOL)removeNextPaddleForSingletonVideos { return kHidePrevNext ? YES : %orig; }
- (BOOL)removePreviousPaddleForSingletonVideos { return kHidePrevNext ? YES : %orig; }
// Replace Next & Previous with Fast Forward & Rewind buttons
- (BOOL)replaceNextPaddleWithFastForwardButtonForSingletonVods { return kReplacePrevNext ? YES : NO; }
- (BOOL)replacePreviousPaddleWithRewindButtonForSingletonVods { return kReplacePrevNext ? YES : NO; }
- (BOOL)replaceNextPaddleWithFastForwardButtonForSingletonVods { return kReplacePrevNext ? YES : %orig; }
- (BOOL)replacePreviousPaddleWithRewindButtonForSingletonVods { return kReplacePrevNext ? YES : %orig; }
// Disable Free Zoom
- (BOOL)videoZoomFreeZoomEnabledGlobalConfig { return kNoFreeZoom ? NO : YES; }
- (BOOL)videoZoomFreeZoomEnabledGlobalConfig { return kNoFreeZoom ? NO : %orig; }
// Stick Sort Buttons in Comments Section
- (BOOL)enableHideChipsInTheCommentsHeaderOnScrollIos { return kStickSortComments ? NO : %orig; }
// Hide Sort Buttons in Comments Section
- (BOOL)enableChipsInTheCommentsHeaderIos { return kHideSortComments ? NO : %orig; }
// Use System Theme
- (BOOL)shouldUseAppThemeSetting { return YES; }
// Dismiss Panel By Swiping in Fullscreen Mode
- (BOOL)isLandscapeEngagementPanelSwipeRightToDismissEnabled { return YES; }
// Remove Video in Playlist By Swiping To The Right
- (BOOL)enableSwipeToRemoveInPlaylistWatchEp { return YES; }
// Enable Old-style Minibar For Playlist Panel
- (BOOL)queueClientGlobalConfigEnableFloatingPlaylistMinibar { return kPlaylistOldMinibar ? NO : %orig; }
%end
// Remove Dark Background in Overlay
@@ -242,6 +258,11 @@
- (void)updateMiniBarPlayerStateFromRenderer { if (!kMiniplayer) %orig; }
%end
// Portrait Fullscreen
%hook YTWatchViewController
- (unsigned long long)allowedFullScreenOrientations { return kPortraitFullscreen ? UIInterfaceOrientationMaskAllButUpsideDown : %orig; }
%end
// Disable Autoplay
%hook YTPlaybackConfig
- (void)setStartPlayback:(BOOL)arg1 { kDisableAutoplay ? %orig(NO) : %orig; }
@@ -680,6 +701,12 @@ BOOL isTabSelected = NO;
}
%end
// Disable Right-To-Left Formatting
%hook NSParagraphStyle
+ (NSWritingDirection)defaultWritingDirectionForLanguage:(id)lang { return kDisableRTL ? NSWritingDirectionLeftToRight : %orig; }
+ (NSWritingDirection)_defaultWritingDirection { return kDisableRTL ? NSWritingDirectionLeftToRight : %orig; }
%end
static void reloadPrefs() {
NSString *path = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES).firstObject stringByAppendingPathComponent:@"YTLite.plist"];
NSDictionary *prefs = [NSDictionary dictionaryWithContentsOfFile:path];
@@ -705,6 +732,7 @@ static void reloadPrefs() {
kNoPromotionCards = [prefs[@"noPromotionCards"] boolValue] ?: NO;
kNoWatermarks = [prefs[@"noWatermarks"] boolValue] ?: NO;
kMiniplayer = [prefs[@"miniplayer"] boolValue] ?: NO;
kPortraitFullscreen = [prefs[@"portraitFullscreen"] boolValue] ?: NO;
kDisableAutoplay = [prefs[@"disableAutoplay"] boolValue] ?: NO;
kNoContentWarning = [prefs[@"noContentWarning"] boolValue] ?: NO;
kClassicQuality = [prefs[@"classicQuality"] boolValue] ?: NO;
@@ -743,6 +771,12 @@ static void reloadPrefs() {
kRemoveLibrary = [prefs[@"removeLibrary"] boolValue] ?: NO;
kRemovePlayNext = [prefs[@"removePlayNext"] boolValue] ?: NO;
kNoContinueWatching = [prefs[@"noContinueWatching"] boolValue] ?: NO;
kNoSearchHistory = [prefs[@"noSearchHistory"] boolValue] ?: NO;
kNoRelatedWatchNexts = [prefs[@"noRelatedWatchNexts"] boolValue] ?: NO;
kStickSortComments = [prefs[@"stickSortComments"] boolValue] ?: NO;
kHideSortComments = [prefs[@"hideSortComments"] boolValue] ?: NO;
kPlaylistOldMinibar = [prefs[@"playlistOldMinibar"] boolValue] ?: NO;
kDisableRTL = [prefs[@"disableRTL"] boolValue] ?: NO;
kPivotIndex = (prefs[@"pivotIndex"] != nil) ? [prefs[@"pivotIndex"] intValue] : 0;
kAdvancedMode = [prefs[@"advancedMode"] boolValue] ?: NO;
kAdvancedModeReminder = [prefs[@"advancedModeReminder"] boolValue] ?: NO;
@@ -769,6 +803,7 @@ static void reloadPrefs() {
@"noPromotionCards" : @(kNoPromotionCards),
@"noWatermarks" : @(kNoWatermarks),
@"miniplayer" : @(kMiniplayer),
@"portraitFullscreen" : @(kPortraitFullscreen),
@"disableAutoplay" : @(kDisableAutoplay),
@"noContentWarning" : @(kNoContentWarning),
@"classicQuality" : @(kClassicQuality),
@@ -807,6 +842,12 @@ static void reloadPrefs() {
@"removeLibrary" : @(kRemoveLibrary),
@"removePlayNext" : @(kRemovePlayNext),
@"noContinueWatching" : @(kNoContinueWatching),
@"noSearchHistory" : @(kNoSearchHistory),
@"noRelatedWatchNexts" : @(kNoRelatedWatchNexts),
@"stickSortComments" : @(kStickSortComments),
@"hideSortComments" : @(kHideSortComments),
@"playlistOldMinibar" : @(kPlaylistOldMinibar),
@"disableRTL" : @(kDisableRTL),
@"pivotIndex" : @(kPivotIndex),
@"advancedMode" : @(kAdvancedMode),
@"advancedModeReminder" : @(kAdvancedModeReminder)
@@ -47,6 +47,8 @@
"Player" = "Player";
"Miniplayer" = "Enable mini player";
"MiniplayerDesc" = "Enables the mini player for videos that were not originally designed for it, such as videos targeted for children.";
"PortraitFullscreen" = "Portrait fullscreen mode";
"PortraitFullscreenDesc" = "Enables portrait fullscreen mode support.";
"DisableAutoplay" = "Disable Autoplay videos";
"DisableAutoplayDesc" = "Prevents video playback after opening.";
"NoContentWarning" = "Skip content warning";
@@ -127,6 +129,18 @@
"RemovePlayNextDesc" = "Removes \"Play next in queue\" option from menu.";
"NoContinueWatching" = "Remove \"Continue watching\"";
"NoContinueWatchingDesc" = "Removes the \"Continue watching\" section containing unfinished videos from the Home page.";
"NoSearchHistory" = "Hide search history";
"NoSearchHistoryDesc" = "Visually hides search history and suggestions. Note: Your search history will still be accessible in your other YouTube clients.";
"NoRelatedWatchNexts" = "Hide all videos under player";
"NoRelatedWatchNextsDesc" = "Hides all videos below the player, leaving only the video info and comments section.";
"StickSortComments" = "Stick comments header";
"StickSortCommentsDesc" = "Pins sort comments header (Top, Newest) so that it won't disappear while scrolling.";
"HideSortComments" = "Hide comments header";
"HideSortCommentsDesc" = "Hides sort comments header (Top, Newest) so it will never appear.";
"PlaylistOldMinibar" = "Old playlist minibar";
"PlaylistOldMinibarDesc" = "Replaces the new floating playlist panel with the old one.";
"DisableRTL" = "Disable RTL formatting";
"DisableRTLDesc" = "Forcefully displays text in left-to-right (LTR) format for languages that are initially displayed in right-to-left (RTL).";
"Startup" = "Startup page";
"Home" = "Home";
@@ -47,6 +47,8 @@
"Player" = "Reproductor";
"Miniplayer" = "Activar mini reproductor";
"MiniplayerDesc" = "Activa el mini reproductor para vídeos que no fueron diseñados originalmente para ello, como los vídeos dirigidos a niños.";
"PortraitFullscreen" = "Modo de pantalla completa vertical";
"PortraitFullscreenDesc" = "Activa el modo de pantalla completa vertical.";
"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";
@@ -127,6 +129,18 @@
"RemovePlayNextDesc" = "Elimina la opción \"Reproducir siguiente en cola\" del menú.";
"NoContinueWatching" = "Eliminar \"Continuar viendo\"";
"NoContinueWatchingDesc" = "Elimina la sección \"Continuar viendo\" que contiene videos sin terminar de la página de inicio.";
"NoSearchHistory" = "Hide search history";
"NoSearchHistoryDesc" = "Visually hides search history and suggestions. Note: Your search history will still be accessible in your other YouTube clients.";
"NoRelatedWatchNexts" = "Hide all videos under player";
"NoRelatedWatchNextsDesc" = "Hides all videos below the player, leaving only the video info and comments section.";
"StickSortComments" = "Stick comments header";
"StickSortCommentsDesc" = "Pins sort comments header (Top, Newest) so that it won't disappear while scrolling.";
"HideSortComments" = "Hide comments header";
"HideSortCommentsDesc" = "Hides sort comments header (Top, Newest) so it will never appear.";
"PlaylistOldMinibar" = "Old playlist minibar";
"PlaylistOldMinibarDesc" = "Replaces the new floating playlist panel with the old one.";
"DisableRTL" = "Disable RTL formatting";
"DisableRTLDesc" = "Forcefully displays text in left-to-right (LTR) format for languages that are initially displayed in right-to-left (RTL).";
"Startup" = "Página de inicio";
"Home" = "Inicio";
@@ -141,12 +155,12 @@
"About" = "Acerca de";
"Credits" = "Créditos";
"Developer" = "Desarrollador de YTLite";
"ChineseSimplified" = "Chinese (Simplified) localization";
"ChineseTraditional" = "Chinese (Traditional) localization";
"French" = "French localization";
"Spanish" = "Spanish localization";
"ChineseSimplified" = "Traducción: Chino (Simplificado)";
"ChineseTraditional" = "Traducción: Chino (Tradicional)";
"French" = "Traducción: Frances";
"Spanish" = "Traducción: Español";
"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 → %@ → %@ → %@.";
"AdvancedModeReminder" = "¿Desea activar el modo Avanzado para YTLite?\n\nEste modo ofrece más de 50 opciones adicionales para personalizar y optimizar tu experiencia en YouTube. Puedes activarlo/desactivarlo más tarde desde Ajustes → %@ → %@ → %@.";
"ResetSettings" = "Restablecer configuración de YTLite";
"ResetMessage" = "Esta opción restablecerá la configuración de YTLite a los valores predeterminados y cerrará YouTube.\n\n¿Estás seguro de que deseas continuar?";
"Yes" = "Sí";
@@ -47,6 +47,8 @@
"Player" = "Lecteur";
"Miniplayer" = "Activer le mini-lecteur";
"MiniplayerDesc" = "Active le mini-lecteur pour les vidéos qui n'étaient pas initialement conçues pour cela, comme les vidéos destinées aux enfants.";
"PortraitFullscreen" = "Mode plein écran en portrait";
"PortraitFullscreenDesc" = "Active la prise en charge du mode plein écran en portrait.";
"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";
@@ -55,8 +57,8 @@
"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 capture au chapitre";
"DontSnap2ChapterDesc" = "Désactive le passage à l'épisode suivant en effectuant un geste de double-tape.";
"DontSnap2Chapter" = "Désactiver la coupure au chapitre";
"DontSnap2ChapterDesc" = "Désactive le passage à l'épisode suivant en double tapant.";
"RedProgressBar" = "Barre de progression rouge";
@@ -129,6 +131,18 @@
"RemovePlayNextDesc" = "Supprime l'option \"Placer en première position dans la file d'attente\" du menu.";
"NoContinueWatching" = "Supprimer \"Continuer à regarder\"";
"NoContinueWatchingDesc" = "Supprime la section \"Continuer à regarder\" contenant les vidéos inachevées de la page d'accueil.";
"NoSearchHistory" = "Hide search history";
"NoSearchHistoryDesc" = "Visually hides search history and suggestions. Note: Your search history will still be accessible in your other YouTube clients.";
"NoRelatedWatchNexts" = "Hide all videos under player";
"NoRelatedWatchNextsDesc" = "Hides all videos below the player, leaving only the video info and comments section.";
"StickSortComments" = "Stick comments header";
"StickSortCommentsDesc" = "Pins sort comments header (Top, Newest) so that it won't disappear while scrolling.";
"HideSortComments" = "Hide comments header";
"HideSortCommentsDesc" = "Hides sort comments header (Top, Newest) so it will never appear.";
"PlaylistOldMinibar" = "Old playlist minibar";
"PlaylistOldMinibarDesc" = "Replaces the new floating playlist panel with the old one.";
"DisableRTL" = "Disable RTL formatting";
"DisableRTLDesc" = "Forcefully displays text in left-to-right (LTR) format for languages that are initially displayed in right-to-left (RTL).";
"Startup" = "Page de démarrage";
"Home" = "Accueil";
@@ -143,12 +157,12 @@
"About" = "À propos";
"Credits" = "Crédits";
"Developer" = "Développeur YTLite";
"ChineseSimplified" = "Chinese (Simplified) localization";
"ChineseTraditional" = "Chinese (Traditional) localization";
"French" = "French localization";
"Spanish" = "Spanish localization";
"ChineseSimplified" = "Traduction chinoise (simplifiée)";
"ChineseTraditional" = "Traduction chinoise (traditionnelle)";
"French" = "Traduction française";
"Spanish" = "Traduction espagnole";
"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 → %@ → %@ → %@.";
"AdvancedModeReminder" = "Voulez-vous activer le mode avancé pour YTLite ?\n\nCe mode offre plus de 50 options supplémentaires pour personnaliser et optimiser votre expérience YouTube. Vous pouvez l'activer/désactiver ultérieurement depuis Paramètres → %@ → %@ → %@.";
"ResetSettings" = "Réinitialiser les paramètres YTLite";
"ResetMessage" = "Cette option réinitialisera les paramètres YTLite par défaut et fermera YouTube.\n\nÊtes-vous sûr de vouloir continuer ?";
"Yes" = "Oui";
@@ -47,6 +47,8 @@
"Player" = "Настройки плеера";
"Miniplayer" = "Разрешить миниплеер";
"MiniplayerDesc" = "Принудительно активирует миниплеер для видео, в которых изначально не был предназначен (например, видеоролики для детей).";
"PortraitFullscreen" = "Портретный полноэкранный режим";
"PortraitFullscreenDesc" = "Активирует поддержку портретного полноэкранного режима.";
"DisableAutoplay" = "Запретить автовоспроизведение";
"DisableAutoplayDesc" = "Принудительно запрещает автовоспроизведение видео при его открытии.";
"NoContentWarning" = "Пропускать предупреждения";
@@ -63,7 +65,7 @@
"NoHintsDesc" = "Скрывает подсказки от авторов видео, появляющиеся в правом верхнем углу.";
"NoFreeZoom" = "Отключить жесты для зума";
"NoFreeZoomDesc" = "Отключает жесты приближения для нового зума.";
"AutoFullscreen" = "Воспроизводить в полноэкранном режиме";
"AutoFullscreen" = "Открывать в полноэкранном режиме";
"AutoFullscreenDesc" = "Автоматически воспроизводит ролики в полноэкранном режиме.";
"ExitFullscreen" = "Автовыход из полноэкранного режима";
"ExitFullscreenDesc" = "Выходит из полноэкранного режима по окончанию воспроизведения.";
@@ -127,6 +129,18 @@
"RemovePlayNextDesc" = "Убирает опцию «Добавить в начало очереди» из меню видео.";
"NoContinueWatching" = "Отключить «Продолжить просмотр»";
"NoContinueWatchingDesc" = "Удаляет блок «Продолжить просмотр» содержащий недосмотренные видео с Главной страницы.";
"NoSearchHistory" = "Скрыть историю поиска";
"NoSearchHistoryDesc" = "Визуально скрывает историю поиска и подсказок. Данная опция не отменяет трекинг вашей истории поиска.";
"NoRelatedWatchNexts" = "Скрыть все видео под плеером";
"NoRelatedWatchNextsDesc" = "Скрывает все видео под плеером, оставляя только информацию о видео и раздел комментариев.";
"StickSortComments" = "Закрепить панель комментариев";
"StickSortCommentsDesc" = "Закрепляет панель сортировки комментариев, чтобы она не терялись при прокрутке.";
"HideSortComments" = "Скрыть панель комментариев";
"HideSortCommentsDesc" = "Скрывает панель сортировки комментариев.";
"PlaylistOldMinibar" = "Отображать старую панель плейлистов";
"PlaylistOldMinibarDesc" = "Заменяет новую, плавающую панель плейлистов, на старую.";
"DisableRTL" = "Запретить формат «справа налево»";
"DisableRTLDesc" = "Принудительно отображает текст в формате слева направо для языков, изначально отображающихся в формате справа налево.";
"Startup" = "Начальная страница";
"Home" = "Главная";
@@ -47,6 +47,8 @@
"Player" = "播放器";
"Miniplayer" = "启用迷你播放器";
"MiniplayerDesc" = "启用迷你播放器来播放最初不是为其设计的视频,例如针对儿童的视频。";
"PortraitFullscreen" = "竖屏全屏模式";
"PortraitFullscreenDesc" = "启用竖屏全屏模式支持。";
"DisableAutoplay" = "禁用自动播放视频";
"DisableAutoplayDesc" = "打开后防止视频自动播放。";
"NoContentWarning" = "跳过内容警告";
@@ -117,16 +119,28 @@
"HideShortsThanksDesc" = "从短视频播放器中隐藏捐赠按钮。";
"HideShortsChannelName" = "隐藏发布者名称";
"HideShortsChannelNameDesc" = "从短视频播放器中隐藏发布者名称和订阅按钮。";
"HideShortsDescription" = "隐藏说明";
"HideShortsDescriptionDesc" = "在频道名称下隐藏短视频描述。";
"HideShortsAudioTrack" = "隐藏音频音轨";
"HideShortsAudioTrackDesc" = "短视频描述下隐藏音频音轨。";
"HideShortsDescription" = "隐藏文案";
"HideShortsDescriptionDesc" = "隐藏短视频下方的视频文案。";
"HideShortsAudioTrack" = "隐藏音轨";
"HideShortsAudioTrackDesc" = "隐藏短视频文案下方的音轨。";
"Other" = "其他";
"RemovePlayNext" = "删除“播放队列中的下一个”";
"RemovePlayNextDesc" = "从菜单中删除“播放队列中的下一个”选项。";
"NoContinueWatching" = "删除“继续观看”";
"NoContinueWatchingDesc" = "从首页中删除包含未完成视频的“继续观看”部分。";
"NoSearchHistory" = "Hide search history";
"NoSearchHistoryDesc" = "Visually hides search history and suggestions. Note: Your search history will still be accessible in your other YouTube clients.";
"NoRelatedWatchNexts" = "Hide all videos under player";
"NoRelatedWatchNextsDesc" = "Hides all videos below the player, leaving only the video info and comments section.";
"StickSortComments" = "Stick comments header";
"StickSortCommentsDesc" = "Pins sort comments header (Top, Newest) so that it won't disappear while scrolling.";
"HideSortComments" = "Hide comments header";
"HideSortCommentsDesc" = "Hides sort comments header (Top, Newest) so it will never appear.";
"PlaylistOldMinibar" = "Old playlist minibar";
"PlaylistOldMinibarDesc" = "Replaces the new floating playlist panel with the old one.";
"DisableRTL" = "Disable RTL formatting";
"DisableRTLDesc" = "Forcefully displays text in left-to-right (LTR) format for languages that are initially displayed in right-to-left (RTL).";
"Startup" = "启动页";
"Home" = "首页";
@@ -141,13 +155,13 @@
"About" = "关于";
"Credits" = "信息";
"Developer" = "YTLite开发者";
"ChineseSimplified" = "Chinese (Simplified) localization";
"ChineseTraditional" = "Chinese (Traditional) localization";
"French" = "French localization";
"Spanish" = "Spanish localization";
"ChineseSimplified" = "中文(简体)本地化";
"ChineseTraditional" = "中文(繁体)本地化";
"French" = "法语本地化";
"Spanish" = "西班牙语本地化";
"Advanced" = "高级模式";
"AdvancedModeReminder" = "Would you like to activate Advanced mode for YTLite?\n\nThis mode provides more than 50 additional options to customize and optimize your YouTube experience. You can enable/disable it later from Settings → %@ → %@ → %@.";
"AdvancedModeReminder" = "想为YTLite激活高级模式吗?\n\n此模式提供了50多个额外的选项来自定义和优化您的YouTube体验。\n可以稍后从设置中启用/禁用它 → %@ → %@ → %@";
"ResetSettings" = "重置YTLite设置";
"ResetMessage" = "此选项会将YTLite设置重置为默认值并关闭YouTube。\n\n确定要继续吗?";
"Yes" = "是";
"No" = "不";
"No" = "不";
@@ -47,6 +47,8 @@
"Player" = "播放器";
"Miniplayer" = "啟用迷你播放器";
"MiniplayerDesc" = "對於原本不支援迷你播放器的影片(例如針對兒童的影片),啟用迷你播放器";
"PortraitFullscreen" = "直向全螢幕模式";
"PortraitFullscreenDesc" = "啟用直向全螢幕模式";
"DisableAutoplay" = "停用自動播放";
"DisableAutoplayDesc" = "在打開應用程式後防止自動播放影片";
"NoContentWarning" = "略過內容警告";
@@ -127,6 +129,18 @@
"RemovePlayNextDesc" = "從選單移除「播放下一個」";
"NoContinueWatching" = "移除「繼續觀看」";
"NoContinueWatchingDesc" = "從首頁中移除包含未完成影片的「繼續觀看」部分";
"NoSearchHistory" = "Hide search history";
"NoSearchHistoryDesc" = "Visually hides search history and suggestions. Note: Your search history will still be accessible in your other YouTube clients.";
"NoRelatedWatchNexts" = "Hide all videos under player";
"NoRelatedWatchNextsDesc" = "Hides all videos below the player, leaving only the video info and comments section.";
"StickSortComments" = "Stick comments header";
"StickSortCommentsDesc" = "Pins sort comments header (Top, Newest) so that it won't disappear while scrolling.";
"HideSortComments" = "Hide comments header";
"HideSortCommentsDesc" = "Hides sort comments header (Top, Newest) so it will never appear.";
"PlaylistOldMinibar" = "Old playlist minibar";
"PlaylistOldMinibarDesc" = "Replaces the new floating playlist panel with the old one.";
"DisableRTL" = "Disable RTL formatting";
"DisableRTLDesc" = "Forcefully displays text in left-to-right (LTR) format for languages that are initially displayed in right-to-left (RTL).";
"Startup" = "啟動頁面";
"Home" = "首頁";
@@ -141,12 +155,12 @@
"About" = "關於";
"Credits" = "貢獻";
"Developer" = "YTLite開發者";
"ChineseSimplified" = "Chinese (Simplified) localization";
"ChineseTraditional" = "Chinese (Traditional) localization";
"French" = "French localization";
"Spanish" = "Spanish localization";
"ChineseSimplified" = "簡體中文在地化";
"ChineseTraditional" = "繁體中文在地化";
"French" = "法文在地化";
"Spanish" = "西班牙文在地化";
"Advanced" = "進階模式";
"AdvancedModeReminder" = "Would you like to activate Advanced mode for YTLite?\n\nThis mode provides more than 50 additional options to customize and optimize your YouTube experience. You can enable/disable it later from Settings → %@ → %@ → %@.";
"AdvancedModeReminder" = "您是否想啟用YTLite的進階模式?\n\n這個模式提供了50多個額外的選項,可以自訂義和優化您的YouTube使用體驗。您稍後可以在「設定」中 → %@ → %@ → %@ 啟用或停用它。";
"ResetSettings" = "重置YTLite設定";
"ResetMessage" = "這個選項會將YTLite重置為預設值,並關閉Youtube\n\n您確定要繼續嗎?";
"Yes" = "是";
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.