diff --git a/.github/ISSUE_TEMPLATE/bug.md b/.github/ISSUE_TEMPLATE/bug.md index c72b57f..c6ec5da 100644 --- a/.github/ISSUE_TEMPLATE/bug.md +++ b/.github/ISSUE_TEMPLATE/bug.md @@ -27,6 +27,7 @@ _(Please attach videos or screenshots if possible)_ ### Crash log (if possible) _(The crash log can be found in the Settings app - Privacy - Analytics & Improvements - Analytics Data - Youtube...)_ +### Does the issue happen with the official YouTube from AppStore? +_(Well, YouTube itself is buggy sometimes...)_ -### Additional context: - +### Additional context: diff --git a/.github/workflows/buildapp.yml b/.github/workflows/buildapp.yml index d707e72..4d40153 100644 --- a/.github/workflows/buildapp.yml +++ b/.github/workflows/buildapp.yml @@ -56,13 +56,10 @@ jobs: path: theos submodules: recursive - - name: Download iOS 15 SDK + - name: Download iOS 15.5 SDK run: | - curl -LO https://github.com/chrisharper22/sdks/archive/main.zip - TMP=$(mktemp -d) - unzip -qq main.zip -d $TMP - mv $TMP/sdks-main/*.sdk $THEOS/sdks - rm -r main.zip $TMP + svn checkout -q https://github.com/chrisharper22/sdks/trunk/iPhoneOS15.5.sdk + mv *.sdk $THEOS/sdks env: THEOS: ${{ github.workspace }}/theos diff --git a/Header.h b/Header.h index b925c77..8e6718a 100644 --- a/Header.h +++ b/Header.h @@ -12,8 +12,8 @@ @interface YTMainAppControlsOverlayView : UIView @end -// @interface YTTransportControlsButtonView : UIView -// @end +@interface YTTransportControlsButtonView : UIView +@end @interface _ASCollectionViewCell : UICollectionViewCell - (id)node; diff --git a/README.md b/README.md index 9393190..da4f1ca 100644 --- a/README.md +++ b/README.md @@ -21,7 +21,9 @@ - [PoomSmart](https://twitter.com/poomsmart) - the developer of many tweaks used by uYouPlus, see [Version info - Download](#download) for more details. -- [level3tjg](https://twitter.com/level3tjg) - for [YTNoHoverCards](https://github.com/level3tjg/YTNoHoverCards) and [YTMiniplayerEnabler](https://github.com/level3tjg/YTMiniplayerEnabler). +- [level3tjg](https://twitter.com/level3tjg) for [YTNoHoverCards](https://github.com/level3tjg/YTNoHoverCards), [YTMiniplayerEnabler](https://github.com/level3tjg/YTMiniplayerEnabler) and many hot patches for uYou. + +- [BandarHL](https://twitter.com/bandarhl) for a bunch of improvements. - [Lyvendia](https://github.com/Lyvendia/) for [YTSpeed](https://github.com/Lyvendia/YTSpeed/) @@ -29,6 +31,8 @@ - [theos team](https://github.com/theos/theos) for theos & theos-jailed. +- Thanks to all the translators who have contributed to uYouPlus. Your contribution is highly appreciated! + # Features 1. **uYou:** uYou has a ton of features that I can't list them all. Visit [here](https://miro92.com/repo/depictions/?p=com.miro.uyou) for more info! @@ -48,17 +52,15 @@ 7. **YTNoHoverCards:** offer an option to enable/disable the annoying suggested videos show up at the end of the videos. -8. **YTSystemAppearance**: sync the YouTube theme (dark/light) with the system theme. +8. **YTNoCheckLocalNetwork**: block the Local Network permission popup. -9. **YTNoCheckLocalNetwork**: block the Local Network permission popup. +9. **YouRememberCaption**: make YouTube remember your video caption setting (if not already). -10. **YouRememberCaption**: make YouTube remember your video caption setting (if not already). +10. **NoYTPremium**: remove YouTube Premium upshells. -11. **NoYTPremium**: remove YouTube Premium upshells. +11. **YTSpeed**: add 2.25, 2.5, 2.75, and 3x playback speed -12. **YTSpeed**: add 2.25, 2.5, 2.75, and 3x playback speed - -13. **YTMiniplayerEnabler**: enable Miniplayer for all YouTube videos. +12. **YTMiniplayerEnabler**: enable Miniplayer for all YouTube videos. @@ -76,16 +78,16 @@ - My official AltStore repo: https://qnblackcat.github.io/AltStore/ - - [Open in AltStore (v17.26.2-2.1)](https://tinyurl.com/2y86dh6b) - It will take a while to install because AltStore needs to download the IPA. + - [Open in AltStore (v17.30.3-2.1)](https://tinyurl.com/4usrjzzk) - It will take a while to install because AltStore needs to download the IPA. -- Version info: _(last update: Jul 11)_ +- Version info: _(last update: Aug 05)_
Expand | **Tweaks/App** | **Developer** | **Version** | **Open source** | | - | - | :-: | :-: | -| **YouTube** | Google Inc | 17.26.2 | ✖︎ | +| **YouTube** | Google Inc | 17.30.3 | ✖︎ | | [uYou](https://github.com/MiRO92/uYou-for-YouTube) | [MiRO92](https://twitter.com/miro92) | 2.1 | ✖︎ | | [Open in YouTube](https://github.com/CokePokes/YoutubeExtensions) | [CokePokes](https://github.com/CokePokes) | 1.2 | ✖︎ | | **iSponsorBlock** | [Galactic-Dev](https://github.com/Galactic-Dev) | 1.0-14 | [✔︎](https://github.com/Galactic-Dev/iSponsorBlock) | @@ -103,7 +105,6 @@ | **YTNoPaidPromo** | [PoomSmart](https://twitter.com/poomsmart) | 1.0.0 | [✔︎](https://github.com/PoomSmart/YTNoPaidPromo) | | **YTAutoFullScreen** | [PoomSmart](https://twitter.com/poomsmart) | 1.0.3 | [✔︎](https://github.com/PoomSmart/YTAutoFullScreen) | | **YouRememberCaption** | [PoomSmart](https://twitter.com/poomsmart) | 1.0.0 | [✔︎](https://poomsmart.github.io/repo/depictions/youremembercaption.html) | -| **YTSystemAppearance** | [PoomSmart](https://twitter.com/poomsmart) | 1.0.0 | [✔︎](https://poomsmart.github.io/repo/depictions/ytsystemappearance.html) | | **YTClassicVideoQuality** | [PoomSmart](https://twitter.com/poomsmart) | 1.0.1 | [✔︎](https://github.com/PoomSmart/YTClassicVideoQuality) | | **Return YouTube Dislike** | [PoomSmart](https://twitter.com/poomsmart) | 1.6.5 | [✔︎](https://github.com/PoomSmart/Return-YouTube-Dislikes) | | **YTNoCheckLocalNetwork** | [PoomSmart](https://twitter.com/poomsmart) | 1.0.2 | [✔︎](https://poomsmart.github.io/repo/depictions/ytnochecklocalnetwork.html) | @@ -130,6 +131,12 @@ See [Installation - Wiki](https://github.com/qnblackcat/uYouPlus/wiki/Installati
+
+ Bandar Alruwaili (BandarHL) + +- Paypal: https://www.paypal.com/paypalme/BandarHL +
+
Galactic-dev diff --git a/Settings.xm b/Settings.xm index f5f737b..b1ac918 100644 --- a/Settings.xm +++ b/Settings.xm @@ -42,6 +42,15 @@ extern BOOL hidePaidPromotionCard(); YTSettingsViewController *delegate = [self valueForKey:@"_dataDelegate"]; NSBundle *tweakBundle = uYouPlusBundle(); + YTSettingsSectionItem *killApp = [%c(YTSettingsSectionItem) // https://github.com/PoomSmart/YTABConfig/blob/b74d7f28151c407cffc21cce12908c49e9e65999/Tweak.x#L76 + itemWithTitle:LOC(@"KILL_APP") + titleDescription:LOC(@"KILL_APP_DESC") + accessibilityIdentifier:nil + detailTextBlock:nil + selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) { + exit(0); + }]; + YTSettingsSectionItem *hidePaidPromotionCard = [[%c(YTSettingsSectionItem) alloc] initWithTitle:LOC(@"HIDE_PAID_PROMOTION_CARDS") titleDescription:LOC(@"HIDE_PAID_PROMOTION_CARDS_DESC")]; hidePaidPromotionCard.hasSwitch = YES; hidePaidPromotionCard.switchVisible = YES; @@ -159,7 +168,7 @@ extern BOOL hidePaidPromotionCard(); return YES; }; - NSMutableArray *sectionItems = [NSMutableArray arrayWithArray:@[autoFull, castConfirm, ytMiniPlayer, hideAutoplaySwitch, hideCC, hideHUD, hidePaidPromotionCard, hidePreviousAndNextButton, hideHoverCard, bigYTMiniPlayer, oledDarkMode, oledKeyBoard, reExplore]]; + NSMutableArray *sectionItems = [NSMutableArray arrayWithArray:@[killApp, autoFull, castConfirm, ytMiniPlayer, hideAutoplaySwitch, hideCC, hideHUD, hidePaidPromotionCard, hidePreviousAndNextButton, hideHoverCard, bigYTMiniPlayer, oledDarkMode, oledKeyBoard, reExplore]]; [delegate setSectionItems:sectionItems forCategory:uYouPlusSection title:@"uYouPlus" titleDescription:nil headerHidden:NO]; } diff --git a/Tweaks/Alderis b/Tweaks/Alderis index 978ca5c..c5b3ed5 160000 --- a/Tweaks/Alderis +++ b/Tweaks/Alderis @@ -1 +1 @@ -Subproject commit 978ca5c48372c6047e06e26860839bf82a2e6da1 +Subproject commit c5b3ed5761b49542bd9bb8f011d97e68ab5ed293 diff --git a/Tweaks/Return-YouTube-Dislikes b/Tweaks/Return-YouTube-Dislikes index 5f86ef7..deae67a 160000 --- a/Tweaks/Return-YouTube-Dislikes +++ b/Tweaks/Return-YouTube-Dislikes @@ -1 +1 @@ -Subproject commit 5f86ef7d91c984f3797902e230f3e542ba231b6d +Subproject commit deae67afeacfd6ab9ee12552a1eb2220c97f4607 diff --git a/Tweaks/YTSpeed b/Tweaks/YTSpeed index 7c11d9c..3fec2df 160000 --- a/Tweaks/YTSpeed +++ b/Tweaks/YTSpeed @@ -1 +1 @@ -Subproject commit 7c11d9c91686c6ea205bebf50e6ffc283be6d482 +Subproject commit 3fec2dfcf0714a23e96d3cf523c7e86c019c2020 diff --git a/Tweaks/YTUHD b/Tweaks/YTUHD index 5f4f9cf..b0d24c0 160000 --- a/Tweaks/YTUHD +++ b/Tweaks/YTUHD @@ -1 +1 @@ -Subproject commit 5f4f9cf1f051eb6d8774155a791b5c8522397321 +Subproject commit b0d24c0859f24c714334b60154ceaef9c09fb663 diff --git a/Tweaks/YouPiP b/Tweaks/YouPiP index 9ce79c2..a8c4224 160000 --- a/Tweaks/YouPiP +++ b/Tweaks/YouPiP @@ -1 +1 @@ -Subproject commit 9ce79c280cb0965155717d8216dfc91fe9525e5b +Subproject commit a8c4224f7d44cb81efd9bf8075cd25aefa327f7f diff --git a/Tweaks/YouTubeHeader b/Tweaks/YouTubeHeader index c34699b..291a6cf 160000 --- a/Tweaks/YouTubeHeader +++ b/Tweaks/YouTubeHeader @@ -1 +1 @@ -Subproject commit c34699b33c6f5dbfd59e1a0ed3023ca41cb831bd +Subproject commit 291a6cfaa0d6c029790025d4b31c2104bb930c89 diff --git a/Tweaks/iSponsorBlock b/Tweaks/iSponsorBlock index a936217..09a485c 160000 --- a/Tweaks/iSponsorBlock +++ b/Tweaks/iSponsorBlock @@ -1 +1 @@ -Subproject commit a936217c38ee0786ab5787935b905090056e717f +Subproject commit 09a485c8a085cc599c3ca2c1b3f2a377ec0d4711 diff --git a/lang/uYouPlus.bundle/cz.lproj/Localizable.strings b/lang/uYouPlus.bundle/cz.lproj/Localizable.strings new file mode 100644 index 0000000..c600782 --- /dev/null +++ b/lang/uYouPlus.bundle/cz.lproj/Localizable.strings @@ -0,0 +1,58 @@ +// How to translate uYouPlus to your languate: +// +// 1. Fork uYouPlus repo +// 2. Duplicate the template.lproj folder, and edit the duplicated folder's name to your .lproj id. +// For example: for Russia. For more details, visit: https://en.wikipedia.org/wiki/List_of_ISO_3166_country_codes +// 3. Translate each line below after each = +// 4. Open a Pull Request +// +// If your language already exists then feel free to check it and/or improve it! +// You can also add your localiztion to YouPiP here, the process is the same +// https://github.com/PoomSmart/YouPiP/tree/main/layout/Library/Application%20Support/YouPiP.bundle +// +// Settings + +"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."; + +"YT_MINIPLAYER" = "Povolit Minipřehrávač pro všechna videa"; +"YT_MINIPLAYER_DESC" = "Například u videa pro děti"; + +"CAST_CONFIRM" = "Zobrazit potvrzení před začátkem sdílení obrazu (YTCastConfirm)"; +"CAST_CONFIRM_DESC" = "Zobrazí potvrzení aby se zamezilo nechtěnému sdílení do televize."; + +"HIDE_HOVER_CARD" = "Skrýt karty na konci videa (YTNoHoverCards)"; +"HIDE_HOVER_CARD_DESC" = "Skryje náhledy jiných videjí na konci videa."; + +"NEW_MINIPLAYER_STYLE" = "Nový styl minipřehrávače (BigYTMiniPlayer)"; +"NEW_MINIPLAYER_STYLE_DESC" = "Je potřeba restart aplikace."; + +"YT_RE_EXPLORE" = "Nahradit záložku Shorts tab záložkou Explore (YTReExplore)"; +"YT_RE_EXPLORE_DESC" = "Je potřeba restart aplikace."; + +"HIDE_SUBTITLES_BUTTON" = "Skrýt tlačítko titulky"; +"HIDE_SUBTITLES_BUTTON_DESC" = "Skryje tlačítko titulky v překrytí ovládání videa."; + +"HIDE_AUTOPLAY_SWITCH" = "Skrýt přepínač automatického přehrávání"; +"HIDE_AUTOPLAY_SWITCH_DESC" = "Skryje přepínač automatického přehrávání v překrytí ovládání videa."; + +"AUTO_FULLSCREEN" = "Přes celou obrazovku (YTAutoFullScreen)"; +"AUTO_FULLSCREEN_DESC" = "Automaticky spouští videa přes celou obrazovku."; + +"HIDE_HUD_MESSAGES" = "Skrýt vyskakující zprávy"; +"HIDE_HUD_MESSAGES_DESC" = "Příklad: Titulky zapnuty/vypnuty, Smyčka videa zapnuta,..."; + +"OLED_DARKMODE" = "Tmavý OLED režim (Experimentální)"; +"OLED_DARKMODE_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."; + +"HIDE_PAID_PROMOTION_CARDS" = "Skrýt kartu placené propagace"; +"HIDE_PAID_PROMOTION_CARDS_DESC" = "Skryje 'Obsahuje placenou propagaci' u některých videjí."; + +// YTCastConfirm +"CASTING" = "Sdílení obrazu"; +"MSG_ARE_YOU_SURE" = "Opravdu chcete začít sdílet obraz?"; +"MSG_YES" = "Ano"; +"MSG_CANCEL" = "Zrušit"; \ No newline at end of file diff --git a/lang/uYouPlus.bundle/de.lproj/Localizable.strings b/lang/uYouPlus.bundle/de.lproj/Localizable.strings index 66a8ff7..b825e5a 100644 --- a/lang/uYouPlus.bundle/de.lproj/Localizable.strings +++ b/lang/uYouPlus.bundle/de.lproj/Localizable.strings @@ -1,53 +1,46 @@ -// How to translate uYouPlus to your languate: - // - // 1. Fork uYouPlus repo - // 2. Duplicate the template.lproj folder, and edit the duplicated folder's name to your .lproj id. For example: ru.lproj - // for Russia. For more details, visit: https://en.wikipedia.org/wiki/List_of_ISO_3166_country_codes - // 3. Translate each line below after each = - // 4. Open a Pull Request - // - // If your language already exists then feel free to check it and/or improve it! - // - // Settings +// Settings - "HIDE_PREVIOUS_AND_NEXT_BUTTON" = "Spultasten ausblenden"; - "HIDE_PREVIOUS_AND_NEXT_BUTTON_DESC" = "Spultasten im Video ausblenden"; +"HIDE_PREVIOUS_AND_NEXT_BUTTON" = "Vor- und Zurücktasten ausblenden"; +"HIDE_PREVIOUS_AND_NEXT_BUTTON_DESC" = "Vor- und Zurückspultasten vom Videoplayer ausblenden."; - "YT_MINIPLAYER" = "Miniplayer für alle YouTube-Videos aktivieren"; - "YT_MINIPLAYER_DESC" = "Zum Beispiel bei Videos für Kinder."; +"YT_MINIPLAYER" = "Miniplayer für alle YT Videos aktivieren"; +"YT_MINIPLAYER_DESC" = "z.B. bei Videos für Kinder"; - "CAST_CONFIRM" = "Warnung vor Starten einer Übertragung (YTCastConfirm)"; - "CAST_CONFIRM_DESC" = "Warnung vor Starten einer Übertragung, um ein versehentliches Übernehmen des TVs zu verhindern."; +"CAST_CONFIRM" = "Warnung vor TV-Übertragungen (YTCastConfirm)"; +"CAST_CONFIRM_DESC" = "Zeigt eine Warnung an, um eine ausversehene TV-Übertragung zu verhindern."; - "HIDE_HOVER_CARD" = "Endkarten ausblenden (YTNoHoverCards)"; - "HIDE_HOVER_CARD_DESC" = "Endkarten (Thumbnails) am Ende von Videos ausblenden."; +"HIDE_HOVER_CARD" = "Endkarten ausblenden (YTNoHoverCards)"; +"HIDE_HOVER_CARD_DESC" = "Endkarten (Thumbnails) am Ende des Videos ausblenden."; - "NEW_MINIPLAYER_STYLE" = "Neue Miniplayer-Leiste (BigYTMiniPlayer)"; - "NEW_MINIPLAYER_STYLE_DESC" = "App-Neustart erforderlich."; +"NEW_MINIPLAYER_STYLE" = "Neuer Miniplayer Style (BigYTMiniPlayer)"; +"NEW_MINIPLAYER_STYLE_DESC" = "App-Neustart erforderlich!"; - "YT_RE_EXPLORE" = "Registerkarte Shorts durch Registerkarte Entdecken ersetzen (YTReExplore)"; - "YT_RE_EXPLORE_DESC" = "App-Neustart erforderlich."; +"YT_RE_EXPLORE" = "Shorts-Tab durch Entdecken-Tab ersetzen (YTReExplore)"; +"YT_RE_EXPLORE_DESC" = "App-Neustart erforderlich!"; - "HIDE_SUBTITLES_BUTTON" = "Schaltfläche Untertitel ausblenden"; - "HIDE_SUBTITLES_BUTTON_DESC" = "Schaltfläche Untertitel im Video ausblenden."; +"HIDE_SUBTITLES_BUTTON" = "Untertitel-Button ausblenden"; +"HIDE_SUBTITLES_BUTTON_DESC" = "Untertitel-Button vom Videoplayer ausblenden."; - "HIDE_AUTOPLAY_SWITCH" = "Schaltfläche Autoplay ausblenden"; - "HIDE_AUTOPLAY_SWITCH_DESC" = "Schaltfläche Autoplay im Video ausblenden."; +"HIDE_AUTOPLAY_SWITCH" = "Autoplay-Schalter ausblenden"; +"HIDE_AUTOPLAY_SWITCH_DESC" = "Autoplay-Schalter vom Videoplayer ausblenden."; - "AUTO_FULLSCREEN" = "Auto-Vollbild (YTAutoFullScreen)"; - "AUTO_FULLSCREEN_DESC" = "Auto. Videos im Vollbild starten."; +"AUTO_FULLSCREEN" = "Automatisches Vollbild (YTAutoFullScreen)"; +"AUTO_FULLSCREEN_DESC" = "Automatisch Videos im Vollbild starten."; - "HIDE_HUD_MESSAGES" = "HUD-Meldungen ausblenden"; - "HIDE_HUD_MESSAGES_DESC" = "Beispiel: CC ist ein/ausgeschaltet, Videoschleife ist eingeschaltet,..."; +"HIDE_HUD_MESSAGES" = "HUD-Nachrichten ausblenden"; +"HIDE_HUD_MESSAGES_DESC" = "z.B.: Untertitel sind akti-/deaktiviert, Videoschleife ist an, ..."; - "OLED_DARKMODE" = "OLED-Dunkelmodus (Experimentell)"; - "OLED_DARKMODE_DESC" = "Funktioniert in einigen Fällen möglicherweise nicht richtig. Ein App-Neustart ist nach Aktiv-/Deaktivierung erforderlich."; +"OLED_DARKMODE" = "OLED-Dunkelmodus (Experimental)"; +"OLED_DARKMODE_DESC" = "Könnte in manchen Fällen nicht richtig funktionieren. App-Neustart ist erforderlich, wenn diese Option akti-/deaktiviert wird!"; - "OLED_KEYBOARD" = "OLED-Tastatur (Experimentell)"; - "OLED_KEYBOARD_DESC" = "Funktioniert in einigen Fällen möglicherweise nicht richtig. App-Neustart erforderlich."; +"OLED_KEYBOARD" = "OLED-Tastatur (Experimental)"; +"OLED_KEYBOARD_DESC" = "Könnte in manchen Fällen nicht richtig funktionieren. App-Neustart erforderlich1"; - // YTCastConfirm - "CASTING" = "Übertragen"; - "MSG_ARE_YOU_SURE" = "Sind Sie sicher, dass Sie mit der Übertragung beginnen wollen?"; - "MSG_YES" = "Ja"; - "MSG_CANCEL" = "Abbrechen"; +"HIDE_PAID_PROMOTION_CARDS" = "Enthält bezahlte Werbung Info ausblenden"; +"HIDE_PAID_PROMOTION_CARDS_DESC" = "Enthält bezahlte Werbung Infobanner bei manchen Videos ausblenden."; + +// YTCastConfirm +"CASTING" = "TV-Übertragung"; +"MSG_ARE_YOU_SURE" = "Sind Sie sicher, dass Sie mit der Videoübertragung beginnen wollen?"; +"MSG_YES" = "Ja"; +"MSG_CANCEL" = "Abbrechen"; diff --git a/lang/uYouPlus.bundle/en.lproj/Localizable.strings b/lang/uYouPlus.bundle/en.lproj/Localizable.strings index 394ef12..e73104c 100644 --- a/lang/uYouPlus.bundle/en.lproj/Localizable.strings +++ b/lang/uYouPlus.bundle/en.lproj/Localizable.strings @@ -1,5 +1,8 @@ // Settings +"KILL_APP" = "Close YouTube"; +"KILL_APP_DESC" = "Tap here to close YouTube!"; + "HIDE_PREVIOUS_AND_NEXT_BUTTON" = "Hide Previous and Next button"; "HIDE_PREVIOUS_AND_NEXT_BUTTON_DESC" = "Hide Previous and Next button in video controls overlay."; diff --git a/lang/uYouPlus.bundle/fr.lproj/Localizable.strings b/lang/uYouPlus.bundle/fr.lproj/Localizable.strings index d5047f0..7b6717c 100644 --- a/lang/uYouPlus.bundle/fr.lproj/Localizable.strings +++ b/lang/uYouPlus.bundle/fr.lproj/Localizable.strings @@ -1,5 +1,8 @@ // Settings +"KILL_APP" = "Fermer YouTube"; +"KILL_APP_DESC" = "Appuyez ici pour fermer YouTube !"; + "HIDE_PREVIOUS_AND_NEXT_BUTTON" = "Masquer les boutons Précédent et Suivant"; "HIDE_PREVIOUS_AND_NEXT_BUTTON_DESC" = "Masquer les boutons Précédent et Suivant dans la superposition des contrôles vidéo"; @@ -36,6 +39,9 @@ "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."; +"HIDE_PAID_PROMOTION_CARDS" = "Masquer la bannière des communications commerciales"; +"HIDE_PAID_PROMOTION_CARDS_DESC" = "Masque la bannière 'Inclut une communication commerciale' dans certaines vidéos."; + // YTCastConfirm "CASTING" = "Castings"; "MSG_ARE_YOU_SURE" = "Êtes-vous sûr de vouloir commencer le casting ?"; diff --git a/lang/uYouPlus.bundle/pt.lproj/Localizable.strings b/lang/uYouPlus.bundle/pt.lproj/Localizable.strings new file mode 100644 index 0000000..9f1705d --- /dev/null +++ b/lang/uYouPlus.bundle/pt.lproj/Localizable.strings @@ -0,0 +1,49 @@ +// Settings + +"KILL_APP" = "Fechar o YouTube"; +"KILL_APP_DESC" = "Toque aqui para fechar o YouTube!"; + +"HIDE_PREVIOUS_AND_NEXT_BUTTON" = "Ocultar botão Anterior e Próximo"; +"HIDE_PREVIOUS_AND_NEXT_BUTTON_DESC" = "Oculta o botão Anterior e Próximo na sobreposição de controles de vídeo."; + +"YT_MINIPLAYER" = "Ative o Miniplayer para todos os vídeos do YouTube"; +"YT_MINIPLAYER_DESC" = "Vídeos infantis, por exemplo."; + +"CAST_CONFIRM" = "Alerta de confirmação antes de transmitir (YTCastConfirm)"; +"CAST_CONFIRM_DESC" = "Mostra um alerta de confirmação antes da transmissão para evitar o sequestro acidental da TV."; + +"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."; + +"NEW_MINIPLAYER_STYLE" = "Novo estilo de barra de miniplayer (BigYTMiniPlayer)"; +"NEW_MINIPLAYER_STYLE_DESC" = "A reinicialização do app é necessária."; + +"YT_RE_EXPLORE" = "Substituir a guia Shorts pela guia Explorar (YTReExplore)"; +"YT_RE_EXPLORE_DESC" = "A reinicialização do app é necessária."; + +"HIDE_SUBTITLES_BUTTON" = "Ocultar botão de Legendas"; +"HIDE_SUBTITLES_BUTTON_DESC" = "Oculta o botão de Legendas na sobreposição de controles de vídeo."; + +"HIDE_AUTOPLAY_SWITCH" = "Ocultar interruptor de Reprodução automática"; +"HIDE_AUTOPLAY_SWITCH_DESC" = "Oculta o interruptor de Reprodução automática na sobreposição de controles de vídeo."; + +"AUTO_FULLSCREEN" = "Tela cheia automática (YTAutoFullScreen)"; +"AUTO_FULLSCREEN_DESC" = "Reproduz videos em tela cheia automaticamente."; + +"HIDE_HUD_MESSAGES" = "Ocultar Mensagens do HUD"; +"HIDE_HUD_MESSAGES_DESC" = "Exemplo: Legendas/CC ativadas/desativadas, A repetição do vídeo está ativada,..."; + +"OLED_DARKMODE" = "Modo escuro OLED (Experimental)"; +"OLED_DARKMODE_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."; + +"HIDE_PAID_PROMOTION_CARDS" = "Ocultar Banner de promoção paga"; +"HIDE_PAID_PROMOTION_CARDS_DESC" = "Oculta o banner 'Contém promoção paga' em alguns vídeos."; + +// YTCastConfirm +"CASTING" = "Transmissão"; +"MSG_ARE_YOU_SURE" = "Tem certeza de que deseja começar a transmitir?"; +"MSG_YES" = "Sim"; +"MSG_CANCEL" = "Cancelar"; diff --git a/lang/uYouPlus.bundle/template.lproj/Localizable.strings b/lang/uYouPlus.bundle/template.lproj/Localizable.strings index 3f7025b..76c40db 100644 --- a/lang/uYouPlus.bundle/template.lproj/Localizable.strings +++ b/lang/uYouPlus.bundle/template.lproj/Localizable.strings @@ -1,17 +1,20 @@ -// How to translate uYouPlus to your languate: +// How to translate uYouPlus to your language: // // 1. Fork uYouPlus repo // 2. Duplicate the template.lproj folder, and edit the duplicated folder's name to your .lproj id. -// For example: for Russia. For more details, visit: https://en.wikipedia.org/wiki/List_of_ISO_3166_country_codes +// For example: for Russia. For more details, visit: https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes // 3. Translate each line below after each = // 4. Open a Pull Request // // If your language already exists then feel free to check it and/or improve it! -// You can also add your localiztion to YouPiP here, the process is the same +// You can also add your localization to YouPiP here, the process is the same // https://github.com/PoomSmart/YouPiP/tree/main/layout/Library/Application%20Support/YouPiP.bundle // // Settings +"KILL_APP" = "Close YouTube"; +"KILL_APP_DESC" = "Tap here to close YouTube!"; + "HIDE_PREVIOUS_AND_NEXT_BUTTON" = "Hide Previous and Next button"; "HIDE_PREVIOUS_AND_NEXT_BUTTON_DESC" = "Hide Previous and Next button in video controls overlay."; @@ -55,4 +58,4 @@ "CASTING" = "Castings"; "MSG_ARE_YOU_SURE" = "Are you sure you want to start casting?"; "MSG_YES" = "Yes"; -"MSG_CANCEL" = "Cancel"; \ No newline at end of file +"MSG_CANCEL" = "Cancel"; diff --git a/lang/uYouPlus.bundle/vi.lproj/Localizable.strings b/lang/uYouPlus.bundle/vi.lproj/Localizable.strings index a201374..3432327 100644 --- a/lang/uYouPlus.bundle/vi.lproj/Localizable.strings +++ b/lang/uYouPlus.bundle/vi.lproj/Localizable.strings @@ -1,16 +1,19 @@ // Settings +"KILL_APP" = "Đóng ứng dụng"; +"KILL_APP_DESC" = "Chạm để đóng YouTube!"; + "HIDE_PREVIOUS_AND_NEXT_BUTTON" = "Ẩn nút Next và nút Previous"; "HIDE_PREVIOUS_AND_NEXT_BUTTON_DESC" = "Ẩn nút Next và nút Previous trong trình phát video."; -"YT_MINIPLAYER" = "Cho phép trình phát thu nhỏ chạy với mọi video"; +"YT_MINIPLAYER" = "Cho phép sử dụng trình phát thu nhỏ với mọi video"; "YT_MINIPLAYER_DESC" = "Ví dụ: Video cho trẻ em."; "CAST_CONFIRM" = "Xác nhận trước khi cast video (YTCastConfirm)"; -"CAST_CONFIRM_DESC" = "Hiện hộp thoại xác nhận trước khi cast video sang TV để ngăn việc vô tình làm gián đoạn TV."; +"CAST_CONFIRM_DESC" = "Hiện hộp thoại xác nhận trước khi cast video sang TV để tránh vô tình chiếm quyền điều khiển TV."; "HIDE_HOVER_CARD" = "Ẩn video dạng thumbnails (YTNoHoverCards)"; -"HIDE_HOVER_CARD_DESC" = "Ẩn các video dạng thu nhỏ (thumbnails) xuất hiện ở gần cuối video."; +"HIDE_HOVER_CARD_DESC" = "Ẩn thumbnail của các video đề xuất xuất hiện ở cuối video."; "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."; @@ -21,26 +24,26 @@ "HIDE_SUBTITLES_BUTTON" = "Ẩn nút bật Phụ đề"; "HIDE_SUBTITLES_BUTTON_DESC" = "Ẩn nút bật phụ đề trong trình phát video."; -"HIDE_AUTOPLAY_SWITCH" = "Ẩn công tắc Tự động phát"; -"HIDE_AUTOPLAY_SWITCH_DESC" = "Ẩn công tắc Tự động phát trong trình phát video."; +"HIDE_AUTOPLAY_SWITCH" = "Ẩn nút Tự động phát"; +"HIDE_AUTOPLAY_SWITCH_DESC" = "Ẩn nút Tự động phát trong 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."; -"HIDE_HUD_MESSAGES" = "Ẩn tin nhắn HUD"; +"HIDE_HUD_MESSAGES" = "Ẩn thông báo HUD"; "HIDE_HUD_MESSAGES_DESC" = "Ví dụ: Đã bật/tắt phụ đề, Tính năng phát video lặp lại đang bật,..."; -"OLED_DARKMODE" = "Chế độ tối OLED (Thử nghiệm)"; -"OLED_DARKMODE_DESC" = "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."; +"OLED_DARKMODE" = "Chế độ tối cho màn OLED (Thử nghiệm)"; +"OLED_DARKMODE_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."; -"OLED_KEYBOARD" = "Bàn phím OLED (Thử nghiệm)"; -"OLED_KEYBOARD_DESC" = "Tính năng này 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."; +"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."; -"HIDE_PAID_PROMOTION_CARDS" = "Ẩn popup quảng cáo được trả tiền"; -"HIDE_PAID_PROMOTION_CARDS_DESC" = "Ẩn popup 'Chứa nội dung được trả tiền để quảng cáo' trong một số video."; +"HIDE_PAID_PROMOTION_CARDS" = "Ẩn banner quảng cáo được trả tiền"; +"HIDE_PAID_PROMOTION_CARDS_DESC" = "Ẩn banner 'Chứa nội dung được trả tiền để quảng cáo' trong một số video."; // YTCastConfirm "CASTING" = "Truyền video"; "MSG_ARE_YOU_SURE" = "Bạn có muốn bắt đầu truyền video không?"; "MSG_YES" = "Có"; -"MSG_CANCEL" = "Không"; \ No newline at end of file +"MSG_CANCEL" = "Không"; diff --git a/lang/uYouPlus.bundle/zh_tw.lproj/Localizable.strings b/lang/uYouPlus.bundle/zh_tw.lproj/Localizable.strings index 4e8a34e..1d6e2c5 100644 --- a/lang/uYouPlus.bundle/zh_tw.lproj/Localizable.strings +++ b/lang/uYouPlus.bundle/zh_tw.lproj/Localizable.strings @@ -36,8 +36,11 @@ "OLED_KEYBOARD" = "OLED 鍵盤(實驗性)"; "OLED_KEYBOARD_DESC" = "在某些情況下可能無法正常工作。需要重新啟動應用程式。"; +"HIDE_PAID_PROMOTION_CARDS" = "隱藏付費促銷橫幅"; +"HIDE_PAID_PROMOTION_CARDS_DESC" = "在某些影片中隱藏“包括付費促銷”橫幅。"; + // YTCastConfirm "CASTING" = "投放中"; "MSG_ARE_YOU_SURE" = "確定要開始投放嗎?"; -"MSG_YES" = "是"; +"MSG_YES" = "確定"; "MSG_CANCEL" = "取消"; diff --git a/uYouPlus.xm b/uYouPlus.xm index af74b55..338d762 100644 --- a/uYouPlus.xm +++ b/uYouPlus.xm @@ -78,7 +78,6 @@ BOOL hidePaidPromotionCard() { %new - (BOOL)canReorder { return YES; } %end -// // YTMiniPlayerEnabler: https://github.com/level3tjg/YTMiniplayerEnabler/ %hook YTWatchMiniBarViewController @@ -103,8 +102,8 @@ BOOL hidePaidPromotionCard() { if (hidePreviousAndNextButton()) { MSHookIvar(self, "_nextButton").hidden = YES; MSHookIvar(self, "_previousButton").hidden = YES; - // MSHookIvar(self, "_nextButtonView").hidden = YES; - // MSHookIvar(self, "_previousButtonView").hidden = YES; + MSHookIvar(self, "_nextButtonView").hidden = YES; + MSHookIvar(self, "_previousButtonView").hidden = YES; } } %end @@ -209,12 +208,9 @@ BOOL hidePaidPromotionCard() { - (BOOL)isPromptForLocalNetworkPermissionsEnabled { return NO; } %end -// YTSystemAppearance: https://poomsmart.github.io/repo/depictions/ytsystemappearance.html // YouRememberCaption: https://poomsmart.github.io/repo/depictions/youremembercaption.html %hook YTColdConfig -- (BOOL)shouldUseAppThemeSetting { return YES; } - (BOOL)respectDeviceCaptionSetting { return NO; } -- (BOOL)isEnhancedSearchBarEnabled { return YES; } %end // NOYTPremium - https://github.com/PoomSmart/NoYTPremium/ @@ -244,9 +240,13 @@ BOOL hidePaidPromotionCard() { - (void)showSurveyWithRenderer:(id)arg1 surveyParentResponder:(id)arg2 {} %end -// Enable Shorts scroll bar - @level3tjg - https://reddit.com/r/jailbreak/comments/v29yvk/_/iasl1l0/ +// Enable Shorts scroll bar - @PoomSmart & @level3tjg %hook YTReelPlayerViewController -- (BOOL)shouldEnablePlayerBar { return YES; } +- (BOOL)shouldAlwaysEnablePlayerBar { return YES; } +%end + +%hook YTInlinePlayerBarContainerView +- (void)setUserInteractionEnabled:(BOOL)enabled { %orig(YES); } %end // Workaround for issue #54 @@ -387,7 +387,7 @@ UIColor* raisedColor = [UIColor colorWithRed:0.035 green:0.035 blue:0.035 alpha: } - (UIColor *)raisedBackground { if (self.pageStyle == 1) { - return raisedColor; + return [UIColor blackColor]; } return %orig; } @@ -550,11 +550,11 @@ UIColor* raisedColor = [UIColor colorWithRed:0.035 green:0.035 blue:0.035 alpha: - (void)didMoveToWindow { %orig; if (isDarkMode()) { - if ([self.nextResponder isKindOfClass:%c(ASScrollView)]) { self.backgroundColor = raisedColor; } + if ([self.nextResponder isKindOfClass:%c(ASScrollView)]) { self.backgroundColor = [UIColor clearColor]; } if ([self.accessibilityIdentifier isEqualToString:@"eml.cvr"]) { 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 = raisedColor; } + if ([self.accessibilityIdentifier isEqualToString:@"id.ui.cancel.button"]) { self.superview.backgroundColor = [UIColor clearColor]; } if ([self.accessibilityIdentifier isEqualToString:@"id.elements.components.filter_chip_bar"]) { self.backgroundColor = [UIColor blackColor]; } 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]; }