From 3d784259c4fe4f6f4c6d7a6795a85f25371ad132 Mon Sep 17 00:00:00 2001 From: Foxster Date: Thu, 21 Dec 2023 15:47:37 -0800 Subject: [PATCH 01/45] Update .gitignore --- .gitignore | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 34f7c68..65551a9 100644 --- a/.gitignore +++ b/.gitignore @@ -4,4 +4,5 @@ packages/ tmp/ Tweaks/uYou/* !Tweaks/uYou/.gitkeep -Resources/ \ No newline at end of file +Resources/ +*.ipa \ No newline at end of file From 32f65fb33b2a330d2a2dd2d5d309125167e99d4a Mon Sep 17 00:00:00 2001 From: Foxster Date: Thu, 21 Dec 2023 15:48:24 -0800 Subject: [PATCH 02/45] Rename lang/ -> Localizations/ --- Bundles/uYouPlus.bundle | 2 +- {lang => Localizations}/uYouPlus.bundle/Info.plist | 0 .../uYouPlus.bundle/ar.lproj/Localizable.strings | 0 .../uYouPlus.bundle/cz.lproj/Localizable.strings | 0 .../uYouPlus.bundle/de.lproj/Localizable.strings | 0 .../uYouPlus.bundle/el.lproj/Localizable.strings | 0 .../uYouPlus.bundle/en.lproj/Localizable.strings | 0 .../uYouPlus.bundle/es.lproj/Localizable.strings | 0 .../uYouPlus.bundle/fr.lproj/Localizable.strings | 0 .../uYouPlus.bundle/he.lproj/Localizable.strings | 0 .../uYouPlus.bundle/hu.lproj/Localizable.strings | 0 .../uYouPlus.bundle/it.lproj/Localizable.strings | 0 .../uYouPlus.bundle/ja.lproj/Localizable.strings | 0 .../uYouPlus.bundle/ko.lproj/Localizable.strings | 0 .../uYouPlus.bundle/nl.lproj/Localizable.strings | 0 .../uYouPlus.bundle/pl.lproj/Localizable.strings | 0 .../uYouPlus.bundle/pt.lproj/Localizable.strings | 0 .../uYouPlus.bundle/ro.lproj/Localizable.strings | 0 .../uYouPlus.bundle/ru.lproj/Localizable.strings | 0 .../uYouPlus.bundle/template.lproj/Localizable.strings | 0 .../uYouPlus.bundle/tr.lproj/Localizable.strings | 0 .../uYouPlus.bundle/vi.lproj/Localizable.strings | 0 .../uYouPlus.bundle/zh_cn.lproj/Localizable.strings | 0 .../uYouPlus.bundle/zh_tw.lproj/Localizable.strings | 0 Makefile | 2 +- 25 files changed, 2 insertions(+), 2 deletions(-) rename {lang => Localizations}/uYouPlus.bundle/Info.plist (100%) rename {lang => Localizations}/uYouPlus.bundle/ar.lproj/Localizable.strings (100%) rename {lang => Localizations}/uYouPlus.bundle/cz.lproj/Localizable.strings (100%) rename {lang => Localizations}/uYouPlus.bundle/de.lproj/Localizable.strings (100%) rename {lang => Localizations}/uYouPlus.bundle/el.lproj/Localizable.strings (100%) rename {lang => Localizations}/uYouPlus.bundle/en.lproj/Localizable.strings (100%) rename {lang => Localizations}/uYouPlus.bundle/es.lproj/Localizable.strings (100%) rename {lang => Localizations}/uYouPlus.bundle/fr.lproj/Localizable.strings (100%) rename {lang => Localizations}/uYouPlus.bundle/he.lproj/Localizable.strings (100%) rename {lang => Localizations}/uYouPlus.bundle/hu.lproj/Localizable.strings (100%) rename {lang => Localizations}/uYouPlus.bundle/it.lproj/Localizable.strings (100%) rename {lang => Localizations}/uYouPlus.bundle/ja.lproj/Localizable.strings (100%) rename {lang => Localizations}/uYouPlus.bundle/ko.lproj/Localizable.strings (100%) rename {lang => Localizations}/uYouPlus.bundle/nl.lproj/Localizable.strings (100%) rename {lang => Localizations}/uYouPlus.bundle/pl.lproj/Localizable.strings (100%) rename {lang => Localizations}/uYouPlus.bundle/pt.lproj/Localizable.strings (100%) rename {lang => Localizations}/uYouPlus.bundle/ro.lproj/Localizable.strings (100%) rename {lang => Localizations}/uYouPlus.bundle/ru.lproj/Localizable.strings (100%) rename {lang => Localizations}/uYouPlus.bundle/template.lproj/Localizable.strings (100%) rename {lang => Localizations}/uYouPlus.bundle/tr.lproj/Localizable.strings (100%) rename {lang => Localizations}/uYouPlus.bundle/vi.lproj/Localizable.strings (100%) rename {lang => Localizations}/uYouPlus.bundle/zh_cn.lproj/Localizable.strings (100%) rename {lang => Localizations}/uYouPlus.bundle/zh_tw.lproj/Localizable.strings (100%) diff --git a/Bundles/uYouPlus.bundle b/Bundles/uYouPlus.bundle index be7b05d..d7fcaa9 120000 --- a/Bundles/uYouPlus.bundle +++ b/Bundles/uYouPlus.bundle @@ -1 +1 @@ -../lang/uYouPlus.bundle \ No newline at end of file +../Localizations/uYouPlus.bundle \ No newline at end of file diff --git a/lang/uYouPlus.bundle/Info.plist b/Localizations/uYouPlus.bundle/Info.plist similarity index 100% rename from lang/uYouPlus.bundle/Info.plist rename to Localizations/uYouPlus.bundle/Info.plist diff --git a/lang/uYouPlus.bundle/ar.lproj/Localizable.strings b/Localizations/uYouPlus.bundle/ar.lproj/Localizable.strings similarity index 100% rename from lang/uYouPlus.bundle/ar.lproj/Localizable.strings rename to Localizations/uYouPlus.bundle/ar.lproj/Localizable.strings diff --git a/lang/uYouPlus.bundle/cz.lproj/Localizable.strings b/Localizations/uYouPlus.bundle/cz.lproj/Localizable.strings similarity index 100% rename from lang/uYouPlus.bundle/cz.lproj/Localizable.strings rename to Localizations/uYouPlus.bundle/cz.lproj/Localizable.strings diff --git a/lang/uYouPlus.bundle/de.lproj/Localizable.strings b/Localizations/uYouPlus.bundle/de.lproj/Localizable.strings similarity index 100% rename from lang/uYouPlus.bundle/de.lproj/Localizable.strings rename to Localizations/uYouPlus.bundle/de.lproj/Localizable.strings diff --git a/lang/uYouPlus.bundle/el.lproj/Localizable.strings b/Localizations/uYouPlus.bundle/el.lproj/Localizable.strings similarity index 100% rename from lang/uYouPlus.bundle/el.lproj/Localizable.strings rename to Localizations/uYouPlus.bundle/el.lproj/Localizable.strings diff --git a/lang/uYouPlus.bundle/en.lproj/Localizable.strings b/Localizations/uYouPlus.bundle/en.lproj/Localizable.strings similarity index 100% rename from lang/uYouPlus.bundle/en.lproj/Localizable.strings rename to Localizations/uYouPlus.bundle/en.lproj/Localizable.strings diff --git a/lang/uYouPlus.bundle/es.lproj/Localizable.strings b/Localizations/uYouPlus.bundle/es.lproj/Localizable.strings similarity index 100% rename from lang/uYouPlus.bundle/es.lproj/Localizable.strings rename to Localizations/uYouPlus.bundle/es.lproj/Localizable.strings diff --git a/lang/uYouPlus.bundle/fr.lproj/Localizable.strings b/Localizations/uYouPlus.bundle/fr.lproj/Localizable.strings similarity index 100% rename from lang/uYouPlus.bundle/fr.lproj/Localizable.strings rename to Localizations/uYouPlus.bundle/fr.lproj/Localizable.strings diff --git a/lang/uYouPlus.bundle/he.lproj/Localizable.strings b/Localizations/uYouPlus.bundle/he.lproj/Localizable.strings similarity index 100% rename from lang/uYouPlus.bundle/he.lproj/Localizable.strings rename to Localizations/uYouPlus.bundle/he.lproj/Localizable.strings diff --git a/lang/uYouPlus.bundle/hu.lproj/Localizable.strings b/Localizations/uYouPlus.bundle/hu.lproj/Localizable.strings similarity index 100% rename from lang/uYouPlus.bundle/hu.lproj/Localizable.strings rename to Localizations/uYouPlus.bundle/hu.lproj/Localizable.strings diff --git a/lang/uYouPlus.bundle/it.lproj/Localizable.strings b/Localizations/uYouPlus.bundle/it.lproj/Localizable.strings similarity index 100% rename from lang/uYouPlus.bundle/it.lproj/Localizable.strings rename to Localizations/uYouPlus.bundle/it.lproj/Localizable.strings diff --git a/lang/uYouPlus.bundle/ja.lproj/Localizable.strings b/Localizations/uYouPlus.bundle/ja.lproj/Localizable.strings similarity index 100% rename from lang/uYouPlus.bundle/ja.lproj/Localizable.strings rename to Localizations/uYouPlus.bundle/ja.lproj/Localizable.strings diff --git a/lang/uYouPlus.bundle/ko.lproj/Localizable.strings b/Localizations/uYouPlus.bundle/ko.lproj/Localizable.strings similarity index 100% rename from lang/uYouPlus.bundle/ko.lproj/Localizable.strings rename to Localizations/uYouPlus.bundle/ko.lproj/Localizable.strings diff --git a/lang/uYouPlus.bundle/nl.lproj/Localizable.strings b/Localizations/uYouPlus.bundle/nl.lproj/Localizable.strings similarity index 100% rename from lang/uYouPlus.bundle/nl.lproj/Localizable.strings rename to Localizations/uYouPlus.bundle/nl.lproj/Localizable.strings diff --git a/lang/uYouPlus.bundle/pl.lproj/Localizable.strings b/Localizations/uYouPlus.bundle/pl.lproj/Localizable.strings similarity index 100% rename from lang/uYouPlus.bundle/pl.lproj/Localizable.strings rename to Localizations/uYouPlus.bundle/pl.lproj/Localizable.strings diff --git a/lang/uYouPlus.bundle/pt.lproj/Localizable.strings b/Localizations/uYouPlus.bundle/pt.lproj/Localizable.strings similarity index 100% rename from lang/uYouPlus.bundle/pt.lproj/Localizable.strings rename to Localizations/uYouPlus.bundle/pt.lproj/Localizable.strings diff --git a/lang/uYouPlus.bundle/ro.lproj/Localizable.strings b/Localizations/uYouPlus.bundle/ro.lproj/Localizable.strings similarity index 100% rename from lang/uYouPlus.bundle/ro.lproj/Localizable.strings rename to Localizations/uYouPlus.bundle/ro.lproj/Localizable.strings diff --git a/lang/uYouPlus.bundle/ru.lproj/Localizable.strings b/Localizations/uYouPlus.bundle/ru.lproj/Localizable.strings similarity index 100% rename from lang/uYouPlus.bundle/ru.lproj/Localizable.strings rename to Localizations/uYouPlus.bundle/ru.lproj/Localizable.strings diff --git a/lang/uYouPlus.bundle/template.lproj/Localizable.strings b/Localizations/uYouPlus.bundle/template.lproj/Localizable.strings similarity index 100% rename from lang/uYouPlus.bundle/template.lproj/Localizable.strings rename to Localizations/uYouPlus.bundle/template.lproj/Localizable.strings diff --git a/lang/uYouPlus.bundle/tr.lproj/Localizable.strings b/Localizations/uYouPlus.bundle/tr.lproj/Localizable.strings similarity index 100% rename from lang/uYouPlus.bundle/tr.lproj/Localizable.strings rename to Localizations/uYouPlus.bundle/tr.lproj/Localizable.strings diff --git a/lang/uYouPlus.bundle/vi.lproj/Localizable.strings b/Localizations/uYouPlus.bundle/vi.lproj/Localizable.strings similarity index 100% rename from lang/uYouPlus.bundle/vi.lproj/Localizable.strings rename to Localizations/uYouPlus.bundle/vi.lproj/Localizable.strings diff --git a/lang/uYouPlus.bundle/zh_cn.lproj/Localizable.strings b/Localizations/uYouPlus.bundle/zh_cn.lproj/Localizable.strings similarity index 100% rename from lang/uYouPlus.bundle/zh_cn.lproj/Localizable.strings rename to Localizations/uYouPlus.bundle/zh_cn.lproj/Localizable.strings diff --git a/lang/uYouPlus.bundle/zh_tw.lproj/Localizable.strings b/Localizations/uYouPlus.bundle/zh_tw.lproj/Localizable.strings similarity index 100% rename from lang/uYouPlus.bundle/zh_tw.lproj/Localizable.strings rename to Localizations/uYouPlus.bundle/zh_tw.lproj/Localizable.strings diff --git a/Makefile b/Makefile index 3d6e6c9..016f1c9 100644 --- a/Makefile +++ b/Makefile @@ -71,5 +71,5 @@ before-all:: fi; else before-package:: - @mkdir -p $(THEOS_STAGING_DIR)/Library/Application\ Support; cp -r lang/uYouPlus.bundle $(THEOS_STAGING_DIR)/Library/Application\ Support/ + @mkdir -p $(THEOS_STAGING_DIR)/Library/Application\ Support; cp -r Localizations/uYouPlus.bundle $(THEOS_STAGING_DIR)/Library/Application\ Support/ endif From c4a4316d2aa16ccee89b66dee91abd3452e029d5 Mon Sep 17 00:00:00 2001 From: Foxster Date: Thu, 21 Dec 2023 15:51:52 -0800 Subject: [PATCH 03/45] Create build.sh --- build.sh | 2 ++ buildapp.sh | 8 -------- 2 files changed, 2 insertions(+), 8 deletions(-) create mode 100755 build.sh delete mode 100755 buildapp.sh diff --git a/build.sh b/build.sh new file mode 100755 index 0000000..93b764a --- /dev/null +++ b/build.sh @@ -0,0 +1,2 @@ +# To build, place the IPA file in the project's root directory, then run `./build.sh` +make package IPA=$(pwd)*.ipa FINALPACKAGE=1 \ No newline at end of file diff --git a/buildapp.sh b/buildapp.sh deleted file mode 100755 index 2067e16..0000000 --- a/buildapp.sh +++ /dev/null @@ -1,8 +0,0 @@ -read -p $'\e[34m==> \e[1;39mPath to the decrypted YouTube.ipa or YouTube.app: ' PATHTOYT -make package IPA=$PATHTOYT FINALPACKAGE=1 -if [[ $? -eq 0 ]]; then - open packages - echo "\033[0;32m==> \033[1;39mSHASUM256: $(shasum -a 256 packages/*.ipa)" -else - echo "\033[0;31m==> \033[1;39mFailed building uYouPlus" -fi \ No newline at end of file From e7666dea195ff864d12c283042fe85227704219a Mon Sep 17 00:00:00 2001 From: Foxster Date: Thu, 21 Dec 2023 15:54:36 -0800 Subject: [PATCH 04/45] Move source files to Sources/ --- Makefile | 2 +- Settings.xm => Sources/Settings.xm | 12 ++++----- uYouPlus.h => Sources/uYouPlus.h | 40 +++++++++++++++--------------- uYouPlus.xm => Sources/uYouPlus.xm | 0 4 files changed, 27 insertions(+), 27 deletions(-) rename Settings.xm => Sources/Settings.xm (98%) rename uYouPlus.h => Sources/uYouPlus.h (76%) rename uYouPlus.xm => Sources/uYouPlus.xm (100%) diff --git a/Makefile b/Makefile index 016f1c9..6b95bf2 100644 --- a/Makefile +++ b/Makefile @@ -26,7 +26,7 @@ TWEAK_NAME = uYouPlus DISPLAY_NAME = YouTube BUNDLE_ID = com.google.ios.youtube -$(TWEAK_NAME)_FILES = uYouPlus.xm Settings.xm +$(TWEAK_NAME)_FILES = Sources/uYouPlus.xm Sources/Settings.xm $(TWEAK_NAME)_FRAMEWORKS = UIKit Security $(TWEAK_NAME)_CFLAGS = -fobjc-arc -DTWEAK_VERSION=\"$(PACKAGE_VERSION)\" $(TWEAK_NAME)_INJECT_DYLIBS = Tweaks/uYou/Library/MobileSubstrate/DynamicLibraries/uYou.dylib $(THEOS_OBJ_DIR)/libFLEX.dylib $(THEOS_OBJ_DIR)/iSponsorBlock.dylib $(THEOS_OBJ_DIR)/YouPiP.dylib $(THEOS_OBJ_DIR)/YouTubeDislikesReturn.dylib $(THEOS_OBJ_DIR)/YTABConfig.dylib $(THEOS_OBJ_DIR)/YTUHD.dylib $(THEOS_OBJ_DIR)/DontEatMyContent.dylib diff --git a/Settings.xm b/Sources/Settings.xm similarity index 98% rename from Settings.xm rename to Sources/Settings.xm index 08039be..41adf96 100644 --- a/Settings.xm +++ b/Sources/Settings.xm @@ -1,9 +1,9 @@ -#import "Tweaks/YouTubeHeader/YTSettingsViewController.h" -#import "Tweaks/YouTubeHeader/YTSearchableSettingsViewController.h" -#import "Tweaks/YouTubeHeader/YTSettingsSectionItem.h" -#import "Tweaks/YouTubeHeader/YTSettingsSectionItemManager.h" -#import "Tweaks/YouTubeHeader/YTUIUtils.h" -#import "Tweaks/YouTubeHeader/YTSettingsPickerViewController.h" +#import "../Tweaks/YouTubeHeader/YTSettingsViewController.h" +#import "../Tweaks/YouTubeHeader/YTSearchableSettingsViewController.h" +#import "../Tweaks/YouTubeHeader/YTSettingsSectionItem.h" +#import "../Tweaks/YouTubeHeader/YTSettingsSectionItemManager.h" +#import "../Tweaks/YouTubeHeader/YTUIUtils.h" +#import "../Tweaks/YouTubeHeader/YTSettingsPickerViewController.h" #import "uYouPlus.h" static BOOL IsEnabled(NSString *key) { diff --git a/uYouPlus.h b/Sources/uYouPlus.h similarity index 76% rename from uYouPlus.h rename to Sources/uYouPlus.h index f099c12..0b37baa 100644 --- a/uYouPlus.h +++ b/Sources/uYouPlus.h @@ -1,5 +1,5 @@ -#import "Tweaks/YouTubeHeader/YTAppDelegate.h" -#import "Tweaks/YouTubeHeader/YTPlayerViewController.h" +#import "../Tweaks/YouTubeHeader/YTAppDelegate.h" +#import "../Tweaks/YouTubeHeader/YTPlayerViewController.h" #import #import #import @@ -7,24 +7,24 @@ #import #import #import -#import "Tweaks/YouTubeHeader/YTVideoQualitySwitchOriginalController.h" -#import "Tweaks/YouTubeHeader/YTPlayerViewController.h" -#import "Tweaks/YouTubeHeader/YTWatchController.h" -#import "Tweaks/YouTubeHeader/YTIGuideResponse.h" -#import "Tweaks/YouTubeHeader/YTIGuideResponseSupportedRenderers.h" -#import "Tweaks/YouTubeHeader/YTIPivotBarSupportedRenderers.h" -#import "Tweaks/YouTubeHeader/YTIPivotBarRenderer.h" -#import "Tweaks/YouTubeHeader/YTIBrowseRequest.h" -#import "Tweaks/YouTubeHeader/YTCommonColorPalette.h" -#import "Tweaks/YouTubeHeader/ASCollectionView.h" -#import "Tweaks/YouTubeHeader/YTPlayerOverlay.h" -#import "Tweaks/YouTubeHeader/YTPlayerOverlayProvider.h" -#import "Tweaks/YouTubeHeader/YTReelWatchPlaybackOverlayView.h" -#import "Tweaks/YouTubeHeader/YTReelPlayerBottomButton.h" -#import "Tweaks/YouTubeHeader/YTReelPlayerViewController.h" -#import "Tweaks/YouTubeHeader/YTAlertView.h" -#import "Tweaks/YouTubeHeader/YTISectionListRenderer.h" -#import "Tweaks/YouTubeHeader/YTIMenuConditionalServiceItemRenderer.h" +#import "../Tweaks/YouTubeHeader/YTVideoQualitySwitchOriginalController.h" +#import "../Tweaks/YouTubeHeader/YTPlayerViewController.h" +#import "../Tweaks/YouTubeHeader/YTWatchController.h" +#import "../Tweaks/YouTubeHeader/YTIGuideResponse.h" +#import "../Tweaks/YouTubeHeader/YTIGuideResponseSupportedRenderers.h" +#import "../Tweaks/YouTubeHeader/YTIPivotBarSupportedRenderers.h" +#import "../Tweaks/YouTubeHeader/YTIPivotBarRenderer.h" +#import "../Tweaks/YouTubeHeader/YTIBrowseRequest.h" +#import "../Tweaks/YouTubeHeader/YTCommonColorPalette.h" +#import "../Tweaks/YouTubeHeader/ASCollectionView.h" +#import "../Tweaks/YouTubeHeader/YTPlayerOverlay.h" +#import "../Tweaks/YouTubeHeader/YTPlayerOverlayProvider.h" +#import "../Tweaks/YouTubeHeader/YTReelWatchPlaybackOverlayView.h" +#import "../Tweaks/YouTubeHeader/YTReelPlayerBottomButton.h" +#import "../Tweaks/YouTubeHeader/YTReelPlayerViewController.h" +#import "../Tweaks/YouTubeHeader/YTAlertView.h" +#import "../Tweaks/YouTubeHeader/YTISectionListRenderer.h" +#import "../Tweaks/YouTubeHeader/YTIMenuConditionalServiceItemRenderer.h" #define LOC(x) [tweakBundle localizedStringForKey:x value:nil table:nil] #define YT_BUNDLE_ID @"com.google.ios.youtube" diff --git a/uYouPlus.xm b/Sources/uYouPlus.xm similarity index 100% rename from uYouPlus.xm rename to Sources/uYouPlus.xm From 11783bc6061cce14d837dab0f9ddb05457f87e8e Mon Sep 17 00:00:00 2001 From: Foxster Date: Thu, 21 Dec 2023 16:41:14 -0800 Subject: [PATCH 05/45] Move patches to Patches.xm --- Makefile | 2 +- Sources/Patches.xm | 103 ++++++++++++++++++++++++++++++++++++++++++ Sources/uYouPlus.xm | 106 ++------------------------------------------ 3 files changed, 108 insertions(+), 103 deletions(-) create mode 100644 Sources/Patches.xm diff --git a/Makefile b/Makefile index 6b95bf2..6e4cbf8 100644 --- a/Makefile +++ b/Makefile @@ -26,7 +26,7 @@ TWEAK_NAME = uYouPlus DISPLAY_NAME = YouTube BUNDLE_ID = com.google.ios.youtube -$(TWEAK_NAME)_FILES = Sources/uYouPlus.xm Sources/Settings.xm +$(TWEAK_NAME)_FILES = Sources/uYouPlus.xm Sources/Settings.xm Sources/Patches.xm $(TWEAK_NAME)_FRAMEWORKS = UIKit Security $(TWEAK_NAME)_CFLAGS = -fobjc-arc -DTWEAK_VERSION=\"$(PACKAGE_VERSION)\" $(TWEAK_NAME)_INJECT_DYLIBS = Tweaks/uYou/Library/MobileSubstrate/DynamicLibraries/uYou.dylib $(THEOS_OBJ_DIR)/libFLEX.dylib $(THEOS_OBJ_DIR)/iSponsorBlock.dylib $(THEOS_OBJ_DIR)/YouPiP.dylib $(THEOS_OBJ_DIR)/YouTubeDislikesReturn.dylib $(THEOS_OBJ_DIR)/YTABConfig.dylib $(THEOS_OBJ_DIR)/YTUHD.dylib $(THEOS_OBJ_DIR)/DontEatMyContent.dylib diff --git a/Sources/Patches.xm b/Sources/Patches.xm new file mode 100644 index 0000000..691aec6 --- /dev/null +++ b/Sources/Patches.xm @@ -0,0 +1,103 @@ +#import "uYouPlus.h" + +# pragma mark - YouTube patches + +// Fix Google Sign in by @PoomSmart and @level3tjg (qnblackcat/uYouPlus#684) +%hook NSBundle +- (NSDictionary *)infoDictionary { + NSMutableDictionary *info = %orig.mutableCopy; + NSString *altBundleIdentifier = info[@"ALTBundleIdentifier"]; + if (altBundleIdentifier) info[@"CFBundleIdentifier"] = altBundleIdentifier; + return info; +} +%end + +// Workaround for MiRO92/uYou-for-YouTube#12, qnblackcat/uYouPlus#263 +%hook YTDataUtils ++ (NSMutableDictionary *)spamSignalsDictionary { + return nil; +} ++ (NSMutableDictionary *)spamSignalsDictionaryWithoutIDFA { + return nil; +} +%end + +%hook YTHotConfig +- (BOOL)disableAfmaIdfaCollection { return NO; } +%end + +// https://github.com/PoomSmart/YouTube-X/blob/1e62b68e9027fcb849a75f54a402a530385f2a51/Tweak.x#L27 +// %hook YTAdsInnerTubeContextDecorator +// - (void)decorateContext:(id)context {} +// %end + +# pragma mark - uYou patches + +// Workaround for qnblackcat/uYouPlus#10 +%hook UIViewController +- (UITraitCollection *)traitCollection { + @try { + return %orig; + } @catch(NSException *e) { + return [UITraitCollection currentTraitCollection]; + } +} +%end + +// Prevent uYou player bar from showing when not playing downloaded media +%hook PlayerManager +- (void)pause { + if (isnan([self progress])) + return; + %orig; +} +%end + +// Workaround for issue #54 +%hook YTMainAppVideoPlayerOverlayViewController +- (void)updateRelatedVideos { + if ([[NSUserDefaults standardUserDefaults] boolForKey:@"relatedVideosAtTheEndOfYTVideos"] == NO) {} + else { return %orig; } +} +%end + +// iOS 16 uYou crash fix - @level3tjg: https://github.com/qnblackcat/uYouPlus/pull/224 +%group iOS16 +%hook OBPrivacyLinkButton +%new +- (instancetype)initWithCaption:(NSString *)caption + buttonText:(NSString *)buttonText + image:(UIImage *)image + imageSize:(CGSize)imageSize + useLargeIcon:(BOOL)useLargeIcon { + return [self initWithCaption:caption + buttonText:buttonText + image:image + imageSize:imageSize + useLargeIcon:useLargeIcon + displayLanguage:[NSLocale currentLocale].languageCode]; +} +%end +%end + +// Fix streched artwork in uYou's player view - https://github.com/MiRO92/uYou-for-YouTube/issues/287 +%hook ArtworkImageView +- (id)imageView { + UIImageView * imageView = %orig; + imageView.contentMode = UIViewContentModeScaleAspectFit; + // Make artwork a bit bigger + UIView *artworkImageView = imageView.superview; + if (artworkImageView != nil && !artworkImageView.translatesAutoresizingMaskIntoConstraints) { + [artworkImageView.leftAnchor constraintEqualToAnchor:artworkImageView.superview.leftAnchor constant:16].active = YES; + [artworkImageView.rightAnchor constraintEqualToAnchor:artworkImageView.superview.rightAnchor constant:-16].active = YES; + } + return imageView; +} +%end + +%ctor { + %init; + if (@available(iOS 16, *)) { + %init(iOS16); + } +} \ No newline at end of file diff --git a/Sources/uYouPlus.xm b/Sources/uYouPlus.xm index 8a12883..f35631e 100644 --- a/Sources/uYouPlus.xm +++ b/Sources/uYouPlus.xm @@ -29,55 +29,9 @@ static BOOL oldDarkTheme() { return ([[NSUserDefaults standardUserDefaults] integerForKey:@"appTheme"] == 2); } -// -# pragma mark - uYou's patches -// Workaround for qnblackcat/uYouPlus#10 -%hook UIViewController -- (UITraitCollection *)traitCollection { - @try { - return %orig; - } @catch(NSException *e) { - return [UITraitCollection currentTraitCollection]; - } -} -%end - -// Prevent uYou player bar from showing when not playing downloaded media -%hook PlayerManager -- (void)pause { - if (isnan([self progress])) - return; - %orig; -} -%end - -// Workaround for issue #54 -%hook YTMainAppVideoPlayerOverlayViewController -- (void)updateRelatedVideos { - if ([[NSUserDefaults standardUserDefaults] boolForKey:@"relatedVideosAtTheEndOfYTVideos"] == NO) {} - else { return %orig; } -} -%end - -// iOS 16 uYou crash fix - @level3tjg: https://github.com/qnblackcat/uYouPlus/pull/224 -%group iOS16 -%hook OBPrivacyLinkButton -%new -- (instancetype)initWithCaption:(NSString *)caption - buttonText:(NSString *)buttonText - image:(UIImage *)image - imageSize:(CGSize)imageSize - useLargeIcon:(BOOL)useLargeIcon { - return [self initWithCaption:caption - buttonText:buttonText - image:image - imageSize:imageSize - useLargeIcon:useLargeIcon - displayLanguage:[NSLocale currentLocale].languageCode]; -} -%end -%end +# pragma mark - Tweaks +// FLEX %hook YTAppDelegate - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { @@ -97,26 +51,6 @@ static BOOL oldDarkTheme() { } %end -# pragma mark - YouTube's patches -// Workaround for MiRO92/uYou-for-YouTube#12, qnblackcat/uYouPlus#263 -%hook YTDataUtils -+ (NSMutableDictionary *)spamSignalsDictionary { - return nil; -} -+ (NSMutableDictionary *)spamSignalsDictionaryWithoutIDFA { - return nil; -} -%end - -%hook YTHotConfig -- (BOOL)disableAfmaIdfaCollection { return NO; } -%end - -// https://github.com/PoomSmart/YouTube-X/blob/1e62b68e9027fcb849a75f54a402a530385f2a51/Tweak.x#L27 -// %hook YTAdsInnerTubeContextDecorator -// - (void)decorateContext:(id)context {} -// %end - // Hide YouTube annoying banner in Home page? - @MiRO92 - YTNoShorts: https://github.com/MiRO92/YTNoShorts %hook YTAsyncCollectionView - (id)cellForItemAtIndexPath:(NSIndexPath *)indexPath { @@ -137,29 +71,6 @@ static BOOL oldDarkTheme() { } %end -// Fix streched artwork in uYou's player view -%hook ArtworkImageView -- (id)imageView { - UIImageView * imageView = %orig; - imageView.contentMode = UIViewContentModeScaleAspectFit; - // Make artwork a bit bigger - UIView *artworkImageView = imageView.superview; - if (artworkImageView != nil && !artworkImageView.translatesAutoresizingMaskIntoConstraints) { - [artworkImageView.leftAnchor constraintEqualToAnchor:artworkImageView.superview.leftAnchor constant:16].active = YES; - [artworkImageView.rightAnchor constraintEqualToAnchor:artworkImageView.superview.rightAnchor constant:-16].active = YES; - } - return imageView; -} -%end - -// Remove “Play next in queue” from the menu (@PoomSmart) - qnblackcat/uYouPlus#1138 -%hook YTMenuItemVisibilityHandler -- (BOOL)shouldShowServiceItemRenderer:(YTIMenuConditionalServiceItemRenderer *)renderer { - return IsEnabled(@"hidePlayNextInQueue_enabled") && renderer.icon.iconType == 251 ? NO : %orig; -} -%end - -# pragma mark - Tweaks // IAmYouTube - https://github.com/PoomSmart/IAmYouTube/ %hook YTVersionUtils + (NSString *)appName { return YT_NAME; } @@ -221,13 +132,6 @@ static BOOL oldDarkTheme() { return YT_NAME; return %orig; } -// Fix Google Sign in by @PoomSmart and @level3tjg (qnblackcat/uYouPlus#684) -- (NSDictionary *)infoDictionary { - NSMutableDictionary *info = %orig.mutableCopy; - NSString *altBundleIdentifier = info[@"ALTBundleIdentifier"]; - if (altBundleIdentifier) info[@"CFBundleIdentifier"] = altBundleIdentifier; - return info; -} %end // YTMiniPlayerEnabler: https://github.com/level3tjg/YTMiniplayerEnabler/ @@ -247,7 +151,7 @@ static BOOL oldDarkTheme() { } %end -//YTCastConfirm: https://github.com/JamieBerghmans/YTCastConfirm +// YTCastConfirm: https://github.com/JamieBerghmans/YTCastConfirm %hook MDXPlaybackRouteButtonController - (void)didPressButton:(id)arg1 { if (IsEnabled(@"castConfirm_enabled")) { @@ -454,6 +358,7 @@ static void replaceTab(YTIGuideResponse *response) { %end # pragma mark - uYouPlus + // Video Player Options // Skips content warning before playing *some videos - @PoomSmart %hook YTPlayabilityResolutionUserActionUIController @@ -979,9 +884,6 @@ UIColor* raisedColor = [UIColor colorWithRed:0.035 green:0.035 blue:0.035 alpha: // dlopen([[NSString stringWithFormat:@"%@/Frameworks/uYou.dylib", [[NSBundle mainBundle] bundlePath]] UTF8String], RTLD_LAZY); %init; - if (@available(iOS 16, *)) { - %init(iOS16); - } if (IsEnabled(@"reExplore_enabled")) { %init(gReExplore); } From 787870cab726ed12dd349d6e166d11dd68c23bc6 Mon Sep 17 00:00:00 2001 From: Foxster Date: Thu, 21 Dec 2023 17:56:17 -0800 Subject: [PATCH 06/45] Convert simple functions to macros --- Sources/Settings.xm | 66 +++++++++++------------- Sources/uYouPlus.h | 7 ++- Sources/uYouPlus.xm | 122 ++++++++++++++++++++------------------------ 3 files changed, 91 insertions(+), 104 deletions(-) diff --git a/Sources/Settings.xm b/Sources/Settings.xm index 41adf96..8d3d592 100644 --- a/Sources/Settings.xm +++ b/Sources/Settings.xm @@ -6,12 +6,6 @@ #import "../Tweaks/YouTubeHeader/YTSettingsPickerViewController.h" #import "uYouPlus.h" -static BOOL IsEnabled(NSString *key) { - return [[NSUserDefaults standardUserDefaults] boolForKey:key]; -} -static int GetSelection(NSString *key) { - return [[NSUserDefaults standardUserDefaults] integerForKey:key]; -} static const NSInteger uYouPlusSection = 500; @interface YTSettingsSectionItemManager (uYouPlus) @@ -62,7 +56,7 @@ extern NSBundle *uYouPlusBundle(); [YTSettingsSectionItemClass switchItemWithTitle:LOC(@"DISABLE_DOUBLE_TAP_TO_SEEK") titleDescription:LOC(@"DISABLE_DOUBLE_TAP_TO_SEEK_DESC") accessibilityIdentifier:nil - switchOn:IsEnabled(@"doubleTapToSeek_disabled") + switchOn:IS_ENABLED(@"doubleTapToSeek_disabled") switchBlock:^BOOL (YTSettingsCell *cell, BOOL enabled) { [[NSUserDefaults standardUserDefaults] setBool:enabled forKey:@"doubleTapToSeek_disabled"]; return YES; @@ -72,7 +66,7 @@ extern NSBundle *uYouPlusBundle(); [YTSettingsSectionItemClass switchItemWithTitle:LOC(@"SNAP_TO_CHAPTER") titleDescription:LOC(@"SNAP_TO_CHAPTER_DESC") accessibilityIdentifier:nil - switchOn:IsEnabled(@"snapToChapter_enabled") + switchOn:IS_ENABLED(@"snapToChapter_enabled") switchBlock:^BOOL (YTSettingsCell *cell, BOOL enabled) { [[NSUserDefaults standardUserDefaults] setBool:enabled forKey:@"snapToChapter_enabled"]; return YES; @@ -82,7 +76,7 @@ extern NSBundle *uYouPlusBundle(); [YTSettingsSectionItemClass switchItemWithTitle:LOC(@"PINCH_TO_ZOOM") titleDescription:LOC(@"PINCH_TO_ZOOM_DESC") accessibilityIdentifier:nil - switchOn:IsEnabled(@"pinchToZoom_enabled") + switchOn:IS_ENABLED(@"pinchToZoom_enabled") switchBlock:^BOOL (YTSettingsCell *cell, BOOL enabled) { [[NSUserDefaults standardUserDefaults] setBool:enabled forKey:@"pinchToZoom_enabled"]; return YES; @@ -92,7 +86,7 @@ extern NSBundle *uYouPlusBundle(); [YTSettingsSectionItemClass switchItemWithTitle:LOC(@"YT_MINIPLAYER") titleDescription:LOC(@"YT_MINIPLAYER_DESC") accessibilityIdentifier:nil - switchOn:IsEnabled(@"ytMiniPlayer_enabled") + switchOn:IS_ENABLED(@"ytMiniPlayer_enabled") switchBlock:^BOOL (YTSettingsCell *cell, BOOL enabled) { [[NSUserDefaults standardUserDefaults] setBool:enabled forKey:@"ytMiniPlayer_enabled"]; return YES; @@ -102,7 +96,7 @@ extern NSBundle *uYouPlusBundle(); [YTSettingsSectionItemClass switchItemWithTitle:LOC(@"STOCK_VOLUME_HUD") titleDescription:LOC(@"STOCK_VOLUME_HUD_DESC") accessibilityIdentifier:nil - switchOn:IsEnabled(@"stockVolumeHUD_enabled") + switchOn:IS_ENABLED(@"stockVolumeHUD_enabled") switchBlock:^BOOL (YTSettingsCell *cell, BOOL enabled) { [[NSUserDefaults standardUserDefaults] setBool:enabled forKey:@"stockVolumeHUD_enabled"]; return YES; @@ -122,7 +116,7 @@ extern NSBundle *uYouPlusBundle(); [YTSettingsSectionItemClass switchItemWithTitle:LOC(@"HIDE_AUTOPLAY_SWITCH") titleDescription:LOC(@"HIDE_AUTOPLAY_SWITCH_DESC") accessibilityIdentifier:nil - switchOn:IsEnabled(@"hideAutoplaySwitch_enabled") + switchOn:IS_ENABLED(@"hideAutoplaySwitch_enabled") switchBlock:^BOOL (YTSettingsCell *cell, BOOL enabled) { [[NSUserDefaults standardUserDefaults] setBool:enabled forKey:@"hideAutoplaySwitch_enabled"]; return YES; @@ -132,7 +126,7 @@ extern NSBundle *uYouPlusBundle(); [YTSettingsSectionItemClass switchItemWithTitle:LOC(@"HIDE_SUBTITLES_BUTTON") titleDescription:LOC(@"HIDE_SUBTITLES_BUTTON_DESC") accessibilityIdentifier:nil - switchOn:IsEnabled(@"hideCC_enabled") + switchOn:IS_ENABLED(@"hideCC_enabled") switchBlock:^BOOL (YTSettingsCell *cell, BOOL enabled) { [[NSUserDefaults standardUserDefaults] setBool:enabled forKey:@"hideCC_enabled"]; return YES; @@ -142,7 +136,7 @@ extern NSBundle *uYouPlusBundle(); [YTSettingsSectionItemClass switchItemWithTitle:LOC(@"HIDE_HUD_MESSAGES") titleDescription:LOC(@"HIDE_HUD_MESSAGES_DESC") accessibilityIdentifier:nil - switchOn:IsEnabled(@"hideHUD_enabled") + switchOn:IS_ENABLED(@"hideHUD_enabled") switchBlock:^BOOL (YTSettingsCell *cell, BOOL enabled) { [[NSUserDefaults standardUserDefaults] setBool:enabled forKey:@"hideHUD_enabled"]; return YES; @@ -152,7 +146,7 @@ extern NSBundle *uYouPlusBundle(); [YTSettingsSectionItemClass switchItemWithTitle:LOC(@"HIDE_PAID_PROMOTION_CARDS") titleDescription:LOC(@"HIDE_PAID_PROMOTION_CARDS_DESC") accessibilityIdentifier:nil - switchOn:IsEnabled(@"hidePaidPromotionCard_enabled") + switchOn:IS_ENABLED(@"hidePaidPromotionCard_enabled") switchBlock:^BOOL (YTSettingsCell *cell, BOOL enabled) { [[NSUserDefaults standardUserDefaults] setBool:enabled forKey:@"hidePaidPromotionCard_enabled"]; return YES; @@ -162,7 +156,7 @@ extern NSBundle *uYouPlusBundle(); [YTSettingsSectionItemClass switchItemWithTitle:LOC(@"HIDE_CHANNEL_WATERMARK") titleDescription:LOC(@"HIDE_CHANNEL_WATERMARK_DESC") accessibilityIdentifier:nil - switchOn:IsEnabled(@"hideChannelWatermark_enabled") + switchOn:IS_ENABLED(@"hideChannelWatermark_enabled") switchBlock:^BOOL (YTSettingsCell *cell, BOOL enabled) { [[NSUserDefaults standardUserDefaults] setBool:enabled forKey:@"hideChannelWatermark_enabled"]; return YES; @@ -172,7 +166,7 @@ extern NSBundle *uYouPlusBundle(); [YTSettingsSectionItemClass switchItemWithTitle:LOC(@"HIDE_PREVIOUS_AND_NEXT_BUTTON") titleDescription:LOC(@"HIDE_PREVIOUS_AND_NEXT_BUTTON_DESC") accessibilityIdentifier:nil - switchOn:IsEnabled(@"hidePreviousAndNextButton_enabled") + switchOn:IS_ENABLED(@"hidePreviousAndNextButton_enabled") switchBlock:^BOOL (YTSettingsCell *cell, BOOL enabled) { [[NSUserDefaults standardUserDefaults] setBool:enabled forKey:@"hidePreviousAndNextButton_enabled"]; return YES; @@ -182,7 +176,7 @@ extern NSBundle *uYouPlusBundle(); [YTSettingsSectionItemClass switchItemWithTitle:LOC(@"REPLACE_PREVIOUS_NEXT_BUTTON") titleDescription:LOC(@"REPLACE_PREVIOUS_NEXT_BUTTON_DESC") accessibilityIdentifier:nil - switchOn:IsEnabled(@"replacePreviousAndNextButton_enabled") + switchOn:IS_ENABLED(@"replacePreviousAndNextButton_enabled") switchBlock:^BOOL (YTSettingsCell *cell, BOOL enabled) { [[NSUserDefaults standardUserDefaults] setBool:enabled forKey:@"replacePreviousAndNextButton_enabled"]; return YES; @@ -192,7 +186,7 @@ extern NSBundle *uYouPlusBundle(); [YTSettingsSectionItemClass switchItemWithTitle:LOC(@"RED_PROGRESS_BAR") titleDescription:LOC(@"RED_PROGRESS_BAR_DESC") accessibilityIdentifier:nil - switchOn:IsEnabled(@"redProgressBar_enabled") + switchOn:IS_ENABLED(@"redProgressBar_enabled") switchBlock:^BOOL (YTSettingsCell *cell, BOOL enabled) { [[NSUserDefaults standardUserDefaults] setBool:enabled forKey:@"redProgressBar_enabled"]; return YES; @@ -202,7 +196,7 @@ extern NSBundle *uYouPlusBundle(); [YTSettingsSectionItemClass switchItemWithTitle:LOC(@"HIDE_HOVER_CARD") titleDescription:LOC(@"HIDE_HOVER_CARD_DESC") accessibilityIdentifier:nil - switchOn:IsEnabled(@"hideHoverCards_enabled") + switchOn:IS_ENABLED(@"hideHoverCards_enabled") switchBlock:^BOOL (YTSettingsCell *cell, BOOL enabled) { [[NSUserDefaults standardUserDefaults] setBool:enabled forKey:@"hideHoverCards_enabled"]; return YES; @@ -212,7 +206,7 @@ extern NSBundle *uYouPlusBundle(); [YTSettingsSectionItemClass switchItemWithTitle:LOC(@"HIDE_RIGHT_PANEL") titleDescription:LOC(@"HIDE_RIGHT_PANEL_DESC") accessibilityIdentifier:nil - switchOn:IsEnabled(@"hideRightPanel_enabled") + switchOn:IS_ENABLED(@"hideRightPanel_enabled") switchBlock:^BOOL (YTSettingsCell *cell, BOOL enabled) { [[NSUserDefaults standardUserDefaults] setBool:enabled forKey:@"hideRightPanel_enabled"]; return YES; @@ -231,7 +225,7 @@ extern NSBundle *uYouPlusBundle(); [YTSettingsSectionItemClass switchItemWithTitle:LOC(@"HIDE_SUPER_THANKS") titleDescription:LOC(@"HIDE_SUPER_THANKS_DESC") accessibilityIdentifier:nil - switchOn:IsEnabled(@"hideBuySuperThanks_enabled") + switchOn:IS_ENABLED(@"hideBuySuperThanks_enabled") switchBlock:^BOOL (YTSettingsCell *cell, BOOL enabled) { [[NSUserDefaults standardUserDefaults] setBool:enabled forKey:@"hideBuySuperThanks_enabled"]; return YES; @@ -241,7 +235,7 @@ extern NSBundle *uYouPlusBundle(); [YTSettingsSectionItemClass switchItemWithTitle:LOC(@"HIDE_SUBCRIPTIONS") titleDescription:LOC(@"HIDE_SUBCRIPTIONS_DESC") accessibilityIdentifier:nil - switchOn:IsEnabled(@"hideSubcriptions_enabled") + switchOn:IS_ENABLED(@"hideSubcriptions_enabled") switchBlock:^BOOL (YTSettingsCell *cell, BOOL enabled) { [[NSUserDefaults standardUserDefaults] setBool:enabled forKey:@"hideSubcriptions_enabled"]; return YES; @@ -251,7 +245,7 @@ extern NSBundle *uYouPlusBundle(); [YTSettingsSectionItemClass switchItemWithTitle:LOC(@"DISABLE_RESUME_TO_SHORTS") titleDescription:LOC(@"DISABLE_RESUME_TO_SHORTS_DESC") accessibilityIdentifier:nil - switchOn:IsEnabled(@"disableResumeToShorts") + switchOn:IS_ENABLED(@"disableResumeToShorts") switchBlock:^BOOL (YTSettingsCell *cell, BOOL enabled) { [[NSUserDefaults standardUserDefaults] setBool:enabled forKey:@"disableResumeToShorts"]; return YES; @@ -268,7 +262,7 @@ extern NSBundle *uYouPlusBundle(); YTSettingsSectionItem *themeGroup = [YTSettingsSectionItemClass itemWithTitle:LOC(@"THEME_OPTIONS") accessibilityIdentifier:nil detailTextBlock:^NSString *() { - switch (GetSelection(@"appTheme")) { + switch (APP_THEME_IDX) { case 1: return LOC(@"OLED_DARK_THEME_2"); case 2: @@ -299,14 +293,14 @@ extern NSBundle *uYouPlusBundle(); [YTSettingsSectionItemClass switchItemWithTitle:LOC(@"OLED_KEYBOARD") titleDescription:LOC(@"OLED_KEYBOARD_DESC") accessibilityIdentifier:nil - switchOn:IsEnabled(@"oledKeyBoard_enabled") + switchOn:IS_ENABLED(@"oledKeyBoard_enabled") switchBlock:^BOOL (YTSettingsCell *cell, BOOL enabled) { [[NSUserDefaults standardUserDefaults] setBool:enabled forKey:@"oledKeyBoard_enabled"]; return YES; } settingItemId:0] ]; - YTSettingsPickerViewController *picker = [[%c(YTSettingsPickerViewController) alloc] initWithNavTitle:LOC(@"THEME_OPTIONS") pickerSectionTitle:nil rows:rows selectedItemIndex:GetSelection(@"appTheme") parentResponder:[self parentResponder]]; + YTSettingsPickerViewController *picker = [[%c(YTSettingsPickerViewController) alloc] initWithNavTitle:LOC(@"THEME_OPTIONS") pickerSectionTitle:nil rows:rows selectedItemIndex:APP_THEME_IDX parentResponder:[self parentResponder]]; [settingsViewController pushViewController:picker]; return YES; }]; @@ -318,7 +312,7 @@ extern NSBundle *uYouPlusBundle(); [YTSettingsSectionItemClass switchItemWithTitle:LOC(@"CAST_CONFIRM") titleDescription:LOC(@"CAST_CONFIRM_DESC") accessibilityIdentifier:nil - switchOn:IsEnabled(@"castConfirm_enabled") + switchOn:IS_ENABLED(@"castConfirm_enabled") switchBlock:^BOOL (YTSettingsCell *cell, BOOL enabled) { [[NSUserDefaults standardUserDefaults] setBool:enabled forKey:@"castConfirm_enabled"]; return YES; @@ -328,7 +322,7 @@ extern NSBundle *uYouPlusBundle(); [YTSettingsSectionItemClass switchItemWithTitle:LOC(@"DISABLE_HINTS") titleDescription:LOC(@"DISABLE_HINTS_DESC") accessibilityIdentifier:nil - switchOn:IsEnabled(@"disableHints_enabled") + switchOn:IS_ENABLED(@"disableHints_enabled") switchBlock:^BOOL (YTSettingsCell *cell, BOOL enabled) { [[NSUserDefaults standardUserDefaults] setBool:enabled forKey:@"disableHints_enabled"]; return YES; @@ -338,7 +332,7 @@ extern NSBundle *uYouPlusBundle(); [YTSettingsSectionItemClass switchItemWithTitle:LOC(@"ENABLE_FLEX") titleDescription:LOC(@"ENABLE_FLEX_DESC") accessibilityIdentifier:nil - switchOn:IsEnabled(@"flex_enabled") + switchOn:IS_ENABLED(@"flex_enabled") switchBlock:^BOOL (YTSettingsCell *cell, BOOL enabled) { [[NSUserDefaults standardUserDefaults] setBool:enabled forKey:@"flex_enabled"]; return YES; @@ -348,7 +342,7 @@ extern NSBundle *uYouPlusBundle(); [YTSettingsSectionItemClass switchItemWithTitle:LOC(@"ENABLE_YT_STARTUP_ANIMATION") titleDescription:LOC(@"ENABLE_YT_STARTUP_ANIMATION_DESC") accessibilityIdentifier:nil - switchOn:IsEnabled(@"ytStartupAnimation_enabled") + switchOn:IS_ENABLED(@"ytStartupAnimation_enabled") switchBlock:^BOOL (YTSettingsCell *cell, BOOL enabled) { [[NSUserDefaults standardUserDefaults] setBool:enabled forKey:@"ytStartupAnimation_enabled"]; return YES; @@ -358,7 +352,7 @@ extern NSBundle *uYouPlusBundle(); [YTSettingsSectionItemClass switchItemWithTitle:LOC(@"HIDE_CHIP_BAR") titleDescription:LOC(@"HIDE_CHIP_BAR_DESC") accessibilityIdentifier:nil - switchOn:IsEnabled(@"hideChipBar_enabled") + switchOn:IS_ENABLED(@"hideChipBar_enabled") switchBlock:^BOOL (YTSettingsCell *cell, BOOL enabled) { [[NSUserDefaults standardUserDefaults] setBool:enabled forKey:@"hideChipBar_enabled"]; return YES; @@ -368,7 +362,7 @@ extern NSBundle *uYouPlusBundle(); [YTSettingsSectionItemClass switchItemWithTitle:LOC(@"HIDE_PLAY_NEXT_IN_QUEUE") titleDescription:LOC(@"HIDE_PLAY_NEXT_IN_QUEUE_DESC") accessibilityIdentifier:nil - switchOn:IsEnabled(@"hidePlayNextInQueue_enabled") + switchOn:IS_ENABLED(@"hidePlayNextInQueue_enabled") switchBlock:^BOOL (YTSettingsCell *cell, BOOL enabled) { [[NSUserDefaults standardUserDefaults] setBool:enabled forKey:@"hidePlayNextInQueue_enabled"]; return YES; @@ -378,7 +372,7 @@ extern NSBundle *uYouPlusBundle(); [YTSettingsSectionItemClass switchItemWithTitle:LOC(@"IPHONE_LAYOUT") titleDescription:LOC(@"IPHONE_LAYOUT_DESC") accessibilityIdentifier:nil - switchOn:IsEnabled(@"iPhoneLayout_enabled") + switchOn:IS_ENABLED(@"iPhoneLayout_enabled") switchBlock:^BOOL (YTSettingsCell *cell, BOOL enabled) { [[NSUserDefaults standardUserDefaults] setBool:enabled forKey:@"iPhoneLayout_enabled"]; return YES; @@ -388,7 +382,7 @@ extern NSBundle *uYouPlusBundle(); [YTSettingsSectionItemClass switchItemWithTitle:LOC(@"NEW_MINIPLAYER_STYLE") titleDescription:LOC(@"NEW_MINIPLAYER_STYLE_DESC") accessibilityIdentifier:nil - switchOn:IsEnabled(@"bigYTMiniPlayer_enabled") + switchOn:IS_ENABLED(@"bigYTMiniPlayer_enabled") switchBlock:^BOOL (YTSettingsCell *cell, BOOL enabled) { [[NSUserDefaults standardUserDefaults] setBool:enabled forKey:@"bigYTMiniPlayer_enabled"]; return YES; @@ -398,7 +392,7 @@ extern NSBundle *uYouPlusBundle(); [YTSettingsSectionItemClass switchItemWithTitle:LOC(@"YT_RE_EXPLORE") titleDescription:LOC(@"YT_RE_EXPLORE_DESC") accessibilityIdentifier:nil - switchOn:IsEnabled(@"reExplore_enabled") + switchOn:IS_ENABLED(@"reExplore_enabled") switchBlock:^BOOL (YTSettingsCell *cell, BOOL enabled) { [[NSUserDefaults standardUserDefaults] setBool:enabled forKey:@"reExplore_enabled"]; return YES; diff --git a/Sources/uYouPlus.h b/Sources/uYouPlus.h index 0b37baa..4250c6f 100644 --- a/Sources/uYouPlus.h +++ b/Sources/uYouPlus.h @@ -1,5 +1,3 @@ -#import "../Tweaks/YouTubeHeader/YTAppDelegate.h" -#import "../Tweaks/YouTubeHeader/YTPlayerViewController.h" #import #import #import @@ -7,6 +5,9 @@ #import #import #import + +#import "../Tweaks/YouTubeHeader/YTAppDelegate.h" +#import "../Tweaks/YouTubeHeader/YTPlayerViewController.h" #import "../Tweaks/YouTubeHeader/YTVideoQualitySwitchOriginalController.h" #import "../Tweaks/YouTubeHeader/YTPlayerViewController.h" #import "../Tweaks/YouTubeHeader/YTWatchController.h" @@ -29,6 +30,8 @@ #define LOC(x) [tweakBundle localizedStringForKey:x value:nil table:nil] #define YT_BUNDLE_ID @"com.google.ios.youtube" #define YT_NAME @"YouTube" +#define IS_ENABLED(k) [[NSUserDefaults standardUserDefaults] boolForKey:k] +#define APP_THEME_IDX [[NSUserDefaults standardUserDefaults] integerForKey:@"appTheme"] #define DEFAULT_RATE 2.0f // YTSpeed // IAmYouTube diff --git a/Sources/uYouPlus.xm b/Sources/uYouPlus.xm index f35631e..4ee98dc 100644 --- a/Sources/uYouPlus.xm +++ b/Sources/uYouPlus.xm @@ -1,5 +1,9 @@ #import "uYouPlus.h" +#define IS_DARK_APPEARANCE_ENABLED ([[NSUserDefaults standardUserDefaults] integerForKey:@"page_style"] == 1) +#define IS_OLED_DARK_THEME_SELECTED (APP_THEME_IDX == 1) +#define IS_OLD_DARK_THEME_SELECTED (APP_THEME_IDX == 2) + // Tweak's bundle for Localizations support - @PoomSmart - https://github.com/PoomSmart/YouPiP/commit/aea2473f64c75d73cab713e1e2d5d0a77675024f NSBundle *uYouPlusBundle() { static NSBundle *bundle = nil; @@ -15,20 +19,6 @@ NSBundle *uYouPlusBundle() { } NSBundle *tweakBundle = uYouPlusBundle(); -// -static BOOL IsEnabled(NSString *key) { - return [[NSUserDefaults standardUserDefaults] boolForKey:key]; -} -static BOOL isDarkMode() { - return ([[NSUserDefaults standardUserDefaults] integerForKey:@"page_style"] == 1); -} -static BOOL oledDarkTheme() { - return ([[NSUserDefaults standardUserDefaults] integerForKey:@"appTheme"] == 1); -} -static BOOL oldDarkTheme() { - return ([[NSUserDefaults standardUserDefaults] integerForKey:@"appTheme"] == 2); -} - # pragma mark - Tweaks // FLEX @@ -37,7 +27,7 @@ static BOOL oldDarkTheme() { didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { BOOL didFinishLaunching = %orig; - if (IsEnabled(@"flex_enabled")) { + if (IS_ENABLED(@"flex_enabled")) { [[%c(FLEXManager) performSelector:@selector(sharedManager)] performSelector:@selector(showExplorer)]; } @@ -45,7 +35,7 @@ static BOOL oldDarkTheme() { } - (void)appWillResignActive:(id)arg1 { %orig; - if (IsEnabled(@"flex_enabled")) { + if (IS_ENABLED(@"flex_enabled")) { [[%c(FLEXManager) performSelector:@selector(sharedManager)] performSelector:@selector(showExplorer)]; } } @@ -137,7 +127,7 @@ static BOOL oldDarkTheme() { // YTMiniPlayerEnabler: https://github.com/level3tjg/YTMiniplayerEnabler/ %hook YTWatchMiniBarViewController - (void)updateMiniBarPlayerStateFromRenderer { - if (IsEnabled(@"ytMiniPlayer_enabled")) {} + if (IS_ENABLED(@"ytMiniPlayer_enabled")) {} else { return %orig; } } %end @@ -145,7 +135,7 @@ static BOOL oldDarkTheme() { // YTNoHoverCards: https://github.com/level3tjg/YTNoHoverCards %hook YTCreatorEndscreenView - (void)setHidden:(BOOL)hidden { - if (IsEnabled(@"hideHoverCards_enabled")) + if (IS_ENABLED(@"hideHoverCards_enabled")) hidden = YES; %orig; } @@ -154,7 +144,7 @@ static BOOL oldDarkTheme() { // YTCastConfirm: https://github.com/JamieBerghmans/YTCastConfirm %hook MDXPlaybackRouteButtonController - (void)didPressButton:(id)arg1 { - if (IsEnabled(@"castConfirm_enabled")) { + if (IS_ENABLED(@"castConfirm_enabled")) { NSBundle *tweakBundle = uYouPlusBundle(); YTAlertView *alertView = [%c(YTAlertView) confirmationDialogWithAction:^{ %orig; @@ -234,18 +224,18 @@ static BOOL oldDarkTheme() { // YTNoPaidPromo: https://github.com/PoomSmart/YTNoPaidPromo %hook YTMainAppVideoPlayerOverlayViewController - (void)setPaidContentWithPlayerData:(id)data { - if (IsEnabled(@"hidePaidPromotionCard_enabled")) {} + if (IS_ENABLED(@"hidePaidPromotionCard_enabled")) {} else { return %orig; } } - (void)playerOverlayProvider:(YTPlayerOverlayProvider *)provider didInsertPlayerOverlay:(YTPlayerOverlay *)overlay { - if ([[overlay overlayIdentifier] isEqualToString:@"player_overlay_paid_content"] && IsEnabled(@"hidePaidPromotionCard_enabled")) return; + if ([[overlay overlayIdentifier] isEqualToString:@"player_overlay_paid_content"] && IS_ENABLED(@"hidePaidPromotionCard_enabled")) return; %orig; } %end %hook YTInlineMutedPlaybackPlayerOverlayViewController - (void)setPaidContentWithPlayerData:(id)data { - if (IsEnabled(@"hidePaidPromotionCard_enabled")) {} + if (IS_ENABLED(@"hidePaidPromotionCard_enabled")) {} else { return %orig; } } %end @@ -369,7 +359,7 @@ static void replaceTab(YTIGuideResponse *response) { %hook YTSegmentableInlinePlayerBarView - (void)didMoveToWindow { %orig; - if (IsEnabled(@"snapToChapter_enabled")) { + if (IS_ENABLED(@"snapToChapter_enabled")) { self.enableSnapToChapter = NO; } } @@ -378,7 +368,7 @@ static void replaceTab(YTIGuideResponse *response) { // Disable Pinch to zoom %hook YTColdConfig - (BOOL)videoZoomFreeZoomEnabledGlobalConfig { - return IsEnabled(@"pinchToZoom_enabled") ? NO : %orig; + return IS_ENABLED(@"pinchToZoom_enabled") ? NO : %orig; } %end @@ -399,7 +389,7 @@ static void replaceTab(YTIGuideResponse *response) { %hook YTDoubleTapToSeekController - (void)enableDoubleTapToSeek:(BOOL)arg1 { - return IsEnabled(@"doubleTapToSeek_disabled") ? %orig(NO) : %orig; + return IS_ENABLED(@"doubleTapToSeek_disabled") ? %orig(NO) : %orig; } %end @@ -407,10 +397,10 @@ static void replaceTab(YTIGuideResponse *response) { // Hide CC / Autoplay switch %hook YTMainAppControlsOverlayView - (void)setClosedCaptionsOrSubtitlesButtonAvailable:(BOOL)arg1 { // hide CC button - return IsEnabled(@"hideCC_enabled") ? %orig(NO) : %orig; + return IS_ENABLED(@"hideCC_enabled") ? %orig(NO) : %orig; } - (void)setAutoplaySwitchButtonRenderer:(id)arg1 { // hide Autoplay - if (IsEnabled(@"hideAutoplaySwitch_enabled")) {} + if (IS_ENABLED(@"hideAutoplaySwitch_enabled")) {} else { return %orig; } } %end @@ -418,14 +408,14 @@ static void replaceTab(YTIGuideResponse *response) { // Hide HUD Messages %hook YTHUDMessageView - (id)initWithMessage:(id)arg1 dismissHandler:(id)arg2 { - return IsEnabled(@"hideHUD_enabled") ? nil : %orig; + return IS_ENABLED(@"hideHUD_enabled") ? nil : %orig; } %end // Hide Watermark %hook YTAnnotationsViewController - (void)loadFeaturedChannelWatermark { - if (IsEnabled(@"hideChannelWatermark_enabled")) {} + if (IS_ENABLED(@"hideChannelWatermark_enabled")) {} else { return %orig; } } %end @@ -449,14 +439,14 @@ static void replaceTab(YTIGuideResponse *response) { // Bring back the red progress bar - Broken?! %hook YTInlinePlayerBarContainerView - (id)quietProgressBarColor { - return IsEnabled(@"redProgressBar_enabled") ? [UIColor redColor] : %orig; + return IS_ENABLED(@"redProgressBar_enabled") ? [UIColor redColor] : %orig; } %end // Disable the right panel in fullscreen mode %hook YTColdConfig - (BOOL)isLandscapeEngagementPanelEnabled { - return IsEnabled(@"hideRightPanel_enabled") ? NO : %orig; + return IS_ENABLED(@"hideRightPanel_enabled") ? NO : %orig; } %end @@ -464,7 +454,7 @@ static void replaceTab(YTIGuideResponse *response) { %hook _ASDisplayView - (void)didMoveToWindow { %orig; - if ((IsEnabled(@"hideBuySuperThanks_enabled")) && ([self.accessibilityIdentifier isEqualToString:@"id.elements.components.suggested_action"])) { + if ((IS_ENABLED(@"hideBuySuperThanks_enabled")) && ([self.accessibilityIdentifier isEqualToString:@"id.elements.components.suggested_action"])) { self.hidden = YES; } } @@ -472,14 +462,14 @@ static void replaceTab(YTIGuideResponse *response) { %hook YTReelWatchRootViewController - (void)setPausedStateCarouselView { - if (IsEnabled(@"hideSubcriptions_enabled")) {} + if (IS_ENABLED(@"hideSubcriptions_enabled")) {} else { return %orig; } } %end %hook YTShortsStartupCoordinator - (id)evaluateResumeToShorts { - return IsEnabled(@"disableResumeToShorts") ? nil : %orig; + return IS_ENABLED(@"disableResumeToShorts") ? nil : %orig; } %end @@ -594,7 +584,7 @@ UIColor* raisedColor = [UIColor colorWithRed:0.035 green:0.035 blue:0.035 alpha: %hook ASScrollView - (void)didMoveToWindow { %orig; - if (isDarkMode()) { + if (IS_DARK_APPEARANCE_ENABLED) { self.backgroundColor = [UIColor clearColor]; } } @@ -604,7 +594,7 @@ UIColor* raisedColor = [UIColor colorWithRed:0.035 green:0.035 blue:0.035 alpha: %hook ASCollectionView - (void)didMoveToWindow { %orig; - if (isDarkMode() && [self.nextResponder isKindOfClass:%c(_ASDisplayView)]) { + if (IS_DARK_APPEARANCE_ENABLED && [self.nextResponder isKindOfClass:%c(_ASDisplayView)]) { self.superview.backgroundColor = [UIColor blackColor]; } } @@ -614,7 +604,7 @@ UIColor* raisedColor = [UIColor colorWithRed:0.035 green:0.035 blue:0.035 alpha: %hook ELMView - (void)didMoveToWindow { %orig; - if (isDarkMode()) { + if (IS_DARK_APPEARANCE_ENABLED) { self.subviews[0].backgroundColor = [UIColor clearColor]; } } @@ -642,14 +632,14 @@ UIColor* raisedColor = [UIColor colorWithRed:0.035 green:0.035 blue:0.035 alpha: // Search View %hook YTSearchBarView - (void)setBackgroundColor:(UIColor *)color { - return isDarkMode() ? %orig([UIColor blackColor]) : %orig; + return IS_DARK_APPEARANCE_ENABLED ? %orig([UIColor blackColor]) : %orig; } %end // History Search view %hook YTSearchBoxView - (void)setBackgroundColor:(UIColor *)color { - return isDarkMode() ? %orig([UIColor blackColor]) : %orig; + return IS_DARK_APPEARANCE_ENABLED ? %orig([UIColor blackColor]) : %orig; } %end @@ -657,29 +647,29 @@ UIColor* raisedColor = [UIColor colorWithRed:0.035 green:0.035 blue:0.035 alpha: // Comment view %hook YTCommentView - (void)setBackgroundColor:(UIColor *)color { - return isDarkMode() ? %orig([UIColor blackColor]) : %orig; + return IS_DARK_APPEARANCE_ENABLED ? %orig([UIColor blackColor]) : %orig; } %end %hook YTCreateCommentAccessoryView - (void)setBackgroundColor:(UIColor *)color { - return isDarkMode() ? %orig([UIColor blackColor]) : %orig; + return IS_DARK_APPEARANCE_ENABLED ? %orig([UIColor blackColor]) : %orig; } %end %hook YTCreateCommentTextView - (void)setBackgroundColor:(UIColor *)color { - return isDarkMode() ? %orig([UIColor blackColor]) : %orig; + return IS_DARK_APPEARANCE_ENABLED ? %orig([UIColor blackColor]) : %orig; } - (void)setTextColor:(UIColor *)color { // fix black text in #Shorts video's comment - return isDarkMode() ? %orig([UIColor whiteColor]) : %orig; + return IS_DARK_APPEARANCE_ENABLED ? %orig([UIColor whiteColor]) : %orig; } %end %hook YTCommentDetailHeaderCell - (void)didMoveToWindow { %orig; - if (isDarkMode()) { + if (IS_DARK_APPEARANCE_ENABLED) { self.subviews[2].backgroundColor = [UIColor blackColor]; } } @@ -687,27 +677,27 @@ UIColor* raisedColor = [UIColor colorWithRed:0.035 green:0.035 blue:0.035 alpha: %hook YTFormattedStringLabel // YT is werid... - (void)setBackgroundColor:(UIColor *)color { - return isDarkMode() ? %orig([UIColor clearColor]) : %orig; + return IS_DARK_APPEARANCE_ENABLED ? %orig([UIColor clearColor]) : %orig; } %end // Live chat comment %hook YCHLiveChatActionPanelView - (void)setBackgroundColor:(UIColor *)color { - return isDarkMode() ? %orig([UIColor blackColor]) : %orig; + return IS_DARK_APPEARANCE_ENABLED ? %orig([UIColor blackColor]) : %orig; } %end %hook YTEmojiTextView - (void)setBackgroundColor:(UIColor *)color { - return isDarkMode() ? %orig([UIColor blackColor]) : %orig; + return IS_DARK_APPEARANCE_ENABLED ? %orig([UIColor blackColor]) : %orig; } %end %hook YCHLiveChatView - (void)didMoveToWindow { %orig; - if (isDarkMode()) { + if (IS_DARK_APPEARANCE_ENABLED) { self.subviews[1].backgroundColor = [UIColor blackColor]; } } @@ -715,14 +705,14 @@ UIColor* raisedColor = [UIColor colorWithRed:0.035 green:0.035 blue:0.035 alpha: %hook YTCollectionView - (void)setBackgroundColor:(UIColor *)color { - return isDarkMode() ? %orig([UIColor blackColor]) : %orig; + return IS_DARK_APPEARANCE_ENABLED ? %orig([UIColor blackColor]) : %orig; } %end // %hook YTBackstageCreateRepostDetailView - (void)setBackgroundColor:(UIColor *)color { - return isDarkMode() ? %orig([UIColor blackColor]) : %orig; + return IS_DARK_APPEARANCE_ENABLED ? %orig([UIColor blackColor]) : %orig; } %end @@ -730,7 +720,7 @@ UIColor* raisedColor = [UIColor colorWithRed:0.035 green:0.035 blue:0.035 alpha: %hook _ASDisplayView - (void)didMoveToWindow { %orig; - if (isDarkMode()) { + if (IS_DARK_APPEARANCE_ENABLED) { if ([self.nextResponder isKindOfClass:%c(ASScrollView)]) { self.backgroundColor = [UIColor clearColor]; } if ([self.accessibilityIdentifier isEqualToString:@"eml.cvr"]) { self.backgroundColor = [UIColor blackColor]; } if ([self.accessibilityIdentifier isEqualToString:@"eml.live_chat_text_message"]) { self.backgroundColor = [UIColor blackColor]; } @@ -750,20 +740,20 @@ UIColor* raisedColor = [UIColor colorWithRed:0.035 green:0.035 blue:0.035 alpha: // Open link with... %hook ASWAppSwitchingSheetHeaderView - (void)setBackgroundColor:(UIColor *)color { - return isDarkMode() ? %orig(raisedColor) : %orig; + return IS_DARK_APPEARANCE_ENABLED ? %orig(raisedColor) : %orig; } %end %hook ASWAppSwitchingSheetFooterView - (void)setBackgroundColor:(UIColor *)color { - return isDarkMode() ? %orig(raisedColor) : %orig; + return IS_DARK_APPEARANCE_ENABLED ? %orig(raisedColor) : %orig; } %end %hook ASWAppSwitcherCollectionViewCell - (void)didMoveToWindow { %orig; - if (isDarkMode()) { + if (IS_DARK_APPEARANCE_ENABLED) { self.backgroundColor = raisedColor; self.subviews[1].backgroundColor = raisedColor; self.superview.backgroundColor = raisedColor; @@ -874,7 +864,7 @@ UIColor* raisedColor = [UIColor colorWithRed:0.035 green:0.035 blue:0.035 alpha: // YT startup animation %hook YTColdConfig - (BOOL)mainAppCoreClientIosEnableStartupAnimation { - return IsEnabled(@"ytStartupAnimation_enabled") ? YES : NO; + return IS_ENABLED(@"ytStartupAnimation_enabled") ? YES : NO; } %end @@ -884,37 +874,37 @@ UIColor* raisedColor = [UIColor colorWithRed:0.035 green:0.035 blue:0.035 alpha: // dlopen([[NSString stringWithFormat:@"%@/Frameworks/uYou.dylib", [[NSBundle mainBundle] bundlePath]] UTF8String], RTLD_LAZY); %init; - if (IsEnabled(@"reExplore_enabled")) { + if (IS_ENABLED(@"reExplore_enabled")) { %init(gReExplore); } - if (IsEnabled(@"bigYTMiniPlayer_enabled") && (UIDevice.currentDevice.userInterfaceIdiom != UIUserInterfaceIdiomPad)) { + if (IS_ENABLED(@"bigYTMiniPlayer_enabled") && (UIDevice.currentDevice.userInterfaceIdiom != UIUserInterfaceIdiomPad)) { %init(Main); } - if (IsEnabled(@"hidePreviousAndNextButton_enabled")) { + if (IS_ENABLED(@"hidePreviousAndNextButton_enabled")) { %init(gHidePreviousAndNextButton); } - if (IsEnabled(@"replacePreviousAndNextButton_enabled")) { + if (IS_ENABLED(@"replacePreviousAndNextButton_enabled")) { %init(gReplacePreviousAndNextButton); } - if (oledDarkTheme()) { + if (IS_OLED_DARK_THEME_SELECTED) { %init(gOLED); } - if (oldDarkTheme()) { + if (IS_OLD_DARK_THEME_SELECTED) { %init(gOldDarkTheme) } - if (IsEnabled(@"oledKeyBoard_enabled")) { + if (IS_ENABLED(@"oledKeyBoard_enabled")) { %init(gOLEDKB); } - if (IsEnabled(@"disableHints_enabled")) { + if (IS_ENABLED(@"disableHints_enabled")) { %init(gDisableHints); } - if (IsEnabled(@"hideChipBar_enabled")) { + if (IS_ENABLED(@"hideChipBar_enabled")) { %init(gHideChipBar); } - if (IsEnabled(@"iPhoneLayout_enabled") && (UIDevice.currentDevice.userInterfaceIdiom == UIUserInterfaceIdiomPad)) { + if (IS_ENABLED(@"iPhoneLayout_enabled") && (UIDevice.currentDevice.userInterfaceIdiom == UIUserInterfaceIdiomPad)) { %init(giPhoneLayout); } - if (IsEnabled(@"stockVolumeHUD_enabled")) { + if (IS_ENABLED(@"stockVolumeHUD_enabled")) { %init(gStockVolumeHUD); } From dfbec9edd586cacf997989d7117eff051fbab4c7 Mon Sep 17 00:00:00 2001 From: Foxster Date: Thu, 21 Dec 2023 18:43:21 -0800 Subject: [PATCH 07/45] Update Makefile --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 6e4cbf8..c6a7f31 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,4 @@ -export TARGET = iphone:clang:15.5:14.0 +export TARGET = iphone:clang:latest:14.0 export ARCHS = arm64 export libcolorpicker_ARCHS = arm64 From 5da7b382324d89aff5badf0c81d9bc7aa761dedc Mon Sep 17 00:00:00 2001 From: Foxster Date: Thu, 21 Dec 2023 20:12:16 -0800 Subject: [PATCH 08/45] Update buildapp.yml --- .github/workflows/buildapp.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/buildapp.yml b/.github/workflows/buildapp.yml index 2bf5599..2599d7a 100644 --- a/.github/workflows/buildapp.yml +++ b/.github/workflows/buildapp.yml @@ -65,7 +65,7 @@ jobs: uses: actions/checkout@v3.2.0 with: repository: theos/theos - ref: master + ref: 9941262c450c0abac524574cb96b9a4cdf5e50f4 path: theos submodules: recursive From abc54675e1e9f5ac4f92e99ba0bcad8c188a12fc Mon Sep 17 00:00:00 2001 From: Foxster Date: Thu, 21 Dec 2023 20:13:53 -0800 Subject: [PATCH 09/45] Update submodules --- Tweaks/DontEatMyContent | 2 +- Tweaks/Return-YouTube-Dislikes | 2 +- Tweaks/YTABConfig | 2 +- Tweaks/YTUHD | 2 +- Tweaks/YTVideoOverlay | 2 +- Tweaks/YouMute | 2 +- Tweaks/YouPiP | 2 +- Tweaks/YouQuality | 2 +- Tweaks/YouTubeHeader | 2 +- Tweaks/iSponsorBlock | 2 +- 10 files changed, 10 insertions(+), 10 deletions(-) diff --git a/Tweaks/DontEatMyContent b/Tweaks/DontEatMyContent index c6fe81f..eccde5b 160000 --- a/Tweaks/DontEatMyContent +++ b/Tweaks/DontEatMyContent @@ -1 +1 @@ -Subproject commit c6fe81f55bd33c0e943150bf77826cbb251d668c +Subproject commit eccde5ba98c589bbc1659607ae2876343121f9dd diff --git a/Tweaks/Return-YouTube-Dislikes b/Tweaks/Return-YouTube-Dislikes index 91fc25a..53e7379 160000 --- a/Tweaks/Return-YouTube-Dislikes +++ b/Tweaks/Return-YouTube-Dislikes @@ -1 +1 @@ -Subproject commit 91fc25a8504faa62eca55dae451fe11ac7d1602d +Subproject commit 53e73795cd34b578e94aa3e49b5e72b0e5fec2a3 diff --git a/Tweaks/YTABConfig b/Tweaks/YTABConfig index 0b65a0e..49fd33b 160000 --- a/Tweaks/YTABConfig +++ b/Tweaks/YTABConfig @@ -1 +1 @@ -Subproject commit 0b65a0eefe2ce6981c26378a1ef670dec1648603 +Subproject commit 49fd33bedbe6648555fbd9c1e3d345f61a6c75d4 diff --git a/Tweaks/YTUHD b/Tweaks/YTUHD index ed71ce0..adf6ba1 160000 --- a/Tweaks/YTUHD +++ b/Tweaks/YTUHD @@ -1 +1 @@ -Subproject commit ed71ce0dbbcb2246defdd2198014846572baea35 +Subproject commit adf6ba1446aeb2077ea10e32b6ae5c453e6acd7d diff --git a/Tweaks/YTVideoOverlay b/Tweaks/YTVideoOverlay index 8819484..c2ebdff 160000 --- a/Tweaks/YTVideoOverlay +++ b/Tweaks/YTVideoOverlay @@ -1 +1 @@ -Subproject commit 8819484325534edf41bb7425d7341b551d62501b +Subproject commit c2ebdff6cb880bbf06a18823e935f43db1d5f905 diff --git a/Tweaks/YouMute b/Tweaks/YouMute index bbab96d..7ab3b3d 160000 --- a/Tweaks/YouMute +++ b/Tweaks/YouMute @@ -1 +1 @@ -Subproject commit bbab96d70fbb596f3fffde7898e27734c499ada7 +Subproject commit 7ab3b3d907393ff2409f8ce80fee64bf7976ecc5 diff --git a/Tweaks/YouPiP b/Tweaks/YouPiP index 327d272..519a898 160000 --- a/Tweaks/YouPiP +++ b/Tweaks/YouPiP @@ -1 +1 @@ -Subproject commit 327d272a36988ae22ad1d118e67e72ee434127b8 +Subproject commit 519a8988bca40aeb00ee3c3ecef4a1c4ba350e51 diff --git a/Tweaks/YouQuality b/Tweaks/YouQuality index 8b23971..7f47a36 160000 --- a/Tweaks/YouQuality +++ b/Tweaks/YouQuality @@ -1 +1 @@ -Subproject commit 8b23971bbf40f28acecda2855171918d241929c9 +Subproject commit 7f47a365ed001511040ce7511f1e3d958aad22c2 diff --git a/Tweaks/YouTubeHeader b/Tweaks/YouTubeHeader index 99bb00e..6741ac7 160000 --- a/Tweaks/YouTubeHeader +++ b/Tweaks/YouTubeHeader @@ -1 +1 @@ -Subproject commit 99bb00ebbf77267567938787cb8bd775a07641de +Subproject commit 6741ac775db39700a29256e7237f898c86efc8f7 diff --git a/Tweaks/iSponsorBlock b/Tweaks/iSponsorBlock index 74f8265..2c85fce 160000 --- a/Tweaks/iSponsorBlock +++ b/Tweaks/iSponsorBlock @@ -1 +1 @@ -Subproject commit 74f8265ed22e829146a01b0d5c0bb1c4980599f5 +Subproject commit 2c85fcecd813027894ad001e9002a9f8420e3016 From d37e146a60cdf3913652071dfb067d2e323de52b Mon Sep 17 00:00:00 2001 From: Foxster Date: Thu, 21 Dec 2023 22:18:16 -0800 Subject: [PATCH 10/45] OLED dark mode crash workaround? --- Sources/uYouPlus.xm | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Sources/uYouPlus.xm b/Sources/uYouPlus.xm index 4ee98dc..fbc22bb 100644 --- a/Sources/uYouPlus.xm +++ b/Sources/uYouPlus.xm @@ -605,7 +605,7 @@ UIColor* raisedColor = [UIColor colorWithRed:0.035 green:0.035 blue:0.035 alpha: - (void)didMoveToWindow { %orig; if (IS_DARK_APPEARANCE_ENABLED) { - self.subviews[0].backgroundColor = [UIColor clearColor]; + // self.subviews[0].backgroundColor = [UIColor clearColor]; } } %end @@ -670,7 +670,7 @@ UIColor* raisedColor = [UIColor colorWithRed:0.035 green:0.035 blue:0.035 alpha: - (void)didMoveToWindow { %orig; if (IS_DARK_APPEARANCE_ENABLED) { - self.subviews[2].backgroundColor = [UIColor blackColor]; + // self.subviews[2].backgroundColor = [UIColor blackColor]; } } %end @@ -698,7 +698,7 @@ UIColor* raisedColor = [UIColor colorWithRed:0.035 green:0.035 blue:0.035 alpha: - (void)didMoveToWindow { %orig; if (IS_DARK_APPEARANCE_ENABLED) { - self.subviews[1].backgroundColor = [UIColor blackColor]; + // self.subviews[1].backgroundColor = [UIColor blackColor]; } } %end @@ -755,7 +755,7 @@ UIColor* raisedColor = [UIColor colorWithRed:0.035 green:0.035 blue:0.035 alpha: %orig; if (IS_DARK_APPEARANCE_ENABLED) { self.backgroundColor = raisedColor; - self.subviews[1].backgroundColor = raisedColor; + // self.subviews[1].backgroundColor = raisedColor; self.superview.backgroundColor = raisedColor; } } From 256e0654b8a59249d6289caffe4928e79ac8298b Mon Sep 17 00:00:00 2001 From: Foxster Date: Thu, 21 Dec 2023 22:52:53 -0800 Subject: [PATCH 11/45] Use PoomSmart's FLEXing fork (rootless) --- .gitmodules | 2 +- Tweaks/FLEXing | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitmodules b/.gitmodules index f6bf909..c94fa17 100644 --- a/.gitmodules +++ b/.gitmodules @@ -40,7 +40,7 @@ branch = main [submodule "Tweaks/FLEXing"] path = Tweaks/FLEXing - url = https://github.com/NSExceptional/FLEXing + url = https://github.com/PoomSmart/FLEXing [submodule "Tweaks/Alderis"] path = Tweaks/Alderis url = https://github.com/hbang/Alderis.git diff --git a/Tweaks/FLEXing b/Tweaks/FLEXing index 07d0ad6..f7a65cf 160000 --- a/Tweaks/FLEXing +++ b/Tweaks/FLEXing @@ -1 +1 @@ -Subproject commit 07d0ad67c5abe370f3731ecdc0961ae5dae8b487 +Subproject commit f7a65cf89b92ca1d35bf8b499acc4419eef7bc13 From 006ce94a5b887fc71ab1af93b3e0cbfdcc380130 Mon Sep 17 00:00:00 2001 From: Foxster Date: Fri, 22 Dec 2023 20:01:47 -0800 Subject: [PATCH 12/45] Update version cell --- .../uYouPlus.bundle/en.lproj/Localizable.strings | 2 +- Sources/Settings.xm | 8 +++++--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/Localizations/uYouPlus.bundle/en.lproj/Localizable.strings b/Localizations/uYouPlus.bundle/en.lproj/Localizable.strings index 7e8984b..b1b55c4 100644 --- a/Localizations/uYouPlus.bundle/en.lproj/Localizable.strings +++ b/Localizations/uYouPlus.bundle/en.lproj/Localizable.strings @@ -1,5 +1,5 @@ // Settings -"VERSION" = "uYouPlus's version: %@"; +"VERSION" = "Version"; "VERSION_CHECK" = "Tap to check for updates!"; // Video player options diff --git a/Sources/Settings.xm b/Sources/Settings.xm index 8d3d592..0592307 100644 --- a/Sources/Settings.xm +++ b/Sources/Settings.xm @@ -41,10 +41,12 @@ extern NSBundle *uYouPlusBundle(); YTSettingsViewController *settingsViewController = [self valueForKey:@"_settingsViewControllerDelegate"]; YTSettingsSectionItem *version = [%c(YTSettingsSectionItem) - itemWithTitle:[NSString stringWithFormat:LOC(@"VERSION"), @(OS_STRINGIFY(TWEAK_VERSION))] - titleDescription:LOC(@"VERSION_CHECK") + itemWithTitle:LOC(@"VERSION") + titleDescription:nil accessibilityIdentifier:nil - detailTextBlock:nil + detailTextBlock:^NSString *() { + return [[NSString stringWithFormat:@"v%@", @(OS_STRINGIFY(TWEAK_VERSION))] stringByReplacingOccurrencesOfString:@"\"" withString:@""]; + } selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) { return [%c(YTUIUtils) openURL:[NSURL URLWithString:@"https://github.com/qnblackcat/uYouPlus/releases/latest"]]; }]; From d50d9e018e488f61fe07ebd994c38aba669f6d29 Mon Sep 17 00:00:00 2001 From: Foxster Date: Sat, 23 Dec 2023 18:23:30 -0800 Subject: [PATCH 13/45] Reduce submenus --- Sources/Settings.xm | 399 ++++++++++---------------------------------- 1 file changed, 85 insertions(+), 314 deletions(-) diff --git a/Sources/Settings.xm b/Sources/Settings.xm index 0592307..f01c63a 100644 --- a/Sources/Settings.xm +++ b/Sources/Settings.xm @@ -6,6 +6,10 @@ #import "../Tweaks/YouTubeHeader/YTSettingsPickerViewController.h" #import "uYouPlus.h" +#define SECTION_HEADER(s) [sectionItems addObject:[%c(YTSettingsSectionItem) itemWithTitle:nil titleDescription:[s uppercaseString] accessibilityIdentifier:nil detailTextBlock:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger sectionItemIndex) { return NO; }]] + +#define SWITCH_ITEM(t, d, k) [sectionItems addObject:[YTSettingsSectionItemClass switchItemWithTitle:t titleDescription:d accessibilityIdentifier:nil switchOn:IS_ENABLED(k) switchBlock:^BOOL (YTSettingsCell *cell, BOOL enabled) {[[NSUserDefaults standardUserDefaults] setBool:enabled forKey:k];return YES;} settingItemId:0]] + static const NSInteger uYouPlusSection = 500; @interface YTSettingsSectionItemManager (uYouPlus) @@ -40,228 +44,11 @@ extern NSBundle *uYouPlusBundle(); Class YTSettingsSectionItemClass = %c(YTSettingsSectionItem); YTSettingsViewController *settingsViewController = [self valueForKey:@"_settingsViewControllerDelegate"]; - YTSettingsSectionItem *version = [%c(YTSettingsSectionItem) - itemWithTitle:LOC(@"VERSION") - titleDescription:nil - accessibilityIdentifier:nil - detailTextBlock:^NSString *() { - return [[NSString stringWithFormat:@"v%@", @(OS_STRINGIFY(TWEAK_VERSION))] stringByReplacingOccurrencesOfString:@"\"" withString:@""]; - } - selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) { - return [%c(YTUIUtils) openURL:[NSURL URLWithString:@"https://github.com/qnblackcat/uYouPlus/releases/latest"]]; - }]; - [sectionItems addObject:version]; + # pragma mark - App theme + SECTION_HEADER(@"App theme"); -# pragma mark - VideoPlayer - YTSettingsSectionItem *videoPlayerGroup = [YTSettingsSectionItemClass itemWithTitle:LOC(@"VIDEO_PLAYER_OPTIONS") accessibilityIdentifier:nil detailTextBlock:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) { - NSArray *rows = @[ - [YTSettingsSectionItemClass switchItemWithTitle:LOC(@"DISABLE_DOUBLE_TAP_TO_SEEK") - titleDescription:LOC(@"DISABLE_DOUBLE_TAP_TO_SEEK_DESC") - accessibilityIdentifier:nil - switchOn:IS_ENABLED(@"doubleTapToSeek_disabled") - switchBlock:^BOOL (YTSettingsCell *cell, BOOL enabled) { - [[NSUserDefaults standardUserDefaults] setBool:enabled forKey:@"doubleTapToSeek_disabled"]; - return YES; - } - settingItemId:0], - - [YTSettingsSectionItemClass switchItemWithTitle:LOC(@"SNAP_TO_CHAPTER") - titleDescription:LOC(@"SNAP_TO_CHAPTER_DESC") - accessibilityIdentifier:nil - switchOn:IS_ENABLED(@"snapToChapter_enabled") - switchBlock:^BOOL (YTSettingsCell *cell, BOOL enabled) { - [[NSUserDefaults standardUserDefaults] setBool:enabled forKey:@"snapToChapter_enabled"]; - return YES; - } - settingItemId:0], - - [YTSettingsSectionItemClass switchItemWithTitle:LOC(@"PINCH_TO_ZOOM") - titleDescription:LOC(@"PINCH_TO_ZOOM_DESC") - accessibilityIdentifier:nil - switchOn:IS_ENABLED(@"pinchToZoom_enabled") - switchBlock:^BOOL (YTSettingsCell *cell, BOOL enabled) { - [[NSUserDefaults standardUserDefaults] setBool:enabled forKey:@"pinchToZoom_enabled"]; - return YES; - } - settingItemId:0], - - [YTSettingsSectionItemClass switchItemWithTitle:LOC(@"YT_MINIPLAYER") - titleDescription:LOC(@"YT_MINIPLAYER_DESC") - accessibilityIdentifier:nil - switchOn:IS_ENABLED(@"ytMiniPlayer_enabled") - switchBlock:^BOOL (YTSettingsCell *cell, BOOL enabled) { - [[NSUserDefaults standardUserDefaults] setBool:enabled forKey:@"ytMiniPlayer_enabled"]; - return YES; - } - settingItemId:0], - - [YTSettingsSectionItemClass switchItemWithTitle:LOC(@"STOCK_VOLUME_HUD") - titleDescription:LOC(@"STOCK_VOLUME_HUD_DESC") - accessibilityIdentifier:nil - switchOn:IS_ENABLED(@"stockVolumeHUD_enabled") - switchBlock:^BOOL (YTSettingsCell *cell, BOOL enabled) { - [[NSUserDefaults standardUserDefaults] setBool:enabled forKey:@"stockVolumeHUD_enabled"]; - return YES; - } - settingItemId:0], - - ]; - YTSettingsPickerViewController *picker = [[%c(YTSettingsPickerViewController) alloc] initWithNavTitle:LOC(@"VIDEO_PLAYER_OPTIONS") pickerSectionTitle:nil rows:rows selectedItemIndex:NSNotFound parentResponder:[self parentResponder]]; - [settingsViewController pushViewController:picker]; - return YES; - }]; - [sectionItems addObject:videoPlayerGroup]; - -# pragma mark - Video Controls Overlay Options - YTSettingsSectionItem *videoControlOverlayGroup = [YTSettingsSectionItemClass itemWithTitle:LOC(@"VIDEO_CONTROLS_OVERLAY_OPTIONS") accessibilityIdentifier:nil detailTextBlock:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) { - NSArray *rows = @[ - [YTSettingsSectionItemClass switchItemWithTitle:LOC(@"HIDE_AUTOPLAY_SWITCH") - titleDescription:LOC(@"HIDE_AUTOPLAY_SWITCH_DESC") - accessibilityIdentifier:nil - switchOn:IS_ENABLED(@"hideAutoplaySwitch_enabled") - switchBlock:^BOOL (YTSettingsCell *cell, BOOL enabled) { - [[NSUserDefaults standardUserDefaults] setBool:enabled forKey:@"hideAutoplaySwitch_enabled"]; - return YES; - } - settingItemId:0], - - [YTSettingsSectionItemClass switchItemWithTitle:LOC(@"HIDE_SUBTITLES_BUTTON") - titleDescription:LOC(@"HIDE_SUBTITLES_BUTTON_DESC") - accessibilityIdentifier:nil - switchOn:IS_ENABLED(@"hideCC_enabled") - switchBlock:^BOOL (YTSettingsCell *cell, BOOL enabled) { - [[NSUserDefaults standardUserDefaults] setBool:enabled forKey:@"hideCC_enabled"]; - return YES; - } - settingItemId:0], - - [YTSettingsSectionItemClass switchItemWithTitle:LOC(@"HIDE_HUD_MESSAGES") - titleDescription:LOC(@"HIDE_HUD_MESSAGES_DESC") - accessibilityIdentifier:nil - switchOn:IS_ENABLED(@"hideHUD_enabled") - switchBlock:^BOOL (YTSettingsCell *cell, BOOL enabled) { - [[NSUserDefaults standardUserDefaults] setBool:enabled forKey:@"hideHUD_enabled"]; - return YES; - } - settingItemId:0], - - [YTSettingsSectionItemClass switchItemWithTitle:LOC(@"HIDE_PAID_PROMOTION_CARDS") - titleDescription:LOC(@"HIDE_PAID_PROMOTION_CARDS_DESC") - accessibilityIdentifier:nil - switchOn:IS_ENABLED(@"hidePaidPromotionCard_enabled") - switchBlock:^BOOL (YTSettingsCell *cell, BOOL enabled) { - [[NSUserDefaults standardUserDefaults] setBool:enabled forKey:@"hidePaidPromotionCard_enabled"]; - return YES; - } - settingItemId:0], - - [YTSettingsSectionItemClass switchItemWithTitle:LOC(@"HIDE_CHANNEL_WATERMARK") - titleDescription:LOC(@"HIDE_CHANNEL_WATERMARK_DESC") - accessibilityIdentifier:nil - switchOn:IS_ENABLED(@"hideChannelWatermark_enabled") - switchBlock:^BOOL (YTSettingsCell *cell, BOOL enabled) { - [[NSUserDefaults standardUserDefaults] setBool:enabled forKey:@"hideChannelWatermark_enabled"]; - return YES; - } - settingItemId:0], - - [YTSettingsSectionItemClass switchItemWithTitle:LOC(@"HIDE_PREVIOUS_AND_NEXT_BUTTON") - titleDescription:LOC(@"HIDE_PREVIOUS_AND_NEXT_BUTTON_DESC") - accessibilityIdentifier:nil - switchOn:IS_ENABLED(@"hidePreviousAndNextButton_enabled") - switchBlock:^BOOL (YTSettingsCell *cell, BOOL enabled) { - [[NSUserDefaults standardUserDefaults] setBool:enabled forKey:@"hidePreviousAndNextButton_enabled"]; - return YES; - } - settingItemId:0], - - [YTSettingsSectionItemClass switchItemWithTitle:LOC(@"REPLACE_PREVIOUS_NEXT_BUTTON") - titleDescription:LOC(@"REPLACE_PREVIOUS_NEXT_BUTTON_DESC") - accessibilityIdentifier:nil - switchOn:IS_ENABLED(@"replacePreviousAndNextButton_enabled") - switchBlock:^BOOL (YTSettingsCell *cell, BOOL enabled) { - [[NSUserDefaults standardUserDefaults] setBool:enabled forKey:@"replacePreviousAndNextButton_enabled"]; - return YES; - } - settingItemId:0], - - [YTSettingsSectionItemClass switchItemWithTitle:LOC(@"RED_PROGRESS_BAR") - titleDescription:LOC(@"RED_PROGRESS_BAR_DESC") - accessibilityIdentifier:nil - switchOn:IS_ENABLED(@"redProgressBar_enabled") - switchBlock:^BOOL (YTSettingsCell *cell, BOOL enabled) { - [[NSUserDefaults standardUserDefaults] setBool:enabled forKey:@"redProgressBar_enabled"]; - return YES; - } - settingItemId:0], - - [YTSettingsSectionItemClass switchItemWithTitle:LOC(@"HIDE_HOVER_CARD") - titleDescription:LOC(@"HIDE_HOVER_CARD_DESC") - accessibilityIdentifier:nil - switchOn:IS_ENABLED(@"hideHoverCards_enabled") - switchBlock:^BOOL (YTSettingsCell *cell, BOOL enabled) { - [[NSUserDefaults standardUserDefaults] setBool:enabled forKey:@"hideHoverCards_enabled"]; - return YES; - } - settingItemId:0], - - [YTSettingsSectionItemClass switchItemWithTitle:LOC(@"HIDE_RIGHT_PANEL") - titleDescription:LOC(@"HIDE_RIGHT_PANEL_DESC") - accessibilityIdentifier:nil - switchOn:IS_ENABLED(@"hideRightPanel_enabled") - switchBlock:^BOOL (YTSettingsCell *cell, BOOL enabled) { - [[NSUserDefaults standardUserDefaults] setBool:enabled forKey:@"hideRightPanel_enabled"]; - return YES; - } - settingItemId:0], - ]; - YTSettingsPickerViewController *picker = [[%c(YTSettingsPickerViewController) alloc] initWithNavTitle:LOC(@"VIDEO_CONTROLS_OVERLAY_OPTIONS") pickerSectionTitle:nil rows:rows selectedItemIndex:NSNotFound parentResponder:[self parentResponder]]; - [settingsViewController pushViewController:picker]; - return YES; - }]; - [sectionItems addObject:videoControlOverlayGroup]; - -# pragma mark - Shorts Controls Overlay Options - YTSettingsSectionItem *shortsControlOverlayGroup = [YTSettingsSectionItemClass itemWithTitle:LOC(@"SHORTS_CONTROLS_OVERLAY_OPTIONS") accessibilityIdentifier:nil detailTextBlock:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) { - NSArray *rows = @[ - [YTSettingsSectionItemClass switchItemWithTitle:LOC(@"HIDE_SUPER_THANKS") - titleDescription:LOC(@"HIDE_SUPER_THANKS_DESC") - accessibilityIdentifier:nil - switchOn:IS_ENABLED(@"hideBuySuperThanks_enabled") - switchBlock:^BOOL (YTSettingsCell *cell, BOOL enabled) { - [[NSUserDefaults standardUserDefaults] setBool:enabled forKey:@"hideBuySuperThanks_enabled"]; - return YES; - } - settingItemId:0], - - [YTSettingsSectionItemClass switchItemWithTitle:LOC(@"HIDE_SUBCRIPTIONS") - titleDescription:LOC(@"HIDE_SUBCRIPTIONS_DESC") - accessibilityIdentifier:nil - switchOn:IS_ENABLED(@"hideSubcriptions_enabled") - switchBlock:^BOOL (YTSettingsCell *cell, BOOL enabled) { - [[NSUserDefaults standardUserDefaults] setBool:enabled forKey:@"hideSubcriptions_enabled"]; - return YES; - } - settingItemId:0], - - [YTSettingsSectionItemClass switchItemWithTitle:LOC(@"DISABLE_RESUME_TO_SHORTS") - titleDescription:LOC(@"DISABLE_RESUME_TO_SHORTS_DESC") - accessibilityIdentifier:nil - switchOn:IS_ENABLED(@"disableResumeToShorts") - switchBlock:^BOOL (YTSettingsCell *cell, BOOL enabled) { - [[NSUserDefaults standardUserDefaults] setBool:enabled forKey:@"disableResumeToShorts"]; - return YES; - } - settingItemId:0], - ]; - YTSettingsPickerViewController *picker = [[%c(YTSettingsPickerViewController) alloc] initWithNavTitle:LOC(@"SHORTS_CONTROLS_OVERLAY_OPTIONS") pickerSectionTitle:nil rows:rows selectedItemIndex:NSNotFound parentResponder:[self parentResponder]]; - [settingsViewController pushViewController:picker]; - return YES; - }]; - [sectionItems addObject:shortsControlOverlayGroup]; - -# pragma mark - Theme - YTSettingsSectionItem *themeGroup = [YTSettingsSectionItemClass itemWithTitle:LOC(@"THEME_OPTIONS") + YTSettingsSectionItem *themeGroup = [YTSettingsSectionItemClass + itemWithTitle:LOC(@"THEME_OPTIONS") accessibilityIdentifier:nil detailTextBlock:^NSString *() { switch (APP_THEME_IDX) { @@ -291,7 +78,6 @@ extern NSBundle *uYouPlusBundle(); [settingsViewController reloadData]; return YES; }], - [YTSettingsSectionItemClass switchItemWithTitle:LOC(@"OLED_KEYBOARD") titleDescription:LOC(@"OLED_KEYBOARD_DESC") accessibilityIdentifier:nil @@ -305,108 +91,93 @@ extern NSBundle *uYouPlusBundle(); YTSettingsPickerViewController *picker = [[%c(YTSettingsPickerViewController) alloc] initWithNavTitle:LOC(@"THEME_OPTIONS") pickerSectionTitle:nil rows:rows selectedItemIndex:APP_THEME_IDX parentResponder:[self parentResponder]]; [settingsViewController pushViewController:picker]; return YES; - }]; + } + ]; [sectionItems addObject:themeGroup]; -# pragma mark - Miscellaneous - YTSettingsSectionItem *miscellaneousGroup = [YTSettingsSectionItemClass itemWithTitle:LOC(@"MISCELLANEOUS") accessibilityIdentifier:nil detailTextBlock:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) { - NSArray *rows = @[ - [YTSettingsSectionItemClass switchItemWithTitle:LOC(@"CAST_CONFIRM") - titleDescription:LOC(@"CAST_CONFIRM_DESC") - accessibilityIdentifier:nil - switchOn:IS_ENABLED(@"castConfirm_enabled") - switchBlock:^BOOL (YTSettingsCell *cell, BOOL enabled) { - [[NSUserDefaults standardUserDefaults] setBool:enabled forKey:@"castConfirm_enabled"]; - return YES; - } - settingItemId:0], + # pragma mark - Video player options + SECTION_HEADER(LOC(@"VIDEO_PLAYER_OPTIONS")); - [YTSettingsSectionItemClass switchItemWithTitle:LOC(@"DISABLE_HINTS") - titleDescription:LOC(@"DISABLE_HINTS_DESC") - accessibilityIdentifier:nil - switchOn:IS_ENABLED(@"disableHints_enabled") - switchBlock:^BOOL (YTSettingsCell *cell, BOOL enabled) { - [[NSUserDefaults standardUserDefaults] setBool:enabled forKey:@"disableHints_enabled"]; - return YES; - } - settingItemId:0], + SWITCH_ITEM(LOC(@"DISABLE_DOUBLE_TAP_TO_SEEK"), LOC(@"DISABLE_DOUBLE_TAP_TO_SEEK_DESC"), @"doubleTapToSeek_disabled"); + SWITCH_ITEM(LOC(@"SNAP_TO_CHAPTER"), LOC(@"SNAP_TO_CHAPTER_DESC"), @"snapToChapter_enabled"); + SWITCH_ITEM(LOC(@"PINCH_TO_ZOOM"), LOC(@"PINCH_TO_ZOOM_DESC"), @"pinchToZoom_enabled"); + SWITCH_ITEM(LOC(@"YT_MINIPLAYER"), LOC(@"YT_MINIPLAYER_DESC"), @"ytMiniPlayer_enabled"); + SWITCH_ITEM(LOC(@"STOCK_VOLUME_HUD"), LOC(@"STOCK_VOLUME_HUD_DESC"), @"stockVolumeHUD_enabled"); - [YTSettingsSectionItemClass switchItemWithTitle:LOC(@"ENABLE_FLEX") - titleDescription:LOC(@"ENABLE_FLEX_DESC") - accessibilityIdentifier:nil - switchOn:IS_ENABLED(@"flex_enabled") - switchBlock:^BOOL (YTSettingsCell *cell, BOOL enabled) { - [[NSUserDefaults standardUserDefaults] setBool:enabled forKey:@"flex_enabled"]; - return YES; - } - settingItemId:0], + # pragma mark - Video controls overlay options + SECTION_HEADER(LOC(@"VIDEO_CONTROLS_OVERLAY_OPTIONS")); - [YTSettingsSectionItemClass switchItemWithTitle:LOC(@"ENABLE_YT_STARTUP_ANIMATION") - titleDescription:LOC(@"ENABLE_YT_STARTUP_ANIMATION_DESC") - accessibilityIdentifier:nil - switchOn:IS_ENABLED(@"ytStartupAnimation_enabled") - switchBlock:^BOOL (YTSettingsCell *cell, BOOL enabled) { - [[NSUserDefaults standardUserDefaults] setBool:enabled forKey:@"ytStartupAnimation_enabled"]; - return YES; - } - settingItemId:0], + SWITCH_ITEM(LOC(@"HIDE_AUTOPLAY_SWITCH"), LOC(@"HIDE_AUTOPLAY_SWITCH_DESC"), @"hideAutoplaySwitch_enabled"); + SWITCH_ITEM(LOC(@"HIDE_SUBTITLES_BUTTON"), LOC(@"HIDE_SUBTITLES_BUTTON_DESC"), @"hideCC_enabled"); + SWITCH_ITEM(LOC(@"HIDE_HUD_MESSAGES"), LOC(@"HIDE_HUD_MESSAGES_DESC"), @"hideHUD_enabled"); + SWITCH_ITEM(LOC(@"HIDE_PAID_PROMOTION_CARDS"), LOC(@"HIDE_PAID_PROMOTION_CARDS_DESC"), @"hidePaidPromotionCard_enabled"); + SWITCH_ITEM(LOC(@"HIDE_CHANNEL_WATERMARK"), LOC(@"HIDE_CHANNEL_WATERMARK_DESC"), @"hideChannelWatermark_enabled"); + SWITCH_ITEM(LOC(@"HIDE_PREVIOUS_AND_NEXT_BUTTON"), LOC(@"HIDE_PREVIOUS_AND_NEXT_BUTTON_DESC"), @"hidePreviousAndNextButton_enabled"); + SWITCH_ITEM(LOC(@"REPLACE_PREVIOUS_NEXT_BUTTON"), LOC(@"REPLACE_PREVIOUS_NEXT_BUTTON_DESC"), @"replacePreviousAndNextButton_enabled"); + SWITCH_ITEM(LOC(@"RED_PROGRESS_BAR"), LOC(@"RED_PROGRESS_BAR_DESC"), @"redProgressBar_enabled"); + SWITCH_ITEM(LOC(@"HIDE_HOVER_CARD"), LOC(@"HIDE_HOVER_CARD_DESC"), @"hideHoverCards_enabled"); + SWITCH_ITEM(LOC(@"HIDE_RIGHT_PANEL"), LOC(@"HIDE_RIGHT_PANEL_DESC"), @"hideRightPanel_enabled"); - [YTSettingsSectionItemClass switchItemWithTitle:LOC(@"HIDE_CHIP_BAR") - titleDescription:LOC(@"HIDE_CHIP_BAR_DESC") - accessibilityIdentifier:nil - switchOn:IS_ENABLED(@"hideChipBar_enabled") - switchBlock:^BOOL (YTSettingsCell *cell, BOOL enabled) { - [[NSUserDefaults standardUserDefaults] setBool:enabled forKey:@"hideChipBar_enabled"]; - return YES; - } - settingItemId:0], + # pragma mark - Shorts controls overlay options + SECTION_HEADER(LOC(@"SHORTS_CONTROLS_OVERLAY_OPTIONS")); - [YTSettingsSectionItemClass switchItemWithTitle:LOC(@"HIDE_PLAY_NEXT_IN_QUEUE") - titleDescription:LOC(@"HIDE_PLAY_NEXT_IN_QUEUE_DESC") - accessibilityIdentifier:nil - switchOn:IS_ENABLED(@"hidePlayNextInQueue_enabled") - switchBlock:^BOOL (YTSettingsCell *cell, BOOL enabled) { - [[NSUserDefaults standardUserDefaults] setBool:enabled forKey:@"hidePlayNextInQueue_enabled"]; - return YES; - } - settingItemId:0], + SWITCH_ITEM(LOC(@"HIDE_SUPER_THANKS"), LOC(@"HIDE_SUPER_THANKS_DESC"), @"hideBuySuperThanks_enabled"); + SWITCH_ITEM(LOC(@"HIDE_SUBCRIPTIONS"), LOC(@"HIDE_SUBCRIPTIONS_DESC"), @"hideSubcriptions_enabled"); + SWITCH_ITEM(LOC(@"DISABLE_RESUME_TO_SHORTS"), LOC(@"DISABLE_RESUME_TO_SHORTS_DESC"), @"disableResumeToShorts"); - [YTSettingsSectionItemClass switchItemWithTitle:LOC(@"IPHONE_LAYOUT") - titleDescription:LOC(@"IPHONE_LAYOUT_DESC") - accessibilityIdentifier:nil - switchOn:IS_ENABLED(@"iPhoneLayout_enabled") - switchBlock:^BOOL (YTSettingsCell *cell, BOOL enabled) { - [[NSUserDefaults standardUserDefaults] setBool:enabled forKey:@"iPhoneLayout_enabled"]; - return YES; - } - settingItemId:0], + # pragma mark - Miscellaneous + SECTION_HEADER(LOC(@"MISCELLANEOUS")); - [YTSettingsSectionItemClass switchItemWithTitle:LOC(@"NEW_MINIPLAYER_STYLE") - titleDescription:LOC(@"NEW_MINIPLAYER_STYLE_DESC") - accessibilityIdentifier:nil - switchOn:IS_ENABLED(@"bigYTMiniPlayer_enabled") - switchBlock:^BOOL (YTSettingsCell *cell, BOOL enabled) { - [[NSUserDefaults standardUserDefaults] setBool:enabled forKey:@"bigYTMiniPlayer_enabled"]; - return YES; - } - settingItemId:0], + SWITCH_ITEM(LOC(@"CAST_CONFIRM"), LOC(@"CAST_CONFIRM_DESC"), @"castConfirm_enabled"); + SWITCH_ITEM(LOC(@"DISABLE_HINTS"), LOC(@"DISABLE_HINTS_DESC"), @"disableHints_enabled"); + SWITCH_ITEM(LOC(@"ENABLE_FLEX"), LOC(@"ENABLE_FLEX_DESC"), @"flex_enabled"); + SWITCH_ITEM(LOC(@"ENABLE_YT_STARTUP_ANIMATION"), LOC(@"ENABLE_YT_STARTUP_ANIMATION_DESC"), @"ytStartupAnimation_enabled"); + SWITCH_ITEM(LOC(@"HIDE_CHIP_BAR"), LOC(@"HIDE_CHIP_BAR_DESC"), @"hideChipBar_enabled"); + SWITCH_ITEM(LOC(@"HIDE_PLAY_NEXT_IN_QUEUE"), LOC(@"HIDE_PLAY_NEXT_IN_QUEUE_DESC"), @"hidePlayNextInQueue_enabled"); + SWITCH_ITEM(LOC(@"IPHONE_LAYOUT"), LOC(@"IPHONE_LAYOUT_DESC"), @"iPhoneLayout_enabled"); + SWITCH_ITEM(LOC(@"NEW_MINIPLAYER_STYLE"), LOC(@"NEW_MINIPLAYER_STYLE_DESC"), @"bigYTMiniPlayer_enabled"); + SWITCH_ITEM(LOC(@"YT_RE_EXPLORE"), LOC(@"YT_RE_EXPLORE_DESC"), @"reExplore_enabled"); - [YTSettingsSectionItemClass switchItemWithTitle:LOC(@"YT_RE_EXPLORE") - titleDescription:LOC(@"YT_RE_EXPLORE_DESC") - accessibilityIdentifier:nil - switchOn:IS_ENABLED(@"reExplore_enabled") - switchBlock:^BOOL (YTSettingsCell *cell, BOOL enabled) { - [[NSUserDefaults standardUserDefaults] setBool:enabled forKey:@"reExplore_enabled"]; - return YES; - } - settingItemId:0], - ]; - - YTSettingsPickerViewController *picker = [[%c(YTSettingsPickerViewController) alloc] initWithNavTitle:LOC(@"MISCELLANEOUS") pickerSectionTitle:nil rows:rows selectedItemIndex:NSNotFound parentResponder:[self parentResponder]]; - [settingsViewController pushViewController:picker]; - return YES; - }]; - [sectionItems addObject:miscellaneousGroup]; + # pragma mark - About + SECTION_HEADER(@"About"); + + YTSettingsSectionItem *bug = [%c(YTSettingsSectionItem) + itemWithTitle:@"Report an issue" + titleDescription:nil + accessibilityIdentifier:nil + detailTextBlock:nil + selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) { + return [%c(YTUIUtils) openURL:[NSURL URLWithString:@"https://github.com/therealFoxster/uYouPlus/issues"]]; + } + ]; + [sectionItems addObject:bug]; + + YTSettingsSectionItem *version = [%c(YTSettingsSectionItem) + itemWithTitle:LOC(@"VERSION") + titleDescription:nil + accessibilityIdentifier:nil + detailTextBlock:^NSString *() { + return [[NSString stringWithFormat:@"%@", @(OS_STRINGIFY(TWEAK_VERSION))] stringByReplacingOccurrencesOfString:@"\"" withString:@""]; + } + selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) { + return [%c(YTUIUtils) openURL:[NSURL URLWithString:@"https://github.com/therealFoxster/uYouPlus/releases"]]; + } + ]; + [sectionItems addObject:version]; + + YTSettingsSectionItem *exitYT = [%c(YTSettingsSectionItem) + itemWithTitle:@"Exit YouTube" + titleDescription:nil + accessibilityIdentifier:nil + detailTextBlock:nil + selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) { + // https://stackoverflow.com/a/17802404/19227228 + [[UIApplication sharedApplication] performSelector:@selector(suspend)]; + [NSThread sleepForTimeInterval:0.5]; + exit(0); + } + ]; + [sectionItems addObject:exitYT]; [settingsViewController setSectionItems:sectionItems forCategory:uYouPlusSection title:@"uYouPlus" titleDescription:LOC(@"TITLE DESCRIPTION") headerHidden:YES]; } From a14d95b2d3ecca2ebfee8cbe3ea1d5f3cd62c5d7 Mon Sep 17 00:00:00 2001 From: Foxster Date: Sat, 23 Dec 2023 18:38:55 -0800 Subject: [PATCH 14/45] Show relaunch YouTube snackbars --- Sources/Settings.xm | 26 +++++++++++++++++--------- Sources/uYouPlus.h | 16 ++++++++++++++++ 2 files changed, 33 insertions(+), 9 deletions(-) diff --git a/Sources/Settings.xm b/Sources/Settings.xm index f01c63a..95d34b8 100644 --- a/Sources/Settings.xm +++ b/Sources/Settings.xm @@ -10,6 +10,10 @@ #define SWITCH_ITEM(t, d, k) [sectionItems addObject:[YTSettingsSectionItemClass switchItemWithTitle:t titleDescription:d accessibilityIdentifier:nil switchOn:IS_ENABLED(k) switchBlock:^BOOL (YTSettingsCell *cell, BOOL enabled) {[[NSUserDefaults standardUserDefaults] setBool:enabled forKey:k];return YES;} settingItemId:0]] +#define SHOW_RELAUNCH_YT_SNACKBAR [[%c(GOOHUDManagerInternal) sharedInstance] showMessageMainThread:[%c(YTHUDMessage) messageWithText:@"Relaunch YouTube to apply changes"]] + +#define SWITCH_ITEM2(t, d, k) [sectionItems addObject:[YTSettingsSectionItemClass switchItemWithTitle:t titleDescription:d accessibilityIdentifier:nil switchOn:IS_ENABLED(k) switchBlock:^BOOL (YTSettingsCell *cell, BOOL enabled) {[[NSUserDefaults standardUserDefaults] setBool:enabled forKey:k];SHOW_RELAUNCH_YT_SNACKBAR;return YES;} settingItemId:0]] + static const NSInteger uYouPlusSection = 500; @interface YTSettingsSectionItemManager (uYouPlus) @@ -66,16 +70,19 @@ extern NSBundle *uYouPlusBundle(); [YTSettingsSectionItemClass checkmarkItemWithTitle:LOC(@"DEFAULT_THEME") titleDescription:LOC(@"DEFAULT_THEME_DESC") selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) { [[NSUserDefaults standardUserDefaults] setInteger:0 forKey:@"appTheme"]; [settingsViewController reloadData]; + SHOW_RELAUNCH_YT_SNACKBAR; return YES; }], [YTSettingsSectionItemClass checkmarkItemWithTitle:LOC(@"OLED_DARK_THEME") titleDescription:LOC(@"OLED_DARK_THEME_DESC") selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) { [[NSUserDefaults standardUserDefaults] setInteger:1 forKey:@"appTheme"]; [settingsViewController reloadData]; + SHOW_RELAUNCH_YT_SNACKBAR; return YES; }], [YTSettingsSectionItemClass checkmarkItemWithTitle:LOC(@"OLD_DARK_THEME") titleDescription:LOC(@"OLD_DARK_THEME_DESC") selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) { [[NSUserDefaults standardUserDefaults] setInteger:2 forKey:@"appTheme"]; [settingsViewController reloadData]; + SHOW_RELAUNCH_YT_SNACKBAR; return YES; }], [YTSettingsSectionItemClass switchItemWithTitle:LOC(@"OLED_KEYBOARD") @@ -84,6 +91,7 @@ extern NSBundle *uYouPlusBundle(); switchOn:IS_ENABLED(@"oledKeyBoard_enabled") switchBlock:^BOOL (YTSettingsCell *cell, BOOL enabled) { [[NSUserDefaults standardUserDefaults] setBool:enabled forKey:@"oledKeyBoard_enabled"]; + SHOW_RELAUNCH_YT_SNACKBAR; return YES; } settingItemId:0] @@ -99,8 +107,8 @@ extern NSBundle *uYouPlusBundle(); SECTION_HEADER(LOC(@"VIDEO_PLAYER_OPTIONS")); SWITCH_ITEM(LOC(@"DISABLE_DOUBLE_TAP_TO_SEEK"), LOC(@"DISABLE_DOUBLE_TAP_TO_SEEK_DESC"), @"doubleTapToSeek_disabled"); - SWITCH_ITEM(LOC(@"SNAP_TO_CHAPTER"), LOC(@"SNAP_TO_CHAPTER_DESC"), @"snapToChapter_enabled"); - SWITCH_ITEM(LOC(@"PINCH_TO_ZOOM"), LOC(@"PINCH_TO_ZOOM_DESC"), @"pinchToZoom_enabled"); + SWITCH_ITEM2(LOC(@"SNAP_TO_CHAPTER"), LOC(@"SNAP_TO_CHAPTER_DESC"), @"snapToChapter_enabled"); + SWITCH_ITEM2(LOC(@"PINCH_TO_ZOOM"), LOC(@"PINCH_TO_ZOOM_DESC"), @"pinchToZoom_enabled"); SWITCH_ITEM(LOC(@"YT_MINIPLAYER"), LOC(@"YT_MINIPLAYER_DESC"), @"ytMiniPlayer_enabled"); SWITCH_ITEM(LOC(@"STOCK_VOLUME_HUD"), LOC(@"STOCK_VOLUME_HUD_DESC"), @"stockVolumeHUD_enabled"); @@ -111,12 +119,12 @@ extern NSBundle *uYouPlusBundle(); SWITCH_ITEM(LOC(@"HIDE_SUBTITLES_BUTTON"), LOC(@"HIDE_SUBTITLES_BUTTON_DESC"), @"hideCC_enabled"); SWITCH_ITEM(LOC(@"HIDE_HUD_MESSAGES"), LOC(@"HIDE_HUD_MESSAGES_DESC"), @"hideHUD_enabled"); SWITCH_ITEM(LOC(@"HIDE_PAID_PROMOTION_CARDS"), LOC(@"HIDE_PAID_PROMOTION_CARDS_DESC"), @"hidePaidPromotionCard_enabled"); - SWITCH_ITEM(LOC(@"HIDE_CHANNEL_WATERMARK"), LOC(@"HIDE_CHANNEL_WATERMARK_DESC"), @"hideChannelWatermark_enabled"); + SWITCH_ITEM2(LOC(@"HIDE_CHANNEL_WATERMARK"), LOC(@"HIDE_CHANNEL_WATERMARK_DESC"), @"hideChannelWatermark_enabled"); SWITCH_ITEM(LOC(@"HIDE_PREVIOUS_AND_NEXT_BUTTON"), LOC(@"HIDE_PREVIOUS_AND_NEXT_BUTTON_DESC"), @"hidePreviousAndNextButton_enabled"); - SWITCH_ITEM(LOC(@"REPLACE_PREVIOUS_NEXT_BUTTON"), LOC(@"REPLACE_PREVIOUS_NEXT_BUTTON_DESC"), @"replacePreviousAndNextButton_enabled"); - SWITCH_ITEM(LOC(@"RED_PROGRESS_BAR"), LOC(@"RED_PROGRESS_BAR_DESC"), @"redProgressBar_enabled"); + SWITCH_ITEM2(LOC(@"REPLACE_PREVIOUS_NEXT_BUTTON"), LOC(@"REPLACE_PREVIOUS_NEXT_BUTTON_DESC"), @"replacePreviousAndNextButton_enabled"); + SWITCH_ITEM2(LOC(@"RED_PROGRESS_BAR"), LOC(@"RED_PROGRESS_BAR_DESC"), @"redProgressBar_enabled"); SWITCH_ITEM(LOC(@"HIDE_HOVER_CARD"), LOC(@"HIDE_HOVER_CARD_DESC"), @"hideHoverCards_enabled"); - SWITCH_ITEM(LOC(@"HIDE_RIGHT_PANEL"), LOC(@"HIDE_RIGHT_PANEL_DESC"), @"hideRightPanel_enabled"); + SWITCH_ITEM2(LOC(@"HIDE_RIGHT_PANEL"), LOC(@"HIDE_RIGHT_PANEL_DESC"), @"hideRightPanel_enabled"); # pragma mark - Shorts controls overlay options SECTION_HEADER(LOC(@"SHORTS_CONTROLS_OVERLAY_OPTIONS")); @@ -134,9 +142,9 @@ extern NSBundle *uYouPlusBundle(); SWITCH_ITEM(LOC(@"ENABLE_YT_STARTUP_ANIMATION"), LOC(@"ENABLE_YT_STARTUP_ANIMATION_DESC"), @"ytStartupAnimation_enabled"); SWITCH_ITEM(LOC(@"HIDE_CHIP_BAR"), LOC(@"HIDE_CHIP_BAR_DESC"), @"hideChipBar_enabled"); SWITCH_ITEM(LOC(@"HIDE_PLAY_NEXT_IN_QUEUE"), LOC(@"HIDE_PLAY_NEXT_IN_QUEUE_DESC"), @"hidePlayNextInQueue_enabled"); - SWITCH_ITEM(LOC(@"IPHONE_LAYOUT"), LOC(@"IPHONE_LAYOUT_DESC"), @"iPhoneLayout_enabled"); - SWITCH_ITEM(LOC(@"NEW_MINIPLAYER_STYLE"), LOC(@"NEW_MINIPLAYER_STYLE_DESC"), @"bigYTMiniPlayer_enabled"); - SWITCH_ITEM(LOC(@"YT_RE_EXPLORE"), LOC(@"YT_RE_EXPLORE_DESC"), @"reExplore_enabled"); + SWITCH_ITEM2(LOC(@"IPHONE_LAYOUT"), LOC(@"IPHONE_LAYOUT_DESC"), @"iPhoneLayout_enabled"); + SWITCH_ITEM2(LOC(@"NEW_MINIPLAYER_STYLE"), LOC(@"NEW_MINIPLAYER_STYLE_DESC"), @"bigYTMiniPlayer_enabled"); + SWITCH_ITEM2(LOC(@"YT_RE_EXPLORE"), LOC(@"YT_RE_EXPLORE_DESC"), @"reExplore_enabled"); # pragma mark - About SECTION_HEADER(@"About"); diff --git a/Sources/uYouPlus.h b/Sources/uYouPlus.h index 4250c6f..ad18c34 100644 --- a/Sources/uYouPlus.h +++ b/Sources/uYouPlus.h @@ -194,4 +194,20 @@ @interface settingsReorderTable : UIViewController @property(nonatomic, strong) UITableView *tableView; +@end + +// Snack bar +@interface YTHUDMessage : NSObject ++ (id)messageWithText:(id)text; +- (void)setAction:(id)action; +@end + +@interface GOOHUDMessageAction : NSObject +- (void)setTitle:(NSString *)title; +- (void)setHandler:(void (^)(id))handler; +@end + +@interface GOOHUDManagerInternal : NSObject +- (void)showMessageMainThread:(id)message; ++ (id)sharedInstance; @end \ No newline at end of file From 5260a2e16e7e31dd029a8b9bc93e54c0a275a56e Mon Sep 17 00:00:00 2001 From: Foxster Date: Sat, 23 Dec 2023 19:09:50 -0800 Subject: [PATCH 15/45] Update en.lproj/Localizable.strings --- .../en.lproj/Localizable.strings | 110 +++++++++--------- 1 file changed, 55 insertions(+), 55 deletions(-) diff --git a/Localizations/uYouPlus.bundle/en.lproj/Localizable.strings b/Localizations/uYouPlus.bundle/en.lproj/Localizable.strings index b1b55c4..70a8ad4 100644 --- a/Localizations/uYouPlus.bundle/en.lproj/Localizable.strings +++ b/Localizations/uYouPlus.bundle/en.lproj/Localizable.strings @@ -3,58 +3,58 @@ "VERSION_CHECK" = "Tap to check for updates!"; // Video player options -"VIDEO_PLAYER_OPTIONS" = "Video Player Options"; +"VIDEO_PLAYER_OPTIONS" = "Video player options"; -"AUTO_FULLSCREEN" = "Auto full screen (YTAutoFullScreen)"; -"AUTO_FULLSCREEN_DESC" = "Autoplay videos at full screen."; +"AUTO_FULLSCREEN" = "YTAutoFullScreen"; +"AUTO_FULLSCREEN_DESC" = "Autoplay videos in full screen"; "DISABLE_DOUBLE_TAP_TO_SEEK" = "Disable double tap to seek"; "DISABLE_DOUBLE_TAP_TO_SEEK_DESC" = ""; "SNAP_TO_CHAPTER" = "Disable snap to chapter"; -"SNAP_TO_CHAPTER_DESC" = "Disable auto snap to chapter when seeking through videos. App restart is required."; +"SNAP_TO_CHAPTER_DESC" = "Disable auto snap to chapter when seeking through videos"; "PINCH_TO_ZOOM" = "Disable pinch to zoom"; -"PINCH_TO_ZOOM_DESC" = "App restart is required."; +"PINCH_TO_ZOOM_DESC" = ""; -"YT_MINIPLAYER" = "Enable the mini player for all YouTube videos"; -"YT_MINIPLAYER_DESC" = "Kid videos for example."; +"YT_MINIPLAYER" = "Enable miniplayer for all videos"; +"YT_MINIPLAYER_DESC" = "e.g., kids videos"; -"STOCK_VOLUME_HUD" = "Use iOS stock volume HUD"; +"STOCK_VOLUME_HUD" = "Use stock iOS volume HUD"; "STOCK_VOLUME_HUD_DESC" = ""; // Video controls overlay options -"VIDEO_CONTROLS_OVERLAY_OPTIONS" = "Video Controls Overlay Options"; +"VIDEO_CONTROLS_OVERLAY_OPTIONS" = "Video controls overlay options"; -"HIDE_AUTOPLAY_SWITCH" = "Hide Autoplay switch"; -"HIDE_AUTOPLAY_SWITCH_DESC" = "Hide the Autoplay switch in video controls overlay."; +"HIDE_AUTOPLAY_SWITCH" = "Hide autoplay switch"; +"HIDE_AUTOPLAY_SWITCH_DESC" = ""; -"HIDE_SUBTITLES_BUTTON" = "Hide Subtitles button"; -"HIDE_SUBTITLES_BUTTON_DESC" = "Hide the Subtitles button in video controls overlay."; +"HIDE_SUBTITLES_BUTTON" = "Hide subtitles button"; +"HIDE_SUBTITLES_BUTTON_DESC" = ""; -"HIDE_HUD_MESSAGES" = "Hide HUD Messages"; -"HIDE_HUD_MESSAGES_DESC" = "Example: CC is turned on/off, Video loop is on,..."; +"HIDE_HUD_MESSAGES" = "Hide HUD messages"; +"HIDE_HUD_MESSAGES_DESC" = "e.g., CC turned on/off"; -"HIDE_PAID_PROMOTION_CARDS" = "Hide Paid Promotion banner"; -"HIDE_PAID_PROMOTION_CARDS_DESC" = "Hide the 'Includes Paid Promotions' banner in some videos."; +"HIDE_PAID_PROMOTION_CARDS" = "Hide paid promotion banner"; +"HIDE_PAID_PROMOTION_CARDS_DESC" = ""; "HIDE_CHANNEL_WATERMARK" = "Hide channel watermark"; -"HIDE_CHANNEL_WATERMARK_DESC" = "Hide channel's watermark in video controls overlay. App restart is required."; +"HIDE_CHANNEL_WATERMARK_DESC" = ""; -"HIDE_PREVIOUS_AND_NEXT_BUTTON" = "Hide Previous and Next button"; -"HIDE_PREVIOUS_AND_NEXT_BUTTON_DESC" = "Hide the Previous and Next button in video controls overlay."; +"HIDE_PREVIOUS_AND_NEXT_BUTTON" = "Hide previous and next buttons"; +"HIDE_PREVIOUS_AND_NEXT_BUTTON_DESC" = ""; -"REPLACE_PREVIOUS_NEXT_BUTTON" = "Replace Previous and Next button"; -"REPLACE_PREVIOUS_NEXT_BUTTON_DESC" = "Replace the Previous and Next buttons with the Fast forward and Rewind buttons. App restart is required."; +"REPLACE_PREVIOUS_NEXT_BUTTON" = "Replace previous and next buttons with forward and rewind"; +"REPLACE_PREVIOUS_NEXT_BUTTON_DESC" = ""; -"HIDE_HOVER_CARD" = "Hide End screens hover cards (YTNoHoverCards)"; -"HIDE_HOVER_CARD_DESC" = "Hide the creator End screens (thumbnails) at the end of videos."; +"HIDE_HOVER_CARD" = "YTNoHoverCards"; +"HIDE_HOVER_CARD_DESC" = "Hide end screens at the end of videos"; -"HIDE_RIGHT_PANEL" = "Hide the right panel in fullscreen mode"; -"HIDE_RIGHT_PANEL_DESC" = "App restart is required."; +"HIDE_RIGHT_PANEL" = "Hide engagement panels in fullscreen mode"; +"HIDE_RIGHT_PANEL_DESC" = ""; "RED_PROGRESS_BAR" = "Red progress bar"; -"RED_PROGRESS_BAR_DESC" = "Bring back the red progress bar. App restart is required."; +"RED_PROGRESS_BAR_DESC" = ""; "DONT_EAT_MY_CONTENT" = "Prevent Notch/Island on 2:1 video content (DontEatMyContent)"; "DONT_EAT_MY_CONTENT_DESC" = "Prevent the notch/Dynamic Island from munching on 2:1 video content in YouTube. App restart is required."; @@ -80,46 +80,46 @@ "HIDE_UYOU_SHORTS_DOWNLOAD_BUTTON" = "Hide uYou's buttons"; "HIDE_UYOU_SHORTS_DOWNLOAD_BUTTON_DESC" = "Hide uYou's download buttons in Shorts."; -"HIDE_SUBCRIPTIONS" = "Hide Subscriptions button"; -"HIDE_SUBCRIPTIONS_DESC" = "Hide Subscriptions button which shows up when paused."; +"HIDE_SUBCRIPTIONS" = "Hide subscriptions button"; +"HIDE_SUBCRIPTIONS_DESC" = ""; -"HIDE_SUPER_THANKS" = "Hide 'Buy Super Thanks' banner"; -"HIDE_SUPER_THANKS_DESC" = "Hide the 'Buy Super Thanks' banner in Shorts."; +"HIDE_SUPER_THANKS" = "Hide \"Buy Super Thanks\" banner"; +"HIDE_SUPER_THANKS_DESC" = ""; "DISABLE_RESUME_TO_SHORTS" = "Disable resume to Shorts"; -"DISABLE_RESUME_TO_SHORTS_DESC" = "If you close YouTube while watching Shorts, Shorts won‘t automatically play next time you launch YouTube."; +"DISABLE_RESUME_TO_SHORTS_DESC" = "If you close YouTube while watching Shorts, this prevents it from automatically resuming the next time you reopen the app"; // Theme -"THEME_OPTIONS" = "Theme Options"; +"THEME_OPTIONS" = "Dark theme"; -"OLED_DARK_THEME" = "OLED dark theme (Experimental)"; +"OLED_DARK_THEME" = "OLED (experimental)"; "OLED_DARK_THEME_2" = "OLED dark theme"; -"OLED_DARK_THEME_DESC" = "True dark theme. Might not work correctly in some cases. App restart is required after you enable/disable this option."; +"OLED_DARK_THEME_DESC" = "Pure-black dark theme"; -"OLD_DARK_THEME" = "Old dark theme"; -"OLD_DARK_THEME_DESC" = "Old YouTube's dark theme (grey theme). App restart is required."; +"OLD_DARK_THEME" = "Light grey"; +"OLD_DARK_THEME_DESC" = "YouTube's old dark theme"; "DEFAULT_THEME" = "Default"; -"DEFAULT_THEME_DESC" = "Default dark(er) theme of YouTube. App restart is required."; +"DEFAULT_THEME_DESC" = ""; -"OLED_KEYBOARD" = "OLED Keyboard (Experimental)"; -"OLED_KEYBOARD_DESC" = "Might not work correctly in some cases. App restart is required."; +"OLED_KEYBOARD" = "OLED keyboard (experimental)"; +"OLED_KEYBOARD_DESC" = ""; // Miscellaneous "MISCELLANEOUS" = "Miscellaneous"; -"CAST_CONFIRM" = "Confirm alert before casting (YTCastConfirm)"; -"CAST_CONFIRM_DESC" = "Show a confirm alert before casting to prevent accidentally hijacking TV."; -"CASTING" = "Castings"; +"CAST_CONFIRM" = "YTCastConfirm"; +"CAST_CONFIRM_DESC" = "Show an alert before casting"; +"CASTING" = "Casting"; "MSG_ARE_YOU_SURE" = "Are you sure you want to start casting?"; "MSG_YES" = "Yes"; "MSG_CANCEL" = "Cancel"; "DISABLE_HINTS" = "Disable hints"; -"DISABLE_HINTS_DESC" = "Disable feature hints from YouTube that usually display when the app is freshly installed."; +"DISABLE_HINTS_DESC" = "Disable feature hints from YouTube that usually show up when the app is freshly installed"; "ENABLE_FLEX" = "Enable FLEX"; -"ENABLE_FLEX_DESC" = "Enable FLEX for debugging (not recommended). Leave this off unless you know what you are doing."; +"ENABLE_FLEX_DESC" = "Enable FLEX for debugging"; "ENABLE_YT_STARTUP_ANIMATION" = "Enable YouTube startup animation"; "ENABLE_YT_STARTUP_ANIMATION_DESC" = ""; @@ -127,17 +127,17 @@ "FIX_GOOGLE_SIGNIN" = "Fix Google Sign in (for TrollStore user only)"; "FIX_GOOGLE_SIGNIN_DESC" = "Only turn on this option when you can't sign in with your Google account and the app was installed via TrollStore. If you can log in normally, keep it disabled. App restart is required."; -"HIDE_CHIP_BAR" = "Hide the Upper bar"; -"HIDE_CHIP_BAR_DESC" = "Hide Upper bar in the Home feeds (Trends, Music, Gaming...) and Subscription feeds (All videos, Continue watching...)."; +"HIDE_CHIP_BAR" = "Hide upper bar"; +"HIDE_CHIP_BAR_DESC" = "Hide upper bar in the home and subscription feeds (e.g., All videos, Continue watching, etc.)"; -"HIDE_PLAY_NEXT_IN_QUEUE" = "Hide \"Play next in queue\""; -"HIDE_PLAY_NEXT_IN_QUEUE_DESC" = "Hide the premium \"Play next in queue\" option in video context menus"; +"HIDE_PLAY_NEXT_IN_QUEUE" = "Hide \"Play next in queue\" option"; +"HIDE_PLAY_NEXT_IN_QUEUE_DESC" = ""; -"NEW_MINIPLAYER_STYLE" = "New mini player bar style (BigYTMiniPlayer)"; -"NEW_MINIPLAYER_STYLE_DESC" = "App restart is required."; +"NEW_MINIPLAYER_STYLE" = "BigYTMiniPlayer"; +"NEW_MINIPLAYER_STYLE_DESC" = "New mini player bar style"; -"YT_RE_EXPLORE" = "Replace Shorts tab with Explore tab (YTReExplore)"; -"YT_RE_EXPLORE_DESC" = "App restart is required."; +"YT_RE_EXPLORE" = "YTReExplore"; +"YT_RE_EXPLORE_DESC" = "Replace Shorts tab with Explore tab"; -"IPHONE_LAYOUT" = "iPhone Layout"; -"IPHONE_LAYOUT_DESC" = "Toggle to use the iPhone Layout. App restart is required."; +"IPHONE_LAYOUT" = "iPhone layout"; +"IPHONE_LAYOUT_DESC" = ""; From 18bc0268de6ce1615224cbafadffb51b1b4c9b1c Mon Sep 17 00:00:00 2001 From: Foxster Date: Sat, 23 Dec 2023 19:12:23 -0800 Subject: [PATCH 16/45] Rearrange settings items --- Sources/Settings.xm | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Sources/Settings.xm b/Sources/Settings.xm index 95d34b8..01d0f54 100644 --- a/Sources/Settings.xm +++ b/Sources/Settings.xm @@ -73,14 +73,14 @@ extern NSBundle *uYouPlusBundle(); SHOW_RELAUNCH_YT_SNACKBAR; return YES; }], - [YTSettingsSectionItemClass checkmarkItemWithTitle:LOC(@"OLED_DARK_THEME") titleDescription:LOC(@"OLED_DARK_THEME_DESC") selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) { - [[NSUserDefaults standardUserDefaults] setInteger:1 forKey:@"appTheme"]; + [YTSettingsSectionItemClass checkmarkItemWithTitle:LOC(@"OLD_DARK_THEME") titleDescription:LOC(@"OLD_DARK_THEME_DESC") selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) { + [[NSUserDefaults standardUserDefaults] setInteger:2 forKey:@"appTheme"]; [settingsViewController reloadData]; SHOW_RELAUNCH_YT_SNACKBAR; return YES; }], - [YTSettingsSectionItemClass checkmarkItemWithTitle:LOC(@"OLD_DARK_THEME") titleDescription:LOC(@"OLD_DARK_THEME_DESC") selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) { - [[NSUserDefaults standardUserDefaults] setInteger:2 forKey:@"appTheme"]; + [YTSettingsSectionItemClass checkmarkItemWithTitle:LOC(@"OLED_DARK_THEME") titleDescription:LOC(@"OLED_DARK_THEME_DESC") selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) { + [[NSUserDefaults standardUserDefaults] setInteger:1 forKey:@"appTheme"]; [settingsViewController reloadData]; SHOW_RELAUNCH_YT_SNACKBAR; return YES; @@ -138,13 +138,13 @@ extern NSBundle *uYouPlusBundle(); SWITCH_ITEM(LOC(@"CAST_CONFIRM"), LOC(@"CAST_CONFIRM_DESC"), @"castConfirm_enabled"); SWITCH_ITEM(LOC(@"DISABLE_HINTS"), LOC(@"DISABLE_HINTS_DESC"), @"disableHints_enabled"); - SWITCH_ITEM(LOC(@"ENABLE_FLEX"), LOC(@"ENABLE_FLEX_DESC"), @"flex_enabled"); SWITCH_ITEM(LOC(@"ENABLE_YT_STARTUP_ANIMATION"), LOC(@"ENABLE_YT_STARTUP_ANIMATION_DESC"), @"ytStartupAnimation_enabled"); SWITCH_ITEM(LOC(@"HIDE_CHIP_BAR"), LOC(@"HIDE_CHIP_BAR_DESC"), @"hideChipBar_enabled"); SWITCH_ITEM(LOC(@"HIDE_PLAY_NEXT_IN_QUEUE"), LOC(@"HIDE_PLAY_NEXT_IN_QUEUE_DESC"), @"hidePlayNextInQueue_enabled"); SWITCH_ITEM2(LOC(@"IPHONE_LAYOUT"), LOC(@"IPHONE_LAYOUT_DESC"), @"iPhoneLayout_enabled"); SWITCH_ITEM2(LOC(@"NEW_MINIPLAYER_STYLE"), LOC(@"NEW_MINIPLAYER_STYLE_DESC"), @"bigYTMiniPlayer_enabled"); SWITCH_ITEM2(LOC(@"YT_RE_EXPLORE"), LOC(@"YT_RE_EXPLORE_DESC"), @"reExplore_enabled"); + SWITCH_ITEM(LOC(@"ENABLE_FLEX"), LOC(@"ENABLE_FLEX_DESC"), @"flex_enabled"); # pragma mark - About SECTION_HEADER(@"About"); From 17425c8f0253dc5bd0b1baf5348836ccd88c2db0 Mon Sep 17 00:00:00 2001 From: Foxster Date: Sat, 23 Dec 2023 19:42:17 -0800 Subject: [PATCH 17/45] Update en.lproj/Localizable.strings --- .../uYouPlus.bundle/en.lproj/Localizable.strings | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Localizations/uYouPlus.bundle/en.lproj/Localizable.strings b/Localizations/uYouPlus.bundle/en.lproj/Localizable.strings index 70a8ad4..b3c96bf 100644 --- a/Localizations/uYouPlus.bundle/en.lproj/Localizable.strings +++ b/Localizations/uYouPlus.bundle/en.lproj/Localizable.strings @@ -44,14 +44,14 @@ "HIDE_PREVIOUS_AND_NEXT_BUTTON" = "Hide previous and next buttons"; "HIDE_PREVIOUS_AND_NEXT_BUTTON_DESC" = ""; -"REPLACE_PREVIOUS_NEXT_BUTTON" = "Replace previous and next buttons with forward and rewind"; -"REPLACE_PREVIOUS_NEXT_BUTTON_DESC" = ""; +"REPLACE_PREVIOUS_NEXT_BUTTON" = "Use fast forward and rewind buttons"; +"REPLACE_PREVIOUS_NEXT_BUTTON_DESC" = "Replace previous and next buttons with fast forward and rewind"; "HIDE_HOVER_CARD" = "YTNoHoverCards"; "HIDE_HOVER_CARD_DESC" = "Hide end screens at the end of videos"; -"HIDE_RIGHT_PANEL" = "Hide engagement panels in fullscreen mode"; -"HIDE_RIGHT_PANEL_DESC" = ""; +"HIDE_RIGHT_PANEL" = "Hide engagement panels in full screen"; +"HIDE_RIGHT_PANEL_DESC" = "e.g, comments, live chat, etc."; "RED_PROGRESS_BAR" = "Red progress bar"; "RED_PROGRESS_BAR_DESC" = ""; From 7fa6f0704edb5f1c0dc3dd7042f129e567eacf14 Mon Sep 17 00:00:00 2001 From: Foxster Date: Sat, 23 Dec 2023 20:15:35 -0800 Subject: [PATCH 18/45] Properly rearrange theme settings items --- Sources/Settings.xm | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Sources/Settings.xm b/Sources/Settings.xm index 01d0f54..8f948a2 100644 --- a/Sources/Settings.xm +++ b/Sources/Settings.xm @@ -57,9 +57,9 @@ extern NSBundle *uYouPlusBundle(); detailTextBlock:^NSString *() { switch (APP_THEME_IDX) { case 1: - return LOC(@"OLED_DARK_THEME_2"); - case 2: return LOC(@"OLD_DARK_THEME"); + case 2: + return LOC(@"OLED_DARK_THEME_2"); case 0: default: return LOC(@"DEFAULT_THEME"); @@ -74,13 +74,13 @@ extern NSBundle *uYouPlusBundle(); return YES; }], [YTSettingsSectionItemClass checkmarkItemWithTitle:LOC(@"OLD_DARK_THEME") titleDescription:LOC(@"OLD_DARK_THEME_DESC") selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) { - [[NSUserDefaults standardUserDefaults] setInteger:2 forKey:@"appTheme"]; + [[NSUserDefaults standardUserDefaults] setInteger:1 forKey:@"appTheme"]; [settingsViewController reloadData]; SHOW_RELAUNCH_YT_SNACKBAR; return YES; }], [YTSettingsSectionItemClass checkmarkItemWithTitle:LOC(@"OLED_DARK_THEME") titleDescription:LOC(@"OLED_DARK_THEME_DESC") selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) { - [[NSUserDefaults standardUserDefaults] setInteger:1 forKey:@"appTheme"]; + [[NSUserDefaults standardUserDefaults] setInteger:2 forKey:@"appTheme"]; [settingsViewController reloadData]; SHOW_RELAUNCH_YT_SNACKBAR; return YES; From c62f450a2ffb5b244acce7123782f3a4f91351fe Mon Sep 17 00:00:00 2001 From: Foxster Date: Sat, 23 Dec 2023 20:17:09 -0800 Subject: [PATCH 19/45] Update en.lproj/Localizable.strings --- Localizations/uYouPlus.bundle/en.lproj/Localizable.strings | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Localizations/uYouPlus.bundle/en.lproj/Localizable.strings b/Localizations/uYouPlus.bundle/en.lproj/Localizable.strings index b3c96bf..6cfaf8c 100644 --- a/Localizations/uYouPlus.bundle/en.lproj/Localizable.strings +++ b/Localizations/uYouPlus.bundle/en.lproj/Localizable.strings @@ -141,3 +141,5 @@ "IPHONE_LAYOUT" = "iPhone layout"; "IPHONE_LAYOUT_DESC" = ""; + +"DARK_THEME" = "Dark theme"; \ No newline at end of file From b4196d96ebf0a6b49f08dc0e85a25c4570ec5326 Mon Sep 17 00:00:00 2001 From: Foxster Date: Sat, 23 Dec 2023 20:17:18 -0800 Subject: [PATCH 20/45] Update Settings.xm --- Sources/Settings.xm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Sources/Settings.xm b/Sources/Settings.xm index 8f948a2..194eed1 100644 --- a/Sources/Settings.xm +++ b/Sources/Settings.xm @@ -52,7 +52,7 @@ extern NSBundle *uYouPlusBundle(); SECTION_HEADER(@"App theme"); YTSettingsSectionItem *themeGroup = [YTSettingsSectionItemClass - itemWithTitle:LOC(@"THEME_OPTIONS") + itemWithTitle:LOC(@"DARK_THEME") accessibilityIdentifier:nil detailTextBlock:^NSString *() { switch (APP_THEME_IDX) { @@ -96,7 +96,7 @@ extern NSBundle *uYouPlusBundle(); } settingItemId:0] ]; - YTSettingsPickerViewController *picker = [[%c(YTSettingsPickerViewController) alloc] initWithNavTitle:LOC(@"THEME_OPTIONS") pickerSectionTitle:nil rows:rows selectedItemIndex:APP_THEME_IDX parentResponder:[self parentResponder]]; + YTSettingsPickerViewController *picker = [[%c(YTSettingsPickerViewController) alloc] initWithNavTitle:LOC(@"DARK_THEME") pickerSectionTitle:[LOC(@"DARK_THEME") uppercaseString] rows:rows selectedItemIndex:APP_THEME_IDX parentResponder:[self parentResponder]]; [settingsViewController pushViewController:picker]; return YES; } From b71083f9e3a185bc5e5b783221255c30e6770416 Mon Sep 17 00:00:00 2001 From: Foxster Date: Sat, 23 Dec 2023 20:51:01 -0800 Subject: [PATCH 21/45] Fix wrong indices for dark theme settings --- Sources/uYouPlus.xm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Sources/uYouPlus.xm b/Sources/uYouPlus.xm index fbc22bb..760a07f 100644 --- a/Sources/uYouPlus.xm +++ b/Sources/uYouPlus.xm @@ -1,8 +1,8 @@ #import "uYouPlus.h" #define IS_DARK_APPEARANCE_ENABLED ([[NSUserDefaults standardUserDefaults] integerForKey:@"page_style"] == 1) -#define IS_OLED_DARK_THEME_SELECTED (APP_THEME_IDX == 1) -#define IS_OLD_DARK_THEME_SELECTED (APP_THEME_IDX == 2) +#define IS_OLD_DARK_THEME_SELECTED (APP_THEME_IDX == 1) +#define IS_OLED_DARK_THEME_SELECTED (APP_THEME_IDX == 2) // Tweak's bundle for Localizations support - @PoomSmart - https://github.com/PoomSmart/YouPiP/commit/aea2473f64c75d73cab713e1e2d5d0a77675024f NSBundle *uYouPlusBundle() { From 809e59df0242231753034f2cdabf3a72dc50c0da Mon Sep 17 00:00:00 2001 From: Foxster Date: Sat, 23 Dec 2023 20:51:45 -0800 Subject: [PATCH 22/45] Fix navigation bar color in (default) dark mode --- Sources/uYouPlus.xm | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/Sources/uYouPlus.xm b/Sources/uYouPlus.xm index 760a07f..e00522c 100644 --- a/Sources/uYouPlus.xm +++ b/Sources/uYouPlus.xm @@ -474,6 +474,13 @@ static void replaceTab(YTIGuideResponse *response) { %end // Theme Options +// Fix navigation bar showing a lighter grey with default dark mode +%hook YTCommonColorPalette +- (UIColor *)brandBackgroundSolid { + return self.pageStyle == 1 ? [UIColor colorWithRed:0.05882352941176471 green:0.05882352941176471 blue:0.05882352941176471 alpha:1.0] : %orig; +} +%end + // Old dark theme (gray) %group gOldDarkTheme %hook YTColdConfig From a230c4e16b848d9b3a6315d28150fb23cb2cc13a Mon Sep 17 00:00:00 2001 From: Foxster Date: Sun, 24 Dec 2023 16:05:39 -0800 Subject: [PATCH 23/45] Update en.lproj/Localizable.strings --- .../en.lproj/Localizable.strings | 36 +++++++++++-------- 1 file changed, 21 insertions(+), 15 deletions(-) diff --git a/Localizations/uYouPlus.bundle/en.lproj/Localizable.strings b/Localizations/uYouPlus.bundle/en.lproj/Localizable.strings index 6cfaf8c..1319227 100644 --- a/Localizations/uYouPlus.bundle/en.lproj/Localizable.strings +++ b/Localizations/uYouPlus.bundle/en.lproj/Localizable.strings @@ -12,13 +12,13 @@ "DISABLE_DOUBLE_TAP_TO_SEEK_DESC" = ""; "SNAP_TO_CHAPTER" = "Disable snap to chapter"; -"SNAP_TO_CHAPTER_DESC" = "Disable auto snap to chapter when seeking through videos"; +"SNAP_TO_CHAPTER_DESC" = "Disables auto snap to chapter when seeking through videos"; "PINCH_TO_ZOOM" = "Disable pinch to zoom"; "PINCH_TO_ZOOM_DESC" = ""; "YT_MINIPLAYER" = "Enable miniplayer for all videos"; -"YT_MINIPLAYER_DESC" = "e.g., kids videos"; +"YT_MINIPLAYER_DESC" = "The miniplayer cannot be activated for certain videos (e.g., kids videos). This option bypasses that"; "STOCK_VOLUME_HUD" = "Use stock iOS volume HUD"; "STOCK_VOLUME_HUD_DESC" = ""; @@ -33,7 +33,7 @@ "HIDE_SUBTITLES_BUTTON_DESC" = ""; "HIDE_HUD_MESSAGES" = "Hide HUD messages"; -"HIDE_HUD_MESSAGES_DESC" = "e.g., CC turned on/off"; +"HIDE_HUD_MESSAGES_DESC" = "Hides snackbars that display for certain actions (e.g., CC turned on/off)"; "HIDE_PAID_PROMOTION_CARDS" = "Hide paid promotion banner"; "HIDE_PAID_PROMOTION_CARDS_DESC" = ""; @@ -45,13 +45,13 @@ "HIDE_PREVIOUS_AND_NEXT_BUTTON_DESC" = ""; "REPLACE_PREVIOUS_NEXT_BUTTON" = "Use fast forward and rewind buttons"; -"REPLACE_PREVIOUS_NEXT_BUTTON_DESC" = "Replace previous and next buttons with fast forward and rewind"; +"REPLACE_PREVIOUS_NEXT_BUTTON_DESC" = "Replaces previous and next buttons with fast forward and rewind"; "HIDE_HOVER_CARD" = "YTNoHoverCards"; -"HIDE_HOVER_CARD_DESC" = "Hide end screens at the end of videos"; +"HIDE_HOVER_CARD_DESC" = "Hides videos' end screens"; "HIDE_RIGHT_PANEL" = "Hide engagement panels in full screen"; -"HIDE_RIGHT_PANEL_DESC" = "e.g, comments, live chat, etc."; +"HIDE_RIGHT_PANEL_DESC" = "Hides right panels (e.g., comments, live chat, etc.) in landscape"; "RED_PROGRESS_BAR" = "Red progress bar"; "RED_PROGRESS_BAR_DESC" = ""; @@ -96,7 +96,7 @@ "OLED_DARK_THEME_2" = "OLED dark theme"; "OLED_DARK_THEME_DESC" = "Pure-black dark theme"; -"OLD_DARK_THEME" = "Light grey"; +"OLD_DARK_THEME" = "Lighter grey"; "OLD_DARK_THEME_DESC" = "YouTube's old dark theme"; "DEFAULT_THEME" = "Default"; @@ -109,17 +109,17 @@ "MISCELLANEOUS" = "Miscellaneous"; "CAST_CONFIRM" = "YTCastConfirm"; -"CAST_CONFIRM_DESC" = "Show an alert before casting"; +"CAST_CONFIRM_DESC" = "Shows a confirmation alert before casting"; "CASTING" = "Casting"; "MSG_ARE_YOU_SURE" = "Are you sure you want to start casting?"; "MSG_YES" = "Yes"; "MSG_CANCEL" = "Cancel"; "DISABLE_HINTS" = "Disable hints"; -"DISABLE_HINTS_DESC" = "Disable feature hints from YouTube that usually show up when the app is freshly installed"; +"DISABLE_HINTS_DESC" = "Disables YouTube feature hints that are displayed when the app is newly installed"; "ENABLE_FLEX" = "Enable FLEX"; -"ENABLE_FLEX_DESC" = "Enable FLEX for debugging"; +"ENABLE_FLEX_DESC" = "Enables FLEX for debugging"; "ENABLE_YT_STARTUP_ANIMATION" = "Enable YouTube startup animation"; "ENABLE_YT_STARTUP_ANIMATION_DESC" = ""; @@ -128,18 +128,24 @@ "FIX_GOOGLE_SIGNIN_DESC" = "Only turn on this option when you can't sign in with your Google account and the app was installed via TrollStore. If you can log in normally, keep it disabled. App restart is required."; "HIDE_CHIP_BAR" = "Hide upper bar"; -"HIDE_CHIP_BAR_DESC" = "Hide upper bar in the home and subscription feeds (e.g., All videos, Continue watching, etc.)"; +"HIDE_CHIP_BAR_DESC" = "Hides upper bar in the home and subscription feeds (e.g., All videos, Continue watching, etc.)"; -"HIDE_PLAY_NEXT_IN_QUEUE" = "Hide \"Play next in queue\" option"; +"HIDE_PLAY_NEXT_IN_QUEUE" = "Hide \"Play next in queue\""; "HIDE_PLAY_NEXT_IN_QUEUE_DESC" = ""; "NEW_MINIPLAYER_STYLE" = "BigYTMiniPlayer"; "NEW_MINIPLAYER_STYLE_DESC" = "New mini player bar style"; "YT_RE_EXPLORE" = "YTReExplore"; -"YT_RE_EXPLORE_DESC" = "Replace Shorts tab with Explore tab"; +"YT_RE_EXPLORE_DESC" = "Replaces Shorts tab with Explore tab"; -"IPHONE_LAYOUT" = "iPhone layout"; +"IPHONE_LAYOUT" = "Force iPhone layout"; "IPHONE_LAYOUT_DESC" = ""; -"DARK_THEME" = "Dark theme"; \ No newline at end of file +"DARK_THEME" = "Dark theme"; +"RESTART_YOUTUBE" = "Restart YouTube to apply changes"; +"QUIT_YOUTUBE" = "Quit YouTube"; +"APP_THEME" = "App theme"; +"REPORT_AN_ISSUE" = "Report an issue"; +"ABOUT" = "About"; +"ADD_TITLE" = "Add your title here..."; \ No newline at end of file From 069db37bf2ba316d8820dd6a27cf3f652b1e271d Mon Sep 17 00:00:00 2001 From: Foxster Date: Sun, 24 Dec 2023 16:06:52 -0800 Subject: [PATCH 24/45] Update Settings.xm --- Sources/Settings.xm | 169 +++++++++++++++++++++++++------------------- 1 file changed, 96 insertions(+), 73 deletions(-) diff --git a/Sources/Settings.xm b/Sources/Settings.xm index 194eed1..74a45b5 100644 --- a/Sources/Settings.xm +++ b/Sources/Settings.xm @@ -6,11 +6,13 @@ #import "../Tweaks/YouTubeHeader/YTSettingsPickerViewController.h" #import "uYouPlus.h" -#define SECTION_HEADER(s) [sectionItems addObject:[%c(YTSettingsSectionItem) itemWithTitle:nil titleDescription:[s uppercaseString] accessibilityIdentifier:nil detailTextBlock:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger sectionItemIndex) { return NO; }]] +#define VERSION_STRING [[NSString stringWithFormat:@"%@", @(OS_STRINGIFY(TWEAK_VERSION))] stringByReplacingOccurrencesOfString:@"\"" withString:@""] + +#define SECTION_HEADER(s) [sectionItems addObject:[%c(YTSettingsSectionItem) itemWithTitle:@"\t" titleDescription:[s uppercaseString] accessibilityIdentifier:nil detailTextBlock:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger sectionItemIndex) { return NO; }]] #define SWITCH_ITEM(t, d, k) [sectionItems addObject:[YTSettingsSectionItemClass switchItemWithTitle:t titleDescription:d accessibilityIdentifier:nil switchOn:IS_ENABLED(k) switchBlock:^BOOL (YTSettingsCell *cell, BOOL enabled) {[[NSUserDefaults standardUserDefaults] setBool:enabled forKey:k];return YES;} settingItemId:0]] -#define SHOW_RELAUNCH_YT_SNACKBAR [[%c(GOOHUDManagerInternal) sharedInstance] showMessageMainThread:[%c(YTHUDMessage) messageWithText:@"Relaunch YouTube to apply changes"]] +#define SHOW_RELAUNCH_YT_SNACKBAR [[%c(GOOHUDManagerInternal) sharedInstance] showMessageMainThread:[%c(YTHUDMessage) messageWithText:LOC(@"RESTART_YOUTUBE")]] #define SWITCH_ITEM2(t, d, k) [sectionItems addObject:[YTSettingsSectionItemClass switchItemWithTitle:t titleDescription:d accessibilityIdentifier:nil switchOn:IS_ENABLED(k) switchBlock:^BOOL (YTSettingsCell *cell, BOOL enabled) {[[NSUserDefaults standardUserDefaults] setBool:enabled forKey:k];SHOW_RELAUNCH_YT_SNACKBAR;return YES;} settingItemId:0]] @@ -48,8 +50,51 @@ extern NSBundle *uYouPlusBundle(); Class YTSettingsSectionItemClass = %c(YTSettingsSectionItem); YTSettingsViewController *settingsViewController = [self valueForKey:@"_settingsViewControllerDelegate"]; + # pragma mark - About + // SECTION_HEADER(LOC(@"ABOUT")); + + YTSettingsSectionItem *version = [%c(YTSettingsSectionItem) + itemWithTitle:LOC(@"VERSION") + titleDescription:nil + accessibilityIdentifier:nil + detailTextBlock:^NSString *() { + return VERSION_STRING; + } + selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) { + return [%c(YTUIUtils) openURL:[NSURL URLWithString:@"https://github.com/therealFoxster/uYouPlus/releases"]]; + } + ]; + [sectionItems addObject:version]; + + YTSettingsSectionItem *bug = [%c(YTSettingsSectionItem) + itemWithTitle:LOC(@"REPORT_AN_ISSUE") + titleDescription:nil + accessibilityIdentifier:nil + detailTextBlock:nil + selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) { + NSString *url = [NSString stringWithFormat:@"https://github.com/therealFoxster/uYouPlus/issues/new/?title=[v%@] %@", VERSION_STRING, LOC(@"ADD_TITLE")]; + + return [%c(YTUIUtils) openURL:[NSURL URLWithString:[url stringByReplacingOccurrencesOfString:@" " withString:@"%20"]]]; + } + ]; + [sectionItems addObject:bug]; + + YTSettingsSectionItem *exitYT = [%c(YTSettingsSectionItem) + itemWithTitle:LOC(@"QUIT_YOUTUBE") + titleDescription:nil + accessibilityIdentifier:nil + detailTextBlock:nil + selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) { + // https://stackoverflow.com/a/17802404/19227228 + [[UIApplication sharedApplication] performSelector:@selector(suspend)]; + [NSThread sleepForTimeInterval:0.5]; + exit(0); + } + ]; + [sectionItems addObject:exitYT]; + # pragma mark - App theme - SECTION_HEADER(@"App theme"); + SECTION_HEADER(LOC(@"APP_THEME")); YTSettingsSectionItem *themeGroup = [YTSettingsSectionItemClass itemWithTitle:LOC(@"DARK_THEME") @@ -67,36 +112,55 @@ extern NSBundle *uYouPlusBundle(); } selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) { NSArray *rows = @[ - [YTSettingsSectionItemClass checkmarkItemWithTitle:LOC(@"DEFAULT_THEME") titleDescription:LOC(@"DEFAULT_THEME_DESC") selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) { - [[NSUserDefaults standardUserDefaults] setInteger:0 forKey:@"appTheme"]; - [settingsViewController reloadData]; - SHOW_RELAUNCH_YT_SNACKBAR; - return YES; - }], - [YTSettingsSectionItemClass checkmarkItemWithTitle:LOC(@"OLD_DARK_THEME") titleDescription:LOC(@"OLD_DARK_THEME_DESC") selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) { - [[NSUserDefaults standardUserDefaults] setInteger:1 forKey:@"appTheme"]; - [settingsViewController reloadData]; - SHOW_RELAUNCH_YT_SNACKBAR; - return YES; - }], - [YTSettingsSectionItemClass checkmarkItemWithTitle:LOC(@"OLED_DARK_THEME") titleDescription:LOC(@"OLED_DARK_THEME_DESC") selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) { - [[NSUserDefaults standardUserDefaults] setInteger:2 forKey:@"appTheme"]; - [settingsViewController reloadData]; - SHOW_RELAUNCH_YT_SNACKBAR; - return YES; - }], - [YTSettingsSectionItemClass switchItemWithTitle:LOC(@"OLED_KEYBOARD") - titleDescription:LOC(@"OLED_KEYBOARD_DESC") - accessibilityIdentifier:nil - switchOn:IS_ENABLED(@"oledKeyBoard_enabled") - switchBlock:^BOOL (YTSettingsCell *cell, BOOL enabled) { - [[NSUserDefaults standardUserDefaults] setBool:enabled forKey:@"oledKeyBoard_enabled"]; - SHOW_RELAUNCH_YT_SNACKBAR; - return YES; - } - settingItemId:0] + [YTSettingsSectionItemClass + checkmarkItemWithTitle:LOC(@"DEFAULT_THEME") + titleDescription:LOC(@"DEFAULT_THEME_DESC") + selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) { + [[NSUserDefaults standardUserDefaults] setInteger:0 forKey:@"appTheme"]; + [settingsViewController reloadData]; + SHOW_RELAUNCH_YT_SNACKBAR; + return YES; + } + ], + [YTSettingsSectionItemClass + checkmarkItemWithTitle:LOC(@"OLD_DARK_THEME") + titleDescription:LOC(@"OLD_DARK_THEME_DESC") + selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) { + [[NSUserDefaults standardUserDefaults] setInteger:1 forKey:@"appTheme"]; + [settingsViewController reloadData]; + SHOW_RELAUNCH_YT_SNACKBAR; + return YES; + } + ], + [YTSettingsSectionItemClass + checkmarkItemWithTitle:LOC(@"OLED_DARK_THEME") + titleDescription:LOC(@"OLED_DARK_THEME_DESC") + selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) { + [[NSUserDefaults standardUserDefaults] setInteger:2 forKey:@"appTheme"]; + [settingsViewController reloadData]; + SHOW_RELAUNCH_YT_SNACKBAR; + return YES; + } + ], + [YTSettingsSectionItemClass + switchItemWithTitle:LOC(@"OLED_KEYBOARD") + titleDescription:LOC(@"OLED_KEYBOARD_DESC") + accessibilityIdentifier:nil + switchOn:IS_ENABLED(@"oledKeyBoard_enabled") + switchBlock:^BOOL (YTSettingsCell *cell, BOOL enabled) { + [[NSUserDefaults standardUserDefaults] setBool:enabled forKey:@"oledKeyBoard_enabled"]; + SHOW_RELAUNCH_YT_SNACKBAR; + return YES; + } + settingItemId:0 + ] + ]; + YTSettingsPickerViewController *picker = [[%c(YTSettingsPickerViewController) alloc] + initWithNavTitle:LOC(@"DARK_THEME") + pickerSectionTitle:[LOC(@"DARK_THEME") uppercaseString] + rows:rows selectedItemIndex:APP_THEME_IDX + parentResponder:[self parentResponder] ]; - YTSettingsPickerViewController *picker = [[%c(YTSettingsPickerViewController) alloc] initWithNavTitle:LOC(@"DARK_THEME") pickerSectionTitle:[LOC(@"DARK_THEME") uppercaseString] rows:rows selectedItemIndex:APP_THEME_IDX parentResponder:[self parentResponder]]; [settingsViewController pushViewController:picker]; return YES; } @@ -146,47 +210,6 @@ extern NSBundle *uYouPlusBundle(); SWITCH_ITEM2(LOC(@"YT_RE_EXPLORE"), LOC(@"YT_RE_EXPLORE_DESC"), @"reExplore_enabled"); SWITCH_ITEM(LOC(@"ENABLE_FLEX"), LOC(@"ENABLE_FLEX_DESC"), @"flex_enabled"); - # pragma mark - About - SECTION_HEADER(@"About"); - - YTSettingsSectionItem *bug = [%c(YTSettingsSectionItem) - itemWithTitle:@"Report an issue" - titleDescription:nil - accessibilityIdentifier:nil - detailTextBlock:nil - selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) { - return [%c(YTUIUtils) openURL:[NSURL URLWithString:@"https://github.com/therealFoxster/uYouPlus/issues"]]; - } - ]; - [sectionItems addObject:bug]; - - YTSettingsSectionItem *version = [%c(YTSettingsSectionItem) - itemWithTitle:LOC(@"VERSION") - titleDescription:nil - accessibilityIdentifier:nil - detailTextBlock:^NSString *() { - return [[NSString stringWithFormat:@"%@", @(OS_STRINGIFY(TWEAK_VERSION))] stringByReplacingOccurrencesOfString:@"\"" withString:@""]; - } - selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) { - return [%c(YTUIUtils) openURL:[NSURL URLWithString:@"https://github.com/therealFoxster/uYouPlus/releases"]]; - } - ]; - [sectionItems addObject:version]; - - YTSettingsSectionItem *exitYT = [%c(YTSettingsSectionItem) - itemWithTitle:@"Exit YouTube" - titleDescription:nil - accessibilityIdentifier:nil - detailTextBlock:nil - selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) { - // https://stackoverflow.com/a/17802404/19227228 - [[UIApplication sharedApplication] performSelector:@selector(suspend)]; - [NSThread sleepForTimeInterval:0.5]; - exit(0); - } - ]; - [sectionItems addObject:exitYT]; - [settingsViewController setSectionItems:sectionItems forCategory:uYouPlusSection title:@"uYouPlus" titleDescription:LOC(@"TITLE DESCRIPTION") headerHidden:YES]; } From 82aece7ad3cc5f773a809f9adbd2e889f530e550 Mon Sep 17 00:00:00 2001 From: Foxster Date: Sun, 24 Dec 2023 17:05:03 -0800 Subject: [PATCH 25/45] Update en.lproj/Localizable.strings --- Localizations/uYouPlus.bundle/en.lproj/Localizable.strings | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Localizations/uYouPlus.bundle/en.lproj/Localizable.strings b/Localizations/uYouPlus.bundle/en.lproj/Localizable.strings index 1319227..7bfc332 100644 --- a/Localizations/uYouPlus.bundle/en.lproj/Localizable.strings +++ b/Localizations/uYouPlus.bundle/en.lproj/Localizable.strings @@ -137,7 +137,7 @@ "NEW_MINIPLAYER_STYLE_DESC" = "New mini player bar style"; "YT_RE_EXPLORE" = "YTReExplore"; -"YT_RE_EXPLORE_DESC" = "Replaces Shorts tab with Explore tab"; +"YT_RE_EXPLORE_DESC" = "Replaces the Shorts tab with the Explore tab"; "IPHONE_LAYOUT" = "Force iPhone layout"; "IPHONE_LAYOUT_DESC" = ""; @@ -145,7 +145,7 @@ "DARK_THEME" = "Dark theme"; "RESTART_YOUTUBE" = "Restart YouTube to apply changes"; "QUIT_YOUTUBE" = "Quit YouTube"; -"APP_THEME" = "App theme"; +"APP_THEME" = "App appearance"; "REPORT_AN_ISSUE" = "Report an issue"; "ABOUT" = "About"; "ADD_TITLE" = "Add your title here..."; \ No newline at end of file From 92af5163bfbfc1a0a7502cf4423b5ec621887f71 Mon Sep 17 00:00:00 2001 From: Foxster Date: Sun, 24 Dec 2023 17:39:45 -0800 Subject: [PATCH 26/45] Replace copy-pasted code with submodules --- .gitmodules | 12 ++++ Makefile | 4 +- Sources/uYouPlus.xm | 136 ----------------------------------- Tweaks/IAmYouTube | 1 + Tweaks/NoYTPremium | 1 + Tweaks/YTClassicVideoQuality | 1 + Tweaks/YTSpeed | 1 + 7 files changed, 18 insertions(+), 138 deletions(-) create mode 160000 Tweaks/IAmYouTube create mode 160000 Tweaks/NoYTPremium create mode 160000 Tweaks/YTClassicVideoQuality create mode 160000 Tweaks/YTSpeed diff --git a/.gitmodules b/.gitmodules index c94fa17..50fb611 100644 --- a/.gitmodules +++ b/.gitmodules @@ -54,3 +54,15 @@ path = Tweaks/iSponsorBlock url = https://github.com/Galactic-Dev/iSponsorBlock.git branch = master +[submodule "Tweaks/IAmYouTube"] + path = Tweaks/IAmYouTube + url = https://github.com/PoomSmart/IAmYouTube.git +[submodule "Tweaks/YTClassicVideoQuality"] + path = Tweaks/YTClassicVideoQuality + url = https://github.com/PoomSmart/YTClassicVideoQuality.git +[submodule "Tweaks/NoYTPremium"] + path = Tweaks/NoYTPremium + url = https://github.com/PoomSmart/NoYTPremium.git +[submodule "Tweaks/YTSpeed"] + path = Tweaks/YTSpeed + url = https://github.com/qnblackcat/YTSpeed.git diff --git a/Makefile b/Makefile index c6a7f31..8669f00 100644 --- a/Makefile +++ b/Makefile @@ -29,7 +29,7 @@ BUNDLE_ID = com.google.ios.youtube $(TWEAK_NAME)_FILES = Sources/uYouPlus.xm Sources/Settings.xm Sources/Patches.xm $(TWEAK_NAME)_FRAMEWORKS = UIKit Security $(TWEAK_NAME)_CFLAGS = -fobjc-arc -DTWEAK_VERSION=\"$(PACKAGE_VERSION)\" -$(TWEAK_NAME)_INJECT_DYLIBS = Tweaks/uYou/Library/MobileSubstrate/DynamicLibraries/uYou.dylib $(THEOS_OBJ_DIR)/libFLEX.dylib $(THEOS_OBJ_DIR)/iSponsorBlock.dylib $(THEOS_OBJ_DIR)/YouPiP.dylib $(THEOS_OBJ_DIR)/YouTubeDislikesReturn.dylib $(THEOS_OBJ_DIR)/YTABConfig.dylib $(THEOS_OBJ_DIR)/YTUHD.dylib $(THEOS_OBJ_DIR)/DontEatMyContent.dylib +$(TWEAK_NAME)_INJECT_DYLIBS = Tweaks/uYou/Library/MobileSubstrate/DynamicLibraries/uYou.dylib $(THEOS_OBJ_DIR)/libFLEX.dylib $(THEOS_OBJ_DIR)/iSponsorBlock.dylib $(THEOS_OBJ_DIR)/YouPiP.dylib $(THEOS_OBJ_DIR)/YouTubeDislikesReturn.dylib $(THEOS_OBJ_DIR)/YTABConfig.dylib $(THEOS_OBJ_DIR)/YTUHD.dylib $(THEOS_OBJ_DIR)/DontEatMyContent.dylib $(THEOS_OBJ_DIR)/IAmYouTube.dylib $(THEOS_OBJ_DIR)/YTClassicVideoQuality.dylib $(THEOS_OBJ_DIR)/NoYTPremium.dylib $(THEOS_OBJ_DIR)/YTSpeed.dylib $(TWEAK_NAME)_EMBED_LIBRARIES = $(THEOS_OBJ_DIR)/libcolorpicker.dylib $(TWEAK_NAME)_EMBED_FRAMEWORKS = $(_THEOS_LOCAL_DATA_DIR)/$(THEOS_OBJ_DIR_NAME)/install/Library/Frameworks/Alderis.framework $(TWEAK_NAME)_EMBED_BUNDLES = $(wildcard Bundles/*.bundle) @@ -37,7 +37,7 @@ $(TWEAK_NAME)_EMBED_EXTENSIONS = $(wildcard Extensions/*.appex) include $(THEOS)/makefiles/common.mk ifneq ($(JAILBROKEN),1) -SUBPROJECTS += Tweaks/Alderis Tweaks/FLEXing/libflex Tweaks/iSponsorBlock Tweaks/Return-YouTube-Dislikes Tweaks/YouPiP Tweaks/YTABConfig Tweaks/YTUHD Tweaks/DontEatMyContent Tweaks/YTVideoOverlay Tweaks/YouMute Tweaks/YouQuality +SUBPROJECTS += Tweaks/Alderis Tweaks/FLEXing/libflex Tweaks/iSponsorBlock Tweaks/Return-YouTube-Dislikes Tweaks/YouPiP Tweaks/YTABConfig Tweaks/YTUHD Tweaks/DontEatMyContent Tweaks/YTVideoOverlay Tweaks/YouMute Tweaks/YouQuality Tweaks/IAmYouTube Tweaks/YTClassicVideoQuality Tweaks/NoYTPremium Tweaks/YTSpeed include $(THEOS_MAKE_PATH)/aggregate.mk endif include $(THEOS_MAKE_PATH)/tweak.mk diff --git a/Sources/uYouPlus.xm b/Sources/uYouPlus.xm index e00522c..2887f97 100644 --- a/Sources/uYouPlus.xm +++ b/Sources/uYouPlus.xm @@ -61,69 +61,6 @@ NSBundle *tweakBundle = uYouPlusBundle(); } %end -// IAmYouTube - https://github.com/PoomSmart/IAmYouTube/ -%hook YTVersionUtils -+ (NSString *)appName { return YT_NAME; } -+ (NSString *)appID { return YT_BUNDLE_ID; } -%end - -%hook GCKBUtils -+ (NSString *)appIdentifier { return YT_BUNDLE_ID; } -%end - -%hook GPCDeviceInfo -+ (NSString *)bundleId { return YT_BUNDLE_ID; } -%end - -%hook OGLBundle -+ (NSString *)shortAppName { return YT_NAME; } -%end - -%hook GVROverlayView -+ (NSString *)appName { return YT_NAME; } -%end - -%hook OGLPhenotypeFlagServiceImpl -- (NSString *)bundleId { return YT_BUNDLE_ID; } -%end - -%hook APMAEU -+ (BOOL)isFAS { return YES; } -%end - -%hook GULAppEnvironmentUtil -+ (BOOL)isFromAppStore { return YES; } -%end - -%hook SSOConfiguration -- (id)initWithClientID:(id)clientID supportedAccountServices:(id)supportedAccountServices { - self = %orig; - [self setValue:YT_NAME forKey:@"_shortAppName"]; - [self setValue:YT_BUNDLE_ID forKey:@"_applicationIdentifier"]; - return self; -} -%end - -%hook NSBundle -- (NSString *)bundleIdentifier { - NSArray *address = [NSThread callStackReturnAddresses]; - Dl_info info = {0}; - if (dladdr((void *)[address[2] longLongValue], &info) == 0) - return %orig; - NSString *path = [NSString stringWithUTF8String:info.dli_fname]; - if ([path hasPrefix:NSBundle.mainBundle.bundlePath]) - return YT_BUNDLE_ID; - return %orig; -} -- (id)objectForInfoDictionaryKey:(NSString *)key { - if ([key isEqualToString:@"CFBundleIdentifier"]) - return YT_BUNDLE_ID; - if ([key isEqualToString:@"CFBundleDisplayName"] || [key isEqualToString:@"CFBundleName"]) - return YT_NAME; - return %orig; -} -%end - // YTMiniPlayerEnabler: https://github.com/level3tjg/YTMiniplayerEnabler/ %hook YTWatchMiniBarViewController - (void)updateMiniBarPlayerStateFromRenderer { @@ -194,33 +131,6 @@ NSBundle *tweakBundle = uYouPlusBundle(); - (BOOL)isLandscapeEngagementPanelSwipeRightToDismissEnabled { return YES; } // Swipe right to dismiss the right panel in fullscreen mode %end -// NOYTPremium - https://github.com/PoomSmart/NoYTPremium/ -%hook YTCommerceEventGroupHandler -- (void)addEventHandlers {} -%end - -%hook YTInterstitialPromoEventGroupHandler -- (void)addEventHandlers {} -%end - -%hook YTPromosheetEventGroupHandler -- (void)addEventHandlers {} -%end - -%hook YTPromoThrottleController -- (BOOL)canShowThrottledPromo { return NO; } -- (BOOL)canShowThrottledPromoWithFrequencyCap:(id)arg1 { return NO; } -- (BOOL)canShowThrottledPromoWithFrequencyCaps:(id)arg1 { return NO; } -%end - -%hook YTIShowFullscreenInterstitialCommand -- (BOOL)shouldThrottleInterstitial { return YES; } -%end - -%hook YTSurveyController -- (void)showSurveyWithRenderer:(id)arg1 surveyParentResponder:(id)arg2 {} -%end - // YTNoPaidPromo: https://github.com/PoomSmart/YTNoPaidPromo %hook YTMainAppVideoPlayerOverlayViewController - (void)setPaidContentWithPlayerData:(id)data { @@ -300,52 +210,6 @@ static void replaceTab(YTIGuideResponse *response) { %end %end -// YTSpeed - https://github.com/Lyvendia/YTSpeed -%hook YTVarispeedSwitchController -- (id)init { - id result = %orig; - - const int size = 12; - float speeds[] = {0.25, 0.5, 0.75, 1.0, 1.25, 1.5, 1.75, 2.0, 2.25, 2.5, 2.75, 3.0}; - id varispeedSwitchControllerOptions[size]; - - for (int i = 0; i < size; ++i) { - id title = [NSString stringWithFormat:@"%.2fx", speeds[i]]; - varispeedSwitchControllerOptions[i] = [[%c(YTVarispeedSwitchControllerOption) alloc] initWithTitle:title rate:speeds[i]]; - } - - NSUInteger count = sizeof(varispeedSwitchControllerOptions) / sizeof(id); - NSArray *varispeedArray = [NSArray arrayWithObjects:varispeedSwitchControllerOptions count:count]; - MSHookIvar(self, "_options") = varispeedArray; - - return result; -} -%end - -%hook MLHAMQueuePlayer -- (void)setRate:(float)rate { - MSHookIvar(self, "_rate") = rate; - MSHookIvar(self, "_preferredRate") = rate; - - id player = MSHookIvar(self, "_player"); - [player setRate: rate]; - - id stickySettings = MSHookIvar(self, "_stickySettings"); - [stickySettings setRate: rate]; - - [self.playerEventCenter broadcastRateChange: rate]; - - YTSingleVideoController *singleVideoController = self.delegate; - [singleVideoController playerRateDidChange: rate]; -} -%end - -%hook YTPlayerViewController -%property (nonatomic, assign) float playbackRate; -- (void)singleVideo:(id)video playbackRateDidChange:(float)rate { - %orig; -} -%end # pragma mark - uYouPlus diff --git a/Tweaks/IAmYouTube b/Tweaks/IAmYouTube new file mode 160000 index 0000000..f387294 --- /dev/null +++ b/Tweaks/IAmYouTube @@ -0,0 +1 @@ +Subproject commit f3872945d98199c331b388aec1b9c26963e75cc7 diff --git a/Tweaks/NoYTPremium b/Tweaks/NoYTPremium new file mode 160000 index 0000000..510b474 --- /dev/null +++ b/Tweaks/NoYTPremium @@ -0,0 +1 @@ +Subproject commit 510b474b3713d639993db601e46a6460692f9698 diff --git a/Tweaks/YTClassicVideoQuality b/Tweaks/YTClassicVideoQuality new file mode 160000 index 0000000..d983151 --- /dev/null +++ b/Tweaks/YTClassicVideoQuality @@ -0,0 +1 @@ +Subproject commit d983151bcb0d86dc3cae17c8ffcc87661457ea5e diff --git a/Tweaks/YTSpeed b/Tweaks/YTSpeed new file mode 160000 index 0000000..3fec2df --- /dev/null +++ b/Tweaks/YTSpeed @@ -0,0 +1 @@ +Subproject commit 3fec2dfcf0714a23e96d3cf523c7e86c019c2020 From a1a31acf497425f2d066544309cfda98a81f94b0 Mon Sep 17 00:00:00 2001 From: Foxster Date: Sun, 24 Dec 2023 18:14:36 -0800 Subject: [PATCH 27/45] Use new YTSpeed fork --- .gitmodules | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitmodules b/.gitmodules index 50fb611..71dc651 100644 --- a/.gitmodules +++ b/.gitmodules @@ -65,4 +65,4 @@ url = https://github.com/PoomSmart/NoYTPremium.git [submodule "Tweaks/YTSpeed"] path = Tweaks/YTSpeed - url = https://github.com/qnblackcat/YTSpeed.git + url = https://github.com/therealFoxster/YTSpeed.git From 0a4bfd8abc2f5879e5501cd03904f2c5b15d663d Mon Sep 17 00:00:00 2001 From: Foxster Date: Sun, 24 Dec 2023 18:17:27 -0800 Subject: [PATCH 28/45] Update submodules --- Tweaks/FLEXing | 2 +- Tweaks/YTSpeed | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Tweaks/FLEXing b/Tweaks/FLEXing index f7a65cf..9ce0437 160000 --- a/Tweaks/FLEXing +++ b/Tweaks/FLEXing @@ -1 +1 @@ -Subproject commit f7a65cf89b92ca1d35bf8b499acc4419eef7bc13 +Subproject commit 9ce0437c92bf9b7fbbeab08aa4e9d508087c9248 diff --git a/Tweaks/YTSpeed b/Tweaks/YTSpeed index 3fec2df..3ddaf3d 160000 --- a/Tweaks/YTSpeed +++ b/Tweaks/YTSpeed @@ -1 +1 @@ -Subproject commit 3fec2dfcf0714a23e96d3cf523c7e86c019c2020 +Subproject commit 3ddaf3d0e1b49b69a428d1ac877cf3bde8dd0861 From d24b4392b074a83b176e8a063a2fcf257693a105 Mon Sep 17 00:00:00 2001 From: Foxster Date: Sun, 24 Dec 2023 21:17:40 -0800 Subject: [PATCH 29/45] Major refactor: split codebase into multiple files Now for the fun part: will this compile? --- Makefile | 2 +- Sources/BigYTMiniPlayer.h | 8 + Sources/BigYTMiniPlayer.xm | 31 ++ Sources/Patches.h | 27 ++ Sources/Patches.xm | 9 +- Sources/Settings.h | 23 + Sources/Settings.xm | 11 +- Sources/Themes.h | 55 +++ Sources/Themes.xm | 349 +++++++++++++ Sources/YTCastConfirm.xm | 21 + Sources/YTMiniPlayerEnabler.x | 9 + Sources/YTNoHoverCards.x | 10 + Sources/YTNoPaidPromo.x | 22 + Sources/YTReExplore.x | 45 ++ Sources/YTStockVolumeHUD.xm | 21 + Sources/uYouPlus.h | 204 +------- Sources/uYouPlus.xm | 888 ++++++++-------------------------- 17 files changed, 856 insertions(+), 879 deletions(-) create mode 100644 Sources/BigYTMiniPlayer.h create mode 100644 Sources/BigYTMiniPlayer.xm create mode 100644 Sources/Patches.h create mode 100644 Sources/Settings.h create mode 100644 Sources/Themes.h create mode 100644 Sources/Themes.xm create mode 100644 Sources/YTCastConfirm.xm create mode 100644 Sources/YTMiniPlayerEnabler.x create mode 100644 Sources/YTNoHoverCards.x create mode 100644 Sources/YTNoPaidPromo.x create mode 100644 Sources/YTReExplore.x create mode 100644 Sources/YTStockVolumeHUD.xm diff --git a/Makefile b/Makefile index 8669f00..e121926 100644 --- a/Makefile +++ b/Makefile @@ -26,7 +26,7 @@ TWEAK_NAME = uYouPlus DISPLAY_NAME = YouTube BUNDLE_ID = com.google.ios.youtube -$(TWEAK_NAME)_FILES = Sources/uYouPlus.xm Sources/Settings.xm Sources/Patches.xm +$(TWEAK_NAME)_FILES = Sources/uYouPlus.xm Sources/Settings.xm Sources/Patches.xm Sources/BigYTMiniPlayer.xm Sources/Themes.xm Sources/YTCastConfirm.xm Sources/YTMiniPlayerEnabler.x Sources/YTNoHoverCards.x Sources/YTNoPaidPromo.x Sources/YTReExplore.x Sources/YTStockVolumeHUD.xm $(TWEAK_NAME)_FRAMEWORKS = UIKit Security $(TWEAK_NAME)_CFLAGS = -fobjc-arc -DTWEAK_VERSION=\"$(PACKAGE_VERSION)\" $(TWEAK_NAME)_INJECT_DYLIBS = Tweaks/uYou/Library/MobileSubstrate/DynamicLibraries/uYou.dylib $(THEOS_OBJ_DIR)/libFLEX.dylib $(THEOS_OBJ_DIR)/iSponsorBlock.dylib $(THEOS_OBJ_DIR)/YouPiP.dylib $(THEOS_OBJ_DIR)/YouTubeDislikesReturn.dylib $(THEOS_OBJ_DIR)/YTABConfig.dylib $(THEOS_OBJ_DIR)/YTUHD.dylib $(THEOS_OBJ_DIR)/DontEatMyContent.dylib $(THEOS_OBJ_DIR)/IAmYouTube.dylib $(THEOS_OBJ_DIR)/YTClassicVideoQuality.dylib $(THEOS_OBJ_DIR)/NoYTPremium.dylib $(THEOS_OBJ_DIR)/YTSpeed.dylib diff --git a/Sources/BigYTMiniPlayer.h b/Sources/BigYTMiniPlayer.h new file mode 100644 index 0000000..8e1eef4 --- /dev/null +++ b/Sources/BigYTMiniPlayer.h @@ -0,0 +1,8 @@ +#import "uYouPlus.h" + +@interface YTMainAppVideoPlayerOverlayView : UIView +- (UIViewController *)_viewControllerForAncestor; +@end + +@interface YTWatchMiniBarView : UIView +@end \ No newline at end of file diff --git a/Sources/BigYTMiniPlayer.xm b/Sources/BigYTMiniPlayer.xm new file mode 100644 index 0000000..68b8593 --- /dev/null +++ b/Sources/BigYTMiniPlayer.xm @@ -0,0 +1,31 @@ +#import "BigYTMiniPlayer.h" + +%group BigYTMiniPlayer // https://github.com/Galactic-Dev/BigYTMiniPlayer +%hook YTWatchMiniBarView +- (void)setWatchMiniPlayerLayout:(int)arg1 { + %orig(1); +} +- (int)watchMiniPlayerLayout { + return 1; +} +- (void)layoutSubviews { + %orig; + self.frame = CGRectMake(([UIScreen mainScreen].bounds.size.width - self.frame.size.width), self.frame.origin.y, self.frame.size.width, self.frame.size.height); +} +%end + +%hook YTMainAppVideoPlayerOverlayView +- (BOOL)isUserInteractionEnabled { + if([[self _viewControllerForAncestor].parentViewController.parentViewController isKindOfClass:%c(YTWatchMiniBarViewController)]) { + return NO; + } + return %orig; +} +%end +%end + +%ctor { + if (IS_ENABLED(@"bigYTMiniPlayer_enabled") && (UIDevice.currentDevice.userInterfaceIdiom != UIUserInterfaceIdiomPad)) { + %init(BigYTMiniPlayer); + } +} \ No newline at end of file diff --git a/Sources/Patches.h b/Sources/Patches.h new file mode 100644 index 0000000..0675e85 --- /dev/null +++ b/Sources/Patches.h @@ -0,0 +1,27 @@ +#import "../Tweaks/YouTubeHeader/YTCommonColorPalette.h" +#import "uYouPlus.h" + +// Prevent uYou player bar from showing when not playing downloaded media +@interface PlayerManager : NSObject +- (float)progress; +@end + +// iOS 16 uYou crash fix - @level3tjg: https://github.com/qnblackcat/uYouPlus/pull/224 +@interface OBPrivacyLinkButton : UIButton +- (instancetype)initWithCaption:(NSString *)caption + buttonText:(NSString *)buttonText + image:(UIImage *)image + imageSize:(CGSize)imageSize + useLargeIcon:(BOOL)useLargeIcon + displayLanguage:(NSString *)displayLanguage; +@end + +// uYouLocal fix +// @interface YTLocalPlaybackController : NSObject +// - (id)activeVideo; +// @end + +// uYou theme fix +// @interface YTAppDelegate () +// @property(nonatomic, strong) id downloadsVC; +// @end \ No newline at end of file diff --git a/Sources/Patches.xm b/Sources/Patches.xm index 691aec6..faccffa 100644 --- a/Sources/Patches.xm +++ b/Sources/Patches.xm @@ -1,4 +1,4 @@ -#import "uYouPlus.h" +#import "Patches.h" # pragma mark - YouTube patches @@ -95,6 +95,13 @@ } %end +// Fix navigation bar showing a lighter grey with default dark mode - https://github.com/therealFoxster/uYouPlus/commit/8db8197 +%hook YTCommonColorPalette +- (UIColor *)brandBackgroundSolid { + return self.pageStyle == 1 ? [UIColor colorWithRed:0.05882352941176471 green:0.05882352941176471 blue:0.05882352941176471 alpha:1.0] : %orig; +} +%end + %ctor { %init; if (@available(iOS 16, *)) { diff --git a/Sources/Settings.h b/Sources/Settings.h new file mode 100644 index 0000000..ad4e37c --- /dev/null +++ b/Sources/Settings.h @@ -0,0 +1,23 @@ +#import "../Tweaks/YouTubeHeader/YTSettingsViewController.h" +#import "../Tweaks/YouTubeHeader/YTSearchableSettingsViewController.h" +#import "../Tweaks/YouTubeHeader/YTSettingsSectionItem.h" +#import "../Tweaks/YouTubeHeader/YTSettingsSectionItemManager.h" +#import "../Tweaks/YouTubeHeader/YTUIUtils.h" +#import "../Tweaks/YouTubeHeader/YTSettingsPickerViewController.h" +#import "uYouPlus.h" + +// For displaying snackbars +@interface YTHUDMessage : NSObject ++ (id)messageWithText:(id)text; +- (void)setAction:(id)action; +@end + +@interface GOOHUDMessageAction : NSObject +- (void)setTitle:(NSString *)title; +- (void)setHandler:(void (^)(id))handler; +@end + +@interface GOOHUDManagerInternal : NSObject +- (void)showMessageMainThread:(id)message; ++ (id)sharedInstance; +@end \ No newline at end of file diff --git a/Sources/Settings.xm b/Sources/Settings.xm index 74a45b5..2c6e8c3 100644 --- a/Sources/Settings.xm +++ b/Sources/Settings.xm @@ -1,19 +1,12 @@ -#import "../Tweaks/YouTubeHeader/YTSettingsViewController.h" -#import "../Tweaks/YouTubeHeader/YTSearchableSettingsViewController.h" -#import "../Tweaks/YouTubeHeader/YTSettingsSectionItem.h" -#import "../Tweaks/YouTubeHeader/YTSettingsSectionItemManager.h" -#import "../Tweaks/YouTubeHeader/YTUIUtils.h" -#import "../Tweaks/YouTubeHeader/YTSettingsPickerViewController.h" -#import "uYouPlus.h" +#import "Settings.h" #define VERSION_STRING [[NSString stringWithFormat:@"%@", @(OS_STRINGIFY(TWEAK_VERSION))] stringByReplacingOccurrencesOfString:@"\"" withString:@""] +#define SHOW_RELAUNCH_YT_SNACKBAR [[%c(GOOHUDManagerInternal) sharedInstance] showMessageMainThread:[%c(YTHUDMessage) messageWithText:LOC(@"RESTART_YOUTUBE")]] #define SECTION_HEADER(s) [sectionItems addObject:[%c(YTSettingsSectionItem) itemWithTitle:@"\t" titleDescription:[s uppercaseString] accessibilityIdentifier:nil detailTextBlock:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger sectionItemIndex) { return NO; }]] #define SWITCH_ITEM(t, d, k) [sectionItems addObject:[YTSettingsSectionItemClass switchItemWithTitle:t titleDescription:d accessibilityIdentifier:nil switchOn:IS_ENABLED(k) switchBlock:^BOOL (YTSettingsCell *cell, BOOL enabled) {[[NSUserDefaults standardUserDefaults] setBool:enabled forKey:k];return YES;} settingItemId:0]] -#define SHOW_RELAUNCH_YT_SNACKBAR [[%c(GOOHUDManagerInternal) sharedInstance] showMessageMainThread:[%c(YTHUDMessage) messageWithText:LOC(@"RESTART_YOUTUBE")]] - #define SWITCH_ITEM2(t, d, k) [sectionItems addObject:[YTSettingsSectionItemClass switchItemWithTitle:t titleDescription:d accessibilityIdentifier:nil switchOn:IS_ENABLED(k) switchBlock:^BOOL (YTSettingsCell *cell, BOOL enabled) {[[NSUserDefaults standardUserDefaults] setBool:enabled forKey:k];SHOW_RELAUNCH_YT_SNACKBAR;return YES;} settingItemId:0]] static const NSInteger uYouPlusSection = 500; diff --git a/Sources/Themes.h b/Sources/Themes.h new file mode 100644 index 0000000..b153f93 --- /dev/null +++ b/Sources/Themes.h @@ -0,0 +1,55 @@ +#import "../Tweaks/YouTubeHeader/YTCommonColorPalette.h" +#import "../Tweaks/YouTubeHeader/ASCollectionView.h" +#import "uYouPlus.h" + +@interface YCHLiveChatView : UIView +@end + +@interface YTFullscreenEngagementOverlayView : UIView +@end + +@interface YTRelatedVideosView : UIView +@end + +@interface ELMView : UIView +@end + +@interface ASWAppSwitcherCollectionViewCell : UIView +@end + +@interface ASScrollView : UIView +@end + +@interface UIKeyboardLayoutStar : UIView +@end + +@interface UIKeyboardDockView : UIView +@end + +@interface _ASDisplayView : UIView +@end + +@interface YTCommentDetailHeaderCell : UIView +@end + +@interface SponsorBlockSettingsController : UITableViewController +@end + +@interface SponsorBlockViewController : UIViewController +@end + +@interface UICandidateViewController : UIViewController +@end + +@interface UIPredictionViewController : UIViewController +@end + +@interface FRPreferences : UITableViewController +@end + +@interface FRPSelectListTable : UITableViewController +@end + +@interface settingsReorderTable : UIViewController +@property(nonatomic, strong) UITableView *tableView; +@end \ No newline at end of file diff --git a/Sources/Themes.xm b/Sources/Themes.xm new file mode 100644 index 0000000..4f4dc3a --- /dev/null +++ b/Sources/Themes.xm @@ -0,0 +1,349 @@ +#import "Themes.h" + +#define IS_DARK_APPEARANCE_ENABLED ([[NSUserDefaults standardUserDefaults] integerForKey:@"page_style"] == 1) +#define IS_OLD_DARK_THEME_SELECTED (APP_THEME_IDX == 1) +#define IS_OLED_DARK_THEME_SELECTED (APP_THEME_IDX == 2) + +# pragma mark - Old dark theme (lighter grey) + +%group gOldDarkTheme +%hook YTColdConfig +- (BOOL)uiSystemsClientGlobalConfigUseDarkerPaletteBgColorForNative { return NO; } +- (BOOL)uiSystemsClientGlobalConfigUseDarkerPaletteTextColorForNative { return NO; } +- (BOOL)enableCinematicContainerOnClient { return NO; } +%end + +%hook _ASDisplayView +- (void)didMoveToWindow { + %orig; + if ([self.accessibilityIdentifier isEqualToString:@"id.elements.components.comment_composer"]) { self.backgroundColor = [UIColor clearColor]; } + if ([self.accessibilityIdentifier isEqualToString:@"id.elements.components.video_list_entry"]) { self.backgroundColor = [UIColor clearColor]; } +} +%end + +%hook ASCollectionView +- (void)didMoveToWindow { + %orig; + self.superview.backgroundColor = [UIColor colorWithRed:0.129 green:0.129 blue:0.129 alpha:1.0]; +} +%end + +%hook YTFullscreenEngagementOverlayView +- (void)didMoveToWindow { + %orig; + self.subviews[0].backgroundColor = [UIColor clearColor]; +} +%end + +%hook YTRelatedVideosView +- (void)didMoveToWindow { + %orig; + self.subviews[0].backgroundColor = [UIColor clearColor]; +} +%end +%end + +# pragma mark - OLED dark mode by BandarHL + +UIColor* raisedColor = [UIColor colorWithRed:0.035 green:0.035 blue:0.035 alpha:1.0]; + +%group gOLED +%hook YTCommonColorPalette +- (UIColor *)baseBackground { + return self.pageStyle == 1 ? [UIColor blackColor] : %orig; +} +- (UIColor *)brandBackgroundSolid { + return self.pageStyle == 1 ? [UIColor blackColor] : %orig; +} +- (UIColor *)brandBackgroundPrimary { + return self.pageStyle == 1 ? [UIColor blackColor] : %orig; +} +- (UIColor *)brandBackgroundSecondary { + return self.pageStyle == 1 ? [[UIColor blackColor] colorWithAlphaComponent:0.9] : %orig; +} +- (UIColor *)raisedBackground { + return self.pageStyle == 1 ? [UIColor blackColor] : %orig; +} +- (UIColor *)staticBrandBlack { + return self.pageStyle == 1 ? [UIColor blackColor] : %orig; +} +- (UIColor *)generalBackgroundA { + return self.pageStyle == 1 ? [UIColor blackColor] : %orig; +} +%end + +// uYou settings +%hook UITableViewCell +- (void)_layoutSystemBackgroundView { + %orig; + UIView *systemBackgroundView = [self valueForKey:@"_systemBackgroundView"]; + NSString *backgroundViewKey = class_getInstanceVariable(systemBackgroundView.class, "_colorView") ? @"_colorView" : @"_backgroundView"; + ((UIView *)[systemBackgroundView valueForKey:backgroundViewKey]).backgroundColor = [UIColor blackColor]; +} +- (void)_layoutSystemBackgroundView:(BOOL)arg1 { + %orig; + ((UIView *)[[self valueForKey:@"_systemBackgroundView"] valueForKey:@"_colorView"]).backgroundColor = [UIColor blackColor]; +} +%end + +%hook settingsReorderTable +- (void)viewDidLayoutSubviews { + %orig; + self.tableView.backgroundColor = [UIColor blackColor]; +} +%end + +%hook FRPSelectListTable +- (void)viewDidLayoutSubviews { + %orig; + self.tableView.backgroundColor = [UIColor blackColor]; +} +%end + +%hook FRPreferences +- (void)viewDidLayoutSubviews { + %orig; + self.tableView.backgroundColor = [UIColor blackColor]; +} +%end + +%hook YTInnerTubeCollectionViewController +- (UIColor *)backgroundColor:(NSInteger)pageStyle { + return pageStyle == 1 ? [UIColor blackColor] : %orig; +} +%end + +// Explore +%hook ASScrollView +- (void)didMoveToWindow { + %orig; + if (IS_DARK_APPEARANCE_ENABLED) { + self.backgroundColor = [UIColor clearColor]; + } +} +%end + +// Your videos +%hook ASCollectionView +- (void)didMoveToWindow { + %orig; + if (IS_DARK_APPEARANCE_ENABLED && [self.nextResponder isKindOfClass:%c(_ASDisplayView)]) { + self.superview.backgroundColor = [UIColor blackColor]; + } +} +%end + +// Sub menu? +%hook ELMView +- (void)didMoveToWindow { + %orig; + if (IS_DARK_APPEARANCE_ENABLED) { + // self.subviews[0].backgroundColor = [UIColor clearColor]; + } +} +%end + +// iSponsorBlock +%hook SponsorBlockSettingsController +- (void)viewDidLoad { + if (self.traitCollection.userInterfaceStyle == UIUserInterfaceStyleDark) { + %orig; + self.tableView.backgroundColor = [UIColor blackColor]; + } else { return %orig; } +} +%end + +%hook SponsorBlockViewController +- (void)viewDidLoad { + if (self.traitCollection.userInterfaceStyle == UIUserInterfaceStyleDark) { + %orig; + self.view.backgroundColor = [UIColor blackColor]; + } else { return %orig; } +} +%end + +// Search view +%hook YTSearchBarView +- (void)setBackgroundColor:(UIColor *)color { + return IS_DARK_APPEARANCE_ENABLED ? %orig([UIColor blackColor]) : %orig; +} +%end + +// History search view +%hook YTSearchBoxView +- (void)setBackgroundColor:(UIColor *)color { + return IS_DARK_APPEARANCE_ENABLED ? %orig([UIColor blackColor]) : %orig; + +} +%end + +// Comment view +%hook YTCommentView +- (void)setBackgroundColor:(UIColor *)color { + return IS_DARK_APPEARANCE_ENABLED ? %orig([UIColor blackColor]) : %orig; +} +%end + +%hook YTCreateCommentAccessoryView +- (void)setBackgroundColor:(UIColor *)color { + return IS_DARK_APPEARANCE_ENABLED ? %orig([UIColor blackColor]) : %orig; +} +%end + +%hook YTCreateCommentTextView +- (void)setBackgroundColor:(UIColor *)color { + return IS_DARK_APPEARANCE_ENABLED ? %orig([UIColor blackColor]) : %orig; +} +- (void)setTextColor:(UIColor *)color { // fix black text in #Shorts video's comment + return IS_DARK_APPEARANCE_ENABLED ? %orig([UIColor whiteColor]) : %orig; +} +%end + +%hook YTCommentDetailHeaderCell +- (void)didMoveToWindow { + %orig; + if (IS_DARK_APPEARANCE_ENABLED) { + // self.subviews[2].backgroundColor = [UIColor blackColor]; + } +} +%end + +%hook YTFormattedStringLabel // YT is werid... +- (void)setBackgroundColor:(UIColor *)color { + return IS_DARK_APPEARANCE_ENABLED ? %orig([UIColor clearColor]) : %orig; +} +%end + +// Live chat comment +%hook YCHLiveChatActionPanelView +- (void)setBackgroundColor:(UIColor *)color { + return IS_DARK_APPEARANCE_ENABLED ? %orig([UIColor blackColor]) : %orig; +} +%end + +%hook YTEmojiTextView +- (void)setBackgroundColor:(UIColor *)color { + return IS_DARK_APPEARANCE_ENABLED ? %orig([UIColor blackColor]) : %orig; +} +%end + +%hook YCHLiveChatView +- (void)didMoveToWindow { + %orig; + if (IS_DARK_APPEARANCE_ENABLED) { + // self.subviews[1].backgroundColor = [UIColor blackColor]; + } +} +%end + +%hook YTCollectionView +- (void)setBackgroundColor:(UIColor *)color { + return IS_DARK_APPEARANCE_ENABLED ? %orig([UIColor blackColor]) : %orig; +} +%end + +// +%hook YTBackstageCreateRepostDetailView +- (void)setBackgroundColor:(UIColor *)color { + return IS_DARK_APPEARANCE_ENABLED ? %orig([UIColor blackColor]) : %orig; +} +%end + +// Others +%hook _ASDisplayView +- (void)didMoveToWindow { + %orig; + if (IS_DARK_APPEARANCE_ENABLED) { + if ([self.nextResponder isKindOfClass:%c(ASScrollView)]) { self.backgroundColor = [UIColor clearColor]; } + if ([self.accessibilityIdentifier isEqualToString:@"eml.cvr"]) { self.backgroundColor = [UIColor blackColor]; } + if ([self.accessibilityIdentifier isEqualToString:@"eml.live_chat_text_message"]) { self.backgroundColor = [UIColor blackColor]; } + if ([self.accessibilityIdentifier isEqualToString:@"rich_header"]) { self.backgroundColor = [UIColor blackColor]; } + if ([self.accessibilityIdentifier isEqualToString:@"id.ui.comment_cell"]) { self.backgroundColor = [UIColor blackColor]; } + if ([self.accessibilityIdentifier isEqualToString:@"id.ui.cancel.button"]) { self.superview.backgroundColor = [UIColor clearColor]; } + if ([self.accessibilityIdentifier isEqualToString:@"id.elements.components.comment_composer"]) { self.backgroundColor = [UIColor blackColor]; } + if ([self.accessibilityIdentifier isEqualToString:@"id.elements.components.video_list_entry"]) { self.backgroundColor = [UIColor blackColor]; } + if ([self.accessibilityIdentifier isEqualToString:@"id.comment.guidelines_text"]) { self.superview.backgroundColor = [UIColor blackColor]; } + if ([self.accessibilityIdentifier isEqualToString:@"id.comment.channel_guidelines_bottom_sheet_container"]) { self.backgroundColor = [UIColor blackColor]; } + if ([self.accessibilityIdentifier isEqualToString:@"id.comment.channel_guidelines_entry_banner_container"]) { self.backgroundColor = [UIColor blackColor]; } + if ([self.accessibilityIdentifier isEqualToString:@"id.comment.comment_group_detail_container"]) { self.backgroundColor = [UIColor clearColor]; } + } +} +%end + +// Open link with... +%hook ASWAppSwitchingSheetHeaderView +- (void)setBackgroundColor:(UIColor *)color { + return IS_DARK_APPEARANCE_ENABLED ? %orig(raisedColor) : %orig; +} +%end + +%hook ASWAppSwitchingSheetFooterView +- (void)setBackgroundColor:(UIColor *)color { + return IS_DARK_APPEARANCE_ENABLED ? %orig(raisedColor) : %orig; +} +%end + +%hook ASWAppSwitcherCollectionViewCell +- (void)didMoveToWindow { + %orig; + if (IS_DARK_APPEARANCE_ENABLED) { + self.backgroundColor = raisedColor; + // self.subviews[1].backgroundColor = raisedColor; + self.superview.backgroundColor = raisedColor; + } +} +%end + +// Incompatibility with the new YT Dark theme +%hook YTColdConfig +- (BOOL)uiSystemsClientGlobalConfigUseDarkerPaletteBgColorForNative { return NO; } +%end +%end + +# pragma mark - OLED keyboard by @ichitaso <3 - http://gist.github.com/ichitaso/935100fd53a26f18a9060f7195a1be0e + +%group gOLEDKB +%hook UIPredictionViewController +- (void)loadView { + %orig; + [self.view setBackgroundColor:[UIColor blackColor]]; +} +%end + +%hook UICandidateViewController +- (void)loadView { + %orig; + [self.view setBackgroundColor:[UIColor blackColor]]; +} +%end + +%hook UIKeyboardDockView +- (void)didMoveToWindow { + %orig; + self.backgroundColor = [UIColor blackColor]; +} +%end + +%hook UIKeyboardLayoutStar +- (void)didMoveToWindow { + %orig; + self.backgroundColor = [UIColor blackColor]; +} +%end + +%hook UIKBRenderConfig // Prediction text color +- (void)setLightKeyboard:(BOOL)arg1 { %orig(NO); } +%end +%end + +%ctor { + if (IS_OLED_DARK_THEME_SELECTED) { + %init(gOLED); + } + if (IS_OLD_DARK_THEME_SELECTED) { + %init(gOldDarkTheme) + } + if (IS_ENABLED(@"oledKeyBoard_enabled")) { + %init(gOLEDKB); + } +} \ No newline at end of file diff --git a/Sources/YTCastConfirm.xm b/Sources/YTCastConfirm.xm new file mode 100644 index 0000000..c5d5200 --- /dev/null +++ b/Sources/YTCastConfirm.xm @@ -0,0 +1,21 @@ +#import "../Tweaks/YouTubeHeader/YTAlertView.h" +#import "uYouPlus.h" + +extern NSBundle *uYouPlusBundle(); + +// YTCastConfirm: https://github.com/JamieBerghmans/YTCastConfirm +%hook MDXPlaybackRouteButtonController +- (void)didPressButton:(id)arg1 { + if (IS_ENABLED(@"castConfirm_enabled")) { + NSBundle *tweakBundle = uYouPlusBundle(); + YTAlertView *alertView = [%c(YTAlertView) confirmationDialogWithAction:^{ + %orig; + } actionTitle:LOC(@"MSG_YES")]; + alertView.title = LOC(@"CASTING"); + alertView.subtitle = LOC(@"MSG_ARE_YOU_SURE"); + [alertView show]; + } else { + return %orig; + } +} +%end \ No newline at end of file diff --git a/Sources/YTMiniPlayerEnabler.x b/Sources/YTMiniPlayerEnabler.x new file mode 100644 index 0000000..ec82abd --- /dev/null +++ b/Sources/YTMiniPlayerEnabler.x @@ -0,0 +1,9 @@ +#import "uYouPlus.h" + +// YTMiniPlayerEnabler: https://github.com/level3tjg/YTMiniplayerEnabler/ +%hook YTWatchMiniBarViewController +- (void)updateMiniBarPlayerStateFromRenderer { + if (IS_ENABLED(@"ytMiniPlayer_enabled")) {} + else { return %orig; } +} +%end \ No newline at end of file diff --git a/Sources/YTNoHoverCards.x b/Sources/YTNoHoverCards.x new file mode 100644 index 0000000..6c5f819 --- /dev/null +++ b/Sources/YTNoHoverCards.x @@ -0,0 +1,10 @@ +#import "uYouPlus.h" + +// YTNoHoverCards: https://github.com/level3tjg/YTNoHoverCards +%hook YTCreatorEndscreenView +- (void)setHidden:(BOOL)hidden { + if (IS_ENABLED(@"hideHoverCards_enabled")) + hidden = YES; + %orig; +} +%end \ No newline at end of file diff --git a/Sources/YTNoPaidPromo.x b/Sources/YTNoPaidPromo.x new file mode 100644 index 0000000..fb0ca3f --- /dev/null +++ b/Sources/YTNoPaidPromo.x @@ -0,0 +1,22 @@ +#import "../Tweaks/YouTubeHeader/YTPlayerOverlayProvider.h" +#import "../Tweaks/YouTubeHeader/YTPlayerOverlay.h" +#import "uYouPlus.h" + +// YTNoPaidPromo: https://github.com/PoomSmart/YTNoPaidPromo +%hook YTMainAppVideoPlayerOverlayViewController +- (void)setPaidContentWithPlayerData:(id)data { + if (IS_ENABLED(@"hidePaidPromotionCard_enabled")) {} + else { return %orig; } +} +- (void)playerOverlayProvider:(YTPlayerOverlayProvider *)provider didInsertPlayerOverlay:(YTPlayerOverlay *)overlay { + if ([[overlay overlayIdentifier] isEqualToString:@"player_overlay_paid_content"] && IS_ENABLED(@"hidePaidPromotionCard_enabled")) return; + %orig; +} +%end + +%hook YTInlineMutedPlaybackPlayerOverlayViewController +- (void)setPaidContentWithPlayerData:(id)data { + if (IS_ENABLED(@"hidePaidPromotionCard_enabled")) {} + else { return %orig; } +} +%end \ No newline at end of file diff --git a/Sources/YTReExplore.x b/Sources/YTReExplore.x new file mode 100644 index 0000000..275ae8c --- /dev/null +++ b/Sources/YTReExplore.x @@ -0,0 +1,45 @@ +#import "../Tweaks/YouTubeHeader/YTIPivotBarRenderer.h" +#import "../Tweaks/YouTubeHeader/YTIGuideResponse.h" +#import "../Tweaks/YouTubeHeader/YTIGuideResponseSupportedRenderers.h" +#import "../Tweaks/YouTubeHeader/YTIBrowseRequest.h" +#import "uYouPlus.h" + +%group YTReExplore // https://github.com/PoomSmart/YTReExplore/ +static void replaceTab(YTIGuideResponse *response) { + NSMutableArray *renderers = [response itemsArray]; + for (YTIGuideResponseSupportedRenderers *guideRenderers in renderers) { + YTIPivotBarRenderer *pivotBarRenderer = [guideRenderers pivotBarRenderer]; + NSMutableArray *items = [pivotBarRenderer itemsArray]; + NSUInteger shortIndex = [items indexOfObjectPassingTest:^BOOL(YTIPivotBarSupportedRenderers *renderers, NSUInteger idx, BOOL *stop) { + return [[[renderers pivotBarItemRenderer] pivotIdentifier] isEqualToString:@"FEshorts"]; + }]; + if (shortIndex != NSNotFound) { + [items removeObjectAtIndex:shortIndex]; + NSUInteger exploreIndex = [items indexOfObjectPassingTest:^BOOL(YTIPivotBarSupportedRenderers *renderers, NSUInteger idx, BOOL *stop) { + return [[[renderers pivotBarItemRenderer] pivotIdentifier] isEqualToString:[%c(YTIBrowseRequest) browseIDForExploreTab]]; + }]; + if (exploreIndex == NSNotFound) { + YTIPivotBarSupportedRenderers *exploreTab = [%c(YTIPivotBarRenderer) pivotSupportedRenderersWithBrowseId:[%c(YTIBrowseRequest) browseIDForExploreTab] title:@"Explore" iconType:292]; + [items insertObject:exploreTab atIndex:1]; + } + break; + } + } +} +%hook YTGuideServiceCoordinator +- (void)handleResponse:(YTIGuideResponse *)response withCompletion:(id)completion { + replaceTab(response); + %orig(response, completion); +} +- (void)handleResponse:(YTIGuideResponse *)response error:(id)error completion:(id)completion { + replaceTab(response); + %orig(response, error, completion); +} +%end +%end + +%ctor { + if (IS_ENABLED(@"reExplore_enabled")) { + %init(YTReExplore); + } +} \ No newline at end of file diff --git a/Sources/YTStockVolumeHUD.xm b/Sources/YTStockVolumeHUD.xm new file mode 100644 index 0000000..7f4a5bc --- /dev/null +++ b/Sources/YTStockVolumeHUD.xm @@ -0,0 +1,21 @@ +#import "uYouPlus.h" + +%group YTStockVolumeHUD // https://github.com/lilacvibes/YTStockVolumeHUD +%hook YTVolumeBarView +- (void)volumeChanged:(id)arg1 { + %orig(nil); +} +%end + +%hook UIApplication +- (void)setSystemVolumeHUDEnabled:(BOOL)arg1 forAudioCategory:(id)arg2 { + %orig(true, arg2); +} +%end +%end + +%ctor { + if (IS_ENABLED(@"stockVolumeHUD_enabled")) { + %init(YTStockVolumeHUD); + } +} \ No newline at end of file diff --git a/Sources/uYouPlus.h b/Sources/uYouPlus.h index ad18c34..e4fd678 100644 --- a/Sources/uYouPlus.h +++ b/Sources/uYouPlus.h @@ -6,208 +6,32 @@ #import #import -#import "../Tweaks/YouTubeHeader/YTAppDelegate.h" -#import "../Tweaks/YouTubeHeader/YTPlayerViewController.h" -#import "../Tweaks/YouTubeHeader/YTVideoQualitySwitchOriginalController.h" -#import "../Tweaks/YouTubeHeader/YTPlayerViewController.h" -#import "../Tweaks/YouTubeHeader/YTWatchController.h" -#import "../Tweaks/YouTubeHeader/YTIGuideResponse.h" -#import "../Tweaks/YouTubeHeader/YTIGuideResponseSupportedRenderers.h" -#import "../Tweaks/YouTubeHeader/YTIPivotBarSupportedRenderers.h" -#import "../Tweaks/YouTubeHeader/YTIPivotBarRenderer.h" -#import "../Tweaks/YouTubeHeader/YTIBrowseRequest.h" -#import "../Tweaks/YouTubeHeader/YTCommonColorPalette.h" -#import "../Tweaks/YouTubeHeader/ASCollectionView.h" -#import "../Tweaks/YouTubeHeader/YTPlayerOverlay.h" -#import "../Tweaks/YouTubeHeader/YTPlayerOverlayProvider.h" -#import "../Tweaks/YouTubeHeader/YTReelWatchPlaybackOverlayView.h" -#import "../Tweaks/YouTubeHeader/YTReelPlayerBottomButton.h" -#import "../Tweaks/YouTubeHeader/YTReelPlayerViewController.h" -#import "../Tweaks/YouTubeHeader/YTAlertView.h" -#import "../Tweaks/YouTubeHeader/YTISectionListRenderer.h" -#import "../Tweaks/YouTubeHeader/YTIMenuConditionalServiceItemRenderer.h" +#import "Themes.h" // Hide "Buy Super Thanks" banner (_ASDisplayView) +#import "../Tweaks/YouTubeHeader/YTAppDelegate.h" // Activate FLEX +// #import "../Tweaks/YouTubeHeader/YTISectionListRenderer.h" // Hide search ads by @PoomSmart - https://github.com/PoomSmart/YouTube-X #define LOC(x) [tweakBundle localizedStringForKey:x value:nil table:nil] -#define YT_BUNDLE_ID @"com.google.ios.youtube" -#define YT_NAME @"YouTube" #define IS_ENABLED(k) [[NSUserDefaults standardUserDefaults] boolForKey:k] #define APP_THEME_IDX [[NSUserDefaults standardUserDefaults] integerForKey:@"appTheme"] -#define DEFAULT_RATE 2.0f // YTSpeed - -// IAmYouTube -@interface SSOConfiguration : NSObject -@end - -// uYouPlus -@interface YTChipCloudCell : UIView -@end - -@interface YTPlayabilityResolutionUserActionUIController : NSObject // Skips content warning before playing *some videos - @PoomSmart -- (void)confirmAlertDidPressConfirm; -@end - -@interface YTMainAppControlsOverlayView : UIView -@end - -@interface YTTransportControlsButtonView : UIView -@end - -@interface _ASCollectionViewCell : UICollectionViewCell -- (id)node; -@end - -@interface YTAsyncCollectionView : UICollectionView -- (void)removeShortsAndFeaturesAdsAtIndexPath:(NSIndexPath *)indexPath; -@end - -@interface FRPSliderCell : UITableViewCell -@end - -@interface boolSettingsVC : UIViewController -@end - -@interface PlayerManager : NSObject -- (float)progress; -@end +// Disable snap to chapter @interface YTSegmentableInlinePlayerBarView @property (nonatomic, assign, readwrite) BOOL enableSnapToChapter; @end -@interface YTPlaylistHeaderViewController: UIViewController -@property UIButton *downloadsButton; +// Hide autoplay switch / CC button +@interface YTMainAppControlsOverlayView : UIView @end -// YTSpeed -@interface YTVarispeedSwitchControllerOption : NSObject -- (id)initWithTitle:(id)title rate:(float)rate; +// Skips content warning before playing *some videos - @PoomSmart +@interface YTPlayabilityResolutionUserActionUIController : NSObject +- (void)confirmAlertDidPressConfirm; @end -@interface MLHAMQueuePlayer : NSObject -@property id playerEventCenter; -@property id delegate; -- (void)setRate:(float)rate; -- (void)internalSetRate; +// Hide YouTube annoying banner in Home page? - @MiRO92 - YTNoShorts: https://github.com/MiRO92/YTNoShorts +@interface _ASCollectionViewCell : UICollectionViewCell +- (id)node; @end - -@interface MLPlayerStickySettings : NSObject -- (void)setRate:(float)rate; +@interface YTAsyncCollectionView : UICollectionView +- (void)removeShortsAndFeaturesAdsAtIndexPath:(NSIndexPath *)indexPath; @end - -@interface MLPlayerEventCenter : NSObject -- (void)broadcastRateChange:(float)rate; -@end - -@interface HAMPlayerInternal : NSObject -- (void)setRate:(float)rate; -@end - -// iOS16 fix -@interface OBPrivacyLinkButton : UIButton -- (instancetype)initWithCaption:(NSString *)caption - buttonText:(NSString *)buttonText - image:(UIImage *)image - imageSize:(CGSize)imageSize - useLargeIcon:(BOOL)useLargeIcon - displayLanguage:(NSString *)displayLanguage; -@end - -// uYouLocal fix -@interface YTLocalPlaybackController : NSObject -- (id)activeVideo; -@end - -// uYou theme fix -@interface YTAppDelegate () -@property(nonatomic, strong) id downloadsVC; -@end - - -// BigYTMiniPlayer -@interface YTMainAppVideoPlayerOverlayView : UIView -- (UIViewController *)_viewControllerForAncestor; -@end - -@interface YTWatchMiniBarView : UIView -@end - -// YTAutoFullScreen -@interface YTPlayerViewController (YTAFS) -- (void)autoFullscreen; -// DontEatMycontent -- (id)activeVideoPlayerOverlay; -- (id)playerView; -// YTSpeed -@property id activeVideo; -@property float playbackRate; -- (void)singleVideo:(id)video playbackRateDidChange:(float)rate; -@end - -// App Theme -@interface YCHLiveChatView : UIView -@end - -@interface YTFullscreenEngagementOverlayView : UIView -@end - -@interface YTRelatedVideosView : UIView -@end - -@interface ELMView : UIView -@end - -@interface ASWAppSwitcherCollectionViewCell : UIView -@end - -@interface ASScrollView : UIView -@end - -@interface UIKeyboardLayoutStar : UIView -@end - -@interface UIKeyboardDockView : UIView -@end - -@interface _ASDisplayView : UIView -@end - -@interface YTCommentDetailHeaderCell : UIView -@end - -@interface SponsorBlockSettingsController : UITableViewController -@end - -@interface SponsorBlockViewController : UIViewController -@end - -@interface UICandidateViewController : UIViewController -@end - -@interface UIPredictionViewController : UIViewController -@end - -@interface FRPreferences : UITableViewController -@end - -@interface FRPSelectListTable : UITableViewController -@end - -@interface settingsReorderTable : UIViewController -@property(nonatomic, strong) UITableView *tableView; -@end - -// Snack bar -@interface YTHUDMessage : NSObject -+ (id)messageWithText:(id)text; -- (void)setAction:(id)action; -@end - -@interface GOOHUDMessageAction : NSObject -- (void)setTitle:(NSString *)title; -- (void)setHandler:(void (^)(id))handler; -@end - -@interface GOOHUDManagerInternal : NSObject -- (void)showMessageMainThread:(id)message; -+ (id)sharedInstance; -@end \ No newline at end of file diff --git a/Sources/uYouPlus.xm b/Sources/uYouPlus.xm index 2887f97..ed9f63e 100644 --- a/Sources/uYouPlus.xm +++ b/Sources/uYouPlus.xm @@ -1,9 +1,5 @@ #import "uYouPlus.h" -#define IS_DARK_APPEARANCE_ENABLED ([[NSUserDefaults standardUserDefaults] integerForKey:@"page_style"] == 1) -#define IS_OLD_DARK_THEME_SELECTED (APP_THEME_IDX == 1) -#define IS_OLED_DARK_THEME_SELECTED (APP_THEME_IDX == 2) - // Tweak's bundle for Localizations support - @PoomSmart - https://github.com/PoomSmart/YouPiP/commit/aea2473f64c75d73cab713e1e2d5d0a77675024f NSBundle *uYouPlusBundle() { static NSBundle *bundle = nil; @@ -19,18 +15,219 @@ NSBundle *uYouPlusBundle() { } NSBundle *tweakBundle = uYouPlusBundle(); -# pragma mark - Tweaks +# pragma mark - App appearance +// See Themes.xm -// FLEX +# pragma mark - Video player options + +// Disable double tap to seek +%hook YTDoubleTapToSeekController +- (void)enableDoubleTapToSeek:(BOOL)arg1 { + return IS_ENABLED(@"doubleTapToSeek_disabled") ? %orig(NO) : %orig; +} +%end + +// Disable snap to chapter +%hook YTSegmentableInlinePlayerBarView +- (void)didMoveToWindow { + %orig; + if (IS_ENABLED(@"snapToChapter_enabled")) { + self.enableSnapToChapter = NO; + } +} +%end + +// Disable pinch to zoom +%hook YTColdConfig +- (BOOL)videoZoomFreeZoomEnabledGlobalConfig { + return IS_ENABLED(@"pinchToZoom_enabled") ? NO : %orig; +} +%end + +// Enable miniplayer for all videos +// See YTMiniPlayerEnabler.x + +// Use stock iOS volume HUD +// See YTStockVolumeHUD.xm + +# pragma mark - Video control overlay options + +%hook YTMainAppControlsOverlayView +// Hide autoplay switch +- (void)setAutoplaySwitchButtonRenderer:(id)arg1 { // hide Autoplay + if (IS_ENABLED(@"hideAutoplaySwitch_enabled")) {} + else { return %orig; } +} +// Hide CC button +- (void)setClosedCaptionsOrSubtitlesButtonAvailable:(BOOL)arg1 { + return IS_ENABLED(@"hideCC_enabled") ? %orig(NO) : %orig; +} +%end + +// Hide HUD Messages +%hook YTHUDMessageView +- (id)initWithMessage:(id)arg1 dismissHandler:(id)arg2 { + return IS_ENABLED(@"hideHUD_enabled") ? nil : %orig; +} +%end + +// Hide paid promotion banner +// See YTNoPaidPromo.x + +// Hide channel watermark +%hook YTAnnotationsViewController +- (void)loadFeaturedChannelWatermark { + if (IS_ENABLED(@"hideChannelWatermark_enabled")) {} + else { return %orig; } +} +%end + +// Hide next and previous buttons +%group gHidePreviousAndNextButton +%hook YTColdConfig +- (BOOL)removeNextPaddleForSingletonVideos { return YES; } +- (BOOL)removePreviousPaddleForSingletonVideos { return YES; } +%end +%end + +// Replace next and previous buttons with fast forward and rewind +%group gReplacePreviousAndNextButton +%hook YTColdConfig +- (BOOL)replaceNextPaddleWithFastForwardButtonForSingletonVods { return YES; } +- (BOOL)replacePreviousPaddleWithRewindButtonForSingletonVods { return YES; } +%end +%end + +// Bring back the red progress bar - Broken?! +%hook YTInlinePlayerBarContainerView +- (id)quietProgressBarColor { + return IS_ENABLED(@"redProgressBar_enabled") ? [UIColor redColor] : %orig; +} +%end + +// Hide videos' end screens +// See YTNoHoverCards.x + +// Hide engagement panels in full screen +%hook YTColdConfig +- (BOOL)isLandscapeEngagementPanelEnabled { + return IS_ENABLED(@"hideRightPanel_enabled") ? NO : %orig; +} +%end + +// Skips content warning before playing *some videos - @PoomSmart +%hook YTPlayabilityResolutionUserActionUIController +- (void)showConfirmAlert { [self confirmAlertDidPressConfirm]; } +%end + +# pragma mark - Shorts controls overlay options + +// Hide "Buy Super Thanks" banner +%hook _ASDisplayView +- (void)didMoveToWindow { + %orig; + if ((IS_ENABLED(@"hideBuySuperThanks_enabled")) && ([self.accessibilityIdentifier isEqualToString:@"id.elements.components.suggested_action"])) { + self.hidden = YES; + } +} +%end + +// Hide subscriptions button +%hook YTReelWatchRootViewController +- (void)setPausedStateCarouselView { + if (IS_ENABLED(@"hideSubcriptions_enabled")) {} + else { return %orig; } +} +%end + +// Disable resume to Shorts +%hook YTShortsStartupCoordinator +- (id)evaluateResumeToShorts { + return IS_ENABLED(@"disableResumeToShorts") ? nil : %orig; +} +%end + +# pragma mark - Miscellaneous + +// YTCastConfirm +// See YTCastConfirm.xm + +// Disable hints - https://github.com/LillieH001/YouTube-Reborn/blob/v4/ +%group gDisableHints +%hook YTSettings +- (BOOL)areHintsDisabled { + return YES; +} +- (void)setHintsDisabled:(BOOL)arg1 { + %orig(YES); +} +%end +%hook YTUserDefaults +- (BOOL)areHintsDisabled { + return YES; +} +- (void)setHintsDisabled:(BOOL)arg1 { + %orig(YES); +} +%end +%end + +// Enable YouTube startup animation +%hook YTColdConfig +- (BOOL)mainAppCoreClientIosEnableStartupAnimation { + return IS_ENABLED(@"ytStartupAnimation_enabled") ? YES : NO; +} +%end + +// Hide upper bar +%group gHideChipBar +%hook YTMySubsFilterHeaderView +- (void)setChipFilterView:(id)arg1 {} +%end + +%hook YTHeaderContentComboView +- (void)enableSubheaderBarWithView:(id)arg1 {} +%end + +%hook YTHeaderContentComboView +- (void)setFeedHeaderScrollMode:(int)arg1 { %orig(0); } +%end +%end + +// Force iPhone layout +%group giPhoneLayout +%hook UIDevice +- (long long)userInterfaceIdiom { + return NO; +} +%end +%hook UIStatusBarStyleAttributes +- (long long)idiom { + return YES; +} +%end +%hook UIKBTree +- (long long)nativeIdiom { + return YES; +} +%end +%hook UIKBRenderer +- (long long)assetIdiom { + return YES; +} +%end +%end + +# pragma mark - Other hooks + +// Activate FLEX %hook YTAppDelegate - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { BOOL didFinishLaunching = %orig; - if (IS_ENABLED(@"flex_enabled")) { [[%c(FLEXManager) performSelector:@selector(sharedManager)] performSelector:@selector(showExplorer)]; } - return didFinishLaunching; } - (void)appWillResignActive:(id)arg1 { @@ -61,40 +258,6 @@ NSBundle *tweakBundle = uYouPlusBundle(); } %end -// YTMiniPlayerEnabler: https://github.com/level3tjg/YTMiniplayerEnabler/ -%hook YTWatchMiniBarViewController -- (void)updateMiniBarPlayerStateFromRenderer { - if (IS_ENABLED(@"ytMiniPlayer_enabled")) {} - else { return %orig; } -} -%end - -// YTNoHoverCards: https://github.com/level3tjg/YTNoHoverCards -%hook YTCreatorEndscreenView -- (void)setHidden:(BOOL)hidden { - if (IS_ENABLED(@"hideHoverCards_enabled")) - hidden = YES; - %orig; -} -%end - -// YTCastConfirm: https://github.com/JamieBerghmans/YTCastConfirm -%hook MDXPlaybackRouteButtonController -- (void)didPressButton:(id)arg1 { - if (IS_ENABLED(@"castConfirm_enabled")) { - NSBundle *tweakBundle = uYouPlusBundle(); - YTAlertView *alertView = [%c(YTAlertView) confirmationDialogWithAction:^{ - %orig; - } actionTitle:LOC(@"MSG_YES")]; - alertView.title = LOC(@"CASTING"); - alertView.subtitle = LOC(@"MSG_ARE_YOU_SURE"); - [alertView show]; - } else { - return %orig; - } -} -%end - // Hide search ads by @PoomSmart - https://github.com/PoomSmart/YouTube-X // %hook YTIElementRenderer // - (NSData *)elementData { @@ -117,655 +280,27 @@ NSBundle *tweakBundle = uYouPlusBundle(); // } // %end -// YTClassicVideoQuality: https://github.com/PoomSmart/YTClassicVideoQuality -%hook YTVideoQualitySwitchControllerFactory -- (id)videoQualitySwitchControllerWithParentResponder:(id)responder { - Class originalClass = %c(YTVideoQualitySwitchOriginalController); - return originalClass ? [[originalClass alloc] initWithParentResponder:responder] : %orig; -} -%end - // A/B flags %hook YTColdConfig -- (BOOL)respectDeviceCaptionSetting { return NO; } // YouRememberCaption: https://poomsmart.github.io/repo/depictions/youremembercaption.html -- (BOOL)isLandscapeEngagementPanelSwipeRightToDismissEnabled { return YES; } // Swipe right to dismiss the right panel in fullscreen mode +// YouRememberCaption: https://poomsmart.github.io/repo/depictions/youremembercaption.html +- (BOOL)respectDeviceCaptionSetting { return NO; } +// Swipe right to dismiss the right panel in fullscreen mode +- (BOOL)isLandscapeEngagementPanelSwipeRightToDismissEnabled { return YES; } %end -// YTNoPaidPromo: https://github.com/PoomSmart/YTNoPaidPromo -%hook YTMainAppVideoPlayerOverlayViewController -- (void)setPaidContentWithPlayerData:(id)data { - if (IS_ENABLED(@"hidePaidPromotionCard_enabled")) {} - else { return %orig; } -} -- (void)playerOverlayProvider:(YTPlayerOverlayProvider *)provider didInsertPlayerOverlay:(YTPlayerOverlay *)overlay { - if ([[overlay overlayIdentifier] isEqualToString:@"player_overlay_paid_content"] && IS_ENABLED(@"hidePaidPromotionCard_enabled")) return; - %orig; -} -%end - -%hook YTInlineMutedPlaybackPlayerOverlayViewController -- (void)setPaidContentWithPlayerData:(id)data { - if (IS_ENABLED(@"hidePaidPromotionCard_enabled")) {} - else { return %orig; } -} -%end - -// YTReExplore: https://github.com/PoomSmart/YTReExplore/ -%group gReExplore -static void replaceTab(YTIGuideResponse *response) { - NSMutableArray *renderers = [response itemsArray]; - for (YTIGuideResponseSupportedRenderers *guideRenderers in renderers) { - YTIPivotBarRenderer *pivotBarRenderer = [guideRenderers pivotBarRenderer]; - NSMutableArray *items = [pivotBarRenderer itemsArray]; - NSUInteger shortIndex = [items indexOfObjectPassingTest:^BOOL(YTIPivotBarSupportedRenderers *renderers, NSUInteger idx, BOOL *stop) { - return [[[renderers pivotBarItemRenderer] pivotIdentifier] isEqualToString:@"FEshorts"]; - }]; - if (shortIndex != NSNotFound) { - [items removeObjectAtIndex:shortIndex]; - NSUInteger exploreIndex = [items indexOfObjectPassingTest:^BOOL(YTIPivotBarSupportedRenderers *renderers, NSUInteger idx, BOOL *stop) { - return [[[renderers pivotBarItemRenderer] pivotIdentifier] isEqualToString:[%c(YTIBrowseRequest) browseIDForExploreTab]]; - }]; - if (exploreIndex == NSNotFound) { - YTIPivotBarSupportedRenderers *exploreTab = [%c(YTIPivotBarRenderer) pivotSupportedRenderersWithBrowseId:[%c(YTIBrowseRequest) browseIDForExploreTab] title:@"Explore" iconType:292]; - [items insertObject:exploreTab atIndex:1]; - } - break; - } - } -} -%hook YTGuideServiceCoordinator -- (void)handleResponse:(YTIGuideResponse *)response withCompletion:(id)completion { - replaceTab(response); - %orig(response, completion); -} -- (void)handleResponse:(YTIGuideResponse *)response error:(id)error completion:(id)completion { - replaceTab(response); - %orig(response, error, completion); -} -%end -%end - -// BigYTMiniPlayer: https://github.com/Galactic-Dev/BigYTMiniPlayer -%group Main -%hook YTWatchMiniBarView -- (void)setWatchMiniPlayerLayout:(int)arg1 { - %orig(1); -} -- (int)watchMiniPlayerLayout { - return 1; -} -- (void)layoutSubviews { - %orig; - self.frame = CGRectMake(([UIScreen mainScreen].bounds.size.width - self.frame.size.width), self.frame.origin.y, self.frame.size.width, self.frame.size.height); -} -%end - -%hook YTMainAppVideoPlayerOverlayView -- (BOOL)isUserInteractionEnabled { - if([[self _viewControllerForAncestor].parentViewController.parentViewController isKindOfClass:%c(YTWatchMiniBarViewController)]) { - return NO; - } - return %orig; -} -%end -%end - - -# pragma mark - uYouPlus - -// Video Player Options -// Skips content warning before playing *some videos - @PoomSmart -%hook YTPlayabilityResolutionUserActionUIController -- (void)showConfirmAlert { [self confirmAlertDidPressConfirm]; } -%end - -// Disable snap to chapter -%hook YTSegmentableInlinePlayerBarView -- (void)didMoveToWindow { - %orig; - if (IS_ENABLED(@"snapToChapter_enabled")) { - self.enableSnapToChapter = NO; - } -} -%end - -// Disable Pinch to zoom -%hook YTColdConfig -- (BOOL)videoZoomFreeZoomEnabledGlobalConfig { - return IS_ENABLED(@"pinchToZoom_enabled") ? NO : %orig; -} -%end - -// YTStockVolumeHUD - https://github.com/lilacvibes/YTStockVolumeHUD -%group gStockVolumeHUD -%hook YTVolumeBarView -- (void)volumeChanged:(id)arg1 { - %orig(nil); -} -%end - -%hook UIApplication -- (void)setSystemVolumeHUDEnabled:(BOOL)arg1 forAudioCategory:(id)arg2 { - %orig(true, arg2); -} -%end -%end - -%hook YTDoubleTapToSeekController -- (void)enableDoubleTapToSeek:(BOOL)arg1 { - return IS_ENABLED(@"doubleTapToSeek_disabled") ? %orig(NO) : %orig; -} -%end - -// Video Controls Overlay Options -// Hide CC / Autoplay switch -%hook YTMainAppControlsOverlayView -- (void)setClosedCaptionsOrSubtitlesButtonAvailable:(BOOL)arg1 { // hide CC button - return IS_ENABLED(@"hideCC_enabled") ? %orig(NO) : %orig; -} -- (void)setAutoplaySwitchButtonRenderer:(id)arg1 { // hide Autoplay - if (IS_ENABLED(@"hideAutoplaySwitch_enabled")) {} - else { return %orig; } -} -%end - -// Hide HUD Messages -%hook YTHUDMessageView -- (id)initWithMessage:(id)arg1 dismissHandler:(id)arg2 { - return IS_ENABLED(@"hideHUD_enabled") ? nil : %orig; -} -%end - -// Hide Watermark -%hook YTAnnotationsViewController -- (void)loadFeaturedChannelWatermark { - if (IS_ENABLED(@"hideChannelWatermark_enabled")) {} - else { return %orig; } -} -%end - -// Hide Next & Previous button -%group gHidePreviousAndNextButton -%hook YTColdConfig -- (BOOL)removeNextPaddleForSingletonVideos { return YES; } -- (BOOL)removePreviousPaddleForSingletonVideos { return YES; } -%end -%end - -// Replace Next & Previous button with Fast forward & Rewind button -%group gReplacePreviousAndNextButton -%hook YTColdConfig -- (BOOL)replaceNextPaddleWithFastForwardButtonForSingletonVods { return YES; } -- (BOOL)replacePreviousPaddleWithRewindButtonForSingletonVods { return YES; } -%end -%end - -// Bring back the red progress bar - Broken?! -%hook YTInlinePlayerBarContainerView -- (id)quietProgressBarColor { - return IS_ENABLED(@"redProgressBar_enabled") ? [UIColor redColor] : %orig; -} -%end - -// Disable the right panel in fullscreen mode -%hook YTColdConfig -- (BOOL)isLandscapeEngagementPanelEnabled { - return IS_ENABLED(@"hideRightPanel_enabled") ? NO : %orig; -} -%end - -// Shorts Controls Overlay Options -%hook _ASDisplayView -- (void)didMoveToWindow { - %orig; - if ((IS_ENABLED(@"hideBuySuperThanks_enabled")) && ([self.accessibilityIdentifier isEqualToString:@"id.elements.components.suggested_action"])) { - self.hidden = YES; - } -} -%end - -%hook YTReelWatchRootViewController -- (void)setPausedStateCarouselView { - if (IS_ENABLED(@"hideSubcriptions_enabled")) {} - else { return %orig; } -} -%end - -%hook YTShortsStartupCoordinator -- (id)evaluateResumeToShorts { - return IS_ENABLED(@"disableResumeToShorts") ? nil : %orig; -} -%end - -// Theme Options -// Fix navigation bar showing a lighter grey with default dark mode -%hook YTCommonColorPalette -- (UIColor *)brandBackgroundSolid { - return self.pageStyle == 1 ? [UIColor colorWithRed:0.05882352941176471 green:0.05882352941176471 blue:0.05882352941176471 alpha:1.0] : %orig; -} -%end - -// Old dark theme (gray) -%group gOldDarkTheme -%hook YTColdConfig -- (BOOL)uiSystemsClientGlobalConfigUseDarkerPaletteBgColorForNative { return NO; } -- (BOOL)uiSystemsClientGlobalConfigUseDarkerPaletteTextColorForNative { return NO; } -- (BOOL)enableCinematicContainerOnClient { return NO; } -%end - -%hook _ASDisplayView -- (void)didMoveToWindow { - %orig; - if ([self.accessibilityIdentifier isEqualToString:@"id.elements.components.comment_composer"]) { self.backgroundColor = [UIColor clearColor]; } - if ([self.accessibilityIdentifier isEqualToString:@"id.elements.components.video_list_entry"]) { self.backgroundColor = [UIColor clearColor]; } -} -%end - -%hook ASCollectionView -- (void)didMoveToWindow { - %orig; - self.superview.backgroundColor = [UIColor colorWithRed:0.129 green:0.129 blue:0.129 alpha:1.0]; -} -%end - -%hook YTFullscreenEngagementOverlayView -- (void)didMoveToWindow { - %orig; - self.subviews[0].backgroundColor = [UIColor clearColor]; -} -%end - -%hook YTRelatedVideosView -- (void)didMoveToWindow { - %orig; - self.subviews[0].backgroundColor = [UIColor clearColor]; -} -%end -%end - -// OLED dark mode by BandarHL -UIColor* raisedColor = [UIColor colorWithRed:0.035 green:0.035 blue:0.035 alpha:1.0]; -%group gOLED -%hook YTCommonColorPalette -- (UIColor *)baseBackground { - return self.pageStyle == 1 ? [UIColor blackColor] : %orig; -} -- (UIColor *)brandBackgroundSolid { - return self.pageStyle == 1 ? [UIColor blackColor] : %orig; -} -- (UIColor *)brandBackgroundPrimary { - return self.pageStyle == 1 ? [UIColor blackColor] : %orig; -} -- (UIColor *)brandBackgroundSecondary { - return self.pageStyle == 1 ? [[UIColor blackColor] colorWithAlphaComponent:0.9] : %orig; -} -- (UIColor *)raisedBackground { - return self.pageStyle == 1 ? [UIColor blackColor] : %orig; -} -- (UIColor *)staticBrandBlack { - return self.pageStyle == 1 ? [UIColor blackColor] : %orig; -} -- (UIColor *)generalBackgroundA { - return self.pageStyle == 1 ? [UIColor blackColor] : %orig; -} -%end - -// uYou settings -%hook UITableViewCell -- (void)_layoutSystemBackgroundView { - %orig; - UIView *systemBackgroundView = [self valueForKey:@"_systemBackgroundView"]; - NSString *backgroundViewKey = class_getInstanceVariable(systemBackgroundView.class, "_colorView") ? @"_colorView" : @"_backgroundView"; - ((UIView *)[systemBackgroundView valueForKey:backgroundViewKey]).backgroundColor = [UIColor blackColor]; -} -- (void)_layoutSystemBackgroundView:(BOOL)arg1 { - %orig; - ((UIView *)[[self valueForKey:@"_systemBackgroundView"] valueForKey:@"_colorView"]).backgroundColor = [UIColor blackColor]; -} -%end - -%hook settingsReorderTable -- (void)viewDidLayoutSubviews { - %orig; - self.tableView.backgroundColor = [UIColor blackColor]; -} -%end - -%hook FRPSelectListTable -- (void)viewDidLayoutSubviews { - %orig; - self.tableView.backgroundColor = [UIColor blackColor]; -} -%end - -%hook FRPreferences -- (void)viewDidLayoutSubviews { - %orig; - self.tableView.backgroundColor = [UIColor blackColor]; -} -%end - -%hook YTInnerTubeCollectionViewController -- (UIColor *)backgroundColor:(NSInteger)pageStyle { - return pageStyle == 1 ? [UIColor blackColor] : %orig; -} -%end - -// Explore -%hook ASScrollView -- (void)didMoveToWindow { - %orig; - if (IS_DARK_APPEARANCE_ENABLED) { - self.backgroundColor = [UIColor clearColor]; - } -} -%end - -// Your videos -%hook ASCollectionView -- (void)didMoveToWindow { - %orig; - if (IS_DARK_APPEARANCE_ENABLED && [self.nextResponder isKindOfClass:%c(_ASDisplayView)]) { - self.superview.backgroundColor = [UIColor blackColor]; - } -} -%end - -// Sub menu? -%hook ELMView -- (void)didMoveToWindow { - %orig; - if (IS_DARK_APPEARANCE_ENABLED) { - // self.subviews[0].backgroundColor = [UIColor clearColor]; - } -} -%end - -// iSponsorBlock -%hook SponsorBlockSettingsController -- (void)viewDidLoad { - if (self.traitCollection.userInterfaceStyle == UIUserInterfaceStyleDark) { - %orig; - self.tableView.backgroundColor = [UIColor blackColor]; - } else { return %orig; } -} -%end - -%hook SponsorBlockViewController -- (void)viewDidLoad { - if (self.traitCollection.userInterfaceStyle == UIUserInterfaceStyleDark) { - %orig; - self.view.backgroundColor = [UIColor blackColor]; - } else { return %orig; } -} -%end - -// Search View -%hook YTSearchBarView -- (void)setBackgroundColor:(UIColor *)color { - return IS_DARK_APPEARANCE_ENABLED ? %orig([UIColor blackColor]) : %orig; -} -%end - -// History Search view -%hook YTSearchBoxView -- (void)setBackgroundColor:(UIColor *)color { - return IS_DARK_APPEARANCE_ENABLED ? %orig([UIColor blackColor]) : %orig; - -} -%end - -// Comment view -%hook YTCommentView -- (void)setBackgroundColor:(UIColor *)color { - return IS_DARK_APPEARANCE_ENABLED ? %orig([UIColor blackColor]) : %orig; -} -%end - -%hook YTCreateCommentAccessoryView -- (void)setBackgroundColor:(UIColor *)color { - return IS_DARK_APPEARANCE_ENABLED ? %orig([UIColor blackColor]) : %orig; -} -%end - -%hook YTCreateCommentTextView -- (void)setBackgroundColor:(UIColor *)color { - return IS_DARK_APPEARANCE_ENABLED ? %orig([UIColor blackColor]) : %orig; -} -- (void)setTextColor:(UIColor *)color { // fix black text in #Shorts video's comment - return IS_DARK_APPEARANCE_ENABLED ? %orig([UIColor whiteColor]) : %orig; -} -%end - -%hook YTCommentDetailHeaderCell -- (void)didMoveToWindow { - %orig; - if (IS_DARK_APPEARANCE_ENABLED) { - // self.subviews[2].backgroundColor = [UIColor blackColor]; - } -} -%end - -%hook YTFormattedStringLabel // YT is werid... -- (void)setBackgroundColor:(UIColor *)color { - return IS_DARK_APPEARANCE_ENABLED ? %orig([UIColor clearColor]) : %orig; -} -%end - -// Live chat comment -%hook YCHLiveChatActionPanelView -- (void)setBackgroundColor:(UIColor *)color { - return IS_DARK_APPEARANCE_ENABLED ? %orig([UIColor blackColor]) : %orig; -} -%end - -%hook YTEmojiTextView -- (void)setBackgroundColor:(UIColor *)color { - return IS_DARK_APPEARANCE_ENABLED ? %orig([UIColor blackColor]) : %orig; -} -%end - -%hook YCHLiveChatView -- (void)didMoveToWindow { - %orig; - if (IS_DARK_APPEARANCE_ENABLED) { - // self.subviews[1].backgroundColor = [UIColor blackColor]; - } -} -%end - -%hook YTCollectionView -- (void)setBackgroundColor:(UIColor *)color { - return IS_DARK_APPEARANCE_ENABLED ? %orig([UIColor blackColor]) : %orig; -} -%end - -// -%hook YTBackstageCreateRepostDetailView -- (void)setBackgroundColor:(UIColor *)color { - return IS_DARK_APPEARANCE_ENABLED ? %orig([UIColor blackColor]) : %orig; -} -%end - -// Others -%hook _ASDisplayView -- (void)didMoveToWindow { - %orig; - if (IS_DARK_APPEARANCE_ENABLED) { - if ([self.nextResponder isKindOfClass:%c(ASScrollView)]) { self.backgroundColor = [UIColor clearColor]; } - if ([self.accessibilityIdentifier isEqualToString:@"eml.cvr"]) { self.backgroundColor = [UIColor blackColor]; } - if ([self.accessibilityIdentifier isEqualToString:@"eml.live_chat_text_message"]) { self.backgroundColor = [UIColor blackColor]; } - if ([self.accessibilityIdentifier isEqualToString:@"rich_header"]) { self.backgroundColor = [UIColor blackColor]; } - if ([self.accessibilityIdentifier isEqualToString:@"id.ui.comment_cell"]) { self.backgroundColor = [UIColor blackColor]; } - if ([self.accessibilityIdentifier isEqualToString:@"id.ui.cancel.button"]) { self.superview.backgroundColor = [UIColor clearColor]; } - if ([self.accessibilityIdentifier isEqualToString:@"id.elements.components.comment_composer"]) { self.backgroundColor = [UIColor blackColor]; } - if ([self.accessibilityIdentifier isEqualToString:@"id.elements.components.video_list_entry"]) { self.backgroundColor = [UIColor blackColor]; } - if ([self.accessibilityIdentifier isEqualToString:@"id.comment.guidelines_text"]) { self.superview.backgroundColor = [UIColor blackColor]; } - if ([self.accessibilityIdentifier isEqualToString:@"id.comment.channel_guidelines_bottom_sheet_container"]) { self.backgroundColor = [UIColor blackColor]; } - if ([self.accessibilityIdentifier isEqualToString:@"id.comment.channel_guidelines_entry_banner_container"]) { self.backgroundColor = [UIColor blackColor]; } - if ([self.accessibilityIdentifier isEqualToString:@"id.comment.comment_group_detail_container"]) { self.backgroundColor = [UIColor clearColor]; } - } -} -%end - -// Open link with... -%hook ASWAppSwitchingSheetHeaderView -- (void)setBackgroundColor:(UIColor *)color { - return IS_DARK_APPEARANCE_ENABLED ? %orig(raisedColor) : %orig; -} -%end - -%hook ASWAppSwitchingSheetFooterView -- (void)setBackgroundColor:(UIColor *)color { - return IS_DARK_APPEARANCE_ENABLED ? %orig(raisedColor) : %orig; -} -%end - -%hook ASWAppSwitcherCollectionViewCell -- (void)didMoveToWindow { - %orig; - if (IS_DARK_APPEARANCE_ENABLED) { - self.backgroundColor = raisedColor; - // self.subviews[1].backgroundColor = raisedColor; - self.superview.backgroundColor = raisedColor; - } -} -%end - -// Incompatibility with the new YT Dark theme -%hook YTColdConfig -- (BOOL)uiSystemsClientGlobalConfigUseDarkerPaletteBgColorForNative { return NO; } -%end -%end - -// OLED keyboard by @ichitaso <3 - http://gist.github.com/ichitaso/935100fd53a26f18a9060f7195a1be0e -%group gOLEDKB -%hook UIPredictionViewController -- (void)loadView { - %orig; - [self.view setBackgroundColor:[UIColor blackColor]]; -} -%end - -%hook UICandidateViewController -- (void)loadView { - %orig; - [self.view setBackgroundColor:[UIColor blackColor]]; -} -%end - -%hook UIKeyboardDockView -- (void)didMoveToWindow { - %orig; - self.backgroundColor = [UIColor blackColor]; -} -%end - -%hook UIKeyboardLayoutStar -- (void)didMoveToWindow { - %orig; - self.backgroundColor = [UIColor blackColor]; -} -%end - -%hook UIKBRenderConfig // Prediction text color -- (void)setLightKeyboard:(BOOL)arg1 { %orig(NO); } -%end -%end - -// Miscellaneous -// Disable hints - https://github.com/LillieH001/YouTube-Reborn/blob/v4/ -%group gDisableHints -%hook YTSettings -- (BOOL)areHintsDisabled { - return YES; -} -- (void)setHintsDisabled:(BOOL)arg1 { - %orig(YES); -} -%end -%hook YTUserDefaults -- (BOOL)areHintsDisabled { - return YES; -} -- (void)setHintsDisabled:(BOOL)arg1 { - %orig(YES); -} -%end -%end - -// Hide the Chip Bar (Upper Bar) in Home feed -%group gHideChipBar -%hook YTMySubsFilterHeaderView -- (void)setChipFilterView:(id)arg1 {} -%end - -%hook YTHeaderContentComboView -- (void)enableSubheaderBarWithView:(id)arg1 {} -%end - -%hook YTHeaderContentComboView -- (void)setFeedHeaderScrollMode:(int)arg1 { %orig(0); } -%end -%end - -%group giPhoneLayout -%hook UIDevice -- (long long)userInterfaceIdiom { - return NO; -} -%end -%hook UIStatusBarStyleAttributes -- (long long)idiom { - return YES; -} -%end -%hook UIKBTree -- (long long)nativeIdiom { - return YES; -} -%end -%hook UIKBRenderer -- (long long)assetIdiom { - return YES; -} -%end -%end - -// YT startup animation -%hook YTColdConfig -- (BOOL)mainAppCoreClientIosEnableStartupAnimation { - return IS_ENABLED(@"ytStartupAnimation_enabled") ? YES : NO; -} -%end +# pragma mark - Constructor -# pragma mark - ctor %ctor { // Load uYou first so its functions are available for hooks. // dlopen([[NSString stringWithFormat:@"%@/Frameworks/uYou.dylib", [[NSBundle mainBundle] bundlePath]] UTF8String], RTLD_LAZY); %init; - if (IS_ENABLED(@"reExplore_enabled")) { - %init(gReExplore); - } - if (IS_ENABLED(@"bigYTMiniPlayer_enabled") && (UIDevice.currentDevice.userInterfaceIdiom != UIUserInterfaceIdiomPad)) { - %init(Main); - } if (IS_ENABLED(@"hidePreviousAndNextButton_enabled")) { %init(gHidePreviousAndNextButton); } if (IS_ENABLED(@"replacePreviousAndNextButton_enabled")) { %init(gReplacePreviousAndNextButton); } - if (IS_OLED_DARK_THEME_SELECTED) { - %init(gOLED); - } - if (IS_OLD_DARK_THEME_SELECTED) { - %init(gOldDarkTheme) - } - if (IS_ENABLED(@"oledKeyBoard_enabled")) { - %init(gOLEDKB); - } if (IS_ENABLED(@"disableHints_enabled")) { %init(gDisableHints); } @@ -775,9 +310,6 @@ UIColor* raisedColor = [UIColor colorWithRed:0.035 green:0.035 blue:0.035 alpha: if (IS_ENABLED(@"iPhoneLayout_enabled") && (UIDevice.currentDevice.userInterfaceIdiom == UIUserInterfaceIdiomPad)) { %init(giPhoneLayout); } - if (IS_ENABLED(@"stockVolumeHUD_enabled")) { - %init(gStockVolumeHUD); - } // Disable updates [[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"automaticallyCheckForUpdates"]; From d4c17b5cce69ffa4325a68855362960eb9e43daa Mon Sep 17 00:00:00 2001 From: Foxster Date: Mon, 25 Dec 2023 00:08:32 -0800 Subject: [PATCH 30/45] Update localizations --- .../ar.lproj/Localizable.strings | 98 +++++----- .../cz.lproj/Localizable.strings | 136 +++++++------- .../de.lproj/Localizable.strings | 100 +++++----- .../el.lproj/Localizable.strings | 132 ++++++------- .../en.lproj/Localizable.strings | 108 +++++------ .../es.lproj/Localizable.strings | 100 +++++----- .../fr.lproj/Localizable.strings | 100 +++++----- .../he.lproj/Localizable.strings | 138 +++++++------- .../hu.lproj/Localizable.strings | 132 ++++++------- .../it.lproj/Localizable.strings | 100 +++++----- .../ja.lproj/Localizable.strings | 98 +++++----- .../ko.lproj/Localizable.strings | 100 +++++----- .../nl.lproj/Localizable.strings | 134 ++++++-------- .../pl.lproj/Localizable.strings | 134 ++++++-------- .../pt.lproj/Localizable.strings | 100 +++++----- .../ro.lproj/Localizable.strings | 134 ++++++-------- .../ru.lproj/Localizable.strings | 100 +++++----- .../template.lproj/Localizable.strings | 174 ++++++++---------- .../tr.lproj/Localizable.strings | 101 +++++----- .../vi.lproj/Localizable.strings | 96 +++++----- .../zh_cn.lproj/Localizable.strings | 100 +++++----- .../zh_tw.lproj/Localizable.strings | 101 +++++----- 22 files changed, 1123 insertions(+), 1393 deletions(-) diff --git a/Localizations/uYouPlus.bundle/ar.lproj/Localizable.strings b/Localizations/uYouPlus.bundle/ar.lproj/Localizable.strings index b05c956..060312d 100644 --- a/Localizations/uYouPlus.bundle/ar.lproj/Localizable.strings +++ b/Localizations/uYouPlus.bundle/ar.lproj/Localizable.strings @@ -1,13 +1,38 @@ -// Settings +// About +"ABOUT" = "About"; + "VERSION" = "إصدار uYouPlus: %@"; "VERSION_CHECK" = "المس هنا للبحث عن التحديثات!"; +"REPORT_AN_ISSUE" = "Report an issue"; +"ADD_TITLE" = "Add your title here..."; + +"QUIT_YOUTUBE" = "Quit YouTube"; + +"RESTART_YOUTUBE" = "Restart YouTube to apply changes"; + +// App appearance +"APP_THEME" = "App appearance"; +"THEME_OPTIONS" = "خيارات سِمة التطبيق"; + +"DARK_THEME" = "Dark theme"; + +"DEFAULT_THEME" = "تلقائي"; +"DEFAULT_THEME_DESC" = "الوضع المظلم التلقائي ليوتيوب. تتطلب إعادة تشغيل التطبيق."; + +"OLD_DARK_THEME" = "الوضع المظلم القديم"; +"OLD_DARK_THEME_DESC" = "الوضع المظلم القديم ليوتيوب (ألوان رمادية). تتطلب إعادة تشغيل التطبيق."; + +"OLED_DARK_THEME" = "وضع داكن OLED (ميزة تجريبية)"; +"OLED_DARK_THEME_2" = "وضع داكن OLED"; +"OLED_DARK_THEME_DESC" = "قد لا تعمل في كل الحالات. يجب إعادة تشغيل التطبيق عند تشغيل أو إيقاف هذه الخاصية."; + +"OLED_KEYBOARD" = "لوحة مفاتيح داكنة OLED (ميزة تجريبية)"; +"OLED_KEYBOARD_DESC" = "قد لا تعمل بشكل صحيح في بعض الحالات. تتطلب إعادة تشغيل التطبيق."; + // Video player options "VIDEO_PLAYER_OPTIONS" = "خيارات مشغِّل الفيديو"; -"AUTO_FULLSCREEN" = "كامل الشاشة تلقائياً (أداة YTAutoFullScreen)"; -"AUTO_FULLSCREEN_DESC" = "تشغيل الفيديوهات تلقائياً بكامل الشاشة."; - "DISABLE_DOUBLE_TAP_TO_SEEK" = "منع خاصية النقر مرتين للتقدم أو التراجع"; "DISABLE_DOUBLE_TAP_TO_SEEK_DESC" = ""; @@ -47,64 +72,27 @@ "REPLACE_PREVIOUS_NEXT_BUTTON" = "تقدم وتراجع بدلاً من السابق والتالي"; "REPLACE_PREVIOUS_NEXT_BUTTON_DESC" = "استبدال زرّي المقطع السابق والمقطع التالي بزرّي تقدم وتراجع. يتطلب إعادة تشغيل التطبيق."; +"RED_PROGRESS_BAR" = "شريط تقدّم أحمر"; +"RED_PROGRESS_BAR_DESC" = "إعادة اللون الأحمر لشريط التقدم. تتطلب إعادة تشغيل التطبيق."; + "HIDE_HOVER_CARD" = "إخفاء صور المقاطع الأخرى في نهاية المقاطع (أداة YTNoHoverCards)"; "HIDE_HOVER_CARD_DESC" = "إخفاء الصور المصغرة الظاهرة على مشغل الفيديو في نهاية المقطع."; "HIDE_RIGHT_PANEL" = "إخفاء القائمة اليمنى التي تظهر في وضع ملء الشاشة"; "HIDE_RIGHT_PANEL_DESC" = "تتطلب إعادة تشغيل التطبيق."; -"RED_PROGRESS_BAR" = "شريط تقدّم أحمر"; -"RED_PROGRESS_BAR_DESC" = "إعادة اللون الأحمر لشريط التقدم. تتطلب إعادة تشغيل التطبيق."; - -"DONT_EAT_MY_CONTENT" = "منع النوتش/الجزيرة التفاعلية على مقاطع 2:1 (أداة DontEatMyContent)"; -"DONT_EAT_MY_CONTENT_DESC" = "منع النوتش/الجزيرة التفاعلية من قص المقاطع التي تكون نسبة العرض إلى الارتفاع فيها تساوي 2:1. يتطلب إعادة تشغيل التطبيق."; - // Shorts controls overlay options "SHORTS_CONTROLS_OVERLAY_OPTIONS" = "خيارات طبقة التحكم بمقاطع Shorts"; -"HIDE_SHORTS_CHANNEL_AVATAR" = "إخفاء الصورة الرمزية لقناة المقطع القصير"; -"HIDE_SHORTS_CHANNEL_AVATAR_DESC" = "إخفاء الصورة الرمزية لقنوات مقاطع Shorts."; - -"HIDE_SHORTS_DISLIKE_BUTTON" = "إخفاء زر عدم الإعجاب في المقاطع القصيرة"; -"HIDE_SHORTS_DISLIKE_BUTTON_DESC" = "إخفاء زر عدم الإعجاب لمقاطع Shorts."; - -"HIDE_SHORTS_COMMENT_BUTTON" = "إخفاء زر التعليقات في المقاطع القصيرة"; -"HIDE_SHORTS_COMMENT_BUTTON_DESC" = "إخفاء زر التعليقات لمقاطع Shorts."; - -"HIDE_SHORTS_REMIX_BUTTON" = "إخفاء زر المزج في المقاطع القصيرة"; -"HIDE_SHORTS_REMIX_BUTTON_DESC" = "إخفاء زر remix لمقاطع Shorts."; - -"HIDE_SHORTS_SHARE_BUTTON" = "إخفاء زر المشاركة للمقاطع القصيرة"; -"HIDE_SHORTS_SHARE_BUTTON_DESC" = "إخفاء زر المشاركة لمقاطع Shorts."; - -"HIDE_UYOU_SHORTS_DOWNLOAD_BUTTON" = "إخفاء أزرار uYou"; -"HIDE_UYOU_SHORTS_DOWNLOAD_BUTTON_DESC" = "إخفاء أزرار التحميل الخاصة بـuYou من مقاطع Shorts."; - -"HIDE_SUBCRIPTIONS" = "إخفاء زر الاشتراك"; -"HIDE_SUBCRIPTIONS_DESC" = "إخفاء زر الاشتراك، والذي يظهر عند إيقاف الفيديو مؤقتاً."; - "HIDE_SUPER_THANKS" = "إخفاء عبارة 'شراء سوبر شكراً' في المقاطع القصيرة"; "HIDE_SUPER_THANKS_DESC" = "إخفاء لافتة 'Buy Super Thanks' من مقاطع Shorts."; +"HIDE_SUBCRIPTIONS" = "إخفاء زر الاشتراك"; +"HIDE_SUBCRIPTIONS_DESC" = "إخفاء زر الاشتراك، والذي يظهر عند إيقاف الفيديو مؤقتاً."; + "DISABLE_RESUME_TO_SHORTS" = "منع استئناف المشاهدة في المقاطع القصيرة"; "DISABLE_RESUME_TO_SHORTS_DESC" = "إذا أغلقت تطبيق يوتيوب أثناء مشاهدة مقطع Shorts, لن يتم استئناف الشماهدة في المرة القادمة التي تفتح فيها التطبيق."; -// Theme -"THEME_OPTIONS" = "خيارات سِمة التطبيق"; - -"OLED_DARK_THEME" = "وضع داكن OLED (ميزة تجريبية)"; -"OLED_DARK_THEME_2" = "وضع داكن OLED"; -"OLED_DARK_THEME_DESC" = "قد لا تعمل في كل الحالات. يجب إعادة تشغيل التطبيق عند تشغيل أو إيقاف هذه الخاصية."; - -"OLD_DARK_THEME" = "الوضع المظلم القديم"; -"OLD_DARK_THEME_DESC" = "الوضع المظلم القديم ليوتيوب (ألوان رمادية). تتطلب إعادة تشغيل التطبيق."; - -"DEFAULT_THEME" = "تلقائي"; -"DEFAULT_THEME_DESC" = "الوضع المظلم التلقائي ليوتيوب. تتطلب إعادة تشغيل التطبيق."; - -"OLED_KEYBOARD" = "لوحة مفاتيح داكنة OLED (ميزة تجريبية)"; -"OLED_KEYBOARD_DESC" = "قد لا تعمل بشكل صحيح في بعض الحالات. تتطلب إعادة تشغيل التطبيق."; - // Miscellaneous "MISCELLANEOUS" = "خيارات متنوعة"; @@ -118,26 +106,26 @@ "DISABLE_HINTS" = "منع التلميحات"; "DISABLE_HINTS_DESC" = "منع تلميحات مزايا التطبيق، والتي تظهر عادة عند تثبيت التطبيق حديثاً."; -"ENABLE_FLEX" = "تفعيل FLEX"; -"ENABLE_FLEX_DESC" = "تفعيل FLEX للمطورين (لا ينصح به). اترك هذا الخيار مغلقاً إلا إذا كنت تعرف ما تفعل."; - "ENABLE_YT_STARTUP_ANIMATION" = "تفعيل شعار يوتيوب المتحرك عند بدء تشغيل التطبيق"; "ENABLE_YT_STARTUP_ANIMATION_DESC" = ""; -"FIX_GOOGLE_SIGNIN" = "إصلاح تسجيل الدخول بحساب جوجل (لمستخدمي TrollStore فقط)"; -"FIX_GOOGLE_SIGNIN_DESC" = "هذا الخيار لا يعمل إلا إذا كان التطبيق مثبت بواسطة TrollStore: فعل هذا الخيار لتتمكن من تسجيل الدخول بحساب جوجل. يتطلب إعادة تشغيل التطبيق."; - "HIDE_CHIP_BAR" = "إخفاء الشريط العلوي"; "HIDE_CHIP_BAR_DESC" = "إخفاء الشريط العلوي من تبويب الصفحة الرئيسية (موسيقى، ألعاب فيديو، تشكيلات ...) ومن تبويب الاشتراكات (كل الفيديوهات، متابعة المشاهدة,...). تتطلب إعادة تشغيل التطبيق."; "HIDE_PLAY_NEXT_IN_QUEUE" = "إخفاء \"تشغيل المقطع التالي من قائمة الانتظار\""; "HIDE_PLAY_NEXT_IN_QUEUE_DESC" = "إخفاء خيار \"تشغيل التالي من قائمة الانتظار\" من قائمة السياق في حسابات يوتيوب المدفوعة"; +"IPHONE_LAYOUT" = "واجهة الآيفون"; +"IPHONE_LAYOUT_DESC" = "فعل الخيار لتفعيل واجهة الآيفون. يتطلب إغلاق التطبيق وإعادة فتحه."; + "NEW_MINIPLAYER_STYLE" = "تغيير شكل المشغّل المصغر (أداة BigYTMiniPlayer)"; "NEW_MINIPLAYER_STYLE_DESC" = "تغيير شكل المشغّل المصغر في الآيفون إلى نفس شكله في الآيباد - تتطلب إغلاق التطبيق وإعادة فتحه."; "YT_RE_EXPLORE" = "استبدال تبويب Shorts بتبويب Explore (أداة YTReExplore)"; "YT_RE_EXPLORE_DESC" = " تتطلب إغلاق التطبيق وإعادة فتحه."; -"IPHONE_LAYOUT" = "واجهة الآيفون"; -"IPHONE_LAYOUT_DESC" = "فعل الخيار لتفعيل واجهة الآيفون. يتطلب إغلاق التطبيق وإعادة فتحه."; +"ENABLE_FLEX" = "تفعيل FLEX"; +"ENABLE_FLEX_DESC" = "تفعيل FLEX للمطورين (لا ينصح به). اترك هذا الخيار مغلقاً إلا إذا كنت تعرف ما تفعل."; + +"FIX_GOOGLE_SIGNIN" = "إصلاح تسجيل الدخول بحساب جوجل (لمستخدمي TrollStore فقط)"; +"FIX_GOOGLE_SIGNIN_DESC" = "هذا الخيار لا يعمل إلا إذا كان التطبيق مثبت بواسطة TrollStore: فعل هذا الخيار لتتمكن من تسجيل الدخول بحساب جوجل. يتطلب إعادة تشغيل التطبيق."; diff --git a/Localizations/uYouPlus.bundle/cz.lproj/Localizable.strings b/Localizations/uYouPlus.bundle/cz.lproj/Localizable.strings index 672d955..701eb6c 100644 --- a/Localizations/uYouPlus.bundle/cz.lproj/Localizable.strings +++ b/Localizations/uYouPlus.bundle/cz.lproj/Localizable.strings @@ -1,26 +1,51 @@ -// Settings -"VERSION" = "uYouPlus's version: %@"; -"VERSION_CHECK" = "Tap to check for update!"; +// About +"ABOUT" = "About"; + +"VERSION" = "Version"; +"VERSION_CHECK" = "Tap to check for updates!"; + +"REPORT_AN_ISSUE" = "Report an issue"; +"ADD_TITLE" = "Add your title here..."; + +"QUIT_YOUTUBE" = "Quit YouTube"; + +"RESTART_YOUTUBE" = "Restart YouTube to apply changes"; + +// App appearance +"APP_THEME" = "App appearance"; +"THEME_OPTIONS" = "Theme Options"; + +"DARK_THEME" = "Dark theme"; + +"DEFAULT_THEME" = "Default"; +"DEFAULT_THEME_DESC" = ""; + +"OLD_DARK_THEME" = "Lighter grey"; +"OLD_DARK_THEME_DESC" = "YouTube's old dark theme"; + +"OLED_DARK_THEME" = "Tmavý OLED režim (Experimentální)"; +"OLED_DARK_THEME_2" = "Tmavý OLED režim (Experimentální)"; +"OLED_DARK_THEME_DESC" = "Mohou se vyskytnout chyby. Je potřeba restart aplikace."; + +"OLED_KEYBOARD" = "OLED Klávesnice (Experimentální)"; +"OLED_KEYBOARD_DESC" = "Mohou se vyskytnout chyby. Je potřeba restart aplikace."; // Video player options -"VIDEO_PLAYER_OPTIONS" = "Video Player Options"; - -"AUTO_FULLSCREEN" = "Přes celou obrazovku (YTAutoFullScreen)"; -"AUTO_FULLSCREEN_DESC" = "Automaticky spouští videa přes celou obrazovku."; +"VIDEO_PLAYER_OPTIONS" = "Video player options"; "DISABLE_DOUBLE_TAP_TO_SEEK" = "Disable double tap to seek"; "DISABLE_DOUBLE_TAP_TO_SEEK_DESC" = ""; "SNAP_TO_CHAPTER" = "Disable snap to chapter"; -"SNAP_TO_CHAPTER_DESC" = "Disable auto snap to chapter when seeking in videos. App restart is required."; +"SNAP_TO_CHAPTER_DESC" = "Disables auto snap to chapter when seeking through videos"; "PINCH_TO_ZOOM" = "Disable pinch to zoom"; -"PINCH_TO_ZOOM_DESC" = "App restart is required."; +"PINCH_TO_ZOOM_DESC" = ""; "YT_MINIPLAYER" = "Povolit Minipřehrávač pro všechna videa"; "YT_MINIPLAYER_DESC" = "Například u videa pro děti"; -"STOCK_VOLUME_HUD" = "Use iOS stock volume HUD"; +"STOCK_VOLUME_HUD" = "Use stock iOS volume HUD"; "STOCK_VOLUME_HUD_DESC" = ""; // Video controls overlay options @@ -35,11 +60,11 @@ "HIDE_HUD_MESSAGES" = "Skrýt vyskakující zprávy"; "HIDE_HUD_MESSAGES_DESC" = "Příklad: Titulky zapnuty/vypnuty, Smyčka videa zapnuta,..."; -"HIDE_PAID_PROMOTION_CARDS" = "Hide Paid Promotion banner"; -"HIDE_PAID_PROMOTION_CARDS_DESC" = "Hide the 'Includes Paid Promotions' banner in some videos."; +"HIDE_PAID_PROMOTION_CARDS" = "Hide paid promotion banner"; +"HIDE_PAID_PROMOTION_CARDS_DESC" = ""; -"HIDE_CHANNEL_WATERMARK" = "Hide Channel Watermark"; -"HIDE_CHANNEL_WATERMARK_DESC" = "Hide channel's watermark in video controls overlay. App restart is required."; +"HIDE_CHANNEL_WATERMARK" = "Hide channel watermark"; +"HIDE_CHANNEL_WATERMARK_DESC" = ""; "HIDE_PREVIOUS_AND_NEXT_BUTTON" = "Skrýt tlačítka předchozí a následující"; "HIDE_PREVIOUS_AND_NEXT_BUTTON_DESC" = "Skryje tlačítka předchozí a následující v překrytí ovládání videa."; @@ -47,63 +72,26 @@ "REPLACE_PREVIOUS_NEXT_BUTTON" = "Nahradit předchozí a další tlačítko"; "REPLACE_PREVIOUS_NEXT_BUTTON_DESC" = "Nahradit předchozí a následující tlačítko tlačítkem Přetočit vpřed a vzad. Je vyžadován restart aplikace."; +"RED_PROGRESS_BAR" = "Red progress bar"; +"RED_PROGRESS_BAR_DESC" = ""; + "HIDE_HOVER_CARD" = "Skrýt karty na konci videa (YTNoHoverCards)"; "HIDE_HOVER_CARD_DESC" = "Skryje náhledy jiných videjí na konci videa."; -"HIDE_RIGHT_PANEL" = "Hide the right panel in fullscreen mode"; -"HIDE_RIGHT_PANEL_DESC" = "App restart is required."; - -"RED_PROGRESS_BAR" = "Red progress bar"; -"RED_PROGRESS_BAR_DESC" = "Bring back the red progress bar. App restart is required."; - -"DONT_EAT_MY_CONTENT" = "Zabránit zářezu/ostrovu na videoobsahu 2:1 (DontEatMyContent)"; -"DONT_EAT_MY_CONTENT_DESC" = "Zabraňte tomu, aby zářez/Dynamic Island žvýkal video obsah 2:1 na YouTube. Je vyžadován restart aplikace."; +"HIDE_RIGHT_PANEL" = "Hide engagement panels in full screen"; +"HIDE_RIGHT_PANEL_DESC" = "Hides right panels (e.g., comments, live chat, etc.) in landscape"; // Shorts controls overlay options -"SHORTS_CONTROLS_OVERLAY_OPTIONS" = "Shorts Controls Overlay Options"; +"SHORTS_CONTROLS_OVERLAY_OPTIONS" = "Shorts controls overlay options"; -"HIDE_SHORTS_CHANNEL_AVATAR" = "Hide Shorts channel's avatar"; -"HIDE_SHORTS_CHANNEL_AVATAR_DESC" = ""; +"HIDE_SUPER_THANKS" = "Hide \"Buy Super Thanks\" banner"; +"HIDE_SUPER_THANKS_DESC" = ""; -"HIDE_SHORTS_DISLIKE_BUTTON" = "Hide Shorts dislike button"; -"HIDE_SHORTS_DISLIKE_BUTTON_DESC" = ""; - -"HIDE_SHORTS_COMMENT_BUTTON" = "Hide Shorts comment button"; -"HIDE_SHORTS_COMMENT_BUTTON_DESC" = ""; - -"HIDE_SHORTS_REMIX_BUTTON" = "Hide Shorts remix button"; -"HIDE_SHORTS_REMIX_BUTTON_DESC" = ""; - -"HIDE_SHORTS_SHARE_BUTTON" = "Hide Shorts share button"; -"HIDE_SHORTS_SHARE_BUTTON_DESC" = ""; - -"HIDE_UYOU_SHORTS_DOWNLOAD_BUTTON" = "Hide uYou's buttons"; -"HIDE_UYOU_SHORTS_DOWNLOAD_BUTTON_DESC" = "Hide uYou's download buttons in Shorts."; - -"HIDE_SUBCRIPTIONS" = "Hide Subscriptions button"; -"HIDE_SUBCRIPTIONS_DESC" = "Hide Subscriptions button which shows up when paused."; - -"HIDE_SUPER_THANKS" = "Hide 'Buy Super Thanks' banner"; -"HIDE_SUPER_THANKS_DESC" = "Hide the 'Buy Super Thanks' banner in Shorts."; +"HIDE_SUBCRIPTIONS" = "Hide subscriptions button"; +"HIDE_SUBCRIPTIONS_DESC" = ""; "DISABLE_RESUME_TO_SHORTS" = "Disable resume to Shorts"; -"DISABLE_RESUME_TO_SHORTS_DESC" = "If you close YouTube while watching Shorts, Shorts won‘t automatically play next time you launch YouTube."; - -// Theme -"THEME_OPTIONS" = "Theme Options"; - -"OLED_DARK_THEME" = "Tmavý OLED režim (Experimentální)"; -"OLED_DARK_THEME_2" = "Tmavý OLED režim (Experimentální)"; -"OLED_DARK_THEME_DESC" = "Mohou se vyskytnout chyby. Je potřeba restart aplikace."; - -"OLD_DARK_THEME" = "Old dark theme"; -"OLD_DARK_THEME_DESC" = "Old YouTube's dark theme (grey theme). App restart is required."; - -"DEFAULT_THEME" = "Default"; -"DEFAULT_THEME_DESC" = "Default dark(er) theme of YouTube. App restart is required."; - -"OLED_KEYBOARD" = "OLED Klávesnice (Experimentální)"; -"OLED_KEYBOARD_DESC" = "Mohou se vyskytnout chyby. Je potřeba restart aplikace."; +"DISABLE_RESUME_TO_SHORTS_DESC" = "If you close YouTube while watching Shorts, this prevents it from automatically resuming the next time you reopen the app"; // Miscellaneous "MISCELLANEOUS" = "Miscellaneous"; @@ -116,22 +104,19 @@ "MSG_CANCEL" = "Zrušit"; "DISABLE_HINTS" = "Disable hints"; -"DISABLE_HINTS_DESC" = "Disable feature hints from YouTube that usually display when the app is freshly installed."; - -"ENABLE_FLEX" = "Enable FLEX"; -"ENABLE_FLEX_DESC" = "Enable FLEX for debugging (not recommended). Leave this off unless you know what you are doing."; +"DISABLE_HINTS_DESC" = "Disables YouTube feature hints that are displayed when the app is newly installed"; "ENABLE_YT_STARTUP_ANIMATION" = "Enable YouTube startup animation"; "ENABLE_YT_STARTUP_ANIMATION_DESC" = ""; -"FIX_GOOGLE_SIGNIN" = "Opravit přihlášení přes Google (pouze pro uživatele TrollStore)"; -"FIX_GOOGLE_SIGNIN_DESC" = "Tuto možnost zapněte pouze v případě, že se nemůžete přihlásit pomocí svého účtu Google a aplikace byla nainstalována prostřednictvím TrollStore. Pokud se můžete normálně přihlásit, ponechte ji deaktivovanou. Je vyžadován restart aplikace."; - -"HIDE_CHIP_BAR" = "Hide the Upper bar"; -"HIDE_CHIP_BAR_DESC" = "Hide Upper bar in the Home feeds (Trends, Music, Gaming...) and Subcription feeds (All videos, Continue watching...). App restart is required."; +"HIDE_CHIP_BAR" = "Hide upper bar"; +"HIDE_CHIP_BAR_DESC" = "Hides the upper bar in home and subscription feeds (e.g., All videos, Continue watching, etc.)"; "HIDE_PLAY_NEXT_IN_QUEUE" = "Hide \"Play next in queue\""; -"HIDE_PLAY_NEXT_IN_QUEUE_DESC" = "Hide the premium \"Play next in queue\" option in video context menus"; +"HIDE_PLAY_NEXT_IN_QUEUE_DESC" = ""; + +"IPHONE_LAYOUT" = "Force iPhone layout"; +"IPHONE_LAYOUT_DESC" = ""; "NEW_MINIPLAYER_STYLE" = "Nový styl minipřehrávače (BigYTMiniPlayer)"; "NEW_MINIPLAYER_STYLE_DESC" = "Je potřeba restart aplikace."; @@ -139,5 +124,8 @@ "YT_RE_EXPLORE" = "Nahradit záložku Shorts tab záložkou Explore (YTReExplore)"; "YT_RE_EXPLORE_DESC" = "Je potřeba restart aplikace."; -"IPHONE_LAYOUT" = "iPhone Layout"; -"IPHONE_LAYOUT_DESC" = "Toggle to use the iPhone Layout. App restart is required."; +"ENABLE_FLEX" = "Enable FLEX"; +"ENABLE_FLEX_DESC" = "Enables FLEX for debugging"; + +"FIX_GOOGLE_SIGNIN" = "Opravit přihlášení přes Google (pouze pro uživatele TrollStore)"; +"FIX_GOOGLE_SIGNIN_DESC" = "Tuto možnost zapněte pouze v případě, že se nemůžete přihlásit pomocí svého účtu Google a aplikace byla nainstalována prostřednictvím TrollStore. Pokud se můžete normálně přihlásit, ponechte ji deaktivovanou. Je vyžadován restart aplikace."; diff --git a/Localizations/uYouPlus.bundle/de.lproj/Localizable.strings b/Localizations/uYouPlus.bundle/de.lproj/Localizable.strings index 83e5100..578acc1 100755 --- a/Localizations/uYouPlus.bundle/de.lproj/Localizable.strings +++ b/Localizations/uYouPlus.bundle/de.lproj/Localizable.strings @@ -1,13 +1,38 @@ -// Settings +// About +"ABOUT" = "About"; + "VERSION" = "uYouPlus-Version: %@"; "VERSION_CHECK" = "Tippen, um nach Updates zu suchen!"; +"REPORT_AN_ISSUE" = "Report an issue"; +"ADD_TITLE" = "Add your title here..."; + +"QUIT_YOUTUBE" = "Quit YouTube"; + +"RESTART_YOUTUBE" = "Restart YouTube to apply changes"; + +// App appearance +"APP_THEME" = "App appearance"; +"THEME_OPTIONS" = "Theme Optionen"; + +"DARK_THEME" = "Dark theme"; + +"DEFAULT_THEME" = "Standard"; +"DEFAULT_THEME_DESC" = "Standardmäßig dunklerer Modus von YouTube. App-Neustart erforderlich."; + +"OLD_DARK_THEME" = "Alter dunkler Modus"; +"OLD_DARK_THEME_DESC" = "Alter dunkler Modus von YouTube (grauer Modus). App-Neustart erforderlich."; + +"OLED_DARK_THEME" = "OLED-Dunkelmodus (Experimentell)"; +"OLED_DARK_THEME_2" = "OLED-Dunkelmodus"; +"OLED_DARK_THEME_DESC" = "Echter dunkler Modus. Könnte in einigen Fällen nicht richtig funktionieren. App-Neustart erforderlich nachdem Sie diese Option aktiviert/deaktiviert haben."; + +"OLED_KEYBOARD" = "OLED-Tastatur (Experimentell)"; +"OLED_KEYBOARD_DESC" = "Könnte in manchen Fällen nicht richtig funktionieren. App-Neustart erforderlich!"; + // Video player options "VIDEO_PLAYER_OPTIONS" = "Video-Player-Optionen"; -"AUTO_FULLSCREEN" = "Automatischer Vollbildmodus (YTAutoFullScreen)"; -"AUTO_FULLSCREEN_DESC" = "Automatisch Videos im Vollbildmodus starten."; - "DISABLE_DOUBLE_TAP_TO_SEEK" = "Doppeltippen zum Suchen deaktivieren"; "DISABLE_DOUBLE_TAP_TO_SEEK_DESC" = ""; @@ -47,64 +72,27 @@ "REPLACE_PREVIOUS_NEXT_BUTTON" = "Vor- und Zurücktasten ersetzen"; "REPLACE_PREVIOUS_NEXT_BUTTON_DESC" = "Tasten zum Vor- und Zurückspringen zwischen Videos durch Vor- und Zurückspultasten ersetzen. App-Neustart erforderlich!"; +"RED_PROGRESS_BAR" = "Roter Fortschrittsbalken"; +"RED_PROGRESS_BAR_DESC" = "Bringen Sie den roten Fortschrittsbalken zurück. App-Neustart erforderlich."; + "HIDE_HOVER_CARD" = "Endkarten ausblenden (YTNoHoverCards)"; "HIDE_HOVER_CARD_DESC" = "Creator-Endkarten (Thumbnails) am Ende des Videos ausblenden."; "HIDE_RIGHT_PANEL" = "Ausblenden des rechten Bedienfelds im Vollbildmodus"; "HIDE_RIGHT_PANEL_DESC" = "App-Neustart erforderlich."; -"RED_PROGRESS_BAR" = "Roter Fortschrittsbalken"; -"RED_PROGRESS_BAR_DESC" = "Bringen Sie den roten Fortschrittsbalken zurück. App-Neustart erforderlich."; - -"DONT_EAT_MY_CONTENT" = "Kerbe/dynamische Insel bei 2:1-Videoinhalten berücksichtigen (DontEatMyContent)"; -"DONT_EAT_MY_CONTENT_DESC" = "Verhindert, dass die Notch/Dynamic Island 2:1-Videoinhalte überdeckt. App-Neustart erforderlich!"; - // Shorts controls overlay options "SHORTS_CONTROLS_OVERLAY_OPTIONS" = "Shorts Controls Overlay-Optionen"; -"HIDE_SHORTS_CHANNEL_AVATAR" = "\"Avatar\" des Short-Kanals ausblenden"; -"HIDE_SHORTS_CHANNEL_AVATAR_DESC" = ""; - -"HIDE_SHORTS_DISLIKE_BUTTON" = "Shorts-Schaltfläche \"Dislike\" ausblenden"; -"HIDE_SHORTS_DISLIKE_BUTTON_DESC" = ""; - -"HIDE_SHORTS_COMMENT_BUTTON" = "Shorts Schaltfläche \"Kommentare\" ausblenden"; -"HIDE_SHORTS_COMMENT_BUTTON_DESC" = ""; - -"HIDE_SHORTS_REMIX_BUTTON" = "Shorts-Schaltfläche \"Remix\" ausblenden"; -"HIDE_SHORTS_REMIX_BUTTON_DESC" = ""; - -"HIDE_SHORTS_SHARE_BUTTON" = "Shorts-Schaltfläche \"Teilen\" ausblenden"; -"HIDE_SHORTS_SHARE_BUTTON_DESC" = ""; - -"HIDE_UYOU_SHORTS_DOWNLOAD_BUTTON" = "uYou Schaltflächen ausblenden"; -"HIDE_UYOU_SHORTS_DOWNLOAD_BUTTON_DESC" = "Die Download-Schaltflächen von uYou bei Shorts ausblenden."; - -"HIDE_SUBCRIPTIONS" = "Schaltfläche \"Abos\" ausblenden"; -"HIDE_SUBCRIPTIONS_DESC" = "Ausblenden der Schaltfläche \"Abos\", die beim Anhalten angezeigt wird."; - "HIDE_SUPER_THANKS" = "'Buy Super Thanks'-Banner ausblenden"; "HIDE_SUPER_THANKS_DESC" = "Ausblenden des \"Buy Super Thanks\"-Banners in bestimmten Shorts."; +"HIDE_SUBCRIPTIONS" = "Schaltfläche \"Abos\" ausblenden"; +"HIDE_SUBCRIPTIONS_DESC" = "Ausblenden der Schaltfläche \"Abos\", die beim Anhalten angezeigt wird."; + "DISABLE_RESUME_TO_SHORTS" = "Fortsetzen nach Shorts deaktivieren"; "DISABLE_RESUME_TO_SHORTS_DESC" = "Wenn Sie YouTube beenden, während Sie Shorts ansehen, werden Shorts beim nächsten Start von YouTube nicht automatisch abgespielt."; -// Theme -"THEME_OPTIONS" = "Theme Optionen"; - -"OLED_DARK_THEME" = "OLED-Dunkelmodus (Experimentell)"; -"OLED_DARK_THEME_2" = "OLED-Dunkelmodus"; -"OLED_DARK_THEME_DESC" = "Echter dunkler Modus. Könnte in einigen Fällen nicht richtig funktionieren. App-Neustart erforderlich nachdem Sie diese Option aktiviert/deaktiviert haben."; - -"OLD_DARK_THEME" = "Alter dunkler Modus"; -"OLD_DARK_THEME_DESC" = "Alter dunkler Modus von YouTube (grauer Modus). App-Neustart erforderlich."; - -"DEFAULT_THEME" = "Standard"; -"DEFAULT_THEME_DESC" = "Standardmäßig dunklerer Modus von YouTube. App-Neustart erforderlich."; - -"OLED_KEYBOARD" = "OLED-Tastatur (Experimentell)"; -"OLED_KEYBOARD_DESC" = "Könnte in manchen Fällen nicht richtig funktionieren. App-Neustart erforderlich!"; - // Miscellaneous "MISCELLANEOUS" = "Sonstiges"; @@ -118,20 +106,17 @@ "DISABLE_HINTS" = "Deaktiviere Hinweise"; "DISABLE_HINTS_DESC" = "Deaktiviere Hinweise von YouTube, welche normalerweise erscheinen, sobald die App neu installiert wurde."; -"ENABLE_FLEX" = "Aktiviere FLEX"; -"ENABLE_FLEX_DESC" = "Aktiviere FLEX für debugging (nicht empfohlen). Deaktiviert lassen, es sei denn, Sie wissen, was Sie tuen."; - "ENABLE_YT_STARTUP_ANIMATION" = "Aktivieren der YouTube-Startanimation"; "ENABLE_YT_STARTUP_ANIMATION_DESC" = ""; -"FIX_GOOGLE_SIGNIN" = "Google-Anmeldung reparieren (nur für TrollStore-Benutzer!)"; -"FIX_GOOGLE_SIGNIN_DESC" = "Aktiviere diese Option nur, wenn Sie sich nicht mit Ihrem Google-Account anmelden können und die App über TrollStore installiert wurde. Wenn Sie sich normal anmelden können, halte diese Option deaktiviert! App-Neustart erforderlich!"; - "HIDE_CHIP_BAR" = "Obere Leiste ausblenden"; "HIDE_CHIP_BAR_DESC" = "Obere Leiste in den Home-Feeds (Trends, Musik, Spiele...) und Abo-Feeds (Alle Videos, Weiterschauen...) ausblenden. App-Neustart erforderlich."; "HIDE_PLAY_NEXT_IN_QUEUE" = "Hide \"Play next in queue\""; -"HIDE_PLAY_NEXT_IN_QUEUE_DESC" = "Hide the premium \"Play next in queue\" option in video context menus"; +"HIDE_PLAY_NEXT_IN_QUEUE_DESC" = ""; + +"IPHONE_LAYOUT" = "iPhone Layout"; +"IPHONE_LAYOUT_DESC" = "Umschalten, um das iPhone-Layout zu verwenden. App-Neustart erforderlich."; "NEW_MINIPLAYER_STYLE" = "Neuer Miniplayer Style (BigYTMiniPlayer)"; "NEW_MINIPLAYER_STYLE_DESC" = "App-Neustart erforderlich!"; @@ -139,5 +124,8 @@ "YT_RE_EXPLORE" = "Shorts-Tab durch Entdecken-Tab ersetzen (YTReExplore)"; "YT_RE_EXPLORE_DESC" = "App-Neustart erforderlich!"; -"IPHONE_LAYOUT" = "iPhone Layout"; -"IPHONE_LAYOUT_DESC" = "Umschalten, um das iPhone-Layout zu verwenden. App-Neustart erforderlich."; +"ENABLE_FLEX" = "Aktiviere FLEX"; +"ENABLE_FLEX_DESC" = "Aktiviere FLEX für debugging (nicht empfohlen). Deaktiviert lassen, es sei denn, Sie wissen, was Sie tuen."; + +"FIX_GOOGLE_SIGNIN" = "Google-Anmeldung reparieren (nur für TrollStore-Benutzer!)"; +"FIX_GOOGLE_SIGNIN_DESC" = "Aktiviere diese Option nur, wenn Sie sich nicht mit Ihrem Google-Account anmelden können und die App über TrollStore installiert wurde. Wenn Sie sich normal anmelden können, halte diese Option deaktiviert! App-Neustart erforderlich!"; diff --git a/Localizations/uYouPlus.bundle/el.lproj/Localizable.strings b/Localizations/uYouPlus.bundle/el.lproj/Localizable.strings index ccbd044..b8f501e 100644 --- a/Localizations/uYouPlus.bundle/el.lproj/Localizable.strings +++ b/Localizations/uYouPlus.bundle/el.lproj/Localizable.strings @@ -1,30 +1,55 @@ -// Settings -"VERSION" = "uYouPlus's version: %@"; -"VERSION_CHECK" = "Tap to check for update!"; +// About +"ABOUT" = "About"; + +"VERSION" = "Version"; +"VERSION_CHECK" = "Tap to check for updates!"; + +"REPORT_AN_ISSUE" = "Report an issue"; +"ADD_TITLE" = "Add your title here..."; + +"QUIT_YOUTUBE" = "Quit YouTube"; + +"RESTART_YOUTUBE" = "Restart YouTube to apply changes"; + +// App appearance +"APP_THEME" = "App appearance"; +"THEME_OPTIONS" = "Theme options"; + +"DARK_THEME" = "Dark theme"; + +"DEFAULT_THEME" = "Default"; +"DEFAULT_THEME_DESC" = ""; + +"OLD_DARK_THEME" = "Lighter grey"; +"OLD_DARK_THEME_DESC" = "YouTube's old dark theme"; + +"OLED_DARK_THEME" = "OLED Μαύρο θέμα (Experimental)"; +"OLED_DARK_THEME_2" = "OLED Μαύρο θέμα"; +"OLED_DARK_THEME_DESC" = "Μπορεί να μην δουλέψει σε κάποιες περιπτώσεις. Απαιτείται επανεκκίνηση της εφαρμογής αφού το ενεργοποιήσετε/απενεργοποιήσετε."; + +"OLED_KEYBOARD" = "OLED πληκτρολόγιο (Experimental)"; +"OLED_KEYBOARD_DESC" = "Μπορεί να μην δουλέψει σε κάποιες περιπτώσεις. Απαιτείται επανεκκίνηση της εφαρμογής."; // Video player options -"VIDEO_PLAYER_OPTIONS" = "Video Player Options"; - -"AUTO_FULLSCREEN" = "Αυτόματη αναπαραγωγή σε πλήρη οθόνη (YTAutoFullScreen)"; -"AUTO_FULLSCREEN_DESC" = "Αυτόματη αναπαραγωγή των βίντεο σε πλήρη οθόνη."; +"VIDEO_PLAYER_OPTIONS" = "Video player options"; "DISABLE_DOUBLE_TAP_TO_SEEK" = "Disable double tap to seek"; "DISABLE_DOUBLE_TAP_TO_SEEK_DESC" = ""; "SNAP_TO_CHAPTER" = "Disable snap to chapter"; -"SNAP_TO_CHAPTER_DESC" = "Disable auto snap to chapter when seeking in videos. App restart is required."; +"SNAP_TO_CHAPTER_DESC" = "Disables auto snap to chapter when seeking through videos"; "PINCH_TO_ZOOM" = "Disable pinch to zoom"; -"PINCH_TO_ZOOM_DESC" = "App restart is required."; +"PINCH_TO_ZOOM_DESC" = ""; "YT_MINIPLAYER" = "Ενεργοποιήστε το miniplayer για όλα τα βίντεο του YouTube"; "YT_MINIPLAYER_DESC" = "Τα παιδικά βίντεο για παράδειγμα."; -"STOCK_VOLUME_HUD" = "Use iOS stock volume HUD"; +"STOCK_VOLUME_HUD" = "Use stock iOS volume HUD"; "STOCK_VOLUME_HUD_DESC" = ""; // Video controls overlay options -"VIDEO_CONTROLS_OVERLAY_OPTIONS" = "Video Controls Overlay Options"; +"VIDEO_CONTROLS_OVERLAY_OPTIONS" = "Video controls overlay options"; "HIDE_AUTOPLAY_SWITCH" = "Κρύψτε τον διακόπτη της αυτόματης αναπαραγωγής"; "HIDE_AUTOPLAY_SWITCH_DESC" = "Κρύψτε τον διακόπτη της αυτόματης αναπαραγωγής κατά την αναπαραγωγή βίντεο"; @@ -35,11 +60,11 @@ "HIDE_HUD_MESSAGES" = "Κρύψτε τα μηνύματα του HUD"; "HIDE_HUD_MESSAGES_DESC" = "Παράδειγμα: Οι Υπότιτλοι απενεργοποιήθηκαν/ενεργοποιήθηκαν..."; -"HIDE_PAID_PROMOTION_CARDS" = "Hide Paid Promotion banner"; -"HIDE_PAID_PROMOTION_CARDS_DESC" = "Hide the 'Includes Paid Promotions' banner in some videos."; +"HIDE_PAID_PROMOTION_CARDS" = "Hide paid promotion banner"; +"HIDE_PAID_PROMOTION_CARDS_DESC" = ""; -"HIDE_CHANNEL_WATERMARK" = "Hide Channel Watermark"; -"HIDE_CHANNEL_WATERMARK_DESC" = "Hide channel's watermark in video controls overlay. App restart is required."; +"HIDE_CHANNEL_WATERMARK" = "Hide channel watermark"; +"HIDE_CHANNEL_WATERMARK_DESC" = ""; "HIDE_PREVIOUS_AND_NEXT_BUTTON" = "Κρύψτε το προηγούμενο και το επόμενο κουμπί"; "HIDE_PREVIOUS_AND_NEXT_BUTTON_DESC" = "Κρύψτε το προηγούμενο και το επόμενο κουμπί κατά την αναπαραγωγή βίντεο."; @@ -47,63 +72,26 @@ "REPLACE_PREVIOUS_NEXT_BUTTON" = "Αντικατάσταση του Προηγούμενου και του Επόμενου Κουμπιού"; "REPLACE_PREVIOUS_NEXT_BUTTON_DESC" = "Αντικατάσταση του Προηγούμενου και του Επόμενου κουμπιού με το κουμπί Γρήγορη κίνηση προς τα εμπρός και προς τα πίσω. Απαιτείται επανεκκίνηση της εφαρμογής."; +"RED_PROGRESS_BAR" = "Red progress bar"; +"RED_PROGRESS_BAR_DESC" = ""; + "HIDE_HOVER_CARD" = "Κρύψτε τις τελικές καρτέλες (YTNoHoverCards)"; "HIDE_HOVER_CARD_DESC" = "Κρύψτε τις τελικές καρτέλες από τους δημιουργούς (thumbnails) στο τέλος των βίντεο."; "HIDE_RIGHT_PANEL" = "Hide the right panel in fullscreen mode"; "HIDE_RIGHT_PANEL_DESC" = "App restart is required."; -"RED_PROGRESS_BAR" = "Red progress bar"; -"RED_PROGRESS_BAR_DESC" = "Bring back the red progress bar. App restart is required."; - -"DONT_EAT_MY_CONTENT" = "Αποτροπή Notch/Island σε περιεχόμενο βίντεο 2:1 (DontEatMyContent)"; -"DONT_EAT_MY_CONTENT_DESC" = "Αποτρέψτε το notch/Dynamic Island από το να μασουλάει περιεχόμενο βίντεο 2:1 στο YouTube. Απαιτείται επανεκκίνηση της εφαρμογής."; - // Shorts controls overlay options "SHORTS_CONTROLS_OVERLAY_OPTIONS" = "Shorts Controls Overlay Options"; -"HIDE_SHORTS_CHANNEL_AVATAR" = "Hide Shorts channel's avatar"; -"HIDE_SHORTS_CHANNEL_AVATAR_DESC" = ""; +"HIDE_RIGHT_PANEL" = "Hide engagement panels in full screen"; +"HIDE_RIGHT_PANEL_DESC" = "Hides right panels (e.g., comments, live chat, etc.) in landscape"; -"HIDE_SHORTS_DISLIKE_BUTTON" = "Hide Shorts dislike button"; -"HIDE_SHORTS_DISLIKE_BUTTON_DESC" = ""; - -"HIDE_SHORTS_COMMENT_BUTTON" = "Hide Shorts comment button"; -"HIDE_SHORTS_COMMENT_BUTTON_DESC" = ""; - -"HIDE_SHORTS_REMIX_BUTTON" = "Hide Shorts remix button"; -"HIDE_SHORTS_REMIX_BUTTON_DESC" = ""; - -"HIDE_SHORTS_SHARE_BUTTON" = "Hide Shorts share button"; -"HIDE_SHORTS_SHARE_BUTTON_DESC" = ""; - -"HIDE_UYOU_SHORTS_DOWNLOAD_BUTTON" = "Hide uYou's buttons"; -"HIDE_UYOU_SHORTS_DOWNLOAD_BUTTON_DESC" = "Hide uYou's download buttons in Shorts."; - -"HIDE_SUBCRIPTIONS" = "Hide Subscriptions button"; -"HIDE_SUBCRIPTIONS_DESC" = "Hide Subscriptions button which shows up when paused."; - -"HIDE_SUPER_THANKS" = "Hide 'Buy Super Thanks' banner"; -"HIDE_SUPER_THANKS_DESC" = "Hide the 'Buy Super Thanks' banner in Shorts."; +"HIDE_SUBCRIPTIONS" = "Hide subscriptions button"; +"HIDE_SUBCRIPTIONS_DESC" = ""; "DISABLE_RESUME_TO_SHORTS" = "Disable resume to Shorts"; -"DISABLE_RESUME_TO_SHORTS_DESC" = "If you close YouTube while watching Shorts, Shorts won‘t automatically play next time you launch YouTube."; - -// Theme -"THEME_OPTIONS" = "Theme Options"; - -"OLED_DARK_THEME" = "OLED Μαύρο θέμα (Experimental)"; -"OLED_DARK_THEME_2" = "OLED Μαύρο θέμα"; -"OLED_DARK_THEME_DESC" = "Μπορεί να μην δουλέψει σε κάποιες περιπτώσεις. Απαιτείται επανεκκίνηση της εφαρμογής αφού το ενεργοποιήσετε/απενεργοποιήσετε."; - -"OLD_DARK_THEME" = "Old dark theme"; -"OLD_DARK_THEME_DESC" = "Old YouTube's dark theme (grey theme). App restart is required."; - -"DEFAULT_THEME" = "Default"; -"DEFAULT_THEME_DESC" = "Default dark(er) theme of YouTube. App restart is required."; - -"OLED_KEYBOARD" = "OLED πληκτρολόγιο (Experimental)"; -"OLED_KEYBOARD_DESC" = "Μπορεί να μην δουλέψει σε κάποιες περιπτώσεις. Απαιτείται επανεκκίνηση της εφαρμογής."; +"DISABLE_RESUME_TO_SHORTS_DESC" = "If you close YouTube while watching Shorts, this prevents it from automatically resuming the next time you reopen the app"; // Miscellaneous "MISCELLANEOUS" = "Miscellaneous"; @@ -116,22 +104,19 @@ "MSG_CANCEL" = "Ακύρωση"; "DISABLE_HINTS" = "Disable hints"; -"DISABLE_HINTS_DESC" = "Disable feature hints from YouTube that usually display when the app is freshly installed."; - -"ENABLE_FLEX" = "Enable FLEX"; -"ENABLE_FLEX_DESC" = "Enable FLEX for debugging (not recommended). Leave this off unless you know what you are doing."; +"DISABLE_HINTS_DESC" = "Disables YouTube feature hints that are displayed when the app is newly installed"; "ENABLE_YT_STARTUP_ANIMATION" = "Enable YouTube startup animation"; "ENABLE_YT_STARTUP_ANIMATION_DESC" = ""; -"FIX_GOOGLE_SIGNIN" = "Διόρθωση σύνδεσης Google (μόνο για χρήστες του TrollStore)"; -"FIX_GOOGLE_SIGNIN_DESC" = "Ενεργοποιήστε αυτήν την επιλογή μόνο όταν δεν μπορείτε να συνδεθείτε με τον λογαριασμό σας Google και η εφαρμογή έχει εγκατασταθεί μέσω του TrollStore. Εάν μπορείτε να συνδεθείτε κανονικά, διατηρήστε την απενεργοποιημένη. Απαιτείται επανεκκίνηση της εφαρμογής."; - -"HIDE_CHIP_BAR" = "Hide the Upper bar"; -"HIDE_CHIP_BAR_DESC" = "Hide Upper bar in the Home feeds (Trends, Music, Gaming...) and Subcription feeds (All videos, Continue watching...). App restart is required."; +"HIDE_CHIP_BAR" = "Hide upper bar"; +"HIDE_CHIP_BAR_DESC" = "Hides the upper bar in home and subscription feeds (e.g., All videos, Continue watching, etc.)"; "HIDE_PLAY_NEXT_IN_QUEUE" = "Hide \"Play next in queue\""; -"HIDE_PLAY_NEXT_IN_QUEUE_DESC" = "Hide the premium \"Play next in queue\" option in video context menus"; +"HIDE_PLAY_NEXT_IN_QUEUE_DESC" = ""; + +"IPHONE_LAYOUT" = "Force iPhone layout"; +"IPHONE_LAYOUT_DESC" = ""; "NEW_MINIPLAYER_STYLE" = "Καινούργιο miniplayer θέμα στην μπάρα (BigYTMiniPlayer)"; "NEW_MINIPLAYER_STYLE_DESC" = "Απαιτείται επανεκκίνηση της εφαρμογής."; @@ -139,5 +124,8 @@ "YT_RE_EXPLORE" = "Αντικατάσταση της καρτέλας Shorts με την καρτέλα Explore (YTReExplore)"; "YT_RE_EXPLORE_DESC" = "Απαιτείται επανεκκίνηση της εφαρμογής."; -"IPHONE_LAYOUT" = "iPhone Layout"; -"IPHONE_LAYOUT_DESC" = "Toggle to use the iPhone Layout. App restart is required."; +"ENABLE_FLEX" = "Enable FLEX"; +"ENABLE_FLEX_DESC" = "Enables FLEX for debugging"; + +"FIX_GOOGLE_SIGNIN" = "Διόρθωση σύνδεσης Google (μόνο για χρήστες του TrollStore)"; +"FIX_GOOGLE_SIGNIN_DESC" = "Ενεργοποιήστε αυτήν την επιλογή μόνο όταν δεν μπορείτε να συνδεθείτε με τον λογαριασμό σας Google και η εφαρμογή έχει εγκατασταθεί μέσω του TrollStore. Εάν μπορείτε να συνδεθείτε κανονικά, διατηρήστε την απενεργοποιημένη. Απαιτείται επανεκκίνηση της εφαρμογής."; diff --git a/Localizations/uYouPlus.bundle/en.lproj/Localizable.strings b/Localizations/uYouPlus.bundle/en.lproj/Localizable.strings index 7bfc332..a0b17a5 100644 --- a/Localizations/uYouPlus.bundle/en.lproj/Localizable.strings +++ b/Localizations/uYouPlus.bundle/en.lproj/Localizable.strings @@ -1,13 +1,38 @@ -// Settings +// About +"ABOUT" = "About"; + "VERSION" = "Version"; "VERSION_CHECK" = "Tap to check for updates!"; +"REPORT_AN_ISSUE" = "Report an issue"; +"ADD_TITLE" = "Add your title here..."; + +"QUIT_YOUTUBE" = "Quit YouTube"; + +"RESTART_YOUTUBE" = "Restart YouTube to apply changes"; + +// App appearance +"APP_THEME" = "App appearance"; +"THEME_OPTIONS" = "Theme options"; + +"DARK_THEME" = "Dark theme"; + +"DEFAULT_THEME" = "Default"; +"DEFAULT_THEME_DESC" = ""; + +"OLD_DARK_THEME" = "Lighter grey"; +"OLD_DARK_THEME_DESC" = "YouTube's old dark theme"; + +"OLED_DARK_THEME" = "OLED (experimental)"; +"OLED_DARK_THEME_2" = "OLED"; +"OLED_DARK_THEME_DESC" = "Pure-black dark theme"; + +"OLED_KEYBOARD" = "OLED keyboard (experimental)"; +"OLED_KEYBOARD_DESC" = ""; + // Video player options "VIDEO_PLAYER_OPTIONS" = "Video player options"; -"AUTO_FULLSCREEN" = "YTAutoFullScreen"; -"AUTO_FULLSCREEN_DESC" = "Autoplay videos in full screen"; - "DISABLE_DOUBLE_TAP_TO_SEEK" = "Disable double tap to seek"; "DISABLE_DOUBLE_TAP_TO_SEEK_DESC" = ""; @@ -47,64 +72,27 @@ "REPLACE_PREVIOUS_NEXT_BUTTON" = "Use fast forward and rewind buttons"; "REPLACE_PREVIOUS_NEXT_BUTTON_DESC" = "Replaces previous and next buttons with fast forward and rewind"; +"RED_PROGRESS_BAR" = "Red progress bar"; +"RED_PROGRESS_BAR_DESC" = ""; + "HIDE_HOVER_CARD" = "YTNoHoverCards"; "HIDE_HOVER_CARD_DESC" = "Hides videos' end screens"; "HIDE_RIGHT_PANEL" = "Hide engagement panels in full screen"; "HIDE_RIGHT_PANEL_DESC" = "Hides right panels (e.g., comments, live chat, etc.) in landscape"; -"RED_PROGRESS_BAR" = "Red progress bar"; -"RED_PROGRESS_BAR_DESC" = ""; - -"DONT_EAT_MY_CONTENT" = "Prevent Notch/Island on 2:1 video content (DontEatMyContent)"; -"DONT_EAT_MY_CONTENT_DESC" = "Prevent the notch/Dynamic Island from munching on 2:1 video content in YouTube. App restart is required."; - // Shorts controls overlay options -"SHORTS_CONTROLS_OVERLAY_OPTIONS" = "Shorts Controls Overlay Options"; - -"HIDE_SHORTS_CHANNEL_AVATAR" = "Hide Shorts channel's avatar"; -"HIDE_SHORTS_CHANNEL_AVATAR_DESC" = ""; - -"HIDE_SHORTS_DISLIKE_BUTTON" = "Hide Shorts dislike button"; -"HIDE_SHORTS_DISLIKE_BUTTON_DESC" = ""; - -"HIDE_SHORTS_COMMENT_BUTTON" = "Hide Shorts comment button"; -"HIDE_SHORTS_COMMENT_BUTTON_DESC" = ""; - -"HIDE_SHORTS_REMIX_BUTTON" = "Hide Shorts remix button"; -"HIDE_SHORTS_REMIX_BUTTON_DESC" = ""; - -"HIDE_SHORTS_SHARE_BUTTON" = "Hide Shorts share button"; -"HIDE_SHORTS_SHARE_BUTTON_DESC" = ""; - -"HIDE_UYOU_SHORTS_DOWNLOAD_BUTTON" = "Hide uYou's buttons"; -"HIDE_UYOU_SHORTS_DOWNLOAD_BUTTON_DESC" = "Hide uYou's download buttons in Shorts."; - -"HIDE_SUBCRIPTIONS" = "Hide subscriptions button"; -"HIDE_SUBCRIPTIONS_DESC" = ""; +"SHORTS_CONTROLS_OVERLAY_OPTIONS" = "Shorts controls overlay options"; "HIDE_SUPER_THANKS" = "Hide \"Buy Super Thanks\" banner"; "HIDE_SUPER_THANKS_DESC" = ""; +"HIDE_SUBCRIPTIONS" = "Hide subscriptions button"; +"HIDE_SUBCRIPTIONS_DESC" = ""; + "DISABLE_RESUME_TO_SHORTS" = "Disable resume to Shorts"; "DISABLE_RESUME_TO_SHORTS_DESC" = "If you close YouTube while watching Shorts, this prevents it from automatically resuming the next time you reopen the app"; -// Theme -"THEME_OPTIONS" = "Dark theme"; - -"OLED_DARK_THEME" = "OLED (experimental)"; -"OLED_DARK_THEME_2" = "OLED dark theme"; -"OLED_DARK_THEME_DESC" = "Pure-black dark theme"; - -"OLD_DARK_THEME" = "Lighter grey"; -"OLD_DARK_THEME_DESC" = "YouTube's old dark theme"; - -"DEFAULT_THEME" = "Default"; -"DEFAULT_THEME_DESC" = ""; - -"OLED_KEYBOARD" = "OLED keyboard (experimental)"; -"OLED_KEYBOARD_DESC" = ""; - // Miscellaneous "MISCELLANEOUS" = "Miscellaneous"; @@ -118,34 +106,26 @@ "DISABLE_HINTS" = "Disable hints"; "DISABLE_HINTS_DESC" = "Disables YouTube feature hints that are displayed when the app is newly installed"; -"ENABLE_FLEX" = "Enable FLEX"; -"ENABLE_FLEX_DESC" = "Enables FLEX for debugging"; - "ENABLE_YT_STARTUP_ANIMATION" = "Enable YouTube startup animation"; "ENABLE_YT_STARTUP_ANIMATION_DESC" = ""; -"FIX_GOOGLE_SIGNIN" = "Fix Google Sign in (for TrollStore user only)"; -"FIX_GOOGLE_SIGNIN_DESC" = "Only turn on this option when you can't sign in with your Google account and the app was installed via TrollStore. If you can log in normally, keep it disabled. App restart is required."; - "HIDE_CHIP_BAR" = "Hide upper bar"; -"HIDE_CHIP_BAR_DESC" = "Hides upper bar in the home and subscription feeds (e.g., All videos, Continue watching, etc.)"; +"HIDE_CHIP_BAR_DESC" = "Hides the upper bar in home and subscription feeds (e.g., All videos, Continue watching, etc.)"; "HIDE_PLAY_NEXT_IN_QUEUE" = "Hide \"Play next in queue\""; "HIDE_PLAY_NEXT_IN_QUEUE_DESC" = ""; +"IPHONE_LAYOUT" = "Force iPhone layout"; +"IPHONE_LAYOUT_DESC" = ""; + "NEW_MINIPLAYER_STYLE" = "BigYTMiniPlayer"; "NEW_MINIPLAYER_STYLE_DESC" = "New mini player bar style"; "YT_RE_EXPLORE" = "YTReExplore"; "YT_RE_EXPLORE_DESC" = "Replaces the Shorts tab with the Explore tab"; -"IPHONE_LAYOUT" = "Force iPhone layout"; -"IPHONE_LAYOUT_DESC" = ""; +"ENABLE_FLEX" = "Enable FLEX"; +"ENABLE_FLEX_DESC" = "Enables FLEX for debugging"; -"DARK_THEME" = "Dark theme"; -"RESTART_YOUTUBE" = "Restart YouTube to apply changes"; -"QUIT_YOUTUBE" = "Quit YouTube"; -"APP_THEME" = "App appearance"; -"REPORT_AN_ISSUE" = "Report an issue"; -"ABOUT" = "About"; -"ADD_TITLE" = "Add your title here..."; \ No newline at end of file +"FIX_GOOGLE_SIGNIN" = "Fix Google Sign in (for TrollStore user only)"; +"FIX_GOOGLE_SIGNIN_DESC" = "Only turn on this option when you can't sign in with your Google account and the app was installed via TrollStore. If you can log in normally, keep it disabled. App restart is required."; diff --git a/Localizations/uYouPlus.bundle/es.lproj/Localizable.strings b/Localizations/uYouPlus.bundle/es.lproj/Localizable.strings index cf89b6a..42405f6 100644 --- a/Localizations/uYouPlus.bundle/es.lproj/Localizable.strings +++ b/Localizations/uYouPlus.bundle/es.lproj/Localizable.strings @@ -1,13 +1,38 @@ -// Settings +// About +"ABOUT" = "About"; + "VERSION" = "Versión uYouPlus's: %@"; "VERSION_CHECK" = "Pulse para comprobar si hay actualizaciones."; +"REPORT_AN_ISSUE" = "Report an issue"; +"ADD_TITLE" = "Add your title here..."; + +"QUIT_YOUTUBE" = "Quit YouTube"; + +"RESTART_YOUTUBE" = "Restart YouTube to apply changes"; + +// App appearance +"APP_THEME" = "App appearance"; +"THEME_OPTIONS" = "Opciones de Temas"; + +"DARK_THEME" = "Dark theme"; + +"DEFAULT_THEME" = "Por defecto"; +"DEFAULT_THEME_DESC" = "Tema oscuro predeterminado de YouTube. Es necesario reiniciar la aplicación."; + +"OLD_DARK_THEME" = "Tema oscuro antiguo"; +"OLD_DARK_THEME_DESC" = "Antiguo tema oscuro de YouTube (tema gris). Es necesario reiniciar la aplicación."; + +"OLED_DARK_THEME" = "Modo oscuro OLED (Experimental)"; +"OLED_DARK_THEME_2" = "Modo oscuro OLED"; +"OLED_DARK_THEME_DESC" = "Puede no funcionar correctamente en algunos casos. Requiere reiniciar la app después de activar/desactivar esta opción."; + +"OLED_KEYBOARD" = "Teclado OLED (Experimental)"; +"OLED_KEYBOARD_DESC" = "Puede no funcionar correctamente en algunos casos. Requiere reiniciar la app."; + // Video player options "VIDEO_PLAYER_OPTIONS" = "Opciones del reproductor de vídeo"; -"AUTO_FULLSCREEN" = "Pantalla completa automática (YTAutoFullScreen)"; -"AUTO_FULLSCREEN_DESC" = "Reproducir vídeos en pantalla completa automáticamente."; - "DISABLE_DOUBLE_TAP_TO_SEEK" = "Desactivar la doble pulsación para buscar"; "DISABLE_DOUBLE_TAP_TO_SEEK_DESC" = ""; @@ -47,64 +72,27 @@ "REPLACE_PREVIOUS_NEXT_BUTTON" = "Reemplazar botón anterior y siguiente"; "REPLACE_PREVIOUS_NEXT_BUTTON_DESC" = "Reemplace el botón Anterior y Siguiente con el botón Avance rápido y Rebobinado. Es necesario reiniciar la aplicación."; +"RED_PROGRESS_BAR" = "Barra de progreso roja"; +"RED_PROGRESS_BAR_DESC" = "Recupera la barra de progreso roja. Es necesario reiniciar la aplicación."; + "HIDE_HOVER_CARD" = "Ocultar tarjetas flotantes en las pantallas finales (YTNoHoverCards)"; "HIDE_HOVER_CARD_DESC" = "Ocultar tarjetas flotantes del creador (miniaturas) al final de los vídeos."; "HIDE_RIGHT_PANEL" = "Ocultar el panel derecho en modo pantalla completa"; "HIDE_RIGHT_PANEL_DESC" = "Es necesario reiniciar la aplicación."; -"RED_PROGRESS_BAR" = "Barra de progreso roja"; -"RED_PROGRESS_BAR_DESC" = "Recupera la barra de progreso roja. Es necesario reiniciar la aplicación."; - -"DONT_EAT_MY_CONTENT" = "Evitar Notch/Island en contenido de video 2:1 (DontEatMyContent)"; -"DONT_EAT_MY_CONTENT_DESC" = "Evite que la muesca/Dynamic Island se trague contenido de video 2:1 en YouTube. Es necesario reiniciar la aplicación."; - // Shorts controls overlay options "SHORTS_CONTROLS_OVERLAY_OPTIONS" = "Configurar superposición de Shorts"; -"HIDE_SHORTS_CHANNEL_AVATAR" = "Ocultar el avatar del canal Shorts"; -"HIDE_SHORTS_CHANNEL_AVATAR_DESC" = ""; - -"HIDE_SHORTS_DISLIKE_BUTTON" = "Ocultar el botón 'No me gusta' de Shorts"; -"HIDE_SHORTS_DISLIKE_BUTTON_DESC" = ""; - -"HIDE_SHORTS_COMMENT_BUTTON" = "Ocultar el botón de comentario de Shorts"; -"HIDE_SHORTS_COMMENT_BUTTON_DESC" = ""; - -"HIDE_SHORTS_REMIX_BUTTON" = "Ocultar botón Remix de Shorts"; -"HIDE_SHORTS_REMIX_BUTTON_DESC" = ""; - -"HIDE_SHORTS_SHARE_BUTTON" = "Ocultar el botón de compartir Shorts"; -"HIDE_SHORTS_SHARE_BUTTON_DESC" = ""; - -"HIDE_UYOU_SHORTS_DOWNLOAD_BUTTON" = "Ocultar botones de uYou"; -"HIDE_UYOU_SHORTS_DOWNLOAD_BUTTON_DESC" = "Ocultar los botones de descarga de uYou en Shorts."; - -"HIDE_SUBCRIPTIONS" = "Hide Subscriptions button"; -"HIDE_SUBCRIPTIONS_DESC" = "Hide Subscriptions button which shows up when paused."; - "HIDE_SUPER_THANKS" = "Ocultar banner 'Comprar Supergracias"; "HIDE_SUPER_THANKS_DESC" = "Ocultar el banner 'Comprar Supergracias' en Shorts."; +"HIDE_SUBCRIPTIONS" = "Hide subscriptions button"; +"HIDE_SUBCRIPTIONS_DESC" = ""; + "DISABLE_RESUME_TO_SHORTS" = "Desactivar reanudación a Shorts"; "DISABLE_RESUME_TO_SHORTS_DESC" = "Si cierras YouTube mientras ves Shorts, éstos no se reproducirán automáticamente la próxima vez que inicies YouTube."; -// Theme -"THEME_OPTIONS" = "Opciones de Temas"; - -"OLED_DARK_THEME" = "Modo oscuro OLED (Experimental)"; -"OLED_DARK_THEME_2" = "Modo oscuro OLED"; -"OLED_DARK_THEME_DESC" = "Puede no funcionar correctamente en algunos casos. Requiere reiniciar la app después de activar/desactivar esta opción."; - -"OLD_DARK_THEME" = "Tema oscuro antiguo"; -"OLD_DARK_THEME_DESC" = "Antiguo tema oscuro de YouTube (tema gris). Es necesario reiniciar la aplicación."; - -"DEFAULT_THEME" = "Por defecto"; -"DEFAULT_THEME_DESC" = "Tema oscuro predeterminado de YouTube. Es necesario reiniciar la aplicación."; - -"OLED_KEYBOARD" = "Teclado OLED (Experimental)"; -"OLED_KEYBOARD_DESC" = "Puede no funcionar correctamente en algunos casos. Requiere reiniciar la app."; - // Miscellaneous "MISCELLANEOUS" = "Varios"; @@ -118,20 +106,17 @@ "DISABLE_HINTS" = "Desactivar sugerencias"; "DISABLE_HINTS_DESC" = "Desactiva las sugerencias de YouTube que suelen aparecer cuando la aplicación está recién instalada."; -"ENABLE_FLEX" = "Activar FLEX"; -"ENABLE_FLEX_DESC" = "Habilitar FLEX para depuración (no recomendado). Déjelo desactivado a menos que sepa lo que está haciendo."; - "ENABLE_YT_STARTUP_ANIMATION" = "Activar la animación de inicio de YouTube"; "ENABLE_YT_STARTUP_ANIMATION_DESC" = ""; -"FIX_GOOGLE_SIGNIN" = "Reparar el inicio de sesión de Google (solo para usuarios de TrollStore)"; -"FIX_GOOGLE_SIGNIN_DESC" = "Active esta opción solo cuando no pueda iniciar sesión con su cuenta de Google y la aplicación se instaló a través de TrollStore. Si puede iniciar sesión normalmente, manténgala desactivada. Es necesario reiniciar la aplicación."; - "HIDE_CHIP_BAR" = "Ocultar la barra superior"; "HIDE_CHIP_BAR_DESC" = "Ocultar la barra superior de las fuentes de inicio (Tendencias, Música, Juegos...) y de suscripción (Todos los vídeos, Seguir viendo...). Es necesario reiniciar la aplicación."; "HIDE_PLAY_NEXT_IN_QUEUE" = "Hide \"Play next in queue\""; -"HIDE_PLAY_NEXT_IN_QUEUE_DESC" = "Hide the premium \"Play next in queue\" option in video context menus"; +"HIDE_PLAY_NEXT_IN_QUEUE_DESC" = ""; + +"IPHONE_LAYOUT" = "Diseño para iPhone"; +"IPHONE_LAYOUT_DESC" = "Pulse para utilizar el diseño del iPhone. Es necesario reiniciar la aplicación."; "NEW_MINIPLAYER_STYLE" = "Nuevo estilo de barra del minirreproductor (BigYTMiniPlayer)"; "NEW_MINIPLAYER_STYLE_DESC" = "Requiere reiniciar la app."; @@ -139,5 +124,8 @@ "YT_RE_EXPLORE" = "Reemplazar pestaña de Cortos con pestaña de Explorar (YTReExplore)"; "YT_RE_EXPLORE_DESC" = "Requiere reiniciar la app."; -"IPHONE_LAYOUT" = "Diseño para iPhone"; -"IPHONE_LAYOUT_DESC" = "Pulse para utilizar el diseño del iPhone. Es necesario reiniciar la aplicación."; +"ENABLE_FLEX" = "Activar FLEX"; +"ENABLE_FLEX_DESC" = "Habilitar FLEX para depuración (no recomendado). Déjelo desactivado a menos que sepa lo que está haciendo."; + +"FIX_GOOGLE_SIGNIN" = "Reparar el inicio de sesión de Google (solo para usuarios de TrollStore)"; +"FIX_GOOGLE_SIGNIN_DESC" = "Active esta opción solo cuando no pueda iniciar sesión con su cuenta de Google y la aplicación se instaló a través de TrollStore. Si puede iniciar sesión normalmente, manténgala desactivada. Es necesario reiniciar la aplicación."; diff --git a/Localizations/uYouPlus.bundle/fr.lproj/Localizable.strings b/Localizations/uYouPlus.bundle/fr.lproj/Localizable.strings index 7f7bb14..9a27e4f 100644 --- a/Localizations/uYouPlus.bundle/fr.lproj/Localizable.strings +++ b/Localizations/uYouPlus.bundle/fr.lproj/Localizable.strings @@ -1,13 +1,38 @@ -// Settings +// About +"ABOUT" = "About"; + "VERSION" = "Version de uYouPlus : %@"; "VERSION_CHECK" = "Appuyez pour vérifier les mises à jour !"; +"REPORT_AN_ISSUE" = "Report an issue"; +"ADD_TITLE" = "Add your title here..."; + +"QUIT_YOUTUBE" = "Quit YouTube"; + +"RESTART_YOUTUBE" = "Restart YouTube to apply changes"; + +// App appearance +"APP_THEME" = "App appearance"; +"THEME_OPTIONS" = "Options du thème"; + +"DARK_THEME" = "Dark theme"; + +"DEFAULT_THEME" = "Défaut"; +"DEFAULT_THEME_DESC" = "Thème plus sombre par défaut de YouTube. Un redémarrage de l'application est nécessaire."; + +"OLD_DARK_THEME" = "Ancien thème sombre"; +"OLD_DARK_THEME_DESC" = "Ancien thème sombre de YouTube (thème gris). Un redémarrage de l'application est nécessaire."; + +"OLED_DARK_THEME" = "Mode sombre OLED (Expérimental)"; +"OLED_DARK_THEME_2" = "Mode sombre OLED"; +"OLED_DARK_THEME_DESC" = "Peut ne pas fonctionner correctement dans certains cas. Un redémarrage de l'application est nécessaire après avoir activé/désactivé cette option."; + +"OLED_KEYBOARD" = "Clavier OLED (Expérimental)"; +"OLED_KEYBOARD_DESC" = "Peut ne pas fonctionner correctement dans certains cas. Un redémarrage de l'application est nécessaire."; + // Video player options "VIDEO_PLAYER_OPTIONS" = "Options du lecteur vidéo"; -"AUTO_FULLSCREEN" = "Plein écran automatique (YTAutoFullScreen)"; -"AUTO_FULLSCREEN_DESC" = "Lecture automatique des vidéos en plein écran"; - "DISABLE_DOUBLE_TAP_TO_SEEK" = "Désactiver le double tap pour chercher"; "DISABLE_DOUBLE_TAP_TO_SEEK_DESC" = ""; @@ -47,64 +72,27 @@ "REPLACE_PREVIOUS_NEXT_BUTTON" = "Remplacer le bouton précédent et suivant"; "REPLACE_PREVIOUS_NEXT_BUTTON_DESC" = "Remplace les boutons Précédent et Suivant par les boutons Avance rapide et Retour rapide. Un redémarrage de l'application est nécessaire"; +"RED_PROGRESS_BAR" = "Barre de progression rouge"; +"RED_PROGRESS_BAR_DESC" = "Rétablir la barre de progression rouge. Un redémarrage de l'application est nécessaire."; + "HIDE_HOVER_CARD" = "Masquer les cartes de survol des écrans de fin (YTNoHoverCards)"; "HIDE_HOVER_CARD_DESC" = "Masquer les écrans de fin (vignettes) des créateurs à la fin des vidéos"; "HIDE_RIGHT_PANEL" = "Masquer le panneau de droite en mode plein écran"; "HIDE_RIGHT_PANEL_DESC" = "Un redémarrage de l'application est nécessaire."; -"RED_PROGRESS_BAR" = "Barre de progression rouge"; -"RED_PROGRESS_BAR_DESC" = "Rétablir la barre de progression rouge. Un redémarrage de l'application est nécessaire."; - -"DONT_EAT_MY_CONTENT" = "Empêcher l'encoche/Dynamic Island de grignoter le contenu vidéo 2:1 (DontEatMyContent)"; -"DONT_EAT_MY_CONTENT_DESC" = "Empêche l'encoche/Dynamic Island de grignoter du contenu vidéo 2:1 dans YouTube. Un redémarrage de l'application est nécessaire."; - // Shorts controls overlay options "SHORTS_CONTROLS_OVERLAY_OPTIONS" = "Options de la superposition de commandes de Shorts"; -"HIDE_SHORTS_CHANNEL_AVATAR" = "Masquer l'avatar de la chaîne de Shorts"; -"HIDE_SHORTS_CHANNEL_AVATAR_DESC" = ""; - -"HIDE_SHORTS_DISLIKE_BUTTON" = "Masquer le bouton de dislikes de Shorts"; -"HIDE_SHORTS_DISLIKE_BUTTON_DESC" = ""; - -"HIDE_SHORTS_COMMENT_BUTTON" = "Masquer le bouton de commentaires de Shorts"; -"HIDE_SHORTS_COMMENT_BUTTON_DESC" = ""; - -"HIDE_SHORTS_REMIX_BUTTON" = "Masquer le bouton de remix de Shorts"; -"HIDE_SHORTS_REMIX_BUTTON_DESC" = ""; - -"HIDE_SHORTS_SHARE_BUTTON" = "Masquer le bouton de partage de Shorts"; -"HIDE_SHORTS_SHARE_BUTTON_DESC" = ""; - -"HIDE_UYOU_SHORTS_DOWNLOAD_BUTTON" = "Masquer les boutons uYou"; -"HIDE_UYOU_SHORTS_DOWNLOAD_BUTTON_DESC" = "Masque les boutons de téléchargement uYou dans les Shorts."; - -"HIDE_SUBCRIPTIONS" = "Masquer le bouton Abonnements"; -"HIDE_SUBCRIPTIONS_DESC" = "Masque le bouton Abonnements qui apparaît lors de la pause."; - "HIDE_SUPER_THANKS" = "Masquer la bannière 'Acheter des Super Thanks'"; "HIDE_SUPER_THANKS_DESC" = "Masquer la bannière 'Acheter des Super Thanks' dans les Shorts."; +"HIDE_SUBCRIPTIONS" = "Masquer le bouton Abonnements"; +"HIDE_SUBCRIPTIONS_DESC" = "Masque le bouton Abonnements qui apparaît lors de la pause."; + "DISABLE_RESUME_TO_SHORTS" = "Désactiver la reprise des Shorts"; "DISABLE_RESUME_TO_SHORTS_DESC" = "Si vous fermez YouTube en regardant des Shorts, ils ne seront pas automatiquement lus la prochaine fois que vous lancerez YouTube."; -// Theme -"THEME_OPTIONS" = "Options du thème"; - -"OLED_DARK_THEME" = "Mode sombre OLED (Expérimental)"; -"OLED_DARK_THEME_2" = "Mode sombre OLED"; -"OLED_DARK_THEME_DESC" = "Peut ne pas fonctionner correctement dans certains cas. Un redémarrage de l'application est nécessaire après avoir activé/désactivé cette option."; - -"OLD_DARK_THEME" = "Ancien thème sombre"; -"OLD_DARK_THEME_DESC" = "Ancien thème sombre de YouTube (thème gris). Un redémarrage de l'application est nécessaire."; - -"DEFAULT_THEME" = "Défaut"; -"DEFAULT_THEME_DESC" = "Thème plus sombre par défaut de YouTube. Un redémarrage de l'application est nécessaire."; - -"OLED_KEYBOARD" = "Clavier OLED (Expérimental)"; -"OLED_KEYBOARD_DESC" = "Peut ne pas fonctionner correctement dans certains cas. Un redémarrage de l'application est nécessaire."; - // Miscellaneous "MISCELLANEOUS" = "Divers"; @@ -118,20 +106,17 @@ "DISABLE_HINTS" = "Désactiver les astuces"; "DISABLE_HINTS_DESC" = "Désactiver les astuces de fonctionnalités de YouTube qui s'affichent habituellement lorsque l'application est fraîchement installée."; -"ENABLE_FLEX" = "Activer FLEX"; -"ENABLE_FLEX_DESC" = "Activer FLEX pour déboguer (non recommandé). Laissez-le désactivé à moins que vous sachiez ce que vous faites."; - "ENABLE_YT_STARTUP_ANIMATION" = "Activer l'animation de démarrage de YouTube"; "ENABLE_YT_STARTUP_ANIMATION_DESC" = ""; -"FIX_GOOGLE_SIGNIN" = "Réparer l'identification Google (pour les utilisateurs de TrollStore uniquement)"; -"FIX_GOOGLE_SIGNIN_DESC" = "Activez cette option uniquement si vous ne pouvez pas vous connecter avec votre compte Google et que l'application a été installée via TrollStore. Si vous pouvez vous connecter normalement, laissez-la désactivée. Un redémarrage de l'application est nécessaire."; - "HIDE_CHIP_BAR" = "Masquer la barre supérieure"; "HIDE_CHIP_BAR_DESC" = "Masquer la barre supérieure dans les fils d'actualité (Tendances, Musique, Gaming...) et les fils d'abonnement (Toutes les vidéos, Poursuivre la lecture...). Un redémarrage de l'application est nécessaire."; "HIDE_PLAY_NEXT_IN_QUEUE" = "Hide \"Play next in queue\""; -"HIDE_PLAY_NEXT_IN_QUEUE_DESC" = "Hide the premium \"Play next in queue\" option in video context menus"; +"HIDE_PLAY_NEXT_IN_QUEUE_DESC" = ""; + +"IPHONE_LAYOUT" = "Disposition iPhone"; +"IPHONE_LAYOUT_DESC" = "Basculer pour utiliser la disposition iPhone. Un redémarrage de l'application est nécessaire."; "NEW_MINIPLAYER_STYLE" = "Nouveau style de barre de mini-lecteur (BigYTMiniPlayer)"; "NEW_MINIPLAYER_STYLE_DESC" = "Un redémarrage de l'application est nécessaire"; @@ -139,5 +124,8 @@ "YT_RE_EXPLORE" = "Remplacer l'onglet Shorts par l'onglet Explorer (YTReExplore)"; "YT_RE_EXPLORE_DESC" = "Un redémarrage de l'application est nécessaire"; -"IPHONE_LAYOUT" = "Disposition iPhone"; -"IPHONE_LAYOUT_DESC" = "Basculer pour utiliser la disposition iPhone. Un redémarrage de l'application est nécessaire."; +"ENABLE_FLEX" = "Activer FLEX"; +"ENABLE_FLEX_DESC" = "Activer FLEX pour déboguer (non recommandé). Laissez-le désactivé à moins que vous sachiez ce que vous faites."; + +"FIX_GOOGLE_SIGNIN" = "Réparer l'identification Google (pour les utilisateurs de TrollStore uniquement)"; +"FIX_GOOGLE_SIGNIN_DESC" = "Activez cette option uniquement si vous ne pouvez pas vous connecter avec votre compte Google et que l'application a été installée via TrollStore. Si vous pouvez vous connecter normalement, laissez-la désactivée. Un redémarrage de l'application est nécessaire."; diff --git a/Localizations/uYouPlus.bundle/he.lproj/Localizable.strings b/Localizations/uYouPlus.bundle/he.lproj/Localizable.strings index 10b3580..bbf086b 100644 --- a/Localizations/uYouPlus.bundle/he.lproj/Localizable.strings +++ b/Localizations/uYouPlus.bundle/he.lproj/Localizable.strings @@ -1,30 +1,55 @@ -// Settings -"VERSION" = "uYouPlus's version: %@"; -"VERSION_CHECK" = "Tap to check for update!"; +// About +"ABOUT" = "About"; + +"VERSION" = "Version"; +"VERSION_CHECK" = "Tap to check for updates!"; + +"REPORT_AN_ISSUE" = "Report an issue"; +"ADD_TITLE" = "Add your title here..."; + +"QUIT_YOUTUBE" = "Quit YouTube"; + +"RESTART_YOUTUBE" = "Restart YouTube to apply changes"; + +// App appearance +"APP_THEME" = "App appearance"; +"THEME_OPTIONS" = "Theme options"; + +"DARK_THEME" = "Dark theme"; + +"DEFAULT_THEME" = "Default"; +"DEFAULT_THEME_DESC" = ""; + +"OLD_DARK_THEME" = "Lighter grey"; +"OLD_DARK_THEME_DESC" = "YouTube's old dark theme"; + +"OLED_DARK_THEME" = "תצוגה כהה OLED (נסיוני)"; +"OLED_DARK_THEME_2" = "תצוגה כהה OLED"; +"OLED_DARK_THEME_DESC" = "עלול לא לעבוד נכון בחלק מהמקרים, נדרש לפתוח מחדש את היישום."; + +"OLED_KEYBOARD" = "מקלדת כהה OLED (נסיוני)"; +"OLED_DARKMODE_DESC" = "עלול לא לעבוד נכון בחלק מהמקרים, נדרש לפתוח מחדש את היישום."; // Video player options -"VIDEO_PLAYER_OPTIONS" = "Video Player Options"; - -"AUTO_FULLSCREEN" = "מסך מלא אוטומטי (YTAutoFullScreen)"; -"AUTO_FULLSCREEN_DESC" = "נגן סרטונים במסך מלא אוטומטית."; +"VIDEO_PLAYER_OPTIONS" = "Video player options"; "DISABLE_DOUBLE_TAP_TO_SEEK" = "Disable double tap to seek"; "DISABLE_DOUBLE_TAP_TO_SEEK_DESC" = ""; "SNAP_TO_CHAPTER" = "Disable snap to chapter"; -"SNAP_TO_CHAPTER_DESC" = "Disable auto snap to chapter when seeking in videos. App restart is required."; +"SNAP_TO_CHAPTER_DESC" = "Disables auto snap to chapter when seeking through videos"; "PINCH_TO_ZOOM" = "Disable pinch to zoom"; -"PINCH_TO_ZOOM_DESC" = "App restart is required."; +"PINCH_TO_ZOOM_DESC" = ""; "YT_MINIPLAYER" = "אפשר את הנגן הקטן עבור כל הסרטונים ב-YouTube"; "YT_MINIPLAYER_DESC" = "סרטוני ילדים לדוגמה."; -"STOCK_VOLUME_HUD" = "Use iOS stock volume HUD"; +"STOCK_VOLUME_HUD" = "Use stock iOS volume HUD"; "STOCK_VOLUME_HUD_DESC" = ""; // Video controls overlay options -"VIDEO_CONTROLS_OVERLAY_OPTIONS" = "Video Controls Overlay Options"; +"VIDEO_CONTROLS_OVERLAY_OPTIONS" = "Video controls overlay options"; "HIDE_AUTOPLAY_SWITCH" = "הסתר את כפתור ההפעלה האוטומטית"; "HIDE_AUTOPLAY_SWITCH_DESC" = "הסתר את כפתור ההפעלה האוטומטית בתצוגת השליטה בסרטון."; @@ -35,11 +60,11 @@ "HIDE_HUD_MESSAGES" = "הסתר הודעות קופצות"; "HIDE_HUD_MESSAGES_DESC" = "לדוגמה: כתוביות מופעלות/מושבתות, הופעל סרטון בלופ,..."; -"HIDE_PAID_PROMOTION_CARDS" = "Hide Paid Promotion banner"; -"HIDE_PAID_PROMOTION_CARDS_DESC" = "Hide the 'Includes Paid Promotions' banner in some videos."; +"HIDE_PAID_PROMOTION_CARDS" = "Hide paid promotion banner"; +"HIDE_PAID_PROMOTION_CARDS_DESC" = ""; -"HIDE_CHANNEL_WATERMARK" = "Hide Channel Watermark"; -"HIDE_CHANNEL_WATERMARK_DESC" = "Hide channel's watermark in video controls overlay. App restart is required."; +"HIDE_CHANNEL_WATERMARK" = "Hide channel watermark"; +"HIDE_CHANNEL_WATERMARK_DESC" = ""; "HIDE_PREVIOUS_AND_NEXT_BUTTON" = "הסתר את הקודם והבא"; "HIDE_PREVIOUS_AND_NEXT_BUTTON_DESC" = "הסתר את כפתורי הקודם והבא בתצוגת השליטה בסרטון."; @@ -47,63 +72,26 @@ "REPLACE_PREVIOUS_NEXT_BUTTON" = "החלף את הלחצן הקודם והבא"; "REPLACE_PREVIOUS_NEXT_BUTTON_DESC" = "החלף את הלחצן הקודם והבא בלחצן הרצה קדימה והאחורה. נדרשת הפעלה מחדש של האפליקציה."; +"RED_PROGRESS_BAR" = "Red progress bar"; +"RED_PROGRESS_BAR_DESC" = ""; + "HIDE_HOVER_CARD" = "הסתר כרטיסיות סיום סרטון (YTNoHoverCards)"; "HIDE_HOVER_CARD_DESC" = "הסתר את מסכי הסיום של סרטונים המציגים את הערוץ וסרטונים נוספים."; -"HIDE_RIGHT_PANEL" = "Hide the right panel in fullscreen mode"; -"HIDE_RIGHT_PANEL_DESC" = "App restart is required."; - -"RED_PROGRESS_BAR" = "Red progress bar"; -"RED_PROGRESS_BAR_DESC" = "Bring back the red progress bar. App restart is required."; - -"DONT_EAT_MY_CONTENT" = "מנע חריץ/אי בתוכן וידאו 2:1 (DontEatMyContent)"; -"DONT_EAT_MY_CONTENT_DESC" = "מנע מהחריץ/האי הדינמי ללעוס תוכן וידאו 2:1 ב-YouTube. נדרשת הפעלה מחדש של האפליקציה."; +"HIDE_RIGHT_PANEL" = "Hide engagement panels in full screen"; +"HIDE_RIGHT_PANEL_DESC" = "Hides right panels (e.g., comments, live chat, etc.) in landscape"; // Shorts controls overlay options -"SHORTS_CONTROLS_OVERLAY_OPTIONS" = "Shorts Controls Overlay Options"; +"SHORTS_CONTROLS_OVERLAY_OPTIONS" = "Shorts controls overlay options"; -"HIDE_SHORTS_CHANNEL_AVATAR" = "Hide Shorts channel's avatar"; -"HIDE_SHORTS_CHANNEL_AVATAR_DESC" = ""; +"HIDE_SUPER_THANKS" = "Hide \"Buy Super Thanks\" banner"; +"HIDE_SUPER_THANKS_DESC" = ""; -"HIDE_SHORTS_DISLIKE_BUTTON" = "Hide Shorts dislike button"; -"HIDE_SHORTS_DISLIKE_BUTTON_DESC" = ""; - -"HIDE_SHORTS_COMMENT_BUTTON" = "Hide Shorts comment button"; -"HIDE_SHORTS_COMMENT_BUTTON_DESC" = ""; - -"HIDE_SHORTS_REMIX_BUTTON" = "Hide Shorts remix button"; -"HIDE_SHORTS_REMIX_BUTTON_DESC" = ""; - -"HIDE_SHORTS_SHARE_BUTTON" = "Hide Shorts share button"; -"HIDE_SHORTS_SHARE_BUTTON_DESC" = ""; - -"HIDE_UYOU_SHORTS_DOWNLOAD_BUTTON" = "Hide uYou's buttons"; -"HIDE_UYOU_SHORTS_DOWNLOAD_BUTTON_DESC" = "Hide uYou's download buttons in Shorts."; - -"HIDE_SUBCRIPTIONS" = "Hide Subscriptions button"; -"HIDE_SUBCRIPTIONS_DESC" = "Hide Subscriptions button which shows up when paused."; - -"HIDE_SUPER_THANKS" = "Hide 'Buy Super Thanks' banner"; -"HIDE_SUPER_THANKS_DESC" = "Hide the 'Buy Super Thanks' banner in Shorts."; +"HIDE_SUBCRIPTIONS" = "Hide subscriptions button"; +"HIDE_SUBCRIPTIONS_DESC" = ""; "DISABLE_RESUME_TO_SHORTS" = "Disable resume to Shorts"; -"DISABLE_RESUME_TO_SHORTS_DESC" = "If you close YouTube while watching Shorts, Shorts won‘t automatically play next time you launch YouTube."; - -// Theme -"THEME_OPTIONS" = "Theme Options"; - -"OLED_DARK_THEME" = "תצוגה כהה OLED (נסיוני)"; -"OLED_DARK_THEME_2" = "תצוגה כהה OLED"; -"OLED_DARK_THEME_DESC" = "עלול לא לעבוד נכון בחלק מהמקרים, נדרש לפתוח מחדש את היישום."; - -"OLD_DARK_THEME" = "Old dark theme"; -"OLD_DARK_THEME_DESC" = "Old YouTube's dark theme (grey theme). App restart is required."; - -"DEFAULT_THEME" = "Default"; -"DEFAULT_THEME_DESC" = "Default dark(er) theme of YouTube. App restart is required."; - -"OLED_KEYBOARD" = "מקלדת כהה OLED (נסיוני)"; -"OLED_DARKMODE_DESC" = "עלול לא לעבוד נכון בחלק מהמקרים, נדרש לפתוח מחדש את היישום."; +"DISABLE_RESUME_TO_SHORTS_DESC" = "If you close YouTube while watching Shorts, this prevents it from automatically resuming the next time you reopen the app"; // Miscellaneous "MISCELLANEOUS" = "Miscellaneous"; @@ -116,22 +104,19 @@ "MSG_CANCEL" = "ביטול"; "DISABLE_HINTS" = "Disable hints"; -"DISABLE_HINTS_DESC" = "Disable feature hints from YouTube that usually display when the app is freshly installed."; - -"ENABLE_FLEX" = "Enable FLEX"; -"ENABLE_FLEX_DESC" = "Enable FLEX for debugging (not recommended). Leave this off unless you know what you are doing."; +"DISABLE_HINTS_DESC" = "Disables YouTube feature hints that are displayed when the app is newly installed"; "ENABLE_YT_STARTUP_ANIMATION" = "Enable YouTube startup animation"; "ENABLE_YT_STARTUP_ANIMATION_DESC" = ""; -"FIX_GOOGLE_SIGNIN" = "תקן כניסה של Google (עבור משתמש TrollStore בלבד)"; -"FIX_GOOGLE_SIGNIN_DESC" = "הפעל אפשרות זו רק כאשר אינך יכול להיכנס עם חשבון Google שלך והאפליקציה הותקנה דרך TrollStore. אם אתה יכול להתחבר כרגיל, השאר אותה מושבתת. נדרשת הפעלה מחדש של האפליקציה."; - -"HIDE_CHIP_BAR" = "Hide the Upper bar"; -"HIDE_CHIP_BAR_DESC" = "Hide Upper bar in the Home feeds (Trends, Music, Gaming...) and Subcription feeds (All videos, Continue watching...). App restart is required."; +"HIDE_CHIP_BAR" = "Hide upper bar"; +"HIDE_CHIP_BAR_DESC" = "Hides the upper bar in home and subscription feeds (e.g., All videos, Continue watching, etc.)"; "HIDE_PLAY_NEXT_IN_QUEUE" = "Hide \"Play next in queue\""; -"HIDE_PLAY_NEXT_IN_QUEUE_DESC" = "Hide the premium \"Play next in queue\" option in video context menus"; +"HIDE_PLAY_NEXT_IN_QUEUE_DESC" = ""; + +"IPHONE_LAYOUT" = "Force iPhone layout"; +"IPHONE_LAYOUT_DESC" = ""; "NEW_MINIPLAYER_STYLE" = "עיצוב נגן קטן חדש (BigYTMiniPlayer)"; "NEW_MINIPLAYER_STYLE_DESC" = "נדרש לפתוח מחדש את היישום."; @@ -139,5 +124,8 @@ "YT_RE_EXPLORE" = "החלף את לשונית ה-Shorts בלשונית Explore (YTReExplore)"; "YT_RE_EXPLORE_DESC" = "נדרש לפתוח מחדש את היישום."; -"IPHONE_LAYOUT" = "iPhone Layout"; -"IPHONE_LAYOUT_DESC" = "Toggle to use the iPhone Layout. App restart is required."; +"ENABLE_FLEX" = "Enable FLEX"; +"ENABLE_FLEX_DESC" = "Enables FLEX for debugging"; + +"FIX_GOOGLE_SIGNIN" = "תקן כניסה של Google (עבור משתמש TrollStore בלבד)"; +"FIX_GOOGLE_SIGNIN_DESC" = "הפעל אפשרות זו רק כאשר אינך יכול להיכנס עם חשבון Google שלך והאפליקציה הותקנה דרך TrollStore. אם אתה יכול להתחבר כרגיל, השאר אותה מושבתת. נדרשת הפעלה מחדש של האפליקציה."; diff --git a/Localizations/uYouPlus.bundle/hu.lproj/Localizable.strings b/Localizations/uYouPlus.bundle/hu.lproj/Localizable.strings index fbc24a3..e4834cd 100644 --- a/Localizations/uYouPlus.bundle/hu.lproj/Localizable.strings +++ b/Localizations/uYouPlus.bundle/hu.lproj/Localizable.strings @@ -1,21 +1,46 @@ -// Settings -"VERSION" = "uYouPlus's version: %@"; -"VERSION_CHECK" = "Tap to check for update!"; +// About +"ABOUT" = "About"; + +"VERSION" = "Version"; +"VERSION_CHECK" = "Tap to check for updates!"; + +"REPORT_AN_ISSUE" = "Report an issue"; +"ADD_TITLE" = "Add your title here..."; + +"QUIT_YOUTUBE" = "Quit YouTube"; + +"RESTART_YOUTUBE" = "Restart YouTube to apply changes"; + +// App appearance +"APP_THEME" = "App appearance"; +"THEME_OPTIONS" = "Theme Options"; + +"DARK_THEME" = "Dark theme"; + +"DEFAULT_THEME" = "Default"; +"DEFAULT_THEME_DESC" = ""; + +"OLD_DARK_THEME" = "Lighter grey"; +"OLD_DARK_THEME_DESC" = "YouTube's old dark theme"; + +"OLED_DARK_THEME" = "OLED sötét mód (Kísérleti)"; +"OLED_DARK_THEME_2" = "OLED sötét mód"; +"OLED_DARK_THEME_DESC" = "Előfordulhat, hogy bizonyos esetekben nem működik megfelelően. Az alkalmazás újraindítása szükséges az opció engedélyezése/letiltása után."; + +"OLED_KEYBOARD" = "OLED Billentyűzet (Kísérleti)"; +"OLED_KEYBOARD_DESC" = "Előfordulhat, hogy bizonyos esetekben nem működik megfelelően. Az alkalmazás újraindítása szükséges az opció engedélyezése/letiltása után."; // Video player options -"VIDEO_PLAYER_OPTIONS" = "Video Player Options"; - -"AUTO_FULLSCREEN" = "Automatikus teljes képernyő (YTAutoFullScreen)"; -"AUTO_FULLSCREEN_DESC" = "Videók automatikus lejátszása teljes képernyőn."; +"VIDEO_PLAYER_OPTIONS" = "Video player options"; "DISABLE_DOUBLE_TAP_TO_SEEK" = "Disable double tap to seek"; "DISABLE_DOUBLE_TAP_TO_SEEK_DESC" = ""; "SNAP_TO_CHAPTER" = "Disable snap to chapter"; -"SNAP_TO_CHAPTER_DESC" = "Disable auto snap to chapter when seeking in videos. App restart is required."; +"SNAP_TO_CHAPTER_DESC" = "Disables auto snap to chapter when seeking through videos"; "PINCH_TO_ZOOM" = "Disable pinch to zoom"; -"PINCH_TO_ZOOM_DESC" = "App restart is required."; +"PINCH_TO_ZOOM_DESC" = ""; "YT_MINIPLAYER" = "Engedélyezze a Minilejátszót az összes YouTube-videóhoz"; "YT_MINIPLAYER_DESC" = "Például gyermekvideók."; @@ -24,7 +49,7 @@ "STOCK_VOLUME_HUD_DESC" = ""; // Video controls overlay options -"VIDEO_CONTROLS_OVERLAY_OPTIONS" = "Video Controls Overlay Options"; +"VIDEO_CONTROLS_OVERLAY_OPTIONS" = "Video controls overlay options"; "HIDE_AUTOPLAY_SWITCH" = "Az automatikus lejátszás kapcsoló elrejtése"; "HIDE_AUTOPLAY_SWITCH_DESC" = "Az Automatikus lejátszás kapcsoló elrejtése a videovezérlők fedvényében."; @@ -38,8 +63,8 @@ "HIDE_PAID_PROMOTION_CARDS" = "Fizetett promóciós szalaghirdetés elrejtése"; "HIDE_PAID_PROMOTION_CARDS_DESC" = "A „Fizetett promóciókat tartalmaz” szalaghirdetés elrejtése egyes videóknál."; -"HIDE_CHANNEL_WATERMARK" = "Hide Channel Watermark"; -"HIDE_CHANNEL_WATERMARK_DESC" = "Hide channel's watermark in video controls overlay. App restart is required."; +"HIDE_CHANNEL_WATERMARK" = "Hide channel watermark"; +"HIDE_CHANNEL_WATERMARK_DESC" = ""; "HIDE_PREVIOUS_AND_NEXT_BUTTON" = "Előző és Következő gomb elrejtése"; "HIDE_PREVIOUS_AND_NEXT_BUTTON_DESC" = "Az Előző és a Következő gomb elrejtése a videóvezérlők fedvényén."; @@ -47,63 +72,26 @@ "REPLACE_PREVIOUS_NEXT_BUTTON" = "Előző és Következő gomb cseréje"; "REPLACE_PREVIOUS_NEXT_BUTTON_DESC" = "Cserélje ki az Előző és Következő gombot Gyors előre és visszatekerés gombbal. Az alkalmazás újraindítása szükséges."; +"RED_PROGRESS_BAR" = "Red progress bar"; +"RED_PROGRESS_BAR_DESC" = ""; + "HIDE_HOVER_CARD" = "A záróképernyők lebegő kártyáinak elrejtése (YTNoHoverCards)"; "HIDE_HOVER_CARD_DESC" = "Az alkotói záróképernyők (bélyegképek) elrejtése a videók végén."; -"HIDE_RIGHT_PANEL" = "Hide the right panel in fullscreen mode"; -"HIDE_RIGHT_PANEL_DESC" = "App restart is required."; - -"RED_PROGRESS_BAR" = "Red progress bar"; -"RED_PROGRESS_BAR_DESC" = "Bring back the red progress bar. App restart is required."; - -"DONT_EAT_MY_CONTENT" = "Notch/Island megelőzése 2:1 arányú videótartalomnál (DontEatMyContent)"; -"DONT_EAT_MY_CONTENT_DESC" = "Akadályozza meg, hogy a Notch/Dynamic Island 2:1 arányú videótartalmat csámcsogjon a YouTube-on. Az alkalmazás újraindítása szükséges."; +"HIDE_RIGHT_PANEL" = "Hide engagement panels in full screen"; +"HIDE_RIGHT_PANEL_DESC" = "Hides right panels (e.g., comments, live chat, etc.) in landscape"; // Shorts controls overlay options -"SHORTS_CONTROLS_OVERLAY_OPTIONS" = "Shorts Controls Overlay Options"; +"SHORTS_CONTROLS_OVERLAY_OPTIONS" = "Shorts controls overlay options"; -"HIDE_SHORTS_CHANNEL_AVATAR" = "Hide Shorts channel's avatar"; -"HIDE_SHORTS_CHANNEL_AVATAR_DESC" = ""; +"HIDE_SUPER_THANKS" = "Hide \"Buy Super Thanks\" banner"; +"HIDE_SUPER_THANKS_DESC" = ""; -"HIDE_SHORTS_DISLIKE_BUTTON" = "Hide Shorts dislike button"; -"HIDE_SHORTS_DISLIKE_BUTTON_DESC" = ""; - -"HIDE_SHORTS_COMMENT_BUTTON" = "Hide Shorts comment button"; -"HIDE_SHORTS_COMMENT_BUTTON_DESC" = ""; - -"HIDE_SHORTS_REMIX_BUTTON" = "Hide Shorts remix button"; -"HIDE_SHORTS_REMIX_BUTTON_DESC" = ""; - -"HIDE_SHORTS_SHARE_BUTTON" = "Hide Shorts share button"; -"HIDE_SHORTS_SHARE_BUTTON_DESC" = ""; - -"HIDE_UYOU_SHORTS_DOWNLOAD_BUTTON" = "Hide uYou's buttons"; -"HIDE_UYOU_SHORTS_DOWNLOAD_BUTTON_DESC" = "Hide uYou's download buttons in Shorts."; - -"HIDE_SUBCRIPTIONS" = "Hide Subscriptions button"; -"HIDE_SUBCRIPTIONS_DESC" = "Hide Subscriptions button which shows up when paused."; - -"HIDE_SUPER_THANKS" = "Hide 'Buy Super Thanks' banner"; -"HIDE_SUPER_THANKS_DESC" = "Hide the 'Buy Super Thanks' banner in Shorts."; +"HIDE_SUBCRIPTIONS" = "Hide subscriptions button"; +"HIDE_SUBCRIPTIONS_DESC" = ""; "DISABLE_RESUME_TO_SHORTS" = "Disable resume to Shorts"; -"DISABLE_RESUME_TO_SHORTS_DESC" = "If you close YouTube while watching Shorts, Shorts won‘t automatically play next time you launch YouTube."; - -// Theme -"THEME_OPTIONS" = "Theme Options"; - -"OLED_DARK_THEME" = "OLED sötét mód (Kísérleti)"; -"OLED_DARK_THEME_2" = "OLED sötét mód"; -"OLED_DARK_THEME_DESC" = "Előfordulhat, hogy bizonyos esetekben nem működik megfelelően. Az alkalmazás újraindítása szükséges az opció engedélyezése/letiltása után."; - -"OLD_DARK_THEME" = "Old dark theme"; -"OLD_DARK_THEME_DESC" = "Old YouTube's dark theme (grey theme). App restart is required."; - -"DEFAULT_THEME" = "Default"; -"DEFAULT_THEME_DESC" = "Default dark(er) theme of YouTube. App restart is required."; - -"OLED_KEYBOARD" = "OLED Billentyűzet (Kísérleti)"; -"OLED_KEYBOARD_DESC" = "Előfordulhat, hogy bizonyos esetekben nem működik megfelelően. Az alkalmazás újraindítása szükséges az opció engedélyezése/letiltása után."; +"DISABLE_RESUME_TO_SHORTS_DESC" = "If you close YouTube while watching Shorts, this prevents it from automatically resuming the next time you reopen the app"; // Miscellaneous "MISCELLANEOUS" = "Miscellaneous"; @@ -116,22 +104,19 @@ "MSG_CANCEL" = "Visszavon"; "DISABLE_HINTS" = "Disable hints"; -"DISABLE_HINTS_DESC" = "Disable feature hints from YouTube that usually display when the app is freshly installed."; - -"ENABLE_FLEX" = "Enable FLEX"; -"ENABLE_FLEX_DESC" = "Enable FLEX for debugging (not recommended). Leave this off unless you know what you are doing."; +"DISABLE_HINTS_DESC" = "Disables YouTube feature hints that are displayed when the app is newly installed"; "ENABLE_YT_STARTUP_ANIMATION" = "Enable YouTube startup animation"; "ENABLE_YT_STARTUP_ANIMATION_DESC" = ""; -"FIX_GOOGLE_SIGNIN" = "A Google bejelentkezés javítása (csak a TrollStore-felhasználók számára)"; -"FIX_GOOGLE_SIGNIN_DESC" = "Csak akkor kapcsolja be ezt az opciót, ha nem tud bejelentkezni Google-fiókjával, és az alkalmazást a TrollStore-on keresztül telepítették. Ha normálisan be tud jelentkezni, tartsa letiltva. Az alkalmazás újraindítása szükséges."; - -"HIDE_CHIP_BAR" = "Hide the Upper bar"; -"HIDE_CHIP_BAR_DESC" = "Hide Upper bar in the Home feeds (Trends, Music, Gaming...) and Subcription feeds (All videos, Continue watching...). App restart is required."; +"HIDE_CHIP_BAR" = "Hide upper bar"; +"HIDE_CHIP_BAR_DESC" = "Hides the upper bar in home and subscription feeds (e.g., All videos, Continue watching, etc.)"; "HIDE_PLAY_NEXT_IN_QUEUE" = "Hide \"Play next in queue\""; -"HIDE_PLAY_NEXT_IN_QUEUE_DESC" = "Hide the premium \"Play next in queue\" option in video context menus"; +"HIDE_PLAY_NEXT_IN_QUEUE_DESC" = ""; + +"IPHONE_LAYOUT" = "Force iPhone layout"; +"IPHONE_LAYOUT_DESC" = ""; "NEW_MINIPLAYER_STYLE" = "Új minilejátszó sáv (BigYTMiniPlayer)"; "NEW_MINIPLAYER_STYLE_DESC" = "Az alkalmazás újraindítása szükséges."; @@ -139,5 +124,8 @@ "YT_RE_EXPLORE" = "Cserélje le a Shorts fület a Felfedezés fülre (YTReExplore)"; "YT_RE_EXPLORE_DESC" = "Az alkalmazás újraindítása szükséges."; -"IPHONE_LAYOUT" = "iPhone Layout"; -"IPHONE_LAYOUT_DESC" = "Toggle to use the iPhone Layout. App restart is required."; +"ENABLE_FLEX" = "Enable FLEX"; +"ENABLE_FLEX_DESC" = "Enables FLEX for debugging"; + +"FIX_GOOGLE_SIGNIN" = "A Google bejelentkezés javítása (csak a TrollStore-felhasználók számára)"; +"FIX_GOOGLE_SIGNIN_DESC" = "Csak akkor kapcsolja be ezt az opciót, ha nem tud bejelentkezni Google-fiókjával, és az alkalmazást a TrollStore-on keresztül telepítették. Ha normálisan be tud jelentkezni, tartsa letiltva. Az alkalmazás újraindítása szükséges."; diff --git a/Localizations/uYouPlus.bundle/it.lproj/Localizable.strings b/Localizations/uYouPlus.bundle/it.lproj/Localizable.strings index d8593bb..8da4a2f 100644 --- a/Localizations/uYouPlus.bundle/it.lproj/Localizable.strings +++ b/Localizations/uYouPlus.bundle/it.lproj/Localizable.strings @@ -1,13 +1,38 @@ -// Settings +// About +"ABOUT" = "About"; + "VERSION" = "versione di uYouPlus: %@"; "VERSION_CHECK" = "Clicca qui per cercare gli aggiornamenti!"; +"REPORT_AN_ISSUE" = "Report an issue"; +"ADD_TITLE" = "Add your title here..."; + +"QUIT_YOUTUBE" = "Quit YouTube"; + +"RESTART_YOUTUBE" = "Restart YouTube to apply changes"; + +// App appearance +"APP_THEME" = "App appearance"; +"THEME_OPTIONS" = "Opzioni Tema"; + +"DARK_THEME" = "Dark theme"; + +"DEFAULT_THEME" = "Predefinito"; +"DEFAULT_THEME_DESC" = "Tema scuro predefinito di YouTube. È richiesto il riavvio dell'app."; + +"OLD_DARK_THEME" = "Vecchio Tema Scuro (Sperimentale)"; +"OLD_DARK_THEME_DESC" = "Tema scuro del vecchio YouTube (tema grigio). È richiesto il riavvio dell'app."; + +"OLED_DARK_THEME" = "Modalità Scura OLED (Sperimentale)"; +"OLED_DARK_THEME_2" = "Modalità Scura OLED"; +"OLED_DARK_THEME_DESC" = "Potrebbe non funzionare correttamente in alcuni scenari. È richiesto un riavvio dell'app dopo aver abilitato/disabilitato questa opzione."; + +"OLED_KEYBOARD" = "Tastiera OLED (Sperimentale)"; +"OLED_KEYBOARD_DESC" = "Potrebbe non funzionare correttamente in alcuni scenari. È richiesto un riavvio dell'app."; + // Video player options "VIDEO_PLAYER_OPTIONS" = "Opzioni Video Player"; -"AUTO_FULLSCREEN" = "Auto Schermo Intero (YTAutoFullScreen)"; -"AUTO_FULLSCREEN_DESC" = "Riproduci automaticamente video a tutto schermo."; - "DISABLE_DOUBLE_TAP_TO_SEEK" = "Disable double tap to seek"; "DISABLE_DOUBLE_TAP_TO_SEEK_DESC" = ""; @@ -47,64 +72,27 @@ "REPLACE_PREVIOUS_NEXT_BUTTON" = "Sostituisci i Bottoni Precedente e Successivo"; "REPLACE_PREVIOUS_NEXT_BUTTON_DESC" = "Sostituisci i Bottoni Precedente e Successivo con Avanti veloce e Indietro veloce. È richiesto un riavvio dell'app."; +"RED_PROGRESS_BAR" = "Barra di avanzamento rossa"; +"RED_PROGRESS_BAR_DESC" = "Ripristina la barra di avanzamento rossa. È richiesto il riavvio dell'app."; + "HIDE_HOVER_CARD" = "Nascondi i riquadri in sovrimpressione a fine video (YTNoHoverCards)"; "HIDE_HOVER_CARD_DESC" = "Nasconde i riquadri (miniature) a fine video proposti dall'autore."; "HIDE_RIGHT_PANEL" = "Nascondi il pannello di destra in modalità a schermo intero"; "HIDE_RIGHT_PANEL_DESC" = "È richiesto un riavvio dell'app."; -"RED_PROGRESS_BAR" = "Barra di avanzamento rossa"; -"RED_PROGRESS_BAR_DESC" = "Ripristina la barra di avanzamento rossa. È richiesto il riavvio dell'app."; - -"DONT_EAT_MY_CONTENT" = "Previeni la Tacca/Isola sui Contenuti Video 2:1 (DontEatMyContent)"; -"DONT_EAT_MY_CONTENT_DESC" = "Previene alla Tacca/Isola di nascondere parte dei Contenuti Video 2:1 in YouTube. È richiesto un riavvio dell'app."; - // Shorts controls overlay options "SHORTS_CONTROLS_OVERLAY_OPTIONS" = "Opzioni Sovrimpressione (Overlay) Shorts"; -"HIDE_SHORTS_CHANNEL_AVATAR" = "Nascondi l'avatar del canale negli Shorts"; -"HIDE_SHORTS_CHANNEL_AVATAR_DESC" = ""; - -"HIDE_SHORTS_DISLIKE_BUTTON" = "Nascondi il bottone dislike dagli Shorts"; -"HIDE_SHORTS_DISLIKE_BUTTON_DESC" = ""; - -"HIDE_SHORTS_COMMENT_BUTTON" = "Nascondi il bottone commenti dagli Shorts"; -"HIDE_SHORTS_COMMENT_BUTTON_DESC" = ""; - -"HIDE_SHORTS_REMIX_BUTTON" = "Nascondi il bottone remix dagli Shorts"; -"HIDE_SHORTS_REMIX_BUTTON_DESC" = ""; - -"HIDE_SHORTS_SHARE_BUTTON" = "Nascondi il bottone condividi dagli Shorts"; -"HIDE_SHORTS_SHARE_BUTTON_DESC" = ""; - -"HIDE_UYOU_SHORTS_DOWNLOAD_BUTTON" = "Nascondi il uYou's bottone download Shorts"; -"HIDE_UYOU_SHORTS_DOWNLOAD_BUTTON_DESC" = "Nascondi il bottone uYou's download dagli Shorts."; - -"HIDE_SUBCRIPTIONS" = "Hide Subscriptions button"; -"HIDE_SUBCRIPTIONS_DESC" = "Hide Subscriptions button which shows up when paused."; - "HIDE_SUPER_THANKS" = "Nascondi 'Buy Super Thanks'"; "HIDE_SUPER_THANKS_DESC" = "Nascondi il banner 'Buy Super Thanks' dagli Shorts."; +"HIDE_SUBCRIPTIONS" = "Hide subscriptions button"; +"HIDE_SUBCRIPTIONS_DESC" = ""; + "DISABLE_RESUME_TO_SHORTS" = "Disabilita il resume dagli Shorts"; "DISABLE_RESUME_TO_SHORTS_DESC" = "Se chiudi YouTube mentre guardi uno Short, gli Short non verranno riprodotti automaticamente la prossima volta che avvii YouTube."; -// Theme -"THEME_OPTIONS" = "Opzioni Tema"; - -"OLED_DARK_THEME" = "Modalità Scura OLED (Sperimentale)"; -"OLED_DARK_THEME_2" = "Modalità Scura OLED"; -"OLED_DARK_THEME_DESC" = "Potrebbe non funzionare correttamente in alcuni scenari. È richiesto un riavvio dell'app dopo aver abilitato/disabilitato questa opzione."; - -"OLD_DARK_THEME" = "Vecchio Tema Scuro (Sperimentale)"; -"OLD_DARK_THEME_DESC" = "Tema scuro del vecchio YouTube (tema grigio). È richiesto il riavvio dell'app."; - -"DEFAULT_THEME" = "Predefinito"; -"DEFAULT_THEME_DESC" = "Tema scuro predefinito di YouTube. È richiesto il riavvio dell'app."; - -"OLED_KEYBOARD" = "Tastiera OLED (Sperimentale)"; -"OLED_KEYBOARD_DESC" = "Potrebbe non funzionare correttamente in alcuni scenari. È richiesto un riavvio dell'app."; - // Miscellaneous "MISCELLANEOUS" = "Varie"; @@ -118,20 +106,17 @@ "DISABLE_HINTS" = "Disabilita i suggerimenti"; "DISABLE_HINTS_DESC" = "Disabilita i suggerimenti sulle funzionalità di YouTube che di solito vengono visualizzati quando l'app viene appena installata."; -"ENABLE_FLEX" = "Abilita FLEX"; -"ENABLE_FLEX_DESC" = "Abilita FLEX per il debugging (sconsigliato). Lascialo disabilitato se non sai cosa stai facendo."; - "ENABLE_YT_STARTUP_ANIMATION" = "Abilita YouTube startup animazione"; "ENABLE_YT_STARTUP_ANIMATION_DESC" = ""; -"FIX_GOOGLE_SIGNIN" = "Ripara Google Sign in (solo per utenti TrollStore)"; -"FIX_GOOGLE_SIGNIN_DESC" = "Attiva questa opzione solo quando non puoi accedere al tuo account Google e l'app è stata installata attraverso TrollStore. Se puoi accedere normalmente, tienila disabilitata. È richiesto un riavvio dell'app."; - "HIDE_CHIP_BAR" = "Nascondi la barra superiore"; "HIDE_CHIP_BAR_DESC" = "Nascondi la barra superiore nella Home (Tendenze, Musica, Giochi...) e Iscrizioni (Tutti i video, Continua a guardare...). È richiesto il riavvio dell'app."; "HIDE_PLAY_NEXT_IN_QUEUE" = "Hide \"Play next in queue\""; -"HIDE_PLAY_NEXT_IN_QUEUE_DESC" = "Hide the premium \"Play next in queue\" option in video context menus"; +"HIDE_PLAY_NEXT_IN_QUEUE_DESC" = ""; + +"IPHONE_LAYOUT" = "iPhone Layout"; +"IPHONE_LAYOUT_DESC" = "Seleziona per usare il Layout Iphone. È richiesto il riavvio dell'app."; "NEW_MINIPLAYER_STYLE" = "Nuovo stile per la barra del miniplayer (BigYTMiniPlayer)"; "NEW_MINIPLAYER_STYLE_DESC" = "È richiesto un riavvio dell'app."; @@ -139,5 +124,8 @@ "YT_RE_EXPLORE" = "Sostituisci il tab Shorts con il tab Esplora (YTReExplore)"; "YT_RE_EXPLORE_DESC" = "È richiesto un riavvio dell'app."; -"IPHONE_LAYOUT" = "iPhone Layout"; -"IPHONE_LAYOUT_DESC" = "Seleziona per usare il Layout Iphone. È richiesto il riavvio dell'app."; +"ENABLE_FLEX" = "Abilita FLEX"; +"ENABLE_FLEX_DESC" = "Abilita FLEX per il debugging (sconsigliato). Lascialo disabilitato se non sai cosa stai facendo."; + +"FIX_GOOGLE_SIGNIN" = "Ripara Google Sign in (solo per utenti TrollStore)"; +"FIX_GOOGLE_SIGNIN_DESC" = "Attiva questa opzione solo quando non puoi accedere al tuo account Google e l'app è stata installata attraverso TrollStore. Se puoi accedere normalmente, tienila disabilitata. È richiesto un riavvio dell'app."; diff --git a/Localizations/uYouPlus.bundle/ja.lproj/Localizable.strings b/Localizations/uYouPlus.bundle/ja.lproj/Localizable.strings index 7b19710..caa5288 100644 --- a/Localizations/uYouPlus.bundle/ja.lproj/Localizable.strings +++ b/Localizations/uYouPlus.bundle/ja.lproj/Localizable.strings @@ -1,13 +1,38 @@ -// Settings +// About +"ABOUT" = "About"; + "VERSION" = "uYouPlusのバージョン: %@"; "VERSION_CHECK" = "ここをタップしてアップデートを確認!"; +"REPORT_AN_ISSUE" = "Report an issue"; +"ADD_TITLE" = "Add your title here..."; + +"QUIT_YOUTUBE" = "Quit YouTube"; + +"RESTART_YOUTUBE" = "Restart YouTube to apply changes"; + +// App appearance +"APP_THEME" = "App appearance"; +"THEME_OPTIONS" = "テーマの設定"; + +"DARK_THEME" = "Dark theme"; + +"DEFAULT_THEME" = "通常"; +"DEFAULT_THEME_DESC" = "通常のYouTubeのダークモードです。アプリの再起動が必要です。"; + +"OLD_DARK_THEME" = "従来のダークモード"; +"OLD_DARK_THEME_DESC" = "前のYouTubeのダークモードです。(グレー) アプリの再起動が必要です。"; + +"OLED_DARK_THEME" = "有機ELダークモード (実験的機能)"; +"OLED_DARK_THEME_2" = "有機ELダークモード"; +"OLED_DARK_THEME_DESC" = "正常に動作しない可能性があります。アプリの再起動が必要です。"; + +"OLED_KEYBOARD" = "有機ELキーボード (実験的機能)"; +"OLED_KEYBOARD_DESC" = "正常に動作しない可能性があります。この設定を変更した場合、アプリの再起動が必要です。"; + // Video controls overlay options "VIDEO_CONTROLS_OVERLAY_OPTIONS" = "動画コントロールのオーバーレイ設定"; -"AUTO_FULLSCREEN" = "自動でフルスクリーンにする (YTAutoFullScreen)"; -"AUTO_FULLSCREEN_DESC" = "動画を自動でフルスクリーンにします。"; - "DISABLE_DOUBLE_TAP_TO_SEEK" = "ダブルタップによるシークを無効化"; "DISABLE_DOUBLE_TAP_TO_SEEK_DESC" = ""; @@ -47,64 +72,27 @@ "REPLACE_PREVIOUS_NEXT_BUTTON" = "前後の動画を再生するボタンを置換"; "REPLACE_PREVIOUS_NEXT_BUTTON_DESC" = "次の動画と前の動画を再生するボタンをそれぞれ早送りと巻き戻しボタンに置き換えます。アプリの再起動が必要です。"; +"RED_PROGRESS_BAR" = "赤いプログレスバー"; +"RED_PROGRESS_BAR_DESC" = "赤いプログレスバーに戻します。アプリの再起動が必要です。"; + "HIDE_HOVER_CARD" = "動画終わりのホバーカードを非表示 (YTNoHoverCards)"; "HIDE_HOVER_CARD_DESC" = "動画の最後のホバーカード(サムネイル)を非表示にします。"; "HIDE_RIGHT_PANEL" = "フルスクリーンモードで右パネルを非表示"; "HIDE_RIGHT_PANEL_DESC" = "アプリの再起動が必要です。"; -"RED_PROGRESS_BAR" = "赤いプログレスバー"; -"RED_PROGRESS_BAR_DESC" = "赤いプログレスバーに戻します。アプリの再起動が必要です。"; - -"DONT_EAT_MY_CONTENT" = "2:1の動画とノッチ/Dynamic Islandの最適化 (DontEatMyContent)"; -"DONT_EAT_MY_CONTENT_DESC" = "2:1比率の動画とノッチ/Dynamic Islandが干渉することを防ぎます。アプリの再起動が必要です。"; - // Shorts controls overlay options "SHORTS_CONTROLS_OVERLAY_OPTIONS" = "ショートのコントロールのオーバーレイ設定"; -"HIDE_SHORTS_CHANNEL_AVATAR" = "ショートのチャンネルのプロフィール画像を非表示"; -"HIDE_SHORTS_CHANNEL_AVATAR_DESC" = ""; - -"HIDE_SHORTS_DISLIKE_BUTTON" = "ショートの低評価ボタンを非表示"; -"HIDE_SHORTS_DISLIKE_BUTTON_DESC" = ""; - -"HIDE_SHORTS_COMMENT_BUTTON" = "ショートのコメントのボタンを非表示"; -"HIDE_SHORTS_COMMENT_BUTTON_DESC" = ""; - -"HIDE_SHORTS_REMIX_BUTTON" = "ショートのリミックスのボタンを非表示"; -"HIDE_SHORTS_REMIX_BUTTON_DESC" = ""; - -"HIDE_SHORTS_SHARE_BUTTON" = "ショートの共有ボタンを非表示"; -"HIDE_SHORTS_SHARE_BUTTON_DESC" = ""; - -"HIDE_UYOU_SHORTS_DOWNLOAD_BUTTON" = "uYouボタンを非表示"; -"HIDE_UYOU_SHORTS_DOWNLOAD_BUTTON_DESC" = "ショートのuYouボタンを非表示にします。"; - -"HIDE_SUBCRIPTIONS" = "チャンネル登録ボタンを非表示"; -"HIDE_SUBCRIPTIONS_DESC" = "一時停止時に表示されるチャンネル登録ボタンを非表示にします"; - "HIDE_SUPER_THANKS" = "Super Thanks を購入のバナーを非表示"; "HIDE_SUPER_THANKS_DESC" = "ショートの「Super Thanks」バナーを非表示にします。"; +"HIDE_SUBCRIPTIONS" = "チャンネル登録ボタンを非表示"; +"HIDE_SUBCRIPTIONS_DESC" = "一時停止時に表示されるチャンネル登録ボタンを非表示にします"; + "DISABLE_RESUME_TO_SHORTS" = "ショートの再開を無効化"; "DISABLE_RESUME_TO_SHORTS_DESC" = "ショート動画を見ていてアプリを終了した後、再度開いた際にショートから再開されるのを防ぎます。"; -// Theme -"THEME_OPTIONS" = "テーマの設定"; - -"OLED_DARK_THEME" = "有機ELダークモード (実験的機能)"; -"OLED_DARK_THEME_2" = "有機ELダークモード"; -"OLED_DARK_THEME_DESC" = "正常に動作しない可能性があります。アプリの再起動が必要です。"; - -"OLD_DARK_THEME" = "従来のダークモード"; -"OLD_DARK_THEME_DESC" = "前のYouTubeのダークモードです。(グレー) アプリの再起動が必要です。"; - -"DEFAULT_THEME" = "通常"; -"DEFAULT_THEME_DESC" = "通常のYouTubeのダークモードです。アプリの再起動が必要です。"; - -"OLED_KEYBOARD" = "有機ELキーボード (実験的機能)"; -"OLED_KEYBOARD_DESC" = "正常に動作しない可能性があります。この設定を変更した場合、アプリの再起動が必要です。"; - // Miscellaneous "MISCELLANEOUS" = "その他"; @@ -118,26 +106,26 @@ "DISABLE_HINTS" = "ヒントを非表示"; "DISABLE_HINTS_DESC" = "アプリが再インストールされた際に表示される機能の使い方を非表示にします。"; -"ENABLE_FLEX" = "FLEXを有効化"; -"ENABLE_FLEX_DESC" = "デバッグ用のFLEXを有効にします(推奨しません) 何をやっているのかわからない場合はオフにしてください。"; - "ENABLE_YT_STARTUP_ANIMATION" = "YouTube起動時のアニメーションを有効にする"; "ENABLE_YT_STARTUP_ANIMATION_DESC" = ""; -"FIX_GOOGLE_SIGNIN" = "Googleのサインインを修正 (TrollStoreユーザーのみ)"; -"FIX_GOOGLE_SIGNIN_DESC" = "アプリがTrollStoreでインストールされた場合のみ機能します。このオプションを有効にしてGoogleアカウントでサインインできるようにします。アプリの再起動が必要です。"; - "HIDE_CHIP_BAR" = "トップバーを非表示"; "HIDE_CHIP_BAR_DESC" = "ホーム(トレンド,音楽,ゲーム...)とサブスクリプション(すべてのビデオ、視聴を続ける...)リボンのトップバーを非表示にします。アプリの再起動が必要です。"; "HIDE_PLAY_NEXT_IN_QUEUE" = "\"次に再生\"を削除"; "HIDE_PLAY_NEXT_IN_QUEUE_DESC" = "コンテキストメニューの\"キューの最初に追加\"オプションを非表示にします"; +"IPHONE_LAYOUT" = "iPhoneのレイアウト"; +"IPHONE_LAYOUT_DESC" = "iPhoneのレイアウトを使用する場合はトグルで切り替えてください。アプリの再起動が必要です。"; + "NEW_MINIPLAYER_STYLE" = "新しいミニプレーヤー・バーを使う (BigYTMiniPlayer)"; "NEW_MINIPLAYER_STYLE_DESC" = "アプリの再起動が必要です。"; "YT_RE_EXPLORE" = "ショートタブを探索タブに置き換える (YTReExplore)"; "YT_RE_EXPLORE_DESC" = "アプリの再起動が必要です。"; -"IPHONE_LAYOUT" = "iPhoneのレイアウト"; -"IPHONE_LAYOUT_DESC" = "iPhoneのレイアウトを使用する場合はトグルで切り替えてください。アプリの再起動が必要です。"; +"ENABLE_FLEX" = "FLEXを有効化"; +"ENABLE_FLEX_DESC" = "デバッグ用のFLEXを有効にします(推奨しません) 何をやっているのかわからない場合はオフにしてください。"; + +"FIX_GOOGLE_SIGNIN" = "Googleのサインインを修正 (TrollStoreユーザーのみ)"; +"FIX_GOOGLE_SIGNIN_DESC" = "アプリがTrollStoreでインストールされた場合のみ機能します。このオプションを有効にしてGoogleアカウントでサインインできるようにします。アプリの再起動が必要です。"; diff --git a/Localizations/uYouPlus.bundle/ko.lproj/Localizable.strings b/Localizations/uYouPlus.bundle/ko.lproj/Localizable.strings index c4c2f02..45cd68f 100644 --- a/Localizations/uYouPlus.bundle/ko.lproj/Localizable.strings +++ b/Localizations/uYouPlus.bundle/ko.lproj/Localizable.strings @@ -1,13 +1,38 @@ -// Settings +// About +"ABOUT" = "About"; + "VERSION" = "uYouPlus 버전: %@"; "VERSION_CHECK" = "업데이트를 확인하려면 탭하세요!"; +"REPORT_AN_ISSUE" = "Report an issue"; +"ADD_TITLE" = "Add your title here..."; + +"QUIT_YOUTUBE" = "Quit YouTube"; + +"RESTART_YOUTUBE" = "Restart YouTube to apply changes"; + +// App appearance +"APP_THEME" = "App appearance"; +"THEME_OPTIONS" = "테마 설정"; + +"DARK_THEME" = "Dark theme"; + +"DEFAULT_THEME" = "기본"; +"DEFAULT_THEME_DESC" = "YouTube 기본 다크 모드. 앱을 다시 시작해야 합니다."; + +"OLD_DARK_THEME" = "이전 다크 모드 테마"; +"OLD_DARK_THEME_DESC" = "이전 YouTube 다크 모드 (회색 테마). 앱을 다시 시작해야 합니다."; + +"OLED_DARK_THEME" = "OLED 다크모드 (실험실)"; +"OLED_DARK_THEME_2" = "OLED 다크모드"; +"OLED_DARK_THEME_DESC" = "몇몇 경우 제대로 동작하지 않을 수도 있습니다. 이 기능을 켜거나 끄는 경우 앱을 다시 시작해야 합니다."; + +"OLED_KEYBOARD" = "OLED 키보드 (실험실)"; +"OLED_KEYBOARD_DESC" = "몇몇 경우 제대로 동작하지 않을 수도 있습니다. 앱을 다시 시작해야 합니다."; + // Video player options "VIDEO_PLAYER_OPTIONS" = "비디오 재생 설정"; -"AUTO_FULLSCREEN" = "자동 전체화면 재생 (YTAutoFullScreen)"; -"AUTO_FULLSCREEN_DESC" = "자동으로 전체화면에서 재생합니다."; - "DISABLE_DOUBLE_TAP_TO_SEEK" = "두번 탭하여 탐색 사용하지 않음"; "DISABLE_DOUBLE_TAP_TO_SEEK_DESC" = ""; @@ -47,64 +72,27 @@ "REPLACE_PREVIOUS_NEXT_BUTTON" = "이전, 다음 재생 버튼 교체"; "REPLACE_PREVIOUS_NEXT_BUTTON_DESC" = "이전 재생, 다음 재생 버튼을 빨리 감기, 되감기 버튼으로 교체합니다. 앱을 다시 시작해야 합니다."; +"RED_PROGRESS_BAR" = "빨간색 진행 막대"; +"RED_PROGRESS_BAR_DESC" = "영상 진행 막대의 색을 빨간색으로 되돌립니다. 앱을 다시 시작해야 합니다."; + "HIDE_HOVER_CARD" = "영상 끝 부분의 호버카드 숨기기 (YTNoHoverCards)"; "HIDE_HOVER_CARD_DESC" = "영상의 끝 부분에서 게시자가 표시한 영상 썸네일을 숨깁니다."; "HIDE_RIGHT_PANEL" = "전체화면 모드에서 오른쪽 패널 숨기기"; "HIDE_RIGHT_PANEL_DESC" = "앱을 다시 시작해야 합니다."; -"RED_PROGRESS_BAR" = "빨간색 진행 막대"; -"RED_PROGRESS_BAR_DESC" = "영상 진행 막대의 색을 빨간색으로 되돌립니다. 앱을 다시 시작해야 합니다."; - -"DONT_EAT_MY_CONTENT" = "노치/아일랜드 영역이 2:1 비율 비디오를 가리지 않게 함 (DontEatMyContent)"; -"DONT_EAT_MY_CONTENT_DESC" = "노치/다이내믹 아일랜드 영역이 유튜브의 2:1 비율 영상 일부를 가리는 것을 막아줍니다. 앱을 다시 시작해야 합니다."; - // Shorts controls overlay options "SHORTS_CONTROLS_OVERLAY_OPTIONS" = "Shorts 재생 오버레이 설정"; -"HIDE_SHORTS_CHANNEL_AVATAR" = "Shorts 채널 아바타 숨기기"; -"HIDE_SHORTS_CHANNEL_AVATAR_DESC" = ""; - -"HIDE_SHORTS_DISLIKE_BUTTON" = "Shorts 영상 싫어요 버튼 숨기기"; -"HIDE_SHORTS_DISLIKE_BUTTON_DESC" = ""; - -"HIDE_SHORTS_COMMENT_BUTTON" = "Shorts 영상 댓글 버튼 숨기기"; -"HIDE_SHORTS_COMMENT_BUTTON_DESC" = ""; - -"HIDE_SHORTS_REMIX_BUTTON" = "Shorts 영상 리믹스 버튼 숨기기"; -"HIDE_SHORTS_REMIX_BUTTON_DESC" = ""; - -"HIDE_SHORTS_SHARE_BUTTON" = "Shorts 영상 공유 버튼 숨기기"; -"HIDE_SHORTS_SHARE_BUTTON_DESC" = ""; - -"HIDE_UYOU_SHORTS_DOWNLOAD_BUTTON" = "uYou 버튼 숨기기"; -"HIDE_UYOU_SHORTS_DOWNLOAD_BUTTON_DESC" = "Shorts에서 uYou의 다운로드 버튼을 숨깁니다."; - -"HIDE_SUBCRIPTIONS" = "구독 버튼 숨기기"; -"HIDE_SUBCRIPTIONS_DESC" = "일시 정지 할 때 보이는 구독 버튼을 숨깁니다."; - "HIDE_SUPER_THANKS" = "'Super Thanks 구매' 배너 숨기기"; "HIDE_SUPER_THANKS_DESC" = "Shorts 영상에서 'Super Thanks 구매' 배너를 숨깁니다."; +"HIDE_SUBCRIPTIONS" = "구독 버튼 숨기기"; +"HIDE_SUBCRIPTIONS_DESC" = "일시 정지 할 때 보이는 구독 버튼을 숨깁니다."; + "DISABLE_RESUME_TO_SHORTS" = "Shorts 복원 사용하지 않음"; "DISABLE_RESUME_TO_SHORTS_DESC" = "Shorts를 시청하는 도중 앱을 닫을 때, 다시 앱을 열어도 Shorts 영상이 자동재생되지 않도록 합니다."; -// Theme -"THEME_OPTIONS" = "테마 설정"; - -"OLED_DARK_THEME" = "OLED 다크모드 (실험실)"; -"OLED_DARK_THEME_2" = "OLED 다크모드"; -"OLED_DARK_THEME_DESC" = "몇몇 경우 제대로 동작하지 않을 수도 있습니다. 이 기능을 켜거나 끄는 경우 앱을 다시 시작해야 합니다."; - -"OLD_DARK_THEME" = "이전 다크 모드 테마"; -"OLD_DARK_THEME_DESC" = "이전 YouTube 다크 모드 (회색 테마). 앱을 다시 시작해야 합니다."; - -"DEFAULT_THEME" = "기본"; -"DEFAULT_THEME_DESC" = "YouTube 기본 다크 모드. 앱을 다시 시작해야 합니다."; - -"OLED_KEYBOARD" = "OLED 키보드 (실험실)"; -"OLED_KEYBOARD_DESC" = "몇몇 경우 제대로 동작하지 않을 수도 있습니다. 앱을 다시 시작해야 합니다."; - // Miscellaneous "MISCELLANEOUS" = "기타 설정"; @@ -118,20 +106,17 @@ "DISABLE_HINTS" = "힌트 표시하지 않음"; "DISABLE_HINTS_DESC" = "앱을 새로 설치하는 경우 표시되는 앱의 몇몇 기능에 대한 설명이 표시되지 않도록 합니다."; -"ENABLE_FLEX" = "FLEX 사용"; -"ENABLE_FLEX_DESC" = "디버그를 위해 FLEX를 사용하도록 설정합니다(권장하지 않음). 사용에 익숙하지 않으면 활성화하지 마십시오."; - "ENABLE_YT_STARTUP_ANIMATION" = "YouTube 시작 애니메이션을 표시합니다."; "ENABLE_YT_STARTUP_ANIMATION_DESC" = ""; -"FIX_GOOGLE_SIGNIN" = "구글 로그인 문제 수정 (TrollStore 사용자만 해당)"; -"FIX_GOOGLE_SIGNIN_DESC" = "TrollStore를 통해 설치된 앱에만 적용됩니다: 구글 계정으로 로그인하려면 이 설정을 켜 주세요. 앱을 다시 시작해야 합니다."; - "HIDE_CHIP_BAR" = "피드 선택 막대 숨기기"; "HIDE_CHIP_BAR_DESC" = "앱의 홈 화면에서 맞춤 동영상(인기 급상승, 음악, 게임...)과 구독 피드(전체, 감상한 동영상...) 선택 막대를 숨깁니다. 앱을 다시 시작해야 합니다."; "HIDE_PLAY_NEXT_IN_QUEUE" = "Hide \"Play next in queue\""; -"HIDE_PLAY_NEXT_IN_QUEUE_DESC" = "Hide the premium \"Play next in queue\" option in video context menus"; +"HIDE_PLAY_NEXT_IN_QUEUE_DESC" = ""; + +"IPHONE_LAYOUT" = "아이폰 화면배치"; +"IPHONE_LAYOUT_DESC" = "아이폰의 화면배치를 사용하려면 선택하세요. 앱을 다시 시작해야 합니다."; "NEW_MINIPLAYER_STYLE" = "새로운 스타일의 미니 플레이어 (BigYTMiniPlayer)"; "NEW_MINIPLAYER_STYLE_DESC" = "앱을 다시 시작해야 합니다."; @@ -139,5 +124,8 @@ "YT_RE_EXPLORE" = "Shorts 탭 대신 탐색 탭 보이기 (YTReExplore)"; "YT_RE_EXPLORE_DESC" = "앱을 다시 시작해야 합니다."; -"IPHONE_LAYOUT" = "아이폰 화면배치"; -"IPHONE_LAYOUT_DESC" = "아이폰의 화면배치를 사용하려면 선택하세요. 앱을 다시 시작해야 합니다."; +"ENABLE_FLEX" = "FLEX 사용"; +"ENABLE_FLEX_DESC" = "디버그를 위해 FLEX를 사용하도록 설정합니다(권장하지 않음). 사용에 익숙하지 않으면 활성화하지 마십시오."; + +"FIX_GOOGLE_SIGNIN" = "구글 로그인 문제 수정 (TrollStore 사용자만 해당)"; +"FIX_GOOGLE_SIGNIN_DESC" = "TrollStore를 통해 설치된 앱에만 적용됩니다: 구글 계정으로 로그인하려면 이 설정을 켜 주세요. 앱을 다시 시작해야 합니다."; diff --git a/Localizations/uYouPlus.bundle/nl.lproj/Localizable.strings b/Localizations/uYouPlus.bundle/nl.lproj/Localizable.strings index a8cbfe8..94eb1e9 100644 --- a/Localizations/uYouPlus.bundle/nl.lproj/Localizable.strings +++ b/Localizations/uYouPlus.bundle/nl.lproj/Localizable.strings @@ -1,30 +1,55 @@ -// Settings -"VERSION" = "uYouPlus's version: %@"; -"VERSION_CHECK" = "Tap to check for update!"; +// About +"ABOUT" = "About"; + +"VERSION" = "Version"; +"VERSION_CHECK" = "Tap to check for updates!"; + +"REPORT_AN_ISSUE" = "Report an issue"; +"ADD_TITLE" = "Add your title here..."; + +"QUIT_YOUTUBE" = "Quit YouTube"; + +"RESTART_YOUTUBE" = "Restart YouTube to apply changes"; + +// App appearance +"APP_THEME" = "App appearance"; +"THEME_OPTIONS" = "Theme Options"; + +"DARK_THEME" = "Dark theme"; + +"DEFAULT_THEME" = "Default"; +"DEFAULT_THEME_DESC" = ""; + +"OLD_DARK_THEME" = "Lighter grey"; +"OLD_DARK_THEME_DESC" = "YouTube's old dark theme"; + +"OLED_DARK_THEME" = "OLED Donkere Stand (Experimenteel)"; +"OLED_DARK_THEME_2" = "OLED Donkere Stand"; +"OLED_DARK_THEME_DESC" = "Werkt mogelijk niet correct in sommige gevallen. Je moet de app opnieuw opstarten om dit te activeren."; + +"OLED_KEYBOARD" = "OLED Toetsenbord (Experimenteel)"; +"OLED_KEYBOARD_DESC" = "Werkt mogelijk niet correct in sommige gevallen. Je moet de app opnieuw opstarten om dit te activeren."; // Video player options -"VIDEO_PLAYER_OPTIONS" = "Video Player Options"; - -"AUTO_FULLSCREEN" = "Auto Volledig Scherm (YTAutoFullScreen)"; -"AUTO_FULLSCREEN_DESC" = "Automatisch volledig scherm wanneer je een video aan klikt."; +"VIDEO_PLAYER_OPTIONS" = "Video player options"; "DISABLE_DOUBLE_TAP_TO_SEEK" = "Disable double tap to seek"; "DISABLE_DOUBLE_TAP_TO_SEEK_DESC" = ""; "SNAP_TO_CHAPTER" = "Disable snap to chapter"; -"SNAP_TO_CHAPTER_DESC" = "Disable auto snap to chapter when seeking in videos. App restart is required."; +"SNAP_TO_CHAPTER_DESC" = "Disables auto snap to chapter when seeking through videos"; "PINCH_TO_ZOOM" = "Disable pinch to zoom"; -"PINCH_TO_ZOOM_DESC" = "App restart is required."; +"PINCH_TO_ZOOM_DESC" = ""; "YT_MINIPLAYER" = "Schakel de Mini Speler in voor alle video's"; "YT_MINIPLAYER_DESC" = "Video's voor kinderen bijvoorbeeld."; -"STOCK_VOLUME_HUD" = "Use iOS stock volume HUD"; +"STOCK_VOLUME_HUD" = "Use stock iOS volume HUD"; "STOCK_VOLUME_HUD_DESC" = ""; // Video controls overlay options -"VIDEO_CONTROLS_OVERLAY_OPTIONS" = "Video Controls Overlay Options"; +"VIDEO_CONTROLS_OVERLAY_OPTIONS" = "Video controls overlay options"; "HIDE_AUTOPLAY_SWITCH" = "Verberg Autoplay schakelaar"; "HIDE_AUTOPLAY_SWITCH_DESC" = "Verberg de Autoplay schakelaar in de video speler."; @@ -38,8 +63,8 @@ "HIDE_PAID_PROMOTION_CARDS" = "Verberg Betaalde Promoties"; "HIDE_PAID_PROMOTION_CARDS_DESC" = "Verberg de 'Bevat Betaalde Promotie' in sommige video's."; -"HIDE_CHANNEL_WATERMARK" = "Hide Channel Watermark"; -"HIDE_CHANNEL_WATERMARK_DESC" = "Hide channel's watermark in video controls overlay. App restart is required."; +"HIDE_CHANNEL_WATERMARK" = "Hide channel watermark"; +"HIDE_CHANNEL_WATERMARK_DESC" = ""; "HIDE_PREVIOUS_AND_NEXT_BUTTON" = "Verberg vorige en volgende knoppen"; "HIDE_PREVIOUS_AND_NEXT_BUTTON_DESC" = "Verberg de vorige en volgende knop in de video speler."; @@ -47,63 +72,26 @@ "REPLACE_PREVIOUS_NEXT_BUTTON" = "Vervang Volgende en Vorige knoppen"; "REPLACE_PREVIOUS_NEXT_BUTTON_DESC" = "Vervang de Vorige en Volgende knoppen met spoelknoppen."; +"RED_PROGRESS_BAR" = "Red progress bar"; +"RED_PROGRESS_BAR_DESC" = ""; + "HIDE_HOVER_CARD" = "Verberg eind scherm hover cards (YTNoHoverCards)"; "HIDE_HOVER_CARD_DESC" = "Verberg eind schermen (thumbnails) aan het einde van video's."; -"HIDE_RIGHT_PANEL" = "Hide the right panel in fullscreen mode"; -"HIDE_RIGHT_PANEL_DESC" = "App restart is required."; - -"RED_PROGRESS_BAR" = "Red progress bar"; -"RED_PROGRESS_BAR_DESC" = "Bring back the red progress bar. App restart is required."; - -"DONT_EAT_MY_CONTENT" = "Voorkom Notch/Eiland Bij 2:1 Video's (DontEatMyContent)";# -"DONT_EAT_MY_CONTENT_DESC" = "Voorkomt dat de video zich achter de Notch/het Dynamische Eiland bevind bij 2:1 video's. Je moet de app opnieuw opstarten om dit te activeren."; +"HIDE_RIGHT_PANEL" = "Hide engagement panels in full screen"; +"HIDE_RIGHT_PANEL_DESC" = "Hides right panels (e.g., comments, live chat, etc.) in landscape"; // Shorts controls overlay options -"SHORTS_CONTROLS_OVERLAY_OPTIONS" = "Shorts Controls Overlay Options"; +"SHORTS_CONTROLS_OVERLAY_OPTIONS" = "Shorts controls overlay options"; -"HIDE_SHORTS_CHANNEL_AVATAR" = "Hide Shorts channel's avatar"; -"HIDE_SHORTS_CHANNEL_AVATAR_DESC" = ""; +"HIDE_SUPER_THANKS" = "Hide \"Buy Super Thanks\" banner"; +"HIDE_SUPER_THANKS_DESC" = ""; -"HIDE_SHORTS_DISLIKE_BUTTON" = "Hide Shorts dislike button"; -"HIDE_SHORTS_DISLIKE_BUTTON_DESC" = ""; - -"HIDE_SHORTS_COMMENT_BUTTON" = "Hide Shorts comment button"; -"HIDE_SHORTS_COMMENT_BUTTON_DESC" = ""; - -"HIDE_SHORTS_REMIX_BUTTON" = "Hide Shorts remix button"; -"HIDE_SHORTS_REMIX_BUTTON_DESC" = ""; - -"HIDE_SHORTS_SHARE_BUTTON" = "Hide Shorts share button"; -"HIDE_SHORTS_SHARE_BUTTON_DESC" = ""; - -"HIDE_UYOU_SHORTS_DOWNLOAD_BUTTON" = "Hide uYou's buttons"; -"HIDE_UYOU_SHORTS_DOWNLOAD_BUTTON_DESC" = "Hide uYou's download buttons in Shorts."; - -"HIDE_SUBCRIPTIONS" = "Hide Subscriptions button"; -"HIDE_SUBCRIPTIONS_DESC" = "Hide Subscriptions button which shows up when paused."; - -"HIDE_SUPER_THANKS" = "Hide 'Buy Super Thanks' banner"; -"HIDE_SUPER_THANKS_DESC" = "Hide the 'Buy Super Thanks' banner in Shorts."; +"HIDE_SUBCRIPTIONS" = "Hide subscriptions button"; +"HIDE_SUBCRIPTIONS_DESC" = ""; "DISABLE_RESUME_TO_SHORTS" = "Disable resume to Shorts"; -"DISABLE_RESUME_TO_SHORTS_DESC" = "If you close YouTube while watching Shorts, Shorts won‘t automatically play next time you launch YouTube."; - -// Theme -"THEME_OPTIONS" = "Theme Options"; - -"OLED_DARK_THEME" = "OLED Donkere Stand (Experimenteel)"; -"OLED_DARK_THEME_2" = "OLED Donkere Stand"; -"OLED_DARK_THEME_DESC" = "Werkt mogelijk niet correct in sommige gevallen. Je moet de app opnieuw opstarten om dit te activeren."; - -"OLD_DARK_THEME" = "Old dark theme"; -"OLD_DARK_THEME_DESC" = "Old YouTube's dark theme (grey theme). App restart is required."; - -"DEFAULT_THEME" = "Default"; -"DEFAULT_THEME_DESC" = "Default dark(er) theme of YouTube. App restart is required."; - -"OLED_KEYBOARD" = "OLED Toetsenbord (Experimenteel)"; -"OLED_KEYBOARD_DESC" = "Werkt mogelijk niet correct in sommige gevallen. Je moet de app opnieuw opstarten om dit te activeren."; +"DISABLE_RESUME_TO_SHORTS_DESC" = "If you close YouTube while watching Shorts, this prevents it from automatically resuming the next time you reopen the app"; // Miscellaneous "MISCELLANEOUS" = "Miscellaneous"; @@ -116,22 +104,19 @@ "MSG_CANCEL" = "Niet casten!"; "DISABLE_HINTS" = "Disable hints"; -"DISABLE_HINTS_DESC" = "Disable feature hints from YouTube that usually display when the app is freshly installed."; - -"ENABLE_FLEX" = "Enable FLEX"; -"ENABLE_FLEX_DESC" = "Enable FLEX for debugging (not recommended). Leave this off unless you know what you are doing."; +"DISABLE_HINTS_DESC" = "Disables YouTube feature hints that are displayed when the app is newly installed"; "ENABLE_YT_STARTUP_ANIMATION" = "Enable YouTube startup animation"; "ENABLE_YT_STARTUP_ANIMATION_DESC" = ""; -"FIX_GOOGLE_SIGNIN" = "Fix Inloggen met Google (Alleen voor TrollStore gebruikers)"; -"FIX_GOOGLE_SIGNIN_DESC" = "Zet dit aan wanneer je niet kan inloggen met je Google account en je de app hebt geïnstalleerd met Trollstore. Als je in kan loggen laat dit dan met rust. Om dit te activeren moet je de app opnieuw opstarten."; - -"HIDE_CHIP_BAR" = "Hide the Upper bar"; -"HIDE_CHIP_BAR_DESC" = "Hide Upper bar in the Home feeds (Trends, Music, Gaming...) and Subcription feeds (All videos, Continue watching...). App restart is required."; +"HIDE_CHIP_BAR" = "Hide upper bar"; +"HIDE_CHIP_BAR_DESC" = "Hides the upper bar in home and subscription feeds (e.g., All videos, Continue watching, etc.)"; "HIDE_PLAY_NEXT_IN_QUEUE" = "Hide \"Play next in queue\""; -"HIDE_PLAY_NEXT_IN_QUEUE_DESC" = "Hide the premium \"Play next in queue\" option in video context menus"; +"HIDE_PLAY_NEXT_IN_QUEUE_DESC" = ""; + +"IPHONE_LAYOUT" = "Force iPhone layout"; +"IPHONE_LAYOUT_DESC" = ""; "NEW_MINIPLAYER_STYLE" = "Nieuwe Mini Speler stijl (BigYTMiniPlayer)"; "NEW_MINIPLAYER_STYLE_DESC" = "Je moet de app opnieuw opstarten om dit te activeren."; @@ -139,5 +124,8 @@ "YT_RE_EXPLORE" = "Vervang Shorts met Ontdekken (YTReExplore)"; "YT_RE_EXPLORE_DESC" = "Je moet de app opnieuw opstarten om dit te activeren."; -"IPHONE_LAYOUT" = "iPhone Layout"; -"IPHONE_LAYOUT_DESC" = "Toggle to use the iPhone Layout. App restart is required."; +"ENABLE_FLEX" = "Enable FLEX"; +"ENABLE_FLEX_DESC" = "Enables FLEX for debugging"; + +"FIX_GOOGLE_SIGNIN" = "Fix Inloggen met Google (Alleen voor TrollStore gebruikers)"; +"FIX_GOOGLE_SIGNIN_DESC" = "Zet dit aan wanneer je niet kan inloggen met je Google account en je de app hebt geïnstalleerd met Trollstore. Als je in kan loggen laat dit dan met rust. Om dit te activeren moet je de app opnieuw opstarten."; diff --git a/Localizations/uYouPlus.bundle/pl.lproj/Localizable.strings b/Localizations/uYouPlus.bundle/pl.lproj/Localizable.strings index 76f3adb..0ec9718 100644 --- a/Localizations/uYouPlus.bundle/pl.lproj/Localizable.strings +++ b/Localizations/uYouPlus.bundle/pl.lproj/Localizable.strings @@ -1,30 +1,55 @@ -// Settings -"VERSION" = "uYouPlus's version: %@"; -"VERSION_CHECK" = "Tap to check for update!"; +// About +"ABOUT" = "About"; + +"VERSION" = "Version"; +"VERSION_CHECK" = "Tap to check for updates!"; + +"REPORT_AN_ISSUE" = "Report an issue"; +"ADD_TITLE" = "Add your title here..."; + +"QUIT_YOUTUBE" = "Quit YouTube"; + +"RESTART_YOUTUBE" = "Restart YouTube to apply changes"; + +// App appearance +"APP_THEME" = "App appearance"; +"THEME_OPTIONS" = "Theme options"; + +"DARK_THEME" = "Dark theme"; + +"DEFAULT_THEME" = "Default"; +"DEFAULT_THEME_DESC" = ""; + +"OLD_DARK_THEME" = "Lighter grey"; +"OLD_DARK_THEME_DESC" = "YouTube's old dark theme"; + +"OLED_DARK_THEME" = "Tryb ciemny OLED (Eksperymentalny)"; +"OLED_DARK_THEME_2" = "Tryb ciemny OLED"; +"OLED_DARK_THEME_DESC" = "Pure-black dark theme"; + +"OLED_KEYBOARD" = "Klawiatura OLED (Eksperymentalna)"; +"OLED_KEYBOARD_DESC" = "Może w niektórych przypadkach nie działać. Restart aplikacji jest wymagany."; // Video player options -"VIDEO_PLAYER_OPTIONS" = "Video Player Options"; - -"AUTO_FULLSCREEN" = "Auto pełny ekran (YTAutoFullScreen)"; -"AUTO_FULLSCREEN_DESC" = "Automaczycznie otwórz filmy w pełnym ekranie."; +"VIDEO_PLAYER_OPTIONS" = "Video player options"; "DISABLE_DOUBLE_TAP_TO_SEEK" = "Disable double tap to seek"; "DISABLE_DOUBLE_TAP_TO_SEEK_DESC" = ""; "SNAP_TO_CHAPTER" = "Disable snap to chapter"; -"SNAP_TO_CHAPTER_DESC" = "Disable auto snap to chapter when seeking videos. App restart is required."; +"SNAP_TO_CHAPTER_DESC" = "Disables auto snap to chapter when seeking through videos"; "PINCH_TO_ZOOM" = "Disable pinch to zoom"; -"PINCH_TO_ZOOM_DESC" = "App restart is required."; +"PINCH_TO_ZOOM_DESC" = ""; "YT_MINIPLAYER" = "Włącz miniodtwarzach dla wszystkich filmów"; "YT_MINIPLAYER_DESC" = "Np. filmów dla dzieci."; -"STOCK_VOLUME_HUD" = "Use iOS stock volume HUD"; +"STOCK_VOLUME_HUD" = "Use stock iOS volume HUD"; "STOCK_VOLUME_HUD_DESC" = ""; // Video controls overlay options -"VIDEO_CONTROLS_OVERLAY_OPTIONS" = "Video Controls Overlay Options"; +"VIDEO_CONTROLS_OVERLAY_OPTIONS" = "Video controls overlay options"; "HIDE_AUTOPLAY_SWITCH" = "Ukryj przycisk Autoodtwarzanie"; "HIDE_AUTOPLAY_SWITCH_DESC" = "Ukrywa przycisk Autoodtwarzanie w okładce odtwarzacza filmów."; @@ -38,8 +63,8 @@ "HIDE_PAID_PROMOTION_CARDS" = "Ukryj baner płatnej promocji"; "HIDE_PAID_PROMOTION_CARDS_DESC" = "Ukrywa baner 'Zawiera płatną promocję' w niektórych filmach."; -"HIDE_CHANNEL_WATERMARK" = "Hide Channel Watermark"; -"HIDE_CHANNEL_WATERMARK_DESC" = "Hide channel's watermark in video controls overlay. App restart is required."; +"HIDE_CHANNEL_WATERMARK" = "Hide channel watermark"; +"HIDE_CHANNEL_WATERMARK_DESC" = ""; "HIDE_PREVIOUS_AND_NEXT_BUTTON" = "Ukryj przyciski Poprzedni i Następny"; "HIDE_PREVIOUS_AND_NEXT_BUTTON_DESC" = "Ukryj przyciski Poprzedni i Następny w okładce sterowania filmu."; @@ -47,63 +72,26 @@ "REPLACE_PREVIOUS_NEXT_BUTTON" = "Zamień przyciski Poprzedni i Następny"; "REPLACE_PREVIOUS_NEXT_BUTTON_DESC" = "Zamienia przyciski Poprzedni i Następny z przyciskami Przewiń w przód i tył. Restart aplikacji jest wymagany."; +"RED_PROGRESS_BAR" = "Red progress bar"; +"RED_PROGRESS_BAR_DESC" = ""; + "HIDE_HOVER_CARD" = "Ukryj ekrany końcowe (YTNoHoverCards)"; "HIDE_HOVER_CARD_DESC" = "Ukryj ekrany końcowe (miniaturki) na końcu filmów."; -"HIDE_RIGHT_PANEL" = "Hide the right panel in fullscreen mode"; -"HIDE_RIGHT_PANEL_DESC" = "App restart is required."; - -"RED_PROGRESS_BAR" = "Red progress bar"; -"RED_PROGRESS_BAR_DESC" = "Bring back the red progress bar. App restart is required."; - -"DONT_EAT_MY_CONTENT" = "Zapobiega przeszkadzaniu Notcha/Island na filmach o proporcjach 2:1 (DontEatMyContent)"; -"DONT_EAT_MY_CONTENT_DESC" = "Zapobiega notcha/Dynamic Island przed jedzeniem filmów o proporcjach 2:1 na YouTubie. Restart aplikacji jest wymagany."; +"HIDE_RIGHT_PANEL" = "Hide engagement panels in full screen"; +"HIDE_RIGHT_PANEL_DESC" = "Hides right panels (e.g., comments, live chat, etc.) in landscape"; // Shorts controls overlay options -"SHORTS_CONTROLS_OVERLAY_OPTIONS" = "Shorts Controls Overlay Options"; +"SHORTS_CONTROLS_OVERLAY_OPTIONS" = "Shorts controls overlay options"; -"HIDE_SHORTS_CHANNEL_AVATAR" = "Hide Shorts channel's avatar"; -"HIDE_SHORTS_CHANNEL_AVATAR_DESC" = ""; +"HIDE_SUPER_THANKS" = "Hide \"Buy Super Thanks\" banner"; +"HIDE_SUPER_THANKS_DESC" = ""; -"HIDE_SHORTS_DISLIKE_BUTTON" = "Hide Shorts dislike button"; -"HIDE_SHORTS_DISLIKE_BUTTON_DESC" = ""; - -"HIDE_SHORTS_COMMENT_BUTTON" = "Hide Shorts comment button"; -"HIDE_SHORTS_COMMENT_BUTTON_DESC" = ""; - -"HIDE_SHORTS_REMIX_BUTTON" = "Hide Shorts remix button"; -"HIDE_SHORTS_REMIX_BUTTON_DESC" = ""; - -"HIDE_SHORTS_SHARE_BUTTON" = "Hide Shorts share button"; -"HIDE_SHORTS_SHARE_BUTTON_DESC" = ""; - -"HIDE_UYOU_SHORTS_DOWNLOAD_BUTTON" = "Hide uYou's buttons"; -"HIDE_UYOU_SHORTS_DOWNLOAD_BUTTON_DESC" = "Hide uYou's download buttons in Shorts."; - -"HIDE_SUBCRIPTIONS" = "Hide Subscriptions button"; -"HIDE_SUBCRIPTIONS_DESC" = "Hide Subscriptions button which shows up when paused."; - -"HIDE_SUPER_THANKS" = "Hide 'Buy Super Thanks' banner"; -"HIDE_SUPER_THANKS_DESC" = "Hide the 'Buy Super Thanks' banner in Shorts."; +"HIDE_SUBCRIPTIONS" = "Hide subscriptions button"; +"HIDE_SUBCRIPTIONS_DESC" = ""; "DISABLE_RESUME_TO_SHORTS" = "Disable resume to Shorts"; -"DISABLE_RESUME_TO_SHORTS_DESC" = "If you close YouTube while watching Shorts, Shorts won‘t automatically play next time you launch YouTube."; - -// Theme -"THEME_OPTIONS" = "Theme Options"; - -"OLED_DARK_THEME" = "Tryb ciemny OLED (Eksperymentalny)"; -"OLED_DARK_THEME_2" = "Tryb ciemny OLED"; -"OLED_DARK_THEME_DESC" = "True dark theme. Might not work correctly in some cases. App restart is required after you enable/disable this option."; - -"OLD_DARK_THEME" = "Old dark theme"; -"OLD_DARK_THEME_DESC" = "Old YouTube's dark theme (grey theme). App restart is required."; - -"DEFAULT_THEME" = "Default"; -"DEFAULT_THEME_DESC" = "Może w niektórych przypadkach nie działać. Restart aplikacji jest wymagany."; - -"OLED_KEYBOARD" = "Klawiatura OLED (Eksperymentalna)"; -"OLED_KEYBOARD_DESC" = "Może w niektórych przypadkach nie działać. Restart aplikacji jest wymagany."; +"DISABLE_RESUME_TO_SHORTS_DESC" = "If you close YouTube while watching Shorts, this prevents it from automatically resuming the next time you reopen the app"; // Miscellaneous "MISCELLANEOUS" = "Miscellaneous"; @@ -116,22 +104,19 @@ "MSG_CANCEL" = "Anuluj"; "DISABLE_HINTS" = "Disable hints"; -"DISABLE_HINTS_DESC" = "Disable feature hints from YouTube that usually display when the app is freshly installed."; - -"ENABLE_FLEX" = "Enable FLEX"; -"ENABLE_FLEX_DESC" = "Enable FLEX for debugging (not recommended). Leave this off unless you know what you are doing."; +"DISABLE_HINTS_DESC" = "Disables YouTube feature hints that are displayed when the app is newly installed"; "ENABLE_YT_STARTUP_ANIMATION" = "Enable YouTube startup animation"; "ENABLE_YT_STARTUP_ANIMATION_DESC" = ""; -"FIX_GOOGLE_SIGNIN" = "Napraw logowanie się z Google (tylko dla użytkowników TrollStore)"; -"FIX_GOOGLE_SIGNIN_DESC" = "Włącz tą opcję tylko wtedy, kiedy nie możesz zalogować się swoim kontem Google, a aplikacja została zainstalowana przez TrollStore. Jeżeli da się zalogować normalnie, zostaw to wyłączone. Restart aplikacji jest wymagany."; - -"HIDE_CHIP_BAR" = "Hide the Upper bar"; -"HIDE_CHIP_BAR_DESC" = "Hide Upper bar in the Home feeds (Trends, Music, Gaming...) and Subcription feeds (All videos, Continue watching...). App restart is required."; +"HIDE_CHIP_BAR" = "Hide upper bar"; +"HIDE_CHIP_BAR_DESC" = "Hides the upper bar in home and subscription feeds (e.g., All videos, Continue watching, etc.)"; "HIDE_PLAY_NEXT_IN_QUEUE" = "Hide \"Play next in queue\""; -"HIDE_PLAY_NEXT_IN_QUEUE_DESC" = "Hide the premium \"Play next in queue\" option in video context menus"; +"HIDE_PLAY_NEXT_IN_QUEUE_DESC" = ""; + +"IPHONE_LAYOUT" = "Force iPhone layout"; +"IPHONE_LAYOUT_DESC" = ""; "NEW_MINIPLAYER_STYLE" = "Nowy styl miniodtwarzacza (BigYTMiniPlayer)"; "NEW_MINIPLAYER_STYLE_DESC" = "Restart aplikacji jest wymagany."; @@ -139,5 +124,8 @@ "YT_RE_EXPLORE" = "Zamień kartę Shorts na kartę Odkrywaj (YTReExplore)"; "YT_RE_EXPLORE_DESC" = "Restart aplikacji jest wymagany."; -"IPHONE_LAYOUT" = "iPhone Layout"; -"IPHONE_LAYOUT_DESC" = "Toggle to use the iPhone Layout. App restart is required."; +"ENABLE_FLEX" = "Enable FLEX"; +"ENABLE_FLEX_DESC" = "Enables FLEX for debugging"; + +"FIX_GOOGLE_SIGNIN" = "Napraw logowanie się z Google (tylko dla użytkowników TrollStore)"; +"FIX_GOOGLE_SIGNIN_DESC" = "Włącz tą opcję tylko wtedy, kiedy nie możesz zalogować się swoim kontem Google, a aplikacja została zainstalowana przez TrollStore. Jeżeli da się zalogować normalnie, zostaw to wyłączone. Restart aplikacji jest wymagany."; diff --git a/Localizations/uYouPlus.bundle/pt.lproj/Localizable.strings b/Localizations/uYouPlus.bundle/pt.lproj/Localizable.strings index 1942901..b14c80f 100644 --- a/Localizations/uYouPlus.bundle/pt.lproj/Localizable.strings +++ b/Localizations/uYouPlus.bundle/pt.lproj/Localizable.strings @@ -1,13 +1,38 @@ -// Settings +// About +"ABOUT" = "About"; + "VERSION" = "Versão do uYouPlus: %@"; "VERSION_CHECK" = "Toque para verificar se há atualização!"; +"REPORT_AN_ISSUE" = "Report an issue"; +"ADD_TITLE" = "Add your title here..."; + +"QUIT_YOUTUBE" = "Quit YouTube"; + +"RESTART_YOUTUBE" = "Restart YouTube to apply changes"; + +// App appearance +"APP_THEME" = "App appearance"; +"THEME_OPTIONS" = "Opções de Temas"; + +"DARK_THEME" = "Dark theme"; + +"DEFAULT_THEME" = "Padrão"; +"DEFAULT_THEME_DESC" = "Tema escuro padrão do YouTube. A reinicialização do app é necessária."; + +"OLD_DARK_THEME" = "Antigo tema escuro"; +"OLD_DARK_THEME_DESC" = "Tema escuro do YouTube antigo (tema cinza). A reinicialização do app é necessária."; + +"OLED_DARK_THEME" = "Modo escuro OLED (Experimental)"; +"OLED_DARK_THEME_2" = "Modo escuro OLED"; +"OLED_DARK_THEME_DESC" = "Pode não funcionar corretamente em alguns casos. A reinicialização do app é necessária após você ativar/desativar essa opção."; + +"OLED_KEYBOARD" = "Teclado OLED (Experimental)"; +"OLED_KEYBOARD_DESC" = "Pode não funcionar corretamente em alguns casos. A reinicialização do app é necessária."; + // Video player options "VIDEO_PLAYER_OPTIONS" = "Opções do Reprodutor de Vídeo"; -"AUTO_FULLSCREEN" = "Tela cheia automática (YTAutoFullScreen)"; -"AUTO_FULLSCREEN_DESC" = "Reproduz videos em tela cheia automaticamente."; - "DISABLE_DOUBLE_TAP_TO_SEEK" = "Desativar toque duplo para buscar"; "DISABLE_DOUBLE_TAP_TO_SEEK_DESC" = ""; @@ -47,64 +72,27 @@ "REPLACE_PREVIOUS_NEXT_BUTTON" = "Substituir o botão Anterior e Próximo"; "REPLACE_PREVIOUS_NEXT_BUTTON_DESC" = "Substitui o botão Anterior e Próximo pelo botão Avançar e Retroceder. A reinicialização do app é necessária."; +"RED_PROGRESS_BAR" = "Barra de progresso vermelha"; +"RED_PROGRESS_BAR_DESC" = "Traz de volta a barra de progresso vermelha. A reinicialização do app é necessária."; + "HIDE_HOVER_CARD" = "Ocultar Cartões flutuantes de telas finais (YTNoHoverCards)"; "HIDE_HOVER_CARD_DESC" = "Oculta telas finais do criador (miniaturas) no final dos vídeos."; "HIDE_RIGHT_PANEL" = "Ocultar o painel direito no modo de tela cheia"; "HIDE_RIGHT_PANEL_DESC" = "A reinicialização do app é necessária."; -"RED_PROGRESS_BAR" = "Barra de progresso vermelha"; -"RED_PROGRESS_BAR_DESC" = "Traz de volta a barra de progresso vermelha. A reinicialização do app é necessária."; - -"DONT_EAT_MY_CONTENT" = "Evitar o notch/Island em conteúdo de vídeo 2:1 (DontEatMyContent)"; -"DONT_EAT_MY_CONTENT_DESC" = "Evita que o notch/Dynamic Island coma conteúdo de vídeo 2:1 no YouTube. A reinicialização do app é necessária."; - // Shorts controls overlay options "SHORTS_CONTROLS_OVERLAY_OPTIONS" = "Opções de Sobreposição de Controles de Shorts"; -"HIDE_SHORTS_CHANNEL_AVATAR" = "Ocultar o avatar do canal do Shorts"; -"HIDE_SHORTS_CHANNEL_AVATAR_DESC" = ""; - -"HIDE_SHORTS_DISLIKE_BUTTON" = "Ocultar o botão não gostei do Shorts"; -"HIDE_SHORTS_DISLIKE_BUTTON_DESC" = ""; - -"HIDE_SHORTS_COMMENT_BUTTON" = "Ocultar o botão de comentário do Shorts"; -"HIDE_SHORTS_COMMENT_BUTTON_DESC" = ""; - -"HIDE_SHORTS_REMIX_BUTTON" = "Ocultar o botão de remix do Shorts"; -"HIDE_SHORTS_REMIX_BUTTON_DESC" = ""; - -"HIDE_SHORTS_SHARE_BUTTON" = "Ocultar o botão de compartilhamento do Shorts"; -"HIDE_SHORTS_SHARE_BUTTON_DESC" = ""; - -"HIDE_UYOU_SHORTS_DOWNLOAD_BUTTON" = "Ocultar os botões do uYou"; -"HIDE_UYOU_SHORTS_DOWNLOAD_BUTTON_DESC" = "Oculta os botões de download do uYou nos Shorts"; - -"HIDE_SUBCRIPTIONS" = "Ocultar o botão Inscrições"; -"HIDE_SUBCRIPTIONS_DESC" = "Oculta o botão Inscrições que aparece quando pausado."; - "HIDE_SUPER_THANKS" = "Ocultar o banner 'Comprar Valeu Demais'"; "HIDE_SUPER_THANKS_DESC" = "Oculta o banner 'Comprar Valeu Demais' nos Shorts."; +"HIDE_SUBCRIPTIONS" = "Ocultar o botão Inscrições"; +"HIDE_SUBCRIPTIONS_DESC" = "Oculta o botão Inscrições que aparece quando pausado."; + "DISABLE_RESUME_TO_SHORTS" = "Desativar voltar para os Shorts"; "DISABLE_RESUME_TO_SHORTS_DESC" = "Se você fechar o YouTube enquanto assiste a Shorts, os Shorts não serão reproduzidos automaticamente na próxima vez que você iniciar o YouTube."; -// Theme -"THEME_OPTIONS" = "Opções de Temas"; - -"OLED_DARK_THEME" = "Modo escuro OLED (Experimental)"; -"OLED_DARK_THEME_2" = "Modo escuro OLED"; -"OLED_DARK_THEME_DESC" = "Pode não funcionar corretamente em alguns casos. A reinicialização do app é necessária após você ativar/desativar essa opção."; - -"OLD_DARK_THEME" = "Antigo tema escuro"; -"OLD_DARK_THEME_DESC" = "Tema escuro do YouTube antigo (tema cinza). A reinicialização do app é necessária."; - -"DEFAULT_THEME" = "Padrão"; -"DEFAULT_THEME_DESC" = "Tema escuro padrão do YouTube. A reinicialização do app é necessária."; - -"OLED_KEYBOARD" = "Teclado OLED (Experimental)"; -"OLED_KEYBOARD_DESC" = "Pode não funcionar corretamente em alguns casos. A reinicialização do app é necessária."; - // Miscellaneous "MISCELLANEOUS" = "Diversos"; @@ -118,20 +106,17 @@ "DISABLE_HINTS" = "Desativar dicas"; "DISABLE_HINTS_DESC" = "Desativa as dicas de recursos do YouTube que geralmente são exibidas quando o aplicativo é instalado recentemente."; -"ENABLE_FLEX" = "Ativar FLEX"; -"ENABLE_FLEX_DESC" = "Ativa o FLEX para depuração (não recomendado). Deixe isso desligado, a menos que você saiba o que está fazendo."; - "ENABLE_YT_STARTUP_ANIMATION" = "Ativar animação de inicialização do YouTube"; "ENABLE_YT_STARTUP_ANIMATION_DESC" = ""; -"FIX_GOOGLE_SIGNIN" = "Corrigir o login do Google (somente para usuários da TrollStore)"; -"FIX_GOOGLE_SIGNIN_DESC" = "Ative esta opção somente quando você não conseguir fazer login com sua conta do Google e o aplicativo foi instalado via TrollStore. Se você conseguir fazer login normalmente, mantenha-o desativado. A reinicialização do app é necessária."; - "HIDE_CHIP_BAR" = "Ocultar a Barra superior"; "HIDE_CHIP_BAR_DESC" = "Oculta a Barra superior nos Feeds iniciais (Tendências, Música, Jogos...) e Feeds de inscrições (Todos os vídeos, Continuar assistindo...). A reinicialização do app é necessária."; "HIDE_PLAY_NEXT_IN_QUEUE" = "Hide \"Play next in queue\""; -"HIDE_PLAY_NEXT_IN_QUEUE_DESC" = "Hide the premium \"Play next in queue\" option in video context menus"; +"HIDE_PLAY_NEXT_IN_QUEUE_DESC" = ""; + +"IPHONE_LAYOUT" = "Layout do iPhone"; +"IPHONE_LAYOUT_DESC" = "Alterne para usar o Layout do iPhone. A reinicialização do app é necessária."; "NEW_MINIPLAYER_STYLE" = "Novo estilo de barra de miniplayer (BigYTMiniPlayer)"; "NEW_MINIPLAYER_STYLE_DESC" = "A reinicialização do app é necessária."; @@ -139,5 +124,8 @@ "YT_RE_EXPLORE" = "Substituir a guia Shorts pela guia Explorar (YTReExplore)"; "YT_RE_EXPLORE_DESC" = "A reinicialização do app é necessária."; -"IPHONE_LAYOUT" = "Layout do iPhone"; -"IPHONE_LAYOUT_DESC" = "Alterne para usar o Layout do iPhone. A reinicialização do app é necessária."; +"ENABLE_FLEX" = "Ativar FLEX"; +"ENABLE_FLEX_DESC" = "Ativa o FLEX para depuração (não recomendado). Deixe isso desligado, a menos que você saiba o que está fazendo."; + +"FIX_GOOGLE_SIGNIN" = "Corrigir o login do Google (somente para usuários da TrollStore)"; +"FIX_GOOGLE_SIGNIN_DESC" = "Ative esta opção somente quando você não conseguir fazer login com sua conta do Google e o aplicativo foi instalado via TrollStore. Se você conseguir fazer login normalmente, mantenha-o desativado. A reinicialização do app é necessária."; diff --git a/Localizations/uYouPlus.bundle/ro.lproj/Localizable.strings b/Localizations/uYouPlus.bundle/ro.lproj/Localizable.strings index 989360f..9a66fb0 100644 --- a/Localizations/uYouPlus.bundle/ro.lproj/Localizable.strings +++ b/Localizations/uYouPlus.bundle/ro.lproj/Localizable.strings @@ -1,30 +1,55 @@ -// Settings +// About +"ABOUT" = "About"; + "VERSION" = "Versiune uYouPlus: %@"; "VERSION_CHECK" = "Căutare actualizări"; -// Video player options -"VIDEO_PLAYER_OPTIONS" = "Video Player Options"; +"REPORT_AN_ISSUE" = "Report an issue"; +"ADD_TITLE" = "Add your title here..."; -"AUTO_FULLSCREEN" = "Auto Ecran Întreg (YTAutoFullScreen)"; -"AUTO_FULLSCREEN_DESC" = "Redare automată video pe ecran complet."; +"QUIT_YOUTUBE" = "Quit YouTube"; + +"RESTART_YOUTUBE" = "Restart YouTube to apply changes"; + +// App appearance +"APP_THEME" = "App appearance"; +"THEME_OPTIONS" = "Theme options"; + +"DARK_THEME" = "Dark theme"; + +"DEFAULT_THEME" = "Default"; +"DEFAULT_THEME_DESC" = ""; + +"OLD_DARK_THEME" = "Lighter grey"; +"OLD_DARK_THEME_DESC" = "YouTube's old dark theme"; + +"OLED_DARK_THEME" = "Mod Întunecat OLED (Experimental)"; +"OLED_DARK_THEME_2" = "Mod Întunecat OLED"; +"OLED_DARK_THEME_DESC" = "Este posibil să nu funcționeze corect în anumite cazuri. Este necesară repornirea aplicației după ce această opțiune este activată/dezactivată."; + +"OLED_KEYBOARD" = "Tastatură OLED (Experimental)"; +"OLED_KEYBOARD_DESC" = "Este posibil să nu funcționeze corect în anumite cazuri. Este necesară repornirea aplicației."; + +// Video player options +"VIDEO_PLAYER_OPTIONS" = "Video player options"; "DISABLE_DOUBLE_TAP_TO_SEEK" = "Disable double tap to seek"; "DISABLE_DOUBLE_TAP_TO_SEEK_DESC" = ""; "SNAP_TO_CHAPTER" = "Disable snap to chapter"; -"SNAP_TO_CHAPTER_DESC" = "Disable auto snap to chapter when seeking videos. App restart is required."; +"SNAP_TO_CHAPTER_DESC" = "Disables auto snap to chapter when seeking through videos"; "PINCH_TO_ZOOM" = "Disable pinch to zoom"; -"PINCH_TO_ZOOM_DESC" = "App restart is required."; +"PINCH_TO_ZOOM_DESC" = ""; "YT_MINIPLAYER" = "Activare Miniplayer pentru toate videoclipurile YouTube"; "YT_MINIPLAYER_DESC" = "De exemplu, videoclipurile destinate pentri copii"; -"STOCK_VOLUME_HUD" = "Use iOS stock volume HUD"; +"STOCK_VOLUME_HUD" = "Use stock iOS volume HUD"; "STOCK_VOLUME_HUD_DESC" = ""; // Video controls overlay options -"VIDEO_CONTROLS_OVERLAY_OPTIONS" = "Video Controls Overlay Options"; +"VIDEO_CONTROLS_OVERLAY_OPTIONS" = "Video controls overlay options"; "HIDE_AUTOPLAY_SWITCH" = "Ascunde comutatorul Redare automată"; "HIDE_AUTOPLAY_SWITCH_DESC" = "Ascunde comutatorul Redare automată din controalele video."; @@ -38,8 +63,8 @@ "HIDE_PAID_PROMOTION_CARDS" = "Ascunde banner-ul Promovare Plătită"; "HIDE_PAID_PROMOTION_CARDS_DESC" = "Ascunde banner-ul 'Include Promovare Plătită' în unele videoclipuri."; -"HIDE_CHANNEL_WATERMARK" = "Hide Channel Watermark"; -"HIDE_CHANNEL_WATERMARK_DESC" = "Hide channel's watermark in video controls overlay. App restart is required."; +"HIDE_CHANNEL_WATERMARK" = "Hide channel watermark"; +"HIDE_CHANNEL_WATERMARK_DESC" = ""; "HIDE_PREVIOUS_AND_NEXT_BUTTON" = "Ascunde butoanele Înainte/Înapoi"; "HIDE_PREVIOUS_AND_NEXT_BUTTON_DESC" = "Ascunde butoanele Înainte/Înapoi din controalele video."; @@ -47,63 +72,26 @@ "REPLACE_PREVIOUS_NEXT_BUTTON" = "Înlocuire butoane Înainte/Înapoi"; "REPLACE_PREVIOUS_NEXT_BUTTON_DESC" = "Înlocuiește butoanele Înainte/Înapoi cu butoanele derulare Înainte/Înapoi. Este necesară repornirea aplicației."; -"HIDE_HOVER_CARD" = "Ascunde ecranele de final (YTNoHoverCards)"; -"HIDE_HOVER_CARD_DESC" = "Ascunde ecranele de final de la sfârșitul videoclipurilor."; - -"HIDE_RIGHT_PANEL" = "Hide the right panel in fullscreen mode"; -"HIDE_RIGHT_PANEL_DESC" = "App restart is required."; - "RED_PROGRESS_BAR" = "Red progress bar"; "RED_PROGRESS_BAR_DESC" = "Bring back the red progress bar. App restart is required."; -"DONT_EAT_MY_CONTENT" = "Previne apariția Notch/Island pe content video 2:1 (DontEatMyContent)"; -"DONT_EAT_MY_CONTENT_DESC" = "Previne tăierea conținutului video 2:1 de către Notch/Dynamic Island . Este necesară repornirea aplicației."; +"HIDE_HOVER_CARD" = "Ascunde ecranele de final (YTNoHoverCards)"; +"HIDE_HOVER_CARD_DESC" = "Ascunde ecranele de final de la sfârșitul videoclipurilor."; + +"HIDE_RIGHT_PANEL" = "Hide engagement panels in full screen"; +"HIDE_RIGHT_PANEL_DESC" = "Hides right panels (e.g., comments, live chat, etc.) in landscape"; // Shorts controls overlay options -"SHORTS_CONTROLS_OVERLAY_OPTIONS" = "Shorts Controls Overlay Options"; +"SHORTS_CONTROLS_OVERLAY_OPTIONS" = "Shorts controls overlay options"; -"HIDE_SHORTS_CHANNEL_AVATAR" = "Hide Shorts channel's avatar"; -"HIDE_SHORTS_CHANNEL_AVATAR_DESC" = ""; +"HIDE_SUPER_THANKS" = "Hide \"Buy Super Thanks\" banner"; +"HIDE_SUPER_THANKS_DESC" = ""; -"HIDE_SHORTS_DISLIKE_BUTTON" = "Hide Shorts dislike button"; -"HIDE_SHORTS_DISLIKE_BUTTON_DESC" = ""; - -"HIDE_SHORTS_COMMENT_BUTTON" = "Hide Shorts comment button"; -"HIDE_SHORTS_COMMENT_BUTTON_DESC" = ""; - -"HIDE_SHORTS_REMIX_BUTTON" = "Hide Shorts remix button"; -"HIDE_SHORTS_REMIX_BUTTON_DESC" = ""; - -"HIDE_SHORTS_SHARE_BUTTON" = "Hide Shorts share button"; -"HIDE_SHORTS_SHARE_BUTTON_DESC" = ""; - -"HIDE_UYOU_SHORTS_DOWNLOAD_BUTTON" = "Hide uYou's download buttons in Shorts"; -"HIDE_UYOU_SHORTS_DOWNLOAD_BUTTON_DESC" = ""; - -"HIDE_SUBCRIPTIONS" = "Hide Subscriptions button"; -"HIDE_SUBCRIPTIONS_DESC" = "Hide Subscriptions button which shows up when paused."; - -"HIDE_SUPER_THANKS" = "Hide 'Buy Super Thanks' banner"; -"HIDE_SUPER_THANKS_DESC" = "Hide the 'Buy Super Thanks' banner in Shorts."; +"HIDE_SUBCRIPTIONS" = "Hide subscriptions button"; +"HIDE_SUBCRIPTIONS_DESC" = ""; "DISABLE_RESUME_TO_SHORTS" = "Disable resume to Shorts"; -"DISABLE_RESUME_TO_SHORTS_DESC" = "If you close YouTube while watching Shorts, Shorts won‘t automatically play next time you launch YouTube."; - -// Theme -"THEME_OPTIONS" = "Theme Options"; - -"OLED_DARK_THEME" = "Mod Întunecat OLED (Experimental)"; -"OLED_DARK_THEME_2" = "Mod Întunecat OLED"; -"OLED_DARK_THEME_DESC" = "Este posibil să nu funcționeze corect în anumite cazuri. Este necesară repornirea aplicației după ce această opțiune este activată/dezactivată."; - -"OLD_DARK_THEME" = "Old dark theme"; -"OLD_DARK_THEME_DESC" = "Old YouTube's dark theme (grey theme). App restart is required."; - -"DEFAULT_THEME" = "Default"; -"DEFAULT_THEME_DESC" = "Default dark(er) theme of YouTube. App restart is required."; - -"OLED_KEYBOARD" = "Tastatură OLED (Experimental)"; -"OLED_KEYBOARD_DESC" = "Este posibil să nu funcționeze corect în anumite cazuri. Este necesară repornirea aplicației."; +"DISABLE_RESUME_TO_SHORTS_DESC" = "If you close YouTube while watching Shorts, this prevents it from automatically resuming the next time you reopen the app"; // Miscellaneous "MISCELLANEOUS" = "Miscellaneous"; @@ -116,22 +104,19 @@ "MSG_CANCEL" = "Anulare"; "DISABLE_HINTS" = "Disable hints"; -"DISABLE_HINTS_DESC" = "Disable feature hints from YouTube that usually display when the app is freshly installed."; +"DISABLE_HINTS_DESC" = "Disables YouTube feature hints that are displayed when the app is newly installed"; -"ENABLE_FLEX" = "Enable FLEX"; -"ENABLE_FLEX_DESC" = "Enable FLEX for debugging (not recommended). Leave this off unless you know what you are doing."; +"ENABLE_YT_STARTUP_ANIMATION" = "Enable YouTube startup animation"; +"ENABLE_YT_STARTUP_ANIMATION_DESC" = ""; -"HIDE_UYOU_SHORTS_DOWNLOAD_BUTTON" = "Hide uYou's buttons"; -"HIDE_UYOU_SHORTS_DOWNLOAD_BUTTON_DESC" = "Hide uYou's download buttons in Shorts."; - -"FIX_GOOGLE_SIGNIN" = "Rezolvare problemă autentificare cont Google (doar pentru utilizatorii TrollStore)"; -"FIX_GOOGLE_SIGNIN_DESC" = "Activează această opțiune doar în cazul în care nu te poți autentifica în contul tău Google și apariția a fost instalată via TrollStore. Dacă te poți autentifica fără probleme, țineți setarea dezactivată. Este necesară repornirea aplicației."; - -"HIDE_CHIP_BAR" = "Hide the Upper bar"; -"HIDE_CHIP_BAR_DESC" = "Hide Upper bar in the Home feeds (Trends, Music, Gaming...) and Subcription feeds (All videos, Continue watching...). App restart is required."; +"HIDE_CHIP_BAR" = "Hide upper bar"; +"HIDE_CHIP_BAR_DESC" = "Hides the upper bar in home and subscription feeds (e.g., All videos, Continue watching, etc.)"; "HIDE_PLAY_NEXT_IN_QUEUE" = "Hide \"Play next in queue\""; -"HIDE_PLAY_NEXT_IN_QUEUE_DESC" = "Hide the premium \"Play next in queue\" option in video context menus"; +"HIDE_PLAY_NEXT_IN_QUEUE_DESC" = ""; + +"IPHONE_LAYOUT" = "Force iPhone layout"; +"IPHONE_LAYOUT_DESC" = ""; "NEW_MINIPLAYER_STYLE" = "Stil nou bară Miniplayer (BigYTMiniPlayer)"; "NEW_MINIPLAYER_STYLE_DESC" = "Este necesară repornirea aplicației."; @@ -139,5 +124,8 @@ "YT_RE_EXPLORE" = "Înlocuire fila Shorts cu fila Explore (YTReExplore)"; "YT_RE_EXPLORE_DESC" = "Este necesară repornirea aplicației."; -"IPHONE_LAYOUT" = "iPhone Layout"; -"IPHONE_LAYOUT_DESC" = "Toggle to use the iPhone Layout. App restart is required."; +"ENABLE_FLEX" = "Enable FLEX"; +"ENABLE_FLEX_DESC" = "Enables FLEX for debugging"; + +"FIX_GOOGLE_SIGNIN" = "Rezolvare problemă autentificare cont Google (doar pentru utilizatorii TrollStore)"; +"FIX_GOOGLE_SIGNIN_DESC" = "Activează această opțiune doar în cazul în care nu te poți autentifica în contul tău Google și apariția a fost instalată via TrollStore. Dacă te poți autentifica fără probleme, țineți setarea dezactivată. Este necesară repornirea aplicației."; diff --git a/Localizations/uYouPlus.bundle/ru.lproj/Localizable.strings b/Localizations/uYouPlus.bundle/ru.lproj/Localizable.strings index 789ef54..9b1d570 100644 --- a/Localizations/uYouPlus.bundle/ru.lproj/Localizable.strings +++ b/Localizations/uYouPlus.bundle/ru.lproj/Localizable.strings @@ -1,13 +1,38 @@ -/* uYouPlusSettings */ +// About +"ABOUT" = "About"; + "VERSION" = "Версия uYouPlus: %@"; "VERSION_CHECK" = "Нажмите, чтобы проверить доступные обновления."; +"REPORT_AN_ISSUE" = "Report an issue"; +"ADD_TITLE" = "Add your title here..."; + +"QUIT_YOUTUBE" = "Quit YouTube"; + +"RESTART_YOUTUBE" = "Restart YouTube to apply changes"; + +// App appearance +"APP_THEME" = "App appearance"; +"THEME_OPTIONS" = "Параметры темы"; + +"DARK_THEME" = "Dark theme"; + +"DEFAULT_THEME" = "По умолчанию"; +"DEFAULT_THEME_DESC" = "Темная(новая) тема YouTube по умолчанию. Требуется перезапуск приложения."; + +"OLD_DARK_THEME" = "Старая темная тема"; +"OLD_DARK_THEME_DESC" = "Старая темная тема YouTube (серая тема). Требуется перезапуск приложения."; + +"OLED_DARK_THEME" = "Темный режим для OLED (Бета)"; +"OLED_DARK_THEME_2" = "Темный режим для OLED"; +"OLED_DARK_THEME_DESC" = "Понадобится перезагрузка при смене цветовой темы приложения. Если OLED-тема не включится, попробуйте переключиться не светлый режим и обратно, а затем перезагрузить приложение."; + +"OLED_KEYBOARD" = "OLED-клавиатура (Бета)"; +"OLED_KEYBOARD_DESC" = "Возможно, на некоторых устройствах будет работать криво. Потребуется перезагрузка."; + // Video player options "VIDEO_PLAYER_OPTIONS" = "Параметры видеоплеера"; -"AUTO_FULLSCREEN" = "Полноэкранный режим (YTAutoFullScreen)"; -"AUTO_FULLSCREEN_DESC" = "Автоматически открывает ролики в полноэкранном режиме."; - "DISABLE_DOUBLE_TAP_TO_SEEK" = "Отключить двойное нажатие для перемотки"; "DISABLE_DOUBLE_TAP_TO_SEEK_DESC" = ""; @@ -47,64 +72,27 @@ "REPLACE_PREVIOUS_NEXT_BUTTON" = "Кнопки перемотки вместо «Пред.» и «След.»"; "REPLACE_PREVIOUS_NEXT_BUTTON_DESC" = "Заменяет переключатели «Следующий» и «Предыдущий» на кнопки перемотки на 10 сек. Потребуется перезагрузка."; +"RED_PROGRESS_BAR" = "Красная полоса воспроизведения"; +"RED_PROGRESS_BAR_DESC" = "Возвращает красную полосу воспроизведения. Требуется перезапуск приложения."; + "HIDE_HOVER_CARD" = "Скрыть рекомендации (YTNoHoverCards)"; "HIDE_HOVER_CARD_DESC" = "Скрывает эскизы, отображаемые по окончанию видеоролика."; "HIDE_RIGHT_PANEL" = "Скрыть правую панель в полноэкранном режиме"; "HIDE_RIGHT_PANEL_DESC" = "Требуется перезапуск приложения."; -"RED_PROGRESS_BAR" = "Красная полоса воспроизведения"; -"RED_PROGRESS_BAR_DESC" = "Возвращает красную полосу воспроизведения. Требуется перезапуск приложения."; - -"DONT_EAT_MY_CONTENT" = "Запретить обрезку контента (DontEatMyContent)"; -"DONT_EAT_MY_CONTENT_DESC" = "Запрещает обрезать контент с соотношением сторон 2:1 на устройствах с вырезом. Потребуется перезагрузка."; - // Shorts controls overlay options "SHORTS_CONTROLS_OVERLAY_OPTIONS" = "Параметры элементов оверлея в Shorts"; -"HIDE_SHORTS_CHANNEL_AVATAR" = "Скрыть аватар канала в Shorts"; -"HIDE_SHORTS_CHANNEL_AVATAR_DESC" = ""; - -"HIDE_SHORTS_DISLIKE_BUTTON" = "Скрыть кнопку 'Не нравится' в Shorts "; -"HIDE_SHORTS_DISLIKE_BUTTON_DESC" = ""; - -"HIDE_SHORTS_COMMENT_BUTTON" = "Скрыть кнопку комментария в Shorts"; -"HIDE_SHORTS_COMMENT_BUTTON_DESC" = ""; - -"HIDE_SHORTS_REMIX_BUTTON" = "Скрыть кнопку 'Ремикс' в Shorts"; -"HIDE_SHORTS_REMIX_BUTTON_DESC" = ""; - -"HIDE_SHORTS_SHARE_BUTTON" = "Скрыть кнопку 'Поделиться' в Shorts"; -"HIDE_SHORTS_SHARE_BUTTON_DESC" = ""; - -"HIDE_UYOU_SHORTS_DOWNLOAD_BUTTON" = "Скрыть кнопки uYou"; -"HIDE_UYOU_SHORTS_DOWNLOAD_BUTTON_DESC" = "Скрывает кнопки uYou для скачивания видеороликов Shorts."; - -"HIDE_SUBCRIPTIONS" = "Скрыть кнопку подписок"; -"HIDE_SUBCRIPTIONS_DESC" = "Скрыть кнопку подписки, которая отображается при приостановке."; - "HIDE_SUPER_THANKS" = "Скрыть баннер 'Купить суперспасибо'"; "HIDE_SUPER_THANKS_DESC" = "Скрывает баннер 'Купить суперспасибо' в Shorts."; +"HIDE_SUBCRIPTIONS" = "Скрыть кнопку подписок"; +"HIDE_SUBCRIPTIONS_DESC" = "Скрыть кнопку подписки, которая отображается при приостановке."; + "DISABLE_RESUME_TO_SHORTS" = "Отключить продолжение видео Shorts"; "DISABLE_RESUME_TO_SHORTS_DESC" = "Если закрыть YouTube во время просмотра видео Shorts, то при следующем запуске YouTube видео Shorts не будет автоматически воспроизводиться."; -// Theme -"THEME_OPTIONS" = "Параметры темы"; - -"OLED_DARK_THEME" = "Темный режим для OLED (Бета)"; -"OLED_DARK_THEME_2" = "Темный режим для OLED"; -"OLED_DARK_THEME_DESC" = "Понадобится перезагрузка при смене цветовой темы приложения. Если OLED-тема не включится, попробуйте переключиться не светлый режим и обратно, а затем перезагрузить приложение."; - -"OLD_DARK_THEME" = "Старая темная тема"; -"OLD_DARK_THEME_DESC" = "Старая темная тема YouTube (серая тема). Требуется перезапуск приложения."; - -"DEFAULT_THEME" = "По умолчанию"; -"DEFAULT_THEME_DESC" = "Темная(новая) тема YouTube по умолчанию. Требуется перезапуск приложения."; - -"OLED_KEYBOARD" = "OLED-клавиатура (Бета)"; -"OLED_KEYBOARD_DESC" = "Возможно, на некоторых устройствах будет работать криво. Потребуется перезагрузка."; - // Miscellaneous "MISCELLANEOUS" = "Другое"; @@ -118,20 +106,17 @@ "DISABLE_HINTS" = "Отключить подсказки"; "DISABLE_HINTS_DESC" = "Отключает подсказки функций с YouTube, которые обычно отображаются при свежей установке приложения."; -"ENABLE_FLEX" = "Включить FLEX"; -"ENABLE_FLEX_DESC" = "Включите FLEX для отладки (не рекомендуется). Не включайте эту опцию, если вы не знаете, что делаете."; - "ENABLE_YT_STARTUP_ANIMATION" = "Включить анимацию запуска YouTube"; "ENABLE_YT_STARTUP_ANIMATION_DESC" = ""; -"FIX_GOOGLE_SIGNIN" = "Исправить авторизацию (TrollStore)"; -"FIX_GOOGLE_SIGNIN_DESC" = "Включите данную опцию только, если не можете войти в учетную запись Google, а приложение установлено через TrollStore. Если удается авторизоваться как обычно, оставьте данную опцию отключенной. Потребуется перезагрузка."; - "HIDE_CHIP_BAR" = "Скрыть верхнюю панель"; "HIDE_CHIP_BAR_DESC" = "Скрывает верхнюю панель на вкладках «Главная» (Тренды, Музыка, Игры...) и «Подписки» (Все видео, Продолжить просмотр...)\nТребуется перезапуск приложения."; "HIDE_PLAY_NEXT_IN_QUEUE" = "Hide \"Play next in queue\""; -"HIDE_PLAY_NEXT_IN_QUEUE_DESC" = "Hide the premium \"Play next in queue\" option in video context menus"; +"HIDE_PLAY_NEXT_IN_QUEUE_DESC" = ""; + +"IPHONE_LAYOUT" = "Оформление приложения как на iPhone"; +"IPHONE_LAYOUT_DESC" = "Переключает оформление приложения как на iPhone. Требуется перезапуск приложения."; "NEW_MINIPLAYER_STYLE" = "Мини-плеер в стиле iPad (BigYTMiniPlayer)"; "NEW_MINIPLAYER_STYLE_DESC" = "Потребуется перезагрузка."; @@ -139,5 +124,8 @@ "YT_RE_EXPLORE" = "Вкладка «Навигация» вместо «Shorts»"; "YT_RE_EXPLORE_DESC" = "Потребуется перезагрузка."; -"IPHONE_LAYOUT" = "Оформление приложения как на iPhone"; -"IPHONE_LAYOUT_DESC" = "Переключает оформление приложения как на iPhone. Требуется перезапуск приложения."; +"ENABLE_FLEX" = "Включить FLEX"; +"ENABLE_FLEX_DESC" = "Включите FLEX для отладки (не рекомендуется). Не включайте эту опцию, если вы не знаете, что делаете."; + +"FIX_GOOGLE_SIGNIN" = "Исправить авторизацию (TrollStore)"; +"FIX_GOOGLE_SIGNIN_DESC" = "Включите данную опцию только, если не можете войти в учетную запись Google, а приложение установлено через TrollStore. Если удается авторизоваться как обычно, оставьте данную опцию отключенной. Потребуется перезагрузка."; diff --git a/Localizations/uYouPlus.bundle/template.lproj/Localizable.strings b/Localizations/uYouPlus.bundle/template.lproj/Localizable.strings index 0b3a1d9..7a571fe 100644 --- a/Localizations/uYouPlus.bundle/template.lproj/Localizable.strings +++ b/Localizations/uYouPlus.bundle/template.lproj/Localizable.strings @@ -13,146 +13,134 @@ https://github.com/PoomSmart/YTUHD/tree/master/layout/Library/Application%20Supp https://github.com/PoomSmart/Return-YouTube-Dislikes/tree/main/layout/Library/Application%20Support/RYD.bundle */ -// Settings -"VERSION" = "uYouPlus's version: %@"; +// About +"ABOUT" = "About"; + +"VERSION" = "Version"; "VERSION_CHECK" = "Tap to check for updates!"; -// Video player options -"VIDEO_PLAYER_OPTIONS" = "Video Player Options"; +"REPORT_AN_ISSUE" = "Report an issue"; +"ADD_TITLE" = "Add your title here..."; -"AUTO_FULLSCREEN" = "Auto full screen (YTAutoFullScreen)"; -"AUTO_FULLSCREEN_DESC" = "Autoplay videos at full screen."; +"QUIT_YOUTUBE" = "Quit YouTube"; + +"RESTART_YOUTUBE" = "Restart YouTube to apply changes"; + +// App appearance +"APP_THEME" = "App appearance"; +"THEME_OPTIONS" = "Theme options"; + +"DARK_THEME" = "Dark theme"; + +"DEFAULT_THEME" = "Default"; +"DEFAULT_THEME_DESC" = ""; + +"OLD_DARK_THEME" = "Lighter grey"; +"OLD_DARK_THEME_DESC" = "YouTube's old dark theme"; + +"OLED_DARK_THEME" = "OLED (experimental)"; +"OLED_DARK_THEME_2" = "OLED"; +"OLED_DARK_THEME_DESC" = "Pure-black dark theme"; + +"OLED_KEYBOARD" = "OLED keyboard (experimental)"; +"OLED_KEYBOARD_DESC" = ""; + +// Video player options +"VIDEO_PLAYER_OPTIONS" = "Video player options"; "DISABLE_DOUBLE_TAP_TO_SEEK" = "Disable double tap to seek"; "DISABLE_DOUBLE_TAP_TO_SEEK_DESC" = ""; "SNAP_TO_CHAPTER" = "Disable snap to chapter"; -"SNAP_TO_CHAPTER_DESC" = "Disable auto snap to chapter when seeking through videos. App restart is required."; +"SNAP_TO_CHAPTER_DESC" = "Disables auto snap to chapter when seeking through videos"; "PINCH_TO_ZOOM" = "Disable pinch to zoom"; -"PINCH_TO_ZOOM_DESC" = "App restart is required."; +"PINCH_TO_ZOOM_DESC" = ""; -"YT_MINIPLAYER" = "Enable the mini player for all YouTube videos"; -"YT_MINIPLAYER_DESC" = "Kid videos for example."; +"YT_MINIPLAYER" = "Enable miniplayer for all videos"; +"YT_MINIPLAYER_DESC" = "The miniplayer cannot be activated for certain videos (e.g., kids videos). This option bypasses that"; -"STOCK_VOLUME_HUD" = "Use iOS stock volume HUD"; +"STOCK_VOLUME_HUD" = "Use stock iOS volume HUD"; "STOCK_VOLUME_HUD_DESC" = ""; // Video controls overlay options -"VIDEO_CONTROLS_OVERLAY_OPTIONS" = "Video Controls Overlay Options"; +"VIDEO_CONTROLS_OVERLAY_OPTIONS" = "Video controls overlay options"; -"HIDE_AUTOPLAY_SWITCH" = "Hide Autoplay switch"; -"HIDE_AUTOPLAY_SWITCH_DESC" = "Hide the Autoplay switch in video controls overlay."; +"HIDE_AUTOPLAY_SWITCH" = "Hide autoplay switch"; +"HIDE_AUTOPLAY_SWITCH_DESC" = ""; -"HIDE_SUBTITLES_BUTTON" = "Hide Subtitles button"; -"HIDE_SUBTITLES_BUTTON_DESC" = "Hide the Subtitles button in video controls overlay."; +"HIDE_SUBTITLES_BUTTON" = "Hide subtitles button"; +"HIDE_SUBTITLES_BUTTON_DESC" = ""; -"HIDE_HUD_MESSAGES" = "Hide HUD Messages"; -"HIDE_HUD_MESSAGES_DESC" = "Example: CC is turned on/off, Video loop is on,..."; +"HIDE_HUD_MESSAGES" = "Hide HUD messages"; +"HIDE_HUD_MESSAGES_DESC" = "Hides snackbars that display for certain actions (e.g., CC turned on/off)"; -"HIDE_PAID_PROMOTION_CARDS" = "Hide Paid Promotion banner"; -"HIDE_PAID_PROMOTION_CARDS_DESC" = "Hide the 'Includes Paid Promotions' banner in some videos."; +"HIDE_PAID_PROMOTION_CARDS" = "Hide paid promotion banner"; +"HIDE_PAID_PROMOTION_CARDS_DESC" = ""; "HIDE_CHANNEL_WATERMARK" = "Hide channel watermark"; -"HIDE_CHANNEL_WATERMARK_DESC" = "Hide channel's watermark in video controls overlay. App restart is required."; +"HIDE_CHANNEL_WATERMARK_DESC" = ""; -"HIDE_PREVIOUS_AND_NEXT_BUTTON" = "Hide Previous and Next button"; -"HIDE_PREVIOUS_AND_NEXT_BUTTON_DESC" = "Hide the Previous and Next button in video controls overlay."; +"HIDE_PREVIOUS_AND_NEXT_BUTTON" = "Hide previous and next buttons"; +"HIDE_PREVIOUS_AND_NEXT_BUTTON_DESC" = ""; -"REPLACE_PREVIOUS_NEXT_BUTTON" = "Replace Previous and Next button"; -"REPLACE_PREVIOUS_NEXT_BUTTON_DESC" = "Replace the Previous and Next buttons with the Fast forward and Rewind buttons. App restart is required."; - -"HIDE_HOVER_CARD" = "Hide End screens hover cards (YTNoHoverCards)"; -"HIDE_HOVER_CARD_DESC" = "Hide the creator End screens (thumbnails) at the end of videos."; - -"HIDE_RIGHT_PANEL" = "Hide the right panel in fullscreen mode"; -"HIDE_RIGHT_PANEL_DESC" = "App restart is required."; +"REPLACE_PREVIOUS_NEXT_BUTTON" = "Use fast forward and rewind buttons"; +"REPLACE_PREVIOUS_NEXT_BUTTON_DESC" = "Replaces previous and next buttons with fast forward and rewind"; "RED_PROGRESS_BAR" = "Red progress bar"; -"RED_PROGRESS_BAR_DESC" = "Bring back the red progress bar. App restart is required."; +"RED_PROGRESS_BAR_DESC" = ""; -"DONT_EAT_MY_CONTENT" = "Prevent Notch/Island on 2:1 video content (DontEatMyContent)"; -"DONT_EAT_MY_CONTENT_DESC" = "Prevent the notch/Dynamic Island from munching on 2:1 video content in YouTube. App restart is required."; +"HIDE_HOVER_CARD" = "YTNoHoverCards"; +"HIDE_HOVER_CARD_DESC" = "Hides videos' end screens"; + +"HIDE_RIGHT_PANEL" = "Hide engagement panels in full screen"; +"HIDE_RIGHT_PANEL_DESC" = "Hides right panels (e.g., comments, live chat, etc.) in landscape"; // Shorts controls overlay options -"SHORTS_CONTROLS_OVERLAY_OPTIONS" = "Shorts Controls Overlay Options"; +"SHORTS_CONTROLS_OVERLAY_OPTIONS" = "Shorts controls overlay options"; -"HIDE_SHORTS_CHANNEL_AVATAR" = "Hide Shorts channel's avatar"; -"HIDE_SHORTS_CHANNEL_AVATAR_DESC" = ""; +"HIDE_SUPER_THANKS" = "Hide \"Buy Super Thanks\" banner"; +"HIDE_SUPER_THANKS_DESC" = ""; -"HIDE_SHORTS_DISLIKE_BUTTON" = "Hide Shorts dislike button"; -"HIDE_SHORTS_DISLIKE_BUTTON_DESC" = ""; - -"HIDE_SHORTS_COMMENT_BUTTON" = "Hide Shorts comment button"; -"HIDE_SHORTS_COMMENT_BUTTON_DESC" = ""; - -"HIDE_SHORTS_REMIX_BUTTON" = "Hide Shorts remix button"; -"HIDE_SHORTS_REMIX_BUTTON_DESC" = ""; - -"HIDE_SHORTS_SHARE_BUTTON" = "Hide Shorts share button"; -"HIDE_SHORTS_SHARE_BUTTON_DESC" = ""; - -"HIDE_UYOU_SHORTS_DOWNLOAD_BUTTON" = "Hide uYou's buttons"; -"HIDE_UYOU_SHORTS_DOWNLOAD_BUTTON_DESC" = "Hide uYou's download buttons in Shorts."; - -"HIDE_SUBCRIPTIONS" = "Hide Subscriptions button"; -"HIDE_SUBCRIPTIONS_DESC" = "Hide Subscriptions button which shows up when paused."; - -"HIDE_SUPER_THANKS" = "Hide 'Buy Super Thanks' banner"; -"HIDE_SUPER_THANKS_DESC" = "Hide the 'Buy Super Thanks' banner in Shorts."; +"HIDE_SUBCRIPTIONS" = "Hide subscriptions button"; +"HIDE_SUBCRIPTIONS_DESC" = ""; "DISABLE_RESUME_TO_SHORTS" = "Disable resume to Shorts"; -"DISABLE_RESUME_TO_SHORTS_DESC" = "If you close YouTube while watching Shorts, Shorts won‘t automatically play next time you launch YouTube."; - -// Theme -"THEME_OPTIONS" = "Theme Options"; - -"OLED_DARK_THEME" = "OLED dark theme (Experimental)"; -"OLED_DARK_THEME_2" = "OLED dark theme"; -"OLED_DARK_THEME_DESC" = "True dark theme. Might not work correctly in some cases. App restart is required after you enable/disable this option."; - -"OLD_DARK_THEME" = "Old dark theme"; -"OLD_DARK_THEME_DESC" = "Old YouTube's dark theme (grey theme). App restart is required."; - -"DEFAULT_THEME" = "Default"; -"DEFAULT_THEME_DESC" = "Default dark(er) theme of YouTube. App restart is required."; - -"OLED_KEYBOARD" = "OLED Keyboard (Experimental)"; -"OLED_KEYBOARD_DESC" = "Might not work correctly in some cases. App restart is required."; +"DISABLE_RESUME_TO_SHORTS_DESC" = "If you close YouTube while watching Shorts, this prevents it from automatically resuming the next time you reopen the app"; // Miscellaneous "MISCELLANEOUS" = "Miscellaneous"; -"CAST_CONFIRM" = "Confirm alert before casting (YTCastConfirm)"; -"CAST_CONFIRM_DESC" = "Show a confirm alert before casting to prevent accidentally hijacking TV."; -"CASTING" = "Castings"; +"CAST_CONFIRM" = "YTCastConfirm"; +"CAST_CONFIRM_DESC" = "Shows a confirmation alert before casting"; +"CASTING" = "Casting"; "MSG_ARE_YOU_SURE" = "Are you sure you want to start casting?"; "MSG_YES" = "Yes"; "MSG_CANCEL" = "Cancel"; "DISABLE_HINTS" = "Disable hints"; -"DISABLE_HINTS_DESC" = "Disable feature hints from YouTube that usually display when the app is freshly installed."; - -"ENABLE_FLEX" = "Enable FLEX"; -"ENABLE_FLEX_DESC" = "Enable FLEX for debugging (not recommended). Leave this off unless you know what you are doing."; +"DISABLE_HINTS_DESC" = "Disables YouTube feature hints that are displayed when the app is newly installed"; "ENABLE_YT_STARTUP_ANIMATION" = "Enable YouTube startup animation"; "ENABLE_YT_STARTUP_ANIMATION_DESC" = ""; -"FIX_GOOGLE_SIGNIN" = "Fix Google Sign in (for TrollStore user only)"; -"FIX_GOOGLE_SIGNIN_DESC" = "Only turn on this option when you can't sign in with your Google account and the app was installed via TrollStore. If you can log in normally, keep it disabled. App restart is required."; - -"HIDE_CHIP_BAR" = "Hide the Upper bar"; -"HIDE_CHIP_BAR_DESC" = "Hide Upper bar in the Home feeds (Trends, Music, Gaming...) and Subscription feeds (All videos, Continue watching...)."; +"HIDE_CHIP_BAR" = "Hide upper bar"; +"HIDE_CHIP_BAR_DESC" = "Hides the upper bar in home and subscription feeds (e.g., All videos, Continue watching, etc.)"; "HIDE_PLAY_NEXT_IN_QUEUE" = "Hide \"Play next in queue\""; -"HIDE_PLAY_NEXT_IN_QUEUE_DESC" = "Hide the premium \"Play next in queue\" option in video context menus"; +"HIDE_PLAY_NEXT_IN_QUEUE_DESC" = ""; -"NEW_MINIPLAYER_STYLE" = "New mini player bar style (BigYTMiniPlayer)"; -"NEW_MINIPLAYER_STYLE_DESC" = "App restart is required."; +"IPHONE_LAYOUT" = "Force iPhone layout"; +"IPHONE_LAYOUT_DESC" = ""; -"YT_RE_EXPLORE" = "Replace Shorts tab with Explore tab (YTReExplore)"; -"YT_RE_EXPLORE_DESC" = "App restart is required."; +"NEW_MINIPLAYER_STYLE" = "BigYTMiniPlayer"; +"NEW_MINIPLAYER_STYLE_DESC" = "New mini player bar style"; -"IPHONE_LAYOUT" = "iPhone Layout"; -"IPHONE_LAYOUT_DESC" = "Toggle to use the iPhone Layout. App restart is required."; +"YT_RE_EXPLORE" = "YTReExplore"; +"YT_RE_EXPLORE_DESC" = "Replaces the Shorts tab with the Explore tab"; + +"ENABLE_FLEX" = "Enable FLEX"; +"ENABLE_FLEX_DESC" = "Enables FLEX for debugging"; + +"FIX_GOOGLE_SIGNIN" = "Fix Google Sign in (for TrollStore user only)"; +"FIX_GOOGLE_SIGNIN_DESC" = "Only turn on this option when you can't sign in with your Google account and the app was installed via TrollStore. If you can log in normally, keep it disabled. App restart is required."; diff --git a/Localizations/uYouPlus.bundle/tr.lproj/Localizable.strings b/Localizations/uYouPlus.bundle/tr.lproj/Localizable.strings index b3149e1..9c440b6 100644 --- a/Localizations/uYouPlus.bundle/tr.lproj/Localizable.strings +++ b/Localizations/uYouPlus.bundle/tr.lproj/Localizable.strings @@ -1,12 +1,40 @@ -// Settings +// About +"ABOUT" = "About"; + "VERSION" = "uYouPlus'ın sürümü: %@"; "VERSION_CHECK" = "Güncellemeyi kontrol etmek için dokun!"; +"REPORT_AN_ISSUE" = "Report an issue"; +"ADD_TITLE" = "Add your title here..."; + +"QUIT_YOUTUBE" = "Quit YouTube"; + +"RESTART_YOUTUBE" = "Restart YouTube to apply changes"; + +// App appearance +"APP_THEME" = "App appearance"; +"THEME_OPTIONS" = "Tema ayarları"; + +"DARK_THEME" = "Dark theme"; + +"DEFAULT_THEME" = "Varsayılan"; +"DEFAULT_THEME_DESC" = "YouTube'un varsayılan daha karanlık teması. Uygulamanın yeniden başlatılması gerekir."; + +"OLD_DARK_THEME" = "Eski karanlık tema"; +"OLD_DARK_THEME_DESC" = "Eski YouTube'un karanlık teması (gri tema). Uygulamanın yeniden başlatılması gerekir."; + +"OLED_DARK_THEME" = "OLED Karanlık modu (Deneysel)"; +"OLED_DARK_THEME_2" = "OLED Karanlık modu"; +"OLED_DARK_THEME_DESC" = "Bazı durumlarda düzgün çalışmayabilir. Bu seçeneği etkinleştirdikten/devre dışı bıraktıktan sonra uygulamanın yeniden başlatılması gerekir."; + +"OLED_KEYBOARD" = "OLED Klavye (Deneysel)"; +"OLED_KEYBOARD_DESC" = "Bazı durumlarda düzgün çalışmayabilir. Uygulamanın yeniden başlatılması gerekir."; + // Video player options "VIDEO_PLAYER_OPTIONS" = "Video Oynatıcı Seçenekleri"; -"AUTO_FULLSCREEN" = "Otomatik Tam Ekran (YTAutoFullScreen)"; -"AUTO_FULLSCREEN_DESC" = "Videoları otomatik olarak tam ekranda oynatır."; +"DISABLE_DOUBLE_TAP_TO_SEEK" = "Disable double tap to seek"; +"DISABLE_DOUBLE_TAP_TO_SEEK_DESC" = ""; "SNAP_TO_CHAPTER" = "Bölüme geçişi devre dışı bırak"; "SNAP_TO_CHAPTER_DESC" = "Video ararken otomatik olarak bölüme geçmeyi devre dışı bırakır. Uygulamanın yeniden başlatılması gerekir."; @@ -44,64 +72,27 @@ "REPLACE_PREVIOUS_NEXT_BUTTON" = "Önceki ve Sonraki Düğmelerini Değiştir"; "REPLACE_PREVIOUS_NEXT_BUTTON_DESC" = "Önceki ve Sonraki Düğmelerini Hızlı ileri ve Geri Sar düğmeleriyle değiştir. Uygulamanın yeniden başlatılması gerekir."; +"RED_PROGRESS_BAR" = "Kırmızı ilerleme çubuğu"; +"RED_PROGRESS_BAR_DESC" = "Kırmızı ilerleme çubuğunu geri getirir. Uygulamanın yeniden başlatılması gerekir."; + "HIDE_HOVER_CARD" = "Bitiş ekranlarının üzerine gelen kartları gizle.(YTNoHoverCards)"; "HIDE_HOVER_CARD_DESC" = "Videoların sonundaki içerik oluşturucu bitiş ekranlarını (küçük resimler) gizler."; "HIDE_RIGHT_PANEL" = "Tam ekran modunda sağ paneli gizle"; "HIDE_RIGHT_PANEL_DESC" = "Uygulamanın yeniden başlatılması gerekir."; -"RED_PROGRESS_BAR" = "Kırmızı ilerleme çubuğu"; -"RED_PROGRESS_BAR_DESC" = "Kırmızı ilerleme çubuğunu geri getirir. Uygulamanın yeniden başlatılması gerekir."; - -"DONT_EAT_MY_CONTENT" = "2:1 Video İçeriğinde Çentik/Ada Önleme (DontEatMyContent)"; -"DONT_EAT_MY_CONTENT_DESC" = "Çentik/Dinamik Ada'nın YouTube'daki 2:1 video içeriğini yemesini önle. Uygulamanın yeniden başlatılması gerekir."; - // Shorts controls overlay options "SHORTS_CONTROLS_OVERLAY_OPTIONS" = "Shorts Kontroller Kaplama Seçenekleri"; -"HIDE_SHORTS_CHANNEL_AVATAR" = "Shorts kanalının avatarını gizle"; -"HIDE_SHORTS_CHANNEL_AVATAR_DESC" = ""; - -"HIDE_SHORTS_DISLIKE_BUTTON" = "Shorts beğenmeme düğmesini gizle"; -"HIDE_SHORTS_DISLIKE_BUTTON_DESC" = ""; - -"HIDE_SHORTS_COMMENT_BUTTON" = "Shorts yorum düğmesini gizle"; -"HIDE_SHORTS_COMMENT_BUTTON_DESC" = ""; - -"HIDE_SHORTS_REMIX_BUTTON" = "Shorts remix düğmesini gizle"; -"HIDE_SHORTS_REMIX_BUTTON_DESC" = ""; - -"HIDE_SHORTS_SHARE_BUTTON" = "Shorts paylaşım düğmesini gizle"; -"HIDE_SHORTS_SHARE_BUTTON_DESC" = ""; - -"HIDE_UYOU_SHORTS_DOWNLOAD_BUTTON" = "uYou'nun düğmelerini gizle"; -"HIDE_UYOU_SHORTS_DOWNLOAD_BUTTON_DESC" = "Shorts'ta uYou'nun indirme düğmelerini gizle."; - -"HIDE_SUBCRIPTIONS" = "Abonelikler düğmesini gizle "; -"HIDE_SUBCRIPTIONS_DESC" = "Duraklatıldığında görünen Abonelikler düğmesini gizle ."; - "HIDE_SUPER_THANKS" = "\"Süper Teşekkür Satın Alın\" afişini gizle"; "HIDE_SUPER_THANKS_DESC" = "Shorts'ta \"Süper Teşekkür Satın Alın\" afişini gizle."; +"HIDE_SUBCRIPTIONS" = "Abonelikler düğmesini gizle "; +"HIDE_SUBCRIPTIONS_DESC" = "Duraklatıldığında görünen Abonelikler düğmesini gizle ."; + "DISABLE_RESUME_TO_SHORTS" = "Shorts'ta kaldığı yerden devam etmeyi devre dışı bırak"; "DISABLE_RESUME_TO_SHORTS_DESC" = "Shorts izlerken YouTube'u kapatırsan Shorts, YouTube'u bir sonraki açışında otomatik olarak oynatılmaz."; -// Theme -"THEME_OPTIONS" = "Tema ayarları"; - -"OLED_DARK_THEME" = "OLED Karanlık modu (Deneysel)"; -"OLED_DARK_THEME_2" = "OLED Karanlık modu"; -"OLED_DARK_THEME_DESC" = "Bazı durumlarda düzgün çalışmayabilir. Bu seçeneği etkinleştirdikten/devre dışı bıraktıktan sonra uygulamanın yeniden başlatılması gerekir."; - -"OLD_DARK_THEME" = "Eski karanlık tema"; -"OLD_DARK_THEME_DESC" = "Eski YouTube'un karanlık teması (gri tema). Uygulamanın yeniden başlatılması gerekir."; - -"DEFAULT_THEME" = "Varsayılan"; -"DEFAULT_THEME_DESC" = "YouTube'un varsayılan daha karanlık teması. Uygulamanın yeniden başlatılması gerekir."; - -"OLED_KEYBOARD" = "OLED Klavye (Deneysel)"; -"OLED_KEYBOARD_DESC" = "Bazı durumlarda düzgün çalışmayabilir. Uygulamanın yeniden başlatılması gerekir."; - // Miscellaneous "MISCELLANEOUS" = "Diğer"; @@ -115,20 +106,17 @@ "DISABLE_HINTS" = "İpuçlarını devre dışı bırak"; "DISABLE_HINTS_DESC" = "Genellikle uygulama yeni yüklendiğinde görüntülenen YouTube'dan özellik ipuçlarını devre dışı bırak."; -"ENABLE_FLEX" = "FLEX'i etkinleştir"; -"ENABLE_FLEX_DESC" = "Hata ayıklama için FLEX'i etkinleştir (önerilmez). Ne yaptığını bilmiyorsan bunu kapalı bırak."; - "ENABLE_YT_STARTUP_ANIMATION" = "YouTube başlangıç animasyonunu etkinleştir"; "ENABLE_YT_STARTUP_ANIMATION_DESC" = ""; -"FIX_GOOGLE_SIGNIN" = "Google Oturumu Açma'yı düzeltin (yalnızca TrollStore kullanıcıları için)"; -"FIX_GOOGLE_SIGNIN_DESC" = "Bu seçeneği yalnızca Google hesabınızla oturum açamadığınızda ve uygulama TrollStore aracılığıyla yüklendiyse aç. Normal olarak giriş yapabiliyorsan, devre dışı bırak. Uygulamanın yeniden başlatılması gerekir."; - "HIDE_CHIP_BAR" = "Üst çubuğu gizle"; "HIDE_CHIP_BAR_DESC" = "Ana Sayfa akışlarında (Trendler, Müzik, Oyun...) ve Abonelik akışlarında (Tüm videolar, İzlemeye devam et...) Üst çubuğu gizle. Uygulamanın yeniden başlatılması gerekir."; "HIDE_PLAY_NEXT_IN_QUEUE" = "Hide \"Play next in queue\""; -"HIDE_PLAY_NEXT_IN_QUEUE_DESC" = "Hide the premium \"Play next in queue\" option in video context menus"; +"HIDE_PLAY_NEXT_IN_QUEUE_DESC" = ""; + +"IPHONE_LAYOUT" = "iPhone Düzeni"; +"IPHONE_LAYOUT_DESC" = "iPhone Düzenini kullanmak istersen etkinleştir. Uygulamanın yeniden başlatılması gerekir."; "NEW_MINIPLAYER_STYLE" = "Yeni mini oynatıcı bar stili. (BigYTMiniPlayer)"; "NEW_MINIPLAYER_STYLE_DESC" = "Uygulamanın yeniden başlatılması gerekir."; @@ -136,5 +124,8 @@ "YT_RE_EXPLORE" = "Shorts sekmesini Keşfet sekmesiyle değiştirin (YTReExplore)"; "YT_RE_EXPLORE_DESC" = "Uygulamanın yeniden başlatılması gerekir."; -"IPHONE_LAYOUT" = "iPhone Düzeni"; -"IPHONE_LAYOUT_DESC" = "iPhone Düzenini kullanmak istersen etkinleştir. Uygulamanın yeniden başlatılması gerekir."; +"ENABLE_FLEX" = "FLEX'i etkinleştir"; +"ENABLE_FLEX_DESC" = "Hata ayıklama için FLEX'i etkinleştir (önerilmez). Ne yaptığını bilmiyorsan bunu kapalı bırak."; + +"FIX_GOOGLE_SIGNIN" = "Google Oturumu Açma'yı düzeltin (yalnızca TrollStore kullanıcıları için)"; +"FIX_GOOGLE_SIGNIN_DESC" = "Bu seçeneği yalnızca Google hesabınızla oturum açamadığınızda ve uygulama TrollStore aracılığıyla yüklendiyse aç. Normal olarak giriş yapabiliyorsan, devre dışı bırak. Uygulamanın yeniden başlatılması gerekir."; diff --git a/Localizations/uYouPlus.bundle/vi.lproj/Localizable.strings b/Localizations/uYouPlus.bundle/vi.lproj/Localizable.strings index 2a82b0b..4b488c0 100644 --- a/Localizations/uYouPlus.bundle/vi.lproj/Localizable.strings +++ b/Localizations/uYouPlus.bundle/vi.lproj/Localizable.strings @@ -1,13 +1,38 @@ -// Settings -"VERSION" = "Phiên bản của uYouPlus: %@"; +// About +"ABOUT" = "Giới thiệu"; + +"VERSION" = "Phiên bản"; "VERSION_CHECK" = "Chạm để kiểm tra bản cập nhật!"; +"REPORT_AN_ISSUE" = "Báo lỗi"; +"ADD_TITLE" = "Add your title here..."; + +"QUIT_YOUTUBE" = "Đóng YouTube"; + +"RESTART_YOUTUBE" = "Khởi động lại YouTube để áp dụng các thay đổi"; + +// App appearance +"APP_THEME" = "Giao diện của ứng dụng"; +"THEME_OPTIONS" = "Tùy chọn giao diện"; + +"DARK_THEME" = "Giao diện tối"; + +"DEFAULT_THEME" = "Mặc định"; +"DEFAULT_THEME_DESC" = ""; + +"OLD_DARK_THEME" = "Xám nhạt hơn"; +"OLD_DARK_THEME_DESC" = "Giao diện tối cũ của YouTube"; + +"OLED_DARK_THEME" = "OLED (thử nghiệm)"; +"OLED_DARK_THEME_2" = "OLED"; +"OLED_DARK_THEME_DESC" = "Giao diện tối màu đen hoàn toàn"; + +"OLED_KEYBOARD" = "Bàn phím OLED (thử nghiệm)"; +"OLED_KEYBOARD_DESC" = ""; + // Video player options "VIDEO_PLAYER_OPTIONS" = "Tùy chọn trình phát video"; -"AUTO_FULLSCREEN" = "Tự động toàn màn hình (YTAutoFullScreen)"; -"AUTO_FULLSCREEN_DESC" = "Tự động phát video ở chế độ toàn màn hình."; - "DISABLE_DOUBLE_TAP_TO_SEEK" = "Tắt tình năng chạm 2 lần để tua"; "DISABLE_DOUBLE_TAP_TO_SEEK_DESC" = ""; @@ -47,39 +72,18 @@ "REPLACE_PREVIOUS_NEXT_BUTTON" = "Thay thế nút chuyển video"; "REPLACE_PREVIOUS_NEXT_BUTTON_DESC" = "Thay thế nút chuyển video bằng nút tua nhanh. Cần khởi động lại ứng dụng."; +"RED_PROGRESS_BAR" = "Thanh tiến trình màu đỏ"; +"RED_PROGRESS_BAR_DESC" = "Mang lại thanh tiến trình màu đỏ. Yêu cầu khởi động lại ứng dụng."; + "HIDE_HOVER_CARD" = "Ẩn video dạng thumbnails (YTNoHoverCards)"; "HIDE_HOVER_CARD_DESC" = "Ẩn thumbnail của các video đề xuất xuất hiện ở cuối video."; "HIDE_RIGHT_PANEL" = "Ẩn bảng điều khiển bên phải"; "HIDE_RIGHT_PANEL_DESC" = "Ẩn bảng điều khiển bên phải khi ở chế độ toàn màn hình. Cần khởi động lại ứng dụng."; -"RED_PROGRESS_BAR" = "Thanh tiến trình màu đỏ"; -"RED_PROGRESS_BAR_DESC" = "Mang lại thanh tiến trình màu đỏ. Yêu cầu khởi động lại ứng dụng."; - -"DONT_EAT_MY_CONTENT" = "Ẩn tai thỏ/Dynamic Island (DontEatMyContent)"; -"DONT_EAT_MY_CONTENT_DESC" = "Ẩn tai thỏ/Dynamic Island chèn vào các video có tỷ lệ 2:1. Cần khởi động lại ứng dụng."; - // Shorts controls overlay options "SHORTS_CONTROLS_OVERLAY_OPTIONS" = "Tùy chọn hiển thị trong Shorts"; -"HIDE_SHORTS_CHANNEL_AVATAR" = "Ẩn hình đại diện của kênh"; -"HIDE_SHORTS_CHANNEL_AVATAR_DESC" = ""; - -"HIDE_SHORTS_DISLIKE_BUTTON" = "Ẩn nút không thích"; -"HIDE_SHORTS_DISLIKE_BUTTON_DESC" = ""; - -"HIDE_SHORTS_COMMENT_BUTTON" = "Ẩn nút bình luận"; -"HIDE_SHORTS_COMMENT_BUTTON_DESC" = ""; - -"HIDE_SHORTS_REMIX_BUTTON" = "Ẩn nút phối lại video"; -"HIDE_SHORTS_REMIX_BUTTON_DESC" = ""; - -"HIDE_SHORTS_SHARE_BUTTON" = "Ẩn nút chia sẻ"; -"HIDE_SHORTS_SHARE_BUTTON_DESC" = ""; - -"HIDE_UYOU_SHORTS_DOWNLOAD_BUTTON" = "Ẩn nút tải xuống của uYou"; -"HIDE_UYOU_SHORTS_DOWNLOAD_BUTTON_DESC" = ""; - "HIDE_SUPER_THANKS" = "Ẩn biểu ngữ 'Mua ảnh động Super Thanks'"; "HIDE_SUPER_THANKS_DESC" = "Ẩn biểu ngữ 'Mua ảnh động Super Thanks'."; @@ -89,22 +93,6 @@ "DISABLE_RESUME_TO_SHORTS" = "Tắt tính năng tự động tiếp tục Shorts"; "DISABLE_RESUME_TO_SHORTS_DESC" = "Nếu bạn thoát YouTube trong khi đang xem video Shorts, video Shorts đó sẽ không tự động phát khi bạn mở lại YouTube."; -// Theme -"THEME_OPTIONS" = "Tùy chọn giao diện"; - -"OLED_DARK_THEME" = "Chế độ tối cho màn OLED (Thử nghiệm)"; -"OLED_DARK_THEME_2" = "Chế độ tối cho màn OLED"; -"OLED_DARK_THEME_DESC" = "Có thể không hoạt động tốt trong một số trường hợp. Cần khởi động lại ứng dụng nếu bạn bật/tắt tính năng này, nhưng không cần khởi động lại ứng dụng nếu chuyển giữa chế độ Sáng và chế độ Tối."; - -"OLD_DARK_THEME" = "Chủ đề tối cũ"; -"OLD_DARK_THEME_DESC" = "Chủ đề tối cũ của YouTube (chủ đề màu xám). Yêu cầu khởi động lại ứng dụng."; - -"DEFAULT_THEME" = "Mặc định"; -"DEFAULT_THEME_DESC" = "Chủ đề tối mặc định của YouTube. Yêu cầu khởi động lại ứng dụng."; - -"OLED_KEYBOARD" = "Bàn phím tối cho màn OLED (Thử nghiệm)"; -"OLED_KEYBOARD_DESC" = "Có thể không hoạt động tốt trong một vài trường hợp. Cần khởi động lại ứng dụng."; - // Miscellaneous "MISCELLANEOUS" = "Cài đặt khác"; @@ -118,20 +106,17 @@ "DISABLE_HINTS" = "Ẩn gợi ý"; "DISABLE_HINTS_DESC" = "Ẩn các gợi ý tính năng thường hiện khi mới cài đặt YouTube."; -"ENABLE_FLEX" = "Bật FLEX"; -"ENABLE_FLEX_DESC" = "Bật FLEX để kiểm tra/sửa lỗi (không khuyến khích). Nếu bạn không biết FLEX là gì thì đừng bật tính năng này."; - "ENABLE_YT_STARTUP_ANIMATION" = "Bật hiệu ứng khi khởi động YouTube"; "ENABLE_YT_STARTUP_ANIMATION_DESC" = ""; -"FIX_GOOGLE_SIGNIN" = "Sửa lỗi không thể đăng nhập tài khoản Google"; -"FIX_GOOGLE_SIGNIN_DESC" = "Chỉ bật tính năng này khi bạn không thể đăng nhập tài khoản Google và ứng dụng được cài qua TrollStore. Nếu bạn có thể đăng nhập bình thường thì hãy tắt tính năng này. Cần khởi động lại ứng dụng."; - "HIDE_CHIP_BAR" = "Ẩn thanh phím tắt"; "HIDE_CHIP_BAR_DESC" = "Ẩn thanh phím tắt trong Home feed (Thịnh hành, Âm nhạc, Trò chơi...) và trong Subciption feed (Tất cả, Tiếp tục xem...)."; "HIDE_PLAY_NEXT_IN_QUEUE" = "Hide \"Play next in queue\""; -"HIDE_PLAY_NEXT_IN_QUEUE_DESC" = "Hide the premium \"Play next in queue\" option in video context menus"; +"HIDE_PLAY_NEXT_IN_QUEUE_DESC" = ""; + +"IPHONE_LAYOUT" = "Force iPhone layout"; +"IPHONE_LAYOUT_DESC" = ""; "NEW_MINIPLAYER_STYLE" = "Giao diện trình phát thu nhỏ kiểu mới (BigYTMiniPlayer)"; "NEW_MINIPLAYER_STYLE_DESC" = "Cần khởi động lại ứng dụng."; @@ -139,5 +124,8 @@ "YT_RE_EXPLORE" = "Thay thế tab Shorts bằng tab Khám phá (YTReExplore)"; "YT_RE_EXPLORE_DESC" = "Cần khởi động lại ứng dụng."; -"IPHONE_LAYOUT" = "iPhone Layout"; -"IPHONE_LAYOUT_DESC" = "Toggle to use the iPhone Layout. App restart is required."; +"ENABLE_FLEX" = "Bật FLEX"; +"ENABLE_FLEX_DESC" = "Bật FLEX để kiểm tra/sửa lỗi (không khuyến khích). Nếu bạn không biết FLEX là gì thì đừng bật tính năng này."; + +"FIX_GOOGLE_SIGNIN" = "Sửa lỗi không thể đăng nhập tài khoản Google"; +"FIX_GOOGLE_SIGNIN_DESC" = "Chỉ bật tính năng này khi bạn không thể đăng nhập tài khoản Google và ứng dụng được cài qua TrollStore. Nếu bạn có thể đăng nhập bình thường thì hãy tắt tính năng này. Cần khởi động lại ứng dụng."; diff --git a/Localizations/uYouPlus.bundle/zh_cn.lproj/Localizable.strings b/Localizations/uYouPlus.bundle/zh_cn.lproj/Localizable.strings index f2de1d8..22a2f4a 100644 --- a/Localizations/uYouPlus.bundle/zh_cn.lproj/Localizable.strings +++ b/Localizations/uYouPlus.bundle/zh_cn.lproj/Localizable.strings @@ -1,13 +1,38 @@ -// Settings +// About +"ABOUT" = "About"; + "VERSION" = "当前 uYouPlus 版本:%@"; "VERSION_CHECK" = "点击此处前往 GitHub 查看最新版本信息!"; +"REPORT_AN_ISSUE" = "Report an issue"; +"ADD_TITLE" = "Add your title here..."; + +"QUIT_YOUTUBE" = "Quit YouTube"; + +"RESTART_YOUTUBE" = "Restart YouTube to apply changes"; + +// App appearance +"APP_THEME" = "App appearance"; +"THEME_OPTIONS" = "主题选项"; + +"DARK_THEME" = "Dark theme"; + +"DEFAULT_THEME" = "默认深色模式"; +"DEFAULT_THEME_DESC" = "使用当前版本 YouTube 的默认深色模式(比灰色稍暗)。更改本设置后需要重启 App。"; + +"OLD_DARK_THEME" = "旧深色模式"; +"OLD_DARK_THEME_DESC" = "使用旧版本 YouTube 的深色模式(灰色模式)。更改本设置后需要重启 App。"; + +"OLED_DARK_THEME" = "OLED 深色模式(实验性功能)"; +"OLED_DARK_THEME_2" = "OLED 深色模式"; +"OLED_DARK_THEME_DESC" = "使用全黑背景,在使用 OLED 屏幕时可节省电量。在某些情况下可能不会正常工作。更改本设置后需要重启 App。"; + +"OLED_KEYBOARD" = "OLED 键盘(实验性功能)"; +"OLED_KEYBOARD_DESC" = "在某些情况下可能不会正常工作。更改本设置后需要重启 App。"; + // Video player options "VIDEO_PLAYER_OPTIONS" = "视频播放器选项"; -"AUTO_FULLSCREEN" = "自动全屏 (YTAutoFullScreen)"; -"AUTO_FULLSCREEN_DESC" = "自动全屏播放视频。"; - "DISABLE_DOUBLE_TAP_TO_SEEK" = "禁用双击快进和快退"; "DISABLE_DOUBLE_TAP_TO_SEEK_DESC" = ""; @@ -47,64 +72,27 @@ "REPLACE_PREVIOUS_NEXT_BUTTON" = "替换上一个/下一个按钮"; "REPLACE_PREVIOUS_NEXT_BUTTON_DESC" = "将视频播放器控制界面上的上一个/下一个按钮替换成快进/快退按钮。更改本设置后需要重启 App。"; +"RED_PROGRESS_BAR" = "红色进度条"; +"RED_PROGRESS_BAR_DESC" = "将新版本中的白色进度条还原为红色。更改本设置后需要重启 App。"; + "HIDE_HOVER_CARD" = "隐藏片尾画面悬浮卡片 (YTNoHoverCards)"; "HIDE_HOVER_CARD_DESC" = "隐藏视频结尾处的片尾画面元素。例如:其他视频的封面等。"; "HIDE_RIGHT_PANEL" = "隐藏全屏模式右侧面板"; "HIDE_RIGHT_PANEL_DESC" = "更改本设置后需要重启App。"; -"RED_PROGRESS_BAR" = "红色进度条"; -"RED_PROGRESS_BAR_DESC" = "将新版本中的白色进度条还原为红色。更改本设置后需要重启 App。"; - -"DONT_EAT_MY_CONTENT" = "2:1 视频刘海屏/灵动岛优化 (DontEatMyContent)"; -"DONT_EAT_MY_CONTENT_DESC" = "改进部分机型的刘海区域或灵动岛在 2:1 比例视频中引发的遮挡问题。更改本设置后需要重启 App。"; - // Shorts controls overlay options "SHORTS_CONTROLS_OVERLAY_OPTIONS" = "Shorts 短片播放器选项"; -"HIDE_SHORTS_CHANNEL_AVATAR" = "隐藏频道头像"; -"HIDE_SHORTS_CHANNEL_AVATAR_DESC" = ""; - -"HIDE_SHORTS_DISLIKE_BUTTON" = "隐藏“踩”按钮"; -"HIDE_SHORTS_DISLIKE_BUTTON_DESC" = ""; - -"HIDE_SHORTS_COMMENT_BUTTON" = "隐藏评论按钮"; -"HIDE_SHORTS_COMMENT_BUTTON_DESC" = ""; - -"HIDE_SHORTS_REMIX_BUTTON" = "隐藏混剪按钮"; -"HIDE_SHORTS_REMIX_BUTTON_DESC" = ""; - -"HIDE_SHORTS_SHARE_BUTTON" = "隐藏分享按钮"; -"HIDE_SHORTS_SHARE_BUTTON_DESC" = ""; - -"HIDE_UYOU_SHORTS_DOWNLOAD_BUTTON" = "隐藏 uYou 下载按钮"; -"HIDE_UYOU_SHORTS_DOWNLOAD_BUTTON_DESC" = "隐藏 Shorts 短片播放器中的 uYou 下载按钮。"; - -"HIDE_SUBCRIPTIONS" = "隐藏订阅按钮"; -"HIDE_SUBCRIPTIONS_DESC" = "隐藏在暂停时出现的订阅按钮。"; - "HIDE_SUPER_THANKS" = "隐藏“购买超级感谢”横幅"; "HIDE_SUPER_THANKS_DESC" = "隐藏出现在部分 Shorts 短片中的“购买超级感谢”横幅。"; +"HIDE_SUBCRIPTIONS" = "隐藏订阅按钮"; +"HIDE_SUBCRIPTIONS_DESC" = "隐藏在暂停时出现的订阅按钮。"; + "DISABLE_RESUME_TO_SHORTS" = "应用重启后不恢复至 Shorts 短片"; "DISABLE_RESUME_TO_SHORTS_DESC" = "若您在观看 Shorts 短片时关闭了 YouTube,下次启动时将不再自动进入 Shorts 短片分区。"; -// Theme -"THEME_OPTIONS" = "主题选项"; - -"OLED_DARK_THEME" = "OLED 深色模式(实验性功能)"; -"OLED_DARK_THEME_2" = "OLED 深色模式"; -"OLED_DARK_THEME_DESC" = "使用全黑背景,在使用 OLED 屏幕时可节省电量。在某些情况下可能不会正常工作。更改本设置后需要重启 App。"; - -"OLD_DARK_THEME" = "旧深色模式"; -"OLD_DARK_THEME_DESC" = "使用旧版本 YouTube 的深色模式(灰色模式)。更改本设置后需要重启 App。"; - -"DEFAULT_THEME" = "默认深色模式"; -"DEFAULT_THEME_DESC" = "使用当前版本 YouTube 的默认深色模式(比灰色稍暗)。更改本设置后需要重启 App。"; - -"OLED_KEYBOARD" = "OLED 键盘(实验性功能)"; -"OLED_KEYBOARD_DESC" = "在某些情况下可能不会正常工作。更改本设置后需要重启 App。"; - // Miscellaneous "MISCELLANEOUS" = "其它选项"; @@ -118,20 +106,17 @@ "DISABLE_HINTS" = "禁用首开介绍"; "DISABLE_HINTS_DESC" = "禁用首次打开 App 时出现的功能探索提示。"; -"ENABLE_FLEX" = "启用 FLEX"; -"ENABLE_FLEX_DESC" = "启用 FLEX 调试程序(不推荐)。如果您不熟悉本设置的效果,请将其禁用。"; - "ENABLE_YT_STARTUP_ANIMATION" = "播放启动动画"; "ENABLE_YT_STARTUP_ANIMATION_DESC" = ""; -"FIX_GOOGLE_SIGNIN" = "修复 Google 账号登录问题(仅 TrollStore 用户有效)"; -"FIX_GOOGLE_SIGNIN_DESC" = "仅在使用 TrollStore 安装本 App 的情况下生效:启用本设置后即可正常登录您的 Google 账号。更改本设置后需要重启 App。"; - "HIDE_CHIP_BAR" = "隐藏顶部标签栏"; "HIDE_CHIP_BAR_DESC" = "隐藏首页和订阅内容页顶部的标签栏(例如:首页顶部的“音乐”、“游戏”、“新闻”以及订阅内容页顶部的“今天”、“继续观看”、“未观看”等)。更改本设置后需要重启 App。"; "HIDE_PLAY_NEXT_IN_QUEUE" = "Hide \"Play next in queue\""; -"HIDE_PLAY_NEXT_IN_QUEUE_DESC" = "Hide the premium \"Play next in queue\" option in video context menus"; +"HIDE_PLAY_NEXT_IN_QUEUE_DESC" = ""; + +"IPHONE_LAYOUT" = "iPhone 视图"; +"IPHONE_LAYOUT_DESC" = "在 iPad 上使用 iPhone 版本的应用布局,以便查看社区贴子和使用短片创作功能。更改本设置后需要重启 App。"; "NEW_MINIPLAYER_STYLE" = "新迷你播放器风格 (BigYTMiniPlayer)"; "NEW_MINIPLAYER_STYLE_DESC" = "更改本设置后需要重启 App。"; @@ -139,5 +124,8 @@ "YT_RE_EXPLORE" = "将 Shorts 选项卡替换成探索选项卡 (YTReExplore)"; "YT_RE_EXPLORE_DESC" = "更改本设置后需要重启 App。"; -"IPHONE_LAYOUT" = "iPhone 视图"; -"IPHONE_LAYOUT_DESC" = "在 iPad 上使用 iPhone 版本的应用布局,以便查看社区贴子和使用短片创作功能。更改本设置后需要重启 App。"; +"ENABLE_FLEX" = "启用 FLEX"; +"ENABLE_FLEX_DESC" = "启用 FLEX 调试程序(不推荐)。如果您不熟悉本设置的效果,请将其禁用。"; + +"FIX_GOOGLE_SIGNIN" = "修复 Google 账号登录问题(仅 TrollStore 用户有效)"; +"FIX_GOOGLE_SIGNIN_DESC" = "仅在使用 TrollStore 安装本 App 的情况下生效:启用本设置后即可正常登录您的 Google 账号。更改本设置后需要重启 App。"; diff --git a/Localizations/uYouPlus.bundle/zh_tw.lproj/Localizable.strings b/Localizations/uYouPlus.bundle/zh_tw.lproj/Localizable.strings index 48cd449..31a8de6 100644 --- a/Localizations/uYouPlus.bundle/zh_tw.lproj/Localizable.strings +++ b/Localizations/uYouPlus.bundle/zh_tw.lproj/Localizable.strings @@ -1,13 +1,38 @@ -// Settings +// About +"ABOUT" = "About"; + "VERSION" = "uYouPlus 版本為: %@"; "VERSION_CHECK" = "查看最新版本"; +"REPORT_AN_ISSUE" = "Report an issue"; +"ADD_TITLE" = "Add your title here..."; + +"QUIT_YOUTUBE" = "Quit YouTube"; + +"RESTART_YOUTUBE" = "Restart YouTube to apply changes"; + +// App appearance +"APP_THEME" = "App appearance"; +"THEME_OPTIONS" = "主題風格選項"; + +"DARK_THEME" = "Dark theme"; + +"DEFAULT_THEME" = "預設"; +"DEFAULT_THEME_DESC" = "YouTube預設深色模式. 需要重新啟動應用程式。"; + +"OLD_DARK_THEME" = "傳統深色模式"; +"OLD_DARK_THEME_DESC" = "YouTube深色模式 (灰色風格). 需要重新啟動應用程式。"; + +"OLED_DARK_THEME" = "OLED 深色模式(實驗性)"; +"OLED_DARK_THEME_2" = "OLED 深色模式"; +"OLED_DARK_THEME_DESC" = "在某些情況下無法正常運作。更動此選項後,需要重新啟動應用程式。"; + +"OLED_KEYBOARD" = "OLED 鍵盤(實驗性)"; +"OLED_KEYBOARD_DESC" = "在某些情況下可能無法正常運作。需要重新啟動應用程式。"; + // Video player options "VIDEO_PLAYER_OPTIONS" = "播放器選項"; -"AUTO_FULLSCREEN" = "自動全螢幕 (YTAutoFullScreen)"; -"AUTO_FULLSCREEN_DESC" = "自動全螢幕播放影片。"; - "DISABLE_DOUBLE_TAP_TO_SEEK" = "Disable double tap to seek"; "DISABLE_DOUBLE_TAP_TO_SEEK_DESC" = ""; @@ -47,64 +72,27 @@ "REPLACE_PREVIOUS_NEXT_BUTTON" = "更換上一個/下一個按鈕"; "REPLACE_PREVIOUS_NEXT_BUTTON_DESC" = "將影片播放器控制介面上的上一個/下一個按鈕替換成快轉/倒轉按鈕,需要重新啟動應用程式。"; +"RED_PROGRESS_BAR" = "紅色進度列"; +"RED_PROGRESS_BAR_DESC" = "恢復紅色進度列. 需要重新啟動應用程式。"; + "HIDE_HOVER_CARD" = "隱藏片尾畫面懸浮卡 (YTNoHoverCards)"; "HIDE_HOVER_CARD_DESC" = "在影片結尾隱藏創作者結束畫面。"; "HIDE_RIGHT_PANEL" = "在全螢幕下隱藏右側面板"; "HIDE_RIGHT_PANEL_DESC" = "需要重新啟動應用程式。"; -"RED_PROGRESS_BAR" = "紅色進度列"; -"RED_PROGRESS_BAR_DESC" = "恢復紅色進度列. 需要重新啟動應用程式。"; - -"DONT_EAT_MY_CONTENT" = "2:1 影片瀏海/動態島優化(DontEatMyContent)"; -"DONT_EAT_MY_CONTENT_DESC" = "改進部分機型的瀏海區域/動態島在 2:1 影片中的遮擋問題,需要重新啟動應用程式。"; - // Shorts controls overlay options "SHORTS_CONTROLS_OVERLAY_OPTIONS" = "Shorts 懸浮控制選項"; -"HIDE_SHORTS_CHANNEL_AVATAR" = "隱藏 Shorts 頻道大頭照"; -"HIDE_SHORTS_CHANNEL_AVATAR_DESC" = ""; - -"HIDE_SHORTS_DISLIKE_BUTTON" = "隱藏 Shorts 不喜歡按鈕"; -"HIDE_SHORTS_DISLIKE_BUTTON_DESC" = ""; - -"HIDE_SHORTS_COMMENT_BUTTON" = "隱藏 Shorts 留言按鈕"; -"HIDE_SHORTS_COMMENT_BUTTON_DESC" = ""; - -"HIDE_SHORTS_REMIX_BUTTON" = "隱藏 Shorts remix 按鈕"; -"HIDE_SHORTS_REMIX_BUTTON_DESC" = ""; - -"HIDE_SHORTS_SHARE_BUTTON" = "隱藏 Shorts 分享按鈕"; -"HIDE_SHORTS_SHARE_BUTTON_DESC" = ""; - -"HIDE_UYOU_SHORTS_DOWNLOAD_BUTTON" = "隱藏 uYou 按鈕"; -"HIDE_UYOU_SHORTS_DOWNLOAD_BUTTON_DESC" = "在 Shorts 中隱藏 uYou 下載按鈕."; - -"HIDE_SUBCRIPTIONS" = "隱藏訂閱按鈕"; -"HIDE_SUBCRIPTIONS_DESC" = "隱藏當暫停時出現的訂閱按鈕。"; - "HIDE_SUPER_THANKS" = "隱藏 '購買超級感謝' 橫幅"; "HIDE_SUPER_THANKS_DESC" = "在 Shorts 中隱藏 '購買超級感謝' 橫幅."; +"HIDE_SUBCRIPTIONS" = "隱藏訂閱按鈕"; +"HIDE_SUBCRIPTIONS_DESC" = "隱藏當暫停時出現的訂閱按鈕。"; + "DISABLE_RESUME_TO_SHORTS" = "停用恢復播放 Shorts"; "DISABLE_RESUME_TO_SHORTS_DESC" = "如果你在觀看 Shorts 時關閉程式,下次開啟程式時將不再自動播放 Shorts."; -// Theme -"THEME_OPTIONS" = "主題風格選項"; - -"OLED_DARK_THEME" = "OLED 深色模式(實驗性)"; -"OLED_DARK_THEME_2" = "OLED 深色模式"; -"OLED_DARK_THEME_DESC" = "在某些情況下無法正常運作。更動此選項後,需要重新啟動應用程式。"; - -"OLD_DARK_THEME" = "傳統深色模式"; -"OLD_DARK_THEME_DESC" = "YouTube深色模式 (灰色風格). 需要重新啟動應用程式。"; - -"DEFAULT_THEME" = "預設"; -"DEFAULT_THEME_DESC" = "YouTube預設深色模式. 需要重新啟動應用程式。"; - -"OLED_KEYBOARD" = "OLED 鍵盤(實驗性)"; -"OLED_KEYBOARD_DESC" = "在某些情況下可能無法正常運作。需要重新啟動應用程式。"; - // Miscellaneous "MISCELLANEOUS" = "雜項"; @@ -118,21 +106,17 @@ "DISABLE_HINTS" = "停用提示"; "DISABLE_HINTS_DESC" = "停用初次安裝應用程式時顯示的功能提示。"; - -"ENABLE_FLEX" = "啟用 FLEX"; -"ENABLE_FLEX_DESC" = "啟用 FLEX 供除錯 (不推薦)。 當你不知道你在幹嘛時請勿使用。"; - "ENABLE_YT_STARTUP_ANIMATION" = "啟用 Youtube 歡迎動畫"; "ENABLE_YT_STARTUP_ANIMATION_DESC" = ""; -"FIX_GOOGLE_SIGNIN" = "修復 Google 帳號登入問題(僅TrollStore 使用者有效)"; -"FIX_GOOGLE_SIGNIN_DESC" = "僅在使用 TrollStore 安裝此應用程式時有效:啟用本設定後即可正常登入 Google 帳號,需要重新啟動應用程式。"; - "HIDE_CHIP_BAR" = "隱藏上層欄位"; "HIDE_CHIP_BAR_DESC" = "隱藏主畫面上層欄位 (話題, 音樂, 遊戲...) 和訂閱對象動態 (所有影片, 繼續觀看...). 需要重新啟動應用程式。"; "HIDE_PLAY_NEXT_IN_QUEUE" = "Hide \"Play next in queue\""; -"HIDE_PLAY_NEXT_IN_QUEUE_DESC" = "Hide the premium \"Play next in queue\" option in video context menus"; +"HIDE_PLAY_NEXT_IN_QUEUE_DESC" = ""; + +"IPHONE_LAYOUT" = "iPhone 佈局"; +"IPHONE_LAYOUT_DESC" = "切換使用iPhone佈局. 需要重新啟動應用程式。"; "NEW_MINIPLAYER_STYLE" = "迷你播放器 (BigYTMiniPlayer)"; "NEW_MINIPLAYER_STYLE_DESC" = "需要重新啟動應用程式。"; @@ -140,5 +124,8 @@ "YT_RE_EXPLORE" = "用探索分頁代替 Shorts 分頁 (YTReExplore)"; "YT_RE_EXPLORE_DESC" = "需要重新啟動應用程式。"; -"IPHONE_LAYOUT" = "iPhone 佈局"; -"IPHONE_LAYOUT_DESC" = "切換使用iPhone佈局. 需要重新啟動應用程式。"; +"ENABLE_FLEX" = "啟用 FLEX"; +"ENABLE_FLEX_DESC" = "啟用 FLEX 供除錯 (不推薦)。 當你不知道你在幹嘛時請勿使用。"; + +"FIX_GOOGLE_SIGNIN" = "修復 Google 帳號登入問題(僅TrollStore 使用者有效)"; +"FIX_GOOGLE_SIGNIN_DESC" = "僅在使用 TrollStore 安裝此應用程式時有效:啟用本設定後即可正常登入 Google 帳號,需要重新啟動應用程式。"; From 226a4730aa7e1af422cf05373e6352551ea04a30 Mon Sep 17 00:00:00 2001 From: Foxster Date: Mon, 25 Dec 2023 10:04:02 -0800 Subject: [PATCH 31/45] Update bug.yaml --- .github/ISSUE_TEMPLATE/bug.yaml | 45 +++++++++++++++------------------ 1 file changed, 21 insertions(+), 24 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/bug.yaml b/.github/ISSUE_TEMPLATE/bug.yaml index 4a5c66a..3682ff5 100644 --- a/.github/ISSUE_TEMPLATE/bug.yaml +++ b/.github/ISSUE_TEMPLATE/bug.yaml @@ -1,12 +1,12 @@ name: Bug description: Make sure you complete the template. Otherwise, it will be closed without further explanation! -title: "[Bug] Replace this with your title" +title: "[v] Replace this with your title" labels: bug body: - type: checkboxes attributes: label: Is there an existing issue for this? - description: _Please search to see if an issue already exists for the bug you encountered. **I DON\'T MAKE THIS TICK BOX FOR COSMETIC.**_ + description: _Please check the [**issues**](https://github.com/qnblackcat/uYouPlus/issues) page to see if someone has already reported the bug. **I DIDN\'T MAKE THIS CHECKBOX FOR COSMETIC.**_ options: - label: I have searched the existing issues required: true @@ -14,73 +14,70 @@ body: - type: checkboxes attributes: label: Have you read the FAQ? - description: _Make sure you actually visit the [**FAQ**](https://github.com/qnblackcat/uYouPlus/wiki/FAQ) page! **I DON\'T MAKE THIS TICK BOX FOR COSMETIC**_ + description: _Make sure you actually visit the [**FAQ**](https://github.com/qnblackcat/uYouPlus/wiki/FAQ) page! **I DIDN\'T MAKE THIS CHECKBOX FOR COSMETIC**_ options: - - label: Yes, I did read the FAQ + - label: Yes, I have read the FAQ required: true - type: textarea attributes: - label: Device info + label: Device information description: value: | - - iOS/iPadOS version: - - Device model: - - Sideload tool (AltStore, Sideloadly, TrollStore,...): - - The specific version of uYouPlus (**latest or newest is NOT a version number!**): + - iOS/iPadOS version: + - Device model: + - Sideload tool (AltStore, Sideloadly, TrollStore, etc.): validations: required: true - type: textarea attributes: - label: Describe the bug + label: Describe the issue description: _Please attach videos or screenshots if possible_ validations: required: true - type: textarea attributes: - label: Steps to reproduce the issue + label: Steps to reproduce description: _Please attach videos or screenshots if possible_ value: | 1. 2. - 3. validations: required: true - type: textarea id: logs attributes: - label: Crash log (if the app crashes) - description: _If somehow the app crashes, **you must provide the crash log**. It can be found in your device's Settings App > Privacy > Analytics & Improvements > Analytics Data > Youtube-xxx-xxx.ips_ + label: Crash log + description: _If the app crashes, **please provide the crash log**. It can be found in Settings > Privacy > Analytics & Improvements > Analytics Data > Youtube-xxx-xxx.ips_ render: shell - type: dropdown attributes: - label: Are you using the newest version of uYouPlus? If not, why? - description: _Developers spend time and effort to fix bugs & add improvements with every release. Why don't you update to the [latest version](https://github.com/qnblackcat/uYouPlus/releases/latest) before reporting about an issue?_ + label: Are you using the latest version of uYouPlus? If not, why? + description: _Developers spent loads of time and effort to fix bugs & make improvements with every release. You might want to try and update to the [latest version](https://github.com/qnblackcat/uYouPlus/releases/latest) before reporting an issue._ multiple: false options: - - ✅ Yes, I'm using the latest version of uYouPlus right now - - ❌ No, I'll explain at the end of the template + - ✅ Yes, I'm using the latest version of uYouPlus + - ❌ No, I'll explain with additional information below validations: required: true - type: dropdown attributes: - label: Does the issue happen with the official YouTube from AppStore? - description: _Well, YouTube itself is buggy sometimes..._ + label: Does the issue happen with the official YouTube app from the App Store? + description: _YouTube itself is buggy sometimes..._ multiple: false options: - - ❌ No, I can't reproduce this issue in the official YouTube from AppStore - - ✅ Yes, I can reproduce this issue in the official YouTube from AppStore + - ❌ No, I cannot reproduce this issue in the official YouTube app from the App Store + - ✅ Yes, I can reproduce this issue in the official YouTube app from the App Store validations: required: true - type: textarea attributes: - label: Additional context - description: _Um, anything else you want to say?_ + label: Additional information validations: required: false From f6d654758f772d6558222f6066e9bb1c2ff0762f Mon Sep 17 00:00:00 2001 From: Foxster Date: Mon, 25 Dec 2023 10:10:05 -0800 Subject: [PATCH 32/45] Rename "Settings" -> "uYouPlusSettings" --- Makefile | 2 +- Sources/{Settings.h => uYouPlusSettings.h} | 0 Sources/{Settings.xm => uYouPlusSettings.xm} | 2 +- 3 files changed, 2 insertions(+), 2 deletions(-) rename Sources/{Settings.h => uYouPlusSettings.h} (100%) rename Sources/{Settings.xm => uYouPlusSettings.xm} (99%) diff --git a/Makefile b/Makefile index e121926..11c27c2 100644 --- a/Makefile +++ b/Makefile @@ -26,7 +26,7 @@ TWEAK_NAME = uYouPlus DISPLAY_NAME = YouTube BUNDLE_ID = com.google.ios.youtube -$(TWEAK_NAME)_FILES = Sources/uYouPlus.xm Sources/Settings.xm Sources/Patches.xm Sources/BigYTMiniPlayer.xm Sources/Themes.xm Sources/YTCastConfirm.xm Sources/YTMiniPlayerEnabler.x Sources/YTNoHoverCards.x Sources/YTNoPaidPromo.x Sources/YTReExplore.x Sources/YTStockVolumeHUD.xm +$(TWEAK_NAME)_FILES = Sources/uYouPlus.xm Sources/uYouPlusSettings.xm Sources/Patches.xm Sources/BigYTMiniPlayer.xm Sources/Themes.xm Sources/YTCastConfirm.xm Sources/YTMiniPlayerEnabler.x Sources/YTNoHoverCards.x Sources/YTNoPaidPromo.x Sources/YTReExplore.x Sources/YTStockVolumeHUD.xm $(TWEAK_NAME)_FRAMEWORKS = UIKit Security $(TWEAK_NAME)_CFLAGS = -fobjc-arc -DTWEAK_VERSION=\"$(PACKAGE_VERSION)\" $(TWEAK_NAME)_INJECT_DYLIBS = Tweaks/uYou/Library/MobileSubstrate/DynamicLibraries/uYou.dylib $(THEOS_OBJ_DIR)/libFLEX.dylib $(THEOS_OBJ_DIR)/iSponsorBlock.dylib $(THEOS_OBJ_DIR)/YouPiP.dylib $(THEOS_OBJ_DIR)/YouTubeDislikesReturn.dylib $(THEOS_OBJ_DIR)/YTABConfig.dylib $(THEOS_OBJ_DIR)/YTUHD.dylib $(THEOS_OBJ_DIR)/DontEatMyContent.dylib $(THEOS_OBJ_DIR)/IAmYouTube.dylib $(THEOS_OBJ_DIR)/YTClassicVideoQuality.dylib $(THEOS_OBJ_DIR)/NoYTPremium.dylib $(THEOS_OBJ_DIR)/YTSpeed.dylib diff --git a/Sources/Settings.h b/Sources/uYouPlusSettings.h similarity index 100% rename from Sources/Settings.h rename to Sources/uYouPlusSettings.h diff --git a/Sources/Settings.xm b/Sources/uYouPlusSettings.xm similarity index 99% rename from Sources/Settings.xm rename to Sources/uYouPlusSettings.xm index 2c6e8c3..274278e 100644 --- a/Sources/Settings.xm +++ b/Sources/uYouPlusSettings.xm @@ -1,4 +1,4 @@ -#import "Settings.h" +#import "uYouPlusSettings.h" #define VERSION_STRING [[NSString stringWithFormat:@"%@", @(OS_STRINGIFY(TWEAK_VERSION))] stringByReplacingOccurrencesOfString:@"\"" withString:@""] #define SHOW_RELAUNCH_YT_SNACKBAR [[%c(GOOHUDManagerInternal) sharedInstance] showMessageMainThread:[%c(YTHUDMessage) messageWithText:LOC(@"RESTART_YOUTUBE")]] From 959e384149b7a4cbc87b0bb5494c3d2dbbf69873 Mon Sep 17 00:00:00 2001 From: Foxster Date: Mon, 25 Dec 2023 10:12:04 -0800 Subject: [PATCH 33/45] Rename "Patches" -> "uYouPlusPatches" --- Makefile | 2 +- Sources/{Patches.h => uYouPlusPatches.h} | 0 Sources/{Patches.xm => uYouPlusPatches.xm} | 2 +- 3 files changed, 2 insertions(+), 2 deletions(-) rename Sources/{Patches.h => uYouPlusPatches.h} (100%) rename Sources/{Patches.xm => uYouPlusPatches.xm} (99%) diff --git a/Makefile b/Makefile index 11c27c2..28ad1bd 100644 --- a/Makefile +++ b/Makefile @@ -26,7 +26,7 @@ TWEAK_NAME = uYouPlus DISPLAY_NAME = YouTube BUNDLE_ID = com.google.ios.youtube -$(TWEAK_NAME)_FILES = Sources/uYouPlus.xm Sources/uYouPlusSettings.xm Sources/Patches.xm Sources/BigYTMiniPlayer.xm Sources/Themes.xm Sources/YTCastConfirm.xm Sources/YTMiniPlayerEnabler.x Sources/YTNoHoverCards.x Sources/YTNoPaidPromo.x Sources/YTReExplore.x Sources/YTStockVolumeHUD.xm +$(TWEAK_NAME)_FILES = Sources/uYouPlus.xm Sources/uYouPlusSettings.xm Sources/uYouPlusPatches.xm Sources/BigYTMiniPlayer.xm Sources/Themes.xm Sources/YTCastConfirm.xm Sources/YTMiniPlayerEnabler.x Sources/YTNoHoverCards.x Sources/YTNoPaidPromo.x Sources/YTReExplore.x Sources/YTStockVolumeHUD.xm $(TWEAK_NAME)_FRAMEWORKS = UIKit Security $(TWEAK_NAME)_CFLAGS = -fobjc-arc -DTWEAK_VERSION=\"$(PACKAGE_VERSION)\" $(TWEAK_NAME)_INJECT_DYLIBS = Tweaks/uYou/Library/MobileSubstrate/DynamicLibraries/uYou.dylib $(THEOS_OBJ_DIR)/libFLEX.dylib $(THEOS_OBJ_DIR)/iSponsorBlock.dylib $(THEOS_OBJ_DIR)/YouPiP.dylib $(THEOS_OBJ_DIR)/YouTubeDislikesReturn.dylib $(THEOS_OBJ_DIR)/YTABConfig.dylib $(THEOS_OBJ_DIR)/YTUHD.dylib $(THEOS_OBJ_DIR)/DontEatMyContent.dylib $(THEOS_OBJ_DIR)/IAmYouTube.dylib $(THEOS_OBJ_DIR)/YTClassicVideoQuality.dylib $(THEOS_OBJ_DIR)/NoYTPremium.dylib $(THEOS_OBJ_DIR)/YTSpeed.dylib diff --git a/Sources/Patches.h b/Sources/uYouPlusPatches.h similarity index 100% rename from Sources/Patches.h rename to Sources/uYouPlusPatches.h diff --git a/Sources/Patches.xm b/Sources/uYouPlusPatches.xm similarity index 99% rename from Sources/Patches.xm rename to Sources/uYouPlusPatches.xm index faccffa..2db21e7 100644 --- a/Sources/Patches.xm +++ b/Sources/uYouPlusPatches.xm @@ -1,4 +1,4 @@ -#import "Patches.h" +#import "uYouPlusPatches.h" # pragma mark - YouTube patches From b64e387163722b8f51c53ca0cee0f16c35452147 Mon Sep 17 00:00:00 2001 From: Foxster Date: Mon, 25 Dec 2023 10:15:11 -0800 Subject: [PATCH 34/45] Rename "Themes" -> "uYouPlusThemes" --- Makefile | 2 +- Sources/uYouPlus.h | 2 +- Sources/uYouPlus.xm | 2 +- Sources/{Themes.h => uYouPlusThemes.h} | 0 Sources/{Themes.xm => uYouPlusThemes.xm} | 2 +- 5 files changed, 4 insertions(+), 4 deletions(-) rename Sources/{Themes.h => uYouPlusThemes.h} (100%) rename Sources/{Themes.xm => uYouPlusThemes.xm} (99%) diff --git a/Makefile b/Makefile index 28ad1bd..35c3f48 100644 --- a/Makefile +++ b/Makefile @@ -26,7 +26,7 @@ TWEAK_NAME = uYouPlus DISPLAY_NAME = YouTube BUNDLE_ID = com.google.ios.youtube -$(TWEAK_NAME)_FILES = Sources/uYouPlus.xm Sources/uYouPlusSettings.xm Sources/uYouPlusPatches.xm Sources/BigYTMiniPlayer.xm Sources/Themes.xm Sources/YTCastConfirm.xm Sources/YTMiniPlayerEnabler.x Sources/YTNoHoverCards.x Sources/YTNoPaidPromo.x Sources/YTReExplore.x Sources/YTStockVolumeHUD.xm +$(TWEAK_NAME)_FILES = Sources/uYouPlus.xm Sources/uYouPlusSettings.xm Sources/uYouPlusPatches.xm Sources/uYouPlusThemes.xm Sources/BigYTMiniPlayer.xm Sources/YTCastConfirm.xm Sources/YTMiniPlayerEnabler.x Sources/YTNoHoverCards.x Sources/YTNoPaidPromo.x Sources/YTReExplore.x Sources/YTStockVolumeHUD.xm $(TWEAK_NAME)_FRAMEWORKS = UIKit Security $(TWEAK_NAME)_CFLAGS = -fobjc-arc -DTWEAK_VERSION=\"$(PACKAGE_VERSION)\" $(TWEAK_NAME)_INJECT_DYLIBS = Tweaks/uYou/Library/MobileSubstrate/DynamicLibraries/uYou.dylib $(THEOS_OBJ_DIR)/libFLEX.dylib $(THEOS_OBJ_DIR)/iSponsorBlock.dylib $(THEOS_OBJ_DIR)/YouPiP.dylib $(THEOS_OBJ_DIR)/YouTubeDislikesReturn.dylib $(THEOS_OBJ_DIR)/YTABConfig.dylib $(THEOS_OBJ_DIR)/YTUHD.dylib $(THEOS_OBJ_DIR)/DontEatMyContent.dylib $(THEOS_OBJ_DIR)/IAmYouTube.dylib $(THEOS_OBJ_DIR)/YTClassicVideoQuality.dylib $(THEOS_OBJ_DIR)/NoYTPremium.dylib $(THEOS_OBJ_DIR)/YTSpeed.dylib diff --git a/Sources/uYouPlus.h b/Sources/uYouPlus.h index e4fd678..0e470aa 100644 --- a/Sources/uYouPlus.h +++ b/Sources/uYouPlus.h @@ -6,7 +6,7 @@ #import #import -#import "Themes.h" // Hide "Buy Super Thanks" banner (_ASDisplayView) +#import "uYouPlusThemes.h" // Hide "Buy Super Thanks" banner (_ASDisplayView) #import "../Tweaks/YouTubeHeader/YTAppDelegate.h" // Activate FLEX // #import "../Tweaks/YouTubeHeader/YTISectionListRenderer.h" // Hide search ads by @PoomSmart - https://github.com/PoomSmart/YouTube-X diff --git a/Sources/uYouPlus.xm b/Sources/uYouPlus.xm index ed9f63e..8df1d42 100644 --- a/Sources/uYouPlus.xm +++ b/Sources/uYouPlus.xm @@ -16,7 +16,7 @@ NSBundle *uYouPlusBundle() { NSBundle *tweakBundle = uYouPlusBundle(); # pragma mark - App appearance -// See Themes.xm +// See uYouPlusThemes.xm # pragma mark - Video player options diff --git a/Sources/Themes.h b/Sources/uYouPlusThemes.h similarity index 100% rename from Sources/Themes.h rename to Sources/uYouPlusThemes.h diff --git a/Sources/Themes.xm b/Sources/uYouPlusThemes.xm similarity index 99% rename from Sources/Themes.xm rename to Sources/uYouPlusThemes.xm index 4f4dc3a..23bdd54 100644 --- a/Sources/Themes.xm +++ b/Sources/uYouPlusThemes.xm @@ -1,4 +1,4 @@ -#import "Themes.h" +#import "uYouPlusThemes.h" #define IS_DARK_APPEARANCE_ENABLED ([[NSUserDefaults standardUserDefaults] integerForKey:@"page_style"] == 1) #define IS_OLD_DARK_THEME_SELECTED (APP_THEME_IDX == 1) From 58a20fb57b5cee108a4ec300ab7bb19e5a2696b3 Mon Sep 17 00:00:00 2001 From: Foxster Date: Mon, 25 Dec 2023 11:10:18 -0800 Subject: [PATCH 35/45] Use wildcards for source files --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 35c3f48..1217483 100644 --- a/Makefile +++ b/Makefile @@ -26,7 +26,7 @@ TWEAK_NAME = uYouPlus DISPLAY_NAME = YouTube BUNDLE_ID = com.google.ios.youtube -$(TWEAK_NAME)_FILES = Sources/uYouPlus.xm Sources/uYouPlusSettings.xm Sources/uYouPlusPatches.xm Sources/uYouPlusThemes.xm Sources/BigYTMiniPlayer.xm Sources/YTCastConfirm.xm Sources/YTMiniPlayerEnabler.x Sources/YTNoHoverCards.x Sources/YTNoPaidPromo.x Sources/YTReExplore.x Sources/YTStockVolumeHUD.xm +$(TWEAK_NAME)_FILES := $(wildcard Sources/*.xm) $(wildcard Sources/*.x) $(TWEAK_NAME)_FRAMEWORKS = UIKit Security $(TWEAK_NAME)_CFLAGS = -fobjc-arc -DTWEAK_VERSION=\"$(PACKAGE_VERSION)\" $(TWEAK_NAME)_INJECT_DYLIBS = Tweaks/uYou/Library/MobileSubstrate/DynamicLibraries/uYou.dylib $(THEOS_OBJ_DIR)/libFLEX.dylib $(THEOS_OBJ_DIR)/iSponsorBlock.dylib $(THEOS_OBJ_DIR)/YouPiP.dylib $(THEOS_OBJ_DIR)/YouTubeDislikesReturn.dylib $(THEOS_OBJ_DIR)/YTABConfig.dylib $(THEOS_OBJ_DIR)/YTUHD.dylib $(THEOS_OBJ_DIR)/DontEatMyContent.dylib $(THEOS_OBJ_DIR)/IAmYouTube.dylib $(THEOS_OBJ_DIR)/YTClassicVideoQuality.dylib $(THEOS_OBJ_DIR)/NoYTPremium.dylib $(THEOS_OBJ_DIR)/YTSpeed.dylib From b8190013f714195373f83c004bfcfabcaeedfe13 Mon Sep 17 00:00:00 2001 From: Foxster Date: Mon, 25 Dec 2023 11:49:31 -0800 Subject: [PATCH 36/45] Use PoomSmart's FLEXing fork (rootless) --- .gitmodules | 1 + Tweaks/FLEXing | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitmodules b/.gitmodules index 71dc651..420400b 100644 --- a/.gitmodules +++ b/.gitmodules @@ -41,6 +41,7 @@ [submodule "Tweaks/FLEXing"] path = Tweaks/FLEXing url = https://github.com/PoomSmart/FLEXing + branch = rootless [submodule "Tweaks/Alderis"] path = Tweaks/Alderis url = https://github.com/hbang/Alderis.git diff --git a/Tweaks/FLEXing b/Tweaks/FLEXing index 9ce0437..f7a65cf 160000 --- a/Tweaks/FLEXing +++ b/Tweaks/FLEXing @@ -1 +1 @@ -Subproject commit 9ce0437c92bf9b7fbbeab08aa4e9d508087c9248 +Subproject commit f7a65cf89b92ca1d35bf8b499acc4419eef7bc13 From ed90d074213002d7469b9e444578cae5c583f231 Mon Sep 17 00:00:00 2001 From: Foxster Date: Mon, 25 Dec 2023 11:49:43 -0800 Subject: [PATCH 37/45] Update submodules --- Tweaks/YTABConfig | 2 +- Tweaks/YTVideoOverlay | 2 +- Tweaks/YouMute | 2 +- Tweaks/YouQuality | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Tweaks/YTABConfig b/Tweaks/YTABConfig index 49fd33b..07f8548 160000 --- a/Tweaks/YTABConfig +++ b/Tweaks/YTABConfig @@ -1 +1 @@ -Subproject commit 49fd33bedbe6648555fbd9c1e3d345f61a6c75d4 +Subproject commit 07f8548a0070e7d14469cddc7f9c3c02b2a03d89 diff --git a/Tweaks/YTVideoOverlay b/Tweaks/YTVideoOverlay index c2ebdff..76d11f4 160000 --- a/Tweaks/YTVideoOverlay +++ b/Tweaks/YTVideoOverlay @@ -1 +1 @@ -Subproject commit c2ebdff6cb880bbf06a18823e935f43db1d5f905 +Subproject commit 76d11f40e6be86e57bdf56bb054e43c297111c18 diff --git a/Tweaks/YouMute b/Tweaks/YouMute index 7ab3b3d..7ffdb1e 160000 --- a/Tweaks/YouMute +++ b/Tweaks/YouMute @@ -1 +1 @@ -Subproject commit 7ab3b3d907393ff2409f8ce80fee64bf7976ecc5 +Subproject commit 7ffdb1eda6697f718382f74b9310c6a2b3e92c62 diff --git a/Tweaks/YouQuality b/Tweaks/YouQuality index 7f47a36..7a98414 160000 --- a/Tweaks/YouQuality +++ b/Tweaks/YouQuality @@ -1 +1 @@ -Subproject commit 7f47a365ed001511040ce7511f1e3d958aad22c2 +Subproject commit 7a9841410d3715a46f8a2c34aa58b17772f01d55 From ca9791f7326ef4c8785938bc5a4c602eaaed4c15 Mon Sep 17 00:00:00 2001 From: Foxster Date: Mon, 25 Dec 2023 13:58:20 -0800 Subject: [PATCH 38/45] Fix uYou's appearance not updating if the app is backgrounded --- Sources/uYouPlusPatches.h | 22 +++++++++++++++++++++- Sources/uYouPlusPatches.xm | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 53 insertions(+), 1 deletion(-) diff --git a/Sources/uYouPlusPatches.h b/Sources/uYouPlusPatches.h index 0675e85..95df553 100644 --- a/Sources/uYouPlusPatches.h +++ b/Sources/uYouPlusPatches.h @@ -24,4 +24,24 @@ // uYou theme fix // @interface YTAppDelegate () // @property(nonatomic, strong) id downloadsVC; -// @end \ No newline at end of file +// @end + +// Fix uYou's appearance not updating if the app is backgrounded +@interface DownloadsPagerVC : UIViewController +- (NSArray *)viewControllers; +- (void)updatePageStyles; +@end +@interface DownloadingVC : UIViewController +- (void)updatePageStyles; +- (UITableView *)tableView; +@end +@interface DownloadingCell : UITableViewCell +- (void)updatePageStyles; +@end +@interface DownloadedVC : UIViewController +- (void)updatePageStyles; +- (UITableView *)tableView; +@end +@interface DownloadedCell : UITableViewCell +- (void)updatePageStyles; +@end \ No newline at end of file diff --git a/Sources/uYouPlusPatches.xm b/Sources/uYouPlusPatches.xm index 2db21e7..bcc5c46 100644 --- a/Sources/uYouPlusPatches.xm +++ b/Sources/uYouPlusPatches.xm @@ -102,6 +102,38 @@ } %end +// Fix uYou's appearance not updating if the app is backgrounded +DownloadsPagerVC *downloadsPagerVC; +static void refreshUYouAppearance() { + if (!downloadsPagerVC) return; + [downloadsPagerVC updatePageStyles]; + for (UIViewController *vc in [downloadsPagerVC viewControllers]) { + if ([vc isKindOfClass:%c(DownloadingVC)]) { + [(DownloadingVC *)vc updatePageStyles]; + for (UITableViewCell *cell in [(DownloadingVC *)vc tableView].visibleCells) + if ([cell isKindOfClass:%c(DownloadingCell)]) + [(DownloadingCell *)cell updatePageStyles]; + } else if ([vc isKindOfClass:%c(DownloadedVC)]) { + [(DownloadedVC *)vc updatePageStyles]; + for (UITableViewCell *cell in [(DownloadedVC *)vc tableView].visibleCells) + if ([cell isKindOfClass:%c(DownloadedCell)]) + [(DownloadedCell *)cell updatePageStyles]; + } + } +} +%hook DownloadsPagerVC +- (instancetype)init { + downloadsPagerVC = %orig; + return downloadsPagerVC; +} +%end +%hook UIViewController +- (void)traitCollectionDidChange:(UITraitCollection *)previousTraitCollection { + %orig; + refreshUYouAppearance(); +} +%end + %ctor { %init; if (@available(iOS 16, *)) { From 34fa42f72116302bc1bce0b9e8518c405bad040f Mon Sep 17 00:00:00 2001 From: Foxster Date: Mon, 25 Dec 2023 14:01:34 -0800 Subject: [PATCH 39/45] Revert to qnblackcat's URLs --- Sources/uYouPlusSettings.xm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Sources/uYouPlusSettings.xm b/Sources/uYouPlusSettings.xm index 274278e..d309a6b 100644 --- a/Sources/uYouPlusSettings.xm +++ b/Sources/uYouPlusSettings.xm @@ -54,7 +54,7 @@ extern NSBundle *uYouPlusBundle(); return VERSION_STRING; } selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) { - return [%c(YTUIUtils) openURL:[NSURL URLWithString:@"https://github.com/therealFoxster/uYouPlus/releases"]]; + return [%c(YTUIUtils) openURL:[NSURL URLWithString:@"https://github.com/qnblackcat/uYouPlus/releases"]]; } ]; [sectionItems addObject:version]; @@ -65,7 +65,7 @@ extern NSBundle *uYouPlusBundle(); accessibilityIdentifier:nil detailTextBlock:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) { - NSString *url = [NSString stringWithFormat:@"https://github.com/therealFoxster/uYouPlus/issues/new/?title=[v%@] %@", VERSION_STRING, LOC(@"ADD_TITLE")]; + NSString *url = [NSString stringWithFormat:@"https://github.com/qnblackcat/uYouPlus/issues/new?assignees=&labels=bug&projects=&template=bug.yaml&title=[v%@] %@", VERSION_STRING, LOC(@"ADD_TITLE")]; return [%c(YTUIUtils) openURL:[NSURL URLWithString:[url stringByReplacingOccurrencesOfString:@" " withString:@"%20"]]]; } From e4d1875ae8b610fb7d6ca5cfe4c672c0639b4c14 Mon Sep 17 00:00:00 2001 From: Foxster Date: Mon, 25 Dec 2023 15:13:32 -0800 Subject: [PATCH 40/45] Fix uYou tab labels appearance not refreshing --- Sources/uYouPlusPatches.h | 3 +++ Sources/uYouPlusPatches.xm | 27 ++++++++++++++++++++++++++- 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/Sources/uYouPlusPatches.h b/Sources/uYouPlusPatches.h index 95df553..b8734c0 100644 --- a/Sources/uYouPlusPatches.h +++ b/Sources/uYouPlusPatches.h @@ -44,4 +44,7 @@ @end @interface DownloadedCell : UITableViewCell - (void)updatePageStyles; +@end +@interface UILabel (uYou) ++ (id)_defaultColor; @end \ No newline at end of file diff --git a/Sources/uYouPlusPatches.xm b/Sources/uYouPlusPatches.xm index bcc5c46..d05f611 100644 --- a/Sources/uYouPlusPatches.xm +++ b/Sources/uYouPlusPatches.xm @@ -104,28 +104,53 @@ // Fix uYou's appearance not updating if the app is backgrounded DownloadsPagerVC *downloadsPagerVC; +NSUInteger selectedTabIndex; static void refreshUYouAppearance() { if (!downloadsPagerVC) return; + // View pager [downloadsPagerVC updatePageStyles]; + // Views for (UIViewController *vc in [downloadsPagerVC viewControllers]) { if ([vc isKindOfClass:%c(DownloadingVC)]) { + // `Downloading` view [(DownloadingVC *)vc updatePageStyles]; for (UITableViewCell *cell in [(DownloadingVC *)vc tableView].visibleCells) if ([cell isKindOfClass:%c(DownloadingCell)]) [(DownloadingCell *)cell updatePageStyles]; - } else if ([vc isKindOfClass:%c(DownloadedVC)]) { + } + else if ([vc isKindOfClass:%c(DownloadedVC)]) { + // `All`, `Audios`, `Videos`, `Shorts` views [(DownloadedVC *)vc updatePageStyles]; for (UITableViewCell *cell in [(DownloadedVC *)vc tableView].visibleCells) if ([cell isKindOfClass:%c(DownloadedCell)]) [(DownloadedCell *)cell updatePageStyles]; } } + // View pager tabs + for (UIView *subview in [downloadsPagerVC view].subviews) { + if ([subview isKindOfClass:[UIScrollView class]]) { + UIScrollView *tabs = (UIScrollView *)subview; + NSUInteger i = 0; + for (UIView *item in tabs.subviews) { + if ([item isKindOfClass:[UILabel class]]) { + // Tab label + UILabel *tabLabel = (UILabel *)item; + if (i == selectedTabIndex) {} // Selected tab should be excluded + else [tabLabel setTextColor:[UILabel _defaultColor]]; + i++; + } + } + } + } } %hook DownloadsPagerVC - (instancetype)init { downloadsPagerVC = %orig; return downloadsPagerVC; } +- (void)viewPager:(id)viewPager didChangeTabToIndex:(NSUInteger)arg1 fromTabIndex:(NSUInteger)arg2 { + %orig; selectedTabIndex = arg1; +} %end %hook UIViewController - (void)traitCollectionDidChange:(UITraitCollection *)previousTraitCollection { From b594765d69e08b46d57f2b8a2c9a005ab5af7f5f Mon Sep 17 00:00:00 2001 From: Foxster Date: Mon, 25 Dec 2023 17:17:09 -0800 Subject: [PATCH 41/45] Prevent uYou's playback from colliding with YouTube's --- Sources/uYouPlusPatches.xm | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/Sources/uYouPlusPatches.xm b/Sources/uYouPlusPatches.xm index d05f611..9926bd4 100644 --- a/Sources/uYouPlusPatches.xm +++ b/Sources/uYouPlusPatches.xm @@ -159,6 +159,19 @@ static void refreshUYouAppearance() { } %end +// Prevent uYou's playback from colliding with YouTube's +BOOL isYTPlaybackActive = NO; +%hook HAMPlayerInternal +- (void)play { %orig; isYTPlaybackActive = YES; } +- (void)terminate { %orig; isYTPlaybackActive = NO; } +%end +%hook PlayerManager +- (void)play { + if (isYTPlaybackActive) return; + %orig; +} +%end + %ctor { %init; if (@available(iOS 16, *)) { From 1b0f4bc81b377f0e16d029ba323eadca8b8b5a1e Mon Sep 17 00:00:00 2001 From: Foxster Date: Mon, 25 Dec 2023 17:53:08 -0800 Subject: [PATCH 42/45] Temporarily disable uYou's bouncy animation cause it's buggy --- Sources/uYouPlusPatches.xm | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Sources/uYouPlusPatches.xm b/Sources/uYouPlusPatches.xm index 9926bd4..649dd25 100644 --- a/Sources/uYouPlusPatches.xm +++ b/Sources/uYouPlusPatches.xm @@ -172,6 +172,12 @@ BOOL isYTPlaybackActive = NO; } %end +// Temporarily disable uYou's bouncy animation cause it's buggy +%hook SSBouncyButton +- (void)beginShrinkAnimation {} +- (void)beginEnlargeAnimation {} +%end + %ctor { %init; if (@available(iOS 16, *)) { From 5d9cffb5e59de6b12d231d926c5529f8bc2f25c1 Mon Sep 17 00:00:00 2001 From: Foxster Date: Sat, 20 Jan 2024 14:56:15 -0800 Subject: [PATCH 43/45] Update .gitignore --- .gitignore | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 65551a9..2970049 100644 --- a/.gitignore +++ b/.gitignore @@ -5,4 +5,5 @@ tmp/ Tweaks/uYou/* !Tweaks/uYou/.gitkeep Resources/ -*.ipa \ No newline at end of file +*.ipa +.vscode \ No newline at end of file From 812ce520515aa29f63f5a1f522dd69a20c1a49c7 Mon Sep 17 00:00:00 2001 From: Foxster Date: Sat, 20 Jan 2024 15:10:23 -0800 Subject: [PATCH 44/45] Move uYou patches to uYouPlusPatches.xm --- Sources/uYouPlus.xm | 9 --------- Sources/uYouPlusPatches.xm | 11 +++++++++++ 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/Sources/uYouPlus.xm b/Sources/uYouPlus.xm index 8df1d42..657e5ba 100644 --- a/Sources/uYouPlus.xm +++ b/Sources/uYouPlus.xm @@ -310,15 +310,6 @@ NSBundle *tweakBundle = uYouPlusBundle(); if (IS_ENABLED(@"iPhoneLayout_enabled") && (UIDevice.currentDevice.userInterfaceIdiom == UIUserInterfaceIdiomPad)) { %init(giPhoneLayout); } - - // Disable updates - [[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"automaticallyCheckForUpdates"]; - - // Don't show uYou's welcome screen cuz it's currently broken (fix #1147) - [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"showedWelcomeVC"]; - - // Disable broken options of uYou - [[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"disableAgeRestriction"]; // Change the default value of some options NSArray *allKeys = [[[NSUserDefaults standardUserDefaults] dictionaryRepresentation] allKeys]; diff --git a/Sources/uYouPlusPatches.xm b/Sources/uYouPlusPatches.xm index 649dd25..62ba1bf 100644 --- a/Sources/uYouPlusPatches.xm +++ b/Sources/uYouPlusPatches.xm @@ -183,4 +183,15 @@ BOOL isYTPlaybackActive = NO; if (@available(iOS 16, *)) { %init(iOS16); } + + // Disable broken options + + // Disable uYou's auto updates + [[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"automaticallyCheckForUpdates"]; + + // Disable uYou's welcome screen (fix #1147) + [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"showedWelcomeVC"]; + + // Disable uYou's disable age restriction + [[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"disableAgeRestriction"]; } \ No newline at end of file From ad4f968f74d4c44173f4c5342514afee1cbce517 Mon Sep 17 00:00:00 2001 From: Foxster Date: Sat, 20 Jan 2024 15:10:36 -0800 Subject: [PATCH 45/45] Disable uYou's playback speed controls --- Sources/uYouPlusPatches.xm | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Sources/uYouPlusPatches.xm b/Sources/uYouPlusPatches.xm index 62ba1bf..bf520a1 100644 --- a/Sources/uYouPlusPatches.xm +++ b/Sources/uYouPlusPatches.xm @@ -194,4 +194,7 @@ BOOL isYTPlaybackActive = NO; // Disable uYou's disable age restriction [[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"disableAgeRestriction"]; + + // Disable uYou's playback speed controls (prevent crash on video playback https://github.com/therealFoxster/uYouPlus/issues/2#issuecomment-1894912963) + [[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"showPlaybackRate"]; } \ No newline at end of file