Compare commits
60
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b52aaac2d1 | ||
|
|
7bafd0f5e1 | ||
|
|
c39f2b5a69 | ||
|
|
f66d9a4de1 | ||
|
|
04939cde2c | ||
|
|
a0e453da45 | ||
|
|
6e8a99e733 | ||
|
|
383a644864 | ||
|
|
4e71210618 | ||
|
|
6f26599f2a | ||
|
|
d0abd34fe5 | ||
|
|
08437ff883 | ||
|
|
252cb10e30 | ||
|
|
5692f87208 | ||
|
|
333b821eca | ||
|
|
8e59b59faa | ||
|
|
ddcd37be67 | ||
|
|
a1f03be5b6 | ||
|
|
fdea5e55e4 | ||
|
|
6652068c9b | ||
|
|
125e8948c7 | ||
|
|
3d79dfa8fd | ||
|
|
da75038a9c | ||
|
|
598c62605b | ||
|
|
e88eeed035 | ||
|
|
ea61bb0d65 | ||
|
|
6ea9f1b4a7 | ||
|
|
e911ee4e4d | ||
|
|
314b2aaaf9 | ||
|
|
971eff33ff | ||
|
|
48228e14f0 | ||
|
|
c85d928952 | ||
|
|
9ce39051ef | ||
|
|
cb2c7ff951 | ||
|
|
223a0b094b | ||
|
|
36a1f12671 | ||
|
|
6b799b5c01 | ||
|
|
fc392e1742 | ||
|
|
87813f8acb | ||
|
|
5f659617e9 | ||
|
|
645036d28e | ||
|
|
f00e66bded | ||
|
|
f91287b737 | ||
|
|
58abfbaffd | ||
|
|
dad5377435 | ||
|
|
a902d90449 | ||
|
|
2657f8ca7c | ||
|
|
dcb41ab74d | ||
|
|
0147865c53 | ||
|
|
b56461a439 | ||
|
|
9d27a3b9c0 | ||
|
|
ea309fd094 | ||
|
|
1bed1db404 | ||
|
|
c864966f11 | ||
|
|
409537eba3 | ||
|
|
6604f5e497 | ||
|
|
0b64741d50 | ||
|
|
34a66bec01 | ||
|
|
dcb1a2aba1 | ||
|
|
db1318b576 |
@@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
name: Bug
|
name: Bug
|
||||||
about: Create a report to help us improve
|
about: Make sure you complete the template. Otherwise, it will be closed without further explanation!
|
||||||
title: "[Bug]"
|
title: "[Bug]"
|
||||||
labels: bug
|
labels: bug
|
||||||
assignees: ''
|
assignees: ''
|
||||||
@@ -14,8 +14,8 @@ _Make sure you complete the template. Otherwise, it will be closed without furth
|
|||||||
### Device info
|
### Device info
|
||||||
- iOS/iPadOS version:
|
- iOS/iPadOS version:
|
||||||
- Device model:
|
- Device model:
|
||||||
- Sideload tool (Ex: AltStore, Sideloadly...)
|
- Sideload tool (Ex: AltStore, Sideloadly, TrollStore,...)
|
||||||
- Version of uYouPlus: _**latest** or **newest** is NOT a version number!!_
|
- The specific version of uYouPlus: _**latest** or **newest** is NOT a version number!!_
|
||||||
|
|
||||||
### Describe the bug
|
### Describe the bug
|
||||||
|
|
||||||
@@ -23,9 +23,11 @@ _Make sure you complete the template. Otherwise, it will be closed without furth
|
|||||||
### How to reproduce the bug
|
### How to reproduce the bug
|
||||||
_(Please attach videos or screenshots if possible)_
|
_(Please attach videos or screenshots if possible)_
|
||||||
|
|
||||||
|
|
||||||
### Crash log (if possible)
|
### Crash log (if possible)
|
||||||
_(The crash log can be found in the Settings app - Privacy - Analytics & Improvements - Analytics Data - Youtube...)_
|
_(The crash log can be found in the Settings app > Privacy > Analytics & Improvements > Analytics Data > Youtube...)_
|
||||||
|
|
||||||
|
### Are you using the newest version of uYouPlus? If not, why?
|
||||||
|
_(Developers spend time and effort to fix bugs & add improvements with every release. Why don't you update to the latest version before reporting about an issue???)_
|
||||||
|
|
||||||
### Does the issue happen with the official YouTube from AppStore?
|
### Does the issue happen with the official YouTube from AppStore?
|
||||||
_(Well, YouTube itself is buggy sometimes...)_
|
_(Well, YouTube itself is buggy sometimes...)_
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ on:
|
|||||||
uyou_version:
|
uyou_version:
|
||||||
description: "The version of uYou"
|
description: "The version of uYou"
|
||||||
default: "2.1"
|
default: "2.1"
|
||||||
required: false
|
required: true
|
||||||
type: string
|
type: string
|
||||||
decrypted_youtube_url:
|
decrypted_youtube_url:
|
||||||
description: "The direct URL to the decrypted YouTube ipa"
|
description: "The direct URL to the decrypted YouTube ipa"
|
||||||
@@ -66,7 +66,7 @@ jobs:
|
|||||||
- name: Setup Theos Jailed
|
- name: Setup Theos Jailed
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v3
|
||||||
with:
|
with:
|
||||||
repository: kabiroberai/theos-jailed
|
repository: qnblackcat/theos-jailed
|
||||||
ref: master
|
ref: master
|
||||||
path: theos-jailed
|
path: theos-jailed
|
||||||
submodules: recursive
|
submodules: recursive
|
||||||
|
|||||||
@@ -3,6 +3,8 @@
|
|||||||
#define LOC(x) [tweakBundle localizedStringForKey:x value:nil table:nil]
|
#define LOC(x) [tweakBundle localizedStringForKey:x value:nil table:nil]
|
||||||
#define YT_BUNDLE_ID @"com.google.ios.youtube"
|
#define YT_BUNDLE_ID @"com.google.ios.youtube"
|
||||||
#define YT_NAME @"YouTube"
|
#define YT_NAME @"YouTube"
|
||||||
|
#define UNSUPPORTED_DEVICES @[@"iPhone14,3", @"iPhone14,6", @"iPhone14,8"] // DontEatMycontent
|
||||||
|
#define THRESHOLD 1.99 // DontEatMycontent
|
||||||
|
|
||||||
// IAmYouTube
|
// IAmYouTube
|
||||||
@interface SSOConfiguration : NSObject
|
@interface SSOConfiguration : NSObject
|
||||||
@@ -37,6 +39,28 @@
|
|||||||
- (float)progress;
|
- (float)progress;
|
||||||
@end
|
@end
|
||||||
|
|
||||||
|
// DontEatMyContent
|
||||||
|
NSString* deviceName();
|
||||||
|
BOOL isDeviceSupported();
|
||||||
|
void activate();
|
||||||
|
void deactivate();
|
||||||
|
void center();
|
||||||
|
|
||||||
|
@interface YTPlayerView : UIView
|
||||||
|
- (BOOL)zoomToFill;
|
||||||
|
- (id)renderingView;
|
||||||
|
- (id)playerView;
|
||||||
|
@end
|
||||||
|
|
||||||
|
@interface MLHAMSBDLSampleBufferRenderingView : UIView
|
||||||
|
@end
|
||||||
|
|
||||||
|
@interface YTMainAppVideoPlayerOverlayViewController : UIViewController
|
||||||
|
- (BOOL)isFullscreen;
|
||||||
|
- (id)videoPlayerOverlayView;
|
||||||
|
- (id)activeVideoPlayerOverlay;
|
||||||
|
@end
|
||||||
|
|
||||||
// iOS16 fix
|
// iOS16 fix
|
||||||
@interface OBPrivacyLinkButton : UIButton
|
@interface OBPrivacyLinkButton : UIButton
|
||||||
- (instancetype)initWithCaption:(NSString *)caption
|
- (instancetype)initWithCaption:(NSString *)caption
|
||||||
@@ -63,6 +87,8 @@
|
|||||||
// YTAutoFullScreen
|
// YTAutoFullScreen
|
||||||
@interface YTPlayerViewController (YTAFS)
|
@interface YTPlayerViewController (YTAFS)
|
||||||
- (void)autoFullscreen;
|
- (void)autoFullscreen;
|
||||||
|
- (id)activeVideoPlayerOverlay; // DontEatMycontent
|
||||||
|
- (id)playerView; // DontEatMycontent
|
||||||
@end
|
@end
|
||||||
|
|
||||||
// OLED Darkmode
|
// OLED Darkmode
|
||||||
|
|||||||
@@ -25,6 +25,8 @@ before-package::
|
|||||||
@echo -e "==> \033[1mMoving tweak's bundle to Resources/...\033[0m"
|
@echo -e "==> \033[1mMoving tweak's bundle to Resources/...\033[0m"
|
||||||
@mkdir -p Resources/Frameworks/Alderis.framework && find .theos/obj/install/Library/Frameworks/Alderis.framework -maxdepth 1 -type f -exec cp {} Resources/Frameworks/Alderis.framework/ \;
|
@mkdir -p Resources/Frameworks/Alderis.framework && find .theos/obj/install/Library/Frameworks/Alderis.framework -maxdepth 1 -type f -exec cp {} Resources/Frameworks/Alderis.framework/ \;
|
||||||
@cp -R Tweaks/YouPiP/layout/Library/Application\ Support/YouPiP.bundle Resources/
|
@cp -R Tweaks/YouPiP/layout/Library/Application\ Support/YouPiP.bundle Resources/
|
||||||
|
@cp -R Tweaks/YTUHD/layout/Library/Application\ Support/YTUHD.bundle Resources/
|
||||||
|
@cp -R Tweaks/Return-YouTube-Dislikes/layout/Library/Application\ Support/RYD.bundle Resources/
|
||||||
@cp -R Tweaks/iSponsorBlock/layout/Library/Application\ Support/iSponsorBlock.bundle Resources/
|
@cp -R Tweaks/iSponsorBlock/layout/Library/Application\ Support/iSponsorBlock.bundle Resources/
|
||||||
@cp -R Tweaks/uYou/Library/Application\ Support/uYouBundle.bundle Resources/
|
@cp -R Tweaks/uYou/Library/Application\ Support/uYouBundle.bundle Resources/
|
||||||
@cp -R lang/uYouPlus.bundle Resources/
|
@cp -R lang/uYouPlus.bundle Resources/
|
||||||
|
|||||||
@@ -29,6 +29,8 @@
|
|||||||
|
|
||||||
- [Lyvendia](https://github.com/Lyvendia/) for [YTSpeed](https://github.com/Lyvendia/YTSpeed/)
|
- [Lyvendia](https://github.com/Lyvendia/) for [YTSpeed](https://github.com/Lyvendia/YTSpeed/)
|
||||||
|
|
||||||
|
- [therealFoxster](https://github.com/therealFoxster) for [DontEatMyContent](https://github.com/therealFoxster/DontEatMyContent).
|
||||||
|
|
||||||
- [YouTube Extensions](https://github.com/CokePokes/YoutubeExtensions) by [CokePokes](https://github.com/CokePokes/).
|
- [YouTube Extensions](https://github.com/CokePokes/YoutubeExtensions) by [CokePokes](https://github.com/CokePokes/).
|
||||||
|
|
||||||
- [theos team](https://github.com/theos/theos) for theos & theos-jailed.
|
- [theos team](https://github.com/theos/theos) for theos & theos-jailed.
|
||||||
@@ -64,6 +66,8 @@
|
|||||||
|
|
||||||
12. **YTMiniplayerEnabler**: enable Miniplayer for all YouTube videos.
|
12. **YTMiniplayerEnabler**: enable Miniplayer for all YouTube videos.
|
||||||
|
|
||||||
|
13. **DontEatMyContent**: Prevent the notch/Dynamic Island from munching on 2:1 video content in YouTube.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
# Known issues
|
# Known issues
|
||||||
@@ -80,27 +84,28 @@
|
|||||||
|
|
||||||
- My official AltStore repo: https://qnblackcat.github.io/AltStore/
|
- My official AltStore repo: https://qnblackcat.github.io/AltStore/
|
||||||
|
|
||||||
- [Open in AltStore (v17.36.4-2.1)](https://tinyurl.com/bdezph3t) - It will take a while to install because AltStore needs to download the IPA.
|
- [Open in AltStore (v17.39.4-2.1)](https://tinyurl.com/t9hnhmhu) - It will take a while to install because AltStore needs to download the IPA.
|
||||||
|
|
||||||
- Version info: _(last update: Sep 17)_
|
- Version info: _(last update: Oct 04)_
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
<summary>Expand</summary>
|
<summary>Expand</summary>
|
||||||
|
|
||||||
| **Tweaks/App** | **Developer** | **Version** | **Open source** |
|
| **Tweaks/App** | **Developer** | **Version** | **Open source** |
|
||||||
| - | - | :-: | :-: |
|
| - | - | :-: | :-: |
|
||||||
| **YouTube** | Google Inc | 17.36.4 | ✖︎ |
|
| **YouTube** | Google Inc | 17.39.4 | ✖︎ |
|
||||||
| [uYou](https://github.com/MiRO92/uYou-for-YouTube) | [MiRO92](https://twitter.com/miro92) | 2.1 | ✖︎ |
|
| [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 | ✖︎ |
|
| [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-15 | [✔︎](https://github.com/Galactic-Dev/iSponsorBlock) |
|
| **iSponsorBlock** | [Galactic-Dev](https://github.com/Galactic-Dev) | 1.0-15 | [✔︎](https://github.com/Galactic-Dev/iSponsorBlock) |
|
||||||
| **BigYTMiniPlayer** | [Galactic-Dev](https://github.com/Galactic-Dev) | 1.0-1 | [✔︎](https://github.com/Galactic-Dev/BigYTMiniPlayer) |
|
| **BigYTMiniPlayer** | [Galactic-Dev](https://github.com/Galactic-Dev) | 1.0-1 | [✔︎](https://github.com/Galactic-Dev/BigYTMiniPlayer) |
|
||||||
| **YTNoHoverCards** | [level3tjg](https://twitter.com/level3tjg) | 0.0.3 | [✔︎](https://github.com/level3tjg/YTNoHoverCards) |
|
| **YTNoHoverCards** | [level3tjg](https://twitter.com/level3tjg) | 0.0.3 | [✔︎](https://github.com/level3tjg/YTNoHoverCards) |
|
||||||
| **YTMiniplayerEnabler** | [level3tjg](https://twitter.com/level3tjg) | 0.0.2 | [✔︎](https://github.com/level3tjg/YTMiniplayerEnabler) |
|
| **YTMiniplayerEnabler** | [level3tjg](https://twitter.com/level3tjg) | 0.0.2 | [✔︎](https://github.com/level3tjg/YTMiniplayerEnabler) |
|
||||||
|
| **DontEatMyContent** | [therealFoxster](https://github.com/therealFoxster) | 1.0.0 | [✔︎](https://github.com/therealFoxster/DontEatMyContent) |
|
||||||
| **YTSpeed** | [Lyvendia](https://github.com/Lyvendia) | 1.0.1 | [✔︎](https://github.com/Lyvendia/YTSpeed) |
|
| **YTSpeed** | [Lyvendia](https://github.com/Lyvendia) | 1.0.1 | [✔︎](https://github.com/Lyvendia/YTSpeed) |
|
||||||
| **YTCastConfirm** | [JamieBerghmans](https://github.com/JamieBerghmans) | 1.0.0 | [✔︎](https://github.com/JamieBerghmans/YTCastConfirm) |
|
| **YTCastConfirm** | [JamieBerghmans](https://github.com/JamieBerghmans) | 1.0.0 | [✔︎](https://github.com/JamieBerghmans/YTCastConfirm) |
|
||||||
| **Alderis Color Picker** | [HASHBANG Productions](https://github.com/hbang) | 1.2| [✔︎](https://github.com/hbang/Alderis) |
|
| **Alderis Color Picker** | [HASHBANG Productions](https://github.com/hbang) | 1.2| [✔︎](https://github.com/hbang/Alderis) |
|
||||||
| **YTUHD** | [PoomSmart](https://twitter.com/poomsmart) | 1.2.10 | [✔︎](https://github.com/PoomSmart/YTUHD) |
|
| **YTUHD** | [PoomSmart](https://twitter.com/poomsmart) | 1.3.0 | [✔︎](https://github.com/PoomSmart/YTUHD) |
|
||||||
| **YouPiP** | [PoomSmart](https://twitter.com/poomsmart) | 1.7.9 | [✔︎](https://github.com/PoomSmart/YouPiP) |
|
| **YouPiP** | [PoomSmart](https://twitter.com/poomsmart) | 1.7.10 | [✔︎](https://github.com/PoomSmart/YouPiP) |
|
||||||
| **IAmYouTube** | [PoomSmart](https://twitter.com/poomsmart) | 1.2.0 | [✔︎](https://github.com/PoomSmart/IAmYouTube) |
|
| **IAmYouTube** | [PoomSmart](https://twitter.com/poomsmart) | 1.2.0 | [✔︎](https://github.com/PoomSmart/IAmYouTube) |
|
||||||
| **YTReExplore** | [PoomSmart](https://twitter.com/poomsmart) | 1.0.2 | [✔︎](https://github.com/PoomSmart/YTReExplore) |
|
| **YTReExplore** | [PoomSmart](https://twitter.com/poomsmart) | 1.0.2 | [✔︎](https://github.com/PoomSmart/YTReExplore) |
|
||||||
| **NoYTPremium** | [PoomSmart](https://twitter.com/poomsmart) | 1.0.4 | [✔︎](https://github.com/PoomSmart/NoYTPremium) |
|
| **NoYTPremium** | [PoomSmart](https://twitter.com/poomsmart) | 1.0.4 | [✔︎](https://github.com/PoomSmart/NoYTPremium) |
|
||||||
@@ -108,7 +113,7 @@
|
|||||||
| **YTAutoFullScreen** | [PoomSmart](https://twitter.com/poomsmart) | 1.0.3 | [✔︎](https://github.com/PoomSmart/YTAutoFullScreen) |
|
| **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) |
|
| **YouRememberCaption** | [PoomSmart](https://twitter.com/poomsmart) | 1.0.0 | [✔︎](https://poomsmart.github.io/repo/depictions/youremembercaption.html) |
|
||||||
| **YTClassicVideoQuality** | [PoomSmart](https://twitter.com/poomsmart) | 1.0.1 | [✔︎](https://github.com/PoomSmart/YTClassicVideoQuality) |
|
| **YTClassicVideoQuality** | [PoomSmart](https://twitter.com/poomsmart) | 1.0.1 | [✔︎](https://github.com/PoomSmart/YTClassicVideoQuality) |
|
||||||
| **Return YouTube Dislike** | [PoomSmart](https://twitter.com/poomsmart) | 1.6.8 | [✔︎](https://github.com/PoomSmart/Return-YouTube-Dislikes) |
|
| **Return YouTube Dislike** | [PoomSmart](https://twitter.com/poomsmart) | 1.7.0 | [✔︎](https://github.com/PoomSmart/Return-YouTube-Dislikes) |
|
||||||
| **YTNoCheckLocalNetwork** | [PoomSmart](https://twitter.com/poomsmart) | 1.0.2 | [✔︎](https://poomsmart.github.io/repo/depictions/ytnochecklocalnetwork.html) |
|
| **YTNoCheckLocalNetwork** | [PoomSmart](https://twitter.com/poomsmart) | 1.0.2 | [✔︎](https://poomsmart.github.io/repo/depictions/ytnochecklocalnetwork.html) |
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|||||||
+11
-1
@@ -25,6 +25,7 @@ extern BOOL hidePreviousAndNextButton();
|
|||||||
extern BOOL hidePaidPromotionCard();
|
extern BOOL hidePaidPromotionCard();
|
||||||
extern BOOL fixGoogleSignIn();
|
extern BOOL fixGoogleSignIn();
|
||||||
extern BOOL replacePreviousAndNextButton();
|
extern BOOL replacePreviousAndNextButton();
|
||||||
|
extern BOOL dontEatMyContent();
|
||||||
|
|
||||||
// Settings
|
// Settings
|
||||||
%hook YTAppSettingsPresentationData
|
%hook YTAppSettingsPresentationData
|
||||||
@@ -53,6 +54,15 @@ extern BOOL replacePreviousAndNextButton();
|
|||||||
exit(0);
|
exit(0);
|
||||||
}];
|
}];
|
||||||
|
|
||||||
|
YTSettingsSectionItem *dontEatMyContent = [[%c(YTSettingsSectionItem) alloc] initWithTitle:LOC(@"DONT_EAT_MY_CONTENT") titleDescription:LOC(@"DONT_EAT_MY_CONTENT_DESC")];
|
||||||
|
dontEatMyContent.hasSwitch = YES;
|
||||||
|
dontEatMyContent.switchVisible = YES;
|
||||||
|
dontEatMyContent.on = [[NSUserDefaults standardUserDefaults] boolForKey:@"dontEatMyContent_enabled"];
|
||||||
|
dontEatMyContent.switchBlock = ^BOOL (YTSettingsCell *cell, BOOL enabled) {
|
||||||
|
[[NSUserDefaults standardUserDefaults] setBool:enabled forKey:@"dontEatMyContent_enabled"];
|
||||||
|
return YES;
|
||||||
|
};
|
||||||
|
|
||||||
YTSettingsSectionItem *replacePreviousAndNextButton = [[%c(YTSettingsSectionItem) alloc] initWithTitle:LOC(@"REPLACE_PREVIOUS_NEXT_BUTTON") titleDescription:LOC(@"REPLACE_PREVIOUS_NEXT_BUTTON_DESC")];
|
YTSettingsSectionItem *replacePreviousAndNextButton = [[%c(YTSettingsSectionItem) alloc] initWithTitle:LOC(@"REPLACE_PREVIOUS_NEXT_BUTTON") titleDescription:LOC(@"REPLACE_PREVIOUS_NEXT_BUTTON_DESC")];
|
||||||
replacePreviousAndNextButton.hasSwitch = YES;
|
replacePreviousAndNextButton.hasSwitch = YES;
|
||||||
replacePreviousAndNextButton.switchVisible = YES;
|
replacePreviousAndNextButton.switchVisible = YES;
|
||||||
@@ -188,7 +198,7 @@ extern BOOL replacePreviousAndNextButton();
|
|||||||
return YES;
|
return YES;
|
||||||
};
|
};
|
||||||
|
|
||||||
NSMutableArray <YTSettingsSectionItem *> *sectionItems = [NSMutableArray arrayWithArray:@[killApp, autoFull, castConfirm, ytMiniPlayer, fixGoogleSignIn, hideAutoplaySwitch, hideCC, hideHUD, hidePaidPromotionCard, hidePreviousAndNextButton, hideHoverCard, bigYTMiniPlayer, oledDarkMode, oledKeyBoard, replacePreviousAndNextButton, reExplore]];
|
NSMutableArray <YTSettingsSectionItem *> *sectionItems = [NSMutableArray arrayWithArray:@[killApp, autoFull, castConfirm, ytMiniPlayer, fixGoogleSignIn, hideAutoplaySwitch, hideCC, hideHUD, hidePaidPromotionCard, hidePreviousAndNextButton, hideHoverCard, bigYTMiniPlayer, oledDarkMode, oledKeyBoard, dontEatMyContent, replacePreviousAndNextButton, reExplore]];
|
||||||
[delegate setSectionItems:sectionItems forCategory:uYouPlusSection title:@"uYouPlus" titleDescription:nil headerHidden:NO];
|
[delegate setSectionItems:sectionItems forCategory:uYouPlusSection title:@"uYouPlus" titleDescription:nil headerHidden:NO];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Submodule Tweaks/Return-YouTube-Dislikes updated: 8b1e9d14f1...3098524af3
+1
-1
Submodule Tweaks/YTUHD updated: 47bcdc5a5b...c0c1e472dc
+1
-1
Submodule Tweaks/YouPiP updated: a754e1bf32...661af465d7
+1
-1
Submodule Tweaks/YouTubeHeader updated: efcf986beb...d6bc59b8f9
+1
-1
Submodule Tweaks/iSponsorBlock updated: 82d717878f...997d792317
@@ -1,5 +1,8 @@
|
|||||||
// Settings
|
// Settings
|
||||||
|
|
||||||
|
"DONT_EAT_MY_CONTENT" = "منع النوتش/الجزيرة التفاعلية على مقاطع 2:1 (أداة DontEatMyContent)";
|
||||||
|
"DONT_EAT_MY_CONTENT_DESC" = "منع النوتش/الجزيرة التفاعلية من قص المقاطع التي تكون نسبة العرض إلى الارتفاع فيها تساوي 2:1. يتطلب إعادة تشغيل التطبيق.";
|
||||||
|
|
||||||
"REPLACE_PREVIOUS_NEXT_BUTTON" = "تقدم وتراجع بدلاً من السابق والتالي";
|
"REPLACE_PREVIOUS_NEXT_BUTTON" = "تقدم وتراجع بدلاً من السابق والتالي";
|
||||||
"REPLACE_PREVIOUS_NEXT_BUTTON_DESC" = "استبدال زرّي المقطع السابق والمقطع التالي بزرّي تقدم وتراجع. يتطلب إعادة تشغيل التطبيق.";
|
"REPLACE_PREVIOUS_NEXT_BUTTON_DESC" = "استبدال زرّي المقطع السابق والمقطع التالي بزرّي تقدم وتراجع. يتطلب إعادة تشغيل التطبيق.";
|
||||||
|
|
||||||
|
|||||||
@@ -1,16 +1,15 @@
|
|||||||
// 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 <lang_code>.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!
|
|
||||||
// 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
|
// Settings
|
||||||
|
"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.";
|
||||||
|
|
||||||
|
"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.";
|
||||||
|
|
||||||
|
"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.";
|
||||||
|
|
||||||
|
"KILL_APP" = "Zavřít YouTube";
|
||||||
|
"KILL_APP_DESC" = "Klepnutím sem zavřete YouTube!";
|
||||||
|
|
||||||
"HIDE_PREVIOUS_AND_NEXT_BUTTON" = "Skrýt tlačítka předchozí a následující";
|
"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.";
|
"HIDE_PREVIOUS_AND_NEXT_BUTTON_DESC" = "Skryje tlačítka předchozí a následující v překrytí ovládání videa.";
|
||||||
|
|||||||
@@ -1,16 +1,28 @@
|
|||||||
// Settings
|
// Settings
|
||||||
|
|
||||||
"HIDE_PREVIOUS_AND_NEXT_BUTTON" = "Vor- und Zurücktasten ausblenden";
|
"DONT_EAT_MY_CONTENT" = "Kerbe/Insel bei 2:1-Videoinhalten berücksichtigen (DontEatMyContent)";
|
||||||
"HIDE_PREVIOUS_AND_NEXT_BUTTON_DESC" = "Vor- und Zurückspultasten vom Videoplayer ausblenden.";
|
"DONT_EAT_MY_CONTENT_DESC" = "Verhindert, dass die Notch/Dynamic Island 2:1-Videoinhalte überdeckt. App-Neustart erforderlich!";
|
||||||
|
|
||||||
"YT_MINIPLAYER" = "Miniplayer für alle YT Videos aktivieren";
|
"REPLACE_PREVIOUS_NEXT_BUTTON" = "Vor- und Zurücktasten ersetzen";
|
||||||
"YT_MINIPLAYER_DESC" = "z.B. bei Videos für Kinder";
|
"REPLACE_PREVIOUS_NEXT_BUTTON_DESC" = "Tasten zum Vor- und Zurückspringen zwischen Videos durch Vor- und Zurückspultasten ersetzen. App-Neustart erforderlich!";
|
||||||
|
|
||||||
|
"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!";
|
||||||
|
|
||||||
|
"KILL_APP" = "YouTube crashen";
|
||||||
|
"KILL_APP_DESC" = "Tippe hier, um YouTube zum Abstürzen zu bringen!";
|
||||||
|
|
||||||
|
"HIDE_PREVIOUS_AND_NEXT_BUTTON" = "Vor- und Zurücktasten ausblenden";
|
||||||
|
"HIDE_PREVIOUS_AND_NEXT_BUTTON_DESC" = "Vor- und Zurücktasten vom Videoplayer ausblenden.";
|
||||||
|
|
||||||
|
"YT_MINIPLAYER" = "Miniplayer für alle YouTube-Videos aktivieren";
|
||||||
|
"YT_MINIPLAYER_DESC" = "z.B. bei Videos für Kinder.";
|
||||||
|
|
||||||
"CAST_CONFIRM" = "Warnung vor TV-Übertragungen (YTCastConfirm)";
|
"CAST_CONFIRM" = "Warnung vor TV-Übertragungen (YTCastConfirm)";
|
||||||
"CAST_CONFIRM_DESC" = "Zeigt eine Warnung an, um eine ausversehene TV-Übertragung zu verhindern.";
|
"CAST_CONFIRM_DESC" = "Zeigt eine Warnung an, um eine ausversehene TV-Übertragung zu verhindern.";
|
||||||
|
|
||||||
"HIDE_HOVER_CARD" = "Endkarten ausblenden (YTNoHoverCards)";
|
"HIDE_HOVER_CARD" = "Endkarten ausblenden (YTNoHoverCards)";
|
||||||
"HIDE_HOVER_CARD_DESC" = "Endkarten (Thumbnails) am Ende des Videos ausblenden.";
|
"HIDE_HOVER_CARD_DESC" = "Creator-Endkarten (Thumbnails) am Ende des Videos ausblenden.";
|
||||||
|
|
||||||
"NEW_MINIPLAYER_STYLE" = "Neuer Miniplayer Style (BigYTMiniPlayer)";
|
"NEW_MINIPLAYER_STYLE" = "Neuer Miniplayer Style (BigYTMiniPlayer)";
|
||||||
"NEW_MINIPLAYER_STYLE_DESC" = "App-Neustart erforderlich!";
|
"NEW_MINIPLAYER_STYLE_DESC" = "App-Neustart erforderlich!";
|
||||||
@@ -28,13 +40,13 @@
|
|||||||
"AUTO_FULLSCREEN_DESC" = "Automatisch Videos im Vollbild starten.";
|
"AUTO_FULLSCREEN_DESC" = "Automatisch Videos im Vollbild starten.";
|
||||||
|
|
||||||
"HIDE_HUD_MESSAGES" = "HUD-Nachrichten ausblenden";
|
"HIDE_HUD_MESSAGES" = "HUD-Nachrichten ausblenden";
|
||||||
"HIDE_HUD_MESSAGES_DESC" = "z.B.: Untertitel sind akti-/deaktiviert, Videoschleife ist an, ...";
|
"HIDE_HUD_MESSAGES_DESC" = "z.B.: Untertitel sind aktiviert/deaktiviert, Videoschleife ist an, ...";
|
||||||
|
|
||||||
"OLED_DARKMODE" = "OLED-Dunkelmodus (Experimental)";
|
"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_DARKMODE_DESC" = "Könnte in manchen Fällen nicht richtig funktionieren. App-Neustart ist erforderlich, wenn diese Option aktiviert/deaktiviert wird!";
|
||||||
|
|
||||||
"OLED_KEYBOARD" = "OLED-Tastatur (Experimental)";
|
"OLED_KEYBOARD" = "OLED-Tastatur (Experimental)";
|
||||||
"OLED_KEYBOARD_DESC" = "Könnte in manchen Fällen nicht richtig funktionieren. App-Neustart erforderlich1";
|
"OLED_KEYBOARD_DESC" = "Könnte in manchen Fällen nicht richtig funktionieren. App-Neustart erforderlich!";
|
||||||
|
|
||||||
"HIDE_PAID_PROMOTION_CARDS" = "Enthält bezahlte Werbung Info ausblenden";
|
"HIDE_PAID_PROMOTION_CARDS" = "Enthält bezahlte Werbung Info ausblenden";
|
||||||
"HIDE_PAID_PROMOTION_CARDS_DESC" = "Enthält bezahlte Werbung Infobanner bei manchen Videos ausblenden.";
|
"HIDE_PAID_PROMOTION_CARDS_DESC" = "Enthält bezahlte Werbung Infobanner bei manchen Videos ausblenden.";
|
||||||
|
|||||||
@@ -1,4 +1,15 @@
|
|||||||
// Settings
|
// Settings
|
||||||
|
"DONT_EAT_MY_CONTENT" = "Αποτροπή Notch/Island σε περιεχόμενο βίντεο 2:1 (DontEatMyContent)";
|
||||||
|
"DONT_EAT_MY_CONTENT_DESC" = "Αποτρέψτε το notch/Dynamic Island από το να μασουλάει περιεχόμενο βίντεο 2:1 στο YouTube. Απαιτείται επανεκκίνηση της εφαρμογής.";
|
||||||
|
|
||||||
|
"REPLACE_PREVIOUS_NEXT_BUTTON" = "Αντικατάσταση του Προηγούμενου και του Επόμενου Κουμπιού";
|
||||||
|
"REPLACE_PREVIOUS_NEXT_BUTTON_DESC" = "Αντικατάσταση του Προηγούμενου και του Επόμενου κουμπιού με το κουμπί Γρήγορη κίνηση προς τα εμπρός και προς τα πίσω. Απαιτείται επανεκκίνηση της εφαρμογής.";
|
||||||
|
|
||||||
|
"FIX_GOOGLE_SIGNIN" = "Διόρθωση σύνδεσης Google (μόνο για χρήστες του TrollStore)";
|
||||||
|
"FIX_GOOGLE_SIGNIN_DESC" = "Ενεργοποιήστε αυτήν την επιλογή μόνο όταν δεν μπορείτε να συνδεθείτε με τον λογαριασμό σας Google και η εφαρμογή έχει εγκατασταθεί μέσω του TrollStore. Εάν μπορείτε να συνδεθείτε κανονικά, διατηρήστε την απενεργοποιημένη. Απαιτείται επανεκκίνηση της εφαρμογής.";
|
||||||
|
|
||||||
|
"KILL_APP" = "Κλείσιμο YouTube";
|
||||||
|
"KILL_APP_DESC" = "Πατήστε εδώ για να κλείσετε το YouTube!";
|
||||||
|
|
||||||
"HIDE_PREVIOUS_AND_NEXT_BUTTON" = "Κρύψτε το προηγούμενο και το επόμενο κουμπί";
|
"HIDE_PREVIOUS_AND_NEXT_BUTTON" = "Κρύψτε το προηγούμενο και το επόμενο κουμπί";
|
||||||
"HIDE_PREVIOUS_AND_NEXT_BUTTON_DESC" = "Κρύψτε το προηγούμενο και το επόμενο κουμπί κατά την αναπαραγωγή βίντεο.";
|
"HIDE_PREVIOUS_AND_NEXT_BUTTON_DESC" = "Κρύψτε το προηγούμενο και το επόμενο κουμπί κατά την αναπαραγωγή βίντεο.";
|
||||||
|
|||||||
@@ -1,5 +1,8 @@
|
|||||||
// Settings
|
// Settings
|
||||||
|
|
||||||
|
"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.";
|
||||||
|
|
||||||
"REPLACE_PREVIOUS_NEXT_BUTTON" = "Replace Previous and Next Button";
|
"REPLACE_PREVIOUS_NEXT_BUTTON" = "Replace Previous and Next Button";
|
||||||
"REPLACE_PREVIOUS_NEXT_BUTTON_DESC" = "Replace Previous and Next Button with Fast forward and Rewind button. App restart is required.";
|
"REPLACE_PREVIOUS_NEXT_BUTTON_DESC" = "Replace Previous and Next Button with Fast forward and Rewind button. App restart is required.";
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,12 @@
|
|||||||
// Settings
|
// Settings
|
||||||
|
"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.";
|
||||||
|
|
||||||
|
"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.";
|
||||||
|
|
||||||
|
"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.";
|
||||||
|
|
||||||
"KILL_APP" = "Cerrar YouTube";
|
"KILL_APP" = "Cerrar YouTube";
|
||||||
"KILL_APP_DESC" = "Toca aquí para cerrar YouTube!";
|
"KILL_APP_DESC" = "Toca aquí para cerrar YouTube!";
|
||||||
|
|||||||
@@ -1,4 +1,12 @@
|
|||||||
// Settings
|
// Settings
|
||||||
|
"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. Le redémarrage de l'application est nécessaire.";
|
||||||
|
|
||||||
|
"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. Le redémarrage de l'application est nécessaire";
|
||||||
|
|
||||||
|
"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. Le redémarrage de l'application est nécessaire.";
|
||||||
|
|
||||||
"KILL_APP" = "Fermer YouTube";
|
"KILL_APP" = "Fermer YouTube";
|
||||||
"KILL_APP_DESC" = "Appuyez ici pour fermer YouTube !";
|
"KILL_APP_DESC" = "Appuyez ici pour fermer YouTube !";
|
||||||
@@ -43,7 +51,7 @@
|
|||||||
"HIDE_PAID_PROMOTION_CARDS_DESC" = "Masque la bannière 'Inclut une communication commerciale' dans certaines vidéos.";
|
"HIDE_PAID_PROMOTION_CARDS_DESC" = "Masque la bannière 'Inclut une communication commerciale' dans certaines vidéos.";
|
||||||
|
|
||||||
// YTCastConfirm
|
// YTCastConfirm
|
||||||
"CASTING" = "Castings";
|
"CASTING" = "Cast";
|
||||||
"MSG_ARE_YOU_SURE" = "Êtes-vous sûr de vouloir commencer le casting ?";
|
"MSG_ARE_YOU_SURE" = "Êtes-vous sûr de vouloir commencer un cast sur votre télévision ?";
|
||||||
"MSG_YES" = "Oui";
|
"MSG_YES" = "Oui";
|
||||||
"MSG_CANCEL" = "Annuler";
|
"MSG_CANCEL" = "Annuler";
|
||||||
|
|||||||
@@ -1,4 +1,15 @@
|
|||||||
// Settings
|
// Settings
|
||||||
|
"DONT_EAT_MY_CONTENT" = "מנע חריץ/אי בתוכן וידאו 2:1 (DontEatMyContent)";
|
||||||
|
"DONT_EAT_MY_CONTENT_DESC" = "מנע מהחריץ/האי הדינמי ללעוס תוכן וידאו 2:1 ב-YouTube. נדרשת הפעלה מחדש של האפליקציה.";
|
||||||
|
|
||||||
|
"REPLACE_PREVIOUS_NEXT_BUTTON" = "החלף את הלחצן הקודם והבא";
|
||||||
|
"REPLACE_PREVIOUS_NEXT_BUTTON_DESC" = "החלף את הלחצן הקודם והבא בלחצן הרצה קדימה והאחורה. נדרשת הפעלה מחדש של האפליקציה.";
|
||||||
|
|
||||||
|
"FIX_GOOGLE_SIGNIN" = "תקן כניסה של Google (עבור משתמש TrollStore בלבד)";
|
||||||
|
"FIX_GOOGLE_SIGNIN_DESC" = "הפעל אפשרות זו רק כאשר אינך יכול להיכנס עם חשבון Google שלך והאפליקציה הותקנה דרך TrollStore. אם אתה יכול להתחבר כרגיל, השאר אותה מושבתת. נדרשת הפעלה מחדש של האפליקציה.";
|
||||||
|
|
||||||
|
"KILL_APP" = "סגור את YouTube";
|
||||||
|
"KILL_APP_DESC" = "הקש כאן כדי לסגור את YouTube!";
|
||||||
|
|
||||||
"HIDE_PREVIOUS_AND_NEXT_BUTTON" = "הסתר את הקודם והבא";
|
"HIDE_PREVIOUS_AND_NEXT_BUTTON" = "הסתר את הקודם והבא";
|
||||||
"HIDE_PREVIOUS_AND_NEXT_BUTTON_DESC" = "הסתר את כפתורי הקודם והבא בתצוגת השליטה בסרטון.";
|
"HIDE_PREVIOUS_AND_NEXT_BUTTON_DESC" = "הסתר את כפתורי הקודם והבא בתצוגת השליטה בסרטון.";
|
||||||
|
|||||||
@@ -0,0 +1,58 @@
|
|||||||
|
// Settings
|
||||||
|
|
||||||
|
"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.";
|
||||||
|
|
||||||
|
"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.";
|
||||||
|
|
||||||
|
"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.";
|
||||||
|
|
||||||
|
"KILL_APP" = "YouTube bezárása";
|
||||||
|
"KILL_APP_DESC" = "Kattints ide a YouTube bezárásához!";
|
||||||
|
|
||||||
|
"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.";
|
||||||
|
|
||||||
|
"YT_MINIPLAYER" = "Engedélyezze a Minilejátszót az összes YouTube-videóhoz";
|
||||||
|
"YT_MINIPLAYER_DESC" = "Például gyermekvideók.";
|
||||||
|
|
||||||
|
"CAST_CONFIRM" = "Megerősítés átküldés előtt (YTCastConfirm)";
|
||||||
|
"CAST_CONFIRM_DESC" = "Az átküldés előtt mutasson megerősítő figyelmeztetést, hogy megakadályozza a TV véletlen eltérítését.";
|
||||||
|
|
||||||
|
"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.";
|
||||||
|
|
||||||
|
"NEW_MINIPLAYER_STYLE" = "Új minilejátszó sáv (BigYTMiniPlayer)";
|
||||||
|
"NEW_MINIPLAYER_STYLE_DESC" = "Az alkalmazás újraindítása szükséges.";
|
||||||
|
|
||||||
|
"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.";
|
||||||
|
|
||||||
|
"HIDE_SUBTITLES_BUTTON" = "Feliratok elrejtése";
|
||||||
|
"HIDE_SUBTITLES_BUTTON_DESC" = "A Feliratok gomb elrejtése a videóvezérlők fedvényében.";
|
||||||
|
|
||||||
|
"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.";
|
||||||
|
|
||||||
|
"AUTO_FULLSCREEN" = "Automatikus teljes képernyő (YTAutoFullScreen)";
|
||||||
|
"AUTO_FULLSCREEN_DESC" = "Videók automatikus lejátszása teljes képernyőn.";
|
||||||
|
|
||||||
|
"HIDE_HUD_MESSAGES" = "HUD üzenetek elrejtése";
|
||||||
|
"HIDE_HUD_MESSAGES_DESC" = "Példa: A CC be/ki van kapcsolva, a videó hurok be van kapcsolva,...";
|
||||||
|
|
||||||
|
"OLED_DARKMODE" = "OLED sötét mód (Kísérleti)";
|
||||||
|
"OLED_DARKMODE_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.";
|
||||||
|
|
||||||
|
"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.";
|
||||||
|
|
||||||
|
// YTCastConfirm
|
||||||
|
"CASTING" = "Casting";
|
||||||
|
"MSG_ARE_YOU_SURE" = "Biztos, hogy elkezdi az átküldést?";
|
||||||
|
"MSG_YES" = "Igen";
|
||||||
|
"MSG_CANCEL" = "Visszavon";
|
||||||
@@ -0,0 +1,57 @@
|
|||||||
|
// Settings
|
||||||
|
"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.";
|
||||||
|
|
||||||
|
"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.";
|
||||||
|
|
||||||
|
"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.";
|
||||||
|
|
||||||
|
"KILL_APP" = "Chiudi YouTube";
|
||||||
|
"KILL_APP_DESC" = "Premi qui per chiudere YouTube!";
|
||||||
|
|
||||||
|
"HIDE_PREVIOUS_AND_NEXT_BUTTON" = "Nascondi i bottoni Precedente e Successivo";
|
||||||
|
"HIDE_PREVIOUS_AND_NEXT_BUTTON_DESC" = "Nasconde i bottoni Precedente e Successivo dai controlli in sovrimpressione al video.";
|
||||||
|
|
||||||
|
"YT_MINIPLAYER" = "Abilita il Miniplayer su tutti i video di YouTube";
|
||||||
|
"YT_MINIPLAYER_DESC" = "Video YouTube Kids per esempio.";
|
||||||
|
|
||||||
|
"CAST_CONFIRM" = "Avviso di conferma prima della condivisione su TV (YTCastConfirm)";
|
||||||
|
"CAST_CONFIRM_DESC" = "Mostra un avviso di conferma prima della condivisione per evitar e di irrompere accidentalmente sulla TV.";
|
||||||
|
|
||||||
|
"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.";
|
||||||
|
|
||||||
|
"NEW_MINIPLAYER_STYLE" = "Nuovo stile per la barra del miniplayer (BigYTMiniPlayer)";
|
||||||
|
"NEW_MINIPLAYER_STYLE_DESC" = "È richiesto un riavvio dell'app.";
|
||||||
|
|
||||||
|
"YT_RE_EXPLORE" = "Sostituisci il tab Shorts con il tab Esplora (YTReExplore)";
|
||||||
|
"YT_RE_EXPLORE_DESC" = "È richiesto un riavvio dell'app.";
|
||||||
|
|
||||||
|
"HIDE_SUBTITLES_BUTTON" = "Nascondi Bottone Sottotitoli";
|
||||||
|
"HIDE_SUBTITLES_BUTTON_DESC" = "Nasconde il controllo per i sottotitoli in sovrimpressione al video.";
|
||||||
|
|
||||||
|
"HIDE_AUTOPLAY_SWITCH" = "Nascondi Interruttore Riproduzione Automatica";
|
||||||
|
"HIDE_AUTOPLAY_SWITCH_DESC" = "Nasconde il controllo per la riproduzione automatica in sovrimpressione al video.";
|
||||||
|
|
||||||
|
"AUTO_FULLSCREEN" = "Auto Schermo Intero (YTAutoFullScreen)";
|
||||||
|
"AUTO_FULLSCREEN_DESC" = "Riproduce automaticamente video a tutto schermo.";
|
||||||
|
|
||||||
|
"HIDE_HUD_MESSAGES" = "Nascondi messaggi in sovrimpressione";
|
||||||
|
"HIDE_HUD_MESSAGES_DESC" = "Esempio: Sottotitoli attivati/disattivati, Ripetizione video attiva,...";
|
||||||
|
|
||||||
|
"OLED_DARKMODE" = "Modalità Scura OLED (Sperimentale)";
|
||||||
|
"OLED_DARKMODE_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.";
|
||||||
|
|
||||||
|
"HIDE_PAID_PROMOTION_CARDS" = "Nascondi i banner sponsorizzati";
|
||||||
|
"HIDE_PAID_PROMOTION_CARDS_DESC" = "Nasconde il banner 'Include Promozioni a Pagamento' in alcuni video.";
|
||||||
|
|
||||||
|
// YTCastConfirm
|
||||||
|
"CASTING" = "Condivisione su TV";
|
||||||
|
"MSG_ARE_YOU_SURE" = "Sei sicuro di voler avviare la condivisione?";
|
||||||
|
"MSG_YES" = "Sì";
|
||||||
|
"MSG_CANCEL" = "Annulla";
|
||||||
@@ -1,9 +1,11 @@
|
|||||||
// Settings
|
// Settings
|
||||||
|
"DONT_EAT_MY_CONTENT" = "노치/아일랜드 영역이 2:1 비율 비디오를 가리지 않게 함 (DontEatMyContent)";
|
||||||
|
"DONT_EAT_MY_CONTENT_DESC" = "노치/다이내믹 아일랜드 영역이 유튜브의 2:1 비율 영상 일부를 가리는 것을 막아줍니다. 앱을 다시 시작해야 합니다.";
|
||||||
|
|
||||||
"REPLACE_PREVIOUS_NEXT_BUTTON" = "이전, 다음 재생 버튼 교체";
|
"REPLACE_PREVIOUS_NEXT_BUTTON" = "이전, 다음 재생 버튼 교체";
|
||||||
"REPLACE_PREVIOUS_NEXT_BUTTON_DESC" = "이전 재생, 다음 재생 버튼을 빨리 감기, 되감기 버튼으로 교체합니다. 앱을 다시 시작해야 합니다.";
|
"REPLACE_PREVIOUS_NEXT_BUTTON_DESC" = "이전 재생, 다음 재생 버튼을 빨리 감기, 되감기 버튼으로 교체합니다. 앱을 다시 시작해야 합니다.";
|
||||||
|
|
||||||
"FIX_GOOGLE_SIGNIN" = "구글 로그인 문제 수정 (TrollStore 사용자 대상)";
|
"FIX_GOOGLE_SIGNIN" = "구글 로그인 문제 수정 (TrollStore 사용자만 해당)";
|
||||||
"FIX_GOOGLE_SIGNIN_DESC" = "TrollStore를 통해 설치된 앱에서만 동작합니다: 구글 계정으로 로그인하려면 이 옵션을 켜 주세요. 앱을 다시 시작해야 합니다.";
|
"FIX_GOOGLE_SIGNIN_DESC" = "TrollStore를 통해 설치된 앱에서만 동작합니다: 구글 계정으로 로그인하려면 이 옵션을 켜 주세요. 앱을 다시 시작해야 합니다.";
|
||||||
|
|
||||||
"KILL_APP" = "YouTube 닫기";
|
"KILL_APP" = "YouTube 닫기";
|
||||||
@@ -13,7 +15,7 @@
|
|||||||
"HIDE_PREVIOUS_AND_NEXT_BUTTON_DESC" = "비디오 재생 오버레이에서 이전 재생, 다음 재생 버튼을 숨깁니다.";
|
"HIDE_PREVIOUS_AND_NEXT_BUTTON_DESC" = "비디오 재생 오버레이에서 이전 재생, 다음 재생 버튼을 숨깁니다.";
|
||||||
|
|
||||||
"YT_MINIPLAYER" = "모든 YouTube 영상에서 미니 플레이어 활성화";
|
"YT_MINIPLAYER" = "모든 YouTube 영상에서 미니 플레이어 활성화";
|
||||||
"YT_MINIPLAYER_DESC" = "아동용 영상일 경우.";
|
"YT_MINIPLAYER_DESC" = "유튜브 키즈의 영상 같은 경우.";
|
||||||
|
|
||||||
"CAST_CONFIRM" = "TV 전송 알림 (YTCastConfirm)";
|
"CAST_CONFIRM" = "TV 전송 알림 (YTCastConfirm)";
|
||||||
"CAST_CONFIRM_DESC" = "의도치 않게 TV로 영상을 전송하지 않도록 보내기 전에 확인 메시지를 표시합니다.";
|
"CAST_CONFIRM_DESC" = "의도치 않게 TV로 영상을 전송하지 않도록 보내기 전에 확인 메시지를 표시합니다.";
|
||||||
|
|||||||
@@ -0,0 +1,57 @@
|
|||||||
|
// Settings
|
||||||
|
"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.";
|
||||||
|
|
||||||
|
"REPLACE_PREVIOUS_NEXT_BUTTON" = "Vervang Volgende en Vorige knoppen";
|
||||||
|
"REPLACE_PREVIOUS_NEXT_BUTTON_DESC" = "Vervang de Vorige en Volgende knoppen met spoelknoppen.";
|
||||||
|
|
||||||
|
"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.";
|
||||||
|
|
||||||
|
"KILL_APP" = "Sluit YouTube";
|
||||||
|
"KILL_APP_DESC" = "Klik om YouTube te sluiten!";
|
||||||
|
|
||||||
|
"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.";
|
||||||
|
|
||||||
|
"YT_MINIPLAYER" = "Schakel de Mini Speler in voor alle video's";
|
||||||
|
"YT_MINIPLAYER_DESC" = "Video's voor kinderen bijvoorbeeld.";
|
||||||
|
|
||||||
|
"CAST_CONFIRM" = "Bevestig casten (YTCastConfirm)";
|
||||||
|
"CAST_CONFIRM_DESC" = "Toon een melding na het drukken op de cast knop om te voorkomen dat je per ongeluk cast.";
|
||||||
|
|
||||||
|
"HIDE_HOVER_CARD" = "Verberg eind scherm hover cards (YTNoHoverCards)";
|
||||||
|
"HIDE_HOVER_CARD_DESC" = "Verberg eind schermen (thumbnails) aan het einde van video's.";
|
||||||
|
|
||||||
|
"NEW_MINIPLAYER_STYLE" = "Nieuwe Mini Speler stijl (BigYTMiniPlayer)";
|
||||||
|
"NEW_MINIPLAYER_STYLE_DESC" = "Je moet de app opnieuw opstarten om dit te activeren.";
|
||||||
|
|
||||||
|
"YT_RE_EXPLORE" = "Vervang Shorts met Ontdekken (YTReExplore)";
|
||||||
|
"YT_RE_EXPLORE_DESC" = "Je moet de app opnieuw opstarten om dit te activeren.";
|
||||||
|
|
||||||
|
"HIDE_SUBTITLES_BUTTON" = "Verberg ondertitels knop";
|
||||||
|
"HIDE_SUBTITLES_BUTTON_DESC" = "Verberg de ondertitels knop in de video speler.";
|
||||||
|
|
||||||
|
"HIDE_AUTOPLAY_SWITCH" = "Verberg Autoplay schakelaar";
|
||||||
|
"HIDE_AUTOPLAY_SWITCH_DESC" = "Verberg de Autoplay schakelaar in de video speler.";
|
||||||
|
|
||||||
|
"AUTO_FULLSCREEN" = "Auto Volledig Scherm (YTAutoFullScreen)";
|
||||||
|
"AUTO_FULLSCREEN_DESC" = "Automatisch volledig scherm wanneer je een video aan klikt.";
|
||||||
|
|
||||||
|
"HIDE_HUD_MESSAGES" = "Verberg HUD Berichten";
|
||||||
|
"HIDE_HUD_MESSAGES_DESC" = "Bijvoorbeeld: CC is ingeschakeld/uitgeschakeld, Video lus is ingeschakeld,...";
|
||||||
|
|
||||||
|
"OLED_DARKMODE" = "OLED Donkere Stand (Experimenteel)";
|
||||||
|
"OLED_DARKMODE_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.";
|
||||||
|
|
||||||
|
"HIDE_PAID_PROMOTION_CARDS" = "Verberg Betaalde Promoties";
|
||||||
|
"HIDE_PAID_PROMOTION_CARDS_DESC" = "Verberg de 'Bevat Betaalde Promotie' in sommige video's.";
|
||||||
|
|
||||||
|
// YTCastConfirm
|
||||||
|
"CASTING" = "Castings";
|
||||||
|
"MSG_ARE_YOU_SURE" = "Weet je zeker dat je wilt casten?";
|
||||||
|
"MSG_YES" = "Ja!";
|
||||||
|
"MSG_CANCEL" = "Niet casten!";
|
||||||
@@ -1,9 +1,10 @@
|
|||||||
// Settings
|
// Settings
|
||||||
|
|
||||||
"REPLACE_PREVIOUS_NEXT_BUTTON" = "Substituir o botão Anterior e Próximo";
|
"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.";
|
"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.";
|
||||||
|
|
||||||
"FIX_GOOGLE_SIGNIN" = "Corrigir o login do Google (somente para usuários da TrollStore)";
|
"FIX_GOOGLE_SIGNIN" = "Corrigir o login do Google (somente para usuários da TrollStore)";
|
||||||
"FIX_GOOGLE_SIGNIN_DESC" = "Funciona apenas quando o app foi instalado via TrollStore: ative esta opção para que você possa fazer login com sua conta do Google. A reinicialização do app é necessária.";
|
"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.";
|
||||||
|
|
||||||
"KILL_APP" = "Fechar o YouTube";
|
"KILL_APP" = "Fechar o YouTube";
|
||||||
"KILL_APP_DESC" = "Toque aqui para fechar o YouTube!";
|
"KILL_APP_DESC" = "Toque aqui para fechar o YouTube!";
|
||||||
|
|||||||
@@ -1,4 +1,15 @@
|
|||||||
/* uYouPlusSettings */
|
/* uYouPlusSettings */
|
||||||
|
"DONT_EAT_MY_CONTENT" = "Предотвратить выемку/остров на видеоконтенте 2:1 (DontEatMyContent)";
|
||||||
|
"DONT_EAT_MY_CONTENT_DESC" = "Не позволяйте вырезу/Dynamic Island поглощать видеоконтент 2:1 на YouTube. Требуется перезапуск приложения.";
|
||||||
|
|
||||||
|
"REPLACE_PREVIOUS_NEXT_BUTTON" = "Заменить кнопку "Назад" и "Далее";
|
||||||
|
"REPLACE_PREVIOUS_NEXT_BUTTON_DESC" = "Замените кнопки «Назад» и «Далее» на кнопки «Перемотка вперед» и «Назад». Требуется перезапуск приложения.";
|
||||||
|
|
||||||
|
"FIX_GOOGLE_SIGNIN" = "Исправить вход через Google (только для пользователя TrollStore)";
|
||||||
|
"FIX_GOOGLE_SIGNIN_DESC" = "Включайте эту опцию, только если вы не можете войти в свою учетную запись Google и приложение было установлено через TrollStore. Если вы можете нормально войти в систему, оставьте ее отключенной. Требуется перезапуск приложения.";
|
||||||
|
|
||||||
|
"KILL_APP" = "Закрыть YouTube";
|
||||||
|
"KILL_APP_DESC" = "Нажмите здесь, чтобы закрыть YouTube!";
|
||||||
|
|
||||||
"HIDE_PREVIOUS_AND_NEXT_BUTTON" = "Скрыть «Пред.» и «След.»";
|
"HIDE_PREVIOUS_AND_NEXT_BUTTON" = "Скрыть «Пред.» и «След.»";
|
||||||
"HIDE_PREVIOUS_AND_NEXT_BUTTON_DESC" = "Убирает кнопки переключения видео «Следующий» и «Предыдущий» с плеера.";
|
"HIDE_PREVIOUS_AND_NEXT_BUTTON_DESC" = "Убирает кнопки переключения видео «Следующий» и «Предыдущий» с плеера.";
|
||||||
|
|||||||
@@ -1,16 +1,20 @@
|
|||||||
// How to translate uYouPlus to your language:
|
/* Read me:
|
||||||
//
|
- How to translate uYouPlus (if your language already exists then feel free to check it and/or improve it):
|
||||||
// 1. Fork uYouPlus repo
|
1. Fork uYouPlus repo
|
||||||
// 2. Duplicate the template.lproj folder, and edit the duplicated folder's name to your <lang_code>.lproj id.
|
2. Duplicate the template.lproj folder, and edit the duplicated folder's name to your <lang_code>.lproj id.
|
||||||
// For example: <ru.lproj> for Russia. For more details, visit: https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes
|
For example: <ru.lproj> for Russia. For more details, visit: https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes
|
||||||
// 3. Translate each line below after each =
|
3. Translate each line below after each =
|
||||||
// 4. Open a Pull Request
|
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 localization to YouPiP, YTUHD and Return YouTube Dislike. 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
|
||||||
// https://github.com/PoomSmart/YouPiP/tree/main/layout/Library/Application%20Support/YouPiP.bundle
|
https://github.com/PoomSmart/YTUHD/tree/master/layout/Library/Application%20Support/YTUHD.bundle
|
||||||
//
|
https://github.com/PoomSmart/Return-YouTube-Dislikes/tree/main/layout/Library/Application%20Support/RYD.bundle
|
||||||
|
*/
|
||||||
|
|
||||||
// Settings
|
// Settings
|
||||||
|
"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.";
|
||||||
|
|
||||||
"REPLACE_PREVIOUS_NEXT_BUTTON" = "Replace Previous and Next Button";
|
"REPLACE_PREVIOUS_NEXT_BUTTON" = "Replace Previous and Next Button";
|
||||||
"REPLACE_PREVIOUS_NEXT_BUTTON_DESC" = "Replace Previous and Next Button with Fast forward and Rewind button. App restart is required.";
|
"REPLACE_PREVIOUS_NEXT_BUTTON_DESC" = "Replace Previous and Next Button with Fast forward and Rewind button. App restart is required.";
|
||||||
|
|||||||
@@ -1,4 +1,6 @@
|
|||||||
// Settings
|
// Settings
|
||||||
|
"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.";
|
||||||
|
|
||||||
"REPLACE_PREVIOUS_NEXT_BUTTON" = "Thay thế nút chuyển video";
|
"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.";
|
"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.";
|
||||||
|
|||||||
@@ -1,10 +1,13 @@
|
|||||||
// Settings
|
// Settings
|
||||||
|
|
||||||
"REPLACE_PREVIOUS_NEXT_BUTTON" = "替换上一个/下一个按钮";
|
"DONT_EAT_MY_CONTENT" = "2:1视频刘海屏/灵动岛优化 (DontEatMyContent)";
|
||||||
"REPLACE_PREVIOUS_NEXT_BUTTON_DESC" = "将播放器控制界面上的上一个/下一个按钮替换成快进/快退按钮。更改本设置后需要重启App。";
|
"DONT_EAT_MY_CONTENT_DESC" = "改进部分机型的刘海区域或灵动岛在2:1比例视频中引发的遮挡问题。更改本设置后需要重启App。";
|
||||||
|
|
||||||
"FIX_GOOGLE_SIGNIN" = "修复Google账号登录问题(仅针对TrollStore用户)";
|
"REPLACE_PREVIOUS_NEXT_BUTTON" = "替换上一个/下一个按钮";
|
||||||
"FIX_GOOGLE_SIGNIN_DESC" = "仅在使用TrollStore安装本App的情况下生效:启用本选项后可正常登录您的Google账号。更改本设置后需要重启App。";
|
"REPLACE_PREVIOUS_NEXT_BUTTON_DESC" = "将视频播放器控制界面上的上一个/下一个按钮替换成快进/快退按钮。更改本设置后需要重启App。";
|
||||||
|
|
||||||
|
"FIX_GOOGLE_SIGNIN" = "修复Google账号登录问题(仅TrollStore用户有效)";
|
||||||
|
"FIX_GOOGLE_SIGNIN_DESC" = "仅在使用TrollStore安装本App的情况下生效:启用本设置后即可正常登录您的Google账号。更改本设置后需要重启App。";
|
||||||
|
|
||||||
"KILL_APP" = "关闭YouTube";
|
"KILL_APP" = "关闭YouTube";
|
||||||
"KILL_APP_DESC" = "点击此处关闭YouTube!";
|
"KILL_APP_DESC" = "点击此处关闭YouTube!";
|
||||||
@@ -15,16 +18,16 @@
|
|||||||
"YT_MINIPLAYER" = "为所有YouTube视频启用迷你播放器";
|
"YT_MINIPLAYER" = "为所有YouTube视频启用迷你播放器";
|
||||||
"YT_MINIPLAYER_DESC" = "例如:面向儿童的视频。";
|
"YT_MINIPLAYER_DESC" = "例如:面向儿童的视频。";
|
||||||
|
|
||||||
"CAST_CONFIRM" = "投屏前确认 (YTCastConfirm)";
|
"CAST_CONFIRM" = "投屏前确认 (YTCastConfirm)";
|
||||||
"CAST_CONFIRM_DESC" = "在投屏前显示确认对话框以防意外劫屏。";
|
"CAST_CONFIRM_DESC" = "在投屏前显示确认对话框以防意外劫屏。";
|
||||||
|
|
||||||
"HIDE_HOVER_CARD" = "隐藏片尾画面悬浮卡片 (YTNoHoverCards)";
|
"HIDE_HOVER_CARD" = "隐藏片尾画面悬浮卡片 (YTNoHoverCards)";
|
||||||
"HIDE_HOVER_CARD_DESC" = "隐藏视频结尾处的创作者片尾画面元素(缩略图)。";
|
"HIDE_HOVER_CARD_DESC" = "隐藏视频结尾处的创作者片尾画面元素(缩略图)。";
|
||||||
|
|
||||||
"NEW_MINIPLAYER_STYLE" = "新迷你播放器风格 (BigYTMiniPlayer)";
|
"NEW_MINIPLAYER_STYLE" = "新迷你播放器风格 (BigYTMiniPlayer)";
|
||||||
"NEW_MINIPLAYER_STYLE_DESC" = "更改本设置后需要重启App。";
|
"NEW_MINIPLAYER_STYLE_DESC" = "更改本设置后需要重启App。";
|
||||||
|
|
||||||
"YT_RE_EXPLORE" = "将Shorts选项卡替换成探索选项卡 (YTReExplore)";
|
"YT_RE_EXPLORE" = "将Shorts选项卡替换成探索选项卡 (YTReExplore)";
|
||||||
"YT_RE_EXPLORE_DESC" = "更改本设置后需要重启App。";
|
"YT_RE_EXPLORE_DESC" = "更改本设置后需要重启App。";
|
||||||
|
|
||||||
"HIDE_SUBTITLES_BUTTON" = "隐藏字幕按钮";
|
"HIDE_SUBTITLES_BUTTON" = "隐藏字幕按钮";
|
||||||
@@ -33,7 +36,7 @@
|
|||||||
"HIDE_AUTOPLAY_SWITCH" = "隐藏自动播放模式开关";
|
"HIDE_AUTOPLAY_SWITCH" = "隐藏自动播放模式开关";
|
||||||
"HIDE_AUTOPLAY_SWITCH_DESC" = "隐藏视频播放器控制界面上的自动播放开关。";
|
"HIDE_AUTOPLAY_SWITCH_DESC" = "隐藏视频播放器控制界面上的自动播放开关。";
|
||||||
|
|
||||||
"AUTO_FULLSCREEN" = "自动全屏 (YTAutoFullScreen)";
|
"AUTO_FULLSCREEN" = "自动全屏 (YTAutoFullScreen)";
|
||||||
"AUTO_FULLSCREEN_DESC" = "自动全屏播放视频。";
|
"AUTO_FULLSCREEN_DESC" = "自动全屏播放视频。";
|
||||||
|
|
||||||
"HIDE_HUD_MESSAGES" = "隐藏系统提醒";
|
"HIDE_HUD_MESSAGES" = "隐藏系统提醒";
|
||||||
|
|||||||
+181
-9
@@ -2,6 +2,8 @@
|
|||||||
#import <Foundation/Foundation.h>
|
#import <Foundation/Foundation.h>
|
||||||
#import <objc/runtime.h>
|
#import <objc/runtime.h>
|
||||||
#import <dlfcn.h>
|
#import <dlfcn.h>
|
||||||
|
#import <sys/utsname.h>
|
||||||
|
#import <substrate.h>
|
||||||
#import "Header.h"
|
#import "Header.h"
|
||||||
#import "Tweaks/YouTubeHeader/YTVideoQualitySwitchOriginalController.h"
|
#import "Tweaks/YouTubeHeader/YTVideoQualitySwitchOriginalController.h"
|
||||||
#import "Tweaks/YouTubeHeader/YTPlayerViewController.h"
|
#import "Tweaks/YouTubeHeader/YTPlayerViewController.h"
|
||||||
@@ -98,14 +100,11 @@ BOOL fixGoogleSignIn() {
|
|||||||
BOOL replacePreviousAndNextButton() {
|
BOOL replacePreviousAndNextButton() {
|
||||||
return [[NSUserDefaults standardUserDefaults] boolForKey:@"replacePreviousAndNextButton_enabled"];
|
return [[NSUserDefaults standardUserDefaults] boolForKey:@"replacePreviousAndNextButton_enabled"];
|
||||||
}
|
}
|
||||||
|
BOOL dontEatMyContent() {
|
||||||
|
return [[NSUserDefaults standardUserDefaults] boolForKey:@"dontEatMyContent_enabled"];
|
||||||
|
}
|
||||||
|
|
||||||
# pragma mark - Tweaks
|
# pragma mark - Tweaks
|
||||||
// Enable Reorder videos from playlist while on the Watch page - @PoomSmart
|
|
||||||
%hook YTIPlaylistPanelVideoRenderer
|
|
||||||
%new
|
|
||||||
- (BOOL)canReorder { return YES; }
|
|
||||||
%end
|
|
||||||
|
|
||||||
// Skips content warning before playing *some videos - @PoomSmart
|
// Skips content warning before playing *some videos - @PoomSmart
|
||||||
%hook YTPlayabilityResolutionUserActionUIController
|
%hook YTPlayabilityResolutionUserActionUIController
|
||||||
- (void)showConfirmAlert { [self confirmAlertDidPressConfirm]; }
|
- (void)showConfirmAlert { [self confirmAlertDidPressConfirm]; }
|
||||||
@@ -876,6 +875,158 @@ static void replaceTab(YTIGuideResponse *response) {
|
|||||||
%end
|
%end
|
||||||
%end
|
%end
|
||||||
|
|
||||||
|
// DontEatMyContent - @therealFoxster: https://github.com/therealFoxster/DontEatMyContent
|
||||||
|
double aspectRatio = 16/9;
|
||||||
|
bool zoomedToFill = false;
|
||||||
|
|
||||||
|
MLHAMSBDLSampleBufferRenderingView *renderingView;
|
||||||
|
NSLayoutConstraint *widthConstraint, *heightConstraint, *centerXConstraint, *centerYConstraint;
|
||||||
|
|
||||||
|
%group gDontEatMyContent
|
||||||
|
%hook YTPlayerViewController
|
||||||
|
- (void)viewDidAppear:(BOOL)animated {
|
||||||
|
YTPlayerView *playerView = [self playerView];
|
||||||
|
UIView *renderingViewContainer = MSHookIvar<UIView *>(playerView, "_renderingViewContainer");
|
||||||
|
renderingView = [playerView renderingView];
|
||||||
|
|
||||||
|
CGFloat constant = 23; // Make renderingView a bit larger since safe area has sizeable margins from the notch and side borders; tested on iPhone 13 mini
|
||||||
|
|
||||||
|
widthConstraint = [renderingView.widthAnchor constraintEqualToAnchor:renderingViewContainer.safeAreaLayoutGuide.widthAnchor constant:constant];
|
||||||
|
heightConstraint = [renderingView.heightAnchor constraintEqualToAnchor:renderingViewContainer.safeAreaLayoutGuide.heightAnchor constant:constant];
|
||||||
|
centerXConstraint = [renderingView.centerXAnchor constraintEqualToAnchor:renderingViewContainer.centerXAnchor];
|
||||||
|
centerYConstraint = [renderingView.centerYAnchor constraintEqualToAnchor:renderingViewContainer.centerYAnchor];
|
||||||
|
|
||||||
|
// playerView.backgroundColor = [UIColor greenColor];
|
||||||
|
// renderingViewContainer.backgroundColor = [UIColor redColor];
|
||||||
|
// renderingView.backgroundColor = [UIColor blueColor];
|
||||||
|
|
||||||
|
YTMainAppVideoPlayerOverlayViewController *activeVideoPlayerOverlay = [self activeVideoPlayerOverlay];
|
||||||
|
|
||||||
|
// Must check class since YTInlineMutedPlaybackPlayerOverlayViewController doesn't have -(BOOL)isFullscreen
|
||||||
|
if ([NSStringFromClass([activeVideoPlayerOverlay class]) isEqualToString:@"YTMainAppVideoPlayerOverlayViewController"] && [activeVideoPlayerOverlay isFullscreen]) {
|
||||||
|
activate();
|
||||||
|
} else {
|
||||||
|
center();
|
||||||
|
}
|
||||||
|
|
||||||
|
%orig(animated);
|
||||||
|
}
|
||||||
|
- (void)didPressToggleFullscreen {
|
||||||
|
YTMainAppVideoPlayerOverlayViewController *activeVideoPlayerOverlay = [self activeVideoPlayerOverlay];
|
||||||
|
|
||||||
|
if (![activeVideoPlayerOverlay isFullscreen]) // Entering fullscreen
|
||||||
|
activate();
|
||||||
|
else // Exiting fullscreen
|
||||||
|
deactivate();
|
||||||
|
|
||||||
|
%orig;
|
||||||
|
}
|
||||||
|
- (void)didSwipeToEnterFullscreen {
|
||||||
|
%orig; activate();
|
||||||
|
}
|
||||||
|
- (void)didSwipeToExitFullscreen {
|
||||||
|
%orig; deactivate();
|
||||||
|
}
|
||||||
|
// Get video aspect ratio; doesn't work for some users; see -(void)resetForVideoWithAspectRatio:(double)
|
||||||
|
- (void)singleVideo:(id)arg1 aspectRatioDidChange:(CGFloat)arg2 {
|
||||||
|
aspectRatio = arg2;
|
||||||
|
if (aspectRatio == 0.0) {
|
||||||
|
// App backgrounded
|
||||||
|
} else if (aspectRatio < THRESHOLD) {
|
||||||
|
deactivate();
|
||||||
|
} else {
|
||||||
|
activate();
|
||||||
|
}
|
||||||
|
%orig(arg1, arg2);
|
||||||
|
}
|
||||||
|
%end
|
||||||
|
|
||||||
|
%hook YTVideoZoomOverlayView
|
||||||
|
- (void)didRecognizePinch:(UIPinchGestureRecognizer *)pinchGestureRecognizer {
|
||||||
|
// %log((CGFloat) [pinchGestureRecognizer scale], (CGFloat) [pinchGestureRecognizer velocity]);
|
||||||
|
if ([pinchGestureRecognizer velocity] <= 0.0) { // >>Zoom out<<
|
||||||
|
zoomedToFill = false;
|
||||||
|
activate();
|
||||||
|
} else if ([pinchGestureRecognizer velocity] > 0.0) { // <<Zoom in>>
|
||||||
|
zoomedToFill = true;
|
||||||
|
deactivate();
|
||||||
|
}
|
||||||
|
%orig(pinchGestureRecognizer);
|
||||||
|
}
|
||||||
|
- (void)flashAndHideSnapIndicator {}
|
||||||
|
// https://github.com/lgariv/UniZoom/blob/master/Tweak.xm
|
||||||
|
- (void)setSnapIndicatorVisible:(bool)arg1 {
|
||||||
|
%orig(NO);
|
||||||
|
}
|
||||||
|
%end
|
||||||
|
|
||||||
|
%hook YTVideoZoomOverlayController
|
||||||
|
// Get video aspect ratio; fallback for -(void)singleVideo:(id)aspectRatioDidChange:(CGFloat)
|
||||||
|
- (void)resetForVideoWithAspectRatio:(double)arg1 {
|
||||||
|
aspectRatio = arg1;
|
||||||
|
%log;
|
||||||
|
if (aspectRatio == 0.0) {}
|
||||||
|
else if (aspectRatio < THRESHOLD) {
|
||||||
|
deactivate();
|
||||||
|
} else {
|
||||||
|
activate();
|
||||||
|
}
|
||||||
|
%orig(arg1);
|
||||||
|
}
|
||||||
|
%end
|
||||||
|
%end // gDontEatMyContent
|
||||||
|
|
||||||
|
// DontEatMycontent - detecting device model
|
||||||
|
// https://stackoverflow.com/a/11197770/19227228
|
||||||
|
NSString* deviceName() {
|
||||||
|
struct utsname systemInfo;
|
||||||
|
uname(&systemInfo);
|
||||||
|
return [NSString stringWithCString:systemInfo.machine encoding:NSUTF8StringEncoding];
|
||||||
|
}
|
||||||
|
|
||||||
|
BOOL isDeviceSupported() {
|
||||||
|
NSString *identifier = deviceName();
|
||||||
|
NSArray *unsupportedDevices = UNSUPPORTED_DEVICES;
|
||||||
|
|
||||||
|
for (NSString *device in unsupportedDevices) {
|
||||||
|
if ([device isEqualToString:identifier]) {
|
||||||
|
return NO;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ([identifier containsString:@"iPhone"]) {
|
||||||
|
NSString *model = [identifier stringByReplacingOccurrencesOfString:@"iPhone" withString:@""];
|
||||||
|
model = [model stringByReplacingOccurrencesOfString:@"," withString:@"."];
|
||||||
|
if ([identifier isEqualToString:@"iPhone13,1"]) { // iPhone 12 mini
|
||||||
|
return YES;
|
||||||
|
} else if ([model floatValue] >= 14.0) { // iPhone 13 series and newer
|
||||||
|
return YES;
|
||||||
|
} else return NO;
|
||||||
|
} else return NO;
|
||||||
|
}
|
||||||
|
|
||||||
|
void activate() {
|
||||||
|
if (aspectRatio < THRESHOLD || zoomedToFill) return;
|
||||||
|
// NSLog(@"activate");
|
||||||
|
center();
|
||||||
|
renderingView.translatesAutoresizingMaskIntoConstraints = NO;
|
||||||
|
widthConstraint.active = YES;
|
||||||
|
heightConstraint.active = YES;
|
||||||
|
}
|
||||||
|
|
||||||
|
void deactivate() {
|
||||||
|
// NSLog(@"deactivate");
|
||||||
|
center();
|
||||||
|
renderingView.translatesAutoresizingMaskIntoConstraints = YES;
|
||||||
|
widthConstraint.active = NO;
|
||||||
|
heightConstraint.active = NO;
|
||||||
|
}
|
||||||
|
|
||||||
|
void center() {
|
||||||
|
centerXConstraint.active = YES;
|
||||||
|
centerYConstraint.active = YES;
|
||||||
|
}
|
||||||
|
|
||||||
// iOS 16 uYou crash fix - @level3tjg: https://github.com/qnblackcat/uYouPlus/pull/224
|
// iOS 16 uYou crash fix - @level3tjg: https://github.com/qnblackcat/uYouPlus/pull/224
|
||||||
%group iOS16
|
%group iOS16
|
||||||
%hook OBPrivacyLinkButton
|
%hook OBPrivacyLinkButton
|
||||||
@@ -898,9 +1049,6 @@ static void replaceTab(YTIGuideResponse *response) {
|
|||||||
# pragma mark - ctor
|
# pragma mark - ctor
|
||||||
%ctor {
|
%ctor {
|
||||||
%init;
|
%init;
|
||||||
if (![[[[NSUserDefaults standardUserDefaults] dictionaryRepresentation] allKeys] containsObject:@"relatedVideosAtTheEndOfYTVideos"]) {
|
|
||||||
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"relatedVideosAtTheEndOfYTVideos"];
|
|
||||||
}
|
|
||||||
if (oled()) {
|
if (oled()) {
|
||||||
%init(gOLED);
|
%init(gOLED);
|
||||||
}
|
}
|
||||||
@@ -919,10 +1067,34 @@ static void replaceTab(YTIGuideResponse *response) {
|
|||||||
if (replacePreviousAndNextButton()) {
|
if (replacePreviousAndNextButton()) {
|
||||||
%init(gReplacePreviousAndNextButton);
|
%init(gReplacePreviousAndNextButton);
|
||||||
}
|
}
|
||||||
|
if (dontEatMyContent() && isDeviceSupported()) {
|
||||||
|
%init(gDontEatMyContent);
|
||||||
|
}
|
||||||
if (@available(iOS 16, *)) {
|
if (@available(iOS 16, *)) {
|
||||||
%init(iOS16);
|
%init(iOS16);
|
||||||
}
|
}
|
||||||
if (!fixGoogleSignIn()) {
|
if (!fixGoogleSignIn()) {
|
||||||
%init(gFixGoogleSignIn);
|
%init(gFixGoogleSignIn);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Disable broken options of uYou
|
||||||
|
[[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"removeYouTubeAds"];
|
||||||
|
[[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"disableAgeRestriction"];
|
||||||
|
|
||||||
|
// Change the default value of some uYou's options
|
||||||
|
if (![[[[NSUserDefaults standardUserDefaults] dictionaryRepresentation] allKeys] containsObject:@"relatedVideosAtTheEndOfYTVideos"]) {
|
||||||
|
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"relatedVideosAtTheEndOfYTVideos"];
|
||||||
|
}
|
||||||
|
if (![[[[NSUserDefaults standardUserDefaults] dictionaryRepresentation] allKeys] containsObject:@"uYouButtonVideoControlsOverlay"]) {
|
||||||
|
[[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"uYouButtonVideoControlsOverlay"];
|
||||||
|
}
|
||||||
|
if (![[[[NSUserDefaults standardUserDefaults] dictionaryRepresentation] allKeys] containsObject:@"uYouPiPButtonVideoControlsOverlay"]) {
|
||||||
|
[[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"uYouPiPButtonVideoControlsOverlay"];
|
||||||
|
}
|
||||||
|
// if (![[[[NSUserDefaults standardUserDefaults] dictionaryRepresentation] allKeys] containsObject:@"uYouRepeatButtonVideoControlsOverlay"]) {
|
||||||
|
// [[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"uYouRepeatButtonVideoControlsOverlay"];
|
||||||
|
// }
|
||||||
|
// if (![[[[NSUserDefaults standardUserDefaults] dictionaryRepresentation] allKeys] containsObject:@"uYouRightRotateButtonVideoControlsOverlay"]) {
|
||||||
|
// [[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"uYouRightRotateButtonVideoControlsOverlay"];
|
||||||
|
// }
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user